DE19756210C2 - Verfahren und Vorrichtung zum Decodieren eines codierten MPEG-Videodatenstroms - Google Patents
Verfahren und Vorrichtung zum Decodieren eines codierten MPEG-VideodatenstromsInfo
- Publication number
- DE19756210C2 DE19756210C2 DE19756210A DE19756210A DE19756210C2 DE 19756210 C2 DE19756210 C2 DE 19756210C2 DE 19756210 A DE19756210 A DE 19756210A DE 19756210 A DE19756210 A DE 19756210A DE 19756210 C2 DE19756210 C2 DE 19756210C2
- Authority
- DE
- Germany
- Prior art keywords
- video
- memory
- hardware
- task
- stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Revoked
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Description
Die Erfindung betrifft die Video-Dekompression und speziel
ler eine neue Vorrichtung und ein Verfahren zum Durchführen
einer MPEG-Video-Decodierung unter optimaler Ausnutzung des
verfügbaren Systemspeichers und der Rechenresourcen.
Das CCITT/ISO-Komitee (CCITT = Comité Consultatif Interna
tional Télégraphique et Téléphonique = Internationales Be
ratungsorgan der Postgesellschaften für den Fernmeldebe
reich; ISO = International Standard Organisation = Inter
nationales Normungsinstitut) hat eine Gruppe von Kompressions-
und Dekompressionsalgorithmen für stillstehende und
bewegte digitale Videosignale normiert. Diese Normen umfas
sen die Kompressionsverfahren JPEG, MPEG und H.261. Diese
Normen werden verbreitet bei Videokonferenzen, CD-ROM oder
DVD-ROM-gestützten interaktiven Videos für die Erziehung
und Unterhaltung, Video- oder Informationskiosks, Video-
auf-Anforderung-Anwendungen (VOD-Anwendungen; VOD = video
on demand), Satelliten. - Videoübertragungsanwendungen und
für viele andere Anwendungen genutzt, welche die Übertra
gung bewegter digitaler Bilder erfordern. Diese Normen ver
wenden mittels Transformationscodes komprimierte Formate,
einschließlich der diskreten Cosinustransformation (DCT)
und eines Zwischenbild-Prädiktionscode-Formats (interframe
predictive code format). Bewegungsausgleichs-Algorithmen
(MC-Algorithmen; MC = motion compensation) werden in Ver
bindung mit dem DCT-Format und anderen hybriden komprimier
ten Formaten verwendet.
Die MPEG-Norm wurde von der Moving Picture Coding Experts
Group (MPEG) entworfen, die innerhalb des Rahmenwerks des
Joint ISO/IEC Technical Committee (JCCI) on Information
Technology arbeitet. Der Entwurf sieht eine Norm für die
kodierte Darstellung von bewegten Bildern, Ton und deren
Kombination vor.
Fig. 1 zeigt ein Blockdiagramm eines üblichen Rechnersy
stems des Standes der Technik, das sich für die Decodierung
von MPEG-Videodaten eignet. Das Rechnersystem 10 umfaßt
übliche Systemkomponenten, wie einen Systembus 11, eine CPU
12, eine Kernlogik 13, einen Systemspeicher 14 und eine
Festplatte 16. Das Rechnersystem 10 umfaßt auch mehrere
Elemente, die sich speziell für Videofunktionen eignen,
einschließlich eines DVD-ROM-Laufwerks 15, das CD-ROM oder
DVD-ROM liest, eines MPEG-Decoders 17 und seines zugehöri
gen lokalen DRAM-Speichers 17A, einer 2D/3D-Graphiksteuer
einrichtung und ihres zugehörigen lokalen Einzelbildpuffers
DRAM 18A. Falls erwünscht, umfaßt das Rechnersystem 10 auch
eine Fernsehschnittstelle 19 zum Abspielen eines Videos auf
einem Fernsehgerät und einen RGB-Ausgangsbus 20 zum Vorse
hen von Videoausgangssignalen für einen Monitor. Diese Vi
deoausgangssignale auf dem Bus 20 sind entweder MPEG-Daten
ströme von dem DVD-ROM-Laufwerk 15 oder übliche Computer
graphik, die von der Graphiksteuereinrichtung 18 erzeugt
wird, oder beides. Die Graphiksteuereinrichtung 18 sieht
auch eine 2D/3D-Graphikfunktion sowie eine Videoskalierung
und eine Farbraum-Konvertierung vor. Zusätzlich sieht die
Graphiksteuereinrichtung 18 über den Bus 20 eine Schnitt
stelle zu einem RGB-Monitor oder einem Fernsehgerät vor, um
Videodaten von dem Rechnersystem 10 anzuzeigen.
In Fig. 1 führt der Decoder 17 eine Dekompression/Decodie
rung des MPEG-Videodatenstroms vor, so daß das Rechnersy
stem 10 Multimedia-Anwendungen unter Verwendung der Video
kompressionsnormen MPEG 1 oder MPEG 2 abspielen kann. Die
MPEG-Videodecodierungsoperation umfaßt die folgenden Auf
gaben (tasks): Parsing (Syntaxanalyse) des komprimierten
Videostroms mittels variabler Längendecodierung (VLD), in
verse Quantisierung (IQ), inverse diskrete Cosinustransfor
mation (IDCT), Bewegungskompensation (MC) und Blockrekon
struktion (BR). Da die Videodecodierungsoperation rechen
intensive Signalverarbeitungsoperationen mit sich bringt,
ist die in dem MPEG-Decoder 17 vorhandene Hardwarelogik
komplex und demzufolge teuer. Ein weiterer Nachteil des
Aufbaus des Standes der Technik besteht darin, daß der
MPEG-Decoder 17 Rechen- und Speicherresourcen nicht nutzt,
die von den Systemkomponenten vorgesehen werden, wie der
CPU 12, dem Systemspeicher 14 oder der Graphiksteuerein
richtung und ihrem zugehörigen Speicher 18a. Dies führt zu
einer ineffizienten Nutzung der verfügbaren Systemresour
cen.
Aus der US 5,801,775 ist ein Verfahren zum Komprimieren von bewegten Bildern bekannt,
das einen Cache Speicher zum Speichern von Codierbefehlen verwendet. Das Verfahren zum
Komprimieren der Bilder wird in eine Vielzahl einzelner Verfahrensschritte und eine Vielzahl
einzelner Softwareprogramme für die einzelnen Verfahrensschritte unterteilt, wobei die ein
zelnen Softwareprogramme in einem Speicher gespeichert werden.
Im Hinblick auf diesen Stand der Technik ist es eine Aufgabe der vorliegenden Erfindung,
eine Vorrichtung und ein Verfahren zum Ausführen einer MPEG-Videokompression auf effi
ziente Weise vorzusehen. Es ist auch eine Aufgabe der vorliegenden Erfindung, eine Video
kompressionseinrichtung und ein Verfahren vorzusehen, die nicht nur eine effiziente MPEG-
Videodecodierung durchführen sondern die auch in Bezug auf die Architektur einfacher und
billiger sind als Videodecoder des Standes der Technik. Es ist eine weitere Aufgaben der vor
liegenden Erfindung, eine Vorrichtung und ein Verfahren zum Ausführen einer Videodeco
dierung vorzusehen, welche die Ausnutzung der Systemresourcen, einschließlich der Rechen-
und Speicher-Systemresourcen, optimieren.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und eine Vorrichtung gemäß
Anspruch 6 gelöst, die Ansprüche 2 bis 5 betreffen besonders vorteilhafte Ausführungsformen
des erfindungsgemäßen Verfahrens, während die Ansprüche 7 bis 11 besonders vorteilhafte
Ausführungsformen der erfindungsgemäßen Vorrichtung betreffen.
Die vorliegende Erfindung erreicht diese Ziele und Aufgaben
mit einer neuen Einrichtung und einem Verfahren, welche die
MPEG-Videodekodieraufgaben in Softwareaufgaben, die von
einer CPU ausgeführt werden, und Hardwareaufgaben, die von
einer hierfür vorgesehenen Videohardware ausgeführt werden,
aufteilen. Die Softwareaufgaben entsprechen den Aufgaben,
die keine umfassenden Speicher- oder Rechenresourcen benö
tigen. Andererseits werden solche Aufgaben, die rechen- und
speicherintensive Operationen mit sich bringen, als Hardwa
re realisiert.
Die Softwareaufgaben verarbeiten den eingehenden kodierten
MPEG-Videodatenstrom vor und schreiben die vorverarbeitete
Information für jedes Einzelbild oder Vollbild (frame) in
einen Symbolstrom, der im Systemspeicher gespeichert wird.
Eine spezielle (dedicated) Videohardware gewinnt die Daten
des Symbolstroms aus dem Systemspeicher wieder und vervoll
ständigt die Verarbeitung des Videobildes. Die Synchroni
sierung zwischen den von der CPU ausgeführten Softwareauf
gaben und den mit der speziellen Videohardware realisierten
Hardwareaufgaben wird mithilfe verschiedener Datenstruktu
ren, mittels von der Software verwalteten Steuerstrukturen
und mit Gerätetreibern erreicht, die der speziellen Videohardware
zugeordnet sind.
Die Erfindung ist im folgenden anhand bevorzugter Ausfüh
rungsformen mit Bezug auf die Zeichnungen näher erläutert.
In den Figuren zeigt:
Fig. 1 ein Blockdiagramm eines üblichen Rechensy
stems des Standes der Technik, das sich zum
Dekodieren von MPEG-Videodaten eignet;
Fig. 2 zeigt ein Blockdiagramm einer Ausführungs
form der vorliegenden Erfindung, die sich
zum Dekodieren von MPEG-Videodaten eignet;
Fig. 3 zeigt ein Blockdiagramm, das die Aufgaben
umreißt, die bei der Decodierung eines kom
primierten MPEG-Datenstroms auftreten;
Fig. 4 gibt eine Technik zum Aufteilen der Videode
kodieraufgaben zwischen der Software, die
auf der CPU läuft, und der speziellen Video
hardware wieder;
Fig. 5 gibt eine alternative Technik zum Aufteilen
der Videodekodieraufgaben zwischen der Soft
ware, die auf der CPU läuft, und der spe
ziellen Videohardware wieder;
Fig. 6 zeigt eine Ausführungsform der vorliegenden
Erfindung, wobei die Datenstrukturen und
Software/Hardware-Komponenten abgebildet
sind, die zum Koordinieren der Kommunikation
zwischen der speziellen Videohardware und
der Software notwendig sind, um die MPEG-
Videodecodierung durchzuführen;
Fig. 7 zeigt eine Ausführungsform der vorliegenden
Erfindung, bei der ein Aufgabenzeiger-FIFO
von der speziellen Videohardware bedient
wird;
Fig. 8a zeigt ein Flußdiagramm der verschiedenen
Softwaretransaktionen, die bei der Decodierung
und Anzeige von MPEG-Videodaten auftre
ten;
Fig. 8b zeigt ein Flußdiagramm der Abfolge der Ope
rationen, die von der Aufgabensteuerung der
speziellen Videohardware ausgeführt werden;
Fig. 9 zeigt die Struktur einer Ausführungsform des
Bildpuffers zum Speichern von vier Vollbil
dern für eine PAL/NTSC-Bildauflösung;
Fig. 10 zeigt eine Ausführungsform der Bildpuffer
struktur zum Speichern von 3,5 Vollbildern
für die PAL/NTSC-Bildauflösung gemäß der
Lehre der vorliegenden Erfindung;
Fig. 11 zeigt ein Bildpuffer-Speicherschema zum De
kodieren von PAL-Bildern mit nur 2 MB RAM;
Fig. 12 zeigt ein anderes Bildpuffer-Speicherschema
zum Dekodieren von PAL-Bildern mit nur 2 MB
RAM;
Fig. 13 zeigt eine Ausführungsform der vorliegenden
Erfindung, bei der die spezielle Videohard
ware ein Teil der Graphiksteuereinrichtung
ist;
Fig. 14 zeigt ein Daten-Flußdiagramm für die von der
Hardware ausgeführten Dekodier-Operationen;
Fig. 15 zeigt Luminanzblock-Operationen, die von
einer Ausführungsform der vorliegenden Er
findung ausgeführt werden;
Fig. 16 zeigt Luminanzblock-Operationen, die von
einer Ausführungsform der vorliegenden Er
findung ausgeführt werden; und
Fig. 17 zeigt ein alternatives Datenablauf-Diagramm
der von der Hardware ausgeführten Dekodier
operationen.
Die vorliegende Erfindung lehrt eine neue Video-Dekompres
sions-Architektur und ein Verfahren, die eine kostengünsti
ge Realisierung eines Systems zum Abspielen von komprimierten
Videos ermöglichen. Die vorliegende Erfindung sieht
eine effiziente und kostengünstige Architektur und ein Ver
fahren zum Abspielen von Videodatenströmen der Normen MPEG
1 und MPEG 2 in einem Multimedia-Rechnersystem vor, das DVD
(digital versatile disk), DVB (digital versatile band),
Video-CD und anderen Anwendungen unterstützt, welche die
MPEG-Videokompressionsnorm verwenden.
Fig. 2 ist ein Blockdiagramm einer Ausführungsform eines
Rechnersystems, das gemäß den Lehren der vorliegenden Er
findung aufgebaut ist. Anders als das Videodekodiersystem
des Standes der Technik, das in Fig. 1 gezeigt ist, und
einen speziellen MPEG-Decoder 17 verwendet, wird bei der
vorliegenden Erfindung die Videodekodier-Aufgabe, die bis
her von dem MPEG-Decoder 17 durchgeführt wurde, in eine
Softwareaufgabe 112a, die auf der CPU 112 läuft, und eine
Aufgabe, die von einer neuen speziellen Videohardware 118b
ausgeführt wird, aufgeteilt. Bei einer Ausführungsform ist
die spezielle Videohardware 118b, wie in Fig. 2 gezeigt, in
eine Graphiksteuereinrichtung 118 eingebettet.
Die neue Architektur und das Verfahren gemäß der Erfindung
bieten mehrere Vorteile und Verbesserungen im Vergleich zu
den Videodecodern des Standes der Technik. Da die Dekodier
aufgabe teilweise durch die Software 112a realisiert wird,
die auf der CPU 112 läuft, reduziert sich die Komplexität
der speziellen Videohardware 118b erheblich, die zum
Vollenden der Videodekodieraufgabe notwendig ist. Die redu
zierte Komplexität führt zu einer kleineren physischen Grö
ße der Decoderhardware, wodurch Raum und Kosten gespart
werden.
Wenn gewünscht, kann die spezielle Videohardware 118b in
der Graphiksteuereinrichtung 118 eingebettet werden, wie in
Fig. 1 gezeigt, wodurch sich in erheblichem Umfang der
Platzbedarf für die integrierte Schaltung verringert. Diese
Konfiguration ermöglicht auch einen effizienten Einsatz der
vorhandenen Systemressourcen, weil die Videodekodierhardwa
re die Speicher-Steuereinrichtung und die PCI-Busschnitt
stellen mit dem Graphiksteuerchip 118 gemeinsam benutzt.
Anders als bei den Systemen des Standes der Technik, bei
denen der MPEG-Decoder 17 seinen eigenen reservierten lo
kalen Speicher 17A zum Dekodieren von Videobildern benö
tigt, wird ferner bei der vorliegenden Erfindung kein zu
sätzlicher Speicher benötigt, weil der zum Dekodieren der
Videobilder notwendige Speicher zugleich der Bildpuffer
118a der Graphiksteuereinrichtung ist. Dies führt direkt zu
Kosteneinsparungen und resultiert in einer effizienteren
Ausnutzung der vorhandenen Speicherresourcen, wodurch sich
die Komplexität und die Kosten des Gesamtsystems senken.
Ferner führt die Aufteilung der Dekodieraufgabe zwischen
der CPU 112 und der speziellen Videohardware 118b zu einer
effizienten Nutzung vorhandener Rechenresourcen des Sytems.
Fig. 3 zeigt die verschiedenen Aufgaben, die bei der Deco
dierung eines komprimierten MPEG-Signaldatenstrom beteiligt
sind. Der eingehende komprimierte MPEG-Datenstrom besteht
aud einer Videokomponente und einer Audiokomponente. Der
gemultiplexte Datenstrom wird zunächst in seine Audio- und
seine Video-Datenstromkomponente zerlegt, wie durch den
Block 130 in Fig. 3 gezeigt. Der Audio-Datenstrom wird dann
einer Tondecodierung unterzogen (Block 132) und dann an
eine Tonwiedergabe-Soundkarte (Block 134) für die Wieder
gabe weitergeleitet. Mit dem Video-Datenstrom wird eine
Bilddecodierung durchgeführt (Block 136), und er wird dann
an eine Videowiedergabe-Anzeigevorrichtung (Block 138) für
die Wiedergabe weitergeleitet. Die Videodecodierung (Block
136) umfaßt die folgenden Aufgaben: Parsing (Syntaxanalyse)
des komprimierten Stromes durch variable Längendecodierung
(VLD), Ausführen einer inversen Quantisierung (IQ),
Ausführen einer inversen diskreten Cosinustransformation
(IDCT), Ausführen einer Bewegungskompensation (MC) und Blo
ckrekonstruktion (BR).
Gemäß der vorliegenden Erfindung besteht der erste Schritt
zur Aufteilung der Videodecodierung zwischen den Software
aufgaben und den von der neuen speziellen Hardware 118b
ausgeführten Aufgabe darin, Aufgaben zu identifizieren,
welche rechenintensive und speicherintensive Operationen
benötigen, sowie Aufgaben, die keine rechenintensiven oder
speicherintensiven Operationen benötigen. Die Videodeko
dieraufgaben, die keine intensiven Speicher- oder Rechen
operationen benötigen, werden von der Software ausgeführt,
die auf der CPU 112 läuft, während rechen/speicherintensive
Aufgabe der speziellen Videohardware 118b zur Ausführung
zugewiesen werden. Die Aufteilung der Videodecodierung in
Software- und Hardwareaufgaben ist somit abhängig von der
Leistungsfähigkeit der CPU 112, der Bandbreite des System
speichers 14 und der verfügbaren Bandbreite auf dem System
bus 11, der z. B. ein PCI- oder ein AGP-Bus ist.
Die Fig. 4 und 5 zeigen zwei mögliche Ausführungsformen,
für die Aufteilung, basierend auf der CPU-Leistung. Bei der
in Fig. 4 abgebildeten Ausführungsform umfassen die von der
CPU 112 ausgeführten Softwareaufgaben das Parsing des kom
primierten Videodatenstroms mittels variabler Längendeco
dierung (VLD), die Durchführung der inversen Quantisierung
der dekodierten Koeffizienten (IQ) und die Durchführung der
inversen diskreten Cosinustransformation (IDCT). Die spei
cherintensiven Aufgaben des Bewegungsausgleichs (MC) und
der Block- oder Bildrekonstruktion (BR) werden von der spe
ziellen Videohardware 118b ausgeführt.
Bei der in Fig. 5 gezeigten Ausführungsform wird jedoch die
Durchführung der inversen diskreten Cosinustransformation
(IDCT) als eine rechen-/speicherintensive Aufgabe klassifi
ziert und daher in der speziellen Videohardware 118b ausge
führt. Wie oben gesagt, hängt die Aufteilung einer speziel
len Videodekodieroperation in eine Softwareaufgabe oder
eine Hardwareaufgabe von verschiedenen Faktoren ab, wie der
Leistungsfähigkeit der CPU 112, der Bandbreite des System
speichers 14 und der verfügbaren Bandbreite auf dem System
bus 11. Demzufolge kann bei einer speziellen Ausführungs
form, wie in Fig. 5 gezeigt, die Ausführung der inversen
diskreten Cosinustransformation (IDCT) als eine rechen-
/speicherintensive Aufgabe klassifiziert werden, so daß sie
von der speziellen Videohardware 118b ausgeführt wird.
Die in Fig. 4 gezeigte Ausführungsform führt zu einer stär
keren Nutzung der CPU als die Ausführungsform der Fig. 5.
Andererseits ist die Ausführungsform der Fig. 5 günstiger
für Systeme, die eine geringere Rechenbelastung der CPU
bevorzugen. Für den Fachmann sollte klar sein, daß die Auf
teilung der Videodekodieraufgabe in Software- und Hardware
aufgaben nach Bedarf zugeschnitten werden kann, um sie an
die Rechen- und Speichervermögen eines speziellen Rechner
systems anzupassen.
Bei einer Ausführungsform verarbeiten die Softwareaufgaben,
die auf der CPU 112 laufen, den komprimierten Videodaten
strom bildweise. Die CPU 112 verarbeitet jedes Vollbild
teilweise und formatiert die teilweise verarbeiteten Ein
zelbilddaten als eine Gruppe von Symbolen fester Länge, die
"Symbolstrom" genannt wird. Der Symbolstrom wird in einem
Puffer in dem Systemspeicher 14 (s. Fig. 2) gespeichert, wo
die spezielle Videohardware 118b für die weitere Verarbei
tung auf ihn zugreifen kann. Während die CPU 112 das näch
ste vorhandene Videobild verarbeitet, greift die spezielle
Videohardware 118b in einen Bus-Mastermodus (ohne Intervention
der CPU) auf den Systemspeicher 14 zu, um den für das
zuvor verarbeitete Bild gespeicherten Symbolstrom abzuru
fen. Die spezielle Videohardware 118b interpretiert den von
der CPU 112 erzeugten Symbolstrom und berechnet das deko
dierte Videobild.
Wie oben beschrieben, greift die spezielle Videohardware
118b auf den Systemspeicher 14 über den Bus 11 nur zum Wie
dergewinnen der Symbolstrominformation zu, die von der CPU
112 in dem Puffer des Systemspeichers gespeichert wurde.
Alle nachfolgenden Speicherzugriffe, die für die Bewegungs
kompensation (MC) benötigt werden, welche von der speziel
len Videohardware 118 ausgeführt werden, werden auf den
Einzelbildpuffer 118a gemacht, der dezentral für die spe
zielle Videohardware 118b vorhanden ist. Die Aufteilung
oder Partitionierung gemäß der vorliegenden Erfindung redu
ziert somit nicht nur die Rechenbelastung der CPU 112, son
dern sie senkt auch in erheblichem Umfang die Bandbreite
der Verwendung des Systemspeichers 14.
Die Synchronisierung zwischen den Decodieraufgaben der
Hardware und der Software wird mit Hilfe einer Datenstruk
tur erreicht, die von der Software zusammengestellt (assem
bliert) und in den Systemspeicher 14 geschrieben wird. Nach
der Verarbeitung eines Videobildes bereitet die Software,
welche auf der CPU 112 läuft, eine Datenstruktur vor, die
Information speichert, welche das teilweise verarbeitete
Videobild betrifft. Ein Zeiger zu dieser Datenstruktur wird
in ein Aufgabenzeiger-FIFO geschrieben. Das Aufgabenzeiger-
FIFO, das entweder in der speziellen Videohardware 118b
oder im Systemspeicher 14 liegt, bewahrt einen Überblick
über die Videobilder, die von der CPU 112 teilweise verar
beitet wurden und die für das Decodieren durch die speziel
le Videohardware 118b bereit sind. Die auf der CPU 112 lau
fende Software fährt dann mit der Verarbeitung des nächsten
Videobildes fort. Die spezielle Videohardware 118b durchläuft
das Aufgabenzeiger-FIFO und gewinnt den Symbolstrom
für das teilweise verarbeitete Videobild wieder, ohne daß
die CPU hieran irgendwie beteiligt wäre. Die spezielle Vi
deohardware 118b schließt dann die Decodierung des teilwei
se verarbeiteten Videobildes ab. Wenn die spezielle Video
hardware 118b die Decodierung und das Anzeigen des Bildes
beendet, das ein Vollbild (frame) oder ein Satz aus Halb
bildern (field) sein kann, sendet sie eine Unterbrechung
(Interrupt) zu der CPU 112. Die Software, welche auf der
CPU 112 läuft, verwendet diese Unterbrechung zum Aktuali
sieren der momentanen Aufgabeneinträge in dem Aufgabenzei
ger-FIFO, und sie macht auch eine Aufzeichnung des zuletzt
angezeigten Bildes. Im folgenden ist die Kommunikation zwi
schen der Software und der Hardware mit weiteren Einzelhei
ten beschrieben.
Wie bereits kurz erläutert wurde, verarbeitet die auf der
CPU 112 laufende Software den eingehenden komprimierten
MPEG-Videostrom und schreibt den teilweise verarbeiteten
Symbolstrom in den Systemspeicher 14. Die spezielle Video
hardware 118b greift dann auf den Symbolstrom zu, um den
Decodierprozeß abzuschließen. Fig. 6 zeigt eine Ausfüh
rungsform der Datenstrukturen und der Software/Hardware-
Komponenten, die für die Koordinierung der Kommunikation
zwischen der speziellen Videohardware 118b und der auf der
CPU 112 laufenden Software notwendig ist, um die MPEG-Vi
deodecodierung durchzuführen. Wie bei der in Fig. 6 gezeig
ten Ausführungsform, umfassen die Hauptkomponenten die auf
der CPU 112 laufende Software, die Software-Client 140 ge
nannt wird, die spezielle Videohardware 118b und eine Hard
ware-Abstraktionsschicht (HAL = Hardware Abstraction Layer)
142, die als ein Gerätetreiber für die spezielle Videohard
ware 118b dient und auf der CPU 112 läuft.
Der Software-Client 140 entspricht der auf der CPU 112 lau
fenden Software und ist verantwortlich für die teilweise
Decodierung des eingehenden MPEG-Videodatenstroms. Wie be
reits beschrieben, führt der Software-Client 140 bei einer
Ausführungsform (die in Fig. 5 gezeigt ist) das Parsing
(Syntaxanalyse) des komprimierten Videobitstroms und andere
Videodecodieraufgaben durch, wie die variable Längendeco
dierung (VLD) und die inverse Quantisierung (IQ), während
bei einer anderen Ausführungsform der Software-Client auch
die inverse diskrete Cosinustransformation (IDCT) durch
führt (siehe Fig. 4). Nach der teilweisen Verarbeitung des
aktuellen Videobildes formatiert der Software-Client 140
die teilweise verarbeiteten Daten in der Form eines Symbol
stroms 144a, 144b. Bei einer Ausführungsform weist die HAL
142 den notwendigen Pufferbereich zu, der zum Speichern des
Symbolstroms im Systemspeicher 14 benötigt wird. Der Sym
bolstrom wird in den zugewiesenen Pufferbereich, im System
speicher 14 in die Puffer 114a, 144b geschrieben. Der Soft
ware-Client 140 schreibt auch Steuerinformation für die An
zeige- und Decodieraufgaben in ein Softwareaufgabendefini
tions-Paket (STDP = Software Task Definition Packet). Das
STDP wird in Puffern 146a, 146b gespeichert, die von der
HAL 142 in dem Systemspeicher 14 zugewiesen wurden. Die
spezielle Videohardware 118b verwendet den Symbolstrom zu
sammen mit der in dem STDP gespeicherten Steuerinformation
zum Vervollständigen der Decodierung und Anzeige des MPEG-
Videobildes. Bei einer Ausführungsform spezifiziert das
STDP Quell- und Zielpufferindizes, Anzeigepufferindizes,
die Anzeigedauer und die VSYNC-Polarität für Zeilensprung-
Anzeigeeinrichtung. Ein virtueller Adressenzeiger zu dem
Symbolstrom und die Länge des Symbolstrompuffers werden
ebenfalls in das STDP geschrieben. IDCT- und Bewegungsvek
torinformation wird in dem Symbolstrom gespeichert. Es ist
zu beachten, daß auch andere, für den Fachmann offensicht
liche Umsetzungen im Bereich der Erfindung liegen.
Die HAL 142 dient als ein Gerätetreiber für die spezielle
Videohardware 118b. Die HAL 142 empfängt Anzeige- und Deco
dieraufgaben, die zeitlich von dem Software-Client 140 or
ganisiert werden, und macht diese für die Ausführung durch
die spezielle Videohardware 118b verfügbar. Die von der HAL
142 ausgeführten Aufgaben umfassen das Vorsehen eines tem
porären Speicherbereichs 148 für den Software-Client 140,
das Betreiben eines Aufgaben-FIFO und das Vorsehen von Sei
tentabellen für die physische Adressenabbildung der Symbol
strompuffer. Die HAL 142 verfolgt auch die vollständige
Ausführung bzw. Fertigstellung der Aufgaben, die durch eine
Unterbrechung signalisiert wird, die von der speziellen
Videohardware 118b erzeugt wird. Zusätzlich konvertiert die
HAL 142 das in dem Systemspeicher 14 gespeicherte STDP in
ein Hardwareaufgaben-Definitionspaket (HTDP = Hardware Task
Definition Packet) abhängig von der spezifischen Hardware
konfiguration des speziellen Systems. Bei einer Ausfüh
rungsform wird die Umwandlung von dem STDP in das HTDP wäh
rend der "Freigabe"-Operation durchgeführt.
Die HAL 142 verwendet die "Erfassungs"- und "Freigabe"-
Funktionsaufrufe zum Koordinieren ihrer Aktivitäten mit dem
Software-Client 140. Bei einem "Erfassungs"-Funktionsaufruf
weist die HAL 142 den Speicherpuffer für das STDP zu und
gibt einen Zeiger (LPDataPtr) 150 zu dem STDP an den Soft
ware-Client 140 zurück. Der Software-Client 140 führt eine
Vorverarbeitung des komprimierten MPEG-Videodatenstroms
durch und füllt das STDP-Datenpaket. Bei Beendigung der
Vorverarbeitungsaufgabe wird die "Freigabe"-Funktion aufge
rufen. Wenn die "Freigabe"-Funktion aufgerufen wird, über
setzt die HAL 142 die STDP- in eine HTDP-Struktur und ak
tualisiert den Zählwert des Aufgaben-FIFO.
Die HAL 142 weist einen Speicher für eine Warteschlange-Da
tenstruktur zu und wartet die Warteschlange-Datenstruktur,
die Aufgaben-FIFO 150 genannt wird. Die HAL 142 erzeugt das
Aufgaben-FIFO 150 während der Initialisierungsphase. Anders
als das STDP ist das Aufgaben-FIFO 150 eine statische Da
tenstruktur, und bei einer Ausführungsform ist es 4 KB lang
und beginnt bei einer Seitengrenze. Bei einer Ausführungs
form ist das von der HAL 142 erzeugte Aufgaben-FIFO 150
wenigstens acht Einträge tief. Jeder Eintrag des Aufgaben-
FIFO 150 enthält ein HDTP 154, das von der HAL 142 aufge
baut wird. Wie bereits beschrieben, leitet die HAL 142 das
HTDP 154 aus der Information ab, die von dem Software-Cli
ent 140 in dem STDP geliefert wird. Die HAL 142 fügt Ein
träge zum Aufgaben-FIFO 150 hinzu ("push"), wenn der Soft
ware-Client 140 einen "Freigabe"-Funktionsaufruf ausgibt.
Die HAL 142 entfernt ("pop") Einträge aus dem Aufgaben-FIFO
150, wenn die spezielle Videohardware 118b eine Aufgaben
ende-Unterbrechung signalisiert. Zwischen den von dem Soft
ware-Client 140 ausgeführten Aufgaben und der Anzahl der
Einträge in dem Aufgaben-FIFO 150 besteht eine Eins-zu-Eins-
Entsprechung. Wenn keine Eins-zu-Eins-Entsprechung beibe
halten wird, ist die HAL 142 dafür verantwortlich, die Be
endigung einer von dem Software-Client 140 programmierten
Aufgabe präzise zu verfolgen. Die Anzahl der Einträge in
dem Aufgaben-FIFO 150 gibt die Anzahl der von dem Software-
Client 140 ausgegebenen Aufgaben wieder, welche von der
speziellen Videohardware 118b ausgeführt werden sollen.
Wie oben gesagt, ist die HAL 142 für die Verarbeitung der
STDPs verantwortlich, um HTDPs 154 zu erzeugen, welche in
das Aufgaben-FIFO 150 eingegeben werden. Die HAL 142 ordnet
Steuerdaten in dem HTDP 154 an, so daß sie direkt in die
Register der speziellen Videohardware 118b geladen werden
können. Die HAL 142 erzeugt auch Seitentabellen für die
physische Abbildung des Symbolstrompuffers, und schreibt
Zeiger, die zu den Seitentabellen weisen, in die HTDPs. Die
HAL 142 benachrichtigt die spezielle Videohardware 118b
darüber, daß eine neue Aufgabe ansteht, indem sie den Index
des HTDP 154 in das Aufgabenzeiger-FIFO 156 schreibt, das
von der speziellen Videohardware 118b gewartet wird oder in
dem Systemspeicher 14 gespeichert ist.
Die HAL 142 bestimmt auch gestützt auf die Größe des Bild
puffers 118a (siehe Fig. 2) das geeignete Decodier-Spei
cherschema. Die HAL 142 ist dafür verantwortlich, gestützt
auf die MPEG-Strom-Bildrate und die Anzeigeeinrichtung die
richtige Bildrate und Anzeigerate zu ermitteln und die
zeitliche Abfolge der Anzeigeaufgabe, einschließlich der
Bildwiederholung, festzulegen, um eine gleichmäßige Anzeige
bei dem zweifachen oder dreifachen der MPEG-Bildrate zu
ermöglichen. Die HAL 142 überwacht auch die Aufgabenende-
Unterbrechung von der speziellen Videohardware 118b, und
sie empfängt den entsprechenden Eintrag aus dem Aufgaben-
FIFO 150.
Die Aufgabendatenstruktur ist eine Datenstruktur umfassend
das HTDP 154 und den Symbolstrom 144a, 144b. Sie repräsen
tiert die Informationseinheit, die für jede auszuführende
Aufgabe in die spezielle Videohardware 118b geladen wird.
Das HTDP 154 ist abhängig von der Hardwarerealisierung, und
bei einer Ausführungsform ist es 4 DWORDS (32 Byte) lang.
Das HTDP 154 enthält Information, die für die Codier- und
Anzeigeaufgaben benötigt und in die Register der speziellen
Videohardware 118b geladen wird. Wie bereits beschrieben,
analysiert die HAL 142 die Information in dem STDP und
schreibt das HTDP 154 während des "Freigabe"-Funktionsauf
rufs in das Aufgaben-FIFO 150.
Wie bereits beschrieben, enthält der Symbolstrom 144a, 144b
teilweise decodierte MPEG-Videodaten. Der Software-Client
140 schreibt in den Symbolstrompuffer, während er den ein
gehenden Videodatenstrom analysiert. Ein Zeiger zu diesem
Puffer und die Pufferlänge werden von dem Software-Client
nach einem "Erfassungs"-Funktionsaufruf in das STDP ge
schrieben. Die HAL 142 erzeugt eine Seitentabelle für den
Symbolstrompuffer während des "Freigabe"-Funktionsaufrufs,
um die physische Adressenabbildung vorzusehen. Die Basis
adresse dieser Seitentabelle wird von der HAL 142 in das
HTDP 154 geschrieben und von der speziellen Videohardware
118b geladen, wenn sie die Aufgabe verarbeitet.
Das Aufgabenzeiger-FIFO 156 liegt in der speziellen Video
hardware 118b oder im Systemspeicher 14. Bei der in Fig. 7
gezeigten Ausführungsform wird das Aufgabenzeiger-FIFO 156
von der speziellen Videohardware 118b gewartet. Jeder gül
tige Eintrag in dem Aufgabenzeiger-FIFO 156 ist ein Index
zu einer Aufgabe in dem Aufgaben-FIFO 150, das von der HAL
142 gewartet wird. Bei einer Ausführungsform ist das Aufga
benzeiger-FIFO 156 3 Bit breit und wenigstens acht Einträge
tief. Die von der speziellen Videohardware 118b verarbeite
ten Aufgaben umfassen Nur-Anzeige- und Decodier- und Anzei
ge-Aufgaben. Diese Information wird in den Programmierpara
metern gespeichert, die in dem HTDP 154 enthalten sind.
Diese Programmierparameter umfassen einen Decodieraufgaben
typ, einen Anzeigeaufgabentyp, einen Anzeigepufferindex,
Vollbild/Halbbild-Anzeigedauer, etc. Wenn die "Decodier"-
Aufgabe spezifiziert ist, liest die Hardware 118b in einem
Bus-Master-Modus den Symbolstrom aus dem Systemspeicher 14,
interpretiert die Befehle und rekonstruiert die decodierten
Einzelbilder in dem lokalen Bildspeicher 118a. Die speziel
le Videohardware 118b zeigt die Beendigung einer Bilddeco
dierung und -anzeige an, indem sie eine Aufgabenende-Unter
brechung erzeugt. Die HAL 142 umfaßt diese Unterbrechung
und verwendet sie zum Überwachen des Bildes, das momentan
angezeigt wird, und der Anzahl der anhängigen Aufgaben.
Während die spezielle Videohardware 118b die aktuelle Auf
gabe verarbeitet, bereitet die CPU 112 die nächste Aufgabe
vor, die ansteht, wenn ein Eintrag im Aufgaben-FIFO 150
verfügbar ist. Die spezielle Videohardware 118b wartet auch
Status- und Steuerregister, um dem Benutzer eine bessere
Kontrolle des Software-Hardware-Übertragungsprotokolls zu
ermöglichen.
Fig. 8a gibt die verschiedenen Schritte wieder, die von dem
Software-Client 140 und von der HAL 142 durchgeführt wer
den, um eine Anzeige/Decodieraufgabe gemäß einer Ausfüh
rungsform der vorliegenden Erfindung auszuführen. Wie in
Fig. 8a gezeigt, ist der erste Schritt der Initialisie
rungsschritt, der durch den Kasten 164 wiedergegeben wird.
Bei der Initialisierung erzeugt die HAL 142 eine spezielle
Identifikationszahl, die anzeigt, daß es sich um eine Bewe
gungsausgleichs-Operation handelt. Bei einer Ausführungs
form ist diese Identifikationszahl eine Codeidentifikation
"MMMC". Der Software-Client 140 prüft dieses Feld, um zu
ermitteln, ob in dem Rechnersystem 140 eine spezielle Vi
deohardware 118b vorhanden ist. Als nächstes weist die HAL
142 einen 4 KB Systemspeicherpuffer zu, um das Aufgaben-FIFO
150 zu erzeugen. Bei einer Ausführungsform beginnt das Auf
gaben-FIFO 150 bei einer 4K Grenze. Die HAL 142 program
miert auch reservierte Videohardwareregister mit aufgaben
bezogenen Parametern, die sich zum Beispiel auf ein Deco
dier-Speicherschema, die Anzeigerate für das MPEG-Bild und
die Interruptsteuerung beziehen. Die Startadresse des Auf
gaben-FIFO 150 und die Größe jedes Eintrags in Byte wird in
das Aufgaben-FIFO-Basisadressenregister in der speziellen
Videohardware 118b geschrieben. Die HAL 142 ruft auch ge
eignete Betriebssystemsfunktionen 158 auf, um die Erneue
rungsrate (Refresh-Rate) für die Anzeigeeinrichtung einzu
stellen. Inzwischen schreibt der Software-Client 140 Infor
mation bezüglich der Decodier- und Anzeigeaufgaben. Diese
Information enthält die decodierte Bildrate, das Format der
Zwischenblock-IDCT und der Bewegungsvektordaten und Inter
ruptsteuerungsparameter.
Nach der erfolgreichen Initialisierung gibt der Software-
Client 140 eine "Erfassung"-Anforderung an die HAL 142 aus
(die durch den Kasten 166 in Fig. 8a dargestellt ist). Die
"Erfassungs"-Anforderung gelingt, wenn das STDP-FIFO einen
oder mehrere freie Einträge hat. Wenn die "Erfassung" ge
lingt, erzeugt die HAL 142 einen temporären Speicherpuffer
(148 in Fig. 6) für das STDP und gibt einen Zeiger
"LPDataPtr" zu diesem Puffer zurück. Die HAL 142 schreibt
auch in ein "FIFO-Einträge"-Feld, um die Anzahl der Aufga
ben zu spezifizieren, die in dem Aufgaben-FIFO 150 anhängig
sind. Wenn die "Erfassung"-Funktion erfolgreich ausgeführt
wurde, schreibt der Software-Client 140 die Anzahl der Auf
gaben in das "Aufgaben-Zahl"-Feld in den STDPs im temporä
ren Speicherpuffer 148, auf den der "LPDataPtr" 152 zeigt.
Jedes STDP hat auch einen Zeiger auf die virtuelle Start
adresse des Symbolstrompuffers. Bei einer Ausführungsform
wird der Symbolstrompuffer am Anfang von der HAL 142 zuge
wiesen, wobei in diesem Fall der Zeiger zu dem Symbolstrom
puffer in das STDP geschrieben wird.
Der Kasten 168 in Fig. 8a gibt die "Software-Client-Freiga
be"-Operation wieder. Der Software-Client 140 ruft die
"Freigabe"-Funktion nach der Codierung der nächsten Aufgabe
in dem STDP auf und bereitet den Symbolstrom vor. Nach dem
Aufruf der "Freigabe"-Funktion konvertiert die HAL 142 die
STDP-Steuerinformation in ein HTDP 154, das ein geeignetes
hardwarelesbares Format hat. Die HAL 142 erzeugt auch Sei
tentabellen für die physische Adressenabbildung des Symbol
strompuffers, wobei der virtuelle Adressenzeiger und die
Pufferlängeninformation in dem STDP verwendet werden. Die
HAL 142 schreibt einen Zeiger in diese Seitentabelle in dem
Seitentabellenzeiger-Register in der speziellen Videohard
ware 118b. Die HAL 142 benachrichtigt dann die spezielle
Videohardware 118b, daß eine neue Aufgabe vorhanden ist,
indem sie den Index der Aufgabe in den nächsten verfügbaren
Eintrag des Aufgabenzeiger-FIFO 156 schreibt.
Der Block 170 in Fig. 8a gibt den Aufgabenende-Benachrich
tigungsschritt wieder. Bei erfolgreicher Beendigung einer
Decodier- und Anzeigeaufgabe gibt die spezielle Videohard
ware 118b abhängig von der Einstellung für die Unterbre
chungssteuerung in dem Steuerregister eine Unterbrechung
aus. Die HAL 142, die als ein Interrupt-Steuerblock dient,
entfernt die entsprechenden Einträge in dem Aufgaben-Hea
der-FIFO 150 und aktualisiert die Anzahl der Einträge in
dem Aufgaben-FIFO 150, um die richtige Anzahl der anstehen
den Aufgaben wiederzugeben. Dieser Schritt repräsentiert
die erfolgreiche Beendigung einer gegebenen Decodier- und
Anzeigeaufgabe.
Fig. 8b zeigt den Ablauf der Operationen, die von der Auf
gabensteuerung der Hardware 118b ausgeführt werden. Wie in
Fig. 8b gezeigt, wartet in einem Schritt 172 die Aufgaben
steuerung auf die Beendigung der momentanen Aufgabe und
prüft dann, ob eine ausführbare neue Aufgabe vorhanden ist,
um den nächsten VSYNC zu starten. Eine "neue Aufgabe" ist
vorhanden, wenn das von der speziellen Videohardware 118b
gewartete Aufgabenzeiger-FIFO 156 nicht leer ist. Wenn eine
neue Aufgabe vorhanden ist, rechnet die spezielle Video
hardware 118b im Schritt 174 die Startadresse des nächsten
HTDP und lädt das HTDP. Die folgende Gleichung wird zum
Berechnen der Startadresse des nächsten HTDP verwendet:
Nächste HTDP-Startadresse = HTDB-Basis-Adresse +
(nächster Aufgabenzählerwert × HTDP-Größe)
Als nächstes, im Schritt 176, ermittelt die spezielle Vi
deohardware 118b, ob die neue Aufgabe "ausführbar" ist,
eine Aufgabe ist ausführbar, wenn die nächste VSYNC-Polari
tät mit der Anfangs-VSYNC-Polarität der Aufgabe überein
stimmt. Wenn die Aufgabe ausführbar ist, fährt die Aufgabensteuerung
mit dem Schritt 180 fort, sonst geht sie zum
Schritt 178 und wartet auf den nächsten VSYNC, um die Auf
gabe zu starten.
Im Schritt 180 startet die Aufgabensteuerung die Anzeige-
und/oder Decodieraufgaben. Die auszuführende Aufgabe wird
durch Programmieren der Register der speziellen Videohard
ware 118b mit Hilfe der Information von dem HTDP zeitlich
organisiert. Wenn Decodieren spezifiziert ist, wird der
Zeiger zu der Symbolstrompuffer-Seitentabelle in das Sei
tentabellenzeiger-Register geladen. Der aktuelle Eintrag
aus dem Aufgabenzeiger-FIFO wird entfernt (pop). In den
Schritten 182 und 184 wartet die Aufgabensteuerung auf die
Beendigung der planmäßigen Aufgabe, d. h. darauf, daß die
Anzahl der VSYNC gleich der (Anzeigedauer des ersten Halb
bildes + der Anzeigedauer des zweiten Halbbildes - 1) ist.
Die Aufgabensteuerung geht dann zum Schritt 172 zurück.
Die spezielle Videohardware 118b wiederholt die Anzeige des
letzten Vollbildes oder Halbbildes, wenn für das nächste
Zeitintervall keine Anzeige definiert ist - entweder weil
die letzte Decodieraufgabe nicht abgeschlossen ist oder
weil die nächste Aufgabe von der Software noch nicht pro
grammiert wurde.
Die Symbolstromdaten geben Videodaten wieder, welche von
der Software vorverarbeitet wurden, und die für die weitere
Decodierung an die spezielle Videohardware 118b übergeben
werden können. Die Syntax für eine Ausführungsform des Sym
bolstroms ist im folgenden beschrieben (bei der beschriebe
nen Ausführungsform ist jedes Datenelement ein 16-Bit-
Wort):
Tabelle 1 gibt eine Beschreibung der verschiedenen Symbole
an, die in dem obigen Symbolstromformat gemäß einer Ausfüh
rungsform der Erfindung verwendet werden. Ein 'W' in der
Tabelle 2 gibt ein 16-Bit-Wort an.
Um das "Packen" der quantisierten Koeffizienten in ein 16-
Bit-Wort zu vereinfachen, wird eine Lauflänge von Null mit 4
Bits codiert. Da der MPEG2-Strom Lauflängen von bis zu 63
spezifizieren kann, erfordert dieser Ansatz, Lauflängen, die
größer als 15 Nullen sind, in mehrere Worte aufzuteilen;
manchmal führt dies dazu, daß ein Koeffizient den Wert 0
hat. Eine Folge aus 35 Nullen gefolgt von einem Koeffizient
27 wird zum Beispiel wie folgt codiert: (15:0), (15:0),
(5:27); wobei die erste Zahl in jedem Paar die ZLEN ist, und
die zweite Zahl ist COEFF. Alle Bits, die nicht spezifiziert
oder als "reserviert" markiert sind, sollten als 0 gelesen
und geschrieben werden. ID CT-TYPE gibt drei verschiedene
Arten der Formatierungen der IDCT-Daten an. Diese umfassen:
16 Bit mit Vorzeichen; 9 Bit mit Vorzeichen und gepackt; und
Daten, die zu 8 Bit mit Vorzeichen und gepackt konvertiert
sind.
Die auf der CPU 112 laufende Software ist verantwortlich für
die Aufrechterhaltung der Synchronisierung zwischen den Vi
deo- und Audio-Komponenten des MPEG-Videodatenstroms. Wenn
das Bild dem Ton vorausläuft, verzögert die Software die
Ausgabe von Aufgaben an die spezielle Videohardware 118b;
wenn das Bild dem Ton nacheilt, überspringt die Software die
B-Bilddecodierung.
Die spezielle Videohardware 118b ist auf das Anzeigen nur
der Bilder beschränkt, die vollständig decodiert wurden.
Dieses Decodieren-vor-dem-Anzeigen-Verfahren gewährleistet,
daß Unterbrechungen während der Datenübertragung auf dem
Systembus 11 nicht zu einer Beeinträchtigung der Bilder füh
ren, die auf dem Bildschirm angezeigt werden (abreißen).
Die Decodieren-vor-dem-Anzeigen-Beschränkung erfordert vier
Bildspeicherungen im Speicher 118a, so daß die Decodierung
eines B-Bildes erfolgen kann, während das vorherige B-Bild
auf dem Bildschirm angezeigt wird. Normalerweise erfordert
dies einen Speicher von 2,5 Megabyte für YUV 4:2:0 PAL-Bil
der (576 Zeilen). Optimierungen gemäß der Lehre der vorlie
genden Erfindung ermöglichen jedoch eine MPEG2-Videodekom
pression mit nur 2 Megabyte RAM. Dies wird durch Speichern
von zwei Referenz-Vollbildern (I/P) und drei B-Halbbildern
im Bildpuffer 118a erreicht, wie unten beschrieben ist. Bei
der vorliegenden Erfindung können Bilder mit NTSC-Auflösung
(480 Zeilen) von der speziellen Videohardware 118b mit zwei
Megabyte RAM vollständig gespeichert werden. Dies führt zu
einem gewissen Verlust der Auflösung oder einer Fensterbil
dung bei PAL-Bildern wegen der physischen Speicherbegren
zung, die Auswirkung auf die Videobildqualität ist jedoch
minimal.
Wie zuvor erwähnt, kann die vorliegende Erfindung sowohl
MPEG1 als auch MPEG2 Videos decodieren. Gemäß einer Ausfüh
rungsform dieser Erfindung wird die MPEG2-Videodecodierung
mit 2 Megabyte RAM erreicht, anstelle der 2,5 Megabyte, wel
che die üblichen Techniken benötigen, indem eine neuartige
Ausnutzung des verfügbaren Speicherplatzes erfolgt. Dieser
Abschnitt erläutert die Datenorganisation in dem Bildpuffer
118a für Bilder mit NTSC- und PAL-Auflösung mit 2 Megabyte
oder weniger Speicherplatz.
Im Idealfall erfordert das Decodieren-vor-dem-Anzeigen-Ver
fahren wenigstens vier Vollbildspeicherungen im Bildpuffer
118a. Das Speichern von vier Vollbildern erfordert ungefähr
2,5 Megabyte RAM für Bilder mit PAL-Auflösung und etwa 2
Megabyte RAM für Bilder mit NTSC-Auflösung. Zusätzliche 53 KB
Speicherplatz werden benötigt, um die Sub-Bildmerkmale zu
unterstützen, die in der industriell üblichen DVD-Spezifika
tion beschrieben sind. Die Tabellen 2 und 3 beschreiben die
Speicheranforderungen für Bilder mit NTSC- und bzw. PAL-Auf
lösung, und die Datenorganisation in dem Bildpuffer 118a für
vier gespeicherte Bilder ist in Fig. 9 gezeigt.
Wenn der Bildpuffer 118a nicht alle vier Vollbild-Speiche
rungen unterbringen kann, wird die MPEG2-Decodierung mit
zwei Referenz-Bildern (I/P) und drei B-Halbbildern, d. h. 3,5
Vollbild-Speicherungen im Bildpuffer 118a durchgeführt. Von
den drei B-Halbbildern wird eines der Anzeige zugeordnet,
während die anderen beiden der Decodierung zugewiesen werden
können, so daß sichergestellt ist, daß kein "Zerreißen" der
Bilder entsteht. Dies ist in Tabelle 4, Tabelle 5 und Fig.
10 gezeigt.
Für das PAL-Format ist die zum Speichern von 3,5 Vollbildern
benötigte Speichergröße größer als die 2 Megabyte Kapazität
des Bildpuffers 118a. Da viele Grafikkarten mit nur 2 Mega
byte RAM in den Handel kommen, sieht die spezielle Vi
deohardware 118b ein Speicherverfahren zum Decodieren von
PAL-Bildern mit nur 2 Megabyte RAM wie folgt vor:
Das Speichern von B-Halbbildern mit halber ho
rizontaler Auflösung (HHR = Horizontal Half Resolution) für
Chrominanzkomponenten. Cb- und Cr-Komponenten werden in der
horizontalen Richtung mit einem Faktor 2 unterabgetastet,
wie in Fig. 11 und Tabelle 6 (unten) gezeigt.
Wie in Fig. 12 und Tabelle 7 (unten) gezeigt,
Speichern von B-Halbbild-Fenstern, wobei jedes Fenster eine
Auflösung von 720 × 240 hat, d. h. 48 Zeilen pro Halbbild
werden fallengelassen. Eine Unterabtastung der Chrominanz
daten ist nicht nötig.
Bei allen der obigen Ausführungsformen werden die Referenz-
Vollbilder (I/P) immer mit ihrer vollen Auflösung (720 × 576
für PAL und 720 × 480 für NTSC) in einem verschachtelten
(interlaced) oder Zeilensprungformat gespeichert. Ferner
wird bei allen Ausführungsformen eine konstante Schrittweite
(Trennung zwischen vertikal benachbarten Pixeln) beibehal
ten. Die oben erläuterten Verfahren 1 und 2 müssen in Ver
bindung mit einem Lesen-vor-dem-Schreiben-Verriegelungsme
chanismus (rbw = read before write) eingesetzt werden, weil
während der Decodierung aufeinanderfolgender B-Vollbilder
derselbe Speicherbereich simultan für das Anzeigen/Lesen des
vorhergehenden Vollbildes und das Decodieren/Schreiben des
aktuellen Vollbildes verwendet wird. Bei den HHR B-Halbbil
dern (Verfahren 1) wird zum Beispiel das erste B-Vollbild B1
in HF0 (oberes Feld), HF1 (unteres Feld) geschrieben. Das
folgende B-Vollbild B2 wird in HF0 (unteres Feld), HF2 (obe
res Feld) geschrieben. Das Decodieren/Schreiben des unteren
Teils von B2 in HF0 sollte gegenüber dem Anzeigen/Lesen des
oberen B1 aus HF0 (Verfahren 2) verzögert sein.
Tabelle 8 zeigt, wie die Software das richtige Speicherver
fahren gestützt auf die Größe des verfügbaren RAM auf der
Grafikkarte, die Auflösung (NTSC/PAL) und andere zu unter
stützende Merkmale, wie DVD-Unterbilder, auswählt.
Dieser Abschnitt erörtert, wie die Decodier- und Anzeigeauf
gaben gemäß der vorliegenden Erfindung organisiert werden.
Diese Information wird in dem HTDP 154 spezifiziert, das
einen Teil der Aufgabendatenstruktur bildet.
Tabelle 9 faßt den Inhalt des HTDP 154 zusammen.
Im Fall des 3,5 Puffermodus spezifiziert das HTDP auch "Le
sen-vor-dem-Schreiben"- oder "Schreiben-vor-dem-Lesen"-Ver
riegelungen, falls anwendbar.
Um eine durchgängig gute Videoqualität zu gewährleisten,
werden bei einer Ausführungsform die VGA-Erneuerungsraten
(refresh rate) auf ein ganzzahliges Vielfaches der MPEG2-
Vollbildraten beschränkt. Tabelle 10 zeigt die Anzeigeraten-
Auswahltabelle.
Beachte: Bei der Ausführungsform der Tabelle 9 beträgt die
Anzeigerate immer 2 × oder 3 × die MPEG-Vollbildrate für eine
PC-VGA-Anzeige; 60 Hz für eine NTSC-TV-Anzeige; und 50 Hz
für eine PAL-TV-Anzeige.
Dem Decodierprozeß werden folgende Beschränkungen auferlegt,
um die Qualität der Videowiedergabe sicherzustellen und ein
Decodierverfahren mit 2 Megabyte Speicher zu realisieren:
- 1. Die Decodierung eines Vollbildes muß beendet sein, bevor die Anzeige dieses Vollbildes beginnen kann. Dies stellt sicher, daß kein "Abreißen" des Videobil des entsteht.
- 2. Wenn ein oberes und ein unteres Halbbild ungleich lan ge angezeigt werden, sollte das zweite Halbbild länger angezeigt werden. Wenn z. B. ein oberes und ein unteres Halbbild während insgesamt 3 VSYNCs angezeigt werden sollen, wird zuerst das obere Halbbild angezeigt, und die Anzeige des oberen Halbbildes wird dann für einen VSYNC ausgelegt, die des unteren Halbbildes für 2 VSYNCs. Dies gewährleistet, daß der Speicher schneller für die nächste Decodieraufgabe freigemacht wird, wäh rend aneinander angrenzende B-Vollbilder mit einer Speicherung von 3,5 Vollbildern im Bildpuffer deco diert werden.
- 3. Aufgaben werden synchron für die Anzeige zusammenge stellt, d. h. eine Aufgabe wird immer bei einem VSYNC gestartet. Dies trägt dazu bei "abreißende" Gebilde während der Videoanzeige zu verhindern.
- 4. In der folgenden Erörterung bezeichnet ein Zeitab schnitt eine Erneuerungsperiode (Refresh-Periode), d. h. die Zeit zwischen zwei aufeinanderfolgenden VSYNCs.
- 5. Wenn ein Anzeigegerät oder die Hardware die gewünschte Erneuerungsrate von 72 oder 75 Hz nicht unterstützen kann, schaltet die Software die Anzeigerate auf 60 oder 50 Hz herunter und wiederholt, falls nötig, Voll bilder, um eine zweifache Anzeigerate zu erreichen. Das Abspielen eines 25 fps (frame per second) PAL-Ma terials auf einer 60 Hz-Anzeige wird z. B. durch Wie derholen von 5 Vollbildern der 25 Vollbilder während jeder Sekunde erreicht. Ähnlich wird die Darstellung eines 24 fps-Materials auf einer 60 Hz-Anzeige durch Wiederholen von 6 der 24 Vollbildern pro Sekunde er reicht, und auf einer 50 Hz-Anzeige durch Wiederholen eines der 24 Vollbilder pro Sekunde.
Die Software programmiert die folgenden Arten von Aufgaben,
die von der speziellen Videohardware 188b ausgeführt werden
sollen:
- 1. Nur-Anzeige-Aufgabe: Zeit-Zuordnungs-Felder in dem HTDP spezifizieren die Anzahl der Zeitscheiben, wäh rend derer das Vollbild oder das obere und das untere Halbbild angezeigt werden sollten. Die nächste Aufgabe wird am Ende der spezifizierten Anzahl von Anzeige- Zeitscheiben gestartet.
- 2. Decodier- und Anzeige-Aufgabe: Hier wird ein neues Vollbild oder Halbbild decodiert und in die spezifi zierten Puffer geschrieben, während ein vorhergehend decodiertes Vollbild oder Halbbild angezeigt wird. Die Zeitzuweisungsfelder in dem HTDP spezifizieren die Anzahl der Zeitscheiben, während derer das Vollbild oder das obere und das untere Halbbild angezeigt wer den sollten. Die nächste Aufgabe wird bei Beendigung beider Decodier- und Anzeige-Aufgaben gestartet.
Decodieraufgaben können abhängig von dem verfügbaren System
speicher zu einem der folgenden Typen gehören:
- 1. Vollbild decodieren,
- 2. zwei Halbbilder decodieren.
Die Decodieraufgaben weisen den Vollbildpufferspeicher gemäß
einer der folgenden Einheiten zu:
- 1. 4 Vollbilder,
- 2. 3,5 Vollbilder,
- 3. 3,5 Vollbilder - HHR B-Halbbilder,
- 4. 3,5 Vollbilder - B-Halbbilder mit Fensterbildung
Anzeigeaufgaben können wie folgt definiert sein:
- 1. fortlaufende Vollbilder anzeigen,
- 2. Vollbild als 2 Halbbilder anzeigen.
Abhängig von der Vollbildspeicherorganisation, den Zeilen
sprung/fortlaufenden Videovollbildern und der Anzeige/Deco
dier-Rate gibt es acht Möglichkeiten zum Zusammenstellen von
Aufgaben, die in Tabelle 11 zusammengefaßt sind:
Die folgenden Beispiele zeigen das Decodieren und Anzeigen
einer Gruppe aus Bildern für unterschiedliche Anzeigeraten
und Speicherschemata. Das unten beschriebene Beispiel ent
spricht der folgenden Decodierfolge
I0 P3 B1 B2 P6 B4 B5 . . .
I0 P3 B1 B2 P6 B4 B5 . . .
Wobei I, P und B Intra-, vorhergesagte (prädiktive) bzw.
bidirektionale vorhergesagte Bildtypen repräsentieren. Das
numerische Suffix ist die Einzelbildnummer, beginnend bei 0.
2 × und 3 × geben das Verhältnis der Anzeigerate zu der co
dierten Vollbildrate an.
F0, F1, F2, F3 sind die Einzelbildspeicherungen im Bildpuf
fer. Die Suffixe "t" und "b" entsprechen jeweils den oberen
("top") und den unteren ("bottom") Halbbildern. HF0, HF1 und
HF2 sind Halbbildspeicherungen in dem Bildpuffer.
Decodieren eines B-Vollbildes für einen 3,5 Pufferspeicher
und Halbbildanzeige
Decodier-Speicher-Schema: 3,5 Puffer
BUF1 decodieren: HF0
BUF2 decodieren: HF1
Anzeigetyp: Anzeige als Halbbilder
Anzeigepuffer id: F0
Erste Anzeige: unteres Feld
Anzeigedauer für erstes Feld: 1
Anzeigedauer für zweites Feld: 2
Decodier-Speicher-Schema: 3,5 Puffer
BUF1 decodieren: HF0
BUF2 decodieren: HF1
Anzeigetyp: Anzeige als Halbbilder
Anzeigepuffer id: F0
Erste Anzeige: unteres Feld
Anzeigedauer für erstes Feld: 1
Anzeigedauer für zweites Feld: 2
Im Falle einer 3,5-Pufferorganisation können sich während
der Decodierung eines B-Vollbildes Anzeige- und Decodierpuf
fer überlappen. In diesem Fall muß eine Hardwarefestlegung
auf ein Anzeigen-vor-dem-Decodieren- oder Decodieren-vor
dem-Anzeigen für das Lesen/Schreiben des Speichers erfolgen.
Diese Information wird auch als Teil der Aufgabe über
mittelt.
Der folgende Abschnitt beschreibt alternative Ausführungs
formen der speziellen Videohardware 118b und den Datenablauf
zum Ausführen der Bewegungsausgleichs- und der Blockrekon
struktionsaufgaben. Fig. 13 zeigt eine Ausführungsform gemäß
der vorliegenden Erfindung, bei der die spezielle Videohard
ware 118b in eine Grafiksteuereinrichtung 118 eingebettet
ist. Bei der in Fig. 13 gezeigten Ausführungsform führt die
spezielle Videohardware 118b die Aufgaben des Bewegungsaus
gleichs (MC = Motion Compensation) und der Blockrekonstruk
tion (BR) aus (ähnlich wie bei der Aufteilung der Decodier
aufgabe in Fig. 4). Fig. 14 zeigt das Datenablaufdiagramm
für die MPEG-Decodieraufgabe, die von der in Fig. 13 gezeig
ten speziellen Videohardware 118b ausgeführt wird.
Wie in Fig. 13 gezeigt, wird die in der Grafiksteuereinrich
tung eingebettete spezielle Videohardware Video-Rekonstruk
tions-Prozessor (VRP) 190 genannt. Der VRP 190 hat einen
Speicherpuffer (IMEM) 192 auf dem Chip, um Daten zu
speichern, die zu der IDCT-Operation gehören, eine Speicher
puffer (RMEM) 194 zum Speichern von Daten, die zu der Bewe
gungskompensations-Operation gehören, einen Halbpixel-Filter
(HPF) 196 zum Durchführen einer Halbpixel-Interpolation und
einen Blockrekonstruktions-Block 198 zum Ausführen einer
Blockrekonstruktions-Berechnung der Videobilder. Der VRP 190
bildet eine Schnittstelle zu einer Befehlsfolgesteuerung 200
und einer Speichersteuereinrichtung 202, die den Zugriff auf
den Bildpuffer der Grafiksteuereinrichtung 118 steuert.
Die Aufgabefolgesteuerung 204 liest das Aufgaben-FIFO und
holt das HTDP. Die Aufgabefolgesteuerung 204 verwendet die
HTDP-Werte zum Programmieren der Steuerregister in dem VRP
190. Dies umfaßt die Programmierung eines Registers mit dem
Startzeiger des Symbolstrompuffers in dem Systemspeicher 14.
Die Ausführung beginnt mit der Bestätigung des VSYNC-
Signals. Eine PCI-Bus-Masterlogik 206 beginnt mit dem Ein
lesen des Symbol-FIFO aus dem Systemspeicher in das auf dem
Chip gelegene Symbol-FIFO. Die Befehlsfolgesteuerung 200
interpretiert den Befehl fester Länge und beginnt das Parsen
(Syntaxanalyse) der Symbole gemäß der zuvor beschriebenen
Syntax. Die Befehlsfolgesteuerung 200 dient als ein Master
und sendet Befehle und Daten zur Speichersteuereinrichtung
202 und zum VRP 190 jeweils für einen Macroblock auf einmal.
Nachdem alle Macroblöcke in einem gegebenen Einzelbild ver
arbeitet wurden, erzeugt die Aufgabenfolgesteuerung 204 eine
Unterbrechung, um die Beendigung der Aufgabe anzuzeigen, und
sie beginnt die Verarbeitung der nächsten Aufgabe.
Der VRP 190 arbeitet im Verhältnis zur Befehlsfolgesteuerung
200 in einem Slave-Modus, wobei die Befehlsfolgesteuerung
200 als ein Master einen Befehl in den VRP 190 lädt, der
dann von dem VRP 190 ausgeführt wird. Nach der Ausführung
des Befehls wartet der VRP 190 auf einen weiteren Befehl,
der von der Befehlsfolgesteuerung 200 geladen wird. Zum Ver
arbeiten eines Macroblocks gibt die Befehlsfolgesteuerung
200 drei Befehle aus - ein Befehl für die vier Luminanz
blöcke (Y) und jeweils einen Befehl für die beiden Chromi
nanzblöcke (Cb und Cr). Der VRP 190 holt die Bezugsmakro
blöcke aus dem lokalen Speicher 194, führt (falls nötig)
eine Halbpixel-Interpolation mit dem Halbpixelfilter 196
durch und kombiniert die Bezugs-Makroblöcke, um mittels
Blockrekonstruktion (BR) einen Prädiktions-Makroblock zu
bilden. Der VRP 190 extrahiert auch IDCT-Werte aus dem Sym
bolstrom und legt die extrahierten Werte in den Speicherpuf
fer IMEM 192 auf dem Chip. Der VRP 190 kombiniert dann die
Ergebnisse aus diesen beiden Operationen, um mittels BR den
rekonstruierten Makroblock zu erzeugen, der mit Hilfe der
Speichersteuereinrichtung 202 in den gewünschten Bildpuffer
geschrieben wird.
Es sei z. B. der Fall betrachtet, daß der VRP 190 einen Lumi
nanzblock (Y) verarbeitet, der IDCT-Werte sowie einen Vor
wärtsbewegungsvektor (A-Ref) und einen Rückwärtsbewegungs
vektor (B-Ref) hat. Die Befehlsfolgesteuerung 200 extrahiert
die Vorwärts- und Rückwärts-Bezugsadressen aus dem Symbol
strom und schreibt sie in geeignete Register in der
Speichersteuereinrichtung 202. Bei einer alternativen Aus
führungsform berechnet die Befehlsfolgesteuerung 200 auch
die Zieladresse des Y-Blocks. Die Befehlssteuereinrichtung
200 lädt dann ein Befehlspaket in den VRP 190, das dem VRP
190 mitteilt, wie der Block verarbeitet werden soll. Danach
extrahiert die Befehlsfolgesteuerung 200 IDCT-Daten und lädt
sie in den IMEM 192. Gleichzeitig beginnt der Bewegungsaus
gleichs-Mechanismus, der den Vorwärts-Bezugsblock in den
RMEM 194 holt. Die Halbpixelinterpolation wird, wenn nötig,
"unterwegs" von dem HPF 196 durchgeführt, während der Be
zugsblock aus dem Speicher abgerufen wird. Wenn der Vor
wärts-Bezugsblock einmal da ist, beginnt der VRP 190, den
Rückwärts-Bezugsblock aus dem Speicher abzurufen. Zu dieser
Zeit mittelt der VRP 190 die Vorwärts- und Rückwärts-Bezugs
pixelwerte "im Vorbeigehen", während die Rückwärts-Bezugs
daten aus dem Speicher gelesen werden. Am Ende der Operation
wird der Prädiktionsblock in dem RMEM 194 gespeichert (wie
in Fig. 14 gezeigt).
Zu dieser Zeit müssen der IDCT-Mechanismus und der Bewe
gungsausgleichs-Mechanismus in dem Sinne synchron arbeiten,
daß immer der, der früher fertig wird, auf den anderen wartet.
Fig. 15 zeigt den Fall, das die Bewegungsaus
gleichsaufgabe vor der IDCT-Aufgabe beendet ist und somit
warten muß, bis die IDCT-Werte vollständig in den IMEM 192
geladen sind. Schließlich kombiniert der VRP 190 das Ergeb
nis der IDCT- und Bewegungsausgleichs-Aufgaben, um den deco
dierten Y-Block "im Vorbeigehen" unter Verwendung der Block
rekonstruktion (BR) zu rekonstruieren und zur Speichersteu
ereinrichtung 202 zu senden, woraufhin er in das RMEM 194
zurückgeschrieben wird. Für einen "Y"-Block extrahiert der
IDCT-Mechanismus bis zu vier 8 × 8 IDCT-Werte für jeden der
vier Luminanzblöcke. Die Anzahl der 8 × 8 "Y"-IDCT-Blöcke,
die in einem Makroblock enthalten sind, hängt von dem Symbol
des Musters ab. Für die 8 × 8 "Y"-Blöcke, die nicht im Sym
bolstrom enthalten sind, schreibt der IDCT-Mechanismus Nul
len als IDCT-Werte auf. Fig. 16 zeigt den Fall, daß die
IDCT-Aufgabe vor der Bewegungsausgleichsaufgabe endet.
Fig. 17 zeigt das Datenflußdiagramm für eine weitere Ausfüh
rungsform der speziellen Videohardware 118b. Wie in Fig. 17
gezeigt, werden die IDCT-Werte zuerst mit dem Vorwärts-Be
zugsblock (A-REF) kombiniert. Die resultierenden Daten wer
den dann mit dem Rückwärts-Block (B-REF) gemittelt. Diese
Realisierungsform hilft, IMEM zu sparen.
Nach der Beschreibung der Erfindung wird dem Fachmann deut
lich sein, daß viele Veränderungen und Modifikationen vor
genommen werden können, ohne den Bereich der folgenden An
sprüche zu verlassen. Alle Publikationen und Patentanmeldun
gen, die in dieser Beschreibung erwähnt wurden, werden aus
drücklich in Bezug genommen. Die in der vorstehenden Be
schreibung, den Ansprüchen und der Zeichnung offenbarten
Merkmale können sowohl einzeln als auch in beliebiger Kom
bination für die Realisierung der Erfindung in ihren ver
schiedenen Ausgestaltungen von Bedeutung sein.
Claims (11)
1. Verfahren zum Decodieren eines codierten MPEG-Videodatenstroms mit folgenden Ver
fahrensschritten:
Aufteilen der Decodierung des codierten MPEG-Videodatenstroms in speicher- rechenintensive Aufgaben, die umfangreiche Speicher- und Rechenresourcen benötigen, und wenig speicher-rechenintensive Aufgaben, die keine umfangreichen Speicher- oder Rechenresourcen benötigen;
Ausführen der wenig speicher-rechenintensiven Aufgaben mittels Softwaremodulen, die auf einem Prozessor (190) laufen, um vorverarbeitete Symbolstrom-Datenstrukturen für jedes Videobild zu erzeugen, wobei das Ausführen der wenig speicher-rechenintensiven Aufgabe die folgenden Schritte umfaßt:
Aufteilen der Decodierung des codierten MPEG-Videodatenstroms in speicher- rechenintensive Aufgaben, die umfangreiche Speicher- und Rechenresourcen benötigen, und wenig speicher-rechenintensive Aufgaben, die keine umfangreichen Speicher- oder Rechenresourcen benötigen;
Ausführen der wenig speicher-rechenintensiven Aufgaben mittels Softwaremodulen, die auf einem Prozessor (190) laufen, um vorverarbeitete Symbolstrom-Datenstrukturen für jedes Videobild zu erzeugen, wobei das Ausführen der wenig speicher-rechenintensiven Aufgabe die folgenden Schritte umfaßt:
- - Parsen des codierten MPEG-Videodatenstroms mittels einer variablen Längende codierung, um einen geparsten Videodatenstrom zu erzeugen;
- - Ausführen einer inversen Quantisierung des geparsten Videodatenstroms, um ei nen quantisierten Videodatenstrom zu erzeugen;
- - Formatieren des quantisierten Videodatenstroms als die vorverarbeitete Symbol
strom-Datenstruktur; und Schreiben der vorverarbeiteten Symbolstrom-
Datenstruktur in den Speicherpuffer;
Speichern der vorverarbeiteten Symbolstrom-Datenstruktur in einem Speicherpuffer (192, 194);
Ausführen der speicher-rechenintensiven Aufgaben in einer speziellen Videohardware (118b), um ein decodiertes Videobild zu erzeugen;
Synchronisieren der wenig speicher-rechenintensiven Aufgaben, die von den Software modulen erledigt werden, und der speicher-rechenintensiven Aufgaben, die von der spezi ellen Videohardware ausgeführt werden; und Anzeigen des decodierten Videobildes auf einem Anzeigegerät.
2. Verfahren nach Anspruch 1, bei dem bei der Ausführung der wenig speicherintenvsiven
Aufgaben durch die Softwaremodule, die auf dem Prozesor laufen, zusätzlich nach dem
Ausführen einer inversen Quantisierung des geparsten Videodatenstroms, um einen quan
tisierten Videodatenstrom zu erzeugen, eine inverse diskrete Cosinustransformation mit
dem quantisierten Videodatenstrom ausgeführt wird, um einen cosinustransformierten
Viedodatenstrom zu erzeugen, bevor dieser cosinustransformierte Videodatenstrom als die
vorverarbeitete Symbolstrom-Datenstruktur formatiert und die vorverarbeitete Symbol-
Datenstruktur in den Speicherpuffer geschrieben wird.
3. Verfahren nach Anspruch 1 oder 2, bei dem die Ausführung der speicher-rechenintensiven
Aufgaben in der speziellen Videohardware (118b) zum Erzeugen des decodierten Video
bildes folgende Schritte umfaßt:
Zugreifen auf die vorverarbeitete Symbolstrom-Datenstruktur, die in dem Speicherpuffer (192, 194) gespeichert ist;
Ausführen einer Bewegungsausgleichsoperation mit der vorverarbeiteten Symbolstrom- Datenstruktur, um einen ausgeglichenen Videodatenstrom zu erhalten; und
Ausführen einer Blockrekonstruktions-Operation mit dem kompensierten Videodaten strom, um das decodierte Videobild zu erzeugen.
Zugreifen auf die vorverarbeitete Symbolstrom-Datenstruktur, die in dem Speicherpuffer (192, 194) gespeichert ist;
Ausführen einer Bewegungsausgleichsoperation mit der vorverarbeiteten Symbolstrom- Datenstruktur, um einen ausgeglichenen Videodatenstrom zu erhalten; und
Ausführen einer Blockrekonstruktions-Operation mit dem kompensierten Videodaten strom, um das decodierte Videobild zu erzeugen.
4. Verfahren nach Anspruch 1 oder 2, bei dem die Ausführung der speicher-rechenintensiven
Aufgaben in der speziellen Videohardware (118b) zum Erzeugen des decodierten Video
bildes folgende Schritte umfaßt:
Zugreifen auf die vorverarbeitete Symbolstrom-Datenstruktur, die in dem Speicherpuffer (192, 194) gespeichert ist;
Ausführen der inversen diskreten Cosinustransformation mit der vorverarbeiteten Sym bolstrom-Datenstruktur zum Erzeugen eines cosinustransformierten Videodatenstroms;
Ausführen eines Bewegungsausgleichs mit dem cosinustransformierten Videodatenstrom, um einen ausgeglichenen Videodatenstrom zu erzeugen; und
Ausführen einer Blockrekonstruktion mit dem kompensierten Videodatenstrom, um das decodierte Videobild zu erzeugen.
Zugreifen auf die vorverarbeitete Symbolstrom-Datenstruktur, die in dem Speicherpuffer (192, 194) gespeichert ist;
Ausführen der inversen diskreten Cosinustransformation mit der vorverarbeiteten Sym bolstrom-Datenstruktur zum Erzeugen eines cosinustransformierten Videodatenstroms;
Ausführen eines Bewegungsausgleichs mit dem cosinustransformierten Videodatenstrom, um einen ausgeglichenen Videodatenstrom zu erzeugen; und
Ausführen einer Blockrekonstruktion mit dem kompensierten Videodatenstrom, um das decodierte Videobild zu erzeugen.
5. Verfahren nach einem der vorangehenden Ansprüche, bei dem die Synchronisierung der
wenig speicher-rechenintensiven Aufgaben, die von der Software ausgeführt werden, und
der speicher-rechenintensiven Aufgaben, die von der speziellen Videohardware (118b)
ausgeführt werden, folgende Schritte umfaßt:
Zuordnen des Speicherpuffers zum Speichern der vorverarbeiteten Symbolstrom- Datenstruktur;
Warten einer Aufgabenzeiger-Warteschlange aus Softwareaufgaben- Steuerdatenstrukturen, wobei jede der Softwareaufgaben-Steuerdatenstrukturen eine Steuerinformation speichert, welche jeweils einer der wenig speicher-rechenintensiven Aufgaben entspricht, die von den Softwaremodulen verarbeitet wird und als die speicher- rechenintensive Aufgabe vorgesehen werden kann, welche von der speziellen Videohard ware ausgeführt wird;
Zählen der beendeten wenig speicher-rechenintensiven Aufgaben;
Konvertieren der Software-Steuerdatenstrukturen in Hardwareaufgaben- Steuerdatenstrukturen, wobei die Hardwareaufgaben-Steuerdatenstrukturen eine Informa tion speichern, welche der speicher-rechenintensiven Aufgabe entspricht, die von der spe ziellen Videohardware ausgeführt werden soll;
Warten einer Aufgaben-FIFO-Warteschlange der Hardwareaufgaben- Steuerdatenstrukturen in der speziellen Videohardware, wobei jede der Hardwareaufga ben-Steuerdatenstrukturen in der Aufgaben-FIFO-Warteschlange eine Information in Be zug auf die rechen-speicherintensive Aufgabe steuert, die von der speziellen Videohard ware auszuführen ist; und
Ausgeben eines Unterbrechungssignals, um die Beendigung der speicher-rechenintensiven Aufgabe durch die spezielle Videohardware anzuzeigen;
wobei die Softwaremodule die Hardwareaufgaben-Steuerdatenstruktur bei Empfang des Unterbrechungssignals aus der Aufgaben-FIFO-Warteschlange entfernt, wobei die ent fernte Hardwareaufgaben-Steuerdatenstruktur der speicher-rechenintensiven Aufgabe ent spricht, die von der speziellen Videohardware abgeschlossen wurde.
Zuordnen des Speicherpuffers zum Speichern der vorverarbeiteten Symbolstrom- Datenstruktur;
Warten einer Aufgabenzeiger-Warteschlange aus Softwareaufgaben- Steuerdatenstrukturen, wobei jede der Softwareaufgaben-Steuerdatenstrukturen eine Steuerinformation speichert, welche jeweils einer der wenig speicher-rechenintensiven Aufgaben entspricht, die von den Softwaremodulen verarbeitet wird und als die speicher- rechenintensive Aufgabe vorgesehen werden kann, welche von der speziellen Videohard ware ausgeführt wird;
Zählen der beendeten wenig speicher-rechenintensiven Aufgaben;
Konvertieren der Software-Steuerdatenstrukturen in Hardwareaufgaben- Steuerdatenstrukturen, wobei die Hardwareaufgaben-Steuerdatenstrukturen eine Informa tion speichern, welche der speicher-rechenintensiven Aufgabe entspricht, die von der spe ziellen Videohardware ausgeführt werden soll;
Warten einer Aufgaben-FIFO-Warteschlange der Hardwareaufgaben- Steuerdatenstrukturen in der speziellen Videohardware, wobei jede der Hardwareaufga ben-Steuerdatenstrukturen in der Aufgaben-FIFO-Warteschlange eine Information in Be zug auf die rechen-speicherintensive Aufgabe steuert, die von der speziellen Videohard ware auszuführen ist; und
Ausgeben eines Unterbrechungssignals, um die Beendigung der speicher-rechenintensiven Aufgabe durch die spezielle Videohardware anzuzeigen;
wobei die Softwaremodule die Hardwareaufgaben-Steuerdatenstruktur bei Empfang des Unterbrechungssignals aus der Aufgaben-FIFO-Warteschlange entfernt, wobei die ent fernte Hardwareaufgaben-Steuerdatenstruktur der speicher-rechenintensiven Aufgabe ent spricht, die von der speziellen Videohardware abgeschlossen wurde.
6. Vorrichtung zum Decodieren eines codierten MPEG-Videodatenstroms durch Aufteilen
der Decodierung in wenig speicher-rechenintensive Aufgaben und speicher-rechen
intensive Aufgaben, mit folgenden Merkmalen:
einer Busschnittstelle (11);
einen mit der Busschnittstelle verbundenen Prozessor (190);
wobei der Prozessor (190) so konfiguriert ist, daß er ein oder mehrere Softwaremodule der mehreren in dem Systemspeicher (14) gespeicherten Softwaremodule ausführt, um
den codierten MPEG-Videodatenstrom mittels einer variablen Längendecodierung zu parsen, um einen geparsten Videodatenstrom zu erzeugen;
eine inverse Quantisierung mit dem geparsten Videodatenstrom auszuführen, um einen quantisierten Videodatenstrom zu erzeugen;
den quantisierten Videodatenstrom als die vorverarbeitete Symbolstrom- Datenstruktur zu formatieren; und
die vorverarbeitete Symbolstrom-Datenstruktur in dem Systemspeicher (14) zu speichern;
einen mit der Busschnittstelle verbundenen Systemspeicher (14), wobei der Systemspei cher so konfiguriert ist, daß er mehrere Softwaremodule speichert, die auf dem Prozessor laufen können, wobei eines oder mehrere der Softwaremodule so konfiguriert sind, daß sie die wenig speicher-rechenintensiven Aufgaben ausführen, um eine vorverarbeitete Sym bolstrom-Datenstruktur zu erzeugen;
einer speziellen Videohardware (118b), die mit der Busschnittstelle verbunden ist, wobei die spezielle Videohardware so konfiguriert ist, daß sie die speicher-rechenintensiven Aufgaben ausführt, um decodierte Videodaten zu erzeugen, die auf einer Anzeigeeinrich tung angezeigbar sind; und
einem speziellen Speicher (150), der mit der speziellen Videohardware verbunden ist.
einer Busschnittstelle (11);
einen mit der Busschnittstelle verbundenen Prozessor (190);
wobei der Prozessor (190) so konfiguriert ist, daß er ein oder mehrere Softwaremodule der mehreren in dem Systemspeicher (14) gespeicherten Softwaremodule ausführt, um
den codierten MPEG-Videodatenstrom mittels einer variablen Längendecodierung zu parsen, um einen geparsten Videodatenstrom zu erzeugen;
eine inverse Quantisierung mit dem geparsten Videodatenstrom auszuführen, um einen quantisierten Videodatenstrom zu erzeugen;
den quantisierten Videodatenstrom als die vorverarbeitete Symbolstrom- Datenstruktur zu formatieren; und
die vorverarbeitete Symbolstrom-Datenstruktur in dem Systemspeicher (14) zu speichern;
einen mit der Busschnittstelle verbundenen Systemspeicher (14), wobei der Systemspei cher so konfiguriert ist, daß er mehrere Softwaremodule speichert, die auf dem Prozessor laufen können, wobei eines oder mehrere der Softwaremodule so konfiguriert sind, daß sie die wenig speicher-rechenintensiven Aufgaben ausführen, um eine vorverarbeitete Sym bolstrom-Datenstruktur zu erzeugen;
einer speziellen Videohardware (118b), die mit der Busschnittstelle verbunden ist, wobei die spezielle Videohardware so konfiguriert ist, daß sie die speicher-rechenintensiven Aufgaben ausführt, um decodierte Videodaten zu erzeugen, die auf einer Anzeigeeinrich tung angezeigbar sind; und
einem speziellen Speicher (150), der mit der speziellen Videohardware verbunden ist.
7. Vorrichtung nach Anspruch 6, wobei der Prozessor so konfiguriert ist, daß zusätzlich nach
dem Ausführen einer inversen Quantisierung des geparsten Videodatenstrom, um einen
quantisierten Videodatenstrom zu erzeugen, eine inverse diskrete Cosinustransformation
mit dem quantisierten Videodatenstrom ausgeführt wird, um einen cosinustransformierten
Videodatenstrom zu erzeugen, bevor dieser cosinustranformierte Datenstrom als die vor
verarbeitete Symbolstrom-Datenstruktur formatiert und die vorverarbeitete Symbolstrom-
Datenstruktur in dem Systemspeicher (14) gespeichert wird.
8. Vorrichtung nach Anspruch 6 oder 7, bei der die spezielle Videohardware (118b) ferner
dafür konfiguriert ist,
die in dem Systemspeicher (14) gespeicherte vorverarbeitete Symbolstrom-Datenstruktur zu lesen;
einen Bewegungsausgleich mit der vorverarbeiteten Symbolstrom-Datenstruktur auszu führen, um einen ausgeglichenen Videodatenstrom zu erzeugen; und
eine Blockrekonstruktion mit dem ausgeglichenen Videodatenstrom auszuführen, um die decodierten Videodaten zu erzeugen.
die in dem Systemspeicher (14) gespeicherte vorverarbeitete Symbolstrom-Datenstruktur zu lesen;
einen Bewegungsausgleich mit der vorverarbeiteten Symbolstrom-Datenstruktur auszu führen, um einen ausgeglichenen Videodatenstrom zu erzeugen; und
eine Blockrekonstruktion mit dem ausgeglichenen Videodatenstrom auszuführen, um die decodierten Videodaten zu erzeugen.
9. Vorrichtung nach einem der Ansprüche 6 bis 8, bei dem die spezielle Videohardware fer
ner dazu konfiguriert ist, die in dem Systemspeicher (14) gespeicherte vorverarbeitete
Symbolstrom-Datenstruktur zu lesen;
eine inverse diskrete Cosinustransformation mit der vorverarbeiteten Symbolstrom- Datenstruktur durchzuführen, um einen cosinustransformierten Videodatenstrom zu er zeugen;
einen Bewegungsausgleich mit dem cosinustransformierten Videodatenstrom durchzu führen, um einen ausgeglichenen Videodatenstrom zu erzeugen; und
eine Blockrekonstruktion mit dem ausgeglichenen Videodatenstrom auszuführen, um die decodierten Videodaten zu erzeugen.
eine inverse diskrete Cosinustransformation mit der vorverarbeiteten Symbolstrom- Datenstruktur durchzuführen, um einen cosinustransformierten Videodatenstrom zu er zeugen;
einen Bewegungsausgleich mit dem cosinustransformierten Videodatenstrom durchzu führen, um einen ausgeglichenen Videodatenstrom zu erzeugen; und
eine Blockrekonstruktion mit dem ausgeglichenen Videodatenstrom auszuführen, um die decodierten Videodaten zu erzeugen.
10. Vorrichtung nach einem der Ansprüche 6 bis 9, bei der eines oder mehrere Softwaremo
dule der mehreren in dem Systemspeicher (14) gespeicherten Softwaremodule ferner so
konfiguriert sind, daß sie einen Speicherpuffer für die vorverarbeitete Symbolstrom-
Datenstruktur in dem Systemspeicher (14) zuweisen;
eine Aufgabenzeiger-Warteschlange der Softwareaufgaben-Steuerdatenstrukturen ver walten, wobei jede der Softwareaufgaben-Steuerdatenstrukturen eine Steuerinformation speichert, die jeweils den wenig speicher-rechenintensiven Aufgaben entsprechen, die von dem Softwaremodul verarbeitet werden, das als die speicher-rechenintensive Aufgabe eingeteilt werden kann, die von der speziellen Videohardware (118b) ausgeführt wird;
die beendeten wenig speicher-rechenintensiven Aufgaben zählen; und
die Softwareaufgaben-Steuerdatenstrukturen in Hardwareaufgaben-Steuerdatenstruktur umwandeln, wobei die Hardwareaufgaben-Steuerdatenstrukturen Information speichern, die der speicher-rechenintensiven Aufgabe entspricht, die von der speziellen Videohardware ausgeführt werden soll.
eine Aufgabenzeiger-Warteschlange der Softwareaufgaben-Steuerdatenstrukturen ver walten, wobei jede der Softwareaufgaben-Steuerdatenstrukturen eine Steuerinformation speichert, die jeweils den wenig speicher-rechenintensiven Aufgaben entsprechen, die von dem Softwaremodul verarbeitet werden, das als die speicher-rechenintensive Aufgabe eingeteilt werden kann, die von der speziellen Videohardware (118b) ausgeführt wird;
die beendeten wenig speicher-rechenintensiven Aufgaben zählen; und
die Softwareaufgaben-Steuerdatenstrukturen in Hardwareaufgaben-Steuerdatenstruktur umwandeln, wobei die Hardwareaufgaben-Steuerdatenstrukturen Information speichern, die der speicher-rechenintensiven Aufgabe entspricht, die von der speziellen Videohardware ausgeführt werden soll.
11. Vorrichtung nach einem der Ansprüche 6 bis 10, bei der die spezielle Videohardware
(118b) ferner so konfiguriert ist, daß sie
eine Aufgaben-FIFO-Warteschlange der Hardwareaufgaben-Steuerdatenstrukturen in dem
speziellen Speicher (150) verwaltet, wobei jedes der Hardwareaufgaben-Steuerda
tenpakete in der Aufgaben-FIFO-Warteschlange zum Speichern von Informationen in Be
zug auf die speicher-rechenintensiven Aufgaben dient, die von der speziellen Videohard
ware (118b) ausgeführt werden soll; und ein Unterbrechungssignal ausgibt, welches die
Beendigung der speicher-rechenintensiven Aufgabe durch die spezielle Videohardware
(118b) anzeigt, wobei das Softwaremodul so konfiguriert ist, daß es bei Empfang des Un
terbrechungssignals die Hardwareaufgaben-Steuerdatenstruktur auf der Aufgaben-FIFO-
Warteschlange entfernt, wobei die entfernte Hardwareaufgaben-Steuerdatenstruktur der
von der speziellen Videohardware ausgeführten speicher-rechenintensiven Aufgabe ent
spricht
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/877,136 US5990958A (en) | 1997-06-17 | 1997-06-17 | Apparatus and method for MPEG video decompression |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19756210A1 DE19756210A1 (de) | 1998-12-24 |
DE19756210C2 true DE19756210C2 (de) | 2003-07-24 |
Family
ID=25369331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19756210A Revoked DE19756210C2 (de) | 1997-06-17 | 1997-12-17 | Verfahren und Vorrichtung zum Decodieren eines codierten MPEG-Videodatenstroms |
Country Status (3)
Country | Link |
---|---|
US (1) | US5990958A (de) |
KR (1) | KR100298533B1 (de) |
DE (1) | DE19756210C2 (de) |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG116400A1 (en) * | 1997-10-24 | 2005-11-28 | Matsushita Electric Ind Co Ltd | A method for computational graceful degradation inan audiovisual compression system. |
KR100301826B1 (ko) * | 1997-12-29 | 2001-10-27 | 구자홍 | 비디오디코더 |
US6823016B1 (en) * | 1998-02-20 | 2004-11-23 | Intel Corporation | Method and system for data management in a video decoder |
US6519288B1 (en) * | 1998-03-06 | 2003-02-11 | Mitsubishi Electric Research Laboratories, Inc. | Three-layer scaleable decoder and method of decoding |
CA2265089C (en) * | 1998-03-10 | 2007-07-10 | Sony Corporation | Transcoding system using encoding history information |
JP4277142B2 (ja) * | 1998-03-26 | 2009-06-10 | ソニー株式会社 | 受信装置 |
JP3372864B2 (ja) * | 1998-04-01 | 2003-02-04 | 日本電気株式会社 | 動画像伸長装置及び方法 |
US6490324B1 (en) | 1998-12-08 | 2002-12-03 | Stmicroelectronics, Inc. | System, method and apparatus for a variable output video decoder |
US6414996B1 (en) | 1998-12-08 | 2002-07-02 | Stmicroelectronics, Inc. | System, method and apparatus for an instruction driven digital video processor |
US7844167B1 (en) * | 1998-12-08 | 2010-11-30 | Stmicroelectronics, Inc. | System and apparatus for digital audio/video decoder splitting signal into component data streams for rendering at least two video signals |
US6275242B1 (en) * | 1998-12-31 | 2001-08-14 | Intel Corporation | Method and apparatus for terminating direct memory access transfers from system memory to a video device |
US6578203B1 (en) | 1999-03-08 | 2003-06-10 | Tazwell L. Anderson, Jr. | Audio/video signal distribution system for head mounted displays |
US6459737B1 (en) * | 1999-05-07 | 2002-10-01 | Intel Corporation | Method and apparatus for avoiding redundant data retrieval during video decoding |
US20020057364A1 (en) | 1999-05-28 | 2002-05-16 | Anderson Tazwell L. | Electronic handheld audio/video receiver and listening/viewing device |
US7210160B2 (en) | 1999-05-28 | 2007-04-24 | Immersion Entertainment, L.L.C. | Audio/video programming and charging system and method |
US6167092A (en) * | 1999-08-12 | 2000-12-26 | Packetvideo Corporation | Method and device for variable complexity decoding of motion-compensated block-based compressed digital video |
US6804266B1 (en) | 2000-01-24 | 2004-10-12 | Ati Technologies, Inc. | Method and apparatus for handling private data from transport stream packets |
US8284845B1 (en) | 2000-01-24 | 2012-10-09 | Ati Technologies Ulc | Method and system for handling data |
US6999424B1 (en) | 2000-01-24 | 2006-02-14 | Ati Technologies, Inc. | Method for displaying data |
US6778533B1 (en) | 2000-01-24 | 2004-08-17 | Ati Technologies, Inc. | Method and system for accessing packetized elementary stream data |
US6988238B1 (en) | 2000-01-24 | 2006-01-17 | Ati Technologies, Inc. | Method and system for handling errors and a system for receiving packet stream data |
US7366961B1 (en) | 2000-01-24 | 2008-04-29 | Ati Technologies, Inc. | Method and system for handling errors |
US6785336B1 (en) | 2000-01-24 | 2004-08-31 | Ati Technologies, Inc. | Method and system for retrieving adaptation field data associated with a transport packet |
US6885680B1 (en) | 2000-01-24 | 2005-04-26 | Ati International Srl | Method for synchronizing to a data stream |
US6763390B1 (en) | 2000-01-24 | 2004-07-13 | Ati Technologies, Inc. | Method and system for receiving and framing packetized data |
US7200138B2 (en) | 2000-03-01 | 2007-04-03 | Realtek Semiconductor Corporation | Physical medium dependent sub-system with shared resources for multiport xDSL system |
US7113546B1 (en) | 2000-05-02 | 2006-09-26 | Ati Technologies, Inc. | System for handling compressed video data and method thereof |
US7471298B1 (en) * | 2000-06-26 | 2008-12-30 | S3 Graphics Co., Ltd. | Fetching pixel data with reduced memory bandwidth requirement |
US7630721B2 (en) | 2000-06-27 | 2009-12-08 | Ortiz & Associates Consulting, Llc | Systems, methods and apparatuses for brokering data between wireless devices and data rendering devices |
US7812856B2 (en) | 2000-10-26 | 2010-10-12 | Front Row Technologies, Llc | Providing multiple perspectives of a venue activity to electronic wireless hand held devices |
US7796162B2 (en) * | 2000-10-26 | 2010-09-14 | Front Row Technologies, Llc | Providing multiple synchronized camera views for broadcast from a live venue activity to remote viewers |
US8583027B2 (en) | 2000-10-26 | 2013-11-12 | Front Row Technologies, Llc | Methods and systems for authorizing computing devices for receipt of venue-based data based on the location of a user |
US7782363B2 (en) | 2000-06-27 | 2010-08-24 | Front Row Technologies, Llc | Providing multiple video perspectives of activities through a data network to a remote multimedia server for selective display by remote viewing audiences |
US7149549B1 (en) | 2000-10-26 | 2006-12-12 | Ortiz Luis M | Providing multiple perspectives for a venue activity through an electronic hand held device |
FR2811846B1 (fr) * | 2000-07-17 | 2002-09-27 | Thomson Multimedia Sa | Procede et dispositif de lecture de donnees enregistrees mpeg transmises sur un bus ieee 1394 |
US7095945B1 (en) | 2000-11-06 | 2006-08-22 | Ati Technologies, Inc. | System for digital time shifting and method thereof |
US6975809B1 (en) * | 2000-11-14 | 2005-12-13 | Ati International, S.R.L. | Method and apparatus for passing clear DVD data in a computer |
US6873735B1 (en) * | 2001-02-05 | 2005-03-29 | Ati Technologies, Inc. | System for improved efficiency in motion compensated video processing and method thereof |
US7885336B2 (en) * | 2001-02-05 | 2011-02-08 | Ati Technologies Ulc | Programmable shader-based motion compensation apparatus and method |
CN1245839C (zh) * | 2001-07-04 | 2006-03-15 | 矽统科技股份有限公司 | 分散式视频数据流解码方法 |
US7218842B1 (en) | 2001-07-25 | 2007-05-15 | Cisco Technology, Inc. | Efficient methods of performing motion compensation based decoding and recoding of compressed video bitstreams |
US6996178B1 (en) * | 2001-08-27 | 2006-02-07 | Cisco Technology, Inc. | Look ahead motion compensation |
US20030185302A1 (en) * | 2002-04-02 | 2003-10-02 | Abrams Thomas Algie | Camera and/or camera converter |
US20030185301A1 (en) * | 2002-04-02 | 2003-10-02 | Abrams Thomas Algie | Video appliance |
US7769084B1 (en) | 2002-07-15 | 2010-08-03 | Apple Inc. | Method for implementing a quantizer in a multimedia compression and encoding system |
US7418037B1 (en) * | 2002-07-15 | 2008-08-26 | Apple Inc. | Method of performing rate control for a compression system |
US7009655B2 (en) | 2002-07-23 | 2006-03-07 | Mediostream, Inc. | Method and system for direct recording of video information onto a disk medium |
TW577229B (en) * | 2002-09-18 | 2004-02-21 | Via Tech Inc | Module and method for graphics display |
WO2004034617A1 (en) | 2002-10-07 | 2004-04-22 | Immersion Entertainment, Llc | System and method for providing event spectators with audio/video signals pertaining to remote events |
KR100551951B1 (ko) * | 2002-10-18 | 2006-02-20 | 주식회사 모티스 | 동영상 복호화 처리 시스템 및 가변장 복호화 시스템 |
US7804897B1 (en) | 2002-12-16 | 2010-09-28 | Apple Inc. | Method for implementing an improved quantizer in a multimedia compression and encoding system |
US7940843B1 (en) | 2002-12-16 | 2011-05-10 | Apple Inc. | Method of implementing improved rate control for a multimedia compression and encoding system |
GB2401759A (en) * | 2003-05-13 | 2004-11-17 | Nokia Corp | Method of signalling in a mobile communications network |
JP3680846B2 (ja) * | 2003-05-28 | 2005-08-10 | セイコーエプソン株式会社 | 動画像の圧縮装置及びそれを用いた撮像装置 |
JP3680845B2 (ja) * | 2003-05-28 | 2005-08-10 | セイコーエプソン株式会社 | 圧縮動画像の伸張装置及びそれを用いた画像表示装置 |
US7307669B2 (en) * | 2003-06-24 | 2007-12-11 | Broadcom Corporation | System, method, and apparatus for displaying streams with dynamically changing formats |
US20050094729A1 (en) * | 2003-08-08 | 2005-05-05 | Visionflow, Inc. | Software and hardware partitioning for multi-standard video compression and decompression |
US7593687B2 (en) | 2003-10-07 | 2009-09-22 | Immersion Entertainment, Llc | System and method for providing event spectators with audio/video signals pertaining to remote events |
ATE416569T1 (de) * | 2005-06-01 | 2008-12-15 | Nxp Bv | Verfahren und vorrichtung zur videodekodierung in mehreren durchgängen |
TWM289890U (en) * | 2005-09-16 | 2006-04-21 | Beacon Advanced Technology Co | Video integrated circuit and video processing apparatus thereof |
US7707334B2 (en) | 2005-11-18 | 2010-04-27 | Mobilic Technology (Cayman) Corp. | Self-synchronizing hardware/software interface for multimedia SOC design |
US20070126745A1 (en) * | 2005-12-05 | 2007-06-07 | Prolific Technology Inc. | Method and system for displaying digital video |
US20070192393A1 (en) * | 2006-02-14 | 2007-08-16 | Taiyi Cheng | Method and system for hardware and software shareable DCT/IDCT control interface |
US8238415B2 (en) * | 2006-02-14 | 2012-08-07 | Broadcom Corporation | Method and system for programmable breakpoints in an integrated embedded image and video accelerator |
US7929599B2 (en) * | 2006-02-24 | 2011-04-19 | Microsoft Corporation | Accelerated video encoding |
US7876695B2 (en) * | 2006-03-07 | 2011-01-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Communication station and method providing flexible compression of data packets |
JP4730183B2 (ja) * | 2006-04-17 | 2011-07-20 | 株式会社日立製作所 | 映像表示装置 |
GB0607726D0 (en) * | 2006-04-19 | 2006-05-31 | Setred Ab | High speed display shutter |
US20080094500A1 (en) * | 2006-10-20 | 2008-04-24 | Hewlett-Packard Development Company Lp | Frame filter |
US7876327B1 (en) * | 2006-12-21 | 2011-01-25 | Nvidia Corporation | Power savings in a computing device during video playback |
US8699582B2 (en) * | 2010-10-06 | 2014-04-15 | Qualcomm Incorporated | Context-based adaptations of video decoder |
KR20140028930A (ko) | 2012-08-31 | 2014-03-10 | 삼성전자주식회사 | 데이터 처리 장치 및 이의 데이터 처리 방법 그리고 그 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능 매체 |
US9258517B2 (en) * | 2012-12-31 | 2016-02-09 | Magnum Semiconductor, Inc. | Methods and apparatuses for adaptively filtering video signals |
US20170026648A1 (en) * | 2015-07-24 | 2017-01-26 | Mediatek Inc. | Hybrid video decoder and associated hybrid video decoding method |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5801775A (en) * | 1995-07-17 | 1998-09-01 | Nec Corporation | Moving picture compression using cache memory for storing coding instructions |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3436818B2 (ja) * | 1995-01-24 | 2003-08-18 | 株式会社東芝 | コンピュータシステムおよび動画再生方法 |
EP0762777A3 (de) * | 1995-09-04 | 1999-03-10 | Sharp Kabushiki Kaisha | Bildwiedergabevorrichtung |
US5768536A (en) * | 1995-10-26 | 1998-06-16 | Advanced Micro Devices, Inc. | Generation of a secondary video bitstream from a compressed video bitstream to enhance playback performance |
US5815206A (en) * | 1996-05-03 | 1998-09-29 | Lsi Logic Corporation | Method for partitioning hardware and firmware tasks in digital audio/video decoding |
US5818532A (en) * | 1996-05-03 | 1998-10-06 | Lsi Logic Corporation | Micro architecture of video core for MPEG-2 decoder |
-
1997
- 1997-06-17 US US08/877,136 patent/US5990958A/en not_active Expired - Lifetime
- 1997-12-16 KR KR1019970069392A patent/KR100298533B1/ko not_active IP Right Cessation
- 1997-12-17 DE DE19756210A patent/DE19756210C2/de not_active Revoked
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5801775A (en) * | 1995-07-17 | 1998-09-01 | Nec Corporation | Moving picture compression using cache memory for storing coding instructions |
Also Published As
Publication number | Publication date |
---|---|
DE19756210A1 (de) | 1998-12-24 |
US5990958A (en) | 1999-11-23 |
KR19990006296A (ko) | 1999-01-25 |
KR100298533B1 (ko) | 2005-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19756210C2 (de) | Verfahren und Vorrichtung zum Decodieren eines codierten MPEG-Videodatenstroms | |
DE69735402T2 (de) | System und Methode zur Bewegungskompensation mit Hilfe eines Schrägziegelspeicherformats für verbesserte Effizienz | |
DE69830802T2 (de) | Zuweisung von rechenleistung in einem informationsstrom-dekoder | |
DE69825710T2 (de) | Audio-Video Dekodierungssystem | |
AU687392B2 (en) | Adaptive video compression using variable quantization | |
DE19521973C2 (de) | Bilddecodiervorrichtung | |
US5850258A (en) | High level video decoding apparatus capable of decoding video data of a plurality of channels coded at a lower level | |
DE19709391A1 (de) | MPEG-Codier- und Decodiersystem für Multimediaanwendungen | |
DE69627920T2 (de) | Speichersteuerungsanordnung und Bilddekodierer damit | |
KR19980042224A (ko) | 트랜스포트, 복호화, 시스템 제어기 기능용 통합 메모리를 가지는 엠피이지 복호화기 시스템 및 방법 | |
CN1214626C (zh) | 用于高分辨率视频信号的抽取的装置和方法 | |
DE10113880B4 (de) | Verfahren zur Komprimierung und Dekomprimierung von Videodaten | |
US5926223A (en) | Adaptive video decompression | |
EP0776574B1 (de) | Verfahren zur decodierung komprimierter video-daten mit reduziertem speicherbedarf | |
DE69916662T2 (de) | Verfahren und vorrichtung zur bewegungskompensation in einem texturabbildungssystem | |
US7369612B2 (en) | Video decoder and method for using the same | |
DE69736620T2 (de) | Videodecoder mit einem horizontalen Polyphasen-Fir-Filter | |
DE69433537T2 (de) | Vorrichtung zur Dekodierung von Bewegtbilddaten | |
JP3123938B2 (ja) | 映像フレームデータを一メモリに貯蔵する方法 | |
DE69629442T2 (de) | Verfahren und Einrichtung zur Kodierung digitaler Videosignale | |
DE69736693T2 (de) | Bildsignalverarbeitungsvorrichtung und -verfahren | |
KR20050037787A (ko) | 화면 정지 기능을 갖는 비디오 디코딩 장치 및 방법 | |
JP3297309B2 (ja) | 符号化画像データの復号および表示装置 | |
AT503668B1 (de) | Verfahren und vorrichtung zur darstellung von signalen auf einer anzeigevorrichtung | |
KR20070011340A (ko) | 입체적 3d-비디오 이미지 디지털 코딩 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8304 | Grant after examination procedure | ||
8363 | Opposition against the patent | ||
8331 | Complete revocation |