-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft ein(e) Decodierverfahren und -vorrichtung
und ein Speichermedium. Insbesondere betrifft die vorliegende Erfindung
ein(e) Decodierverfahren und -vorrichtung und ein Speichermedium,
geeignet zum Decodieren eines MPEG-2-Videobitstroms.
-
2. Beschreibung des Standes
der Technik
-
Das
MPEG(Moving Picture Experts Group)-2 ist ein Verfahren zum Codieren
eines Videosignals in eine hocheffiziente komprimierte Form entsprechend dem
Standard ISO/IEC (International Standards Organisation/International
Electrotechnical Commission) 13818-2 und der Empfehlung ITU-T (International Telecommunication
Union-Telecommunication sector) H.262.
-
Gemäß der MPEG-2-Technik
werden jeweilige Bilder in einem Videosignal in eine von drei Bildformen
codiert, die von unterschiedlicher Codiereffizienz sind (intraframe-codiertes
Bild (I-Bild), interframe-vorwärtsprädiktiv-codiertes
Bild (P-Bild) und
bidirektional-prädiktiv-codiertes
Bild (B-Bild)). Im Fall der I-Bilder wird die Codierung auf der
Basis einer räumlichen
Korrelation in einem Rahmen (Frame) eines Bildes durchgeführt. In
P-Bildern wird eine Codierung mittels Bewegungsvorhersage bezüglich eines
vorherigen I- oder P-Bildes durchgeführt. Im Fall der B-Bilder wird
die Codierung mittels Bewegungskompensation bezüglich eines vorherigen oder
eines folgenden I- oder P-Bildes durchgeführt. Damit wird die Codiereffizienz
in der Reihenfolge der I-, P- und B-Bilder größer.
-
Das
Codieren gemäß MPEG-2
wird in mehr Einzelheiten unter Bezug auf 1 beschrieben. Falls
ein Videosignal in zum Beispiel I1, B2, B3, P4,
..., P13 (wobei die Indizes die Reihenfolge
bezeichnen, in welcher die Bilder angezeigt werden) codiert wird, wird
das Bild I1 auf der Basis der räumlichen
Korrelation in einem Vollbild codiert, das Bild P4 wird
auf der Basis einer Bewegungskompensationsvorhersage aus dem Bild
I1codiert, und das Bild P, wird auf der Basis
einer Bewegungskompensationsvorhersage aus dem Bild P4 codiert.
Ferner wird zum Beispiel das Bild B2 auf
der Basis einer Bewegungskompensationsvorhersage aus dem Bild I1und dem Bild P4 codiert,
und das Bild B5 wird auf der Basis einer
Bewegungskompensationsvorhersage aus dem Bild P4 und
dem Bild P, codiert.
-
MPEG-2-codierte
Datenströme
werden entsprechend einem durch das Codierverfahren bestimmten Profil
und einem durch die Anzahl von zu verarbeitenden Pixeln bestimmten
Niveau klassifiziert, sodass MPEG-2-codierte Datenströme in einer weiten
Vielzahl von Anwendungen benutzt werden können. Von den verschiedenen
MPEG-2-Klassen wird zum Beispiel MP@ML (Main Profile/Main Level) häufig in
DVB (Digital Video Broadcast) und DVD (Digital Versatile Disk) verwendet.
Das Profil und das Niveau werden in sequence_extension beschrieben, was
später
unter Bezug auf 6 beschrieben wird.
-
4:2:2P
(4:2:2-Profil) ist als ein Profil für einen MPEG-2-codierten Datenstrom,
geeignet zur Verwendung beim Ausstrahlen, definiert. Bei 4:2:2P
ist die Obergrenze der Bitrate auf einen ausreichend hohen Wert
eingestellt, sodass ein Farbdifferenzsignal eines Videosignals entsprechend
dem 4:2:2-Format in einer ähnlichen
Weise wie ein herkömmliches
Basisbandsignal behandelt werden kann. Als eines der Niveaus von
MPEG-2-codierten Datenströmen
ist HL (High Level) zur Verwendung beim Codieren eines Videosignals
hoher Auflösung
der nächsten
Generation definiert.
-
2 zeigt
repräsentative
Beispiele von im MPEG-2-Standard definierten Klassen. Sie sind 4:2:2P@HL
(4:2:2-Profil, High Level), 4:2:2P@ML (4:2:2-Profil, Main Level),
MP@HL (Main Profile, High Level), MP@HL-1440 (Main Profile, High
Level 1440), MP@ML (Main Profile, Main Level), HP@LL (Main Profile,
Low Level) und SP@ML (Simple Profile, Main Level). In 2 sind
auch die Obergrenzen der jeweiligen Parameter (Bitrate, Anzahl Abtastungen
je Zeile, Anzahl Zeilen je Vollbild, Bearbeitungszeit je Vollbild,
Bearbeitungszeit je Abtastung) gezeigt.
-
Wie
in 2 dargestellt, beträgt bei 4:2:2P@HL die Obergrenze
der Bitrate 300 Mbits/sec, und die Obergrenze der Anzahl Pixel beträgt 62.668.800
Pixel/sec. Andererseits beträgt
bei MP@ML die Obergrenze der Bitrate 15 Mbits/sec, und die Obergrenze
der Anzahl Pixel beträgt 10.368.000
Pixel/sec. Das heißt,
ein Videodecoder zum Decodieren eines Videosignals in das 4:2:2P@HL-Format
benötigt
bezüglich
der Bitrate eine 20-fach höhere
und bezüglich
der Anzahl Pixel eine etwa 6-fach höhere Verarbeitungsleistung
als bei einem MP@ML-Videodecoder.
-
Die
Niveaustruktur eines MPEG-2-Videobitstroms wird nun unter Bezug
auf 3 beschrieben. Zu Beginn einer Bildebene ist oben sequence_header
geschrieben. secquence_header definiert Dateianfangsdaten einer
Bitstromsequenz. Falls der Bitstrom kein sequence_extension im Anschluss
an den ersten sequence_header der Sequenz hat, wird die in ISO/IEC11172-2
beschriebene Regel auf diesen Bitstrom angewendet. Falls dagegen
sequence_extension nach dem ersten sequence_header der Sequenz existiert,
wird sequence_extension unmittelbar nach einem danach erzeugten
sequence_header gesetzt. Daher ist in dem speziellen in 3 gezeigten
Beispiel sequence_extension unmittelbar nach jedem sequence_header
gesetzt.
-
sequence_extension
definiert Erweiterungsdaten in einer Sequenzebene des MPEG-Bitstroms. sequence_extension
wird nur unmittelbar nach sequence_header platziert, und sequence_extension darf
nicht unmittelbar vor sequence_end_code am Ende des Bitstroms platziert
werden, sodass kein Vollbild nach dem Durchführen einer Decodierung und
dem Umordnen der Vollbilder verloren geht. Ferner wird, wenn der
Bitstrom sequence_extension_enthält, picture_coding_extension
unmittelbar nach jedem picture_header platziert.
-
Eine
GOP (Group of Picture) enthält
mehrere Bilder. GOP_header definiert Dateianfangsdaten in einer
GOP-Ebene des MPEG-Bitstroms. Ferner sind durch picture_header und
picture_coding extension definierte Datenelemente in dem Bitstrom
geschrieben. Ein Bild ist in picture_coding_extension nach picture_header
folgendem picture_data codiert. Das erste codierte Vollbild nach
GOP_header ist ein codiertes I-Vollbild (d.h. das erste Bild nach GOP_header
ist ein I-Bild). In der ITU-T-Empfehlung H.262 sind auch verschiedene
Erweiterungen zusätzlich
zu sequence_extension und picture_coding_extension definiert, obwohl
sie hier nicht beschrieben sind.
-
picture_header
definiert Dateianfangsdaten einer Bildebene des MPEG-Bitstroms. picture_coding_extension
definiert Erweiterungsdaten der Bildebene des MPEG-Bitstroms.
-
picture_data
beschreibt Datenelemente in einer Slice-Ebene und einer Makroblockebene
des MPEG-Bitstroms. picture_data ist in mehrere Slices aufgeteilt,
und jeder Slice ist in mehrere Makroblöcke aufgeteilt, wie in 3 dargestellt.
-
Jeder
Makroblock enthält
16×16
Pixeldaten. Makroblöcke
am Beginn und am Ende jedes Slices sind nicht Leer-Makroblöcke (Makroblöcke ohne
Informationen). Im Fall von Vollbildbildern, die mittels einer Vollbild-DCT
(diskrete Kosinustransformation) und einer Feld-DCT codiert werden
können,
sind einer Vollbildcodierung unterzogene Makroblöcke und einer Feldcodierung
unterzogene Makroblöcke
in ihrer internen Struktur unterschiedlich.
-
Jeder
Makroblock enthält
einen Bereich, in dem Luminanzkomponenten geschrieben sind, und einen
Bereich, in dem Farbdifferenzkomponenten geschrieben sind. Der Begriff „Makro
block" wird verwendet,
um eine Informationsquelle, decodierte Daten oder eine entsprechende
codierte Datenkomponente zu schreiben. Ein Makroblock ist in einem
von drei Farbdifferenzformaten, 4:2:0, 4:2:2 oder 4:4:4, gebildet.
Die Art, in welcher Blöcke
in einem Makroblock angeordnet sind, variiert in Abhängigkeit
vom Farbdifferenzformat.
-
4A zeigt
einen Makroblock im Farbdifferenzformat 4:2:0. Im 4:2:0-Format besteht
ein Makroblock aus vier Luminanzblöcken Y und zwei Farbdifferenzblöcken (einem
Cb-Block und einem Cr-Block). 4B zeigt
einen Makroblock im Farbdifferenzformat 4:2:2. Im 4:2:2-Format besteht
ein Makroblock aus vier Luminanz (Y)-Blöcken und vier Farbdifferenzblöcken (zwei
Cb-Blöcken
und zwei Cr-Blöcken).
-
Jeder
Makroblock kann in einem von zwei Modi prädiktiv codiert sein: einem
Feldprädiktionsmodus
und einem Vollbildprädiktionsmodus.
Bei der Feldprädiktion
wird ein Feld unter Verwendung von Daten eines oder mehrerer vorher
decodierter Felder vorausgesagt. Bei der Vollbildprädiktion
wird ein Vollbild unter Verwendung von Daten eines oder mehrerer
vorher decodierter Vollbilder vorhergesagt. Innerhalb eines Feldbildes
wird die Vorhersage allein durch Feldprädiktion durchgeführt. Andererseits
ist für
Vollbildbilder eine Prädiktion
durch entweder Feldprädiktion
oder Vollbildprädiktion
möglich.
Der Prädiktionsmodus
wird für
jeden Makroblock ausgewählt.
Beim prädiktiven
Codieren eines Makroblocks können
zusätzlich
zur Feldprädiktion
und zur Vollbildprädiktion
eine 16×8-Bewegungskompensation
und zwei spezielle duale Hauptprädiktionsmodi
verwendet werden.
-
Bewegungsvektorinformationen
und andere zugehörige
Informationen werden zusammen mit einem Prädiktionsfehlersignal jedes
Makroblocks codiert. Ein Bewegungsvektor wird so codiert, dass ein letzter
Bewegungsvektor, der in einen Code variabler Länge codiert ist, als ein Prädiktionsvektor
verwendet wird und ein Differenzvektor bezüglich des Prädiktionsvektors
codiert wird. Die maximal anzeigbare Vektorlänge kann für jedes Bild programmiert werden.
Berechnungen von Bewegungsvektoren werden geeigneterweise durch
einen Codierer durchgeführt.
-
Nach
picture_data sind nächste sequence_header
und sequence_extension platziert. Die in diesen sequence_header
und sequence_extension geschriebenen Datenelemente sind exakt die
gleichen wie die im secquence_header und sequence_extension am Beginn
der Sequenz des Videostroms geschriebenen. Das Schreiben der gleichen
Daten an verschiedenen Positionen im Datenstrom in der oben beschriebenen
Weise macht es möglich,
die Wahrscheinlichkeit zu reduzieren, dass Daten in der Sequenzebene
nicht erfolgreich empfangen werden können und damit der Datenstrom nicht
decodiert werden kann, wenn eine Empfangsvorrichtung beginnt, den
Bitstrom ab einem Teil in der Mitte des Bitstroms zu empfangen.
-
Schließlich ist
nach den durch die letzten sequence_header und sequence_extension
definierten Datenelementen, d.h. am Ende eines Datenstroms, sequence_end_code
von 32 Bit platziert, um das Ende der Sequenz anzuzeigen.
-
Die
jeweiligen Datenelemente werden nun in mehr Einzelheiten Bezug nehmend
auf 5 bis 12 beschrieben.
-
5 zeigt
die Datenstruktur von sequence_header. sequence_header enthält als Datenelemente
sequence_header_code, horizontal_size_value, vertical_size_value, aspect_ratio_information,
frame_rate_code, bit_rate_value, marker_bit, vbv_buffer_size_value, constrained_parameter_flag, load_intra_quantiser_matrix,
intra_quantiser_matrix, load_non_intra_quantiser_matrix und non_intra_quantiser_maxtrix.
-
sequence_header_code
sind Daten, die als ein Startsynchronisationscode der Sequenzebene dienen.
horizontal_size_value sind Daten bestehend aus niederwertigen 12
Bits des die Anzahl von Pixeln in der horizontalen Richtung eines
Bildes darstellenden Werts. vertical_size_value sind Daten bestehend aus
niederwertigen 12 Bits des die Anzahl Zeilen in der vertikalen Richtung
eines Bildes darstellenden Werts. aspect_ratio_information sind
Daten, die das Seitenverhältnis
(Vertikal/Horizontal-Verhältnis)
eines Pixels oder eines Bildschirms darstellen. frame_rate_code
sind Daten, die eine Rate darstellen, mit welcher ein Bildvollbild
angezeigt wird. bit_rate_value sind Daten bestehend aus niederwertigen
18 Bits des die Bitrate, die die Anzahl erzeugter Bits begrenzt,
darstellenden Werts.
-
marker_bit
sind Bitdaten, die eingefügt
sind, um eine Startcodeemulation zu verhindern. vbv_buffer_size_value
sind Daten bestehend aus niederwertigen 10 Bits des die Größe eines
virtuellen Zwischenspeicher-VBV (Video Buffering Verifier) darstellenden
Werts zum Steuern der Größe eines
erzeugten Codes. constrained_parameter_flag sind Daten, die anzeigen,
dass jeweilige Parameter in begrenzten Bereichen liegen. load_non_intra_quantiser_matrix
sind Daten, die anzeigen, dass es keine Quantisierungsmatrixdaten
für einen
Non-Intra-Makroblock gibt. load_intra_quantiser_matrix sind Daten,
die anzeigen, dass es Quantisierungsmatrixdaten für einen
lntra-Markobock gibt. intra_quantiser_matrix sind Daten, die die
Werte einer Quantisierungsmatrix für einen Intra-Makroblock darstellen. non_intra_quantiser_maxtrix
sind Daten, die die Werte eine Quantsierungsmatrix für einen
Non-Intra-Makroblock darstellen.
-
6 zeigt
die Datenstruktur von sequence_extension. sequence_extension enthält Datenelemente,
wie beispielsweise extension_start_code, extension_start_code_identifier, profile_and_level_indication,
progressive_sequence, chroma_format, horizontal_size_extension, vertical_size_extension,
bit_rate_extension, marker_bit, vbv_buffer_size_extension, low_delay, frame_rate_extension_n
und frame_rate_extension_d.
-
extension_start_code
ist ein Startsynchronisierungscode der Erweiterungsdaten. extension start_code_identifier
sind Daten, die die Art der Erweiterungsdaten darstellen. profile_and_level_indication
sind Daten, die ein Profil und ein Niveau von Videodaten bestimmen. progressive_sequence
sind Daten, die anzeigen, dass Videodaten sequenziell gescannt werden
(progressives Bild). chroma_format sind Daten, die Farbdifferenzformat
der Videodaten bestimmen.
-
horizontal_size_extension
sind höherwertige 2-Bit-Daten,
die horziontal_size_value eines Sequenzdateianfangs hinzugefügt sind. vertical_size_extension
sind höherwertige
2-Bit-Daten, die vertical_size_value eines Sequenzanfangs hinzugefügt sind.
-
bit_rate_extension
sind höherwertige 12-Bit-Daten,
die bit_rate_value des Sequenzanfangs hinzugefügt sind. marker_bit sind Bitdaten,
die eingefügt
sind, um eine Startcodeemulation zu verhindern. vbv_buffer_size_extension
sind höherwertige
8-Bit-Daten, die vbv_buffer_size_value des Sequenzkopfes hinzugefügt sind.
low_delay sind Daten, die anzeigen, dass kein B-Bild enthalten ist. frame_rate_extension_n
sind Daten, die mit frame_rate_code des Sequenzkopfes kombiniert werden,
um eine Vollbildrate zu erhalten.
-
frame_rate_extension_d
sind Daten, die mit frame_rate_code des Sequenzkopfes kombiniert werden,
um eine Vollbildrate zu erhalten.
-
7 zeigt
die Datenstruktur von GOP_header. GOP_header besteht aus Datenelementen
von group_start_code, time_code, closed_gop und broken_link.
-
group_start_code
ist ein Startsynchronisationscode einer GOP-Ebene. time_code ist
ein Zeitcode, der eine Zeit eines ersten Bildes einer GOP darstellt.
closed_gop sind Merkerdaten, die anzeigen, dass ein Bild in einer
GOP unabhängig
von den anderen GOPs wiedergegeben werden kann. broken_link sind
Merkerdaten, die anzeigen, dass ein erstes B-Bild in einer GOP wegen
einer aus einem Editieren oder dergleichen resultierenden Modifikation
nicht genau wiedergegeben werden kann.
-
8 zeigt
die Datenstruktur von picture_header. Die Datenelemente von picture_header
enthalten picture_start_code, temporal_reference, picture_coding_type, vbv_delay,
full_pel_forward_vector, forward_f_code, full_pel_backward_vector
und backward_f_code.
-
picture_start_code
sind Daten, die als ein Startsynchronisationscode einer Bildebene
dienen. temporal_reference sind Daten, die die Reihenfolge darstellen,
in welcher die Bilder angezeigt werden, und die am Start einer GOP
zurückgesetzt
werden. picture_coding_type sind Daten, die die Art eines Bildes
darstellen.
-
vbv_delay
sind Daten, die einen Ausgangszustand eines virtuellen Zwischenspeichers
beim stochastischen Zugriff darstellen.
-
full_pel_forward_vector,
forward_f_code, full_pel_backward_vector, backward_f_code sind feste
Daten, die bei MPEG-2 nicht benutzt werden.
-
9 zeigt
die Datenstruktur von picture_coding_extension.
-
picture_coding_extension
enthält extension_start_code, extension_start_code_identifier,
f_code[0][0], f_code[0][0], f_code[1][0], f_code[1][1], intra_dc_precision,
picture_structure, top_field_first, frame_pred_frame_dct, concealment_motion_vectors,
q_scale_type, intral_vlc_format, alternate_scan, repeat_first_field, chroma_420_type,
progressive_frame, composite_display_flag, v_axis, field_sequence, sub_carrier,
burst_amplitude und sub_carrier_phase.
-
extension_start_code
sind Daten, die als ein Synchronisierungscode dienen, der den Start
der Erweiterungsdaten in einer Bildebene anzeigt.
-
extension_start_code_identifier
sind Daten, die die Art der Erweiterungsdaten darstellen. f_code[0][0]
sind Daten, die den Suchbereich eines horizontalen Bewegungsvektors
in einer Vorwärtsrichtung
darstellen. f_code[0][1] sind Daten, die den Suchbereich eines vertikalen
Bewegungsvektors in einer Vorwärtsrichtung
darstellen. f_code[1][0] sind Daten, die den Suchbereich eines horizontalen
Bewegungsvektors in einer Rückwärtsrichtung
darstellen. f_code[1][1] sind Daten, die den Suchbereich eines vertikalen
Bewegungsvektors in einer Rückwärtsrichtung
darstellen.
-
intra_dc_precision
sind Daten, die den Präzisionsgrad
von DC-Koeffizienten darstellen. Falls eine DCT auf eine Matrix
f angewendet wird, die Luminanz- und Farbdifferenzsignale der jeweiligen
Pixel in einem Block darstellt, erhält man eine 8×8-DCT-Koeffizientenmatrix
F. Ein Koeffizient in der oberen linken Ecke der DCT-Koeffizientenmatrix
F wird als ein DC-Koeffizient bezeichnet. Der DC-Koeffizient ist
ein Signal, der die mittlere Luminanz und die mittlere Farbdifferenz
eines Blocks darstellt. picture_structure sind Daten, die anzeigen,
ob ein Bild eine Vollbildstruktur oder eine Feldstruktur besitzt.
Falls picture_structure anzeigt, dass ein Bild die Feldstruktur
besitzt, enthält
picture_structure ferner Daten, die angeben, ob das Feld ein oberes
oder ein unteres ist. top_field_first sind Daten, die, wenn die Struktur
die Vollbildstruktur ist, darstellen, ob das erste Feld das obere
oder das untere Feld ist. frame_pred_frame_dct sind Daten, die nur
verwendet werden, wenn die Struktur die Vollbildstruktur ist, um
anzuzeigen, dass die Vollbildmodus-DCT-Prädiktion nur im Vollbildmodus
durchgeführt
wird. concealment_motion_vectors sind Daten, die anzeigen, dass
ein Intra-Makroblock einen Bewegungsvektor zum Verbergen eines Übertragungsfehlers enthält.
-
q_scale_type
sind Daten, die anzeigen, ob ein linearer Quantisierungsmaßstab oder
ein nicht-linearer Quantisierungsmaßstab verwendet wird. intral_vlc_format
sind Daten, die anzeigen, ob ein Intra-Makroblock eine weitere zweidimensionale
VLC (Variable Length Coding) benutzt. alternate_scan gibt an, ob
ein Abtasten in einer Zickzack-Weise oder in einer abwechselnden
Weise durchgeführt
wird. repeat_first_field sind Daten, die beim 2:3-Pull-Down benutzt
werden. In chroma_420_type ist der gleiche Wert wie beim nächsten progressive_frame
geschrieben, wenn das 4:2:0-Farbdifferenzformat verwendet wird,
während
0 geschrieben ist, wenn das Farbdifferenzformat nicht 4:2:0 ist.
progressive_frame sind Daten, die anzeigen, ob das vorliegende Bild
sequenziell gescannt wird oder nicht. composite_display_flag sind
Daten, die angeben, ob ein Quellsignal ein zusammengesetztes Signal
ist oder nicht. v_axis, field_sequence, sub_carrier, burst_amplitude
und sub_carrier_phase werden benutzt, wenn das Quellsignal ein zusammengesetztes Signal
ist.
-
Die
Datenstruktur von picture_data wird Bezug nehmend auf 10 beschrieben.
Die Funktion picture_data() definiert Datenelemente durch eine Funktion
slice(). Wenigstens ein durch die Funktion slice() definiertes Datenelement
ist in einem Bitstrom geschrieben.
-
Wie
in 11 dargestellt, ist die Funktion slice() durch
Datenelemente definiert, die slice_start_code, quantiser_scale_code, intra_slice_flag,
intra_slice, reserved_bits, extra_bit_slice und extra_information_slice
enthalten, und auch durch die Funktion makroblock().
-
slice_start_code
ist ein Startcode, der den Start eines durch die Funktion slice()
definierten Datenelements angibt. quantiser_scale_code sind Daten,
die die für
einen in der vorliegenden Slice-Ebene existierenden Makroblock eingestellte
Quantisierungsschrittgröße angeben.
Wenn quantiser_scale_code für
jeden Makroblock höher eingestellt
wird, wird macorblock_quantiser_scale_code, der für jeden Makroblock
eingestellt ist, Priorität
gegeben.
-
intra_slice_flag
ist ein Merker, der angibt, ob ein Bitstrom intra_slice und reserved_bits
enthält. intra_slice
sind Daten, die angeben, ob es in der Slice-Ebene einen Nicht-Intra-Makroblock
gibt oder nicht. Wenn einer der Makroblöcke in der Slice-Ebene ein
Nicht-Intra-Makroblock ist, ist intra_slice auf „0" gesetzt. Falls alle Makroblöcke in der
Slice-Ebene Intra-Makroblöcke
sind, ist intra_slice auf „1" gesetzt. reserved_bits
ist ein reservierter 7-Bit-Datenbereich. extra_bit_slice ist ein
Merker, der angibt, ob es Extrainformationen gibt oder nicht. Wenn extra_information_slice_existiert,
ist extra_bit_slice_auf „1" gesetzt, während extra_bit_slice
auf „0" gesetzt ist, wenn
es keine Extrainformationen gibt.
-
Nach
den obigen Datenelementen werden die durch die Funktion makroblock()
definierten Datenelemente beschrieben. Wie in 12 dargestellt, wird
die Funktion makroblock() benutzt, um Datenelemente wie beispielsweise
macroblock_escape, macroblock_address_increment, quantiser_scale_code
und marker_bit zu beschreiben und auch Datenelemente zu beschreiben,
die durch die Funktion macroblock_modes(), die Funktion motion_vectors()
und die Funktion coded_block_attern() definiert sind.
-
macroblock_escape
ist eine feste Bitfolge, die angibt, ob der Unterschied in der horizontalen Richtung
zwischen einem Referenz-Makroblock und einem vorherigen Makroblock
gleich oder größer als 34
ist oder nicht. Wenn der Unterschied in der horizontalen Richtung
zwischen dem Referenz-Makroblock und dem vorherigen Makroblock gleich
oder größer als
34 ist, wird dem Wert von macroblock_address_increment 33 hinzuaddiert. macroblock_address_increment
sind Daten, die den Unterschied in der horizontalen Richtung zwischen einem
Referenz-Makroblock und einem vorherigen Makroblock angeben. Falls
es zum Beispiel vor macroblock_address_increment ein macroblock_escape
gibt, gibt der Wert, den man durch Hinzuaddieren von 33 zu macroblock_address_increment
erhält,
den aktuellen Unterschied in der horizontalen Richtung zwischen dem
Referenz-Makroblock und dem vorherigen Makroblock an.
-
quantiser_scale_code
sind Daten, die die für jeden
Makroblock eingestellte Quantisierungsschrittgröße angeben. quantiser scale_code
wenn nur geschrieben, wenn macroblock_quant gleich „1" ist. slice_quantiser_scale_code
wird für
jede Slice-Ebene eingestellt, um die Quantisierungsschrittgröße der Slice-Ebene
anzugeben. Wenn jedoch scale_code für einen Referenz-Makroblock
eingestellt ist, wird quantiser_scale_code ausgewählt.
-
Nach
macroblock_address_increment sind durch die Funktion macroblock_modes()
definierte Datenelemente geschrieben. Wie in 13 dargestellt,
wird die Funktion macroblock_modes() benutzt, um Datenelemente wie
beispielsweise macroblock_type, frame_motion_type, field_motion_type
und dct_type zu schreiben. macroblock_type sind Daten, die den Codiertyp
eines Makroblocks angeben.
-
Falls
macroblock_motion_forward oder macroblock_motion_backward gleich „1" ist und falls die
Bildstruktur ein Vollbild ist und falls ferner frame_pred_frame_dct
gleich „0" ist, wird ein frame_motion_type
darstellendes Datenelement nach einem macroblock_type darstellenden
Datenelement geschrieben.
-
frame_pired_frame_dct
ist ein Merker, der angibt, ob der Bitstrom frame_motion_type_enthält oder
nicht.
-
frame_motion_type
ist ein 2-Bit-Code, der den Vorhersagetyp eines Makroblocks in einem
Vollbild angibt. Falls es zwei Prädiktionsvektoren gibt und die
Prädiktion
auf einer Feldbasis erfolgt, ist frame_motion_type auf „00" gesetzt. Falls es
keinen Prädiktionsvektor
gibt und die Prädiktion
auf der Feldbasis erfolgt, ist frame_motion_type auf „01" gesetzt. Wenn es
einen Prädiktionsvektor
gibt und die Prädiktion
auf der Basis eines Vollbilds erfolgt, ist frame_motion_type auf „10" gesetzt. Falls es
einen Prädiktionsvektor
gibt und die Prädiktion
auf einer Doppelhauptbasis erfolgt, ist frame_motion_type auf „11" gesetzt.
-
field_motion
type ist ein 2-Bit-Code, der die Bewegungsprädiktionsart eines Makroblocks
in einem Feld angibt. Falls es einen Prädiktionsvektor gibt und die
Prädiktion
auf der Basis eines Feldes erfolgt, ist field_motion_type auf „01" gesetzt. Wenn es
zwei Prädiktionsvektoren
gibt und die Prädiktion
auf der Basis von 18×8-Makroblöcken erfolgt,
ist field_motion_type auf „10" gesetzt. Falls es
einen Prädiktionsvektor
gibt und die Prädiktion
auf einer Doppelhauptbasis erfolgt, ist field_motion_type auf „11" gesetzt.
-
Falls
die Bildstruktur ein Vollbild ist und falls frame_pred_frame_dct
angibt, dass ein Bitstrom frame_motion_type enthält, und falls ferner frame_pred_frame_dct
angibt, dass der Bitstrom dct_type enthält, ist ein dct_type darstellendes
Datenelement nach dem macroblock_type darstellenden Datenelement
geschrieben. dct_type sind Daten, die angeben, ob eine DCT im Vollbild-DCT-Modus oder im Feld-DCT-Modus
ist.
-
Alle
Datenelemente in einem MPEG-2-Videobitstrom starten mit einem speziellen
Bitmuster, das als ein Startcode bezeichnet wird. Jeder Startcode hat
ein spezielles Bitmuster, das niemals in einem Bitmuster für irgendeinen
anderen Zweck verwendet wird. Jeder Startcode besteht aus einem
Startcodepräfix
und einem dem Startcodepräfix
folgenden Startcodewert. Das Startcodepräfix ist eine Bitfolge von „0000 0000
0000 0000 0000 0001".
Der Startcodewert ist in 8 Bits geschrieben, um die Art des Startcodes
anzugeben.
-
14 zeigt
die Startcodewerte entsprechend dem MPEG-2-Standard. Die meisten
Startcodes haben einen Startcodewert. slice_start_code enthält jedoch
mehrere Startcodewerte (01 bis AF), um die vertikale Position eines
Slices anzugeben. Alle diese Startcodes sind in Einheiten von Bytes
geschrieben. Deshalb sind mehrere Bits von „0" vor das Startcodepräfix gesetzt, sodass das erste
Bit des Startcodepräfixes
zum ersten Bit eines Bytes wird und damit der Startcode in Einheiten
von Bytes geschrieben ist.
-
Ein
herkömmlicher
MPEG-Videodecoder, der MP@ML/MPEG-2-Videobitströme codieren kann, wird nun
unter Bezug auf 15 beschrieben. 15 zeigt
ein Beispiel eines Aufbaus einer solchen Art von MPEG-Videodecoder.
-
Dieser
MPEG-Videodecoder enthält
eine IC (Integrated Circuit) 1 und einen aus einem DRAM (Dynamic
Random Access Memory) oder dergleichen gebildeten Zwischenspeicher 12,
wobei der Zwischenspeicher 2 einen Datenstrompuffer 21 und einen
Videopuffer 22 enthält
und die IC 1 eine Stromeingangsschaltung 11, eine
Zwischenspeichersteuerschaltung 12, einen Taktgenerator 13,
eine Startcodeerfassungsschaltung 14, einen Decoder 15,
eine Bewegungskompensationsschaltung 16 und eine Anzeigesignalausgangsschaltung 17 enthält.
-
Die
Stromeingangsschaltung 11 in der IC 1 empfängt einen
hocheffizienten codierten Strom (MP@ML/MPEG-2-Videobitstrom) und
führt ihn
der Zwischenpuffersteuerschaltung 12 zu. Als Reaktion auf
einen vom Taktgenerator 13 zugeführten Grundtakt schreibt die
Datenstrompuffersteuerschaltung 12 den empfangenen codierten
Strom in den Datenstrompuffer 21 im Zwischenspeicher 2.
Der Datenstrompuffer 21 hat eine Speicherkapazität gleich
oder größer als
1.835.008, die als VBV-Zwischenspeichergröße zum Decodieren eines MP@ML-Datenstroms benötigt wird.
Der im Datenstrompuffer 21 gespeicherte codierte Datenstrom
wird unter der Steuerung der Zwischenspeichersteuerschaltung 12 in
einer First-in-first-out-Weise gelesen und der Startcodeerfassungsschaltung 14 zugeführt. Die
Startcodeerfassungsschaltung 42 erfasst einen oben unter
Bezug auf 14 beschriebenen Startcode und
gibt den erfassten Startcode und den Eingangsdatenstrom an den Decoder 15 aus.
-
Der
Decoder 15 decodiert den Eingangsdatenstrom gemäß der MPEG-Syntax.
Zuerst decodiert der Decoder 15 einen Kopfparameter in
einer Bildebene entsprechend dem Eingangsstartcode. Auf der Basis
des decodierten Kopfparameters teilt der Decoder 15 die
Slice-Ebene in Makroblöcke
ein und decodiert die Makroblöcke.
Ein Prädiktionsvektor
und Pixeldaten, die man als Ergebnis der Decodierung erhält, werden
an die Bewegungskompensationsschaltung 16 ausgegeben.
-
Bei
der Technik des Codierens von Daten in eine komprimierte Form gemäß dem MPEG-Standard
wird die Codiereffizienz durch Verwenden eines eine Bewegungskompensation
darstellenden Unterschiedes zwischen benachbarten Bildern auf der
Basis einer temporären
Redundanz zwischen den benachbarten Bildern verbessert. In diesem
MPEG-Videodecoder werden für
Pixel, die mittels Bewegungskompensation codiert sind, Bilddaten
eines Referenzbildes, das durch den Bewegungsvektor angegeben wird,
den zu decodierenden Pixeldaten hinzugefügt, wodurch eine Bewegungskompensation durchgeführt wird
und damit die Pixeldaten in ursprüngliche Bilddaten decodiert
werden.
-
Falls
ein Makroblockausgang vom Decoder 15 keine Bewegungskompensation
benötigt,
schreibt die Bewegungskompensationsschaltung 16 die Pixeldaten über die
Zwischenspeichersteuerschaltung 12 in den Videopuffer 22 des
Zwischenspeichers 2 bei der Vorbereitung zur Ausgabe der
Anzeigedaten und auch zur zukünftigen
Verwendung als Referenzdaten für
ein anderes Bild.
-
Wenn
ein Makroblockausgang vom Decoder 15 eine Bewegungskompensation
benötigt,
liest die Bewegungskompensationsschaltung 16 über die Zwischenspeichersteuerschaltung 12 entsprechend dem
vom Decoder 15 ausgegebenen Prädiktionsvektor Referenzpixeldaten
aus dem Videopuffer 22 im Zwischenspeicher 2.
Die erhaltenen Referenzpixeldaten werden den vom Decoder 15 zugeführten Pixeldaten
hinzugefügt,
wodurch eine Bewegungskompensation durchgeführt wird. Die Bewegungskompensationsschaltung 16 schreibt
die resultierenden Pixeldaten über
die Zwischenspeichersteuerschaltung 12 in den Videopuffer 22 im
Zwischenspeicher 2 zur Vorbereitung zur Ausgabe der Anzeigedaten
und auch zur zukünftigen
Verwendung als Referenzdaten für
ein anderes Bild.
-
Die
Anzeigesignalausgangsschaltung 17 erzeugt ein Synchronisierungstaktsignal,
das beim Ausgeben der decodierten Bilddaten benutzt wird. Entsprechend
dem Taktsignal liest die Anzeigesignalausgangsschaltung 17 die
Pixeldaten aus dem Videopuffer 22 über die Zwischenspeichersteuerschaltung 12 und
gibt sie als ein decodiertes Videosignal aus.
-
Wie
oben beschrieben, hat ein MPEG-2-Datenstrom eine hierarchische Struktur.
Die Datengrößen von
Daten von sequence_header_bis picture_coding_extension in einer
oben unter Bezug auf 3 beschriebenen Bildebene hängen nicht von
den oben unter Bezug auf 2 beschriebenen Klassen mit
verschiedenen Profilen und Niveaus ab. Die Datengrößen der
Daten in der Slice-Ebene und in den unteren Ebenen hängen jedoch
von der Anzahl der zu codierenden Pixel ab.
-
In
HL ist, wie man aus 2 verstehen kann, die Anzahl
Makroblöcke,
die für
ein Bild bearbeitet werden müssen,
etwa sechsmal größer als
sie in ML benötigt
werden. Im Fall von 4:2:2P ist, wie man aus 4 sehen
kann, die Anzahl Blöcke,
die in jedem Makroblock bearbeitet werden müssen, das 4/3-fache dessen,
was in MP benötigt
wird.
-
Deshalb
wird, wenn ein 4:2:2P@HL-codierter Datenstrom mittels des in 15 dargestellten, zum
Decodieren von MP@ML-Datenströmen
konstruierten, herkömmlichen
MPEG-Videodecoder decodiert wird, die Zwischenspeichergröße des Datenstrompuffers 21 wegen
der Vergrößerungen
der VBV-Puffergröße und der
Anzahl von Pixeln unzureichend. Außerdem resultiert die Erhöhung der
Bitrate in einem Anstieg der Zugriffsfrequenz auf den Datenstrompuffer 21,
und die Erhöhung
der Anzahl Pixel resultiert in einem Anstieg der Zugriffsfrequenz
der Bewegungskompensationsschaltung 16 auf den Videopuffer 22.
Als ein Ergebnis muss die Zwischenspeichersteuerschaltung 12 mit
einer höheren
Geschwindigkeit arbeiten. Ferner muss wegen der Erhöhung der
Bitrate und den Erhöhungen
der Anzahlen Makroblöcke
und Blöcke
der Decoder 15 mit einer höheren Geschwindigkeit arbeiten.
-
Im
Allgemeinen ist, wenn die Signalverarbeitung mit einer erhöhten Geschwindigkeit
durchgeführt
wird, das Ergebnis ein großer
Anstieg in der Schaltungsgröße, eine
Erhöhung
der Anzahl von Komponenten und eine Erhöhung des Energieverbrauchs.
Obwohl es die jüngsten
Fortschritte in der Halbleitertechnologie möglich gemacht haben, die Geschwindigkeit
von Signalverarbeitungsschaltungen und Speicher-(Puffer-)Schaltungen
deutlich zu erhöhen
und die Schaltungsgröße zu reduzieren,
ist es deshalb nach wie vor schwierig, einen Videodecoder mit einer
realistischen Schaltungsgröße zu realisieren,
der 4:2:2P@HL-Ströme
in Echtzeit mittels der herkömmlichen
Technik zum Decodieren von MP@HL-Datenströmen decodieren kann.
-
Wenn
es erwünscht
ist, einen MP@ML-codierten Datenstrom mit einer um einen Faktor
größer als
1 erhöhten
hohen Geschwindigkeit unter Verwendung des in 15 dargestellten,
zum Decodieren von MP@ML-Datenströmen konstruierten, herkömmlichen
MPEG-Videodecoder wiederzugeben, besteht eine mögliche Technik darin, Bilder
von einem gegebenen MP@ML-codierten Datenstrom teilweise zu extrahieren
und die extrahierten Bilder dem MPEG-Videodecoder einzugeben.
-
Beim
MPEG-Codieren, wie oben unter Bezug auf 1 beschrieben,
wird jedoch eine prädiktive
Codierung mittels benachbarter Bilder als Referenzbilder durchgeführt. Deshalb
wird es unmöglich, falls
Bilder in einer beliebigen Weise teilweise extrahiert werden, einige
Bilder zu decodieren. Zum Beispiel wird es unmöglich, wie in 16 dargestellt, falls
das Bild P10 nicht in den extrahierten Bildern
enthalten ist, die Bilder B8, B9,
B11und B12 zu decodieren, welche
das Bild P10 als ein Referenzbild benötigen.
-
17 zeigt
eine Technik, um das obige Problem zu vermeiden. Bei dieser Technik
wird eine Extraktion derart durchgeführt, dass I-Bilder und P-Bilder,
die von anderen Bildern als Referenzbilder benutzt werden, in einem
Satz von extrahierten Bildern enthalten sind und dass nur B-Bilder,
die nicht von anderen Bildern als Referenzbilder benutzt werden, verworfen
werden dürfen
und der resultierende MP@ML-codierte Datenstrom mit den extrahierten Bildern
dem MPEG-Videodecoder eingegeben wird. Bei dieser Technik ist es
jedoch notwendig, um nur B-Bilder zu verwerfen, eine Funktion zum
Erfassen von B-Bildern und ihr Verwerfen vorzusehen. Weil nur B-Bilder
verworfen werden, wird außerdem
die Wiedergabegeschwindigkeit des extrahierten codierten Datenstroms
zu einem speziellen Wert, der durch die Positionen der I-Bilder,
P-Bilder und B-Bilder bestimmt wird.
-
Ferner
wird, obwohl die Wiedergabegeschwindigkeit durch wiederholtes Anzeigen
der I- und P-Bilder so häufig
wie nötig
auf einen beliebigen Wert eingestellt werden kann, die Bewegung
eines angezeigten Bildes sprunghaft.
-
Ein
weiteres Problem des herkömmlichen MPEG-Videodecorders
besteht darin, dass mehrere codierte Datenströme, die gleichzeitig eingegeben werden
oder in einem Mehrkanal-Multiplexstrom (Transportstroml, auf dem
mehrere Kanäle
codierter Datenströme
(Elementarströme) über DVB
gemultiplext werden, enthalten sind, nicht gleichzeitig decodiert
werden können,
um alle der mehreren Kanäle der
decodierten Videosignale gleichzeitig auszugeben oder ein ausgewähltes der
decodierten Videosignale auszugeben.
-
Die
US 5,532,744 betrifft Techniken
zum Decodieren eines hierarchisch codierten digitalen Videobitstroms,
die ein Fernsehbild hoher Auflösung
in Echtzeit verarbeiten können
und die aus einer Anzahl einzelner, parallel geschalteter Decodermodule
bestehen, die jeweils weniger Echtzeit-Verarbeitungsleistung haben,
als notwendig ist, aber kombiniert wenigstens die notwendige Verarbeitungsleistung haben,
um den Bitstrom in Echtzeit zu verarbeiten.
-
Ein
Ausführungsbeispiel
der vorliegenden Erfindung will einen Videodecoder vorsehen, der
einen 4:2:2P@HL-codierten Datenstrom in Echtzeit wiedergeben kann
und auch einen MP@ML-codierten Datenstrom mit einer hohen Geschwindigkeit wiedergeben
kann, wobei eine Schaltung mit einer realistischen Größe verwendet
wird.
-
Ein
weiteres Ausführungsbeispiel
der vorliegenden Erfindung will einen Videodecoder vorsehen, der
mehrere Kanäle
codierter Datenströme
parallel decodieren kann.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Eine
Decodiervorrichtung gemäß der vorliegenden
Erfindung ist Anspruch 1 beansprucht.
-
Der
beschleunigte codierte Datenstrom kann ein MPEG-2-Videobitstrom
mit einer um einen vorbestimmten Faktor erhöhten Bitrate sein.
-
Die
Ausgangssteuereinrichtung kann ein Bild entsprechend dem MPEG-2-Videobitstrom
mit der um den vorbestimmten Faktor erhöhten Bitrate mit einer um einen
Faktor im Bereich von 0 bis zu einem vorbestimmten Wert erhöhten Wiedergabegeschwindigkeit
ausgeben.
-
Die
Decodiereinrichtung kann ein den Abschluss des Decodierens angebendes
Signal an die Decodiersteuereinrichtung ausgeben, und die Decodiersteuereinrichtung
kann die Decodiereinrichtung, die das dem Abschluss des Decodierens
angebende Signal ausgegeben hat, so steuern, dass die Decodiereinrichtung
einen weiteren codierten Datenstrom decodiert.
-
Die
Decodiervorrichtung kann ferner eine erste Zwischenspeichereinrichtung
zum Zwischenspeichern des codierten Datenstroms; eine Leseeinrichtung
zum Lesen eines den Start einer vorbestimmten Einheit von in dem
codierten Datenstrom enthaltenen Informationen angebenden Startcodes aus
dem codierten Datenstrom und ferner Lesen von eine Position in der
Zwischenspeichereinrichtung, an welcher der Startcode gespeichert
ist, angebenden Positionsinformationen; eine zweite Zwischenspeichereinrichtung
zum Zwischenspeichern des durch die Leseeinrichtung gelesenen Startcodes
und der Positionsinformationen; und eine Zwischenspeichersteuereinrichtung
zum Steuern des Zwischenspeicherns des codierten Datenstroms durch
die erste Zwischenspeichereinrichtung und des Zwischenspeicherns
des Startcodes und der Positionsinformationen durch die zweite Zwischenspeichereinrichtung aufweisen.
-
Die
erste Decodiereinrichtung kann ferner eine Auswahleinrichtung zum
Auswählen
von speziellen von mehreren Bilddaten, die von den mehreren Decodiereinrichtungen
decodiert und ausgegeben werden; und eine Kompensationseinrichtung,
die die durch die Auswahleinrichtung ausgewählten Bilddaten empfängt und
gegebenenfalls an den empfangenen Bilddaten eine Bewegungskompensation
durchführt,
aufweisen.
-
Die
mehrere Decodiereinrichtungen können ein
den Abschluss des Decodierens angebendes Endsignal an die Auswahleinrichtung
ausgeben, und die Auswahleinrichtung kann eine Speichereinrichtung
zum Speichern eines Werts entsprechend einem Verarbeitungszustand
jeder der mehreren Decodiereinrichtungen enthalten. Die Auswahleinrichtung
kann so arbeiten, dass, wenn in der Speichereinrichtung gespeicherte
Werte alle gleich einem ersten Wert werden, ein darin gespeicherter
Wert entsprechend der das den Abschluss des Decodierens angebende
Endsignal ausgebenden Decodiereinrichtung von dem ersten Wert zu
einem zweiten Wert geändert
wird, die einen der durch die erste Decodiereinrichtung entsprechend
dem in der Speichereinrichtung gespeicherten zweiten Wert decodierten Bilddaten
ausgewählt
werden und die in der Speichereinrichtung gespeicherten Werte entsprechend
der Decodiereinrichtung, die die ausgewählten Bilddaten decodiert hat,
zum ersten Wert verändert
werden.
-
Die
Decodiervorrichtung kann ferner eine Speichereinrichtung zum Speichern
der durch die Auswahleinrichtung ausgewählten Bilddaten oder der einer
durch die Bewegungskompensationseinrichtung durchgeführten Bewegungskompensation unterzogenen
Bilddaten; und eine Speichersteuereinrichtung zum Steuern des Speicherns
der durch die Auswahleinrichtung ausgewählten Bilddaten oder der der
durch die Bewegungskompensationseinrichtung durchgeführten Bewegungskompensation
unterzogenen Bilddaten in der Speichereinrichtung aufweisen.
-
Die
Speichereinrichtung kann eine Luminanzkomponente und eine Farbdifferenzkomponente der
Bilddaten separat voneinander speichern.
-
Ein
Decodierverfahren gemäß der vorliegenden
Erfindung ist in Anspruch 21 beansprucht.
-
Ein
Speichermedium gemäß der vorliegenden
Erfindung ist in Anspruch 25 beansprucht.
-
Der
codierte Datenstrom kann ein MPEG-2-Videobitstrom sein.
-
Die
Decodiereinrichtung kann ein den Abschluss des Decodierens angebendes
Signal an die Decodiersteuereinrichtung ausgeben, und die Decodiersteuereinrichtung
kann die Decodiereinrichtung, die das den Abschluss des Decodierens
angebende Signal ausgegeben hat, derart steuern, dass die Decodiereinrichtung
einen weiteren codierten Datenstrom decodiert.
-
Die
Decodiervorrichtung kann ferner eine erste Zwischenspeichereinrichtung
zum Zwischenspeichern des codierten Datenstroms; eine Leseeinrichtung
zum Lesen eines den Start einer vorbestimmten Einheit von in dem
codierten Datenstrom enthaltenen Informationen angebenden Startcode aus
dem codierten Datenstrom und ferner Lesen von eine Position in der
Zwischenspeichereinrichtung, an welcher der Startcode gespeichert
ist, angebenden Positionsinformationen; eine zweite Zwischenspeichereinrichtung
zum Zwischenspeichern des Startcodes und der Positionsinformationen,
die durch die Leseeinrichtung gelesen wurden; und eine Zwischenspeichersteuereinrichtung
zum Steuern des Zwischenspeicherns des codierten Datenstroms durch
die erste Zwischenspeichereinrichtung und des Zwischenspeicherns
des Startcodes und der Positionsinformationen durch die zweite Zwischenspeichereinrichtung
aufweisen.
-
Die
Decodiereinrichtung kann ferner eine Auswahleinrichtung zum Auswählen von
speziellen von mehreren Bilddaten, die durch die mehreren Decodiereinrichtungen
decodiert und ausgegeben wurden; und eine Kompensationseinrichtung,
die die durch die Auswahleinrichtung ausgewählten Bilddaten empfängt und
erforderlichenfalls an den empfangenen Bilddaten eine Bewegungskompensation durchführt, aufweisen.
-
Die
mehrere Decodiereinrichtungen können ein
den Abschluss des Decodierens angebendes Endsignal an die Auswahleinrichtung
ausgeben, und die Auswahleinrichtung kann eine Speichereinrichtung
zum Speichern eines Werts entsprechend einem Verarbeitungszustand
jeder der mehreren Decodiereinrichtungen enthalten, sodass, wenn
in der Speichereinrichtung gespeicherte Werte alle gleich einem
ersten Wert werden, ein darin gespeicherter Wert entsprechend der
das den Abschluss des Decodierens angebende Endsignal ausgebenden
Decodiereinrichtung vom ersten Wert zu einem zweiten Wert verändert wird,
die einen der durch die erste Decodiereinrichtung entsprechend dem
in der Speichereinrichtung gespeicherten zweiten Wert decodierten Bilddaten
ausgewählt
werden, und die in der Speichereinrichtung gespeicherten Werte entsprechend der
Decodiereinrichtung, die die ausgewählten Bilddaten decodiert hat,
zum ersten Wert verändert
werden.
-
Die
Decodiervorrichtung kann ferner eine Speichereinrichtung zum Speichern
der durch die Auswahleinrichtung ausgewählten Bilddaten oder der einer
durch die Bewegungskompensationseinrichtung durchgeführten Bewegungskompensation unterzogenen
Bilddaten; und eine Speichersteuereinrichtung zum Steuern des Speicherns
der durch die Auswahleinrichtung ausgewählten Bilddaten oder der einer
durch die Bewegungskompensationseinrichtung durchgeführten Bewegungskompensation unterzogenen
Bilddaten in der Speichereinrichtung aufweisen.
-
Die
Speichereinrichtung kann eine Luminanzkomponente und eine Farbdifferenzkomponente der
Bilddaten separat voneinander speichern.
-
Die
Decodiervorrichtung kann ferner eine Annahmeeinrichtung zum Annehmen
eines gemultiplexten Datenstroms, auf dem die mehreren codierten Datenströme gemultiplext
sind; und eine Zufuhreinrichtung zum Trennen der gemultiplexten
Datenströme
in die mehreren codierten Datenströme und Zuführen der mehreren codierten
Datenströme
zur Eingangseinrichtung aufweisen.
-
In
der Decodiervorrichtung, dem Decodierverfahren und dem auf dem Speichermedium
gespeicherten Programm wird ein beschleunigter codierter Datenstrom
in einer parallelen Weise eingegeben und decodiert. Ein Bild entsprechend
dem decodierten beschleunigten codierten Datenstrom wird mit einer
beliebigen Wiedergabegeschwindigkeit ausgegeben.
-
Bei
der Decodiervorrichtung, dem Decodierverfahren und dem auf dem Speichermedium
gespeicherten Programm kann ein beschleunigter codierter Datenstrom
in einer parallelen Weise unter Verwendung mehrerer Slice-Decoder
eingegeben und decodiert werden. Ein Bild entsprechend dem beschleunigten
codierten Datenstrom, der durch die mehreren Slice-Decoder decodiert
wurde, wird mit einer beliebigen Wiedergabegeschwindigkeit ausgegeben.
-
Bei
der Decodiervorrichtung, dem Decodierverfahren und dem auf dem Speichermedium
gespeicherten Programm können
mehrere codierte Datenströme
in einer parallelen Weise eingegeben und decodiert werden und mehrere
Bilder entsprechend den mehreren codierten Datenströmen, die
in der oben beschriebenen Weise decodiert wurden, werden ausgegeben.
-
Bei
der Decodiervorrichtung, dem Decodierverfahren und dem auf dem Speichermedium
gespeicherten Programm können
mehrere codierte Datenströme
in einer parallelen Weise durch mehrere Slice-Decoder eingegeben
und decodiert werden, mehrere Bilder entsprechend den mehreren codierten
Datenströmen,
die durch die mehreren Slice-Decoder decodiert wurden, werden ausgegeben.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
eine schematische Darstellung von in der MPEG-Technik verwendeten
Bildtypen;
-
2 ist
eine Tabelle von Obergrenzen von Parametern für jeweilige Profile und Niveaus,
die im MPEG-2-Standard definiert sind;
-
3 ist
eine schematische Darstellung einer hierarchischen Struktur eines
MPEG-2-Bitstroms;
-
4 ist eine schematische Darstellung einer
Makroblockebene;
-
5 ist
eine Tabelle einer Datenstruktur von sequence_header;
-
6 ist
eine Tabelle einer Datenstruktur von sequence_extension;
-
7 ist
eine Tabelle einer Datenstruktur von GOP_header;
-
8 ist
eine Tabelle einer Datenstruktur von picture_header;
-
9 ist
eine Tabelle einer Datenstruktur von picture_coding_extension;
-
10 ist
eine Tabelle einer Datenstruktur von picture_data;
-
11 ist
eine Tabelle einer Datenstruktur eines Slices;
-
12 ist
eine Tabelle einer Datenstruktur eines Makroblocks;
-
13 ist
eine Tabelle einer Datenstruktur von macroblock_modes;
-
14 ist
eine Tabelle eines Startcodes;
-
15 ist
ein Blockschaltbild eines Beispiels eines Aufbaus eines herkömmlichen
MPEG-Videodecoders zum Decodieren eines MP@ML-codierten Datenstroms;
-
16 ist
ein Diagramm eines Problems, das auftritt, wenn ein P-Bild aus einem
codierten Datenstrom verworfen wird;
-
17 ist
eine Darstellung eines Problems, das auftritt, wenn nur B-Bilder
aus einem codierten Datenstrom verworfen werden;
-
18 ist
ein Blockschaltbild eines Beispiels eines Aufbaus eines MPEG-Videodecoders gemäß der vorliegenden
Erfindung;
-
19 ist
ein Flussdiagramm eines durch eine Slice-Decoder-Steuerschaltung
durchgeführten Prozesses;
-
20 ist
ein Flussdiagramm eines speziellen Beispiels eines durch die Slice-Decoder-Steuerschaltung 46 durchgeführten Prozesses;
-
21 ist
ein Flussdiagramm eines durch eine Bewegungskompensationsschaltung
durchgeführten
Entscheidungsprozesses zwischen Slice-Decodern;
-
22 ist
eine Darstellung eines speziellen Beispiels des durch die Bewegungskompensationsschaltung
durchgeführten
Entscheidungsprozesses zwischen Slice-Decodern;
-
23 ist
ein Blockschaltbild eines Beispiels eines Aufbaus eines Systems
zum Wiedergeben eines MP@ML-codierten Datenstroms mit einer hohen Geschwindigkeit
unter Verwendung des MPEG-Videodecoders;
-
24 ist
eine Darstellung einer durch den MPEG-Videodecoder durchgeführten Verarbeitung, um
einen MP@ML-codierten Datenstrom mit einer hohen Geschwindigkeit
wiederzugeben;
-
25 ist
ein Blockschaltbild eines weiteren Beispiels eines Aufbaus eines
MPEG-Videodecoders gemäß der vorliegenden
Erfindung;
-
26 ist
ein Flussdiagramm eines durch den MPEG-Videodecoder unter der Steuerung
einer darin vorgesehenen Steuerung durchgeführten Prozesses, um bis zu
L Kanäle
parallel zu decodieren;
-
27 ist
ein Blockschaltbild eines Beispiels einer Konstruktion eines MPEG-Videoserver/editorsystems
unter Verwendung des MPEG-Videodecoders;
-
28 ist
ein Blockschaltbild eines noch weiteren Beispiels eines Aufbaus
eines MPEG-Videodecoders gemäß der vorliegenden
Erfindung; und
-
29 ist
eine Darstellung eines Beispiels einer Anwendung des MPEG-Videodecoders.
-
BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSBEISPIELE
-
Ein
erstes Beispiel eines Aufbaus eines MPEG-Videodecoders gemäß der vorliegenden
Erfindung wird nun unter Bezug auf 18 beschrieben.
-
Der
MPEG-Videodecoder 40 enthält eine IC 31 mit
einer Datenstromeingangsschaltung 41, einer Startcodeerfassungsschaltung 42,
einer Datenstrompuffer-Steuerschaltung 43,
einem Taktgenerator 44, einem Bilddecoder 45,
einer Slice-Decoder-Steuerschaltung 46,
Slice-Decodern 47 bis 49, einer Bewegungskompensationsschaltung 50,
einer Luminanzpuffer-Steuerschaltung 51, einer Farbdifferenzpuffer-Steuerschaltung 52 und
einer Anzeigesignalausgangsschaltung 53. Der MPEG-Videodecoder 40 enthält auch
einen aus einem DRAM oder dergleichen gebildeten Zwischenspeicher 32 mit
einem Datenstrompuffer 61 und einem Startcodepuffer 62,
einen aus einem DRAM oder dergleichen gebildeten Luminanzpuffer 71,
einen aus einem DRAM oder dergleichen gebildeten Farbdifferenzpuffer 72,
eine Steuerung 34 mit einer CPU (Zentraleinheit) oder dergleichen,
und ein Laufwerk 35.
-
Die
Datenstromeingangsschaltung 41 empfängt einen hocheffizient codierten
Datenstrom (MPEG-2-Videobitstrom) und führt ihn der Startcodeerfassungsschaltung 42 zu.
Die Startcodeerfassungsschaltung 42 führt den empfangenen codierten Datenstrom
der Datenstrompuffer-Steuerschaltung 43 zu. Die Startcodeerfassungsschaltung 52 erfasst auch
einen früher
unter Bezug auf 14 beschriebenen Startcode und
erzeugt auf der Basis des erfassten Startcodes Startcodeinformationen
einschließlich
Daten, die die Art des Startcodes angeben, und eines Schreibzeigers,
der eine Position angibt, an welcher der Startcode geschrieben werden soll.
Die erzeugten Startcodeinformationen werden der Datenstrompuffer-Steuerschaltung 43 zugeführt.
-
Ein
Taktgenerator 44 erzeugt einen Basistakt mit einer Wiederholungsrate
doppelt so groß wie
ein oben unter Bezug auf 16 beschriebener
Taktgenerator 13 und führt
ihn einer Datenstrompuffersteuerung 43 zu. Als Reaktion
auf einen vom Taktgenerator 44 zugeführten Basistakt schreibt die
Datenstrompuffersteuerschaltung 43 den empfangenen codierten
Datenstrom in den Datenstrompuffer 61 im Zwischenspeicher 32 und
schreibt die empfangenen Startcodeinformationen in den Startcodepuffer 62 im Zwischenspeicher 32.
Der Datenstrompuffer 61 hat eine Speicherkapazität gleich
oder größer als 47.185.920,
was als VBV-Zwischenspeichergrößer zum
Decodieren eines 4:2:2P@HL-Datenstroms benötigt wird.
-
Der
Bilddecoder 45 liest die Startcodeinformationen über die
Datenstrompuffer-Steuerschaltung 43 aus
dem Startcodepuffer 62. Zum Beispiel wird das Decodieren
ab dem früher
unter Bezug auf 3 beschriebenen sequence_header
gestartet. Damit liest der Bilddecoder 45 aus dem Startcodepuffer 62 einen
Schreibzeiger entsprechend sequence_header code, der als der früher unter
Bezug auf 5 beschriebene Startcode dient,
liest sequence_header aus dem Datenstrompuffer 61 entsprechend
dem Schreibzeiger und decodiert ihn. Danach liest der Bilddecoder 45 sequence_extionsion, GOP_header
und picture_coding_extension aus dem Datenstrompuffer 61 und
decodiert sie in einer ähnlichen
Weise wie sequence_header.
-
Wenn
der Bilddecoder 45 den ersten slice_start_code aus dem
Startcodepuffer 62 gelesen hat, sind alle zum Decodieren
eines Bildes notwendigen Parameter empfangen. Der Bilddecoder 45 gibt
die zur Bildebene gehörenden
decodierten Parameter an die Slice-Decoder-Steuerschaltung 46 aus.
-
Beim
Empfang der zur Bildebene gehörenden
Parameter erfasst die Slice-Decoder-Steuerschaltung 46 die Klasse
(beispielsweise 4:2:2@ML oder MP@ML) des codierten Datenstroms.
Ferner liest die Slice-Decoder-Steuerschaltung 46 entsprechend
den empfangenen Parametern der Bildebene entsprechende Startcodeinformationen
aus dem Startcodepuffer 62 über die Datenstrompuffer-Steuerschaltung 43.
Die Slice-Decoder-Steuerschaltung 46 enthält ein Register
zum Anzeigen, welcher der Slices in dem codierten Datenstrom durch
einen der Slice-Decoder 47 bis 49 decodiert
werden soll. Entsprechend den im Register gespeicherten Daten führt die
Slice-Decoder-Steuerschaltung 46 den in den Startcodeinformationen
enthaltenen Schreibzeiger des Slices dem entsprechenden der Slice-Decoder 47 bis 49 zu.
Der durch die Slice-Decoder-Steuerschaltung 46 durchgeführte Prozess
zum Auswählen
eines zum Decodieren zu benutzenden Slice-Decoders aus den Slice-Decodern 47 bis 49 wird
später unter
Bezug auf 19 und 20 beschrieben.
-
Der
Slice-Decoder 47 enthält
eine Makroblockerfassungsschaltung 81, einen Vektordecoder 82, eine
Dequantisierungsschaltung 83 und eine Invers-DCT-Schaltung 84.
Entsprechend einem von der Slice-Decoder-Steuerschaltung 46 empfangenen Schreibzeiger
liest der Slice-Decoder 47 einen entsprechenden Slice aus
dem Daten-strompuffer 61 über die Datenstrompuffer-Steuerschaltung 43.
Ferner decodiert der Slice-Decoder 47 entsprechend den
von der Slice-Decoder-Steuerschaltung 46 empfangenen,
zur Bildebene gehörenden
Parametern den aus dem Datenstrompuffer 61 gelesenen Slice und
gibt den decodierten Slice an die Bewegungskompensationsschaltung 50 aus.
-
Die
Makroblockerfassungsschaltung 81 trennt Makroblöcke in der
Slice-Ebene und decodiert Parameter der jeweiligen Makroblöcke. Der
Prädiktionsmodus
jedes in variabler Länge
codierten Makroblocks und der Prädiktionsvektor
werden dem Vektordecoder 82 zugeführt, und die in variabler Länge codierten
Koeffizientendaten werden der Dequantisierungsschaltung 83 zugeführt. Der
Vektordecoder 82 decodiert den in variabler Länge codierten
Prädiktionsmodus
und Prädiktionsvektor,
um dadurch den Prädiktionsvektor
wiederzugeben. Die Dequantisierungsschaltung 83 decodiert
die in variabler Länge codierten
Koeffizientendaten und führt
die resultierenden decodierten Koeffizientendaten der Invers-DCT-Schaltung 84 zu.
Die Invers-DCT-Schaltung 84 führt eine inverse DCT an den
decodierten Koeffizientendaten durch, wodurch die ursprünglichen
Pixeldaten wiedergegeben werden.
-
Der
Slice-Decoder 47 fordert die Bewegungskompensationsschaltung 50 auf,
an dem decodierten Makroblock eine Bewegungskompensation durchzuführen (durch
Verändern
des Niveaus von dem in 18 dargestellten REQ auf „1"). Falls ein die
Annahme der Anforderung zur Bewegungskompensation anzeigendes Signal
(ACK in 18) von der Bewegungskompensationsschaltung 50 empfangen
wird, führt
der Slice-Decoder 47 den decodierten Prädiktionsvektor und die decodierten
Pixeldaten der Bewegungskompensationsschaltung 50 zu. Nach Zuführen des
decodierten Prädiktionsvektors
und der decodierten Pixeldaten zur Bewegungskompensationsschaltung 50 als
Reaktion auf das ACK-Signal ändert
der Slice-Decoder 47 das Niveau des REQ-Signals von „1" auf "0". Danach decodiert der Slice-Decoder 47 einen
folgenden Makroblock und ändert wieder
das Niveau des REQ-Signals von „0" auf „1", wenn das Decodieren abgeschlossen
ist.
-
Der
Slice-Decoder 48 mit Schaltungskomponenten wie beispielsweise
der Makroblockerfassungsschaltung 85 bis zur Invers-DCT-Schaltung 88 und
auch der Slice-Decoder 49 mit
Schaltungskomponenten wie beispielsweise der Makroblockerfassungsschaltung 89 bis
zur Invers-DCT-Schaltung 92 arbeiten in einer ähnlichen
Weise wie der Slice-Decoder 47 mit den Schaltungskomponenten
wie beispielsweise der Makroblockerfassungsschaltung 81 und
der Invers-DCT-Schaltung 84,
und daher werden sie hier nicht in mehr Einzelheiten beschrieben.
-
Die
Bewegungskompensationsschaltung 50 enthält drei Register Reg_REQ_A,
Reg_REQ_B und Reg_REQ_C, die angeben, ob eine Bewegungskompensation
für die
von den jeweiligen Slice-Decodern 47 bis 49 eingegebenen
Daten abgeschlossen ist. Die Bewegungskompensationsschaltung 50 prüft die Werte
dieser Register und wählt
einen der Slice-Decoder 47 bis 49 in Abhängigkeit
von den Werten der Register aus. Wenn die Bewegungskompensationsschaltung 50 eine
Bewegungskompensationsanfrage annimmt (d.h. wenn ein REQ-Signal
empfangen wird, gibt die Bewegungskompenationsschaltung 50 ein ACK-Signal
aus, um einen Prädiktionsvektor
und Pixeldaten zu empfangen), führt
die Bewegungskompensationsschaltung 50 eine Bewegungskompensation
unter Verwendung des ausgewählten
Slice-Decoders durch. Im obigen Betrieb nimmt die Bewegungskompensationsschaltung 50 eine
nächste
Anfrage zur Bewegungskompensation an, nachdem alle Slice-Decoder 47 bis 49 einmal
als Reaktion auf ein REQ-Signal des Niveaus „1" die Bewegungskompensation abgeschlossen
haben. Wenn zum Beispiel der Slice-Decoder 47 eine nächste Bewegungskompensationsanfrage
nach einer vorherigen Bewegungskompensationsanfrage ausgibt, akzeptiert
die Bewegungskompensationsschaltung 50 die nächste Bewegungskompensationsanfrage
nicht, bis die durch den Slice-Decoder 48 und den Slice-Decoder 49 durchgeführte Bewegungskompensation
abgeschlossen ist. Die Art und Weise, in welcher die Bewegungskompensationsschaltung 50 einen
Ausgang eines der Slice-Decoder 47 bis 49 auswählt, um
ihn der Bewegungskompensation zu unterziehen, wird später unter
Bezug auf 21 und 22 beschrieben.
-
Falls
ein von einem der Slice-Decoder 47 bis 49 empfangener
Makroblock keine Bewegungskompensation benötigt, schreibt die Bewegungskompensationsschaltung 50,
falls die Pixeldaten des Makroblocks Luminanzdaten sind, die Luminanzdaten über die
Luminanzpuffersteuerschaltung 51 in den Luminanzpuffer 71,
während
die Bewegungskompensationsschaltung 50, wenn die Pixeldaten
Farbdifferenzdaten sind, die Farbdifferenzdaten über die Farbdifferenzpuffersteuerschaltung 52 in
den Farbdifferenzpuffer 72 schreibt, als Vorbereitung zum
Ausgeben von Anzeigedaten und auch zur zukünftigen Verwendung als Referenzdaten
für andere
Bilddaten.
-
Falls
dagegen ein Makroblockausgang von einem der Slice-Decoder 47 bis 49 eine
Bewegungskompensation benötigt,
liest die Bewegungskompensationsschaltung 50 entsprechend
einem von einem entsprechenden Slice-Decoder 47 bis 49 empfangenen
Prädiktionsvektor
Referenzpixeldaten, wobei die Referenzpixeldaten über die
Luminanzpuffersteuerschaltung 51 aus dem Luminanzpuffer 71 gelesen werden,
wenn die Pixeldaten Luminanzdaten sind, während die Referenzpixeldaten über die
Farbdifferenzpuffersteuerschaltung 52 aus dem Farbdifferenzpuffer 72 gelesen
werden, wenn die Pixeldaten Farbdifferenzdaten sind. Die Bewegungskompensationsschaltung 50 fügt die erhaltenen
Referenzpixeldaten zu den von einem der Slice-Decoder 47 bis 49 zugeführten Pixeldaten
hinzu, wodurch die Bewegungskompensation durchgeführt wird.
-
Nach
Abschluss der Bewegungskompensation schreibt die Bewegungskompensationsschaltung 50 die
resultierenden Pixeldaten über
die Luminanzpuffersteuerschaltung 51 in den Luminanzpuffer 71, wenn
die Pixeldaten Luminanzdaten sind, oder über die Farbdifferenzpuffersteuerschaltung 52 in
den Farbdifferenzpuffer 72, wenn die Pixeldaten Farbdifferenzdaten
sind, in Vorbereitung zum Ausgeben der Anzeigedaten und auch zur
zukünftigen
Verwendung als Referenzdaten für
andere Pixeldaten.
-
Die
Anzeigesignalausgangsschaltung 53 erzeugt ein Synchronisierungstaktsignal,
das beim Ausgeben der decodierten Bilddaten verwendet wird. Entsprechend
dem Taktsignal liest die Anzeigesignalausgangsschaltung 53 die
Luminanzdaten über die
Luminanzpuffersteuerschaltung 51 aus dem Luminanzpuffer 71 und
liest auch die Farbdifferenzdaten über die Farbdifferenzpuffersteuerschaltung 52 aus
dem Farbdifferenzpuffer 72, und die Anzeigesignalausgangsschaltung 53 gibt
sie als ein decodiertes Videosignal aus.
-
Das
mit der Steuerung 34 verbundene Laufwerk 35 wird
benutzt, um Daten von einer oder auf eine Magnetplatte 101,
eine optische Platte 102, eine magnetooptische Platte 103 oder
einen Halbleiterspeicher 104 zu lesen und zu schreiben,
die/der erforderlichenfalls im Laufwerk geladen ist. Die Steuerung 34 ist
zum Steuern der Vorgänge
der IC 31 und des oben beschriebenen Laufwerks 35 verantwortlich.
Insbesondere steuert die Steuerung 34 den Betrieb der IC 31 entsprechend
einem auf zum Beispiel der magnetischen Platte 101, der
optischen Platte 102, der magnetooptischen Platte 103 oder
dem Halbleiterspeicher 104, die im Laufwerk 35 geladen sind,
gespeicherten Programm.
-
Die
Funktionsweise der Slice-Decoder-Steuerschaltung 46 wird
nun unter Bezug auf ein in 19 dargestelltes
Flussdiagramm beschrieben.
-
In
Schritt S1 setzt die Slice-Decoder-Steuerschaltung 46 nach
dem Einstellen der Anzahl Makroblöcke, wie sie in einer vertikalen
Richtung eines Bildes gezählt
werden, den Wert N des Registers, der angibt, welcher Slice im Bild
zu bearbeiten ist, auf einen Anfangswert von 1. In Schritt S2 bestimmt
die Slice-Decoder-Steuerschaltung 46,
ob der Slice-Decoder 47 in Betrieb ist.
-
Falls
in Schritt S2 bestimmt wird, dass der Slice-Decoder 47 nicht
in Betrieb ist, geht der Prozess weiter zu Schritt S3. In Schritt
S3 führt
die Slice-Decoder-Steuerschaltung 46 dem
Slice-Decoder 47 zur Bildebene gehörende Parameter und einen in
den Startcodeinformationen enthaltenen Schreibzeiger des Slices
N zu und lässt
den Slice-Decoder 47 den Slice N decodieren. Danach geht
der Prozess zu Schritt S8.
-
Falls
in Schritt S2 bestimmt wird, dass der Slice-Decoder 47 in
Betrieb ist, geht der Prozess zu Schritt S4. In Schritt S4 bestimmt
die Slice-Decoder-Steuerschaltung 46,
ob der Slice-Decoder 48 in Betrieb ist. Falls in Schritt
S4 bestimmt wird, dass der Slice-Decoder 48 nicht in Betrieb
ist, geht der Prozess zu Schritt S5. In Schritt S5 führt die
Slice-Decoder-Steuerschaltung 46 dem Slice-Decoder 48 die zur
Bildebene gehörenden
Parameter und den in den Startcodeinformationen enthaltenen Schreibzeiger des
Slices N zu und lässt
den Slice-Decoder 48 den Slice N decodieren. Danach geht
der Prozess zu Schritt S8.
-
Falls
in Schritt S4 bestimmt wird, dass der Slice-Decoder 48 in
Betrieb ist, geht der Prozess zu Schritt S6. In Schritt S6 bestimmt
der Slice-Decoder-Steuerschaltung 46,
ob der Slice-Decoder 49 in Betrieb ist. Falls in Schritt
S6 bestimmt wird, dass der Slice-Decoder 49 in Betrieb
ist, kehrt der Prozess zu Schritt S2 zurück, um den oben beschriebenen
Vorgang zu wiederholen.
-
Falls
in Schritt S6 bestimmt wird, dass der Slice-Decoder 49 nicht
in Betrieb ist, geht der Prozess zu Schritt S7. In Schritt S7 führt die
Slice-Decoder-Steuerschaltung 46 dem
Slice-Decoder 49 die zur Bildebene gehörenden Parameter und den in
den Startcodeinformationen enthaltenen Schreibzeiger des Slices
N zu und lässt
den Slice-Decoder 49 den Slice N decodieren. Danach geht
der Prozess zu Schritt S8.
-
In
Schritt S8 erhöht
die Slice-Decoder-Steuerschaltung 46 den Wert N des Registers,
das den zu bearbeitenden Slice im codierten Datenstrom angibt, um
1. In Schritt S9 bestimmt die Slice-Decoder-Steuerschaltung 46,
ob das Decodieren für
alle Slices abgeschlossen ist. Falls in Schritt S9 bestimmt wird, dass
das Decodieren nicht für
alle Slices abgeschlossen ist, kehrt der Prozess zu Schritt S2 zurück, um den
obigen Vorgang zu wiederholen. Falls in Schritt S9 bestimmt wird,
dass das Decodieren für
alle Slices abgeschlossen worden ist, wird der Prozess der Slice-Decoder-Steuerschaltung 46 beendet.
-
Bezug
nehmend auf 20 wird nun ein spezielles Beispiel
des oben unter Bezug auf 19 beschriebenen,
durch die Slice-Decoder-Steuerschaltung 46 durchgeführten Prozesses
beschrieben. Wie oben beschrieben, decodiert der Bilddecoder 45 Daten
in der Bildebene und die erhaltenen Parameter werden der Slice-Decoder-Steuerschaltung 46 zugeführt. In
dem oben unter Bezug auf 19 beschriebenen
Schritt S1 initialisiert die Slice-Decoder-Steuerschaltung 46 nach
dem Einstellen der Anzahl Makroblöcke, wie sie in der vertikalen
Richtung eines Bildes gezählt
werden (d.h. den maximal zulässigen
Wert für
N des Registers) den Wert N des Registers auf 1. In diesem speziellen
Beispiel wird im nächsten
Schritt S2 bestimmt, dass der Slice-Decoder 47 nicht in
Betrieb ist, und daher geht der Prozess zu Schritt S3. In Schritt
S3 führt
die Slice-Decoder-Steuerschaltung 46 die Parameter der
Bildebene und den zum Slice 1 gehörenden Schreibzeiger, der in
den Startcodeinformationen enthalten ist, dem Slice-Decoder 47 zu.
Als Reaktion decodiert der Slice-Decoder 47 den Slice N
(N = 1 in diesem speziellen Fall). In Schritt S8 erhöht die Slice-Decoder-Steuerschaltung 46 den
Wert N des Registers um 1. In Schritt S9 wird bestimmt, dass das
Decodieren nicht für
alle Slices abgeschlossen ist, und somit kehrt der Prozess zu Schritt
S2 zurück.
-
In
Schritt S2 wird bestimmt, dass der Slice-Decoder 47 in
Betrieb ist. Somit geht der Prozess zu Schritt S4. In Schritt S4
wird bestimmt, dass der Slice-Decoder 48 nicht in Betrieb
ist. Daher geht der Prozess zu Schritt S5, die Slice-Decoder-Steuerschaltung 46 führt die
Parameter der Bildebene und den zum Slice 2 gehörenden Schreibzeiger
dem Slice-Decoder 48 zu. Als Reaktion decodiert der Slice-Decoder 48 den
Slice N (N = 2 in diesem speziellen Fall). In Schritt S8 erhöht die Slice-Decoder-Steuerschaltung 46 den
Wert N des Registers um 1. In Schritt S9 wird bestimmt, dass das
Decodieren nicht für
alle Slices abgeschlossen ist, und daher kehrt der Prozess zu Schritt
S2 zurück.
-
In
Schritt S2 wird bestimmt, dass der Slice-Decoder 47 in
Betrieb ist. Daher geht der Prozess zu Schritt S4. In Schritt S4
wird bestimmt, dass der Slice-Decoder 48 ebenfalls in Betrieb
ist. Daher geht der Prozess zu Schritt S6. In Schritt S6 wird bestimmt,
dass der Slice-Decoder 49 nicht in Betrieb ist. Daher geht
der Prozess zu Schritt S7, die Slice-Decoder-Steuerschaltung 46 führt die
Parameter der Bildebene und den zum Slice 3 gehörenden Schreibzeiger
dem Slice-Decoder 49 zu. Als Reaktion decodiert der Slice-Decoder 49 den
Slice N (N = 3 in diesem speziellen Fall). In Schritt S8 erhöht die Slice-Decoder-Steuerschaltung 46 den
Wert N des Registers um 1. In Schritt S9 wird bestimmt, dass das Decodieren
nicht für
alle Slices abgeschlossen ist, und daher kehrt der Prozess zurück zu Schritt
S2.
-
Wenn
das Decodieren des gegebenen Slices abgeschlossen ist, geben die
Slice-Decoder 47 bis 49 ein
Signal, das den Abschluss des Decodierens anzeigt, an die Slice-Decoder-Steuerschaltung 46 aus.
Mit anderen Worten wird bestimmt, dass alle Slice-Decoder 47 bis 49 in
Betrieb sind, bis irgendeiner der Slice-Decoder 47 bis 49 das
den Abschluss des Decodierens eines Slices anzeigende Signal ausgibt,
und somit werden die Schritte S2, S4 und S6 wiederholt durchgeführt. Falls
der Slice-Decoder 48 zu einer durch A in 20 bezeichneten
Zeit ein den Abschluss des Decodierens anzeigendes Signal an die
Slice-Decoder-Steuerschaltung 46 ausgibt,
dann wird in Schritt S4 bestimmt, dass der Slice-Decoder 48 nicht in Betrieb
ist, und daher führt
in Schritt S5 die Slice-Decoder-Steuerschaltung 46 den
zum Slice 4 gehörenden
Schreibzeiger dem Slice-Decoder 48 zu. Als Reaktion decodiert
der Slice-Decoder 48 den Slice N (N = 4 in diesem speziellen
Fall). In Schritt S8 erhöht
die Slice-Decoder-Steuerschaltung 46 den Wert N des Registers
um 1. In Schritt S9 wird bestimmt, dass das Decodieren nicht für alle Slices
abgeschlossen ist, und daher kehrt der Prozess zu Schritt S2 zurück.
-
Danach
wiederholt die Slice-Decoder-Steuerschaltung 46 die Schritte
S2, S4 und S6, bis ein den Abschluss des Decodierens anzeigendes
Signal von einem der Slice-Decoder 47 bis 49 empfangen wird.
Falls die Slice-Decoder-Steuerschaltung 46 zu einer durch
B in 20 bezeichneten Zeit ein den Abschluss des Decodierens
anzeigendes Signal vom Slice-Decoder 49 empfängt, dann
bestimmt in Schritt S6 die Slice-Decoder-Steuerschaltung 46,
dass der Slice-Decoder 49 nicht in Betriebe ist. Daher
führt in Schritt
S7 die Slice-Decoder-Steuerschaltung 46 den zum Slice 5 gehörenden Schreibzeiger
dem Slice-Decoder 49 zu. Als Reaktion decodiert der Slice-Decoder 49 den
Slice N (N = 5 in diesem speziellen Fall). In Schritt S8 erhöht die Slice-Decoder-Steuerschaltung 46 den
Wert N des Registers um 1. In Schritt S9 wird bestimmt, dass das
Decodieren nicht für
alle Slices abgeschlossen ist, und daher kehrt der Prozess zu Schritt
S2 zurück.
Der obige Prozess wird wiederholt durchgeführt, bis das Decodieren des
letzten Slices abgeschlossen ist.
-
Wie
oben beschrieben, wählt
die Slice-Decoder-Steuerschaltung 46 in Abhängigkeit
von den Zuständen
der Slice-Decoder 47 bis 49 den zum Decodieren
eines Slices zu benutzenden der Slice-Decoder 47 bis 49 aus,
sodass das Decodieren durch die Slice-Decoder 47 bis 49 effizient
durchgeführt
wird.
-
Bezug
nehmend auf ein in 21 dargestelltes Flussdiagramm
wird nun die durch die Bewegungskompensationsschaltung 50 durchgeführte Entscheidung
zwischen den Slice-Decodern beschrieben.
-
In
Schritt S21 initialisiert die Bewegungskompensationsschaltung 50 die
internen Register Reg_REQ_A, Reg_REQ_B und Reg_REQ_C so, dass Reg_REQ_A
= 0, Reg_REQ_B = 0, Reg_REQ_C = 0.
-
In
Schritt S22 bestimmt die Bewegungskompensationsschaltung 50,
ob die Werte der Register alle gleich 0 sind. Falls in Schritt S22
bestimmt wird, dass nicht die Werte aller Register gleich 0 sind
(d.h. wenigstens ein Register hat einen Wert gleich 1), geht der
Prozess zu Schritt S24.
-
Falls
in Schritt S22 bestimmt wird, dass die Werte der Register alle gleich
0 sind, geht der Prozess zu Schritt S23. In Schritt S23 aktualisiert
die Bewegungskompensationsschaltung 50 die Werte der Register
entsprechend den von den Slice-Decodern 47 bis 49 ausgegebenen
REQ-Signalen. Das heißt, falls
das REQ-Signal vom
Slice-Decoder 47 ausgegeben wird, wird Reg_REQ_A auf 1
gesetzt. Falls das REQ-Signal vom Slice-Decoder 48 ausgegeben wird,
wird Reg_REQ_B auf 1 gesetzt. Falls das REQ-Signal vom Slice-Decoder 49 ausgegeben
wird, wird Reg_REQ_C auf 1 gesetzt. Danach geht der Prozess zu Schritt
S24.
-
In
Schritt S24 bestimmt die Bewegungskompensationsschaltung 50,
ob Reg_REQ_A = 1. Falls in Schritt S24 bestimmt wird, dass Reg_REQ_A
= 1, geht der Prozess zu Schritt S25. In Schritt S25 sendet die
Bewegungskompensationsschaltung 50 ein ACK-Signal an den
Slice-Decoder 47 und setzt Reg_REQ_A auf 0 zurück. Der
Slice-Decoder 47 gibt an die Bewegungskompensationsschaltung 50 einen durch
den Vektordecoder 82 decodierten Prädiktionsvektor sowie Pixeldaten,
die der durch die Invers-DCT-Schaltung 84 durchgeführten inversen DCT
unterzogen wurden, aus. Danach geht der Prozess zu Schritt S30.
-
Falls
in Schritt S24 bestimmt wird, dass Reg_REQ_A nicht gleich 1 ist,
geht der Prozess zu Schritt S26. In Schritt S26 bestimmt die Bewegungskompensationsschaltung 50,
ob Reg_REQ_B = 1. Falls in Schritt S26 bestimmt wird, dass Reg_REQ_B =
1, geht der Prozess zu Schritt S27. In Schritt S27 sendet die Bewegungskompensationsschaltung 50 ein
ACK-Signal an den Slice-Decoder 48 und setzt Reg_REQ_B
auf 0 zurück.
Der Slice-Decoder 48 gibt an die Bewegungskompensationsschaltung 50 einen durch
den Vektordecoder 86 decodierten Prädiktionsvektor sowie Pixeldaten,
die der durch die Invers-DCT-Schaltung 88 durchgeführten inversen DCT
unterzogen wurden, aus. Danach geht der Prozess zu Schritt S30.
-
Falls
in Schritt S26 bestimmt wird, dass Reg_REQ_B nicht gleich 1 ist,
geht der Prozess zu Schritt S28. In Schritt S28 bestimmt die Bewegungskompensationsschaltung 50,
ob Reg_REQ_C = 1. Falls in Schritt S28 bestimmt wird, dass Reg_REQ_C nicht
gleich 1 ist, kehrt der Prozess zu Schritt S22 zurück, um den
obigen Vorgang zu wiederholen.
-
Falls
in Schritt S28 bestimmt wird, das Reg_REQ_C = 1, geht der Prozess
zu Schritt S29. In Schritt S29 sendet die Bewegungskompensationsschaltung 50 ein
ACK-Signal an den Slice-Decoder 49 und setzt Reg_REQ_C
auf 0 zurück.
Der Slice-Decoder 49 gibt an die Bewegungskompensationsschaltung 50 einen
durch den Vektordecoder 90 decodierten Prädiktionsvektor
sowie Pixeldaten, die der durch die Invers-DCT-Schaltung 92 durchgeführten inversen
DCT unterzogen wurden, aus. Danach geht der Prozess zu Schritt S30.
-
In
Schritt S30 bestimmt die Bewegungskompensationsschaltung 50,
ob ein von einem der Slice-Decoder 47 bis 49 empfangener
Makroblock eine Bewegungskompensation benötigt.
-
Falls
in Schritt S30 bestimmt wird, dass der Makroblock einer Bewegungskompensation
bedarf, geht der Prozess zu Schritt S31. In Schritt S31 führt die
Bewegungskompensationsschaltung 50 eine Bewegungskompensation
am empfangenen Makroblock durch. Das heißt, entsprechend dem von dem entsprechenden
der Slice-Decoder 47 bis 49 ausgegebenen Prädiktionsvektor
liest die Bewegungskompensationsschaltung 50, wenn die
Pixeldaten des gegebenen Makroblocks Luminanzdaten sind, über die Luminanzpufferschaltung 51 Referenzpixeldaten
aus dem Luminanzpuffer 71 aus, während die Bewegungskompensationsschaltung 50,
wenn die Pixeldaten des gegebenen Makroblocks Farbdifferenzdaten
sind, Referenzpixeldaten über
die Farbdifferenzpuffersteuerschaltung 52 aus dem Farbdifferenzpuffer 72 liest,
und die Bewegungskompensationsschaltung 50 fügt die erhaltenen
Referenzbilddaten den von einem der Slice-Decoder 47 bis 49 zugeführten Pixeldaten
hinzu, um dadurch die Bewegungskompensation durchzuführen.
-
Nach
Abschluss der Bewegungskompensation schreibt die Bewegungskompensationsschaltung 50 die
resultierenden Pixeldaten über
die Luminanzpuffersteuerschaltung 51 in den Luminanzpuffer 71, wenn
die Pixeldaten Luminanzdaten sind, oder über die Farbdifferenzpuffersteuerschaltung 52 in
den Farbdifferenzpuffer 72, wenn die Pixeldaten Farbdifferenzdaten
sind, in Vorbereitung zum Ausgeben von Anzeigedaten und auch zur
zukünftigen
Verwendung als Referenzdaten für
weitere Pixeldaten. Danach kehrt der Prozess zu Schritt S22 zurück, um den
obigen Vorgang zu wiederholen.
-
Falls
in Schritt S30 bestimmt wird, dass der gegebene Makroblock keine
Bewegungskompensation benötigt,
geht der Prozess zu Schritt S32. In Schritt S32 schreibt die Bewegungskompensationsschaltung 50 die
Pixeldaten über
die Luminanzpuffersteuerschaltung 51 in den Luminanzpuffer 71,
wenn die Pixeldaten Luminanzdaten sind, oder über die Farbdifferenzpuffersteuerschaltung 52 in
den Farbdifferenzpuffer 72, wenn die Pixeldaten Farbdifferenzdaten
sind, in Vorbereitung zum Ausgeben von Anzeigedaten und auch zur
zukünftigen
Verwendung als Referenzdaten für
ein weiteres Bild. Danach kehrt der Prozess zu Schritt S22 zurück, um den
obigen Vorgang zu wiederholen.
-
Bezug
nehmend auf 22 wird nun ein spezielles Beispiel
des oben unter Bezug auf 21 beschriebenen,
durch die Bewegungskompensationsschaltung 50 durchgeführten Entscheidungsprozesses
zwischen den Decodern beschrieben.
-
Wenn
zu einer durch C in 22 bezeichneten Zeit in Schritt
S22 in 21 bestimmt wird, dass die Werte
der Register der Bewegungskompensationsschaltung 50 alle
gleich 0 sind, d.h. alle Slice-Decoder 47 bis 49 das
REQ-Signal ausgeben, geht der Prozess zu Schritt S23, um die Werte
der Register so zu aktualisieren, dass Reg_REQ_A = 1, Reg_REQ_B
= 1 und Reg_REQ_C = 1. In Schritt S24 wird bestimmt, dass Reg_REQ_A
= 1, und daher gibt die Bewegungskompensationsschaltung 50 in
Schritt S25 ein ACK-Signal an den Slice-Decoder 47 aus und
setzt Reg_REQ_A auf 0 zurück.
Die Bewegungskompensationsschaltung 50 empfängt einen
Prädiktionsvektor
und Pixeldaten vom Slice-Decoder 47 und führt einen
ersten Bewegungskompensationsprozess durch.
-
Wenn
der erste Bewegungskompensationsprozess zu einer durch D in 22 bezeichneten
Zeit abgeschlossen ist, kehrt der Prozess zu Schritt S22 zurück. Zu der
durch D in 22 bezeichneten Zeit wird das
REQ-Signal vom Slice-Decoder 47 ausgegeben. Die Werte der
Register sind jedoch so, dass Reg_REQ_A = 0, Reg_REQ_B = 1 und Reg_REQ_C =
1, und daher wird in Schritt S22 bestimmt, dass nicht alle Werte
der Register gleich 0 sind. Als Ergebnis geht der Prozess ohne Aktualisieren
des Werts irgendeines Registers zu Schritt S24.
-
In
Schritt S24 wird bestimmt, dass Reg_REQ_A = 0, und daher geht der
Prozess zu Schritt S26, in dem bestimmt wird, dass Reg_REQ_B = 1.
Daher gibt in Schritt S27 die Bewegungskompensationsschaltung 50 ein
ACK-Signal an den Slice-Decoder 48 aus
und setzt Reg_REQ_B auf 0 zurück.
Die Bewegungskompensationsschaltung 50 empfängt einen
Prädiktionsvektor
und Pixeldaten vom Slice-Decoder 48 und führt einen
zweiten Bewegungskompensationsprozess durch.
-
Wenn
der zweite Bewegungskompensationsprozess zu einer durch E in 22 bezeichneten Zeit
abgeschlossen ist, kehrt der Prozess zu Schritt S22 zurück. Ebenso
wird zu der durch E in 22 bezeichneten Zeit das REQ-Signal
vom Slice-Decoder 47 ausgegeben. Weil jedoch die Werte
der Register so sind, dass Reg_REQ_A = 0, Reg_REQ_B = 0 und Reg_REQ_C
= 1, wird in Schritt S22 bestimmt, dass nicht alle Werte der Register
gleich 0 sind. Als Ergebnis wird der Wert keines Registers zu der
durch D in 22 bezeichneten Zeit aktualisiert.
-
Anschließen wird
in Schritt S24 bestimmt, dass Reg_REQ_A = 0, und es wird in Schritt
S26 bestimmt, dass Reg_REQ_B = 9. Ferner wird in Schritt S28 bestimmt,
dass Reg_REQ_C = 1. Daher gibt in Schritt S29 die Bewegungskompensationsschaltung 50 ein
ACK-Signal an den Slice-Decoder 49 aus und setzt Reg_REQ_C
auf 0 zurück.
Die Bewegungskompensationsschaltung 50 empfängt einen
Prädiktionsvektor
und Pixeldaten vom Slice-Decoder 49 und führt einen
dritten Bewegungskompensationsprozess durch.
-
Wenn
der dritte Bewegungskompensationsprozess zu einer durch F in 22 bezeichneten
Zeit abgeschlossen ist, kehrt der Prozess wieder zu Schritt S22
zurück.
Zu der durch F in 22 bezeichneten Zeit sind die
Werte der Register so, dass Reg_REQ_A = 0, Reg_REQ_B = 0 und Reg_REQ_C =
0, und daher werden in Schritt S23 die Werte der Register so aktualisiert,
dass Reg_REQ_A = 1, Reg_REQ_B = 1 und Reg_REQ_C = 0.
-
Danach
wird in Schritt S24 bestimmt, dass Reg_REQ_A = 1, und ein vierter
Bewegungskompensationsprozess wird in einer ähnlichen Weise durchgeführt.
-
Durch
wiederholtes Durchführen
des oben beschriebenen Prozesses führt die Bewegungskompensationsschaltung 50 eine
Bewegungskompensation mit einer Entscheidung zwischen den Slice-Decodern 47 bis 49 durch.
-
Wie
oben beschrieben, macht es in dem beispielhaften MPEG-Videodecoder 40 gemäß der vorliegenden
Erfindung der darin vorgesehene Startcodepuffer 62 möglich, dass
der Bilddecoder 45 und die Slice-Decoder 47 bis 49 auf
den Datenstrompuffer 61 zugreifen können, ohne auf den Abschluss
der Vorgänge
der anderen Decoder warten zu müssen.
Ferner können
die Slice-Decoder 47 bis 49 unter der Steuerung
der Slice-Decoder-Steuerschaltung 46 parallel arbeiten.
Ferner wählt
die Bewegungskompensationsschaltung 50 einen geeigneten
der Slice-Decoder 47 bis 49 aus und führt eine
Bewegungskompensation durch Zugriff auf den Luminanzpuffer 71 und
den Farbdifferenzpuffer 72 durch, die separat voneinander
vorgesehen sind. Wie aus der obigen Beschreibung ersichtlich, ist
es möglich,
weil der MPEG-Decoder 40 die verbesserte Decodierleistung
und auch eine verbesserte Leistung beim Zugriff auf die Zwischenspeicher
hat, einen 4:2:2P@HL/MPEG-2-Videobitstrom in Echtzeit zu decodieren.
-
Die
benötigte
Fähigkeit,
einen MP@ML/MPEG-2-Videobitstrom in Echtzeit zu decodieren beträgt nur 1/6
der zum Decodieren eines 4:2:2P@HL/MPEG-2-Videobitstroms benötigten Fähigkeit.
Mit anderen Worten kann der beispielhafte MPEG-Videodecoder 40 gemäß der vorliegenden
Erfindung einen MP@ML/MPEG-2-Videobitstrom
mit einer um einen Faktor von bis zu 6 größeren Geschwindigkeit wiedergeben.
-
Insbesondere
wird es zum Beispiel möglich, falls
der MPEG-Videodecoder 40 in einem in 23 dargestellten
System eingesetzt wird, einen MP@ML/MPEG-2-Videobitstrom mit einer hohen Geschwindigkeit
wiederzugeben.
-
In
diesem System wird ein MP@ML/MPEG-2-Videobitstrom auf einem Festplattenlaufwerk
(HDD) 111 gespeichert. Unter der Steuerung der Steuerung 34 des MPEG-Videodecoders 40 liest
ein Wiedergabegerät 112 den
auf der Festplatte 111 gespeicherten MP@ML/MPEG-2-Videobitstrom mit
einer höheren
Geschwindigkeit (zum Beispiel 6-fach höher) als eine normale Geschwindigkeit
aus und führt
den Hochgeschwindigkeits-Datenstrom dem MPEG-Videodecoder 40 zu.
-
Zum
Beispiel wird ein MP@ML/MPEG-2-Videobitstrom, wie beispielsweise
der in 24(A) gezeigte, durch den MPEG-Videodecoder 40 ohne Weglassen
irgendeines Teils des Decodierprozesses vollständig decodiert, und die resultierenden
decodierten Daten werden in den Luminanzpuffer 71 und den
Farbdifferenzpuffer 72 geschrieben, wie in 24(B) gezeigt.
Falls die im Luminanzpuffer 71 und Farbdifferenzpuffer 72 geschriebenen
Bilddaten durch die Anzeigesignalausgangsschaltung 53 so gelesen
werden, dass unabhängig
von der Bildart jedes sechste Vollbild ein Vollbild gelesen wird,
und falls die resultierenden Bilddaten als ein decodiertes Videosignal
an eine folgende Stufe ausgegeben werden, wird das Bild mit einer
Geschwindigkeit des 6-fachen der normalen Geschwindigkeit wiedergegeben.
-
Falls
die im Luminanzpuffer 71 und Farbdifferenzpuffer 72 geschriebenen
Bilddaten durch die Anzeigesignalausgangsschaltung 53 so
gelesen werden, dass unabhängig
von der Bildart jedes dritte Vollbild ein Vollbild gelesen wird,
und falls die resultierenden Bilddaten als ein decodiertes Videosignal an
die nachfolgende Stufe ausgegeben werden, wird das Bild mit einer
Geschwindigkeit des 3-fachen der normalen Geschwindigkeit wiedergegeben.
-
Das
heißt,
wenn die im Luminanzpuffer 71 und im Farbdifferenzpuffer 72 geschriebenen
Bilddaten durch die Anzeigesignalausgangsschaltung 53 so
gelesen werden, dass unabhängig
von der Bildart jedes X-te Vollbild ein Vollbild gelesen wird, und
wenn die resultierenden Bilddaten als ein decodiertes Videosignal
an die nachfolgende Stufe ausgegeben werden, wird das Bild mit einer
hohen Geschwindigkeit des X-fachen der normalen Geschwindigkeit
wiedergegeben. Falls X = 0, wird das Bild in einem Standmodus wiedergegeben.
-
Wie
oben beschrieben, ist es im MPEG-Videodecoder 40 durch
Lesen eines Vollbildes nach jeder bestimmten Anzahl von Vollbildern
mittels der Anzeigesignal ausgangsschaltung 53 möglich, ein
Bild mit einer natürlichen
Bewegung ohne Bewirken einer sprunghaften Bewegung auszugeben.
-
Wenn
der zum Wiedergeben eines MP@ML/MPEG-2-Videobitstroms mit einer
hohen Geschwindigkeit fähige
MPEG-Videodecoder 40 beim Editieren von Videodaten eingesetzt
wird, kann ein Nutzer den Inhalt eines durch ein Videosignal dargestellten
Bildes leicht verstehen. Ferner ist es möglich, eine gewünschte Editierstelle
schnell aufzufinden, und so kann das Editieren in einer hocheffizienten
Weise durchgeführt
werden.
-
Wenn
zwei zusätzliche
Anzeigesignalausgangsschaltungen ähnlich der oben beschriebenen in
dem in 18 dargestellten MPEG-Vidoedecoder 40 vorgesehen
werden, sodass der MPEG-Videodecoder insgesamt drei Ausgangssysteme
besitzt, wird es möglich,
einen MPEG-2-Videobitstromeingang mit einer Geschwindigkeit des
6-fachen der normalen Geschwindigkeit zu decodieren und das resultierende
decodierte Videosignal mit einer Wiedergabegeschwindigkeit des 3-fachen
der normalen Geschwindigkeit sequenziell über die drei Ausgangssysteme auszugeben.
-
Ausführungsbeispiele
der vorliegenden Erfindung können
auch auf eine Anwendung angewendet werden, bei welcher ein 2:1-Halbbild,
30 Vollbilder pro Sekunde, MP@ML/MPEG-2-Videobitstrom mit einer
Geschwindigkeit des Doppelten der normalen Geschwindigkeit aus einem
Speichermedium gelesen wird und ein Bild in einer nicht-verschachtelten Form
mit einer Rate von 60 Vollbildern pro Sekunde ausgegeben wird.
-
Obwohl
in dem in 23 dargestellten System ein
MP@ML/MPEG-2-Videobitstrom
auf dem Festplattenlaufwerk 111 gespeichert ist, kann anstelle
des Festplattenlaufwerks 111 auch eine andere Art Speichermedium
benutzt werden, falls sie in der Lage ist, einen MP@ML/MPEG-2-Videobitstrom
mit einer Geschwindigkeit des 6-fachen der normalen Geschwindigkeit
zu lesen.
-
Ein
zweites Beispiel eines Aufbaus eines MPEG-Videodecoders gemäß der vorliegenden
Erfindung wird nun unter Bezug auf 25 beschrieben.
Dieser MPEG-Videodecoder 130 decodiert
codierte Datenströme
mehrerer Kanäle
(in diesem Beispiel codierte Datenströme von Kanälen CH1 und CH2) parallel und
führt die
resultierenden Videoausgänge
von CH1 und CH2 einer nachfolgenden Stufe zu. Wie bei dem in 18 dargestellten
MPEG-Videodecoder 40 hat der MPEG-Videodecoder 130 die Fähigkeit
des Decodierens mit einer Geschwindigkeit um das 6-fache schneller
als der in 15 dargestellte herkömmliche
Videodecoder.
-
Der
Unterschied im Aufbau zwischen dem MPEG-Videodecoder 130 und
dem MPEG-Videodecoder 40 wird nun beschrieben. Im MPEG-Videodecoder 130 sind
die Datenstromeingangsschaltung 41, die Startcodeerfassungsschaltung 42 und
die Anzeigesignalausgangsschaltung 43 des MPEG-Videodecoders 40 jeweils
durch entsprechende Teile ersetzt, die für die Abwicklung der Kanäle CH1 und CH2
bestimmt sind. Das heißt,
für Kanal
CH1 sind eine Datenstromeingangsschaltung 41-1, eine Startcodeerfassungsschaltung 42-1 und
eine Anzeigesignalausgangsschaltung 53-1 vorgesehen, und
eine Datenstromeingangsschaltung 41-2, eine Startcodeerfassungsschaltung 42-2 und
eine Anzeigesignalausgangsschaltung 53-2 sind für den Kanal
CH2 vorgesehen. Ferner haben im MPEG-Videodecoder 130 der
Datenstrompuffer 61, der Startcodepuffer 62, der Luminanzpuffer 71 und
der Farbdifferenzpuffer 72 des Zwischenspeichers 32 jeweils
Speicherbereiche zur Nutzung für
den Kanal CH1 und den Kanal CH2.
-
Die
Datenstromeingangsschaltung 41-1 empfängt einen hocheffizient codierten
Datenstrom (MPEG-2-Videobitstrom) des Kanals CH1 und führt ihn
der Startcodeerfassungsschaltung 42-1 zu. Die Startcodeerfassungsschaltung 42-1 führt den
empfangenen codierten Datenstrom des Kanals CH1 der Datenstrompuffersteuerschaltung 43 zu.
Die Startcodeerfassungsschaltung 42-1 erfasst auch einen
früher
unter Bezug auf 14 beschriebenen Startcode und
erzeugt auf der Basis des erfassten Startcodes Startcodeinformationen
mit Daten, die die Art des Startcodes angeben, und einen Schreibzeiger,
der eine Position im Speicherbereich zur Benutzung für den Kanal
CH1 im Datenstrompuffer 61 angibt, an welcher der Startcode
geschrieben werden soll. Die erzeugten Startcodeinformationen werden
der Datenstrompuffersteuerschaltung 43 zugeführt.
-
Analog
empfängt
die Datenstromeingangsschaltung 41-2 einen hocheffizient
codierten Datenstrom (MPEG-2-Videobitstrom) des Kanals CH2 und führt ihn
der Startcodeerfassungsschaltung 42-2 zu. Die Startcodeerfassungsschaltung 42-2 führt den empfangenen
codierten Datenstrom des Kanals CH2 der Datenstrompuffersteuerschaltung 43 zu.
Die Startcodeerfassungsschaltung 42-2 erfasst auch einen
früher
unter Bezug auf 14 beschriebenen Startcode und erzeugt
auf der Basis des erfassten Startcodes Startcodeinformationen einschließlich Daten, die
die Art des Startcodes angeben, und eines Schreibzeigers, der eine
Position im Speicherbereich zur Benutzung für den Kanal CH1 im Datenstrompuffer 61 anzeigt,
an welcher der Startcode geschrieben werden soll. Die erzeugten
Startcodeinformationen werden der Datenstrompuffersteuerschaltung 43 zugeführt.
-
Die
Anzeigesignalausgangsschaltung 53-1 erzeugt ein Synchronisierungstaktsignal,
das beim Ausgeben von decodierten Bilddaten des Kanals CH1 verwendet
wird. Gemäß dem Taktsignal
liest die Anzeigesignalausgangsschaltung 53 Luminanzdaten aus
dem Luminanzpuffer 71 über
die Luminanzpuffersteuerschaltung 51 und liest auch Farbdifferenzdaten
aus dem Farbdifferenzpuffer 72 über die Farbdifferenzpuffersteuerschaltung 52,
und die Anzeigesignalausgangsschaltung 53-1 gibt sie als
ein decodiertes Videosignal des Kanals CH1 aus.
-
Analog
erzeugt die Anzeigesignalausgangsschaltung 53-2 ein Synchronisierungstaktsignal,
das beim Ausgeben von decodierten Bilddaten des Kanals CH2 verwendet
wird. Entsprechend dem Taktsignal liest die Anzeigesignalausgangsschaltung 53 Luminanzdaten
aus dem Luminanzpuffer 71 über die Luminanzsteuerschaltung 51 und
liest auch Farbdifferenzdaten über
die Farbdifferenzpuffersteuerschaltung 52 aus dem Farbdifferenzpuffer 72,
und die Anzeigesignalausgangsschaltung 53-2 gibt sie als
ein decodiertes Videosignal des Kanals CH2 aus.
-
Die
anderen Schaltungskomponenten im MPEG-Videodecoder 130 sind ähnlich den
durch ähnliche
Bezugsziffern bezeichneten des MPEG-Videodecoders 40, und
daher werden sie hier nicht in mehr Einzelheiten beschrieben.
-
Bezug
nehmend auf ein in 26 gezeigtes Flussdiagramm wird
nun ein Prozess beschrieben, der durch den MPEG-Videodecoder 130 unter
der Steuerung der Steuerung 34 durchgeführt wird, um bis zu L Kanäle (L =
2 in diesem speziellen Beispiel) zu decodieren.
-
In
Schritt S51 initialisiert die Steuerung 34 ein internes
Register CH, das angibt, welcher Kanal decodiert werden soll. In
Schritt S52 befiehlt die Steuerung 34 dem Bilddecoder 45,
eine Bildebene eines Kanals entsprechend dem Wert des Registers
CH zu decodieren. In Schritt S53 bestimmt die Steuerung 34,
ob der Bilddecoder 45 das Decodieren der Bildebene des
Kanals (Kanal CH1 in diesem speziellen Fall) entsprechend dem Wert
des Registers CH abgeschlossen hat. Falls das Decodieren nicht abgeschlossen
ist, wartet die Steuerung 34 in Schritt S53, bis das Decodieren
abgeschlossen ist.
-
Während der
Wartedauer liest der Bilddecoder 45 entsprechend dem Befehl
von der Steuerung 34 Startcodeinformationen aus dem zur
Verwendung für
den Kanal CH1 zugewiesenen Speicherbereich im Startcodepuffer 62 des
Zwischenspeichers 32 über
die Datenstrompuffersteuerschaltung 43 und erfasst einen
Schreibzeiger von sequence_header, der den Startpunkt angibt, an
welchem das Decodieren gestartet werden soll. Entsprechend dem zum
Kanal CH1 gehörenden,
erfassten Schreibzeiger von sequence_header liest der Bilddecoder 45 segeunce_header
aus dem zur Verwendung für
den Kanal CH1 zugewiesenen Speicherbereich im Datenstrompuffer 61 des
Zwischenspeichers 32 und decodiert ihn. Analog liest der
Bilddecoder 45 ferner sequence_extension, GOP_header, picture_header und
picture_coding_extension aus dem zur Verwendung für den Kanal
CH1 zugewiesenen Speicherbereich im Datenstrompuffer 61 und
decodiert sie. Ferner liest der Bilddecoder 45 Startcodeinformationen aus
dem zur Verwendung für
den Kanal CH1 zugewiesenen Speicherbereich im Datenstrompuffer 61 und
erfasst einen einem ersten Slice zugeordneten Schreibzeiger.
-
An
dieser Stufe, an welcher alle Parameter der Bildebene, die zum Decodieren
des Bildes des Kanals CH1 erforderlich sind, erhalten worden sind, meldet
der Bilddecoder 45 der Steuerung 34, dass das
Decodieren der Bildebene abgeschlossen worden ist.
-
Entsprechend
dieser Meldung bestimmt die Steuerung 34 in Schritt S53,
dass das Decodieren der Bildebene abgeschlossen worden ist. Danach geht
der Prozess zu Schritt S54. In Schritt S54 empfängt die Steuerung 34 vom
Bilddecoder 45 die der Bildebene des Kanals CH1 zugeordneten
decodierten Parameter und speichert sie. In Schritt S55 bestimmt
die Steuerung 34, ob der Slice-Decoder 46 bereit
ist (ob der Slice-Decoder 46 einen vorherigen Prozess abgeschlossen
hat). Falls der Slice-Decoder 46 nicht bereit ist, wartet
die Steuerung 34 in Schritt S55, bis der Slice-Decoder 46 bereit
wird. Falls bestimmt wird, dass der Slice-Decoder 46 bereit
ist, geht der Prozess zu Schritt S56.
-
In
Schritt S56 führt
die Steuerung 34 die der Bildebene des Kanals CH1 zugeordneten
Parameter, die nach dem Empfangen vom Bilddecoder 45 gespeichert
werden, der Slice-Decoder-Steuerschaltung 46 zu. In Schritt
S57 befiehlt die Steuerung 34 der Slice-Decoder-Steuerschaltung 46 und
der Bewegungskompensationsschaltung 50, eine Slice-Ebene
des Kanals CH1 zu decodieren.
-
Als
Reaktion auf den Befehl ordnet die Slice-Decoder-Steuerschaltung 46 jeweilige
Slices des Kanals CH1 den Slice-Decodern 47 bis 49 zu, um
sie zu decodieren. Die Einzelheiten des obigen Vorgangs sind ähnlich dem
oben unter Bezug auf 19 und 20 beschriebenen
Vorgang, und daher wird der Vorgang hier nicht in mehr Einzelheiten beschrieben.
Als Reaktion auf den obigen Befehl führt die Bewegungskompensationsschaltung 50 eine
Entscheidung zwischen durch die Slice-Decoder 47 bis 49 ausgegebenen
Anfragen durch. Der Entscheidungsprozess ist ähnlich dem oben unter Bezug
auf 21 und 22 beschriebenen,
und daher wird er hier nicht mehr Einzelheiten beschrieben.
-
Wenn
das Decodieren eines Bildes des Kanals CH1 über den oben beschriebenen
Prozess abgeschlossen ist, meldet die Slice-Decoder-Steuerschaltung 46 der
Steuerung 34, dass das Decodieren eines Bildes abgeschlossen
worden ist.
-
Als
Reaktion auf die Meldung erhöht
die Steuerung 34 in Schritt S58 den Wert des Registers CH
um 1. Im diesem speziellen Fall wird der Wert des Registers CH von
1 auf 2 erhöht.
In Schritt S59 bestimmt die Steuerung, ob der Wert des Registers
CH größer als
L ist. Falls bestimmt wird, dass der Wert des Registers CH nicht
größer als
L ist, kehrt der Prozess zu Schritt S52 zurück und der oben beschriebene
Prozess wird wiederholt. In diesem speziellen Fall ist L gleich
2 und der Wert des Registers CH ist gleich 2, und daher kehrt der
Prozess zu Schritt S52 zurück, um
den Vorgang für
Kanal CH2 in den Schritten S52 bis S57 zu wiederholen.
-
Daher
wird, falls der Wert des Registers CH wieder im Schritt S58 um 1
erhöht
wird (von 2 auf 3 in diesem speziellen Fall), dann in Schritt S59
bestimmt, dass der Wert des Registers CH größer als L ist. Somit geht der
Prozess zu Schritt S60. In Schritt S60 initialisiert die Steuerung 34 das
Register CH auf 1. Danach kehrt der Prozess zu Schritt S52 zurück, um den
obigen Vorgang zu wiederholen.
-
Das
Decodieren wird für
codierte Datenströme
von L Kanälen
(2 Kanälen
in diesem speziellen Beispiel) in der oben beschriebenen Weise parallel durchgeführt.
-
In
dem Prozess von Schritt S54 bis S56, in denen die Steuerung 34 die
zur Bildebene gehörenden
Parameter vom Bilddecoder 45 empfängt und sie speichert und dann
die zur Bildebene gehörenden gespeicherten
Parameter der Slice-Decoder-Steuerschaltung 46 zuführt, kann
der Prozess anstelle durch die Steuerung 34 durch eine
andere im MPEG-Videodecoder 130 vorgesehen Schaltung durchgeführt werden.
-
Die
für den
MPEG-Videodecoder 130 erforderliche Zeit zum Decodieren
eines Bildes ist bis zu 1/6 der für den in 15 dargestellten
herkömmlichen
MPEG-Videodecoder
zum Decodieren eines Bildes erforderlichen Zeit (d.h. der zum Decodieren mit
einer normalen Geschwindigkeit erforderlichen Zeit). Mit anderen
Worten ist der MPEG-Videodecoder 130 in der Lage, bis zu
sechs Kanäle
codierter Daten parallel zu decodieren.
-
27 zeigt
ein Beispiel eines Aufbaus eines MPEG-Videoserver/editorsystems
unter Verwendung des MPEG-Videodecoders 130. In diesem MPEG-Videoserver/editorsystem
sind mehrere Kanäle
von MPEG-2-Videobitströmen
auf einem Festplattenlaufwerk gespeichert. Hierbei kann anstelle des
Festplattenlaufwerks 111 auch eine andere Art von Aufzeichnungs/Wiedergabevorrichtung
eingesetzt werden, wie beispielsweise ein optisches Plattenlaufwerk,
ein magnetooptisches Plattenlaufwerk, ein Magnetbandlaufwerk oder
ein Halbleiterspeicherlaufwerk.
-
Unter
der Steuerung der Steuerung 34 liest ein Wiedergabegerät 112 zum
Beispiel zwei Kanäle von
MPEG-2-Videobitströmen
(codierte Datenströme der
Kanäle
CH1 und CH2, dargestellt in 27) der mehreren
auf dem Festplattenlaufwerk 111 gespeicherten MPEG-2-Vidoebitströme, und
das Wiedergabegerät 112 führt sie
dem MPEG-Videodecoder 130 zu. Der MPEG-Videodecoder 130 decodiert
die eingegebenen codierten Datenströme der Kanäle CH1 und CH2 in der oben
beschriebenen Weise parallel und führt die resultierenden Videoausgänge der
Kanäle
CH1 und CH2 einer nachfolgenden Stufe zu. Alternativ kann einer
der decodierten Videoausgänge des
Kanals CH1 und CH2 als gewünscht
ausgewählt werden
und der ausgewählte
Videoausgang kann der nachfolgenden Stufe zugeführt werden.
-
28 zeigt
ein drittes Beispiel eines Aufbaus eines MPEG-Videodecoders gemäß der vorliegenden
Erfindung. In diesem MPEG-Videodecoder 150 wird ein gemultiplexter
Datenstrom eingegeben, und mehrere Kanäle von codierten Datenströmen (codierte
Datenströme
der Kanäle
CH1 und CH2 in diesem speziellen Beispiel), die in dem gemultiplexten
Datenstrom enthalten sind, werden parallel decodiert, und die erhaltenen
Videoausgänge
der Kanäle CH1
und CH2 werden einer nachfolgenden Stufe zugeführt.
-
Der
MPEG-Videodecoder 150 hat eine Konfiguration, die man durch
Ersetzen der Datenstromeingangsschaltungen 41-1 und 41-2 des
in 23 dargestellten MPEG-Videodecoders 130 durch
eine Kanaltrennschaltung 151 erhält. Die Kanaltrennschaltung 151 trennt
einen eingegebenen gemultiplexten Datenstrom (d.h. einen Transportstrom,
auf dem MPEG-Videobitströme
gemultiplext sind) in codierte Datenströme der Kanäle CH1 und CH2. Der codierte
Datenstrom des Kanals CH1 wird der Startcodeerfassungsschaltung 42-1 zugeführt, und
der codierte Datenstrom des Kanals CH2 wird der Startcodeerfassungsschaltung 42-2 zugeführt.
-
Die übrigen Schaltungskomponenten
des MPEG-Videodecoders 150 sind ähnlich den durch ähnliche
Bezugsziffern bezeichneten des MPEG-Videodecoders 130,
und daher werden sie hier nicht in mehr Einzelheiten beschrieben.
Die Funktionsweisen der Startcodeerfassungsschaltungen 42-1 und 42-2 und
der nachfolgenden Schaltungskomponenten im MPEG-Videodecoder 150 sind ähnlich jenen
der entsprechenden Schaltungskomponenten des MPEG-Videodecoders 130,
und daher werden sie hier nicht in mehr Einzelheiten beschrieben.
-
Ein
Beispiel einer Anwendung des MPEG-Videodecoders 150 wird
nun unter Bezug auf 29 beschrieben. Hierbei hat
der MPEG-Videodecoder 150 wie der in 25 dargestellte
MPEG-Videodecoder 130 das Vermögen zum Decodieren mit einer Geschwindigkeit
um sechs Mal schneller als der in 15 dargestellte
herkömmliche
Videodecoder. Mit anderen Worten ist der MPEG-Videodecoder 150 in der
Lage, bis zu sechs Kanäle
von codierten Datenströmen
der auf einem eingegebenen gemultiplexten Datenstrom gemultiplexten
codierten Datenströme zu
decodieren.
-
Diese
Technik kann verwendet werden, um eine als Wischen bekannte Bildkomposition
zu realisieren, bei welcher, wie in 29 dargestellt,
codierte Datenströme
der Kanäle
CH1 und CH2 wahlweise aus einem gemultiplexten Datenstrom getrennt
und parallel decodiert werden, und die erhaltenen Videoausgänge der
Kanäle
CH1 und CH2 einem Videoschalter 161 zugeführt werden,
der seinerseits allmählich
ein Videobild des Kanals CH1 zu einem Videobild des Kanals CH2 schaltet.
-
Der
oben beschriebene Prozess kann durch Software ausgeführt werden.
Wenn der Prozess durch Software ausgeführt wird, kann ein die Software
bildendes Programm auf einem Speichermedium auf einen Computer installiert
werden, der als spezielle Hardware vorgesehen ist, oder kann auf
einen Mehrzweck-Computer installiert werden, der zum Durchführen verschiedener
Prozesse entsprechend verschiedenen darauf installierten Programmen
in der Lage ist.
-
Verschiedene
Arten von Speichermedien, wie beispielsweise die in 18 gezeigten,
können für den obigen
Zweck verwendet werden. Das heißt, spezielle
Beispiele von Speichermedien für
diesen Zweck enthalten eine Magnetplatte 101 (beispielsweise
eine Floppydisk), eine optische Platte 102 (beispielsweise
eine CD-ROM (Compact Disk-Read Only Memory) und eine DVD (Digital
Versatile Disk)), eine magnetooptische Platte 103 (beispielsweise
eine MD (Mini-Disk)) und einen Halbleiterspeicher 104,
in der Form eines Verpackungsmediums, auf dem ein Programm gespeichert
ist und der einem Benutzer separat von einem Computer geliefert
wird.
-
In
der vorliegenden Beschreibung können die
in dem im Speichermedium gespeicherten Programm beschriebenen Schritte
entweder zeitlich nacheinander entsprechend der im Programm beschriebenen
Reihenfolge oder in einer parallelen oder getrennten Weise durchgeführt werden.
-
In
der vorliegenden Beschreibung wird der Begriff „System" benutzt, um einen gesamten Satz an Vorrichtungen
darzustellen.
-
Wie
aus der obigen Beschreibung ersichtlich, stellen die Ausführungsbeispiele
der vorliegenden Erfindung große
Vorteile bereit. Das heißt,
in der ersten Decodiervorrichtung, dem ersten Decodierverfahren
und dem auf dem ersten Speichermedium gespeicherten Programm gemäß den Ausführungsbeispielen
der vorliegenden Erfindung wird ein Decodieren eines beschleunigten
codierten Datenstroms so gesteuert, dass das Decodieren parallel
durchgeführt
wird, und ein Bild entsprechend dem decodierten beschleunigten codierten
Datenstrom wird mit einer beliebigen Geschwindigkeit ausgegeben,
wodurch es möglich
gemacht wird, einen Videodecoder mit einer realistischen Schaltungsgröße zu realisieren,
der einen MP@ML/MPEG-2-Videobitstrom mit einer beliebigen Geschwindigkeit
wiedergeben kann.
-
In
der zweiten Decodiervorrichtung, dem zweiten Decodierverfahren und
dem auf dem zweiten Speichermedium gespeicherten Programm gemäß den Ausführungsbeispielen
der vorliegenden Erfindung werden mehrere Slice-Decoder so gesteuert, dass
sie parallel arbeiten, um einen beschleunigten codierten Datenstrom
zu decodieren, und ein Bild entsprechend dem decodierten beschleunigten
codierten Datenstrom wird mit einer beliebigen Geschwindigkeit auszugeben,
wodurch es möglich
gemacht wird, einen Videodecoder mit einer realistischen Schaltungsgröße zu realisieren,
der einen MP@ML/MPEG-2-Videobitstrom mit einer beliebigen Geschwindigkeit
wiedergeben kann.
-
In
der dritten Decodiervorrichtung, dem dritten Decodierverfahren und
dem auf dem dritten Speichermedium gespeicherten Programm gemäß den Ausführungsbeispielen
der vorliegenden Erfindung werden mehrere codierte Datenströme parallel
decodiert, und mehrere Bilder entsprechend den resultierenden mehreren
decodierten Datenströmen
werden ausgegeben, wodurch es möglich
gemacht wird, einen Videodecoder zu realisieren, der mehrere Kanäle von codierten
Datenströmen
parallel decodieren kann.
-
In
der vierten Decodiervorrichtung, dem vierten Decodierverfahren und
dem auf dem vierten Speichermedium gespeicherten Programm gemäß den Ausführungsbeispielen
der vorliegenden Erfindung werden mehrere codierte Datenströme durch mehrere
Slice-Decoder parallel decodiert, und mehrere Bilder entsprechend
den mehreren durch die mehreren Slice-Decoder decodierten Datenströmen werden
ausgegeben, wodurch es möglich
gemacht wird, einen Videodecoder zu realisieren, der mehrere Kanäle von codierten
Datenströmen
parallel decodieren kann.
-
Insoweit
die Ausführungsbeispiele
der oben beschriebenen Erfindung zumindest teilweise mittels software-gesteuerter
Datenverarbeitungsvorrichtungen realisiert werden, ist es offensichtlich,
dass ein eine solche Softwaresteuerung bereitstellendes Computerprogramm
und Speichermedium, durch welches ein solches Computerprogramm gespeichert
wird, als Aspekte der vorliegenden Erfindung angesehen werden.