-
Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich im allgemeinen auf digitale Videokompression
und im besonderen auf ein MPEG-Decodiersystem zur Durchführung von
Bewegungsausgleich, welches Makroblöcke in einer Anordnung versetzter
Kacheln speichert, um Seitenkreuzungen während Blockzugriffen zu verringern
und dadurch verbesserte Leistung zu liefern.
-
Stand der Technik
-
Digitales
Bewegtvideo beansprucht viel Speicherplatz und eine hohe Datenübertragungsbandbreite.
Deshalb verwenden Videosysteme verschiedene Arten von Videokompressionsalgorithmen,
um den notwendigen Speicherplatz und die erforderliche Übertragungsbandbreite
zu verringern. Für
graphische Standbilder und Bewegtvideo gibt es üblicherweise unterschiedliche
Verfahren zur Videokompression. Um Daten innerhalb eines Standbilds oder
eines einzelnen Vollbilds mittels räumlicher Redundanzen innerhalb
des Vollbilds zu komprimieren, werden Verfahren zur Intraframe Compression
eingesetzt. Um mehrere Vollbilder, d.h. Bewegtvideo, mittels der
zeitlichen Redundanz zwischen den Vollbildern zu komprimieren, werden
Verfahren zur Interframe Compression verwendet. Letztere werden
ausschließlich
für Bewegtvideo
benützt,
sei es allein oder in Verbindung mit Verfahren zur Intraframe Compression.
-
Techniken
zur Intraframe Compression oder Standbildkompression machen üblicherweise
von Frequenzbereichsverfahren, z.B. der Diskreten Cosinustransformation
(DCT), Gebrauch. Intraframe Compression verwendet typischerweise
die Frequenzmerkmale eines Picture Frames, um ein Vollbild effizient
zu codieren und räumliche
Redundanz zu entfernen. Videodatenkompression für graphische Standbilder bieten
beispielsweise die JPEG-Kompression (Joint Photographic Experts
Group) und die Lauflängencodierung
(Run Length Encoding/RLE). JPEG-Kompression vereinigt eine Gruppe
verwandter Standards, welche die Diskrete Cosinustransformation
(DCT) einsetzen, um entweder verlustfreie Kompression (ohne Beeinträchtigung
der Bildqualität)
oder verlustbehaftete Kompression (mit nicht wahrnehmbarer bis starker
Beeinträchtigung)
zu erstellen. Obwohl die JPEG-Kompression
ursprünglich vielmehr
für die
Kompression von Standbildern als für jene von Videobildern konzipiert
wurde, wird sie in einigen Bewegtvideoanwendungen eingesetzt. Das RLE-Kompressionsverfahren
funktioniert, indem eine einzige Zeile der Bitmap auf duplizierte
Pixel überprüft und anstelle
der Daten für
die Pixel selbst die Anzahl konsekutiver duplizierter Pixel gespeichert wird.
-
Im
Gegensatz zu den Kompressionsalgorithmen für Standbilder sind die meisten
Videokompressionsalgorithmen für
die Kompression von Bewegtvideo konzipiert. Wie oben erwähnt, verwenden
Videokompressionsalgorithmen für
Bewegtvideo ein als Interframe Compression bezeichnetes Konzept,
um zeitliche Redundanzen zwischen Vollbildern zu entfernen. Interframe
Compression beinhaltet, dass nur die Unterschiede zwischen aufeinanderfolgenden Vollbildern
in der Datendatei gespeichert werden. Bei der Interframe Compression
wird das gesamte Bild eines Schlüsselvollbilds
oder Referenzvollbilds gespeichert, und zwar gemeinhin in einem
mäßig komprimierten
Format. Aufeinanderfolgende Vollbilder werden mit dem Schlüsselvollbild
verglichen, und nur die Unterschiede zwischen dem Schlüsselvollbild und
den aufeinanderfolgenden Vollbildern werden gespeichert. In periodischen
Abständen,
z.B. wenn neue Szenen abgespielt werden, werden neue Schlüsselvollbilder
gespeichert, und anschließende Vergleiche
beginnen bei diesem neuen Referenzpunkt. Zu beachten gilt, dass
sich das Interframe Compression-Verhältnis konstant
halten lässt,
während
die Videoqualität
variiert wird. Alternativ dazu können
Interframe Compression-Verhältnisse
vom Inhalt abhängig
sein, was bedeutet, dass die Kompression weniger effizient ist,
wenn der Videoclip, welcher komprimiert wird, viele abrupte Szenenübergänge von
einem Bild zum nächsten
enthält.
Als Beispiele für
Videokompressionsverfahren, welche eine Interframe-Kompressionstechnik
benützen,
lassen sich MPEG, DVI und Indeo, u.a. anführen
-
Hintergrund
des MPEG-Standards
-
Unter
einem Kompressionsstandard, welcher als MPEG (Moving Pictures Experts
Group) bezeichnet wird, ist eine Gruppe von Verfahren zur Kompression
und Dekompression von Bewegtvideobildern zu verstehen, welche die
oben beschriebenen Techniken der Interframe und Intraframe Compression
einsetzt. MPEG-Kompression gebraucht u.a. sowohl den Prozess des
Bewegungsausgleichs als auch jenen der Diskreten Cosinustransformation (DCT)
und ist in der Lage, Kompressionsverhältnisse von über 200:1
hervorzubringen.
-
Die
beiden vorherrschenden MPEG-Standards werden MPEG-1 und MPEG-2 genannt.
Der MPEG-1-Standard betrifft im allgemeinen inter-field Datenreduktion
mittels blockbasierter Bewegungsausgleichsvorhersage (Motion Compensation
Prediction/MCP), welche üblicherweise
zeitliche differentielle Pulscodemodulation (Differential Pulse Code
Modulation/DPCM) verwendet. Der MPEG-2-Standard ähnelt dem MPEG-1-Standard, enthält jedoch
Erweiterungen zur Abdeckung eines größeren Anwendungsbereichs, in welchen
auch digitales Zeilensprungvideo, z.B. hochauflösendes Fernsehen (High Definition
Television/HDTV) fällt.
-
Verfahren
zur Interframe Compression wie MPEG gründen auf der Tatsache, dass
in den meisten Videosequenzen der Hintergrund verhältnismäßig stabil
bleibt, während
die Handlung im Vordergrund stattfindet. Der Hintergrund kann sich
durchaus bewegen, dennoch sind große Abschnitte aufeinanderfolgender
Vollbilder in einer Videosequenz redundant. Diese inhärente Redundanz
macht sich MPEG-Kompression zunutze, um Vollbilder in der Sequenz
zu codieren oder zu komprimieren.
-
Ein
MPEG-Strom umfasst drei Arten von Bildern, nämlich Intra (I)-Bilder, Prädiktions
(P)-Bilder und bidirektionale interpolierte (B)-Bilder. I-Bilder oder
Intraframes enthalten die Videodaten für den ganzen Videoframe und
sind typischerweise alle 10 bis 15 Vollbilder angeordnet. Intraframes
stellen Eingangspunkte in die Datei für Random Access zur Verfügung und
sind üblicherweise
nur mäßig komprimiert.
Prädiktionsbilder
werden im Bezug auf ein vergangenes Vollbild codiert, d.h. auf ein
vorangehendes Intraframe oder Prädiktionsbild.
Daher enthalten P-Bilder nur Veränderungen
im Bezug auf vorangehende I- oder
P-Bilder. Im allgemeinen werden Prädiktionsbilder einer ziemlich
starken Kompression unterzogen und als Referenzen für künftige Prädiktionsbilder
benützt.
Sowohl I- als auch P-Bilder
werden somit als Referenzen für
nachfolgende Vollbilder gebraucht. Bidirektionale Bilder werden
am stärksten komprimiert
und ihre Codierung erfordert nicht nur eine vergangene, sondern
auch eine künftige
Referenz. Als Referenzen für
andere Vollbilder werden bidirektionale Bilder nie verwendet.
-
Bei
dem (den) Vollbild(ern), welche(s) einem Referenzvollbild folgt(-en),
d.h. bei P- und
B-Bildern, welche einem Referenz-I- oder Referenz-P-Bild folgen,
unterscheiden sich nur kleine Abschnitte dieser Vollbilder von den
entsprechenden Abschnitten des entsprechenden Referenzvollbilds.
Deshalb werden für
diese Vollbilder nur die Unterschiede festgehalten, komprimiert
und gespeichert. Die Unterschiede zwischen diesen Vollbildern werden
typischerweise unter Verwendung von Bewegungsvektorvorhersagelogik
erzeugt, wie nachstehend erläutert.
-
Empfängt ein
MPEG-Codierer eine Videodatei oder einen Bitstrom, erzeugt er im
allgemeinen zunächst
die I-Bilder. Der MPEG-Codierer ist in der Lage, das I-Bild mittels
einer verlustfreien Technik zur Intraframe Compression zu komprimieren.
Nach Erzeugung der I-Bilder teilt der MPEG-Codierer die jeweiligen
Vollbilder in ein Gitter aus 16 × 16 Pixelquadraten, welche
Makroblöcke
genannt werden. Die Einteilung der jeweiligen Vollbilder in Makroblöcke wird
zwecks Durchführung
von Bewegungsschätzung/Bewegungsausgleich
vorgenommen. Deshalb sucht der Codierer für ein jeweiliges Zielbild oder Zielvollbild,
d.h. für
ein Vollbild, welches codiert wird, nach einer exakten, oder nahezu
exakten, Entsprechung zwischen dem Zielbildmakroblock und einem Block
in einem benachbarten Bild, welches als Suchvollbild bezeichnet
wird. Für
ein Ziel-P-Bild
sucht der Codierer in einem vorangehenden I- oder P-Bild. Für ein Ziel-B-Bild
sucht der Codierer in einem vorangehenden und/oder nachfolgenden
I- oder P-Bild. Sobald eine Entsprechung gefunden ist, überträgt der Codierer
einen Vektorbewegungscode oder einen Bewegungsvektor. Der Vektorbewegungscode
oder Bewegungsvektor enthält
nur Informationen über
den Unterschied zwischen dem Suchvollbild und dem jeweiligen Zielbild.
Jene Blöcke
in Zielbildern, welche keine Verränderung gegenüber dem
Block in dem Referenzbild oder I-Bild aufweisen, werden nicht beachtet.
Auf diese Weise wird die tatsächlich
für diese Vollbilder
gespeicherte Datenmenge erheblich verringert.
-
Nach
Erzeugung der Bewegungsvektoren codiert der Codierer die Veränderungen
unter Verwendung räumlicher
Redundanz. Nachdem die Veränderungen
an den jeweiligen Stellen der Makroblöcke gefunden wurden, berechnet
der MPEG-Algorithmus ferner den Unterschied zwischen entsprechenden
Makroblöcken
und codiert diesen. Das Codieren des Unterschieds erfolgt mittels
eines mathematischen Vorgangs, welcher als Diskrete Cosinustransformation
oder DCT bezeichnet wird. Dieser Vorgang teilt den Makroblock in
Unterblöcke,
wobei Veränderungen
in Farbe und Helligkeit ausfindig gemacht werden. Die menschliche
Wahrnehmung reagiert auf Helligkeitsveränderungen empfindlicher als
auf Farbveränderungen.
Aus diesem Grund verwendet der MPEG-Algorithmus mehr Leistung auf
die Verringerung des Farbabstands als auf die Helligkeit.
-
Folglich
basiert MPEG-Kompression auf zwei Arten von Redundanz in Videosequenzen,
nämlich
auf der räumlichen,
bei der es sich um die Redundanz in einem individuellen Vollbild
handelt, und auf der zeitlichen, bei der es sich um die Redundanz zwischen
aufeinander folgenden Vollbildern handelt. Räumliche Kompression wird durch
Berücksichtigen der
Frequenzmerkmale eines Picture Frames erreicht. Zunächst wird
jedes Vollbild in einander nicht überlappende Blöcke geteilt,
dann wird jeder Block mittels der Diskreten Cosinustransformation
(DCT) transformiert. Nachdem die transformierten Blöcke zum „DCT-Bereich" konvertiert wurden,
wird jeder Eingang in den transformierten Block mit Bezug auf eine
Gruppe von Quantisierungstabellen quantisiert. Unter Berücksichtigung
der Empfindlichkeit des visuellen Wahrnehmungssystems des Menschen
gegenüber
der Frequenz kann der Schritt des Quantisierens für jeden
Eingang variieren. Da das visuelle Wahrnehmungssystem des Menschen
niedrigen Frequenzen gegenüber
empfindlicher ist, werden die meisten hohen Frenquenzeingänge zu Null
quantisiert. In diesem Schritt, in welchem die Eingänge quantisiert
werden, gehen Informationen verloren, und Fehler werden in das rekonstruierte
Bild eingeschleppt. Zur Übertragung
der quantisierten Werte wird Lauflängencodierung angewandt. Um
die Kompression weiter zu erhöhen,
werden die Blöcke
im Zickzack abgetastet, wobei das Abtasten der niedrigeren Frequenzeingänge zuerst
erfolgt, und die nicht zu Null quantisierten Werte werden zusammen
mit den Zero Run Lengths entropisch codiert.
-
Wie
oben erläutert,
nutzt zeitliche Kompression die Tatsache, dass die meisten der Objekte
im Verlauf der aufeinander folgenden Picture Frames die Gleichen
bleiben, und der Unterschied zwischen Objekten oder Blöcken in
aufeinander folgenden Vollbildern liegt in deren Position in dem
Vollbild infolge von Bewegung (entweder von Objektbewegung oder Kamerabewegung
oder von beidem). Der Schlüssel zu
dieser relativen Codierung heißt
Bewegungsschätzung.
Bewegungsschätzung
ist gemeinhin bei den meisten Videokompressionsalgorithmen ein wesentliches
Verarbeitungserfordernis. Wie oben beschrieben, kommt der Bewegungsschätzung die
Aufgabe zu, zeitliche Redundanz zwischen Vollbildern der Videosequenz
zu identifizieren.
-
Empfängt ein
MPEG-Decodierer einen codierten Strom, kehrt er die obigen Abläufe um.
So nimmt der MPEG-Decodierer eine Rückwärtsabtastung vor, um die Zickzackanordnung
zu entfernen, eine Rückquantisierung,
um die Daten zu dequantisieren, und die inverse DCT, um die Daten
aus dem Frequenzbereich zurück
in den Pixelbereich zu konvertieren. Außerdem führt der MPEG-Decodierer mittels
der übertragenen
Bewegungsvektoren einen Bewegungsausgleich durch, um die zeitlich
komprimierten Vollbilder wiederherzustellen.
-
Wenn
Vollbilder empfangen werden, welche als Referenzen für andere
Vollbilder benützt
werden, z.B. I- oder P-Bilder, werden diese Vollbilder decodiert
und im Speicher abgelegt. Bei Empfang eines zeitlich komprimierten
oder codierten Vollbilds, wie eines P- oder B-Bilds, wird auf dem Vollbild
mittels der zuvor decodierten I- oder P-Referenzvollbilder Bewegungsausgleich
durchgeführt.
Das zeitlich komprimierte oder codierte Vollbild, welches als Zielvollbild
bezeichnet wird, enthält
Bewegungsvektoren, welche auf Referenzblöcke in zuvor decodierten I- oder
P-Bildern zeigen, die in dem Speicher gespeichert sind. Der MPEG-Decodierer
untersucht den Bewegungsvektor, bestimmt den jeweiligen Referenzblock
in dem Referenzvollbild und greift auf jenen Referenzblock zu, auf
welchen der Bewegungsvektor aus dem Speicher zeigt.
-
Ein
typischer MPEG-Decodierer enthält
Bewegungsausgleichslogik, welche einen örtlichen Speicher oder On-Chip-Speicher
umfasst. Überdies weist
der MPEG-Decodierer einen externen Speicher auf, welcher vorangehende
decodierte Referenzvollbilder speichert. Bei dem externen Speicher
handelt es sich bezeichnenderweise um einen Seitenspeicher, welcher
Daten auf mehreren Seiten speichert. Wird auf Daten innerhalb einer
Seite zugegriffen, erfolgen, wie dies wohlbekannt ist, die Speicherzugriffe rasch,
d.h. ohne Wartezustände,
da die Reihenadresse bekannt ist. Wenn es jedoch zu einem Page Miss
oder einer Seitenkreuzung kommt, d.h. wenn Daten benötigt werden,
welche sich auf einer anderen Seite befinden, als auf jener, auf
die gerade zugegriffen wird, dann werden ein neues RAS und ebensolches
CAS benötigt,
was Wartezustände
notwendig macht. Dies erhöht
die Speicherzugriffslatenz und verringert damit die Systemleistung.
-
EP 0503956 beschreibt, wie
ein Bewegungsvektor dafür
sorgt, dass ein vorhergesagter Makroblock, der nicht an die Seitengrenzen
eines externen Speichers angepasst ist, aus dem externen Speicher gelesen
werden kann. Da die Pixel in Spaltenfolge geholt werden und sich
in einer Pixelreihe eines Makroblocks 16 Pixel befinden, erfordert
das Holen eines Makroblocks potentiell das 16-malige Kreuzen einer
DRAM-Seitengrenze. Eine Lösung
wird vorgeschlagen, bei welcher der Makroblock in zwei Teilen geholt
wird. In der ersten Bewegungsausgleichsphase wird der Teil des Makroblocks über der
horizontalen Speichergrenze in Spaltenfolge geholt. Ist die Speichergrenze
in jeder Spalte erreicht, wird jedoch das erste Pixelpaar aus der
nächsten
Spalte geholt, anstatt die Speichergrenze zu kreuzen, um das nächste Pixelpaar
der Spalte zu holen.
-
EP 0697794 beschreibt ein
Verfahren und eine Vorrichtung zur effizienten DRAM-Adressierung in einem
Viedeodekompressionsprozessor: Pixeldaten werden gespeichert und
anschließend
aus einem Random Access Memory eines Videodekompressionsprozessors
in einer Weise gelesen, welche die Häufigkeit verringert, mit welcher
verschiedene Reihen des RAM adressiert werden müssen, um Abschnitte der Pixeldaten
daraus abzurufen. Pixeldaten aus einem Videoframe werden in dem
RAM als eine Mehrzahl von Seiten gespeichert. Jede Seite füllt im wesentlichen
eine andere Reihe des RAM und entspricht einem anderen Abschnitt
des Videoframes. Ein Bewegungsvektor wird decodiert, um den Ort
eines Vorhersagebereichs innerhalb des Videoframes zu bestimmen.
Falls der Vorhersagebereich mehr als eine der Seiten des Videoframes
umfasst, werden die Pixeldaten Seite für Seite abgerufen, und die
Anzahl der erforderlichen Reihenwechsel bei Adressierung des RAM
zwecks Abrufs der Daten wird minimiert.
-
Aufgrund
obiger Erläuterungen
sind ein neues System und Verfahren zur effizienten Durchführung von
Bewegungsausgleich in einem MPEG-Decodierer erwünscht. Weiterhin sollen ein
neues System und Verfahren die maximale Anzahl von Speicherseitenkreuzungen
beim Abruf von Referenzblockdaten zur Verwendung bei Bewegungsausgleich
minimieren. Darüber
hinaus wird von einem neuen System und Verfahren erwartet, dass
sie garantierte Leitungsmerkmale bieten.
-
Zusammenfassung der Erfindung
-
Die
vorliegende Erfindung umfasst ein MPEG-Decodiersystem und -verfahren
zur Decodierung von Vollbildern einer Videosequenz. Der MPEG-Decodierer
enthält
Bewegungsausgleichslogik, welche Bewegungsvektoren in einem codierten Vollbild
des MPEG-Stroms genau untersucht und zuvor decodierte Referenzblöcke verwendet,
um die von dem Bewegungsvektor codierten Daten wiederherzustellen.
Der MPEG-Decodierer speichert Referenzblockdaten entsprechend einer
neuartigen Anordnung versetzter Kacheln, um die maximale Anzahl
von Seitenkreuzungen, welche beim Abrufen dieser Daten aus dem Speicher
erforderlich ist, zu verrigern. Dies verschafft garantierte Leistung
und verbesserte Effizienz gemäß der vorliegenden
Erfindung.
-
Vorzugsweise
umfasst die vorliegende Erfindung ein Computersystem mit einem Videodecodierer
oder einem MPEG-Decodierer, welcher eine komprimierte Videodatei
oder einen ebensolchen Video-Bitstrom empfängt und einen unkomprimierten oder
decodierten Videostrom erzeugt. Der MPEG-Decodierer enthält einen
Bewegungsausgleichsblock mit einem örtlichen Speicher. Ein externer
Vollbildspeicher ist an den Bewegungsausgleichsblock gekoppelt,
welcher Referenz- oder Zielvollbilddaten speichert. Der MPEG-codierte
Strom umfasst zeitlich codierte Vollbilddaten, welche Bewegungsvektoren
enthalten, die jeweils auf einen Referenzblock in einem Referenzvollbild
der in dem Vollbildspeicher gespeicherten Videodaten zeigen. Das Bewegungsausgleichssystem
hat die Funktion, einen Zielblock mittels Bewegungsvektoren zu einem
zuvor decodierten Block zu decodieren, welcher als Referenz- oder
Suchblock bezeichnet wird. Der Bewegungsausgleichsblock analysiert
die Bewegungsvektoren und ruft die jeweiligen Referenzblöcke in Reaktion
auf die Bewegungsvektoren aus dem Vollbildspeicher ab.
-
Die
Referenzblöcke
werden in dem externen Speicher gespeichert, und es wird von der
Bewegungsausgleichslogik nach Bedarf auf sie zugegriffen. Im allgemeinen
ist der Bewegungsausgleichslogik nicht im Voraus bekannt, welche
Referenzblöcke aus
einem Referenzvollbild für
den Bewegungsausgleich benötigt
werden. Bei dem Speicher handelt es sich um einen Seitenspeicher,
welcher Daten auf einer oder mehr Seiten speichert. Gemäß der vorliegenden
Erfindung wird jeder der Referenzblöcke in dem Referenzvollbild
entsprechend einer neuartigen Anordnung versetzter Kacheln in dem
Speicher gespeichert. Diese Speicheranordnung versetzter Kacheln
begrenzt die maximale Anzahl von Seitenkreuzungen, zu denen es bei
Abruf eines Referenzblocks aus dem externen Speicher kommt.
-
Vorzugsweise
speichert der Vollbildspeicher mehrere Reihen von Makroblöcken, wobei
jede Seite des Vollbildspeichers einen oder mehr Makroblöcke auf
einer jeweiligen Reihe speichert. Gemäß der vorliegenden Erfindung
sind jene Seiten, welche Makroblöcke
auf benachbarten Reihen speichern, im Bezug aufeinander versetzt,
um die maximale Anzahl von Seitenkreuzungen zu minimieren, wenn
ein Referenzblock von Daten aus dem Vollbildspeicher abgerufen wird.
In der bevorzugten Ausführungsform speichert
jede Seite des Vollbildspeichers zwei aneinander grenzende Makroblöcke auf
einer Reihe, und auf benachbarten Reihen gespeicherte Makroblöcke sind
im Bezug aufeinander um eine Makroblockbreite versetzt, damit die
maximale Anzahl von Seitenkreuzungen innerhalb eines vorhergesagten
Halbbildmakroblocks minimiert wird.
-
Auf
diese Weise führt
die vorliegende Erfindung Bewegungsausgleich mit verbesserter Speicherzugriffseffizienz
und/oder garantierten Leistungsmerkmalen durch.
-
Kurzbeschreibung der Zeichnungen
-
Ein
besseres Verständnis
der vorliegenden Erfindung lässt
sich unter Berücksichtigung
der nachstehenden detaillierten Beschreibung der bevorzugten Ausführungsform
in Verbindung mit den folgenden Zeichnungen gewinnen, bei welchen:
-
1 ein
Computersystem veranschaulicht, welches Videodecodierung durchführt und
eine Bewegungsausgleichslogik mit einem Vollbildspeicher umfasst,
welcher Referenzblockdaten in einer neuartigen Anordnung versetzter
Kacheln gemäß der vorliegenden
Erfindung speichert;
-
2 ein
Blockdiagramm darstellt, welches das Computersystem aus 1 erläutert;
-
3 ein
Blockdiagramm ist, welches einen MPEG-Decodierer gemäß der vorliegenden
Erfindung zeigt;
-
4 die
Speicherung von Referenzblöcken entsprechend
einer neuartigen Anordnung versetzter Kacheln gemäß der vorliegenden
Erfindung veranschaulicht;
-
5 Bewegungsausgleich
mittels vollbildbasierter Vorhersage darstellt, wobei der DCT-Block Daten
in einem Vollbildmodus speichert, und zwar einschließlich Zeilen
aus alternierenden Halbbildern; und
-
6 Bewegungsausgleich
mittels vollbildbasierender Vorhersage darstellt, wobei der DCT-Block
Daten in einem Halbbildmodus speichert, und zwar einschließlich Zeilen
von einem einzigen Halbbild.
-
Detaillierte Beschreibung
-
Videokompressionssystem
-
Unter
Bezugnahme auf 1 wird nun ein System zur Durchführung von
Videodecodierung oder -dekompression erläutert, welches ein Bewegungsausgleichssystem
gemäß der vorliegenden
Erfindung umfasst. Während
einer Videodecodierung oder -dekompression führt das System der vorliegenden
Erfindung einen Bewegungsausgleich zwischen zeitlich komprimierten
Vollbildern einer Videosequenz durch. Anders ausgedrückt, empfängt das System
der vorliegenden Erfindung Bewegungsschätzungsvektoren, welche Blöcke eines
Videovollbilds repräsentieren,
und stellt die komprimierten Daten im Verlauf der Videodekompression
wieder her. Allerdings lässt
sich das System der vorliegenden Erfindung nach Wunsch bei jeder
beliebigen der vielen Anwendungsarten zwecks Durchführung von
Bewegungsausgleich einsetzen.
-
Wie
dargestellt, beinhaltet das Videodecodier- oder Videodekompressionssystem
in einer Ausführungsform
ein Mehrzweckcomputersystem 60. Das Videodecodiersystem
kann jeden beliebigen der verschiedenen Systemtypen umfassen, einschließlich eines
Computersystems, einer Set-Top-Box, eines Fernsehers oder irgendeines
anderen Geräts.
-
Vorzugsweise
ist das Computersystem 60 an eine Medienspeichereinheit 62 gekoppelt,
welche digitale Videodateien speichert, die von dem Computersystem 60 dekomprimiert
oder decodiert werden sollen. Die Medienspeichereinheit 62 kann
außerdem
die daraus hervorgehende decodierte oder dekomprimierte Videodatei
speichern. Das Computersystem 60 der bevorzugten Ausführungsform
empfängt
eine komprimierte Videodatei oder einen komprimierten Bitstrom und
erzeugt eine normale unkomprimierte digitale Videodatei. In der
vorliegenden Offenbarung bezieht sich der Begriff „komprimierte
Videodatei" auf
eine Videodatei, die entsprechend eines beliebigen der verschiedenen Videokompressionsalgorithmen
komprimiert wurde, welche Techniken zur Bewegungsausgleichsschätzung verwenden,
einschließlich
des MPEG-Standards, u.a., und der Begriff „unkomprimierte digitale Videodatei" bezieht sich auf
einen Strom von decodiertem oder unkomprimiertem Video.
-
Wie
gezeigt, umfasst das Computersystem 60 vorzugsweise einen
Videodecodierer 74, welcher Vorgänge der Videodecodierung oder
-dekompression ausführt.
Bei dem Videodecodierer 74 handelt es sich vorrangig um
einen MPEG-Decodierer. Optional kann das Computersystem 60 auch
einen MPEG-Codierer 76 einschließen. Der MPEG-Decodierer 74 und
der MPEG-Codierer 76 sind vorzugsweise Adapterkarten, welche
an einen Bus in dem Computersystem gekoppelt, aber zur besseren
Veranschaulichung außerhalb
des Computersystems 60 dargestellt sind. Das Computersystem 60 beinhaltet
außerdem
durch Floppy Disks 72 repräsentierte Software, welche
Abschnitte des Videodekompressions oder -decodiervorgangs und/oder
nach Wunsch auch andere Vorgänge
durchführen
kann.
-
Vorzugsweise
weist das Computersystem 60 verschiedene Standardkomponenten
auf einschließlich
eines oder mehrerer Prozessoren, eines oder mehrerer Busse, einer
Festplatte und eines Speichers. 2 zeigt
ein Blockdiagramm, welches die in das Computersystem aus 1 eingegliederten Komponenten
darstellt. Zu beachten gilt, dass 2 lediglich
der Veranschaulichung dient, und nach Wunsch auch andere Computerarchitekturen
verwendbar sind. Wie dargestellt, umfasst das Computersystem mindestens
einen Prozessor 80, welcher mittels Chipsatzlogik 82 an
einen Systemspeicher 84 gekoppelt ist. Vorzugsweise enthält der Chipsatz 82 eine
PCI-Brücke
(Peripheral Component Interconnect), um mit dem PCI-Bus 86 zu
interfacen, oder eine andere Art von Busbrücke, um mit einem anderen Typ
eines Expansionsbuses zu interfacen. In 2 sind der
MPEG-Decodierer 74 und der MPEG-Codierer 76 mit einem PCI-Bus 86 verbunden dargestellt.
Verschiedene andere Komponenten können ebenfalls in das Computersystem
eingebunden sein, z.B. eine Videoeinheit 88 und eine Festplatte 90.
-
Wie
oben erwähnt,
enthält
das Computersystem 60 in der bevorzugten Ausführungsform
aus 1 eine oder mehrere Digital- oder Medienspeichervorrichtungen
oder ist an diese gekoppelt. Mittels eines Kabels 64 ist
beispielsweise das Computersystem 60 in der Ausführungsform
aus 1 an die Medienspeichereinheit 62 gekoppelt.
Diese Medienspeichereinheit 62 umfasst vorzugsweise ein RAID-System
(Redundant Array of Inexpensive Disks/Redundante Ansammlung preiswerter
Festplatten) oder ein oder mehrere CD-ROM Laufwerke und/oder eine
oder mehrere DVD-Speichereinheiten (Digital Video Disk) oder auch
andere Speichermedien für
Digital Video, das dekomprimiert werden soll, und/oder für die daraus
resultierenden decodierten Videodaten. Das Computersystem 60 kann
ferner eine oder mehrere interne RAIDs und ein oder mehrere CD-ROM-Laufwerke
enthalten und/oder kann mit einer oder mehreren separaten DVD (Digital
Video Disk)-Speichereinheiten
verbunden sein. Überdies
kann das Computersystem 60 nach Wunsch mit anderen Arten
digitaler oder analoger Speichervorrichtungen oder -medien verbunden
sein.
-
Als
Alternative dazu kann die komprimierte digitale Videodatei aus einer
externen Quelle empfangen werden, z.B. einem entfernten Speichergerät, einem
entfernten Computersystem, einem Satelliten oder einem Kabelnetzwerk.
In dieser Ausführungsform
beinhaltet das Computersystem vorzugsweise ein Inputgerät zum Empfangen
der digitalen Videodatei, z.B. eine ATM-Adapterkarte (Asynchroner
Transfermodus) oder einen ISDN-Terminaladapter
(Integrated Services Digital Network) oder einen anderen digitalen
Datenempfänger.
Die digitale Videodatei kann auch in Analogformat gespeichert/empfangen und
in Digitaldaten umgewandelt werden, und zwar entweder außerhalb
oder innerhalb des Computersystems 60.
-
Wie
oben erwähnt,
führt der
MPEG-Decodierer 74 in dem Computersystem 60 Videodecodier- oder
Videodekompressionsfunktionen aus. Bei Ausführung von Videodecodierung
oder Videodekompression empfängt
der MPEG-Decodierer 74 zeitlich komprimierte Vollbilder,
welche Bewegungsvektoren enthalten, und verwendet Bewegungsausgleichstechniken,
um die komprimierten Vollbilder der digitalen Videodatei zu dekomprimieren
oder zu decodieren. Wie nachstehend weiter erläutert, speichert der MPEG-Decodierer 74 in
dem Computersystem 60 zuvor decodierte Vollbilder in einem
Speicher im Kachel-Format, um effizienten Zugriff auf gewünschte Referenzblöcke bei
verringerten Seitenkreuzungen zu ermöglichen. Somit führt der
MPEG-Decodierer 74 Bewegungsausgleich mit verbesserter
Effizienz und garantierter Leistung gemäß der vorliegenden Erfindung
durch.
-
Zu
beachten gilt, dass das System zur Decodierung oder Dekompression
von Videodaten nach Wunsch zwei oder mehr untereinander verbundene Computer
einschließen
kann. Überdies
kann das System zur Decodierung oder Dekompression von Videodaten
andere Hardware umfassen, z.B. eine Set-Top-Box, die entweder allein
oder in Verbindung mit einem programmierbaren Mehrzweckcomputer eingesetzt
wird. Anzumerken ist, dass sich je nach Wunsch jede beliebige der
verschiedenen Systemarten zur Decodierung oder Dekompression von
Videodaten gemäß der vorliegenden
Erfindung anwenden lässt.
-
3 – Blockdiagramm
eines MPEG-Decodierers
-
Unter
Bezugnahme auf 3 wird nun ein Blockdiagramm
des MPEG-Decodierers 74 erläutert, welcher Bewegungsausgleich
gemäß der vorliegenden
Erfindung durchführt.
Wie dargestellt, empfängt der
Videodecodierer 74 einen codierten oder komprimierten digitalen
Videostrom und gibt einen unkomprimierten digitalen Videostrom aus.
Bei diesem komprimierten digitalen Videostrom handelt es sich um einen
Bitstrom aus komprimierten Videodaten, welche benützt werden,
um eine Videosequenz, wie einen Fernsehausschnitt oder einen Spielfilm,
auf einem Bildschirm z.B. eines Fernsehers oder eines Computersystems,
darzustellen. In der bevorzugten Ausführungsform wird der komprimierte
digitale Videostrom mittels des MPEG-2 Kompressionsalgorithmus komprimiert,
und demzufolge wird als Videodecodierer 74 vorzugsweise
ein MPEG-2 Decodierer eingesetzt. Da die Funktionsweise von MPEG-Decodierern
nach Stand der Technik wohlbekannt ist, werden Einzelheiten davon,
welche für
das Funktionieren der vorliegenden Erfindung nicht von Belang sind,
der Einfachheit halber weggelassen.
-
Wie
aus 3 ersichtlich, umfasst der MPEG-Decodierer 74 einen
Decodierblock 102 mit veränderlicher Länge, welcher
gekoppelt ist, um eine Ausgabe an einen Rückwärtsabtastungsblock 104 zu liefern,
welcher gekoppelt ist, um eine Ausgabe an einen Rückquantisierungsblock 106 zu
liefern, welcher gekoppelt ist, um eine Ausgabe an einen Block 108 der
inversen DCT zu liefern, welcher gekoppelt ist, um eine Ausgabe
an einen Bewegungsausgleichsblock 110 zu liefern. Der Bewegungsausgleichsblock 110 liefert
seinerseits eine Ausgabe, welche decodierte Samples umfasst. Ein
Vollbildspeicher 112 ist an den Ausgang des Bewegungsausgleichsblocks 110 gekoppelt,
um decodierte Vollbilddaten zu empfangen und zu speichern. Der Bewegungsausgleichsblock 110 ist
an einen Ausgang des Vollbildspeichers 112 gekoppelt, um
Referenzblockdaten aus dem Vollbildspeicher 112 während des
Bewegungsausgleichs zu empfangen.
-
3 zeigt
weiterhin, dass der Decodierblock 102 mit veränderlicher
Länge codierte
Daten empfängt
und Decodierung mit veränderlicher
Länge durchführt. Wie
allgemein bekannt, sorgt der MPEG-Standard dafür, dass Daten zur Übertragung mittels
Codes mit veränderlicher
Länge komprimiert werden.
Daher decodiert der Decodierblock 102 mit veränderlicher
Länge diese
Daten und erzeugt eine Ausgabe, welche als QFS[n] bezeichnet wird.
Die Ausgabe QFS[n] des Decodierblocks 102 mit veränderlicher
Länge wird
dem Rückwärtsabtastungsblock 104 zur
Verfügung
gestellt. Der Rückwärtsabtastungsblock 104 kehrt
die Zickzack-Abtast-Ordnung der empfangenen Daten (ist dies richtig)
um und erzeugt eine Ausgabe, welche als QF[v][u] bezeichnet wird.
Die Ausgabe QF[v][u] wird dem Rückquantisierungsblock 106 zur
Verfügung
gestellt. Der Rückquantisierungsblock 106 führt Rückquantisierung durch
oder dequantisiert die Daten, um dequantisierte Daten zu erzeugen,
welche als F[v][u] bezeichnet werden. Die Ausgabe F[v][u] des Rückquantisierungsblocks 106 wird
dem Block 108 der inversen Diskreten Cosinustransformation
zur Verfügung
gestellt, welcher die inverse Diskrete Cosinustransformation durchführt, um
die Daten aus dem Frequenzbereich zurück in den Pixelbereich zu konvertieren. Der
Block 108 der inversen DCT erzeugt eine Ausgabe, welche
als f[y][x] bezeichnet wird. Die Ausgabe f[y][x] des Blocks 108 der
inversen DCT wird dem Bewegungsausgleichsblock 110 zur
Verfügung
gestellt.
-
Die
Ausgabe f[y][x] aus dem Block 108 der inversen DCT umfasst
zeitlich codierte Vollbilder aus Pixeldaten. Der Bewegungsausgleichsblock 110 dekomprimiert
die zeitlich komprimierten Vollbilder mittels Bewegungsausgleichstechniken.
Wie oben beschrieben, enthält
ein MPEG-codierter Strom I-, P- und B-Bilder. P- und B-Bilder sind
im Bezug auf andere Vollbilder zeitlich komprimiert. P-Bilder sind
im Bezug auf vorangehende I- oder P-Bilder zeitlich komprimiert, und B-Bilder
sind im Bezug auf vorangehende oder nachfolgende I- oder P-Bilder
zeitlich komprimiert. Wird ein Vollbild zeitlich komprimiert, wird
es in Makroblöcke
aufgeteilt, welche Zielblöcke genannt
werden, und dann sucht das Kompressionsverfahren in benachbarten
Vollbildern nach Blöcken, welche
dem Block, der codiert wird, am ähnlichsten sind.
Sobald der am besten passende Block gefunden ist, wird der jeweilige
Zielblock durch einen Bewegungsvektor codiert, welcher auf diesen
am besten passenden Referenzblock in dem Referenzvollbild zeigt.
Der Unterschied zwischen dem Block, der codiert wird, und dem am
besten passenden Block wird außerdem
errechnet und in den MPEG-Strom transferiert.
-
Aus
dem Bewegungsausgleichsblock 110 ausgegebene Pixelwerte
werden einem Vollbildspeicher 112 zur Verfügung gestellt.
Folglich ist der Vollbildspeicher 112 an den Bewegungsausgleichsblock 110 gekoppelt
und speichert eines oder mehr Referenzvollbilder von Videodaten.
Diese Referenzvollbilder von Videodaten werden verwendet bei Durchführung von
Bewegungsausgleich auf zeitlich komprimierten Vollbildern, wie P-
und B-Bildern. Im allgemeinen umfasst ein MPEG-Strom kodierte Referenzvollbilddaten,
welche vor zeitlich komprimierten Daten übertragen werden, welche von
den zuvor übertragenen
Referenzvollbilddaten abhängen.
Somit enthalten eintreffende zeitlich kodierte Vollbilddaten, wie
P- und B-Bilddaten, Bewegungsvektoren, welche auf Referenzblöcke in einem
zuvor übertragenen
Referenzvollbild von Videodaten zeigen, welches in dem Vollbildspeicher 112 gespeichert
wurde. Der Bewegungsausgleichsblock 110 analysiert jeden
Bewegungsvektor aus den eintreffenden zeitlich komprimierten Daten
und ruft einen Referenzblock aus dem Vollbildspeicher 112 als
Reaktion auf jeden Bewegungsvektor ab. Der Bewegungsausgleichsblock 110 enthält einen örtlichen
Speicher oder On-Chip-Speicher 116, welcher den abgerufenen
Referenzblock speichert. Der Bewegungsausgleichsblock 110 benützt dann
diesen abgerufenen Referenzblock, um die zeitlich komprimierten
Daten zu dekomprimieren.
-
In
der bevorzugten Ausführungsform
ist der Vollbildspeicher 112 ein 1M × 16 SDRAM, z.B. ein Samsung
KM416S1120AT-12, mit einer Betriebsfrequenz von 67.5 MHz und einer
Burst-Größe von vier Worten.
Vorzugsweise handelt es sich bei dem Vollbildspeicher 112 um
einen Seitenspeicher, welcher Daten auf mehreren Seiten speichert.
Wie dies wohlbekannt ist, verwenden Seitenspeicher bezeichnenderweise
ein RAS (Row Address Strobe/Reihenadresssignal) und ein CAS (Column
Address Strobe/Spaltenadresssignal), um auf Daten innerhalb der jeweiligen
Seiten zuzugreifen. Dass beim Zugriff auf Daten innerhalb einer
Seite die Speicherzugriffe schnell erfolgen, weil die Reihe bekannt
ist, und Wartezustände
nicht erforderlich sind, ist ebenfalls Allgemeingut. Wenn es jedoch
zu einem Page Miss oder zu einer Seitenkreuzung kommt, d.h. wenn
Daten benötigt
werden, welche sich auf einer anderen Seite befinden, als auf jener,
auf die gerade zugegriffen wird, dann werden ein neues RAS und ein
ebensolches CAS benötigt,
was Wartezustände
erfordert. Dies erhöht
die Speicherzugriffslatenz und verringert demzufolge die Leistung.
-
Gemäß der vorliegenden
Erfindung ist jeder der Referenzblöcke in dem Referenzvollbild
entsprechend einer neuartigen Anordnung versetzter Kacheln in dem
Vollbildspeicher 112 gespeichert. Diese Speicherungsanordnung
versetzter Kacheln begrenzt die maximale Anzahl von Seitenkreuzungen, zu
denen es bei Abruf eines Referenzblocks aus dem Vollbildspeicher 112 kommt.
-
Wie
dargestellt, enthält
die Bewegungsausgleichslogik 110 eine Speichersteuereinheit 120,
welche auf einen Referenzblock aus dem Vollbildspeicher 112 basierend
auf einem empfangenen Bewegungsvektor in einem zeitlich komprimierten
Vollbild zugreift. Wie nachfolgend weiter erläutert, greift die Speichersteuereinheit 120 intelligent
auf den gesamten Abschnitt eines Referenzblocks aus jeder der jeweiligen
Speicherseiten zu, wo sich die Daten befinden, damit die Anzahl
der erforderlichen Seitenkreuzungen minimiert wird.
-
4 – Speicherung
mit Hilfe versetzter Kacheln
-
4 zeigt
ein Diagramm, welches eine Art veranschaulicht, nach welcher Referenzmakroblöcke oder
Referenzblöcke
in dem Vollbildspeicher 112 in einer Anordnung versetzter
Kacheln gemäß der bevorzugten
Ausführungsform
der vorliegenden Erfindung gespeichert werden. Wie dargestellt,
speichert der Vollbildspeicher 112 vorzugsweise mehrere
Reihen von Makroblöcken,
wobei jede Seite des Vollbildspeichers einen oder mehr Makroblöcke auf
einer jeweiligen Reihe speichert. Gemäß der vorliegenden Erfindung
sind jene Seiten, welche Makroblöcke
auf benachbarten Reihen speichern, im Bezug zueinander versetzt,
um bei Abruf eines Referenzblocks von Daten aus dem Vollbildspeicher 112 die
maximale Anzahl von Seitenkreuzungen zu minimieren.
-
Wie
aus 4 hervorgeht, kann ein Referenzvollbild als eine
Mehrzahl von Reihen von Makroblöcken
angesehen werden. Makroblöcke
in benachbarten Reihen oder Zeilen sind, wie 4a–4d veranschaulichen,
versetzt, um Seitenkreuzungen oder Page Misses innerhalb eines vorhergesagten Halbbildmakroblocks
zu verringern. In der bevorzugten Ausführungsform speichert jede Seite
des Vollbildspeichers 112 zwei aneinander grenzende Luminanzmakroblöcke auf
einer Reihe, und auf benachbarten Reihen gespeicherte Luminanzmakroblöcke sind
im Bezug zueinander um eine Makroblockbreite versetzt, um die maximale
Anzahl von Seitenkreuzungen innerhalb eines vorhergesagten Halbbildmakroblocks
zu minimieren.
-
4a zeigt
eine Abbildung eines Referenzhalbbilds/-vollbilds von Luminanzblöcken mit
einer ungeraden Anzahl von Makroblöcken in einer Zeile, und 4c stellt
eine Abbildung eines Referenzhalbbilds/-vollbilds von Luminanzblöcken mit
einer geraden Anzahl von Makroblöcken
in einer Zeile dar. In ähnlicher
Weise erläutert 4b eine
Abbildung eines Referenzhalbbilds/-vollbilds von Chrominanzblöcken mit
einer ungeraden Anzahl von Makroblöcken in einer Zeile, und 4d zeigt
eine Abbildung eines Referenzhalbbilds/-vollbilds von Chrominanzblöcken mit
einer geraden Anzahl von Makroblöcken
in einer Zeile.
-
Wie
dargestellt, erläutern 4a und 4c eine
Art, nach welcher Luminanzblöcke
in der Anordnung versetzter Kacheln der vorliegenden Erfindung gespeichert
sind. Wie gezeigt, nehmen in der bevorzugten Ausführungsform
Luminanzblöcke
zweier aneinander grenzender Makroblöcke, vorzugsweise aus der selben
Zeile oder Reihe von Makroblöcken, eine
SDRAM-Seite ein, welche in der bevorzugten Ausführungsform 256 Worte enthält. Wie
aus 4b und 4d ersichtlich,
speichert eine einzelne Speicherseite vier aneinander grenzende
Chrominanzmakroblöcke,
vorzugsweise in einer Anordnung von 2 × 2. Somit speichert eine einzelne
Speicherseite vier aneinander grenzende Chrominanzmakroblöcke, und
zwar mit jeweils zwei Blöcken
aus zwei benachbarten Reihen.
-
In 4a und 4c ist
der Luminanzvorhersageblock oder -referenzblock schattiert. Wie
gezeigt, erfordert der Abruf des Luminanzvorhersageblocks aus dem
Vollbildspeicher 112 lediglich drei Seitenkreuzungen. Zu
beachten gilt, dass ungeachtet dessen, wo sich der Luminanzvorhersageblock oder
-referenzblock innerhalb des Referenzvollbildes in dem Vollbildspeicher 112 befindet,
ein Maximum von drei Seitenkreuzungen benötigt wird, um den jeweiligen
Luminanzreferenzblock aus dem Vollbildspeicher 112 abzurufen.
In ähnlicher
Weise ist in 4b und 4d ein
Chrominanzvorhersageblock oder -referenzblock schattiert dargestellt.
Zu beachten gilt, dass ungeachtet dessen, wo sich der Chrominanzvorhersageblock
oder -referenzblock innerhalb des Referenzvollbilds in dem Vollbildspeicher 112 befindet,
ein Maximum von drei Seitenkreuzungen benötigt wird, um den jeweiligen
Chrominanzreferenzblock aus dem Vollbildspeicher 112 abzurufen.
-
In
der bevorzugten Ausführungsform
der Erfindung enthält
der Bewegungsausgleichsblock 110 eine Speichersteuereinheit 120,
welche die Funktion hat, Referenzblöcke oder Vorhersageblöcke aus
dem Vollbildspeicher 112 zu lesen. Wenn der Abruf eines Referenzblocks
aus dem Vollbildspeicher 112 eine oder mehr Seitenkreuzungen
verlangt, liest die Speichersteuereinheit 120 den gesamten
relevanten Abschnitt aus einer jeweiligen Seite, bevor eine Seitenkreuzung
oder ein Cross Miss stattfindet, d.h. bevor die Speichersteuereinheit 120 beginnt,
einen anderen Referenzblockabschnitt aus einer anderen Seite zu
lesen. In den Beispielen aus 4 ist die
Speichersteuereinheit 120, welche den Lesevorgang ausführt, ausreichend
intelligent, um den Vorhersagemakroblock (den schattierten Bereich
aus 4a–4c)
zu lesen oder in drei Gebiete zu unterteilen, von denen jedes einzelne
auf einer anderen Seite liegt. Die Speichersteuereinheit 120 liest
der Reihe nach jeden einzelnen dieser Subdivisions-Blöcke. So
liest die Speichersteuereinheit 120 den gesamten schattieren
Abschnitt aus dem ersten Makroblock oder der ersten Seite, dann
den gesamten schattierten Abschnitt aus dem zweiten Makroblock oder
der zweiten Seite und darauf den gesamten schattierten Abschnitt
aus dem dritten Makroblock oder der dritten Seite.
-
In
der bevorzugten Ausführungsform
der Erfindung sieht die Referenzvollbildspeicherabbildung so aus,
dass ein oberes Halbbild in einer ersten Bank A liegt und ein unteres
Halbbild in einer zweiten Bank B. Als Alternative dazu ist das gesamte
Referenzvollbild in einer angrenzenden Speicherbank gespeichert.
-
5 und 6 – Vollbildbasierte
Vorhersage
-
Unter
Bezugnahme auf 5 und 6 wird nun
Bewegungsausgleich, welcher innerhalb eines Vollbilds stattfindet,
d.h. vollbildbasierte Vorhersage, dargestellt. 5 veranschaulicht
eine Vollbild-DCT-Ausführungsform,
bei welcher Zeilen in einem DCT-Block
oder Zielblock, welcher decodiert wird, Zeilen aus alternierenden
Halbbildern innerhalb des Referenzvollbilds entsprechen. Anders
ausgedrückt,
speichert der Vollbildspeicher 112, wie oben erwähnt, ein
Referenzvollbild von Daten als zwei Halbbilder, welche vorzugsweise
ungerade und gerade Pixelabtastlinien umfassen. In der Vollbild-DCT-Ausführungsform
aus 5 enthält
der Zielblock oder DCT-Block Zeilen aus beiden Halbbildern oder
aus alternierenden Halbbildern, wie dargestellt. Zu beachten gilt,
dass in dieser Ausführungsform
Seitenumbrüche
oder Seitenkreuzungen für
jedes Halbbild stattfinden. Da sich die Halbbilder jedoch in verschiedenen
Banken befinden und die Bewegungsvektoren für beide Halbbilder die Gleichen sind,
vollziehen sich die Seitenkreuzungen für jede jeweilige Bank oder
für jedes
jeweilige Halbbild an der gleichen Stelle, und daher verdoppelt
sich die Anzahl der Page Misses nicht.
-
Für höchste Effizienz
bei einem On-Chip-Speicher oder örtlichen
Speicher wird der On-Chip-Speicher 116 vorzugsweise so
klein wie möglich
gehalten, und nur der Vorhersageblock oder Referenzblock wird gelesen.
Daher ist in einer Ausführungsform,
zwecks höchster
On-Chip-Speichereffizienz, der On-Chip-Speicher 116 vorzugsweise
gerade groß genug,
um einen einzigen 8 × 8
Unterblock zu speichern. In dieser Ausführungsform ruft der On-Chip-Speicher 116 einen
Referenzmakroblock aus dem Vollbildspeicher 112 als vier
8 × 8
Unterblöcke
ab, welche der Reihe nach gelesen werden. Zwar erfordert dies eine
größere Anzahl
an Seitenkreuzungen, dafür
aber weniger On-Chip-Speicher. Ist der On-Chip-Speicher 116 gerade
groß genug,
um einen einzigen 8 × 8
Unterblock zu speichern, gilt zu beachten, dass für jeden
Unterblock, der gelesen wird, Seitenkreuzungen notwendig sein können. Dementsprechend
würde die
Anzahl der Seitenkreuzungen für das
Beispiel aus 5 wie folgt betragen: Y0: 3,
Y1: +1, Y2: +2, Y3: 0, CR: 3, CB: +2. Dies führt zu einer Summe von 11 Seitenkreuzungen,
und die Gesamtzahl gelesener Worte beläuft sich auf 6 × 9 × 5 = 270.
-
Zwecks
höchster
Zugangseffizienz bei einem Off-Chip-Speicher oder Vollbildspeicher
ist der On-Chip-Speicher 116 vorzugsweise ausreichend groß, um einen
ganzen Makroblock zu speichern. So kann der ganze Makroblock aus
dem Vollbildspeicher 112 gelesen werden und dem On-Chip-Speicher 116 auf
einmal zur Verfügung
gestellt werden. Zwecks höchster
Zugangseffizienz bei einem Off-Chip-Speicher, d.h. zwecks höchster Speicherzugangseffizienz bei
dem Vollbildspeicher 112, liest die Speichersteuereinheit 120 vorzugsweise
den gesamten Luminanzblock und dann den gesamten Chrominanzblock.
Die Anzahl von Seitenkreuzungen für den Luminanz- und Chrominanzblock
beläuft
sich jeweils auf 3, woraus sich insgesamt 6 Seitenkreuzungen ergeben.
Die Gesamtzahl der gelesenen Worte beläuft sich auf 17 × 9 + 9 × 9 = 234.
-
6 veranschaulicht
eine Halbbild-DCT-Ausführungsform,
bei welcher alle Zeilen in den DCT Luminanzblöcken Zeilen aus einem einzigen
Halbbild entsprechen. Zu beachten gilt, dass die in 6 dargestellten
Seitenumbrüche
für jedes Halbbild
des Referenzblocks gelten. Da sich Halbbilder in verschiedenen Banken
befinden und Bewegungsvektoren für
beide Halbbilder die Gleichen sind, finden Seitenkreuzungen in der
gleichen Position statt, und somit verdoppelt sich die Anzahl an Page
Misses nicht.
-
Zwecks
höchster
On-Chip-Speichereffizienz liest in der Ausführungsform aus 6 die
Steuereinheit 120 wiederum nur einen Vorhersageblock nach dem
anderen, und der örtliche
oder On-Chip-Speicher wird vorzugsweise so klein wie möglich gehalten.
Wie oben erläutert,
ist daher der On-Chip-Speicher 116 in dieser Ausführungsform
gerade groß genug,
um einen einzigen 8 × 8
Unterblock zu speichern. Sobald der gewünschte Makroblock gelesen ist,
wird nacheinander jeder der jeweiligen 8 × 8 Unterblöcke gelesen und dem On-Chip-Speicher 116 zur
Verfügung
gestellt. Dementsprechend muss der On-Chip-Speicher 116 lediglich
groß genug
für die Speicherung
eines einzigen 8 × 8
Unterblocks sein, aber nicht für
die Speicherung eines ganzen Makroblocks auf einmal. In der Ausführungsform
aus 6, bei welcher der On-Chip-Speicher nur einen
1 × 8
Block speichern muss, ist die Seitenkreuzung, welche erforderlich
ist, um einen Referenzmakroblock aus dem Vollbildspeicher 112 zu
lesen, Folgende: Y0: 3, Y1: +1, Y2: +2, Y3: +1, CR: 3, CB: +2. Daher
beläuft
sich die Gesamtzahl von Seitenkreuzungen in dieser Ausführungsform
auf 12. Es besteht ein Unterschied zu 5, da auf
Y3 ein extra Page Miss kommt, wie 5 und 6 zeigen,
und die Gesamtanzahl an ausgelesenen Worten beträgt 6 × 17 × 5 = 510. Zu beachten gilt,
dass beide Halbbilder gelesen werden müssen, um ½ Pel-Interpolation durchzuführen.
-
Zwecks
höchster
Zugriffseffizienz bei einem Off-Chip-Speicher kann der On-Chip-Speicher 116 vermutlich
einen ganzen Makroblock speichern. In dieser Ausführungsform
liest die Speichersteuereinheit 120 einfach den ganzen
Luminanzmakroblock und dann den ganzen Chrominanzmakroblock. Diese Ausführungsform
erfordert pro Auslesen des Luminanzmakroblocks und des Chrominanzmakroblocks jeweils
drei Seitenkreuzungen, woraus sich eine Summe von sechs Seitenkreuzungen
ergibt. In dieser Ausführungsform
beläuft
sich die Gesamtzahl gelesener Worte auf 17 × 9 + 9 × 9 = 234.,
-
Schlussfolgerung
-
Folglich
umfasst die vorliegende Erfindung ein System und ein Verfahren zur
Durchführung
von Bewegungsausgleich auf einem komprimierten digitalen Videostrom.
Die vorliegende Erfindung speichert Referenzvollbilder in einem
Format versetzter Kacheln, welches die maximale Anzahl von Seitenkreuzungen
oder Page Misses minimiert, wenn diese Daten abgerufen werden. Dies
verschafft verbesserte und/oder garantierte Leistung für das Bewegungsausgleichssystem.
-
Obgleich
das System und das Verfahren der vorliegenden Erfindung in Verbindung
mit den beschriebenen Ausführungsformen
erläutert
wurde, ist nicht beabsichtigt, diese auf die hierin dargelegte spezifische
Form zu beschränken;
hingegen besteht die Intention darin, Alternativen, Modifikationen
und äquivalente
Ausführungen
zu erfassen, welche sich in vernünftiger
Weise in das Gebiet der Erfindung einbeziehen lassen, wie es durch
die beigefügten
Ansprüche
definiert ist.