-
Diese
Erfindung betrifft einen Bildprozessor, der geeignet ist, zur Decodierung
von Bildinformation verwendet zu werden.
-
Die
Kompression und Dekompression von Bewegtbilddaten ist international
durch MPEG (Moving Picture Image Coding Experts Group), benannt nach
der Arbeitsgruppe der ISO/IEC, standardisiert. Ein Hauptelement
eines zum Wiedergeben von Bewegtbilddaten benutzten MPEG-Decoders
ist eine Datenverarbeitungseinheit, die aus einen Decoder variabler
Länge (VLD),
einem inversen Quantisierer (IQ), einem inversen, diskreten Kosinustransformator (IDCT)
und einem Bewegungskompensator (MC) gebildet ist. Ein solcher MPEG-Decoder
benötigt
ferner einen Speicher für
eine Vielzahl von Bildern zur Bewegungskompensation und Verschachtelungsumwandlung.
-
Eines
der herausragenden Merkmale von MPEG ist, dass zwei Bilder (d. h.
ein zeitlich früheres und
ein zeitlich späteres
Bild) für
die Bewegungskompensationsreferenz benutzt werden. Die Anwendung
von Bewegungskompensation auf jedes Bild erzeugt jedoch eine Ausbreitung
von Fehlern sowie Probleme bei spezieller Wiedergabe. Um diesen Mängeln zu
begegnen, sind ein intracodiertes Bild ("I-Bild"), ein prädiktiv codiertes Bild ("P-Bild") und ein bidirektional,
prädiktiv
codiertes Bild ("B-Bild") eingeführt worden.
Ein I-Bild, d. h. ein Bild des Codierungstyps I, hat keinerlei Bezug
zu irgendwelchen anderen Bildern. Ein P-Bild, d. h. ein Bild des
Codierungstyps P, unterliegt der Bewegungskompensation durch ein
früheres
Bild. Ein B-Bild, d. h. ein Bild des Codierungstyps B, unterliegt
der bidirektionalen Bewegungskompensation durch ein früheres Bild
und ein späteres
Bild. B-Bilder werden nicht als eine Referenz benutzt, wenn andere
Bilder decodiert werden.
-
Eine
Codierungstyp-Prädiktion
wird nun beschrieben. Ein Bitstrom von Eingangsbildern wird in einen
MPEG-Decoder in der Reihenfolge I0, P3, B1, B2 zur Decodierung eingegeben.
Das Bild P3 wird von dem Bild I0 bewegungskompensiert. Das Bild
B1 wird von den Bildern I0 und P3 bewegungskompensiert. Das Bild
B2 wird von den Bildern I0 und P3 bewegungskompensiert. Die Anzeige
der Bilder erfolgt in der Reihenfolge I0, B1, B2, P3. Die Reihenfolge der
Decodierung und die Reihenfolge der Anzeige stimmen nicht überein,
und es ist erforderlich, eine Änderung
in der Reihenfolge vorzunehmen. Außerdem benötigt die Decodierung der Bilder
B1 und B2 Daten für
zwei Bildraster der Bilder I0 und P3, wodurch ein Bildspeicher für zwei Bildraster
als eine Referenz zur Bewegungskompensation benötigt wird. Aus diesem Grund
benötigt
der MPEG-Decoder zwei Bilder als eine Referenz zur Be wegungskompensation.
-
Die
Reihenfolge der Decodierung durch die Pixel und die Reihenfolge
der Ausgabe durch die Pixel von MPEG werden beschrieben. Bei dem
Fernsehsystem werden alle gradzahligen Zeilen vor den ungradzahligen
Zeilen bereitgestellt. Mit anderen Worten, Pixel werden jede zweite
Zeile ausgegeben, beginnend oben links und endend unten rechts.
Ein Bereich, der aus gradzahligen Zeilen besteht, wird das obere
Halbbild genannt, während
andererseits ein Bereich, der aus ungradzahligen Zeilen besteht, das
untere Halbbild genannt wird. Bei der verschachtelten Ausgabe wird
zuerst ein oberes Halbbild von oben links nach unten rechts bereitgestellt,
und dann wird ein unteres Halbbild von oben links nach unten rechts
bereitgestellt.
-
Bilddaten
sind 2-D-Daten, und von räumlich aneinandergrenzenden
Daten wird angenommen, dass es eine starke Korrelation zwischen
ihnen gibt. Für
den Fall der verschachtelten Ausgabe, betrachtet man eine Zeile
eine bestimmten oberen Halbbildes, ist ihre darüberliegende Zeile, d. h. eine
Zeile über der
fraglichen Zeile des oberen Halbbildes, jedoch eine Zeile des unteren
Halbbildes. Obwohl Pixel einer Zeile eine sehr starke räumliche
Korrelation mit Pixeln ihrer angrenzenden Zeile aufweisen, sind
sie zeitlich getrennt. Wenn die Bewegung sehr aktiv ist, kann folglich
die Möglichkeit
bestehen, dass eine Zeile eine stärkere Korrelation nicht mit
einer Zeile darüber,
sondern mit zwei Zeilen darüber
hat, denn sie liegen zeitlich angrenzend aneinander. Angenommen, dass
eine solche Möglichkeit
bestehen kann, wird die Reihenfolge der Decodierung durch die Pixel
von MPEG grob in zwei Arten geteilt, nämlich die eine für die Vollbildstruktur
und die andere für
die Halbbildstruktur.
-
Unter
dem MPEG-Standard wird die Decodierung unter Verwendung von 16 mal
16 Pixeln als eine Grundeinheit (genannt Makroblock) durchgeführt. Der
Makroblock wird von links nach rechts decodiert. Das ganz rechte
Pixel der obersten Zeile eines Bildes ist hier in dem ganz rechten
Makroblock des Bildes enthalten. Wenn die Decodierung des ganz rechten
Makroblocks vollendet ist, bedeutet dies, dass Daten für 16 Zeilen
decodiert sind. Die Decodierung aller Daten für 16 Zeilen wird daher fast gleichzeitig
vollendet.
-
Für den Fall
der Vollbildstruktur bilden Daten für ein Bildraster einen aus
16 mal 16 Pixeln bestehenden Makroblock, und die Decodierung wird
pro Makroblock durchgeführt.
Als Folge werden das obere und untere Halbbild fast gleichzeitig
decodiert. Dies erzeugt eine völlige
Nichtübereinstimmung
zwischen der Reihenfolge der Decodierung, und der Reihenfolge der
Bildausgabe. Eine Änderung
in der Reihenfolge muss vorgenommen werden.
-
Für den Fall
der Halbbildstruktur wird ein Bildraster in zwei Abschnitte geteilt,
eine oberes Halbbild und ein unteres Halbbild. Jedes Halbbild umfasst
Makroblöcke,
wobei jeder Makroblock aus 16 × 16
Pixeln gebildet wird, und die Decodierung wird pro Makroblock durchgeführt. Ein
einzelner Makroblock erstreckt sich nicht über sowohl das obere als auch
das untere Halbbild. Nachdem alle Daten für das obere Halbbild decodiert
sind, werden die Daten für
das untere Halbblid der Decodierung unterzogen. In diesem Fall werden
die Bilder fast in der gleichen Reihenfolge bereitgestellt wie sie
decodiert wurden. Die Reihenfolge der Decodierung und die Reihenfolge
der Bildausgabe stimmen jedoch wegen der Decodierung nach Makroblöcken nicht
ganz genau überein.
-
Die
Bildausgabe wird so durchgeführt,
dass zuerst das obere Halbbild eines Bildes bereitgestellt wird
und dann das untere Halbbild bereitgestellt wird. Beachtet man den
Zeitpunkt, zu dem die Ausgabe der letzten acht Zeilen eines oberen
Halbbildes beginnt, muss die Decodierung eines Makroblocks für die letzten
16 Zeilen des Bildrasters vor dem Startpunkt vollendet sein. Der
Grund ist, dass die Decodierung des letzten Makroblocks eines Bildes
erst beginnt, wenn die Werte der ganz rechten 16 Pixel der letzten
acht Zeilen bestimmt sind. Daher müssen die Decodierung sowohl
des oberen Halbbildes als auch des unteren Halbbildes an dem vorangehenden Punkt
vollendet sein. Von dem Punkt an müssen die acht Zeilen des oberen
Halbbildes und alle Zeilen des unteren Halbbildes sequenziell bereitgestellt
werden; jedoch sind die Daten für
sie bereits decodiert worden. Daher werden, wenn die Daten nicht
in einem Bildspeicher gespeichert werden, die Daten verloren gehen,
bevor sie ausgegeben werden, was die Ausgabe keiner Bilder zur Folge
hat. Dies gibt Anlass zu einer Notwendigkeit für die Bereitstellung eines
Bildspeichers mit einer Speicherkapazität von einem halben Vollbild,
um alle Daten für
das untere Halbbild und die acht Zeilen des oberen Halbbildes zu
speichern.
-
Zusammengefasst,
ein 2-Bild-Speicher wird zur Bewegungskompensation benötigt, und
ein etwa Halb-Vollbild-Speicher wird für die B-Bild-Verschachtelungsumwandlung
benötigt.
Mit anderen Worten, wenigstens ein Speicher für 2.5 Bilder ist erforderlich.
-
Ishiwata
et al. berichten in einem Papier betitelt "Development of an MPEG2 Decoder LSI-Efficient Memory
Allocation", Proceedings
of the 1994 IEICE Spring Conference, C-659, März '94, einen MPEG-Decoder, der einen Speicher
für 1.5
Bilder zur B-Bild-Verschachtelungsumwandlung einsetzt. Takabatake
et al. berichten in einem Papier betitelt "DRAM Interface for MPEG2 Video Decoder
LSI", Proceedings
of the 1995 IEICE General Conference, C-586, März '95, einen MPEG-Decoder, der einen Ein-Bild-Speicher
zur B-Bild-Verschachtelungsumwandlung einsetzt.
-
Beide
oben beschriebene MPEG-Decoder sind jedoch teuer, weil sie einen
Speicher mit einer Speicherkapazität, die von einem Bild bis zu
1.5 Bildern reicht, zur B-Bild-Verschachtelungsumwandlung benötigen. Im
Prinzip benötigt
die B-Bild-Verschachtelungsumwandlung nur einen Halb-Vollbild-Speicher,
und daher besteht noch Raum für
eine Verringerung der benötigten
Speicherkapazität
zur B-Bild-Verschachtelungsumwandlung.
-
EP-A-0
618 722 offenbart ein Verfahren zur Decodierung von Rastern von
Bilddaten und Ausgeben der decodierten Bilddaten als Halbbilder.
Die Bilddaten werden in Einheiten von Makroblöcken geteilt, die nacheinander
decodiert werden. Der Decodierungsprozess benutzt einen Bildspeicher
mit einer Kapazität
von fünf
Halbbildern plus weiteren zwei Zeilen von Makroblöcken. Der
Speicher umfasst vier Abschnitte mit je einer Kapazität von einem
Halbbild zur Speicherung von I- oder P-Bildern als eine Referenz
zur Bewegungskompensation und einen restlichen Speicherabschnitt
zum Ausgeben von decodierten B-Bildern als Halbbilder. Jeder Speicherabschnitt
ist in eine Vielzahl einzeln zugänglicher
Unterabschnitte ("Zonen") geteilt, wobei
jeder Unterabschnitt eine Kapazität von einer Horizontalzeile
von Makroblöcken
hat. Jeder dieser Speicher-Unterabschnitte kann überschrieben werden, sobald
die Bilddaten dieses Speicherabschnitts angezeigt wurden und nicht
zur Bewegungskompensation benötigt
werden.
-
EP-A-0
738 084 beschreibt eine Decodiervorrichtug, die Halbbilder von Bilddaten
vertikal in eine Vielzahl von Bildabschnitten teilt. Die Vorrichtung
umfasst zwei Bildspeicher zum Speichern von Bewegungskompensations-Referenzbildern.
Außerdem
enthält
die Vorrichtung eine Vielzahl von Speicherzonen zur B-Bild-Verschachtelungsumwandlung.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, die Effizienz der Bildspeichernutzung
in einem Decoder zu verbessern.
-
Diese
Aufgabe wird durch die Merkmale von Anspruch 1 für einen Bildprozessor und die
Merkmale von Anspruch 11 für
ein Decodierverfahren erfüllt.
-
Wertere
Ausführungen
sind Gegenstand von abhängigen
Ansprüchen.
-
Eine
solche Anordnung macht es möglich, mit
einem etwa 2.5-Bild-Speicher nicht nur die B-Bild-Verschachtelungsumwandlungs, sondern auch
die Bewegungskompensation bezüglich
aller Arten von Bildern zustande zu bringen. Außerdem wird für den Fall
von drei oder mehr aufeinanderfolgenden I- und/oder P-Bildern der
Datenspeicher nicht für
B-Bilder benutzt, was den Vorteil bringt, das ein Block, der einen
Abschnitt des Datenspeichers bildet, zur Speiche rung von I- und/oder
P-Bildern benutzt werden kann.
-
Des
Werteren ist es möglich,
die B-Bild-Verschachtelungsumwandlung mit einem etwa Halb-Bild-Speicher durch
die Anordnung zustande zu bringen, dass der Vorgang des Schreibens
in einen Schlitz des Datenspeichers unmittelbar nach dem Vorgang
des Lesens aus dem Schlitz durchgeführt wird.
-
1 ist ein Blockschaltbild,
das ein Beispiel des erfindungsgemäßen MPEG-Decoders zeigt.
-
2 ist ein begriffliches
Diagramm, das die innere Struktur eines in 1 gezeigten Bildspeichers zeigt.
-
3 ist ein begriffliches
Diagramm, das die innere Struktur eines in 2 gezeigten Speicherblocks zeigt.
-
4 ist ein begriffliches
Diagramm, das die innere Struktur eines in 2 gezeigten zusätzlichen Speicherblocks zeigt.
-
5 ist ein Blockschaltbild,
das die innere Struktur einer in 1 gezeigten
BSAU (Bitstrom-Analyseeinheit) zeigt.
-
6 ist ein Blockschaltbild,
das die innere Struktur einer in 1 gezeigten
Bildausgabeeinheit zeigt.
-
7 ist ein Diagramm, das
die Arbeitsweise der Bildausgabeeinheit von 1 im Umriss zeigt.
-
8 ist ein Blockschaltbild,
das die innere Struktur einer in 1 gezeigten
Steuereinheit zeigt.
-
9 ist ein Diagramm, das
im Umriss ein Beispiel der Arbeitsweise des MPEG-Decoders von 1 zeigt.
-
10 ist ein Diagramm, das
im Detail ein Beispiel der Arbeitsweise des MPEG-Decoders von 1 zeigt.
-
11 ist eine Fortsetzung
von 10.
-
12 ist eine Fortsetzung
von 11.
-
13 ist eine Fortsetzung
von 12
-
14 ist eine Fortsetzung
von 13.
-
15 ist eine Fortsetzung
von 14.
-
16 ist ein Diagramm, das
ein Beispiel des Prozesses des Aktualisierens eines in 8 gezeigten SCM (Schlitzsteuerspeicher)
zeigt.
-
17 ist eine Fortsetzung
von 16.
-
18 ist ein äquivalentes
Diagramm zu 16, wenn
der zusätzliche
Block von 2 aus zwei
zusätzlichen
Schlitzen gebildet wird.
-
19 ist ein äquivalentes
Diagramm zu 16, wenn
der zusätzliche
Block von 2 aus einem
einzigen zusätzlichen
Schlitz gebildet wird.
-
Ein
MPEG-Decoder der vorliegenden Erfindung zum Wiedergeben von Bewegtbilddaten
in Echtzeit wird nun mit Verweis auf die begleitenden Zeichnungen
beschrieben.
-
Zuerst
auf 1 verweisend wird
ein Beispiel der Struktur des MPEG-Decoders veranschaulicht. Der
MPEG-Decoder 10 besitzt einen Bildspeicher 11 zum
Speichern von etwa 2.5-Bild-Videodaten,
eine Bitstrom-Analyseeinheit (nachstehend "BSAU" genannt) 12 zum
Analysieren eines Eingangsbitstromes IN, eine Bildausgabeeinheit 13 zum Bereitstellen
eines Bildausgangssignals OUT und eines Unterbrechungssignals INTR
und eine Steuereinheit 14 zum Bereitstellen, als Reaktion
auf das Unterbrechnungssignal INTR, eines Einleitungssignals INIT
an die BSAU 12. 15 ist ein Datenbus. 16 ist
ein Adressbus. 17 ist ein Registerbus. Zusätzlich zum Analysieren
eines Vorspannabschnitts des Eingangsbitstromes IN hat die BSAU
die Funktion des Durchführens
der Decodierung eines Makroblocks und Schreibens eines Ergebnisses
des Decodiervorgangs in den Bildspeicher 11. Diese zwei
Funktionen der BSAU 12 werden durch das von der Steuereinheit 14 empfangene
Einleitungssignal INIT eingeleitet. Der Bildspeicher 11 ist
zur Speicherung von Bewegungskompensations-Referenzbildern und zur Verschachtelungsumwandlung.
Die Bildausgabeeinheit 13 liest rekonstruierte Videodaten
aus dem Bildspeicher 11 und stellt das Bildausgangssignal
OUT in der Reihenfolge der Verschachtelung bereit. Eine Verbindung
des Bildausgangssignals OUT mit einer Anzeigeeinheit macht es möglich, ein
decodiertes Bewegtbild auf einem Bildschirm anzuzeigen. Außerdem sendet
die Bildausgabeeinheit 13 das Unterbrechungssignal INTR
an die Steuereinheit 14, um die Ausgabe zu timen. Die Steuereinheit 14 kann
interne Register des BSAU 12 und der Bildausgabeeinheit 13 über den
Registerbus 17 lesen und für jedes der internen Register
einen Wert festlegen.
-
2 umreißt den Bildspeicher 11. 3 und 4 zeigen den Bildspeicher 11 im
Detail. Wie in 2 gezeigt,
besteht der Bildspeicher 11 aus fünf Blöcken 20–24 und
einem zusätzlichen
Block 25. Diesen fünf
Blöcken 20–24 sind
jeweilige Halbbildnummern zugeteilt, nämlich von Halbbild #0 bis Halbbild
#4. Wie in 3 gezeigt,
ist ein Block, z. B. der Block 20, aus N Schlitzen gebildet,
denen jeweilige Schlitznummern von Schlitz #0 bis Schlitz #N – 1 zugeteilt
sind. Man beachte hier, dass N ein Betrag ist, der von der Größe des durch
den MPEG-Decoder zu decodierenden Bildes abhängt. Zum Beispiel ist N = 30
für den
Fall des NTSC-(National Television System Committee) Bildes. Jeder
der N Schltze ist in der Lage, acht Zeilen des Bildes zu speichern.
Das heißt, der
Block 20 hat das Vermögen,
Daten für
240 Zeilen des Bildes zu speichern. Mit anderen Worten, der Block 20 ist
imstande, ein Halbbild (ein halbes Bild) eines NTSC-Bildes zu speichern.
Jeder der restlichen Blöcke 21, 22, 23 und 24 ist
ebenfalls aus N Schlitzen gebildet. Wie in 4 gezeigt, besteht der zusätzliche
Block 25 aus drei zusätzlichen
Schlitzen, denen jeweilige Schlitznummern zugeteilt sind, d. h. Schlitz
#N, Schlitz #N + 1 und Schlitz #N + 2.
-
Der
Bildspeicher 11 wird durch den Schlitz gesteuert. Ein Schlitz
(acht Zeilen), eine Steuereinheit, ist die Hälfte der Vertikalgröße des Makroblocks (16
Zeilen) und ist die am besten geeignete Einheit, um sowohl mit Bild-
als auch Halbbild-Strukturen umzugehen. Das heißt, Schlitze werden durch Halbbildnummern
und Schlitznummern bezeichnet. Zum Beispiel wird der erste Schlitz
im Block 20 durch Halbbild #0 und Schlitz #0 bezeichnet.
Der erste Schlitz in dem zusätzlichen
Block 25 wird durch Halbbild #0 und Schlitz #N bezeichnet
und kann durch Halbbild #1 und Schlitz #N bezeichnet werden.
-
Von
den fünf
Blöcken 20–24 werden
vier Blöcke
für die
Speicherung von Bewegungskompensations-Referenzbildern benutzt,
und der restliche eine Block und der zusätzliche Block 25 werden
für die B-Bild-Verschachtelungsumwandlung
benutzt. Die Zahl der für
ein B-Bild, z. B. N + 3, benutzten Blöcke wird in der folgenden Beschreibung
als Sn dargestellt. Zum Beispiel werden das obere und untere Halbbild
eines I-Bildes in Schlitz #0 bis Schlitz #N – 1 von Halbbild #0 und in
Schlitz #1 bis Schlitz #N – 1 von
Halbbild #1 gespeichert, und das obere und untere Halbbild eines
P-Bildes werden in Schlitz #0 bis Schlitz #N – 1 von Halbbild #2 und in
Schlitz #1 bis Schlitz #N – 1
von Halbbild #3 gespeichert. In einem Halbbild, in dem ein oberes
Halbbild gespeichert wird, werden die ersten acht Zeilen des oberen
Halbbildes im Schlitz #0 gespeichert, die nächsten acht Zeilen werden im
Schlitz #1 gespeichert usw. Ein B-Bild wird z. B. in Schlitz #0
bis Schlitz #Sn – 1
von Halbbild #4 gespeirchert. Zu dieser Zeit werden drei zusätzliche
Schlitze, d. h. Schlitze #N bis #N + 2, benutzt. Man beachte, dass,
welche Schlitze das obere Halbbild eines Bildes speichern, abhängig von
der Bildstruktur (Vollbildstruktur und Halbbildstruktur) variiert.
Vorgabebilddaten, als eine Anfangseinstellung, sind bereits in die
Halbblider des Bildspeichers 11 geschrieben. Zum Beispiel
werden Daten, die der Farbe Schwarz entsprechen, in den Bildspeicher 11 geschrieben,
und die Ausgabe des Vorgabebildes wird fortgesetzt, bis ein Bild
als ein Decodierergebnis ausgegeben wird.
-
5 veranschaulicht eine innere
Struktur der in 1 gezeigten
BSAU 12. Die BSAU 12 umfasst eine Vorspannanalyseeinheit 31,
einen Decoder variabler Länge
(VLD) 32, einen inversen Quantisierer (IQ) 33,
einen inversen, diskreten Kosinustransformator (IDCT) 34,
einen Bewegungskompensator (MC) 35 und ein internes Register 36.
Das interne Register 36 besitzt zehn Register, nämlich ein
Codierungstypregister (CTYR), ein Strukturregister (STRR), ein Vorwärtsreferenz-Halbbildregister
für oben
(T_FRFR), ein Rückwärtsreferenz-Halbbildregister
für oben
(T_BRFR), ein Rückwärtsreferenz-Halbbildregister
für unten
(B_BRFR), ein Schreibhalbbildregister für oben (T_WFDR), ein Schreibhalbbildregister
für unten
(B_WFDR), ein erstes Schreibschlitzregister (WSR1) und ein zweites Schreibschlitzregister
(WSR2). Das Register CTYR dient zum Speichern des Codierungstyps
für Eingabebilder.
Das Register STRR gibt an, ob ein Eingabebild die Vollbildstruktur
oder die Halbbildstruktur aufweist. Die vier Register T_FRFR, B_FRFR,
T_BRFR und B_BRFR dienen jeweils zum Bezeichnen einer Halbbildnummer,
die die Speicherstelle eines Bewegungskompensations-Referenzbildes
in dem Bildspeicher 11 angibt. Die zwei Register T_WFDR
und B_WFDR dienen jeweils zum Bezeichnen einer Schreibhalbbildnummer
des Bildspeichers 11. Die zwei Register WSR1 und WSR2 dienen
jeweils zum Bezeichnen einer Schreibschlitznummer des Bildspeichers 11.
-
Als
Reaktion auf das von der Steuereinheit 14 empfangene Einleitungssignal
INIT wird die Vorspannanalyseeinheit 31 oder der VLD 32 aktiviert. Wenn
die Vorspannanalyseeinheit 31 aktiviert wird, beginnt die
Vorspannanalyseeinheit 31, in dem Eingangsbitstrom IN enthaltene
Bildvorspanninformation zu decodieren, um Information über den
Bildcodierungstyp und Information über die Bildstruktur in das
Register CTYR bzw. das Register STRR einzugeben. Andererseits werden,
wenn der VLD 32 aktiviert wird, der IQ 33, der
IDCT 34 und der MC 35 nacheinander aktiviert,
wodurch 16-Zeilen Videodaten über
den Datenbus 15 in den Bildspeicher 11 geschrieben
werden. Diese Menge, d. h. 16 Zeilen, entspricht 45 Makroblöcken, wenn
die Zahl von Querpixeln 720 ist. Der MC35 führt Bewegungskompensation
durch, erzeugt endgültige
Videodaten und schreibt die rekonstruierten Videodaten in den Bildspeicher 11.
Der VLD 32 liefert den Bewegungsvektor MV an den MC 35 zur
Bewegungskompensation. Die Schlitze des Bildspeichers 11 werden
durch Adressen auf dem Adressbus 16 spezi fiziert.
-
In
der BSAU 12 betrifft nur der MC 35 die Speichersteuerung.
Der MC 35 muss die Stelle eines Bildes zur Prädiktion
in dem Bildspeicher 11 zum Zweck der Bewegungskompensation
kennen. Um eine solche Stelle zu spezifizieren, benutzt der MC 35 die
Register T_FRFR, B_FRFR, T_BRFR und B_BRFR. Ein oberer Halbbildabschnitt
der Vorwärtsreferenzdaten
wird in Schlitz #0 bis Schlitz #N – 1 eines Halbbildes gespeichert,
das durch das Register T_FRFR bezeichnet wird.
-
Die
Register T_WFDR, B_WFDR, WSR1, WSR2 und STRR werden benutzt, um
Schlitze zu bestimmen, in die die rekonstruierten Videodaten geschrieben
werden. Die Schreibstellen werden wie folgt bestimmt. Für den Fall
der Vollbildstruktur werden die oberen acht Zeilen in einen Schlitz
geschrieben, der durch eine durch das Register T_WFDR bestimmte
Halbbildnummer und eine durch das Register WSR1 bestimmte Schlitznummer
spezifiziert wird, und die unteren acht Zeilen werden in einen Schlitz geschrieben,
der durch eine durch das Register B_WFDR bestimmte Halbbildnummer
und eine durch das Register WSR2 bestimmte Schlitznummer spezifiziert
wird. Andererseits werden für
den Fall der Halbbildstruktur bezüglich des oberen Halbbildes (der
erste halbe Abschnitt eines Vollbildes) die oberen acht Zeilen in
einen Schlitz geschrieben, der durch eine durch das Register T_WFDR
bestimmte Halbbildnummer und eine durch das Register WSR1 bestimmte
Schlitznummer spezifiziert wird, und die unteren acht Zeilen werden
in einen Schlitz geschrieben, der durch eine durch das Register
T_WFDR bestimmte Halbbildnummer und eine durch das Register WSR2
bestimmte Schlitznummer spezifiziert wird. Bezüglich des unteren Halbbildes
(der zweite Abschnitt) werden die oberen acht Zeilen in einen Schlitz
geschrieben, der durch eine durch das Register B_WFDR bestimmte
Halbbildnummer und eine durch das Register WSR1 bestimmte Schlitznummer spezifiziert
wird, und die unteren acht Zeilen werden in einen Schlitz geschrieben,
der durch eine durch das Register B_WFDR bestimmte Halbbildnummer und
eine durch das Register WSR2-bestimmte-Schlitznummer spezifiziert
wird. Wie oben beschrieben, ist es so eingerichtet, dass in einem Schlitz
eine Mischung von oberen und unteren Halbbildern nicht vorhanden
ist. Außerdem
wird das Festlegen von Registern der Register in dem internen Register 36 bezüglich der
Speichersteuerung durch die Steuereinheit 14 über den
Registerbus 17 durchgeführt.
-
6 zeigt eine innere Struktur
der in 1 gezeigten Blldausgabeeinheit 13.
Die Bildausgabeeinheit 13 umfasst eine Timing-Erzeugungseinheit 41,
eine Leseeinheit 42 und ein internes Register 43. Das
interne Register 43 besteht aus vier Registern, nämlich ein
Lesehalbbildregiser (RFDR), ein Leseschlitzregister (RSLR), ein
Ausgabereihenregister (ORWR) und ein Ausgabepantätsregister (OPYR). Das Register
RFDR dient zum Bezeichnen einer Lesehalbbildnummer des Bildspeichers 11.
Das Register RSLR dient zum Bezeichnen einer Leseschlitznummer in
dem Bildspeicher 11. Das Register ORWR dient zum Bereitstellen
einer Angabe darüber,
wo eine Zeile, die momentan ausgegeben wird, in einem Halbbild gelegen
ist. Das Register OPYR dient zum Bereitstellen einer Angabe darüber, ob
das obere oder das untere Halbbild momentan ausgegeben wird.
-
7 zeigt im Umriss die Arbeitsweise
der Bildausgabeeinheit 13. Ein Zyklus der Ausgabe wird aus
einer Vertikalaustastperiode (VB), einer oberen Halbbildausgabeperiode,
einer weiteren VB und einer unteren Halbbildausgabeperiode gebildet.
Im Fall von NTSC werden z. B. 30 Zyklen pro Sekunde ausgegeben.
Der Timing-Erzeugungsabschnitt 41 erzeugt ein Timingsignal
TMNG, damit der Bildausgabeabschnitt 13 bei einem konstanten
Zyklus arbeiten kann. Ferner sendet der Timing-Erzeugungsabschnitt 41 das
Unterbrechungssignal INTR für
jede Ausgabe von acht Zeilen auf dem Schirm an die Steuereinheit 14.
Das Unterbrechungssignal INTR wird bei dem Startpunkt des Bereitstellens
des oberen und unteren Halbbildes erzeugt, wie in 7(a) gezeigt. Danach wird das Unterbrechungssignal INTR
für jede
Ausgabe von acht Zeilen erzeugt. Synchronisiert mit dem durch die
Timing-Erzeugungseinheit 41 erzeugten Timingsignal TMNG
liest die Leseeinheit 42 die bezeichneten Schlitze in der
Abtastreihenfolge, um das Bildausgabesignal OUT bereitzustellen.
Ein Leseschlitz wird durch ein Registerpaar, die Register RFDR und
RSLR, bezeichnet. Diese Register RFDR und RSLR zur Leseschlitzfestlegung
werden durch die Steuereinheit 14 über den Registerbus 17 beim
Auftreten einer Unterbrechung gesetzt. Ferner werden die Register
ORWR und OPYR durch die Timing-Erzeugungseinheit 41 geändert. Der
Wert des Registers OPYR wird "0" unmittelbar vor
der Startunterbrechung der Ausgabe jedes Halbbildes, wenn der momentane
Zustand ist, dass die nächste
Ausgabe ein oberes Halbbild ist, wie in 7(b) gezeigt. Andererseits wird der Wert
des Registers OPYR "1", wenn der momentane
Zustand ist, dass die nächste
Ausgabe ein unteres Halbbild ist. Der Wert des Registers ORWR wird "0" unmittelbar vor der Startunterbrechung
des Ausgabe jedes Halbbildes und wird danach vor jeder 8-Zeilen-Schlussunterbrechung
um eins erhöht,
wie in 7(c) gezeigt.
-
8 zeigt in Blockform eine
innere Struktur der Steuereinheit 14 von 1. Die Steuereinheit 14 besitzt
eine Steuerung 51, einen Arbeitsspeicher 52 und
einen Programmspeicher 53. Der Arbeitsspeicher 52 besitzt
einen Schlitzsteuerspeicher (SCM) und zwölf Arbeiten. Diese zwölf Arbeiten
sind eine Vorwärtsreferenz-Halbbildarbeit
für oben
(T_FRFW), eine Vorwärtsreferenz-Halbbildarbeit
für unten (B_FRFW),
eine Rückwärtsreferenz-Halbbildarbeit für oben (T_BRFW),
eine Rückwärtsreferenz-Halbbildarbeit
für unten
(B_BRFW), eine Decodierreihennummerarbeit (DRNW), eine Decodiertyparbeit (DTYW),
eine Ausgabetyparbeit (OTYW), eine Decodierstrukturarbeit (DSTW),
eine Ausgabehalbbildarbeit für
oben (T_OFDW), eine Ausgabehalbbildarbeit für unten (B_OFDW), einen Zeiger
für Schreibschlitz (WSLP)
und einen Zeiger für
Leseschlitz (RSLP). Die vier Arbeiten T_FRFW, B_FRFW, T_BRFW und B_BRFW,
die den vier Registern T_FRFR, B_FRFR, T_BRFR und B_BRFR der BSAU 12 entsprechen, bezeichnen
je eine Halbbildnummer, die die Speicherstelle eines Bewegungskompensations-Referenzbildes
in dem Bildspeicher 11 angibt. Die Arbeit DRNW dient zum
Speichern einer Reihennummer, die angibt, wie weit die Decodierung
eines Vollbildes voranschreitet. Die Reihennummer nimmt zu. Zum Beispiel
ist die Reihennummer 0 während
der Decodierung der ersten 16 Zeilen, und die Reihennummer ist 1
während
der Decodierung der nächsten
16 Zeilen usw. Die Arbeit DTYW dient zum Angeben des Codierungstyps
eines Bildes, das momentan decodiert wird. Die Arbeit OTYW dient
zum Angeben, ob der Codierungstyp eines Bildes, das momentan ausgegeben
wird, der Codierungstyp B ist oder nicht. Die Arbeit OTWY wird benutzt,
um eine Entscheidung zwischen dem Speichersteuerverfahren für den Codierungstyp
B und dem Speichersteuerverfahren für einen anderen Codierungstyp
zu treffen. Doe Arbeit DSTW dient zum Angeben, ob ein Bild, das
momentan decodiert wird, die Halbbildstruktur oder die Vollbildstruktur
hat, und beeinflusst die Festlegung von Schreibschlitzen und den
Zugriff auf den SCM. Die zwei Arbeiten T_OFDW und B_OFDW dienen
jeweils zum Angeben einer Halbbildnummer für ein Ausgabebild. Die Zeiger
WSLP und RSLP werden zur Speichersteuerung im Fall des Codierungstyps
B benutzt, was später
beschrieben wird. Jeder der Zeiger WSLP und RSLP hält ständig eine
Adresse, die ein Wort in dem SCM angibt.
-
Gespeichert
in Adresse #0 bis Adresse #Sn – 1
des SCM in dem Arbeitsspeicher 52 sind Anfangswerte, die
um eins von 0 bis Sn – 1
reichen. Diese Anfangswerte resultieren aus der Zuweisung von Nummern
zu Schreibschlitzen, die beim Decodieren eines Bildes des Codierungstyps
B, der zuerst eintrifft, benutzt werden. Die zehn Arbeiten des Arbeitsspeichers 52 werden
wie unten gezeigt initialisiert.
T_FRFW = 0
B_FRFW = 1
T_BRFW
= 2
B_BRFW = 3
DTYW = I
OTYW = IP
T_PFDW = 0
B_OFDW
= 1
WSLP = 0
RSLP = Sn
-
Die
Steuerung 51 führt
nacheinander in den Programmspeicher 53 geschriebene Anweisungen INST
aus. Zuerst führt
die Steuerung 51 eine normale Routine zum Einstellen der
internen Register 36 der BSAU 12 aus. Als Reaktion
auf das Unterbrechungssignal INTR von der Bildausgabeeinheit 13 wechselt die
Steuerung 51 zu einer Unterbrechungsverarbeitungsroutine
zum Einstellen der internen Register 43 der Bildausgabeeinheit 13.
-
Die
Steuereinheit 14 führt
eine normale Routine aus, um die BSAU 12 zu steuern. Das
heißt,
die folgenen Prozeduren 1.1 bis 1.14 werden ausgeführt.
- Prozedur
1.1: Die Vorspannanalyseeinheit 31 wird aktiviert. Die
Vorspannanalyseeinheit 31 setzt dann jeweilige Werte in
die Register CTYR und STRR der internen Register 36.
- Prozedur 1.2: Der Wert des Registers CTYR wird in die Arbeit
DTYW geschrieben.
- Prozedur 1.3: Der Wert des Registers STRR wird in die Arbeit
DSTW geschrieben.
- Prozedur 1.4: Wenn die Arbeit DTYW entweder "I" oder "P" angibt, und wenn die Arbeit OTYW "I" ist, werden eine erste und zweite Halbbildnummer,
die zum Bezeichnen von Schreibhalbbildnummern benötigt werden,
wie folgt bestimmt. Eine Halbbildnummer, die nicht in einer der
vier Arbeiten T_FRFW, B_FRFW, T_BRFW und B_BRFW enthaften ist, wird gewählt. Wenn
z. B. diese vier Arbeiten Halbbild #0, Halbbild #1, Halbbild #2
bzw. Halbbild #3 bezeichnen, wird Halbbild #4 als Halbbildnummer
ausgewählt.
Wenn die Halbbilder #2, #3, #4 und #0 durch die vier Arbeiten angegeben
werden, wird Halbbild #1 als Halbbildnummer ausgewählt. Die
gewählte
Halbbildnummer dient als die erste Halbbildnummer. Der Wert der
Arbeit T_FRFW dient als die zweite Halbbildnummer.
- Prozedur 1.5: Wenn die Arbeit DTYW entweder "I" oder "P" ist, und wenn die Arbeit OTYW "B" ist, ist der Wert der Arbeit T_FRFW
die erste Halbbildnummer, und der Wert der Arbeit B_FRFW ist die
zweite Halbbildnummer.
- Prozedur 1.6: Wenn die Arbeit DTYW entweder "I" oder "P" ist, werden die vier Arbeiten T_FRFW, B_FRFW,
T_BRFW und T_BRFW aktualisiert. Das heißt, der Wert der Arbeit T BRFW
wird in die Arbeit T_BRFW geschriebn, der Wert der Arbeit B_BRFW wird
in die Arbeit B_FRFW geschrieben, und die in Prozedur 1.5 bestimmte
erste und zweite Halbbildnummer werden in die Arbeit T_BRFW bzw.
die Arbeit B_BRFW geschrieben.
- Prozedur 1.7: Das Setzen von Bewegungskompensations-Referenzhalbbildern
in die internen Register 36 der BSAU 12 wird durchgeführt. Das
heißt,
der Wert der Arbeit T_FRFW wird in das Register T_FRFR geschrieben,
der Wert der Arbeit B_FRFW wird in das Regis ter B_FRFR geschrieben,
der Wert der Arbeit T_BRFW wird in das REgister T_BRFR geschrieben,
und der Wert der Arbeit B_BRFW wird in das Register B_BRFR geschrieben.
- Prozedur 1.8: Schreibhalbbilder werden in die internen Register 36 der
BSAU 12 gesetzt. Das heißt, wenn die Arbeit DTYW entweder "I" oder "P" ist,
wird der Wert des Registers T_BRFR in das Register T_WFDR geschrieben,
und der Wert des Registers B_BRFR wird in das Register B_WFDR geschrieben. Andererseits
wird, wenn die Arbeit DTYW "B" ist, eine Halbbildnummer
gewählt,
die nicht in einem der vier Register T_FRFR, B_FRFR, T_BRFR und
B_BRFR enthalten ist. Die gewählte
Halbbildnummer wird in das Register T_WFDR sowie in das Register B_WFDR
geschrieben.
- Prozedur 1.9: Eine "0" wird in die Arbeit
DRNW geschrieben.
- Prozedur 1.10: Das Festlegen von Schreibschlitzen wird durchgeführt. Diese
Prozedur wird später
im Detail erörtert.
- Prozedur 1.11: Die BSAU 12 decodiert einen Makroblock
für 16
Zeilen.
- Prozedur 1.12: Nach Vollendung der Decodierung eines Vollbildes
erfolgt eine Rückkehr
zu Prozedur 1.1.
- Prozedur 1.13: Die Arbeit DRNW wird um eins erhöht.
- Prozedur 1.14: Es erfolgt eine Rückkehr zu Prozedur 1.10, um
einen Makroblock für
die nächsten
16 Zeilen zu decodieren.
-
Die
Steuereinheit 14 steuert durch Ausführen der Unterbrechungs-Prozessroutine
die Bildausgabeeinheit 13. Das heißt, die Steuereinheit 14 führt Operationen
durch, um zu bestimmen, ob das Ausgabebild ein B-Bild ist oder nicht,
eine Lesehalbbildnummer zu bestimmen und eine Schlitznummer zu bestimmen.
Wenn entweder ein I-Bild oder ein P-Bild decodiert wird, muss nur
ein vorhergehend decodiertes Bild bereitgestellt werden, d. h. ein
Vorwärtsreferenzbild.
Ein B-Bild wird ausgegeben, nachdem eine Halb-Vollbildverzögerung von
der Zeit des Decodierens des B-Bildes beginnt. Wenn ein B-Bild zu
der Zeit des Bereitstellens des nächsten Vollbildes decodiert
wird, muss daher nur das B-Bild bereitgestellt werden. Das heißt, jedes
Mal, wenn eine Unterbrechung auftritt, werden die folgenden Prozeduren
2.1 bis 2.6 ausgeführt.
- Prozedur 2.1: Wenn das Register ORWR "0" ist,
und wenn das Register OPYR "0" ist (Beginn der
Ausgabe des oberen Halbbildes), wird der Wert der Arbeit DTYW in
die Arbeit OTYW geschrieben. Die Arbeit OTWY gibt an, ob ein Bild,
das als Nächstes
bereitgestellt wird, den Codierungstyp "B" hat
oder nicht. Das heißt,
wenn die Arbeit DTYW entweder "I", oder "P" ist, wird "IP" in
die Arbeit OTYW geschrieben. Andererseits wird, wenn die Arbeit
DTYW "B" ist, "B" in die Arbeit OTYW geschrieben.
- Prozedur 2.2: Wenn das Register ORWR "0" ist, wenn
das Register OPYR "0" ist (Beginn der
Ausgabe des oberen Halbbildes), und wenn die Arbeit OTYW "IP" ist, wird der Wert
der Arbeit T_FRFW in die Arbeit T_OFDW geschrieben, und der Wert
der Arbeit B_FRFW wird in die Arbeit B_OFDW geschrieben. Unterdessen
ist das Vorwärtsreferenzbild
ein vorhergehend dedodiertes I-Bild oder ein vorhergehend decodiertes
P-Bild. Folglich wird während
des Decodierens des I- oder P-Bildes ein vorhergehend decodiertes
Bild ausgegeben.
- Prozedur 2.3: Wenn das Register ORWR "0" ist, wenn
das Register OPYR "0" ist (Beginn der
Ausgabe des oberen Halbbildes), und wenn die Arbeit OTYW "B" ist, wird eine Halbbildnummer, die
nicht in einem der vier Register T_FRFW, B_FRFW, T_BRFW und B_BRFW
enthalten ist, gewählt,
und die gewählte
Halbbildnummer wird in die Arbeit T_OFDW und in die Arbeit B_OFDW
geschrieben. Ein Halbbild des Bildspeichers 11, in das
ein Bild des Codierungstyps B geschrieben wird, sollte weder ein Vorwärtsreferenzhalbbild
noch ein Rückwärtsreferenzhalbbild
sein.
- Prozedur 2.4: Die bereits bestimmten Werte der Arbeiten T_OFDW
und B_OFDW werden in die Bildausgabeeinheit 13 gestellt.
Das heißt,
wenn das Register OPYR "0" ist (wenn die nächste Ausgabe
ein oberes Halbbild ist), wird die Halbbildnummer der Arbeit T_OFDW
in das Register RFDR der Bildausgabeeinheit 13 gestellt.
Andererseits wird, wenn das Register OPYR "1" ist
(wenn die nächste
Ausgabe ein unteres Halbbild ist), die Halbbildnummer der Arbeit
B_OFDW in das Register RFDR der Bildausgabeeinheit 13 gestellt.
- Prozedur 2.5: Das Einstellen von Leseschlitzen wird durchgeführt. Die
Prozedur 2.5 wird später
im Detail erörtert
- Prozedur 2.6: Der Unterbrechungsprozess wird beendet.
-
9 zeigt im Umriss die Arbeitsweise
des MPEG-Decoders 10 von 1.
Mit anderen Worten, 9 zeigt
ein Beispiel des Umgehens mit Schreib- und Lesehalbbildern. Der
Bitstrom IN wird gemäß 9 an die BSAU 12 in
der Reihenfolge I0, P1, P4, B2, B3, P5 angelegt. Der Buchstabe (z.
B. I des Bildes I0) gibt den Codierungstyp an, und die Ziffer gibt die
Reihenfolge der Anzeige (Ausgabe) an.
-
Am
Anfangspunkt der Decodierungsperiode des Bildes I0 (d. h. Periode
1) ist der Wert der Arbeit OTYW "IP". In Periode 1 werden
daher entsprechend den Prozeduren 1.4 und 1.6 und basierend auf
den Anfangswerten von Periode 0 die Werte der vier Arbeiten T_FRFW,
B_FRFW, T_BRFW und B_BRFW auf 2, 3, 4 bzw. 0 aktualisiert. Der Wert
der Arbeit T_BRFW, d. h. 4, wird als eine obere Schreibhalbbildnummer
benutzt, und der Wert der Arbeit B_BRFW, d. h. 0, wird als eine
untere Schreibhalbbildnummer benutzt. Das Bild I0 wird in das Halbbild
#4 und das Halbbild #0 des Bildspeichers 11 geschrieben.
-
In
der Decodierungsperiode des Bildes P1, d. h. Periode 2, werden entsprechend
den Prozeduren 1.4 und 1.6 die Werte der vier Arbeiten T_FRFW, B_FRFW,
T_BRFW und B_BRFW auf 4, 0, 1 bzw. 2 aktualisiert. Der Wert der
Arbeit T_BRFW, d. h. 1, wird als obere Schreibhalbbildnummer benutzt,
und der Wert der Arbeit B_BRFW, d. h. 2, wird als untere Schreibhalbbildnummer
benutzt. Folglich wird das Bild P1, das durch Vorwärtsreferenz
zu dem in das Halbbild #4 und das Halbbild #0 geschriebene Bild
I0 bewegungskompensiert wird, in das Halbbild #1 und das Halbbild
#2 des Bildspeichers 11 geschrieben.
-
In
der Decodierungsperiode des Bildes P4, d. h. Periode 3, werden entsprechend
den Prozeduren 1.4 und 1.6 die Werte der vier Arbeiten T_FRFW, B_FRFW,
T_BRFW und B_BRFW auf 1, 2, 3 bzw. 4 aktualisiert. Der Wert der
Arbeit T_BRFW, d. h. 3, wird als obere Schreibhalbbildnummer benutzt,
und der Wert der Arbeit B_BRFW, d. h. 4, wird als untere Schreibhalbbildnummer
benutzt. Folglich wird das Bild P4, das durch Vorwärtsreferenz
zu dem in das Halbbild #1 und das Halbbild #2 geschriebene Bild P1
bewegungskompensiert wird, in das Halbbild #3 und das Halbbild #4
des Bildspeichers 11 geschrieben.
-
In
der Decodierungsperiode des Bildes B2, d. h. Periode 4, werden die
vier Arbeiten T_ FRFW, B_FRFW, T_BRFW und B_BRFW nicht aktualisiert. Die
Halbbildnummer, die nicht in einer dieser vier Arbeiten enthaften
ist, d. h. 0, wird als obere Schreibhalbbildnummer und als untere
Schreibhalbbildnummer benutzt. Das bewegungskompensierte Bild B2 wird
in das Halbbild #0 und die drei zusätzlichen Schlitze des Bildspeichers 11 geschrieben.
Unterdessen wird auf das Bild P1 in Halbbild #1 und Halbbild #2
vorwärts
Bezug genommen, und auf das Bild P4 in Halbbild #3 und Halbbild
#4 wird rückwärts Bezug
genommen.
-
Auch
in der Decodierungsperiode des Bildes B3, d. h. Periode 5, werden
die vier Arbeiten T_ FRFW, B_FRFW, T_BRFW und B_BRFW nicht aktualisiert.
Die Halbbildnummer, die nicht in einer dieser vier Arbeiten enthalten
ist, d. h. 0, wird als obere Schreibhalbbildnummer und als untere
Schreibhalbbildnummer benutzt. Das bewegungskompensierte Bild B3
wird folglich in das Halbbild #0 und die drei zusätzlichen
Schlitze des Bildspeichers 11 geschrieben.
-
Unterdessen
wird auf das Bild P1 in Halbbild #1 und Halbbild #2 vorwärts Bezug
genommen, und auf das Bild P4 in Halbbild #3 und Halbbild #4 wird rückwärts Bezug
genommen.
-
Am
Anfangspunkt der Decodierungsperiode des Bildes P5, d. h. Periode
6, ist der Wert der Arbeit OTWY "B". In Periode 6 werden
daher entsprechend den Prozeduren 1.5 und 1.6 die Werte der vier
Arbeiten FRFW, B_FRFW, T_BRFW und B_BRFW auf 3, 4, 1 bzw. 2 aktualisiert.
Der Wert der Arbeit T_BRFW, d. h. 1, dient als obere Schreibhalbbildnummer,
und der Wert der Arbeit B-BRFW, d. h. 2, dient als untere Schreibhalbbildnummer.
Folglich wird das bewegungskompensierte Bild P5 in das Halbbild
#1 und das Halbbild #2 geschrieben. Zu dieser Zeit wird auf das
Bild P4 in Halbbild #3 und Halbbild #4 vorwärts Bezug genommen.
-
Wie
oben mit Verweis auf 7(b) beschrieben,
wird der Weit des Registers OPYR "0" unmittelbar
vor der Startunterbrechung der Ausgabe jedes Halbbildes, wenn der
momentane Zustand ist, dass die nächste Ausgabe ein oberes Halbbild
ist, und der Wert des Registers OPYR wird "1",
wenn der momentane Zustand ist, dass die nächste Ausgabe ein unteres Halbbild
ist. Das heißt,
am Startpunkt der Ausgabe des oberen Halbbildes wechselt der Wert des
Registers OPYR von "1" auf "0". 9 zeigt, dass
in Synchronisation mit einem solchen Wechsel im Wert des Registers
OPYR von "1" auf "0" die Arbeiten T_OFDW und B_OFDW aktualisiert
werden.
-
Am
Startpunkt des zweiten halben Abschnitts von Periode 2 werden entsprechend
der Prozedur 2.2 die Werte der zwei Arbeiten T_OFDW und B_OFDW auf
4 bzw. 0 unter Verwendung der Werte der zwei Arbeiten T_FRFW und
B_FRFW akualisiert. Folglich wird das im Halbbild #4 des Bildspeichers 11 gespeicherte
obere Halbbild des Bildes I0 in dem zweiten halben Abschnitt von
Periode 2 ausgegeben, und das im Halbbild #0 des Bildspeichers 11 gespeicherte
untere Halbbild des Bildes I0 wird in dem ersten halben Abschnitt
von Periode 3 ausgegeben.
-
Am
Startpunkt des zweiten halben Abschnitts von Periode 3 werden entsprechend
der Prozedur 2.2 die Werte der zwei Arbeiten T_OFDW und B_OFDW auf
1 bzw. 2 akualisiert. Folglich wird das im Halbbild #1 gespeicherte
obere Halbbild des Bildes P1 in dem zweiten halben Abschnitt von
Periode 3 ausgegeben, und das im Halbbild #2 gespeicherte untere
Halbbild des Bildes P1 wird in dem ersten halben Abschnitt von Periode
4 ausgegeben.
-
Am
Startpunkt des zweiten halben Abschnitts von Periode 4 wird entsprechend
der Prozedur 2.3 eine Halbbildnummer, die nicht in einer der vier
Arbeiten T_FRFW, B_FRFW, T_BRFW und B_BRFW enthalten ist, d. h.
0, in die zwei Arbeiten T_OFDW und B_OFDW geschrieben. Folglich
beginnt die Ausgabe des Bildes B2 nach einer Halb-Vollbildverzögerung von
dem Startpunkt der Decodierung des Bildes B2, und das obere Halbbild des
Bildes B2 wird in dem zweiten halben Abschnitt von Periode 4 ausgegeben,
und das untere Halbbild des Bildes B2 wird in dem ersten halben
Abschnitt der Periode 5 ausgegeben.
-
Auch
am Startpunkt des zweiten halben Abschnitts von Periode 5 wird entsprechend
der Prozedur 2.3 eine Halbbildnummer, die nicht in einer der vier
Arbeiten T_FRFW, B_FRFW, T_BRFW und B_BRFW enthalten ist, d. h.
0, in die zwei Arbeiten T_OFDW und B_OFDW geschrieben. Folglich
beginnt die Ausgabe des Bildes B3 nach einer Halb-Vollbildverzögerung von
dem Startpunkt der Decodierung des Bildes B3, und das obere Halbbild des
Bildes B3 wird in dem zweiten halben Abschnitt von Periode 5 ausgegeben,
und das untere Halbbild des Bildes B3 wird in dem ersten halben
Abschnitt der Periode 6 ausgegeben.
-
Am
Startpunkt des zweiten halben Abschnitts von Periode 6 werden unter
Verwendung der Werte der zwei Arbeiten T_FRFW und B_FRFW entsprechend
der Prozedur 2.2 die Werte der zwei Arbeiten T_OFDW und B_OFDW auf
3 bzw. 4 aktualisiert. Folglich wird das im Halbbild #3 gespeicherte obere
Halbbild des Bildes P4 in dem zweiten halben Abschnitt von Periode
6 ausgegeben, und das im Halbbild #4 gespeichert untere Halbbild
des Bildes P4 wird in dem ersten halben Abschnitt der nächsten Periode
ausgegeben.
-
Gemäß 9 wird das Ausgabebild in
der Reihenfolge I0, P1, B2, B3 und P4 erhalten. 9 zeigt, dass unmittelbar nachdem das
obere Halbbild des Bildes I0 aus dem Halbbild #4 in dem zweiten
Abschnitt von Periode 2 gelesen ist, das untere Halbbild des Bildes
P4 in das Halbbild #4 in dem ersten halben Abschnitt von Periode
3 geschrieben wird. Dadurch wird eine effektive Nutzung der Halbbilder
in dem Bildspeicher 11 erreicht. Obwohl von dem Startpunkt
des zweiten halben Abschnitts von Periode 4 bis zu dem Endpunkt
des zweiten halben Abschnitts von Periode 5 Operationen des Schreibens
und Lesens von Halbbild #0 und den drei zusätzlichen Schlitzen zur gleichen
Zeit durchgeführt
werden, kann das Auftreten von Problemen durch die Schlitzsteuerung,
die unten beschrieben wird, vermieden werden.
-
Die
Schreibschlitz-Einstellprozedur bezüglich Prozedur 1.10 wird in
Einzelnen erörtert.
Grob gesprochen führt
die Steuereinheit 14 das Einstellen der Register WSR1 und
WSR2 der BSAU 12 durch und wartet danach auf bestimmte
zu erfüllende
Bedingungen.
-
Das
Einstellen der Register WSR1 und WSR2 wird zuerst erklärt. Wenn
die Arbeit DTYW entweder "I" oder "P" ist, und wenn die Arbeit DSTW die Vollbildstruktur
angibt, wird der Wert der Arbeit DRNM in die Register WSR1 und WSR2
geschrieben. Wenn die Arbeit DTYW entweder "I" oder "P" ist, und wenn die Arbeit DSTW die Halbbildstruktur
angibt, wird ein Ergebnis (der Wert der Arbeit DRNW) X2 in das Register
WSR1 geschrieben, und ein Ergebnis (der Wert des Arbeit DRNW) X2
+1 wird in das Register WSR2 geschrieben. Wenn jedoch DRNW X2 >= N, wird DRNW X2 in
DRNW X2 – N
geändert, und
DRNW X2 + 1 wird in DRNW X2 + 1 – N geändert. Durch die oben beschriebene
Einstellung wird, ungeachtet der Bildstruktur, wenn die Arbeit DTYW entweder "I" oder "P" ist,
das obere Halbbild in ein durch das Register T_WFDR bezeichnetes
Halbbild geschrieben, und das untere Halbbild wird in ein durch
das Register B_WFDR bezeichnetes Halbbild geschrieben. In jedem
Halbbild werden die ersten acht Zeilen in den Schlitz #0 geschrieben,
die nächsten
acht Zeilen werden in den Schlitz #1 geschrieben usw.
-
Wenn
die Arbeit DTYW "B" ist, führt die
Steuereinheit 14 die folgenden Prozeduren 3.1 bis 3.7 durch,
um die Register WSR1 und WSR2 einzustellen.
- Prozedur
3.1: Eine erste Schlitznummer X wird aus einem Wort gelesen, das
in einer durch den Zeiger WSLP bezeichneten Adresse des SCM gespeichert ist.
- Prozedur 3.2: Eine zweite Schlitznummer Y wird aus einem in
der nächsten
Adresse gespeicherten Wort gelesen.
- Prozedur 3.3: Die erste Schlitznummer X wird in das Register
WSR1 geschrieben.
- Prozedur 3.4: Die zweite Schlitznummer Y wird in das Register
WSR2 geschrieben.
- Prozedur 3.5: Die erste Schlitznummer X wird in den SCM geschrieben,
um das Einstellen des Registers RSLR vorzubereiten. Das heißt, wenn
die Arbeit DSTW die Vollbildstruktur angibt, wird die erste Schlitznummer
X in ein Wort in einer durch (Wert des Zeigers WSLP) + Sn – (Wert
der Arbeit DRNW) bezeichneten Adresse des SCM gespeichert. Andererseits
wird, wenn die Arbeit DSTW die Halbbildstruktur angibt, die erste
Schlitznummer X in ein Wort in einer durch (Wert des Zeigers WSLP)
+ Sn bezeichneten Adresse des SCM gespeichert.
- Prozedur 3.6: Um das Einstellen des Registers RSLR vorzubereiten,
wird die zweite Schlitznummer Y in den SCM geschrieben. Das heißt, wenn
die Arbeit DSTW die Vollbildstruktur angibt, wird die zweite Schlitznummer
Y in ein Wort in einer durch (Wert des Zeigers WSLP) + Sn – (Wert
der Arbeit DRNW) + N bezeichneten Adresse des SCM gespeichert. Andererseits
wird, wenn die Arbeit DSTW die Halbbildstruktur angibt, die zweite
Schlitznummer Y in ein Wort in einer durch (Wert des Zeigers WSLP)
+ Sn + 1 bezeichneten Adresse des SCM gespeichert.
- Prozedur 3.7: Der Zeiger WSLP wird um zwei erhöht.
-
Die
Steuereinheit 14 führt
das Einstellen der Register WSR1 und WSR2 der BSAU 12 durch
und wartet dann auf die Erfüllung
irgendeiner der folgenden Bedingungen. Dies ist notwendig, um zu
verhindern, dass Daten in einen Schlitz geschrieben werden, bevor
der Schlitz gelesen ist.
- Bedingung 1: In Bedingung 1 sollten
die folgenden Unterbedingungen erfüllt sein, nämlich (i) die Arbeit DTYW ist
entweder "I" oder "P", (ii) die Werte der Arbeiten T_OFDW
und T_BRFW stimmen nicht miteinander überein, und (iii) die Werte
der Arbeiten B_OFDW und B_BRFW stimmen nicht miteinander überein.
Wenn Bedingung 1 erfüllt
ist, bedeutet dies, dass ein Halbbild, das momentan ein Schreibziel
ist, bereit ist, mit Daten beschrieben zu werden, weil das fragliche
Halbbild bereits gelesen wurde.
- Bedingung 2: In Bedingung 2 sollten die folgenden Unterbedingungen
erfüllt
sein, nämlich
(i) die Arbeit DTYW ist entweder "I" oder "P", (ii) die Arbeit DSTW gibt die Vollbildstruktur
an, und (iii) der Wert des Registers ORWR ist größer als der Wert der Arbeit DRNW.
Wenn Bedingung 2 erfüllt
ist, bedeutet dies, dass ein Schlitz mit einer Schlitznummer kleiner
als der Wert des Registers ORWR bereit ist, mit Daten beschrieben
zu werden, weil der fragliche Schlitz bereits gelesen wurde.
- Bedingung 3: In Bedingung 3 sollten die folgenden Unterbedingungen
erfüllt
sein, nämlich
(i) die Arbeit DTYW ist entweder "I" oder "P", (ii) die Arbeit DSTW gibt die Halbbildstruktur
an, und (iii) es ist in der Periode des Decodierens des oberen Halbbildes.
Zur Zeit des Durchführens
entweder einer Decodierung des Codierungstyps I oder einer Decodierung
der Codierungstyps P steht wenigstens ein Halbbild zur Verfügung. Ein
oberes Halbbild wird in das verfügbare Halbbild
geschrieben, und es ist möglich,
Schreibvoränge
durchzuführen.
- Bedingung 4: In-Bedingung 4 sollten die folgenden Unterbedingungen
erfüllt
sein, nämlich
(i) die Arbeit DTYW ist "B", und (ii) der Wert
des Zeigers RSLP ist größer als
der Wert des Zeigers WSLP. Die Schlitznummer, die in einer durch
den Zeiger RSLP bezeichneten Adresse des SCM gespeichert ist, ist
eine für
einen Schlitz, der momentan ausgegeben wird, wie später beschrieben.
Folglich muss ein Schlitz mit einer Nummer kleiner als die vorangehende
Nummer bereits gelesen worden sein, und es ist daher möglich, Schreibvorgänge durchzuführen.
-
Die
Leseschlitz-Einstellprozedur bezüglich Prozedur
2.5 wird im Detail beschrieben. Wenn die Arbeit OTYW "IP" ist, muss die Steuereinheit 14 den Wert
des Registers ORWR in das Register RSLR stellen. Zur Zeit des Bereitstellens
von Bildern des Codierungstyps I oder P kann die Leseschlitznummer
des Lesehalbbildes von null um eins erhöht werden. Außerdem wird
die Ausgabereihennummer des Registers ORWR von null um eins ehöht. Der
Wert des Registers ORWR wird in das Register RSLR gestellt.
-
Wenn
die Arbeit OTYW "B" ist, führt die
Steuereinheit 14 einfache Verarbeitungen, d. h. Prozeduren
4.1 bis 4.3, zum Einstellen des Registers RSLR durch. Dies ist ein
Ergebnis des in Prozeduren 3.5 und 3.6 gezeigten Vorbereitungsprozesses.
Der Zeiger RSLP wird für
jede Ausgabe von acht Zeilen um eins ehöht.
- Prozedur 4.1: Eine
Schlitznummer Z wird aus einem Wort in einer durch den Zeiger RSLP
spezifizierten Adresse des SCM extrahiert.
- Prozedur 4.2: Die Schlitznummer Z wird in das Register RSLP
geschrieben.
- Prozedur 4.3: Der Zeiger RSLP wird um eins erhöht.
-
Nun
auf 10–17 verweisend wird die Arbeitsweise
des MPEG-Decoders 10 von 1 im Einzelnen
beschrieben. 10–15 zeigen den Prozess des
Aktualisierens jedes der Register, und 16 und 17 zeigen
den Prozess des Aktualisierens des SCM. Wein 9 wird der Bitstrom IN in der Reihenfolge
I0, P1, P4, B2, B3, P5 (s. 10–17) in die BSAU 12 geleitet.
Die Bilder P1, P4, B2 und P5 haben eine Vollbildstruktur, während die
Bilder I0 und B3 eine Halbbildstruktur aufweisen. Um die Beschreibung
zu vereinfachen, sind N = 6 und Sn = 9. Die Decodierung von 16 Zeilen
braucht hier Zeit, die zum Ausgeben von 16 Zeilen benötigt wird,
und in VB (Vertikalaustastperiode) werden keine Decodieroperationen
durchgeführt.
-
Auf 10–15 verweisend
entsprechen von 0 bis 71 nummerierte Perioden 8-Zeilen-Ausgabeperioden.
Die Bilder I0, P1, B2, B3 und P4 werden in dieser Reihenfolge ausgegeben
oder angezeigt. Der Decodierstartpunkt jedes Vollbildes ist der
Ausgabestartpunkt der letzten acht Zeilen des oberen Halbbildes
(OPYR = 0). In den Figuren steht "FR" für die Vollbildstruktur,
und "FD" steht für die Halbbildstruktur.
Hier haben, betrachtet man die Periode 24 von 12, das Register B_WFDR und das Register RFDR
den gleichen Wert, d. h. 4. Dies bedeutet, dass Halbbild #4 gleichzeitig
Lese- und Schreiboperationen unterliegt. In Periode 24 hat jedoch
der Wert des Registers RSLR bereits fünf erreicht, und der Wert des
Registers WSR1 und der Wert des Registers WSR2 sind null, und daher
werden überhaupt
keine Probleme erzeugt. Von Periode 43 bis zu Periode 59 haben die
Register T_WFDR, B_WFDR und RFDR jeweils einen Wert von null. Das
heißt,
bezüglich
der Bilder des Codierungstyps B, werden das Halbbild #3 und die
drei zusätzlichen
Schlitze zur gleichen Zeit gelesen und geschrieben. In jeder der
Perioden 43 bis 59 haben jedoch die Register WSR1, WSR2 und RSLR
verschiedene Werte, und daher werden überhaupt keine Probleme erzeugt.
-
16 und 17 zeigen einen Prozess des Aktualisierens
des SCM in Bezug auf die Schreibschlitz-Einstellprozedur (Prozeduren
3.1 bis 3.7), wenn die Arbeit DTYW "B" ist,
und die Leseschlitz-Einstellprozedur (Prozeduren 4.1 bis 4.3), wenn
die Arbeit OTYW "B" ist. In 16 und 17 stellt jede Reihe ein Wort des SCM
dar, und jede Spalte entspricht einer 8-Zeilen-Ausgabeperiode. Wie in der ganz linken
Spalte von 16 gezeigt,
sind Anfangswerte von null bis acht in Wörtern bei Adresse #0 bis Adresse
#8 des SCM gespeichert. Der Anfangswert des Zeigers WSLP ist null,
und der Anfangswert des Zeigers RSLP ist neun. Die Speicherkapazität des SCM
beträgt 20 Wörter.
-
Die
an zweiter und dritter Stelle von links in 16 gelegenen Spalten entsprechen der
Decodierperiode der ersten 16 Zeilen des Bildes B2 mit der Vollbildstruktur,
d. h. Perioden 36 und 37 von 13.
In diesen Perioden wird die Schlitznummer 0 aus einem Wort an der
durch den Zeiger WSLP spezifizierten Adresse #0 extrahiert, und
die Schlitznummer 1 wird aus einem Wort an der nächsten Adresse, d. h. Adresse
#1, extrahiert, Die Schlitznummer 0 wird in das Register WSR1 geschrieben,
und die Schlitznummer 1 wird in das Register WSR2 geschrieben. Unterdessen
werden entsprechend den Prozeduren 3.5 und 3.6, um das Einstellen
des Registers RSLR vorzubereiten, die Schlitznummern 0 und 1 in
ein Wort an Adresse #9 bzw. ein Wort an Adresse #15 geschrieben.
Der Zeiger WSLP wird um zwei erhöht.
-
Die
an neunter Stelle von links in 16 gelegene
Spalte entspricht einer Periode des Bereitstellens der ersten acht
Zeilen des oberen Halbbildes des Bildes B2, d. h. Periode 43 von 13. In dieser Periode wird
die Schlitznummer 0 aus einem Wort an einer durch den Zeiger RSLP
spezifizierten Adresse des SCM (Adresse #9) extrahiert und dann
in das Register RSLR geschrieben. Diese Schlitznummer 0 ist die
Nummer, die eine Halb-Vollbildperiode früher in den SCM geschrieben
wurde. Der Zeiger RSLP wird um eins erhöht.
-
Die
an vierzehnter und fünfzehnter
Stelle von links in 16 gelegenen
Spalten entsprechen der Decodierperiode der ersten 16 Zeilen des
Bildes B3 mit der Halbbildstruktur, d. h. Perioden 48 und 49 von 14. In diesen Perioden wird
die Schlitznummer 6 aus einem Wort an einer durch den Zeiger
WSLP spezifizierten Adresse des SCM (Adresse #12) extrahiert, und
die Schlitznummer 8 wird aus einem Wort an der nächsten Adresse
(Adresse #13) extrahiert.
-
Die
Schlitznummer 6 wird in das Register WSR1 geschrieben,
und die Schlitznummer 8 wird in das Register WSR2 geschrieben.
Unterdessen werden entsprechend den Prozeduren 3.5 und 3.6, um das
Einstellen des Registers RSLR vorzubereiten, die Schlitznummern 6 und 8 in
Wörter
an Adresse #1 bzw. Adresse #1 des SCM geschrieben. Der Zeiger WSLP
wird um zwei erhöht.
-
Die
fünfte
Spalte von links in 17 entspricht
einer Periode des Bereitstellens der ersten acht Zeilen des oberen
Halbbildes des Bildes B3, d. h. Periode 55 von 14. In dieser Periode wird die Schlitznummer
aus einem Wort an einer durch den Zeiger RSLP spezifizierten Adresse
des SCM (Adresse #1) extrahiert. Die Schlitznummer 6 wird dann
in das Register RSLR geschrieben. Diese Schlitznummer 6 ist
diejenige, die eine Halb-Halbbildperiode früher in den SCM geschrieben
wurde. Der Zeiger RSLP wird um eins erhöht.
-
16 und 17 zeigen, dass in jeder der Perioden
die Adresse der "R"-Wörter (ein "R"-Wort wird zur Schreibschlitz-Einstellung
benutzt) größer ist
als die der "W"-Wörter (ein
Paar von "W"-Wörtern wird zur
Leseschlitz-Einstellung benutzt). Dies stellt sicher, dass ein Schreibzielschlitz
ein bereits gelesener Schlitz ist. Selbst wenn die Periode des Decodierens
von 16 Zeilen kürzer
wird als die Periode des Ausgebens von 16 Zeilen, weil das Decodieren
der 16 Zeilen mit hoher Geschwindigkeit durchgeführt wird, werden keine Probleme
erzeugt, da es so eingerichtet ist, dass die Steuereinheit 14 auf
die zu erfüllende
Bedingung 4 wartet.
-
Wie
oben beschrieben macht es der MPEG-Decoder 10 von 1 möglich, die Verschachtelungsumwandlung
von B-Bildern mit einem der Ein-Halbbildblöcke 20–24 und
den drei zusätzlichen
Schlitzen unter der Bedingung zustande zu bringen, dass die Decodierung
des Eingangsbitstromes IN nicht in der VB durchgeführt wird,
wodurch die Speicherkapazität
des Bildspeichers 11 auf bis zu etwa 2.5 Vollbilder reduziert
werden kann.
-
Die
Zahl von zusätzlichen
Schlitzen kann verringert werden. 18 zeigt
ein Beispiel der Implementierung der B-Bild-Verschachtelungsumwandlung
unter Verwendung von N + 2 Schlitzen (N = 6). Eine an der fünften Stelle
von rechts in 18 gelegene
Spalte benötigt
jedoch eine Decodierrate, die das Zweifache der anderen Spalten
beträgt. 19 zeigt ein Beispiel der
Implementierung der B-Bild-Verschachtelungsumwandlung unter Verwendung
von N + 1 Schlitzen (N = 6). Von einer an der fünften Stelle von rechts gelegenen
Spalte wird jedoch verlangt, dass die Decodierung für 16 Zeilen
in einer Horizontalaustastperiode vollendet wird. Eine B-Bild-Verschachtelungsumwandlung
kann folglich mit N + 3 Schlitzen implementiert werden. Selbst in einem
solchen Fall ist es möglich,
alle für
MPEG2 nötigen
Speicherfunktionen mit einem einzigen 16 MBit Speicherchip bereitzustellen.