-
ALLGEMEINER STAND DER
TECHNIK
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft Digitalsignalverarbeitung und insbesondere
eine Medienverarbeitungsvorrichtung, die komprimierte Videodaten und
komprimierte Audiodaten entkomprimiert und auch Videodaten und Audiodaten
zum Durchführen von
Grafikverarbeitung komprimieren kann.
-
2. Beschreibung des Standes
der Technik
-
Bei
der Entwicklung von Komprimierungs-/Entkomprimierungs-Techniken
für digitale
Videodaten und den Verbesserungen in der LSI- (Large Scale Integration/Großintegrations-)
Technologie in den vergangenen Jahren gelangten verschiedene Medienverarbeitungsschaltungen
zu hoher Wertschätzung.
Beispiele dafür
sind ein Decoder, der komprimierte Video- und Audiodaten decodiert
(entkomprimiert), eine Codiereinrichtung, die Video- und Audiodaten
komprimiert und ein Grafikprozessor, der Grafiken verarbeitet.
-
Als
ein Beispiel für
herkömmliche
Techniken decodiert ein AV- (audiovisueller) Decoder Videodaten
und Audiodaten, die nach MPEG- (Moving Pictures Expert Group) Standard
komprimiert wurden. Dieser AV-Decoder verwendet zwei Prozessoren, wobei
ein Prozessor Videodaten decodiert, und der andere Prozessor Audiodaten
decodiert.
-
1 zeigt
eine Darstellung der Decodierverarbeitung, die von diesem AV-Decoder
durchgeführt
wird. In 1 stellt die vertikale Achse
die Zeit dar, und die horizontale Achse stellt die jeweilige rechnerische
Komplexität
der Video-Decodierung dar, die von dem Videoprozessor durchgeführt wird und
der Audio-Decodierung, die von dem Audioprozessor durchgeführt wird.
-
Der
Videoprozessor führt
alternativ eine sequenzielle Verarbeitung für komprimierte Videodaten in
Makroblockeinheiten und eine Decodierverarbeitung für die tatsächlichen
Videodaten durch. Der Teil der sequenziellen Verarbeitung der Video-Decodierung
analysiert den Header-Teil eines Makroblocks, der verarbeitet wird,
und wird daher im Folgenden als die "Header-Analyse" bezeichnet. Die Decodierverarbeitung
decodiert die komprimierten Videodaten in einem Makroblock und wird
daher im Folgenden als "Block-Decodierung" bezeichnet. Von
diesen erfordert die Header-Analyse eine Beurteilung verschiedener
Zustände
und weist eine geringe rechnerische Komplexität auf. Die Block-Decodierung
decodiert die Codes mit variabler Länge in einem MPEG-Strom unter
Verwendung der verschiedenen Typen von Daten, die durch die Header-Analyse
erzeugt werden, und führt
auch eine IQ- (Inverse Quantization/Umkehrquantisierung) und IDCT-
(Inverse Discrete Cosine Transform/umgekehrte diskrete Kosinustransformation)
Verarbeitung in Blockeinheiten aus. Diese bedeutet, dass die Block-Decodierung
eine hohe rechnerische Komplexität
aufweist.
-
Der
Audioprozessor führt
alternativ eine sequenzielle Verarbeitung für komprimierte Audiodaten und
eine Decodierverarbeitung für
die tatsächlichen Audiodaten
aus.
-
Die
vorher genannte Technik weist die folgenden Probleme auf.
-
Das
erste Problem sind die Herstellungskosten dieses AV-Decoders. Insbesondere
der Videoprozessor muss ein Hochleistungsprozessor sein, der eine
Echtzeitverarbeitung an einer große Menge von Videodaten durchführen kann.
Dies bedeutet, dass ein Prozessor mit einer hohen Taktgeschwindigkeit verwendet
werden muss. Solche Prozessoren sind teuer.
-
Wenn
die vorher beschriebene Medienverarbeitungsvorrichtung in einem
AV-Decoder verwendet wird, der in einem digitalen (Satelliten-)
Rundfunkempfänger
(der als STB (Set Top Box) bezeichnet wird) oder einem DVD- (Digital
Versatile/Video Disc) Spieler bereitgestellt wird, werden MPEG-Ströme eingegeben,
die auf einer Rundfunkwelle empfangen oder von einer Diskette ausgelesen
werden. Der AV-Decoder decodiert diese MPEG-Ströme und gibt Videosignale und
Audiosignale jeweils an eine Anzeigevorrichtung und Lautsprecher
aus. Diese Reihe von Prozessen erfordert eine enorme Menge an Verarbeitung.
Aus diesem Grund bestand ein zunehmender Bedarf hinsichtlich ei ner
Medienverarbeitungsvorrichtung, die diese enorme Menge von Verarbeitungen
effizient durchführen
kann.
-
Das
Dokument zum Stand der Technik EP-A-0 710 029 offenbart einen Signalprozessor,
der eine Vielzahl von Verarbeitungsschaltungen zum Durchführen verschiedener
Arten von Verarbeitung umfasst, die sich voneinander unterscheiden.
Der Prozessor enthält
des Weiteren eine Speicherschaltung, die allgemein für jeweilige
Verarbeitungsschaltungen bereitgestellt ist, und eine Steuerschaltung zum
Durchführen
einer Zugriffssteuerung zwischen den jeweiligen Verarbeitungsschaltungen
und der Speicherschaltung. Insbesondere offenbart das Dokument Verarbeitungsschaltungen,
die jeweils einen Audio-Verarbeitungsblock zum Durchführen der
Audio-Decodierung und einen Codier-/Decodierblock zum Durchführen der
Video-Decodierung enthalten.
-
EP-A-0
714 213 offenbart einen MPEG2-Transport-Decoder und beschreibt insbesondere
die Anwendungen von Unterbrechungen bei der Audio- und Video-Decodierung.
-
KURZDARSTELLUNG
DER ERFINDUNG
-
Es
ist eine erste Aufgabe der vorliegenden Erfindung, eine Medienverarbeitungsvorrichtung
bereitzustellen, die eine Reihe von Prozessen ausführt, die
sich aus der Eingabe von Stromdaten, die komprimierte Video- und
komprimierte Audiodaten ausdrücken,
der Decodierung der Daten und der Ausgabe des Ergebnisses zusammensetzen,
wobei die Medienverarbeitungsvorrichtung eine hohe Leistung aufweist,
ohne mit einer hohen Taktgeschwindigkeit zu arbeiten. Dadurch werden
die Herstellungskosten für die
Medienverarbeitungsvorrichtung reduziert.
-
Die
erste Aufgabe kann durch eine Medienverarbeitungsvorrichtung erreicht
werden, die einen Datenstrom decodiert, der komprimierte Audiodaten und
komprimierte Videodaten enthält,
um Videodaten und Audiodaten zu erhalten, wobei die Medienverarbeitungsvorrichtung
Folgendes umfasst: eine sequenzielle Verarbeitungseinheit zum Durchführen eines
Header-Analyseprozesses an den komprimierten Videodaten, und einen
Audio-Decodierprozess an
den komprimierten Audiodaten, wobei der Header-Analyseprozess vor
dem Audio-Decodierprozess Priorität erhält und eine Header-Analyse
für einen vorbestimmten
Block ist, der in den komprimierten Videodaten in dem Datenstrom
enthal ten ist, und der Audio-Decodierprozess ein Decodierprozess
für die komprimierten
Audiodaten und eine Routinenverarbeitungseinheit zum Durchführen eines
Decodierprozesses für
die komprimierten Videodaten neben dem Header-Analyseprozess ist,
wobei die Routinenverarbeitungseinheit parallel zur sequenziellen
Verarbeitungseinheit arbeitet.
-
Bei
der angegebenen Konstruktion wird die Verarbeitungslast des Decodierens
von komprimierten Videodaten gemeinsam von der sequenziellen Verarbeitungseinheit
und der Routinenverarbeitungseinheit getragen, so dass die Verarbeitungslast
geringer ist als wenn die gesamte Decodierung wie herkömmlicherweise
von einem einzelnen Prozessor verarbeitet würde. Damit wird die gesamte
Verarbeitungseffizienz gesteigert. Die sequenzielle Verarbeitungseinheit
führt den
Header-Analyseprozess mit Vorrang vor dem Audio-Decodierprozess
aus, so dass der Decodierprozess der Routinenverarbeitungseinheit,
der auf der Header-Analyse basiert, ohne Verzögerung durchgeführt wird.
Dies beschleunigt die gesamte Verarbeitung der Medienverarbeitungsvorrichtung.
Der Audio-Decodierprozess erfordert beträchtlich weniger Verarbeitung
als der Decodierprozess für
die komprimierten Videodaten und wird von der sequenziellen Verarbeitungseinheit
zwischen Header-Analyseprozessen durchgeführt, was ebenfalls zu einer
höheren
Verarbeitungseffizienz führt.
Infolgedessen erreicht die Medienverarbeitungsvorrichtung der vorliegenden
Erfindung eine hohe Leistung, ohne mit einer hohen Taktfrequenz
zu arbeiten, wodurch die Herstellungskosten der Medienverarbeitungsvorrichtung
reduziert werden.
-
Hier
kann die sequenzielle Verarbeitungseinheit einen Prozessor und einen
Speicher umfassen, der einen Header-Analysethread, einen Audio-Decodierthread
und einen Thread-Umschaltthread speichert, wobei der Prozessor die
Threads in dem Speicher abarbeitet, um Folgendes auszuführen: eine Header-Analyseeinheit,
die den Header-Analyseprozess
als ein Ergebnis dessen ausführt,
dass der Prozessor den Header-Analysethread
in dem Speicher abarbeitet; eine Audio-Decodiereinheit, die den
Audio-Decodierprozess
als ein Ergebnis dessen ausführt,
dass der Prozessor den Audio-Decodierprozess
in dem Speicher abarbeitet; und eine Steuereinheit, die ein Umschalten
eines Threads steuert, der dem Prozessor zugewiesen ist, so dass
der Header-Analyseprozess
Vorrang vor dem Audio-Decodierprozess erhält, wobei die Steuereinheit
das Abarbeiten des Steuer-Threads durch den Prozessor ausführt.
-
Bei
der gegenwärtigen
Konstruktion weist die Steuereinheit dem Prozessor Threads zu, so dass
der Header-Analyseprozess mit Priorität abgearbeitet wird. Infolgedessen
schaltet die Medienverarbeitungsvorrichtung zwischen dem Header-Analyseprozess
und dem Audio-Decodierprozess um und kann somit Datenströme mit hoher
Effizienz verarbeiten.
-
Hier
kann die Steuereinheit Folgendes umfassen: eine Unterbrechungserkennungseinheit
zum Erkennen des Auftretens von irgendeiner von einer Vielzahl von
Unterbrechungen, die ein Umschalten von Threads verursacht; eine
Zustandsmanagementeinheit zum Verwalten eines Zustands der Header-Analyseeinheit
und eines Zustands der Audio-Decodiereinheit auf der Basis eines
Typs einer erkannten Unterbrechung, wobei jeder Zustand einer von
einem Ausführungszustand,
einem Wartezustand und einem Bereitschaftszustand ist; und eine Umschalteinheit
zum Umschalten, wenn sich der Zustand der Header-Analyseeinheit
von dem Wartezustand in den Bereitschaftszustand geändert hat,
wobei dem Prozessor für
den Header-Analysethread ein Thread zugewiesen ist.
-
Bei
der angegebenen Konstruktion weist die Steuereinheit eine Unterbrechungserkennungseinheit,
eine Zustandsmanagementeinheit und eine Umschalteinheit auf. Die
Unterbrechungserkennungseinheit erkennt Unterbrechungen. Die Zustandsmanagementeinheit
verwaltet Änderungen
in den Zuständen
des Header-Analyseprozesses und des Audio-Decodierprozesses, die
durch Unterbrechungen verursacht werden, die von der Unterbrechungserkennungseinheit
erkannt werden. Die Umschalteinheit weist den Header-Analysethread
zu dem Prozessor zu, wenn sich der Zustand der Header-Analyseeinheit
in den Bereitschaftszustand ändert.
Infolgedessen ist die Steuereinheit ein System, das durch Unterbrechungen
aktiviert wird, so dass es nicht notwendig ist, konstant zu überwachen,
welcher von der Header-Analyseeinheit und dem Audio-Decodierprozess
in den Ausführungszustand
gesetzt werden soll.
-
Hier
kann die Zustandsmanagementeinheit Folgendes umfassen: eine Zustandstabelle
zum Speichern des Zustands der Header-Analyseeinheit und des Zustands
der Audio-Decodiereinheit;
und eine Zustandsaktualisierungseinheit zum Aktualisieren der Zustandstabelle
basierend auf dem Typ der erkannten Unterbrechung.
-
Hier
kann der vorbestimmte Block ein Makroblock sein, der in den komprimierten
Videodaten in dem Datenstrom enthalten ist, und die Unterbrechungserkennungseinheit
ist in der Lage, einen Unterbrechungstyp 1 und einen Unterbrechungstyp
2 zu erkennen, wobei der Unterbrechungstyp 1 von der Header-Analyseeinheit
nach Abschließen
des Header-Analyseprozesses für
einen Makroblock ausgegeben wird, und der Unterbrechungstyp 2 von
der Routinenverarbeitungseinheit nach Abschließen des Decodierprozesses für einen
Makroblock ausgegeben wird, wobei die Zustandsaktualisierungseinheit den
Zustand der Header-Analyseeinheit in der Zustandstabelle in den
Wartezustand ändert,
wenn die Unterbrechungserkennungseinheit den Unterbrechungstyp 1
erkannt hat, und den Status des Zustands der Header-Analyseeinheit
in der Zustandtabelle in den Bereitschaftszustand ändert, wenn
die Unterbrechungserkennungseinheit den Unterbrechungstyp 2 erkannt
hat.
-
Wenn
bei der angegebenen Konstruktion die Unterbrechungserkennungseinheit
den Unterbrechungstyp 1 oder 2 erkennt, aktualisiert die Zustandsaktualisierungstabelle
den Zustand der Header-Analyseeinheit in der Zustandstabelle in
den Wartezustand oder den Bereitschaftszustand. Wenn der Zustand
des Header-Analyseprozesses in den Bereitschaftszustand geändert wurde,
weist die Schalteinheit dem Prozessor den Header-Analysethread zu. Dies bedeutet, dass,
wenn die Decodierung des Header-Teils von der Routinenverarbeitungseinheit
abgeschlossen worden ist, der Header-Analyseprozess kurz darauf
beginnen wird. Dies verbessert die Verarbeitungseffizienz.
-
Wenn
sich die Header-Analyseeinheit hier in dem Wartezustand befindet,
und sich der Zustand der Audio-Decodiereinheit von dem Wartezustand
in den Bereitschaftszustand geändert
hat, kann die Umschalteinheit einen Thread, der dem Prozessor zugewiesen
ist, in den Audio-Decodierthread umschalten.
-
Wenn
bei der angegebenen Konstruktion der Zustand der Header-Analyseeinheit
zum Bereitschaftszustand wird, weist die Umschalteinheit den Header-Analysethread
dem Prozessor zu, selbst wenn sich die Audio-Decodiereinheit gegenwärtig in dem
Ausführungszustand
befindet. Dies bedeutet, dass der Header-Analyseprozess mit Vorrang
vor dem Audio-Decodierprozess abgearbeitet wird, wodurch sich die
gesamte Verarbeitungseffizienz der Medienverarbeitungsvorrichtung
erhöht.
-
Hier
kann die Routinenverarbeitungseinheit Folgendes enthalten: eine
Datenkonvertierungseinheit zum Durchführen einer Decodierung variabler Länge an den
komprimierten Videodaten; eine Recheneinheit zum Durchführen einer
Umkehrquantisierung und einer umgekehrten diskreten Kosinustransformation
für Bildblöcke, die
sich aus der Decodierung variabler Länge ergeben; und eine Synthetisiereinheit
zum Durchführen
eines Bewegungskompensationsprozesses durch Synthetisieren von Bildblöcken, die
sich aus der umgekehrten diskreten Kosinustransformation mit zuvor
decodierten Bildblöcken
ergeben, um decodierte Bilddaten zu erzeugen, und die Header-Analyseeinheit
kann enthalten: eine Einholeinheit zum Einholen von Header-Informationen,
die einer Decodierung variabler Länge unterzogen wurden, durch
Ausgeben einer Anzeige an die Datenkonvertierungseinheit; eine Analyseeinheit zum
Durchführen
einer Analyse an den eingeholten Header-Informationen und anschließendes Berechnen
der Bewegungsvektoren; eine Benachrichtigungseinheit zum Benachrichtigen
der Routinenverarbeitungseinheit über Parameter, die durch die
Analyse der Analyseeinheit erhalten wurden; und eine Startanzeigeeinheit
zum Ausgeben einer Startanzeige an die Datenkonvertierungseinheit
an einem vorbestimmten Punkt während
der Header-Analyseverarbeitung, wobei die Startanzeige veranlasst,
dass die Datenkonvertierungseinheit eine Decodierung variabler Länge an komprimierten
Bilddaten neben den Header-Informationen startet.
-
Bei
der angegebenen Konstruktion wird die Decodierverarbeitung der komprimierten
Videodaten zwischen der Analyseeinheit und der Routinenverarbeitungseinheit
aufgeteilt. In der Routinenverarbeitungseinheit wird die auf eine
Routinenberechnung von Daten konzentrierte Verarbeitung von einer
Pipeline-Architektur durchgeführt,
welche die Datenkonvertierungseinheit, die Recheneinheit und die
Synthetisiereinheit enthält.
In der Header-Analyseeinheit führt
die Analyseeinheit die Header-Analyse durch, die verarbeitet, was
zu einer Zustandsbeurteilung gehört,
und die Benachrichtigungseinheit benachrichtigt die Routinenverarbeitungseinheit über die
Parameter, die als Analyseergebnis erhalten wurden. Dies bedeutet,
dass der Decodierprozess für
die komprimierten Videodaten basierend auf der Art der Verarbeitung
in Routinenberechnungsverarbeitung und Zustandsbeurteilungsverarbeitung
aufgeteilt wird, wodurch die Verarbeitung durch die Routinenverarbeitungseinheit
bei hoher Geschwindigkeit durchgeführt werden kann. Da die Header-Analyseeinheit
der Datenkonvertierungseinheit den Start einer Decodierung variabler
Länge für Blöcke an einem
vorbestimmten Punkt während
der Analyse anzeigt, kann die Routinenverarbeitungseinheit eher
mit ihrer Verarbeitung beginnen. Dadurch wird die Gesamtzeit reduziert,
die von der Decodierverarbeitung, (der kombinierten Verarbeitung
der sequenziellen Verarbeitungseinheit und der Routinenverarbeitungseinheit), für einen
Makroblock beansprucht wird.
-
Hier
kann die Startanzeigeeinheit die Startanzeige ausgeben, bevor die
Analyseeinheit die Bewegungsvektoren berechnet, und die Benachrichtigungseinheit
kann die Synthetisiereinheit über
die berechneten Bewegungsvektoren benachrichtigen.
-
Bei
der angegebenen Konstruktion gibt die Startanzeigeeinheit einen
Start einer Decodierung variabler Länge vor der Berechnung von
Bewegungsvektoren durch die Analyseeinheit an. Dies reduziert die
Gesamtzeit, die zum Decodieren jedes Makroblocks beansprucht wird,
um die Zeit, die zum Berechnen der Bewegungsvektoren beansprucht wird.
-
Hier
kann die Steuereinheit Folgendes enthalten: eine Unterbrechungserkennungseinheit
zum Erkennen eines Auftretens einer Unterbrechung, die ein Umschalten
von Threads verursacht; eine Fehlerverarbeitungseinheit, die veranlasst,
dass die Routinenverarbeitungseinheit Daten verwirft, die sich auf einen
vorbestimmten Block beziehen, wenn eine Fehlerunterbrechung durch
die Unterbrechungserkennungseinheit erkannt worden ist, und einen
Zustand der Header-Analyseeinheit in einen Bereitschaftszustand ändert; und
eine Zustandsmanagementeinheit zum Verwalten eines Zustands der
Header-Analyseeinheit und eines Zustands der Audio-Decodiereinheit
basierend auf einem erkannten Unterbrechungstyp, wobei jeder Zustand
einer von einem Ausführungszustand,
einem Wartezustand und einem Bereitschaftszustand ist; und eine
Umschalteinheit zum Umschalten eines dem Prozessor zugewiesenen
Threads auf den Header-Analysethread,
wenn sich der Zustand der Header-Analyseeinheit von dem Wartezustand
in den Bereitschaftszustand geändert
hat.
-
Bei
der angegebenen Konstruktion enthält die Steuereinheit eine Fehlerverarbeitungseinheit
zusätzlich
zu der Unterbrechungserkennungseinheit, Zustandsmanagementeinheit
und Umschalteinheit. Wenn eine Fehlerunterbrechung erkannt worden
ist, setzt die Fehlerverarbeitungseinheit jede Komponente in der
Routinenverarbeitungseinheit zurück
und setzt die Header-Analyseeinheit in den Bereitschaftszustand.
Infolgedessen wird der Header-Analysethread dem Prozessor zugewiesen,
und die Header-Analyse wird für
einen Makroblock in dem nächsten
Slice durchgeführt.
Dies bedeutet, dass, wenn ein Fehler aufgetreten ist, die Steuereinheit
in der vorliegenden Medienverarbeitungsvorrichtung dem Prozessor
den Header-Analysethread reibungslos zuweisen kann, wodurch die
gesamte Verarbeitungseffizienz verbessert wird.
-
Hier
kann der vorbestimmte Block ein Makroblock sein, der in den komprimierten
Videodaten in dem Datenstrom enthalten ist, wobei die Unterbrechungserkennungseinheit
in der Lage sein kann, einen Unterbrechungstyp 1, einen Unterbrechungstyp 2,
einen Unterbrechungstyp 3 und einen Unterbrechungstyp 4 zu erkennen,
wobei der Unterbrechungstyp 1 von der Header-Analyseeinheit nach Abschließen des
Header-Analyseprozesses für
einen Makroblock ausgegeben wird, der Unterbrechungstyp 2 von der
Routinenverarbeitungseinheit nach Abschließen des Decodierprozesses für einen Makroblock
ausgegeben wird, der Unterbrechungstyp 3 von der Datenkonvertierungseinheit ausgegeben
wird, wenn ein Fehler während
einer Decodierung variabler Länge
aufgetreten ist, und der Unterbrechungstyp 4 von der Synthetisiereinheit
ausgegeben wird, wenn ein Fehler während des Bewegungskompensationsprozesses
aufgetreten ist, wobei die Zustandsaktualisierungseinheit den Zustand der
Header-Analyseeinheit in der Zustandstabelle in den Wartezustand ändern kann,
wenn die Unterbrechungserkennungseinheit den Unterbrechungstyp 1 erkannt
hat und den Status des Zustands der Header-Analyseeinheit in der
Zustandstabelle in den Bereitschaftszustand ändert, wenn die Unterbrechungserkennungseinheit
den Unterbrechungstyp 2 erkannt hat, und wobei, wenn einer des Unterbrechungstyps 3
und des Unterbrechungstyps 4 von der Unterbrechungserkennungseinheit
erkannt worden ist, die Fehlerverarbeitungseinheit die Routinenverarbeitungseinheit
veranlassen kann, die Daten zu verwerfen, die mit einem vorbestimmten
Block in Bezug stehen, und die Zustandsaktualisierungseinheit den
Zustand der Header-Analyseeinheit
in den Bereitschaftszustand ändern
kann.
-
Wenn
bei der angegebenen Konstruktion bei der Decodierung variabler Länge durch
die Datenkonvertierungseinheit oder während des Bewegungskompensationsprozesses
durch die Synthetisiereinheit ein Fehler aufgetreten ist, setzt
die Fehlerverarbeitungseinheit jede Komponente in der Routinenverarbeitungseinheit
zurück
und setzt anschließend
die Header-Analyseeinheit in ihren Bereitschaftszustand. Infolgedessen
wird der Header-Analysethread dem Prozessor zugewiesen, und die
Header-Analyse wird für
einen Makroblock in dem nächsten
Slice durchgeführt.
Dies bedeutet, dass die Steuer einheit in der vorliegenden Medienverarbeitungsvorrichtung
in der Lage ist, dem Prozessor den Header-Analysethread reibungslos
zuzuweisen, selbst wenn ein Fehler aufgetreten ist, wodurch die
gesamte Verarbeitungseffizienz verbessert wird.
-
Die
Unterbrechungserkennungseinheit kann hier in der Lage sein, acht
Unterbrechungstypen zu erkennen, die von Typ 1 bis Typ 8 nummeriert
sind, wobei ein Unterbrechungstyp 1 durch die Header-Analyseeinheit
nach Abschließen
des Header-Analyseprozesses für
einen vorbestimmten Block ausgegeben wird, ein Unterbrechungstyp
2 von der Routinenverarbeitungseinheit nach Abschließen des
Decodierprozesses für
einen vorbestimmten Block ausgegeben wird, ein Unterbrechungstyp
3 von der Header-Analyseeinheit nach Abschließen des Header-Analyseprozesses
für jeden
vorbestimmten Block in einem Frame ausgegeben wird, ein Unterbrechungstyp
4 von der Datenkonvertierungseinheit ausgegeben wird, wenn die Decodierung
variabler Länge
für die
Header-Informationen nicht fertig ist, wenn die Einholeinheit die
Anzeige ausgibt, ein Unterbrechungstyp 5 ein vertikales Synchronisationssignal
ist, das von außerhalb
der Medienverarbeitungsvorrichtung eingegeben wird, ein Unterbrechungssignal
6 von der Datenkonvertierungseinheit nach dem Unterbrechungstyp
4 ausgegeben wird, wenn die Decodierung variabler Länge für die Header-Informationen
fertig ist, ein Unterbrechungstyp 7 von dem Speicher ausgegeben
wird, wenn der Speicher keine Daten aufweist, die von der Audio-Decodiereinheit
angefordert wurden, und ein Unterbrechungstyp 8 von dem Speicher
nach dem Unterbrechungstyp 7 ausgegeben wird, wenn die von der Audio-Decodiereinheit
angeforderten Daten in den Speicher eingegeben worden sind, wobei
die Zustandsaktualisierungseinheit den Zustand der Header-Analyseeinheit
in der Zustandtabelle in den Wartezustand ändert, wenn die Unterbrechungserkennungseinheit
irgendeinen des Unterbrechungstyps 1, des Unterbrechungstyps 3 und
des Unterbrechungstyps 4 erkannt hat, den Zustand der Header-Analyseeinheit
in der Zustandtabelle in den Bereitschaftszustand ändert, wenn
die Unterbrechungserkennungseinheit irgendeinen des Unterbrechungstyps
2, des Unterbrechungstyps 5 und des Unterbrechungstyps 6 erkannt
hat, den Zustand der Audio-Decodiereinheit in der Zustandstabelle
in den Wartezustand ändert,
wenn die Unterbrechungserkennungseinheit den Unterbrechungstyp 7
erkannt hat, und den Zustand der Audio-Decodiereinheit in der Zustandstabelle
in den Bereitschaftszustand ändert,
wenn die Unterbrechungserkennungseinheit den Unterbrechungstyp 8
erkannt hat.
-
Bei
der angegebenen Konstruktion aktualisiert die Zustandsaktualisierungseinheit
die Zustände
der Header-Analyseeinheit und der Audio-Decodiereinheit in Übereinstimmung
mit der Erkennung der Unterbrechungen des Typs 1 bis 8 durch die
Unterbrechungserkennungseinheit. Als Folge dieser Aktualisierung
veranlasst die Umschalteinheit, dass der Header-Analysethread und
der Audio-Decodierthread dem Prozessor zugewiesen werden, wobei der
Header-Analysethread Priorität
erhält.
Die Steuereinheit ist in der Lage, dem Prozessor den Header-Analysethread
und den Audio-Decodierthread reibungslos zuzuweisen, selbst wenn
die verschiedenen Unterbrechungstypen auftreten, wodurch die gesamte
Verarbeitungseffizienz verbessert wird.
-
Die
angegebene Aufgabe der vorliegenden Erfindung kann auch durch ein
rechnerlesbares Speichermedium erfüllt werden, das ein Programm
speichert, welches veranlasst, dass ein Rechner einen Datenstrom
mit komprimierten Audiodaten und komprimierten Videodaten decodiert,
um Videodaten und Audiodaten zu erhalten, wobei das Programm Folgendes
enthält:
einen Header-Analyseprozess zum Analysieren eines Headers eines
vorbestimmten Blocks, der in den komprimierten Videodaten in dem Datenstrom
enthalten ist; einen Audio-Decodierprozess zum Decodieren der komprimierten
Audiodaten in dem Datenstrom; einen Steuerprozess zum Umschalten
zwischen der Header-Analyseverarbeitung und dem Audio-Decodierprozess,
wobei die Header-Analyseverarbeitung
Priorität
erhält;
und einen Routinenprozess zum Durchführen eines Decodierprozesses
für die
komprimierten Videodaten in dem Datenstrom, wobei der Decodierprozess
den Header-Analyseprozess nicht enthält.
-
Hier
kann der Rechner eine Medienverarbeitungsvorrichtung sein, die einen
ersten Prozessor und einen zweiten Prozessor aufweist, wobei der
erste Prozessor den Header-Analyseprozess,
den Audio-Decodierprozess und den Steuerprozess ausführt, und
der zweite Prozessor den Routinenprozess ausführt.
-
Bei
der angegebenen Konstruktion räumt
der erste Prozessor der Ausführung
des Header-Analyseprozesses Priorität ein und führt somit den Header-Analyseprozess
ohne Verzögerung
aus. Wenn eine Ausführung
des Header-Analyseprozesses nicht möglich ist, führt der
erste Prozessor den Audio-Decodierprozess aus, wodurch der Verarbeitungsdurchsatz
erhöht
wird. Da der erste Prozessor die Header-Analyseverarbeitung ohne
Verzögerung ausführt, kann
der zweite Prozessor die Verarbeitungsergebnisse des Header-Analyseprozesses schnell
empfangen und somit schnell mit dem Routinenprozess beginnen.
-
Hier
kann der Steuerprozess Folgendes enthalten: einen Unterbrechungserkennungsprozess zum
Erkennen von einer Unterbrechung, die ein Umschalten zwischen dem
Header-Analyseprozess und dem Audio-Decodierprozess verursacht,
und von einem Unterbrechungstyp; einen Zustandsmanagementprozess
zum Verwalten eines Zustands des Header-Analyseprozesses und eines
Zustands des Audio-Decodierprozesses basierend auf dem Unterbrechungstyp,
der erkannt worden ist, wobei jeder Zustand einer von einem Ausführungszustand,
einem Wartezustand und einem Bereitschaftszustand ist; und eine
Umschalteinheit zum Umschalten, wenn sich der Zustand des Header-Analyseprozesses
von dem Wartezustand in den Bereitschaftszustand geändert hat,
eines von dem ersten Prozessor ausgeführten Prozesses von dem Audio-Decodierprozess in
den Header-Analyseprozess.
-
Bei
der angegebenen Konstruktion beginnt der erste Prozessor mit dem
Header-Analyseprozess, sobald der Header-Analyseprozess in den Bereitschaftszustand
wechselt. Dadurch wird die gesamte Verarbeitungseffizienz verbessert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Diese
und andere Ziele, Vorteile und Merkmale der Erfindung gehen aus
der folgenden Beschreibung derselben in Verbindung mit den folgenden
begleitenden Zeichnungen hervor, die eine spezielle Ausführungsform
der Erfindung veranschaulichen:
-
1 zeigt
eine Darstellung der Decodierungsverarbeitung, die von einem herkömmlichen AV-Decoder
durchgeführt
wird;
-
2 ist
ein Blockschaltbild, das die gesamte Konstruktion einer Medienverarbeitungsvorrichtung
in einer Ausführungsform
der vorliegenden Erfindung zeigt;
-
3 zeigt
Makroblöcke
als Teil der hierarchischen Konstruktion eines MPEG-Stroms;
-
4 ist
ein Blockschaltbild, das die Konstruktion der Medienverarbeitungsvorrichtung
detaillierter zeigt;
-
5 zeigt
die Details der Header-Analyseverarbeitung, die durch den Prozessor 7 ausgeführt wird,
und die Steuerung der anderen Komponenten in der Medienverarbeitungsvorrichtung,
die durch den Prozessor 7 ausgeführt wird;
-
6 zeigt
die Betriebs-Zeitsteuerung der verschiedenen Komponenten der Decodierverarbeitungseinheit 1002,
wobei die horizontale Achse die Zeit darstellt;
-
7 ist
ein Zeitsteuerungsdiagramm, das die Betrebs-Zeitsteuerung der Hauptkomponenten der
Decodierverarbeitungseinheit zeigt;
-
8 zeigt
die Software-Konfiguration des Prozessors 7;
-
9 ist
eine Tabelle, welche die verschiedenen Unterbrechungssignale zeigt,
die von dem Betriebssystem erkannt werden;
-
10 zeigt
den Zustandsübergang
des Video-Threads;
-
11 zeigt
den Zustandsübergang
des Audio-Threads;
-
12 zeigt
eine Beispiels-Zustandstabelle;
-
13 ist
ein Ablaufdiagramm, das den Auswahlprozess zeigt, in dem das Betriebssystem
einen Thread wählt,
der dem Prozessor 7 zugeordnet werden soll;
-
14A und 14B zeigen
die detaillierten Arbeitsvorgänge,
die von den verschiedenen Komponenten der Decodierverarbeitungseinheit während eines
Decodiervorgangs basierend auf 7 durchgeführt werden;
-
15A und 15B zeigen
die Arbeitsvorgänge,
die von der Code-Konvertierungseinheit 9 durchgeführt werden,
wenn ein VLD-Fehler aufgetreten ist; und
-
16A und 16B zeigen
die Arbeitsvorgänge,
die durch die Pixel-Lese/Schreib-Einheit durchgeführt werden,
wenn ein Bewegungskompensationsfehler aufgetreten ist.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORM
-
Das
Folgende ist eine Beschreibung einer Medienverarbeitungsvorrichtung
der vorliegenden Erfindung, wobei die Beschreibung der Ausführungsform
in die folgenden Abschnitte unterteilt wurde.
- 1
Der Gesamtaufbau der Medienverarbeitungsvorrichtung
1.1 Die
Eingabe/Ausgabe-Verarbeitungseinheit
1.2 Die Decodierverarbeitungseinheit
1.2.1
Die sequenzielle Verarbeitungseinheit
1.2.2 Die Routinenverarbeitungseinheit
- 2 Der Aufbau der Medienverarbeitungsvorrichtung
2.1 Der
Aufbau der Eingabe/Ausgabe-Verarbeitungseinheit
2.2 Der Aufbau
der Decodierverarbeitungseinheit
2.2.1 Die sequenzielle Verarbeitungseinheit
2.2.1.1
Header-Analyseverarbeitung
2.2.1.2 Audio-Decodierverarbeitung
2.2.2
Die Routinenverarbeitungseinheit
- 3 Betriebs-Zeitsteuerung der Komponenten
- 4 Betriebssystem OS (Operating System) der Routinenverarbeitungseinheit
4.1
Unterbrechungssignale
4.2 Zustandsübergang von Threads
4.2.1
Video-Thread
4.2.2 Audio-Thread
4.3 Thread-Verarbeitung
4.4
Zuweisung zu dem Prozessor
4.5 Fehlerverarbeitung
- 5 Betrieb
5.1 Betrieb der Eingabe/Ausgabe-Verarbeitungseinheit
5.2
Betrieb der Decodierverarbeitungseinheit
5.2.1 Standardbetrieb
5.2.2
Betrieb für
einen VLD-Fehler
5.2.3 Betrieb für einen Bewegungskompensationsfehler
-
Bevorzugte Ausführungsform
-
Die
Medienverarbeitungsvorrichtung der vorliegenden Ausführungsform
ist in einer STB, einem DVD-Gerät,
einem DVD-RAM-Gerät
zur Aufzeichnung/Wiedergabe oder Ähnlichem vorgesehen. Die Medienverarbeitungsvorrichtung
empfängt
eine Eingabe von MPEG-Strömen
als komprimierte Video- und Audiodaten von der Satellitenausstrahlung
oder der DVD und führt
eine Entkomprimierungsverarbeitung durch, (die im Folgenden als "Decodierung" bezeichnet wird),
bevor die Videosignale und Audiosignale an externe Ausgabevorrichtungen
ausgegeben werden.
-
1. Der Gesamtaufbau
der Medienverarbeitungsvorrichtung
-
2 ist
ein Blockschaltbild, das den gesamten Aufbau einer Medienverarbeitungsvorrichtung
der Ausführungsform
der vorliegenden Erfindung zeigt.
-
Eine
Medienverarbeitungsvorrichtung 1000 setzt sich zusammen
aus einer Eingabe/Ausgabe-Verarbeitungseinheit 1001, einer
Decodierverarbeitungseinheit 1002 und einer Speichersteuereinrichtung 6.
Die Medienverarbeitungsvorrichtung 1000 führt die
Eingabe/Ausgabe-Verarbeitung und Decodierverarbeitung parallel durch.
Die Medienverarbeitungsvorrichtung 1000 verwendet einen
externen Speicher 3 als einen Arbeitsspeicher zum temporären Speichern
eines MPEG-Stroms und von decodierten Audiodaten und als einen Bildspeicher
zum Speichern von decodierten Videodaten.
-
1.1 Die Eingabe/Ausgabe-Verarbeitungseinheit
-
Die
Eingabe/Ausgabe-Verarbeitungseinheit 1001 führt eine
Eingabe/Ausgabe-Verarbeitung durch, die nicht in Synchronisation
mit dem Betrieb der Medienverarbeitungsvorrichtung 1000 erfolgt. Die
Eingabe-/Ausgabeverarbeitung umfasst: (a) Eingeben eines MPEG-Stroms,
der asynchron und extern eingegeben wird, und temporäres Speichern des MPEG-Stroms
in dem externen Speicher 3; (b) Bereitstellen eines in
dem externen Speicher 3 gespeicherten MPEG-Stroms für die Decodierverarbeitungseinheit 1002;
und (c) Auslesen von decodierten Video- und Audiodaten aus dem externen
Speicher 3 und Ausgeben jeweils der decodierten Videodaten und
der decodierten Audiodaten an eine (nicht dargestellte) Anzeigevorrichtung
in Übereinstimmung
mit den jeweiligen Ausgabegeschwindigkeit.
-
1.2 Die Decodierverarbeitungseinheit
-
Die
Decodierverarbeitungseinheit 1002 decodiert den MPEG-Strom,
der von der Eingabe/Ausgabe-Verarbeitungseinheit bereitgestellt
wird, und speichert die decodierten Videodaten und decodierten Audiodaten
in dem externen Speicher 3. Dieser Betrieb der Decodierverarbeitungseinheit 1002 wird unabhängig von
und parallel zu dem Betrieb der Eingabe/Ausgabe-Verarbeitungseinheit 1001 durchgeführt. Da
die Decodierverarbeitung der komprimierten Videodaten in einem MPEG-Strom
eine hohe rechnerische Komplexität
aufweist und eine Reihe von Prozessen umfasst, enthält die Decodierverarbeitungseinheit 1002 eine
sequenzielle Verarbeitungseinheit 1003 und eine Routinenverarbeitungseinheit 1004,
welche die Verarbeitungslast der Decodierverarbeitungseinheit 1002 gemeinsam
tragen. Die sequenzielle Verarbeitungseinheit 1003 führt eine
Header-Analyseverarbeitung an den Makroblock-Headern der komprimierten
Videodaten aus, während
die Routinenverarbeitungseinheit 1004 die Decodierung der
komprimierten Videodaten durchführt,
die der tatsächliche
Dateninhalt der Makroblöcke
sind. In der Decodierverarbeitungseinheit 1002 wird jeder
Makroblock mit komprimierten Videodaten einer Verarbeitung durch
die sequenzielle Verarbeitungseinheit 1003 und der Routinenverarbeitungseinheit 1004 einmal
unterzogen.
-
Das
Folgende ist eine Beschreibung der Beziehung zwischen den komprimierten
Videodaten in einem MPEG-Strom und den Makroblöcken.
-
3 ist
eine Darstellung einer hierarchischen Struktur, die das Verhältnis zwischen
einem MPEG-Strom und Makroblöcken
zeigt. Die erste Ebene in der Hierarchie zeigt den Fluss des MPEG-Stroms,
während
die zweite Ebene ein Ein-Sekunden-Segment des MPEG-Stroms zeigt. Dieses
Ein-Sekunden-Segment enthält
eine Vielzahl von Frames, die I- (Interne), P- (Prädikative)
oder B- (Bidirektional prädikative)
Bilder sind.
-
Die
dritte Ebene in der Hierarchie zeigt einen der Frames. Jeder Frame
enthält
einen Bild-Header und eine Vielzahl von Slices. Die vierte Ebene
in der Hierarchie zeigt einen der Slices. Jeder Slice enthält einen
Slice-Header und eine Vielzahl von Makroblöcken. Die fünfte Ebene zeigt einen der
Makroblöcke. Jeder
Makroblock enthält
einen Makroblock-Header und sechs Blöcke. Diese sechs Blöcke setzen
sich zusammen aus vier Luminanzblöcken und zwei Chrominanzblöcken, wobei
jeder Block ein Bild ist, das sich aus 8·8 Pixeln zusammensetzt. Diese
sechs Blöcke
entsprechen dem Dateninhalt des Makroblocks.
-
Die
Datenkonstruktion der ersten bis fünften Ebene in 3 wurde
detailliert in vielen bekannten Publikationen beschrieben, wie beispielsweise
Pointo Zukaishiki Saishin MPEG Kyokasho (Latest MPEG techniques – An Illustrated
Reader), veröffentlicht von
ASCII Publishing, Co.
-
Die
Decodierverarbeitung für
komprimierte Audiodaten, (die im Folgenden als "Audio-Decodierung" bezeichnet wird), erfordert im Vergleich
weniger Verarbeitung als die Decodierverarbeitung für komprimierte
Videodaten. Dementsprechend führt die
sequenzielle Verarbeitungseinheit 1003 die Audio-Decodierverarbeitung
in dem Zeitraum zwischen der Header-Analyseverarbeitung für einen
Makroblock und der Header-Analyseverarbeitung für den folgenden Makroblock
durch.
-
Wie
vorher beschrieben, führt
die sequenzielle Verarbeitungseinheit 1003 sowohl die Header-Decodierverarbeitung
als auch die Audio-Decodierverarbeitung durch. Die sequenzielle
Verarbeitungseinheit 1003 führt diese zwei Prozesse nacheinander
aus, indem ein Programm ausgeführt
wird, das die erforderlichen Arbeitsvorgänge enthält und der Header-Decodierverarbeitung
Priorität
einräumt. Diese
Prozesse werden insgesamt im Folgenden als die "sequenzielle Verarbeitung" bezeichnet.
-
Die
Routinenverarbeitungseinheit 1004 führt die Decodierverarbeitung
für den
Dateninhalt der Makroblöcke
durch. Diese Verarbeitung wird routinemäßig für jeweils einen Makroblock
durchgeführt
und bringt eine beträchtliche
Rechenmenge für
verschiedene Prozesse mit sich. Diese Verarbeitung wird im Folgenden
als "Routinenverarbeitung" bezeichnet.
-
1.2.1 Die sequenzielle
Verarbeitungseinheit
-
Die
sequenzielle Verarbeitungseinheit 1003 enthält einen
Prozessor und einen Speicher. Der Prozessor führt die Audio-Decodierverarbeitung
und Header-Analyseverarbeitung durch, wobei Letzteres mit Priorität geschieht,
indem die Thread-Programme (im Folgenden "Threads") ausgeführt werden, die in dem Speicher
gespeichert sind. In der sequenziellen Verarbeitungseinheit 1003 steuert
ein Betriebssystem OS (Operating System) die Ausführung der
Audio-Decodierverarbeitung und Header-Analyseverarbeitung so, dass
der Letzteren Priorität
eingeräumt wird.
In dieser Spezifikation bezieht sich der Begriff "Thread" auf ein modulares
Programm, das in einer Vielfach-Thread-Architektur ausgeführt wird.
-
Die
Header-Analyseverarbeitung umfasst die Analyse der Header-Informationen
eines Makroblocks und die Berechnung von Bewegungsvektoren. Der
Header eines Makroblocks ist für
die Decodierung des Dateninhalts des Makroblocks erforderlich. Die
sequenzielle Verarbeitungseinheit 1003 überträgt die Informationen, die durch
die Analyse eines Makroblock-Headers erhalten werden, an die Routinenverarbeitungseinheit 1004.
Die Bewegungsvektoren, auf die hier verwiesen wird, sind Vektoren,
die einen rechtwinkligen 8·8
Pixel großen
Bereich in einem Referenz-Frame angeben und so zeigen, welcher rechtwinklige
Bereich in dem Referenz-Frame verwendet wurde bis zu dem Zeitpunkt,
an dem die in dem vorliegenden Block vorgegebenen Differenzwerte
berechnet wurden.
-
Die
Audio-Decodierverarbeitung setzt sich aus der Analyse des Headers
der komprimierten Audiodaten und der Decodierung des Dateninhalts
der komprimierten Audiodaten zusammen. Diese Prozesse werden unabhängig voneinander
von der sequenziellen Verarbeitungseinheit 1003 durchgeführt. Dies
bedeutet, dass die Audio-Decodierverarbeitung vorübergehend
gestoppt und leichter erneut gestartet werden kann als die Header-Analyseverarbeitung. Die
Audio-Decodierverarbeitung weist auch eine geringe rechnerische
Komplexität
auf und kann so innerhalb des Zeitintervalls zwischen der Header-Analyseverarbeitung
der aufeinander folgenden Makroblock-Header durchgeführt werden.
Aus diesem Grund ist die sequenzielle Verarbeitungseinheit 1003 so
konstruiert, dass sie der Header-Analyseverarbeitung vor der Audio-Decodierverarbeitung
Priorität einräumt.
-
Ausführlicher
bedeutet dies, dass, wenn die Header-Analyseverarbeitung ausgeführt werden kann,
das Betriebssystem die Steuerung so durchführt, dass die Header-Analyseverarbeitung
definitiv durchgeführt
wird. Wenn die sequenzielle Verarbeitungseinheit 1003 die
Audio-Decodierverarbeitung zu einem solchen Zeitpunkt durchführt, veranlasst das
Betriebssystem, dass die sequenzielle Verarbeitungseinheit 1003 die
Audio-Decodierverarbeitung aussetzt und die Header-Analyseverarbeitung
ausführt.
-
1.2.2 Die Routinenverarbeitungseinheit
-
Die
Routinenverarbeitungseinheit 1004 führt einen Code-Decodierungsprozess
variabler Länge (VLD),
einen Umkehrquantisierungsprozess (IQ), einen umgekehrten diskreten
Kosinustransformationsprozess (IDCT) und einen Bewegungskompensationsprozess
(MC) an dem Dateninhalt eines Makroblocks als die Routinenverarbeitung
durch. Die Routinenverarbeitungseinheit 1004 führt diese
Prozesse in der angegebenen Reihenfolge unter Verwendung einer Pipeline-Architektur
durch. Die Routinenverarbeitungseinheit 1004 führt die
VLD-Verarbeitung an dem Makroblock-Header sowie an dem Dateninhalt des
Makroblocks durch und gibt die durch die VLD-Verarbeitung an dem
Makroblock-Header erhaltenen Daten an die sequenzielle Verarbeitungseinheit 1003 aus.
-
Beim
Durchführen
der Bewegungskompensation speichert die Routinenverarbeitungseinheit 1004 die
decodierten Blöcke über die
Speichersteuereinrichtung 6 in dem externen Speicher 3,
der als der Frame-Speicher dient.
-
2 Der Aufbau der Medienverarbeitungsvorrichtung
-
4 ist
ein Blockschaltbild, das die detaillierte Struktur der Medienverarbeitungsvorrichtung 1000 zeigt.
-
2.1 Der Aufbau der Eingabe/Ausgabe-Verarbeitungseinheit
-
Wie
in 4 gezeigt, setzt sich die Eingabe/Ausgabe-Verarbeitungseinheit 1001 aus
einer Strom-Eingabeeinheit 1, einem Pufferspeicher 2,
einem Eingabe/Ausgabe-Prozessor 5, (im Folgenden als "E/A-Prozessor 5" bezeichnet), einer
Direkt-Speicherzugriff-Steuereinrichtung
DMAC (Direct Memory Access Controller) 5a, einer Video-Ausgabeeinheit 12,
einer Audio-Ausgabeeinheit 13 und einer Zentralrechner-Schnittstelleneinheit 14 zusammen.
-
Die
Strom-Eingabeeinheit 1 wandelt MPEG-Datenströme, die
sequenziell von außen
eingegeben werden, in parallele Daten um, (die im Folgenden als "MPEG-Daten" bezeichnet werden).
Damit erfasst die Strom-Eingabeeinheit 1 einen Startcode
einer Bildgruppe GOP (Group of Pictures) aus einem MPEG-Datenstrom
und informiert den E/A-Prozessor 5 darüber. Die
Bildgruppen, auf die hier verwiesen wird, enthalten jeweils ein
internes Bild (I-picture) und entsprechen einem MPEG-Datenstrom,
der äquivalent
zu Videodaten mit einer Wiedergabezeit von etwa 0,5 Sekunden ist.
Wenn der E/A-Prozessor 5 von
der Strom-Eingabeeinheit 1 darüber informiert wird, dass eine
Bildgruppe erfasst worden ist, veranlasst er, dass die umgewandelten MPEG-Daten
zum Pufferspeicher 2 übertragen
werden.
-
Der
Pufferspeicher 2 speichert temporär die von der Strom-Eingabeeinheit 1 übertragenen MPEG-Daten.
Die in dem Pufferspeicher 2 gespeicherten MPEG-Daten werden
dann gemäß der Steuerung
durch den E/A-Prozessor 5 über die Speichersteuereinrichtung 6 an
den externen Speicher 3 übertragen.
-
Der
externe Speicher 3, der sich aus SDRAM- (Synchronous Dynamic
Random Access Memory) Chips zusammensetzt, speichert vorübergehend
die MPEG-Daten, die über
die Speichersteuereinrichtung 6 von dem Pufferspeicher 2 übertragen werden.
Außerdem
speichert der externe Speicher 3 die decodierten Videodaten,
(die im Folgenden auch als "Frame-Daten" bezeichnet werden),
und die decodierten Audiodaten.
-
Der
E/A-Prozessor 5 steuert die Daten-Eingaben/-Ausgaben zwischen
der Strom-Eingabeeinheit 1, dem Pufferspeicher 2,
dem externen Speicher 3, (der über die Speichersteuereinrichtung 6 verbunden
ist), und einem FIFO-Speicher 4. Im Einzelnen steuert der
E/A-Prozessor Datentransfers (DMA-Transfers) auf den folgenden Pfaden
(1) bis (4):
- (1) Strom-Eingabeeinheit 1 → Pufferspeicher 2 → Speichersteuereinheit 6 → externer
Speicher 3;
- (2) externer Speicher 3 → Speichersteuereinheit 6 → FIFO-Speicher 4;
- (3) externer Speicher 3 → Speichersteuereinheit 6 → Pufferspeicher 2 → Video-Ausgabeeinheit 12; und
- (4) externer Speicher 3 → Speichersteuereinheit 6 → Pufferspeicher 2 → Audio-Ausgabeeinheit 13.
-
Der
E/A-Prozessor 5 steuert die Übertragungen von Videodaten
und Audiodaten getrennt, die in den MPEG-Daten auf den vorher angegebenen
Pfaden enthalten sind. Die Pfade (1) und (2) werden für die Übertragung
der MPEG-Daten verwendet, die noch zu decodieren sind. Der E/A-Prozessor 5 überträgt die komprimierten
Videodaten und die komprimierten Audiodaten auf den Pfaden (1) und
(2) getrennt. Der Pfad (3) wird für decodierte Videodaten verwendet,
und der Pfad (4) für
die decodierten Audiodaten. Hier werden die decodierten Videodaten
und die decodierten Audiodaten jeweils zu der (nicht gezeigten)
externen Anzeigevorrichtung und der (nicht gezeigten) Ausgabevorrichtung
in Übereinstimmung mit
den jeweiligen Ausgabegeschwindigkeiten für diese Vorrichtungen übertragen.
-
Die
Direkt-Speicherzugriff-Steuereinrichtung DMAC 5a führt die
folgenden Übertragungen
in Übereinstimmung
mit der Steuerung durch den E/A-Prozessor 5 aus: DMA-Transfer zwischen
dem Pufferspeicher 2 und jedem von Strom-Eingabeeinheit 1,
Video-Ausgabeeinheit 12 und
Audio-Ausgabeeinheit 13; DMA-Transfer zwischen dem Pufferspeicher 2 und
dem externen Speicher 3; und DMA-Transfer zwischen dem
externen Speicher 3 und dem FIFO-Speicher 4.
-
Die
Video-Ausgabeeinheit 23 fordert den E/A-Prozessor 5 auf,
Daten auszugeben in Übereinstimmung
mit der Ausgabegeschwindigkeit (beispielsweise einem Zyklus des
horizontalen Synchronisationssignals Hsync) der externen Anzeigevorrichtung
(beispielsweise Bildschirmanzeige (Kathodenstrahlröhre)), und
gibt dann die Videodaten, die von dem E/A-Prozessor 5 auf
dem Pfad (3) eingegeben wurden, an die Anzeigevorrichtung aus.
-
Die
Audio-Ausgabeeinheit 13 fordert den E/A-Prozessor 5 auf,
Daten auszugeben in Übereinstimmung
mit der Ausgabegeschwindigkeit der externen Audio-Ausgabevorrichtung,
und gibt dann die Audiodaten, die von dem E/A-Prozessor 5 auf
dem Pfad (4) eingegeben wurden, an die Audio-Ausgabevorrichtung
(wie beispielsweise einen D/A- (Digital-Analog-) Wandler, einen
Audioverstärker
und ein Paar von Lautsprechern aus.
-
Die
Zentralrechner-Schnittstelleneinheit 14 ist eine Schnittstelle,
die für
die Kommunikation mit einem externen Zentralrechner-Prozessor verwendet wird,
wie beispielsweise einem Prozessor, der die Gesamtsteuerung in dem
Fall übernimmt,
in dem die Medienverarbeitungsvorrichtung in einer DVD-Wiedergabevorrichtung
bereitgestellt ist. In dieser Kommunikation sendet der Zentralrechner-Prozessor
Anweisungen, wie beispielsweise Decodierstart, Stopp, Schnellsuche
vorwärts/rückwärts und
Rückwärts-Wiedergabe
(reverse reproduction), die sich auf die Decodierung von MPEG-Strömen beziehen.
-
2.2 Der Aufbau der Decodierverarbeitungseinheit
-
Die
in 4 gezeigte Decodierverarbeitungseinheit 1002 enthält den FIFO-Speicher 4,
die sequenzielle Verarbeitungseinheit 1003 und die Routinenverarbeitungseinheit 1004.
Die Decodierverarbeitungseinheit 1002 führt diese Decodierverarbeitung
an den MPEG-Daten
durch, die von der Eingabe/Ausgabe-Verarbeitungseinheit 1001 über den FIFO-Speicher 4 bereitgestellt
werden. Die sequenzielle Verarbeitungseinheit 1003 enthält einen
Prozessor 7 und einen internen Speicher 8. Die
Routinenverarbeitungseinheit 1004 enthält eine Code-Übersetzungseinheit 9,
eine Pixel-Berechnungseinheit 10, eine Pixel-Lese/Schreib-Einheit 11,
einen Zwischenspeicher 200 und einen Zwischenspeicher 201.
-
Der
FIFO-Speicher 4 enthält
zwei FIFOs, (die im folgenden als der "Video-FIFO" und der "Audio-FIFO" bezeichnet werden), und speichert die komprimierten
Videodaten und die komprimierten Audiodaten, die von dem externen
Speicher 3 gemäß der Steuerung
durch den E/A-Prozessor 5 in einem FIFO- (first-in first-out)
Format übertragen
werden.
-
2.2.1 Die sequenzielle
Verarbeitungseinheit
-
Der
Prozessor 7 führt
das in dem internen Speicher 8 gespeicherte Betriebssystem
aus und schaltet zwischen dem Ausführen eines Programms für die Header-Analyseverarbeitung
und einem Programm für
die Audio-Decodierverarbeitung gemäß der Steuerung um, die von
dem Betriebssystem durchgeführt
wird. Beide dieser Programme sind in dem internen Speicher 8 gespeichert.
Die Header-Analyseverarbeitung und Audio-Decodierverarbeitung werden
im Folgenden im Detail beschrieben.
-
2.2.1.1 Header-Analyseverarbeitung
-
5 zeigt
die Details der Header-Analyseverarbeitung des Prozessors 7,
und wie der Prozessor 7 die anderen Komponenten steuert.
Es ist anzumerken, dass jedes Datenset in dem Makroblock-Header,
das in abgekürzter
Form in 5 gezeigt wurde, in der vorher
genannten Veröffentlichung
erläutert
ist und daher in dieser Spezifikation nicht beschrieben wird.
-
Der
Prozessor 7 gibt Befehle an die Code-Übersetzungseinheit 9 aus
und erhält
sukzessiv die Daten, die sich aus der VLD-Verarbeitung an dem Header
ergeben. In Übereinstimmung
mit den erhaltenen Daten stellt der Prozessor 7 dann die
verschiedenen Datenarten in die Code-Übersetzungseinheit 9,
die Pixel-Berechnungseinheit 10 und die Pixel-Lese/Schreib-Einheit 11,
damit der Makroblock decodiert werden kann.
-
In 5 gibt
der Prozessor 7 einen Befehl an die Code-Übersetzungseinheit 9 aus,
um eine Makroblock-Adresserhöhung
MBAI (MacroBlock Address Increment) (Schritt S101) zu erhalten,
und erhält
so die Makroblock-Adresserhöhung
von der Code-Übersetzungseinheit 9.
Wenn der vorliegende Makroblock basierend auf dieser Makroblock-Adresserhöhung ein übersprungener
Makroblock ist, (nämlich,
wenn der gegenwärtig
zu decodierende Makroblock der gleiche ist wie der entsprechende
Makroblock in dem vorhergehenden Frame), ist der vorliegende Makroblock
ausgelassen worden, und der Prozessor fährt mit Schritt S118 fort.
Wenn der vorliegende Makroblock kein übersprungener Makroblock ist,
fährt der
Prozessor 7 mit der Header-Analyse (Schritt S102, S103)
fort.
-
Im
Anschluss daran gibt der Prozessor 7 einen Befehl aus,
um den Makroblock-Typ MBT (MacroBlock Type) zu erhalten, und erhält den Makroblock-Typ
von der Code-Übersetzungseinheit 9.
Der Prozessor 7 verwendet diesen Makroblock-Typ, um zu
beurteilen, ob die Abtastart der Blöcke in dem Makroblock eine
Zickzack-Abtastung oder eine alternierende Abtastung ist, und informiert
die Pixel-Berechnungseinheit 10 über die korrekte Lesereihenfolge für den Zwischenspeicher 200 (Schritt
S104).
-
Der
Prozessor 7 beurteilt dann anhand der erhaltenen Daten
in dem Header, ob ein räumlich-zeitlicher
Wichtungs-Code STWC (Spatial Temporal Weight Code) vorhanden ist
(Schritt S105), und gibt, falls dies so ist, einen Befehl aus, um
den räumlich-zeitlichen
Wichtungs-Code zu erhalten (Schritt S106).
-
Auf
die gleiche Weise erhält
der Prozessor 7 den Frame-Bewegungstyp FrMT (Frame Motion
Type), den Feld-Bewegungstyp FiMT (Field Motion Type), den diskreten
Kosinustransformationstyp DCT (DCT Type), den Quantifikator-Skalierungscode
QSC (Quantifier Scale Code), den Bewegungsvektor MV (Motion Vector)
und das codierte Blockmuster CBP (Coded Block Pattern) (Schritt
S107 bis S116).
-
Damit
informiert der Prozessor 7 die Pixel-Lese/Schreib-Einheit 11 über die
Analyseergebnisse von Frame-Bewegungstyp, Feld-Bewegungstyp und
diskretem Kosinustransformationstyp, informiert die Pixel-Berechnungseinheit 10 über das Analyseergebnis
des Quantifikator-Skalierungscodes, und informiert die Code-Übersetzungseinheit 9 über das
Analyseergebnis des codierten Blockmusters. Damit werden die Informationen,
die für
die Verarbeitung von Umkehrquantisierung IQ, umgekehrter diskreter
Kosinustransformation ICDT und Bewegungskompensation MC erforderlich
sind, in die Code-Übersetzungseinheit 9,
Pixel-Berechnungseinheit 10 und Pixel-Lese/Schreib-Einheit 11 gestellt.
-
Als
nächstes
gibt der Prozessor 7 der Code-Übersetzungseinheit 9 eine
Signalisierung, mit der VLD-Verarbeitung des Dateninhalts des Makroblocks
zu beginnen (Schritt S117). Beim Empfangen dieser VLD-Startsignalisierung
beginnt die Code-Übersetzungseinheit 9 mit
der VLD-Verarbeitung.
-
Der
Prozessor 7 berechnet die Bewegungsvektoren in Übereinstimmung
mit den Bewegungsvektordaten (Schritt S118) und informiert die Pixel-Lese/Schreib-Einheit 11 über das
Berechnungsergebnis (Schritt S119).
-
Der
Grund, warum der Prozessor 7 die VLD-Startsignalisierung
(Schritt S117) vor dem Durchführen
der Verarbeitung in Zusammenhang mit Bewegungsvektoren ausgibt,
ist wie folgt.
-
In
der Routinenverarbeitungseinheit 1004 wird die Pipeline-Verarbeitung
in der Reihenfolge Code-Übersetzungseinheit 9 → Pixel-Berechnungseinheit 10 → Pixel-Lese/Schreib-Einheit 11 durchgeführt. In
dieser Pipeline-Verarbeitung führen
die verschiedenen Komponenten der Routinenverarbeitungseinheit 1004 eine
Verarbeitung erst nach dem Empfangen der Daten durch, die durch
die Header-Analyseverarbeitung an dem Makroblock-Header erzeugt werden.
-
Wenn
die Verarbeitung in Schritt S116 in 5 beendet
ist, kann die Pixel-Lese/Schreib-Einheit 11 ihre Verarbeitung
nicht durchführen,
da sie die Daten für
die Bewegungsvektoren noch nicht erhalten hat, obwohl die Code-Übersetzungseinheit 9 und Pixel-Berechnungseinheit 10 die
erforderlichen Daten empfangen haben, um mit ihren jeweiligen Prozessen
zu beginnen.
-
Aus
diesem Grund wird die Routinenverarbeitung zuerst gestartet, so
dass die Bewegungsvektoren berechnet werden können, während die Code-Übersetzungseinheit 9 und
Pixel-Berechnungseinheit 10 ihre Prozesse durchführen. Danach
wird die Pixel-Lese/Schreib-Einheit über das
Berechnungsergebnis informiert. Dies bedeutet, dass in dieser Ausführungsform
die Decodierverarbeitung für
einen Makroblock in einer kürzeren
Zeit abgeschlossen werden kann, wodurch die Verarbeitungseffizienz
der Decodierverarbeitungseinheit 1002 verbessert wird.
-
Schließlich sendet
der Prozessor 7 ein Signal Header-Analyse Ende an das Betriebssystem (Schritt
S120). Beim Abschließen
der Header-Analyseverarbeitung für
alle Makroblöcke
in einem Frame sendet der Prozessor 7 jedoch ein Signal
Frame Ende an das Betriebssystem anstatt ein Signal Header-Analyse
Ende. Mit dem Senden dieses Sig nals schließt der Prozessor 7 die
Header-Analyse für
die komprimierten Videodaten in einem Makroblock ab.
-
2.2.1.2 Audio-Decodierverarbeitung
-
Bei
der Audio-Decodierverarbeitung analysiert der Prozessor 7 den
Header-Teil und den Datenteil der komprimierten Audiodaten, die
aus dem FIFO-Speicher 4 ausgelesen werden, führt den
Decodierprozess durch und mischt das Decodierungsergebnis für Audiokanäle abwärts. Danach
gibt der Prozessor 7 die Audiodaten, die durch diese Reihe von
Prozessen erhalten wurden, über
die Speichersteuereinrichtung 6 an den externen Speicher 3 aus.
-
2.2.2 Die Routinenverarbeitungseinheit
-
6 zeigt
die Betriebszeitsteuerung der verschiedenen Komponenten der Decodierverarbeitungseinheit 1002.
In 6 stellt die horizontale Achse die Zeit dar.
-
Die
Code-Übersetzungseinheit 9 führt eine Decodierung
variabler Länge
an den komprimierten Videodaten durch, die aus dem FIFO-Speicher 4 ausgelesen
werden. Wie in dieser Figur gezeigt, überträgt die Code-Übersetzungseinheit 9 den
Header-Teil, (der durch die unterbrochene Linie in 6 dargestellt
wird), an den Prozessor 7, und überträgt die Makroblockdaten, (die
sechs, durch die durchgezogenen Linien dargestellten Blöcke, die
sich aus den Luminanzblöcken
Y0 bis Y3 und den Chrominanzblöcken
Cb, Cr zusammensetzen), über
den Zwischenspeicher 200 an die Pixel-Berechnungseinheit 10.
Nach dem Durchführen
der Decodierung durch die Code-Übersetzungseinheit 9 sind
die Makroblockdaten Daten, welche die räumlichen Frequenzkomponenten
aufweisen.
-
Während der
VLD-Verarbeitung des Header-Teils arbeitet die Code-Übersetzungseinheit 9 parallel
zu der Header-Analyseverarbeitung des Prozessors 7. Beim
Empfangen eines Befehls, der verschiedene Arten von Daten von dem
Prozessor 7 abfragt, gibt die Code-Übersetzungseinheit 9 die
abgefragten Daten an den Prozessor 7 aus. Beim Abschließen der
Decodierung variabler Länge
für einen Makroblock
gibt die Code-Übersetzungseinheit 9 ein Signal
VLD Ende an den Prozessor 7 aus.
-
Der
Zwischenspeicher 200 speichert Daten, welche die räumlichen
Frequenzkomponenten für
einen Block (8 × 8
Pixel) aufweisen, der von der Code-Übersetzungseinheit 9 eingegeben
worden ist.
-
Die
Pixel-Berechnungseinheit 10 führt die Umkehrquantisierungs-
und umgekehrte diskrete Kosinustransformations-Verarbeitung an den
Blockdaten durch, die von der Code-Übersetzungseinheit 9 über den
Zwischenspeicher 200 in Blockeinheiten übertragen worden sind. Das
von der Pixel-Berechnungseinheit 10 angegebene Verarbeitungsergebnis, d.h.
Daten, die Pixel-Luminanzwerte oder -differenzen im Fall eines Luminanzblocks
darstellen, und Daten, die Pixel-Chrominanzwerte oder -differenzen
im Fall eines Chrominanzblocks darstellen, werden über den
Zwischenspeicher 201 an die Pixel-Lese/Schreib-Einheit 11 übertragen.
-
Der
Zwischenspeicher 210 speichert Pixeldaten von einem Block
(8 × 8
Pixel).
-
Die
Pixel-Lese/Schreib-Einheit 11 führt die Bewegungskompensationsverarbeitung
an dem Verarbeitungsergebnis durch, das von der Pixel-Berechnungseinheit 10 in
Blockeinheiten angegeben wird. Insbesondere für prädikative Bilder (P-pictures)
oder bidirektional prädikative
Bilder (B-pictures) extrahiert die Pixel-Lese/Schreib-Einheit 11 einen
rechtwinkligen Bereich, der von dem Bewegungsvektor angegeben wird,
aus dem decodierten Referenz-Frame in dem externen Speicher 3 über die
Speichersteuereinrichtung 6 und mischt den extrahierten
rechtwinkligen Bereich mit dem Block, der von der Pixel-Berechnungseinheit 10 verarbeitet
wurde, um ein ursprüngliches
Blockbild zu erhalten. Dieses Decodierungsergebnis der Pixel-Lese/Schreib-Einheit 11 wird über die
Speichersteuervorrichtung 6 in dem externen Speicher 3 gespeichert.
-
3 Betriebs-Zeitsteuerung
der Komponenten
-
Das
Folgende ist eine Beschreibung der Betriebszeitsteuerung der verschiedenen
Komponenten der sequenziellen Verarbeitungseinheit 1003 und
der vorher beschriebenen Routinenverarbeitungseinheit.
-
7 ist
eine grafische Zeitablauf-Darstellung der Betriebszeitsteuerung
der Hauptkomponenten der Decodierverarbeitungseinheit 1002.
Es ist zu beachten, dass die hori zontale Achse in 7 die Zeit
darstellt, wobei t0 ~ t4 verschiedene Punkte (Zeitpunkte) auf der
Zeitachse darstellen.
-
In 7 führt der
Prozessor 7 zuerst die Header-Analyseverarbeitung für einen
Makroblock durch, (die sich aus der Analyse der Header-Informationen
und Berechnung der Bewegungsvektoren zusammensetzt (t0 ~ t2).
-
Damit
schließt
der Prozessor 7 die Analyse der Header-Informationen (t1)
ab und gibt, bevor mit dem Berechnen der Bewegungsvektoren begonnen wird,
eine VLD-Startsignalisierung für
den Dateninhalt des Makroblocks an die Code-Übersetzungseinheit 9 aus.
Nach Beendigung der gesamten Header-Analyseverarbeitung, (das heißt, nach
Beendigung der Berechnung der Bewegungsvektoren), beginnt der Prozessor 7 die
Audio-Decodierverarbeitung (t2). Wenn die Code-Übersetzungseinheit 9 die Decodierung
variabler Länge
für den
Dateninhalt des Makroblocks abgeschlossen hat (t3), setzt der Prozessor 7 die
Audio-Decodierverarbeitung aus und beginnt die Header-Analyseverarbeitung
für den nächsten Makroblock.
-
Beim
Abschließen
der Header-Analyse für einen
ersten Makroblock führt
der Prozessor 7 die Audio-Decodierverarbeitung statt der
Header-Analyse für
den nächsten
Makroblock durch. Dies geschieht aus dem folgenden Grund. Beim Durchführen der
Header-Analyse muss
der Prozessor 7 einen Befehl an die Code-Übersetzungseinheit 9 für Informationen
für den
Header-Teil ausgeben, der durch die VLD-Verarbeitung der Code-Übersetzungseinheit 9 erzeugt
wird. Wenn der Prozessor 7 die Header-Analyse durchführt, muss
die Code-Übersetzungseinheit 9 demzufolge
in der Lage sein, die VLD-Verarbeitung an
dem Header-Teil durchzuführen.
Wenn jedoch der Prozessor die Header-Analyseverarbeitung abgeschlossen
hat, führt
die Code-Übersetzungseinheit 9 die
VLD-Verarbeitung an dem Dateninhalt des Makroblocks durch und ist
somit nicht in der Lage, die VLD-Verarbeitung an dem nächsten Header-Teil durchzuführen.
-
Die
Code-Übersetzungseinheit 9 führt die VLD-Verarbeitung
an dem Makroblock-Header parallel zu der Header-Analyseverarbeitung
durch, die von dem Prozessor 7 durchgeführt wird (t0 ~). Als nächstes empfängt die
Code-Übersetzungseinheit 9 die VLD-Startsignalisierung
von dem Prozessor 7 und beginnt die VLD-Verarbeitung an
dem Dateninhalt des Makroblocks (t1). Beim Abschließen der VLD-Verarbeitung
für den
Daten inhalt des Makroblocks gibt die Code-Übersetzungseinheit 9 ein
Signal VLD Ende an die sequenzielle Verarbeitungseinheit 1003 aus.
Infolgedessen setzt der Prozessor 7 die Audio-Decodierverarbeitung
aus und beginnt mit der Header-Analyseverarbeitung des nächsten Makroblock-Headers
(t3).
-
Die
Pixel-Berechnungseinheit 10 und Pixel-Lese/Schreib-Einheit 11 führen jeweils
die im Folgenden beschriebenen Prozesse nach den Prozessen der Code-Übersetzungseinheit 9 und
der Pixel-Berechnungseinheit 10 in einer Pipeline-Architektur
durch.
-
Wie
durch die vorher beschriebene Prozesszeitsteuerung gezeigt, räumt der
Prozessor 7 der Ausführung
der Header-Analyse Priorität
ein, so dass jede Komponente der Routinenverarbeitungseinheit 1004 die
verschiedenen Arten von Daten, die zum Decodieren eines Makroblocks
erforderlich sind, empfangen kann und den Makroblock ohne Verzögerung verarbeiten
kann. Durch den Betrieb in einer Pipeline-Architektur kann jede
Komponente der Routinenverarbeitungseinheit 1004 mit Hochgeschwindigkeit
verarbeiten. Der Prozessor 7 nutzt das Intervall zwischen
der Header-Analyse eines Makroblocks und der Header-Analyse des
nächsten
Makroblocks zum Durchführen
der Audio-Decodierverarbeitung.
Damit wird die unbelegte Zeit des Prozessors 7 reduziert
und somit die gesamte Verarbeitungseffizienz verbessert.
-
Während der
Header-Analyseverarbeitung gibt der Prozessor 7 eine VLD-Startsignalisierung
für den
Dateninhalt des Makroblocks an die Code-Übersetzungseinheit 9 aus,
wenn die Analyse der Header-Informationen abgeschlossen ist (t1).
Damit wird die VLD-Startzeit
vorverlegt, was bedeutet, dass die Zeit, die zum Decodieren eines
gesamten Makroblocks benötigt
wird, um die Zeit reduziert werden kann, um welche die VLD-Startzeit vorverlegt
wird.
-
4 Betriebssystem OS (Operating
System) der Routinenverarbeitungseinheit
-
Der
Prozessor 7 führt
ein Betriebssystem aus, um die verschiedenen Prozesse mit der vorher beschriebenen
Prozesszeitsteuerung effizient ausführen zu lassen. Das Betriebssystem
erfasst Unterbrechungssignale, wie beispielsweise die Signale, die
am Ende der Header-Analyseverarbeitung oder am Ende der VLD-Verarbeitung
für den
Dateninhalt eines Makroblocks ausgegeben werden, und schaltet basierend
auf diesen Signa len zwischen der Header-Analyse und der Audio-Decodierverarbeitung um.
Wie vorher erwähnt,
wird der Header-Analyseverarbeitung Priorität eingeräumt.
-
8 zeigt
die Software-Konfiguration des Prozessors 7.
-
In 8 ist
der Video-Thread ein Thread, der den Prozessor 7 die Header-Analyseverarbeitung ausführen lässt. Der
Audio-Thread ist ein Thread, der den Prozessor 7 die Audio-Decodierverarbeitung ausführen lässt. Der
Unbelegt-Thread (idle thread) ist ein Thread, der vom Prozessor 7 ausgeführt wird,
um den Prozessor in einen unbelegten Zustand zu versetzen, wenn
die Header-Analyseverarbeitung oder die Audio-Decodierverarbeitung
nicht ausgeführt werden.
-
Das
Betriebssystem ist zwischen dem Prozessor 7 und den Threads
positioniert und verwaltet die Zustände der Threads, die sich aufgrund
von Unterbrechungen ändern.
Jeder Thread befindet sich in einem von drei möglichen Zuständen: einem
Ausführungszustand,
einem Wartezustand und einem Bereitschaftszustand. Auf der Basis
der Änderungen der
Zustände
der Threads weist das Betriebssystem einen der Threads zu dem Prozessor 7 zu,
wobei dem Video-Thread Priorität
eingeräumt
wird. Wenn ein Fehler entweder in der Header-Analyseverarbeitung
oder der Routinenverarbeitung aufgetreten ist, führt das Betriebssystem eine
Fehlerverarbeitung durch.
-
4.1 Unterbrechungssignale
-
9 ist
eine Tabelle, die verschiedene Unterbrechungssignale darstellt,
die von dem Betriebssystem erfasst werden. Die zweite Spalte in 9 zeigt
die verschiedenen Arten von Unterbrechungssignalen. Die dritte Spalte
zeigt die Komponente, die jede spezielle Art von Unterbrechungssignal
ausgibt. Die vierte Spalte zeigt die Ursachen der verschiedenen
Arten von Unterbrechungssignalen. Es ist zu beachten, dass die erste
Spalte dieser Tabelle Identifikationsnummern enthält, die
jeder Art von Unterbrechung zugeordnet worden sind, um die folgende
Erläuterung
zu vereinfachen.
- ➀ Das Signal Header-Analyse
Ende ist ein Signal, das der Prozessor 7 beim Abschließen der
Header-Analyseverarbeitung für
einen Makroblock ausgibt.
- ➁ Das Signal Frame Ende ist ein Signal, das der Prozessor 7 anstatt
des Signals ➀ Header-Analyse Ende beim Abschließen der
Header-Analyseverarbeitung für
den letzten Makroblock in einem Frame ausgibt.
- ➂ Das Signal VLD belegt ist ein Signal, das die Code-Übersetzungseinheit 9 ausgibt.
Normalerweise überträgt die Code-Übersetzungseinheit 9 nach
dem Empfang eines vom Prozessor 7 ausgegebenen Befehls
Daten an den Prozessor 7. Wenn die Code-Übersetzungseinheit 9 die VLD-Verarbeitung
der angeforderten Daten jedoch noch nicht abgeschlossen hat, gibt
sie ein Signal VLD belegt anstelle der Daten aus.
- ➃ Das Signal VLD Ende ist ein Signal, das die Code-Übersetzungseinheit 9 beim
Abschließen
der VLD-Verarbeitung für
einen Makroblock ausgibt.
- ➄ Das vertikale Synchronisationssignal ist ein Signal,
das die Medienverarbeitungsvorrichtung 1000 von außen empfängt. Dieses
Signal wird verwendet, um den Zyklus zum Decodieren der Makroblöcke in einem
Frame mit dem vertikalen Synchronisationssignal abzustimmen.
- ➅ Das Signal VLD bereit ist ein Signal, das die Code-Übersetzungseinheit 9 nach
der Ausgabe des Signals ➂ VLD belegt ausgibt, um anzugeben, dass
sie die VLD-Verarbeitung an den vorliegenden Daten abgeschlossen
hat.
- ➆ Das Signal Audiodaten belegt ist ein Signal, das der
FIFO-Speicher 4 ausgibt, wenn der FIFO-Speicher 4 vom
Prozessor 7 die Anweisung erhalten hat, komprimierte Audiodaten
auszugeben, die entsprechenden komprimierten Audiodaten aber erst
noch vom externen Speicher 3 empfangen muss.
- ➇ Das Signal Audiodaten bereit ist ein Signal, das der
FIFO-Speicher 4 nach der Ausgabe des Signals ➆ Audiodaten
belegt beim Empfangen der entsprechenden komprimierten Audiodaten
von dem externen Speicher 3 ausgibt.
- ➈ Das Signal VLD-Fehler ist ein Signal, das die Code-Übersetzungseinheit 9 ausgibt,
wenn ein Fehler in der VLD-Verarbeitung aufgetreten ist.
- ➉ Das Signal Bewegungskompensationsfehler ist ein Signal.
Das die Pixel-Lese/Schreib-Einheit 11 ausgibt, wenn ein
Fehler in der Bewegungskompensationsverarbeitung auftritt.
-
4.2 Zustandsübergang
von Threads
-
Die
Zustände
von Video-Thread und Audio-Thread ändern sich wie im Folgenden
beschrieben, wenn die in 9 gezeigten Unterbrechungssignale ➀ bis ➇ generiert
werden.
-
4.2.1 Video-Thread
-
10 zeigt
den Zustandsübergang
des Video-Threads. Die Unterbrechungssignale ➀ ~ ➂ und ➃ ~ ➅,
die direkt neben den Pfeilen in 10 eingetragen
sind, zeigen die Unterbrechungssignale, welche die durch die Pfeile
gezeigten Übergange
verursachen. Die Legenden, die als (1) bis (3) im Wartezustands-Oval
angegeben sind, zeigen spezifische Ursachen für Wartezustände. Diese Ursachen (1) bis (3)
entsprechen jeweils Unterbrechungssignalen ➀ ~ ➂ und
Unterbrechungssignalen ➃ ~ ➅.
-
Im
Einzelnen, wenn der Prozessor 7 die Header-Analyse eines
Makroblocks abgeschlossen hat, (was durch das Signal ➀ Header-Analyse
Ende gekennzeichnet wird), wechselt der Video-Thread von dem Ausführungszustand
in den Wartezustand. Das Ende der VLD-Verarbeitung des Dateninhalts
des Makroblocks durch die Code-Übersetzungseinheit 9 wird
abgewartet (Legende (1)), und wenn die VLD-Verarbeitung
beendet ist, (was durch das Signal ➃ VLD Ende gekennzeichnet
wird), bewegt sich der Video-Thread
von dem Wartezustand in den Bereitschaftszustand.
-
Auf
die gleiche Weise, wenn der Prozessor 7 die Header-Analyse
aller Makroblöcke
in einem Frame abgeschlossen hat, (was durch das Signal ➁ Frame
Ende gekennzeichnet wird), wechselt der Video-Thread von dem Ausführungszustand
in den Wartezustand. Die Eingabe eines vertikalen Synchronisationssignals
von außen
wird abgewartet (Legende (2)), und wenn das vertikale Synchronisationssignal
eingegeben ist, (was durch das Signal ➇ Vertikal Ende gekennzeichnet
wird), wechselt der Video-Thread von dem Wartezustand in den Bereitschaftszustand.
-
Wenn
die Code-Übersetzungseinheit 9 ein Signal
VLD belegt ausgibt, (was durch das Unterbrechungssignal ➂ gekennzeichnet
wird), wechselt der Video-Thread von dem Ausführungszustand in den Wartezustand,
und das Ende der VLD-Verarbeitung für die fraglichen Daten wird
abgewartet (Legende (3)). Wenn die Code-Übersetzungseinheit 9 das
Signal VLD bereit ausgibt, (was durch das Unterbrechungssignal ➅ gekennzeichnet
wird), wechselt der Video-Thread von dem Wartezustand in den Bereitschaftszustand.
-
4.2.2 Audio-Thread
-
11 zeigt
den Zustandsübergang
des Audio-Threads.
-
Die
Unterbrechungssignale ➆, ➇, die direkt neben den
Pfeilen in 11 eingetragen sind, zeigen die
Unterbrechungssignale, welche die von den Pfeilen gezeigten Übergänge verursachen.
Das Unterbrechungssignal ➆, der als Legende (4)
gezeigte Wartefaktor und das Unterbrechungssignal ➇ entsprechen
einander.
-
Im
Einzelnen, wenn der FIFO-Speicher 4 ein Signal Audiodaten
belegt ausgibt, (was durch das Unterbrechungssignal ➆ gekennzeichnet
wird), wechselt der Audio-Thread von dem Ausführungszustand in den Wartezustand,
und die Bereitstellung von Daten durch den FIFO-Speicher 4 wird
abgewartet (gezeigt durch die Legende (4)). Wenn der FIFO-Speicher 4 das
Signal Audiodaten bereit ausgibt, (was durch das Unterbrechungssignal ➇ gekennzeichnet
wird), wechselt der Audio-Thread von dem Wartezustand in den Bereitschaftszustand.
-
4.3 Thread-Verarbeitung
-
Das
Betriebssystem weist eine Zustandstabelle auf, in der jeder Thread
zusammen mit seinem aktuellen Zustand angegeben ist. Wenn die Unterbrechungssignale ➀ bis ➇ erfasst
werden, schreibt das Betriebssystem den Inhalt der Zustandstabelle
in Übereinstimmung
mit dem Typ des Unterbrechungssignals um. Auf diese Weise verwaltet
das Betriebssystem den Zustand von jedem Thread.
-
12 zeigt
ein Beispiel der Zustandstabelle. In 12 zeigt
die erste Spalte den Typ des Threads, während die zweite Spalte den
aktuellen Zustand des Threads anzeigt. Wenn als ein Beispiel das
Betriebssystem das Signal ➀ Header-Analyse Ende erfasst, ändert das
Betriebssystem den Zustand des Video-Threads von "Ausführen" in "Warten", wie in 10 gezeigt.
-
Das
Betriebssystem schreibt den Inhalt der Zustandstabelle in Übereinstimmung
mit dem Zustandsübergang
von Zuständen
gemäß den Unterbrechungen
um, wie in den 10 und 11 gezeigt.
-
4.4 Zuweisung zu dem Prozessor
-
Nach
dem Umschreiben des Zustandstabelle auf der Basis von Unterbrechungen
führt das
Betriebssystem den Auswahlprozess durch, der den Thread auswählt, der
dem Prozessor 7 zugewiesen werden soll.
-
13 ist
ein Ablaufdiagramm, das den Auswahlprozess zeigt, in dem das Betriebssystem
einen Thread wählt,
der dem Prozessor 7 zugeordnet werden soll.
-
Zuerst
nimmt das Betriebssystem Bezug auf die Zustandstabelle und beurteilt,
ob sich der Video-Thread in dem Ausführungszustand befindet (Schritt 121).
Ist dies der Fall. schließt
das Betriebssystem den Auswahlprozess ab.
-
Wenn
das Betriebssystem in Schritt 121 feststellt, dass sich
der Video-Thread nicht in dem Ausführungszustand befindet, beurteilt
das Betriebssystem als nächstes,
ob sich der Video-Thread in dem Bereitschaftszustand befindet (Schritt 122).
Wenn dies der Fall ist, ändert
das Betriebssystem den Zustand des Audio-Threads von dem Ausführungszustand
in den Wartezustand und setzt anschließend den Video-Thread in den
Ausführungszustand.
Damit veranlasst das Betriebssystem, dass der Prozessor 7 von
der Verarbeitung eines aktuellen Threads auf die Verarbeitung eines
Video-Threads umschaltet (Schritte 123, 124).
-
Wie
vorher beschrieben, schließt
das Betriebssystem, nachdem es festgestellt hat, dass sich der Video-Thread
in dem Ausführungszustand
befindet, den Auswahlprozess ab. Stellt das Betriebssystem jedoch
fest, dass sich der Video-Thread in dem Bereitschaftszustand befindet,
setzt es den Video-Thread in den Ausführungszustand, um den Video-Thread mit Priorität ausführen zu
lassen.
-
Wird
in Schritt 122 festgestellt, dass sich der Video-Thread
nicht in dem Bereitschaftszustand befindet, was bedeutet, dass sich
der Video-Thread in dem Wartezustand befindet, beurteilt das Betriebssystem,
ob der Audio-Thread sich in dem Bereitschaftszustand befindet (Schritt 125).
-
Wird
in Schritt 125 festgestellt, dass sich der Audio-Thread
in dem Bereitschaftszustand befindet, setzt das Betriebssystem den
Audio-Thread in den Ausführungszustand
(Schritt 126).
-
Wird
in Schritt 125 festgestellt, dass sich der Audio-Thread
nicht in dem Bereitschaftszustand befindet, was bedeutet, dass sich
der Video-Thread und der Audio-Thread in dem Wartezustand befinden, veranlasst
das Betriebssystem, dass der Prozessor 7 ein Programm ausführt, das
als ein Unbelegt-Thread bezeichnet wird, der keinerlei Verarbeitung
enthält (Schritt 127).
-
4.5 Fehlerverarbeitung
-
Beim
Erfassen des Signals ➈ VLD-Fehler oder des Signals ➉ Bewegungskompensationsfehler, die
in 9 dargestellt sind, veranlasst das Betriebssystem,
dass der Prozessor 7 die Verarbeitung des Threads aussetzt,
der gerade verarbeitet wird, und führt eine Fehlerverarbeitung
durch. Bei der Fehlerverarbeitung gibt das Betriebssystem ein Rücksetzsignal
an die Pixel-Berechnungseinheit 10 und die Pixel-Lese/Schreib-Einheit 11 der
Routinenverarbeitungseinheit 1004 aus. Als Folge werden
alle der Daten verworfen, die sich auf die Decodierung des aktuellen
Makroblocks beziehen. Beim Empfangen des Rücksetzsignals, das zu diesem
Zeitpunkt eingegeben wird, führt
die Pixel-Lese/Schreib-Einheit 11 einen Fehlerkompensationsprozess
durch. Hier ist der Fehlerkompensationsprozess ein Prozess, der
einen Makroblock in einer entsprechenden Position in einem vorhergehenden
Frame aus dem externen Speicher 3 ausliest, so dass ein
Makroblock in dem nächsten
Slice decodiert werden kann.
-
Nach
dem Ausgeben des Rücksetzsignals schreibt
das Betriebssystem die Zustandstabelle so um, dass sich der Video-Thread
in dem Bereitschaftszustand befindet. Als Folge setzt das Betriebssystem
dann den Video-Thread in den Ausführungszustand, indem der in 13 dargestellte
Auswahlprozess durchgeführt
wird. Der Prozessor 7 wird dann dem Video-Thread zugewiesen
und führt
somit die Header-Analyse des Makroblocks in dem nächsten Slice
aus.
-
5 Betrieb
-
Das
Folgende ist eine Beschreibung des Betriebs der Medienverarbeitungsvorrichtung 1000,
deren Konstruktion vorher beschrieben wurde.
-
5.1 Betrieb der Eingabe/Ausgabe-Verarbeitungseinheit
-
In
der Eingabe/Ausgabe-Verarbeitungseinheit 1001 führt der
Eingabe/Ausgabe-Prozessor 5 die Steuerung so durch, dass
die MPEG-Ströme,
die asynchron von der Strom-Eingabeeinheit 1 eingegeben
werden, temporär über den
Pufferspeicher 2 und die Speichersteuereinrichtung 6 in
dem externen Speicher 3 gespeichert werden. Die eingegebenen MPEG-Ströme werden
auch in dem FIFO-Speicher 4 über die Speichersteuereinrichtung 6 gespeichert. Hier
liefert der Eingabe/Ausgabe-Prozessor 5 komprimierte Videodaten
und komprimierte Audiodaten in Übereinstimmung
mit der restlichen Datenmenge in dem FIFO-Speicher 4. Auf
diese Weise stellt der Eingabe/Ausgabe-Prozessor 5 sicher,
dass eine konstante Menge von komprimierten Videodaten und komprimierten
Audiodaten in dem FIFO-Speicher 4 vorhanden ist. Dies bedeutet,
dass Überschüsse und Mangel
an Daten in dem FIFO-Speicher 4 vermeiden werden, und dass
sich die Decodier-Verarbeitungseinheit 1002 auf die Decodierverarbeitung
konzentrieren kann, ohne die asynchrone Eingabe und Ausgabe von
Daten berücksichtigen
zu müssen.
Es ist anzumerken, dass der bisher beschriebene Betrieb von der
Eingabe/Ausgabe-Verarbeitungseinheit 1001 unabhängig von
und parallel zu der Verarbeitung der Decodier-Verarbeitungseinheit 1002 durchgeführt wird.
-
5.2 Betrieb der Decodierverarbeitungseinheit
-
Die
Decodier-Verarbeitungseinheit 1002 veranlasst, dass die
von der Code-Übersetzungseinheit 9,
der Pixel-Berechnungseinheit 10 und der Pixel-Lese/Schreib-Einheit 11 decodierten
MPEG-Stromdaten in dem FIFO-Speicher 4 gespeichert werden. 14A bis 16B zeigen
die Decodierverarbeitung ab dem FIFO-Speicher 4 für den Fall,
dass kein Fehler auftritt (Standardbetrieb), für den Fall, dass ein VLD-Fehler
auftritt und den Fall, dass ein Bewegungskompensationsfehler auftritt.
-
5.2.1 Standardbetrieb
-
14A und 14B zeigen,
basierend auf 7, die detaillierten Arbeitsvorgänge, die
von den verschiedenen Komponenten der Decodier-Verarbeitungseinheit
während
eines Decodiervorgangs durchgeführt
werden.
-
Wie
in 14A und 14B gezeigt,
wechselt der Prozessor 7 unter der Steuerung des Betriebssystems
wiederholt zwischen der Header-Analyseverarbeitung, die für den Video-Thread
durchgeführt
wird, und der Audio-Decodierverarbeitung, die für den Audio-Thread durchgeführt wird. Dieses Umschalten
des Betriebs des Prozessors 7 basiert auf dem Signal ➀ Header-Analyse
Ende und dem Signal ➃ VLD Ende.
-
Im
Einzelnen führt
der Prozessor 7 die Header-Analyse eines Makroblocks durch.
Nachdem er die Code-Übersetzungseinheit 9,
die Pixel-Berechnungseinheit 10 und die Pixel-Lese/Schreib-Einheit 11 über das
Analyse-Ergebnis informiert hat, weist der Prozessor 7 die
Code-Übersetzungseinheit 9 an, mit
der VLD-Verarbeitung des Makroblocks zu beginnen. Danach berechnet
der Prozessor 7 die Bewegungsvektoren und gibt das Berechnungsergebnis an
die Pixel-Lese/Schreib-Einheit 11 aus. Abschließend gibt
der Prozessor 7 das Signal ➀ Header-Analyse Ende
aus.
-
Beim
Erfassen des Signals ➀ Header-Analyse Ende führt das
Betriebssystem den in 13 dargestellten Auswahlprozess
durch und setzt den Audio-Thread in den Ausführungszustand. Dies führt dazu,
dass der Prozessor 7 die Audio-Decodierverarbeitung beginnt.
Der Prozessor 7 speichert die Audiodaten, die aus der Decodierung
resultieren, temporär
in dem internen Speicher 8. Die Speichersteuereinrichtung 6 unterwirft
diese Daten dann einer DMA- (Direct Memory Access/Direktspeicherzugriff-) Übertragung
zum externen Speicher 3.
-
Beim
Erfassen des Signals ➃ VLD Ende während der Audio-Decodierverarbeitung
setzt das Betriebssystem den Video-Thread zunächst in den Bereitschaftszustand
und setzt durch Ausführen
des in 13 dargestellten Auswahlprozesses
den Audio-Thread in den Bereitschaftszustand und den Video-Thread
in den Ausführungszustand.
Als Folge beginnt der Prozessor 7 mit der Header-Analyse
des nächsten
Makroblocks.
-
Beim
Empfang einer VLD-Startsignalisierung für einen Makroblock vom Prozessor 7 führt die
Code-Übersetzungseinheit 9 die
VLD-Verarbeitung an dem Dateninhalt des Makroblocks aus und speichert die
decodierten Blöcke
aus dem Makroblock in den Zwischenspeicher 200. Beim Abschließen der VLD-Verarbeitung
gibt die Code-Übersetzungseinheit 9 das
Signal ➃ VLD Ende aus.
-
Parallel
zum Betrieb der Code-Übersetzungseinheit 9 führt die
Pixel-Berechnungseinheit 10 die Umkehrquantisierungs- und
umgekehrte diskrete Kosinustransformations-Verarbeitung an jedem Block
in den Makroblockdaten durch, die in dem Zwischenspeicher 200 gespeichert
sind, und speichert die Ergebnisse in dem Zwischenspeicher 201.
-
Parallel
zu der Verarbeitung der Pixel-Berechnungseinheit 10 schneidet
die Pixel-Lese/Schreib-Einheit 11 einen rechtwinkligen
Bereich aus dem Referenz-Frame in dem externen Speicher 3 aus
und führt
eine Blocksynthese, wie in den 14A und 14B gezeigt, basierend auf den Blockdaten in dem
Zwischenspeicher 210 und den Bewegungsvektoren durch, die
während
der Header-Analyseverarbeitung vom Prozessor 7 empfangen
wurden. Die Pixel-Lese/Schreib-Einheit 11 speichert dann
die Ergebnisse der Blocksynthese über die Speichersteuereinrichtung 6 in
dem externen Speicher 3.
-
Der
vorher genannte Betrieb gilt für
den Fall, dass ein verarbeiteter Makroblock kein übersprungener
Makroblock ist. Wenn ein übersprungener
Makroblock verarbeitet wird, arbeiten weder die Code-Übersetzungseinheit 9 noch
die Pixel-Berechnungseinheit 10, sondern es ist nur die
Pixel-Lese/Schreib-Einheit 11 in Betrieb. Da ein übersprungener
Makroblock das gleiche Bild ist wie ein rechtwinkliger Bereich in
dem Referenz-Frame, kopiert die Pixel-Lese/Schreib-Einheit 11 diesen
als das decodierte Bild in den externen Speicher 3.
-
In
diesem Fall wird das Signal ➃ VLD Ende, das von der Code-Übersetzungseinheit 9 an
den Prozessor 7 ausgegeben wird, gemäß dem folgenden Verfahren generiert.
Ein logisches UND wird für
ein Signal berechnet, das angibt, dass der Prozessor 7 ein
Steuersignal an die Pixel-Lese/Schreib-Einheit 11 gesendet
hat, um die Bewegungskompensation zu beginnen, ein Signal, das angibt,
dass die Bewegungskompensation für
die Pixel-Lese/Schreib-Einheit 11 möglich ist, und ein Signal,
das angibt, dass der aktuelle Makroblock ein übersprungener Makroblock ist.
Danach wird ein logisches ODER als das Ergebnis dieses logischen
UND und eines Signals EOMB (End Of MacroBlock/Makroblock Ende) angenommen,
das an das Ende eines Makroblocks angehängt ist, und das Ergebnis wird
als das Signal ➃ VLD Ende in den Prozessor 7 eingegeben.
-
5.2.2 Betrieb für einen
VLD-Fehler
-
15A und 15B zeigen
den Arbeitsvorgang, der von der Code-Übersetzungseinheit 9 durchgeführt wird,
wenn ein VLD-Fehler aufgetreten ist.
-
Wie
in 15A und 15B gezeigt,
veranlasst das Betriebssystem beim Erfassen eines Signals ➈ VLD-Fehler,
das von der Code-Übersetzungseinheit 9 während der
Header-Analyseverarbeitung des
Prozessors 7 ausgegeben wird, dass die Fehlerverarbeitung
durchgeführt
wird, und gibt somit ein Rücksetzsignal
an die Pixel-Berechnungseinheit 10 und die Pixel-Lese/Schreib-Einheit 11 aus.
Beim Empfang dieses Rücksetzsignals
verwerten die Pixel-Berechnungseinheit 10 und die Pixel-Lese/Schreib-Einheit 11 die
Daten, die sich auf den Makroblock beziehen, der decodiert wird.
Nach der Fehlerverarbeitung setzt das Betriebssystem den Video-Thread
in den Bereitschaftszustand. Dies bedeutet, dass in dem in 13 dargestellten
Auswahlprozess das Betriebssystem den Video-Thread in den Ausführungszustand
setzt und so den Prozessor 7 veranlasst, mit der Header-Analyse
eines Makroblocks in dem nächsten
Slice zu beginnen.
-
Der
Betrieb danach ist der Gleiche wie in 14a und 14B und wird daher nicht beschrieben.
-
5.2.3 Betrieb für einen
Bewegungskompensationsfehler
-
16A und 16B zeigen
den Arbeitsvorgang, der von der Pixel-Lese/Schreib-Einheit 11 durchgeführt wird,
wenn ein Bewegungskompensationsfehler aufgetreten ist.
-
Wie
in 16A und 16B gezeigt,
gibt das Betriebssystem beim Erfassen eines Signals ➉ Bewegungskompensationsfehler,
das von der Pixel-Lese/Schreib-Einheit 11 während der
Audio-Decodierverarbeitung des Prozessors 7 ausgegeben wurde,
ein Rücksetzsignal
an die Code-Übersetzungseinheit 9,
die Pixel-Berechnungseinheit 10 und die Pixel-Lese/Schreib-Einheit 11 aus.
Als ein Ergebnis verwerten die Code-Übersetzungseinheit 9,
die Pixel-Berechnungseinheit 10 und die Pixel-Lese/Schreib-Einheit 11 die
Daten, die sich auf den Makroblock beziehen, der decodiert wird.
Nach dem Beenden der Fehlerverarbeitung setzt das Betriebssystem
den Video-Thread in den Bereitschaftszustand. Dies bedeutet, dass
in dem in 13 dargestellten Auswahlprozess
das Betriebssystem den Video-Thread in den Ausführungszustand setzt und so den
Prozessor 7 veranlasst, mit der Header-Analyseverarbeitung
eines Makroblocks in dem nächsten Slice
zu beginnen.
-
Der
Betrieb danach ist der Gleiche wie in 14a und 14B und wird daher nicht beschrieben.
-
Mit
der vorher beschriebenen Konstruktion teilt die Medienverarbeitungsvorrichtung
der vorliegenden Erfindung die Decodierverarbeitung für komprimierte
Videodaten zwischen der sequenziellen Verarbeitungseinheit 1003 und
der Routinenverarbeitungseinheit 1004 in der Decodier-Verarbeitungseinheit 1002 auf.
Verglichen mit herkömmlichen
Techniken, bei denen die gesamte Decodierung von komprimierten Videodaten
von einem Prozessor durchgeführt
wird, kann die Last der sequenziellen Verarbeitungseinheit 1003 und
der Routinenverarbeitungseinheit 1004 reduziert werden,
wodurch die gesamte Effizienz der Verarbeitung erhöht wird.
-
Die
sequenzielle Verarbeitungseinheit führt die Header-Analyseverarbeitung
für jeden
Makroblock mit Priorität
durch, wodurch Verzögerungen
bei der Decodierverarbeitung der Routinenverarbeitungseinheit, die
basierend auf den Ergebnissen der Header-Ana lyse durchgeführt wird,
vermieden werden. Da für
die Audio-Decodierverarbeitung relativ wenig Verarbeitung erforderlich
ist im Vergleich zur Decodierung von Videodaten, wird diese Audio-Decodierverarbeitung
durch die sequenzielle Verarbeitungseinheit zwischen der Header-Analyseverarbeitung
durchgeführt.
Als Folge kann die Verarbeitung in einer kürzeren Zeit abgeschlossen werden.
Da sich die Verarbeitungseffizienz erhöht, kann die Decodier-Verarbeitungseinheit 1002 die
vollständige
Decodierung von MPEG-Strömen
durchführen,
ohne einen Prozessor mit einem Hochgeschwindigkeits-Betriebstakt
zu verwenden. Wenn, als ein spezielles Beispiel, die vorliegende
Medienverarbeitungsvorrichtung mit einem einzigen LSI-Chip ausgeführt ist, kann
die vollständige
Decodierung von MPEG-Strömen
mit einem Prozessor erreicht werden, dessen Betriebstakt kleiner
ist als 100 MHz. In Tests stellte sich heraus, dass ein 54-MHz-Prozessor
ausreichend war.
-
Es
ist anzumerken, dass die vorliegende Erfindung durch einen normalen
Rechner ausgeführt werden
kann, der eine Standard-CPU (Central Processing Unit/Zentraleinheit)
und einen digitalen Signalprozessor DSP (Digital Signal Processor)
enthält. In
diesem Fall werden ein Header-Analyseprogramm, ein Audio-Decodierprogramm,
ein Betriebssystemprogramm und ein Routinenverarbeitungsprogramm
vorher in dem Hauptspeicher des Arbeitsplatzrechners installiert.
Das Header-Analyseprogramm führt
die Header-Analyse für
jeden Makroblock durch, der in den komprimierten Videodaten enthalten
ist. Das Audio-Decodierprogramm decodiert die komprimierten Audiodaten.
Das Betriebssystemprogramm schaltet zwischen dem Header-Analyseprogramm
und dem Audio-Decodierprogramm um, wobei Ersterem Priorität eingeräumt wird. Das
Routinenverarbeitungsprogramm führt
die Decodierverarbeitung für
komprimierte Videodaten neben der Header-Analyse durch. In einem
solchen Rechner führt
die Standard-CPU das Header-Analyseprogramm, das Audio-Decodierprogramm
und das Betriebssystemprogramm aus, während der digitale Signalprozessor
das Routinenverarbeitungsprogramm ausführt. Dies bedeutet, dass in
der Ausführungsform
die Standard-CPU die sequenzielle Verarbeitung der sequenziellen
Verarbeitungseinheit 1003 ausführt, während der digitale Signalprozessor
die Routinenverarbeitung der Routinenverarbeitungseinheit 1004 ausführt.
-
Bei
der vorher genannten Konfiguration führt die Standard-CPU das Header-Analyseprogramm ohne
Verzögerung
durch und führt
das Audio-Decodierprogramm in der nicht belegten Zeit zwischen aufeinanderfolgenden
Ausführungen
des Header-Analyseprogramms durch. Dies erhöht den Durchsatz der Standard-CPU.
Da die Standard-CPU das Header-Analyseprogramm ohne Verzögerungen durchführt, kann
der digitale Signalprozessor die Analyse-Ergebnisse des Header-Analyseprogramms außerdem schnell
empfangen und beginnt somit rasch mit der Ausführung des Routinenverarbeitungsprogramms.
-
Obwohl
die vorliegende Erfindung vollständig
beispielhaft beschrieben wurde unter Bezugnahme auf die begleitenden
Zeichnungen, ist anzumerken, dass verschiedene Änderungen und Modifizierungen
innerhalb des Umfangs der Ansprüche
im Anhang für
den Fachmann offenkundig sind.