-
Technisches Gebiet
-
Diese
Erfindung bezieht auf eine Decodierungsvorrichtung, ein Decodierungsverfahren
und einem Aufzeichnungsmedium und besonders auf eine Decodierungsvorrichtung,
ein Decodierungsverfahren und ein Aufzeichnungsmedium, die die Realisierung
eines Videodecoders ermöglichen,
der zu 4:2:2P@HL konform ist und fähig zum Durchführen der
Echtzeitoperation in einer praktischen Schaltkreis-Dimension ist.
-
Bisheriger Stand der Technik
-
Das
MPEG2 (MPEG2 = Moving Picture Coding Experts Group/Moving Pictures
Experts Group2 = Bewegtbilder-Kodierungsexpertengruppe/Bewegtbilder-Expertengruppe 2)
Videosystem ist ein Kodierungssystem hoher Effizienz für die Videosignale,
die durch die ISO/IEC 13818-2 (ISO = International Standards Organization/International
Electrotechnical Commission = internationale Standard-Organisation/internationale
elektrotechnische Kommission) und die ITU-T Empfehlungen H.262 (ITU-T
= International Telecommunication Union-Telecommunication sector = internationale
Telekommunikatrionsunion Nachrichtentechnik Sektion) vorgeschrieben
werden.
-
Ein
MPEG2-kodierter Strom wird durch das Profil eingestellt, das in Übereinstimmung
mit einer Kodierungstechnik und dem Level festgestellt wird, der
durch die Zahl der zu bearbeitenden Pixel bestimmt wird, und wird
folglich zu einer breiten Vielzahl von Anwendungen konform gemacht.
Bespielweise ist MP@ML (MP@ML = Main Profile Main Level = Hauptprofil-Hauptniveau)
eine der Kategorien, die praktisch für DVB (DVB = digital video
broadcast = digitale Videoausstrahlung) und DVD (DVD = digital versatile
disk = digitale vielseitige Scheibe) benutzt wird. Das Profil und
der Level werden durch sequence_extension beschrieben, wie später in Bezug
auf 5 beschrieben wird.
-
Für die Produktion
der Videosignale an einer Sendestation wird 4:2:2P (4:2:2 Profil)
vorgeschrieben, in dem Farbdifferenzignale des Bildschirmes in Übereinstimmung
mit dem 4:2:2 Format verarbeitet werden, ähnlich dem herkömmlichen
Basisband, während
eine obere Begrenzung der Übertragungsgeschwindigkeit
erhöht
wird. Außerdem
wird HL (HL = High Level = hoher Pegel) vorgeschrieben, um mit hochauflösenden Videosignalen
der nächsten
Generation zu recht zu kommen.
-
1 zeigt
typische Kategorien von MPEG2- und oberen Begrenzungswerten der
verschiedenen Parameter in den jeweiligen Kategorien. In 1 werden
die Übertragungsgeschwindigkeit, die
Zahl von Abtastwerten pro Zeile, die Zahl von Zeilen pro Rahmen,
die Rahmenfrequenz und der obere Begrenzungswert der Abtastwertverarbeitungszeit
in Bezug auf 4:2:2P@HL gezeigt (4:2:2 Profil hoher Level), 4:2:2P@ML
(4:2:2 Profil-Haupt-Level), MP@HL (Hauptprofil-Hochlevel), MP@HL – 1440 (Hauptprofil-Hochlevel – 1440),
MP@ML (Hauptprofil – Hauptlevel),
MP@LL (Hauptprofil-Niedriglevel) und SP@ML (einfacher Profil-Hauptlevel).
-
Bezug
nehmend auf 1, beträgt der obere Begrenzungswert
der Übertragungsgeschwindigkeit für 4:2:2P@HL
300 (Mbits/sek) und der obere Begrenzungswert der Zahl der zu verarbeitenden
Pixeln 62.668.800 (Abtastwerte/sek). Einerseits ist der obere Begrenzungswert
der Übertragungsgeschwindigkeit
für MP@ML
15 (Mbits/sek) und der obere Begrenzungswert der Zahl der zu verarbeitenden
Pixel 10.368.000 (Abtastwerte/sek). Das heißt, es wird verstanden, dass
ein Videodecoder für
die Decodierung von 4:2:2P@HL-Videos die Verarbeitungsfähigkeit benötigt, die
20-mal der Übertragungsgeschwindigkeit
und ungefähr
sechsmal der Zahl der zu verarbeitenden Pixeln entspricht, im Vergleich
mit einem Videodecoder für
die Decodierung des MP@ML-Videos.
-
2 zeigt
die Level-Struktur eines MPEG2-Videobitstromes.
-
Am
Anfang einer Bildschicht, die die oberste Schicht ist, wird sequence_header
beschrieben. Sequence_header definiert Headerdaten der MPEG-Bitstromsequenz.
Wenn sequence_header am Anfang der Sequenz nicht von sequence_extension
gefolgt wird, wird die Vorschrift von ISO/IEC 11172-2 auf diesen
Bitstrom angewendet. Wenn sequence_header am Anfang der Sequenz
vom sequence_extension gefolgt wird, kommt sequence_extension sofort
nach allen sequence_headers, die nachher erzeugt werden. Im Falle
der 2 kommt sequence_extension sofort nach allen sequence_headers.
-
Sequence_extension
definiert Erweiterungsdaten einer Sequenzschicht des MPEG-Bitstromes. Sequence_extension
wird nur sofort nach sequence_header erzeugt und soll nicht direkt
vor sequence_end_code kommen, das am Ende des Bitstromes kommt,
um einen Rahmenverlust nach der Decodierung und nach Rahmen-Neuordnung zu verhindern.
Wenn sequence_extension im Bitstrom erzeugt wird, kommt picture_coding_extension
sofort nach jedem picture_header.
-
Eine
Mehrzahl von Bilden ist in GOP (group_of_picture) enthalten. GOP_header
definiert Headerdaten einer GOP-Schicht des MPEG Bit-Stroms. In
diesem Bitstrom werden Daten-Elemente beschrieben, die durch picture_header
und picture_coding_extension definiert werden. Ein Bild ist als
picture_data kodiert, das picture_header und picture_coding_extension
folgt. Der erste kodierte Rahmen, der GOP_header folgt, ist ein
kodierter I-Rahmen (Das heißt,
dass die erste Bild von GOP_header ein I-Bild ist.). Die ITU-T Empfehlung H.262
definiert verschiedene Zusätze
zusätzlich
zu sequence_extension und zu picture_coding_extension. Diese verschiedenen
Zusätze
werden nicht hier gezeigt oder beschrieben.
-
Picture
header definiert Headerdaten der Bildschicht des MPEG-Bitstromes
und picture_coding_extension definiert Zusatzdaten der Bildschicht
des MPEG-Bitstromes.
-
Picture_data
beschreibt die Daten-Elemente, die auf eine Teil-Schicht und einer
Macroblock-Schicht des MPEG Bitstromes bezogen sind. Picture_data
wird in eine Mehrzahl der Teile geteilt und jeder Teil wird in eine
Mehrzahl von Macroblocks (macro_block) geteilt, wie in 2 gezeigt
ist.
-
Ein
macro_block wird durch 16×16
Pixeldaten festgesetzt. Der erste Macroblock und der letzte Macroblock
eines Teils/eines Schnittes/einer Scheibe sind nicht Zeilensprung-Macroblocks
(die Macroblocks, die keine Daten enthalten). Ein Macroblock wird
durch 16×16
Pixeldaten festgesetzt. Jeder Block wird durch 8×8 Pixeldaten festgesetzt.
In einem Rahmenbild, für
die eine DCT-Rahmencodierung (DCT = discrete cosine transform =
disktrete Cosinus-Transformation) und eine DCT-Bereichscodierung verwendet werden können, unterscheidet
sich die interne Struktur eines Macroblock zwischen Rahmencodierung
und Bereichscodierung.
-
Ein
Macroblock umfasst einen Abschnitt einer Helligkeits-Komponente
und einer Farbdifferenzkomponente. Die Bezeichnung „Macroblock" hat eine aus den
nachfolgenden Bedeutungen: Informationquelle, decodierte Daten und
eine entsprechende Komponente der kodierten Daten. Ein Macroblock hat
drei Farbdifferenz-Formate von 4:2:0, 4:2:2 und 4:4:4. Die Reihenfolge
der Blöcke
in einem Macroblock unterscheidet sich abhängig von dem Farbdifferenz-Format.
-
3A zeigt
einen Macroblock im Falle des 4:2:0-Formats. Ein Macroblock wird
im 4:2:0-Format durch vier Helligkeitsblöcke (Y) und zwei Farbdifferenzblöcke (Cb,
Cr) gebildet (d.h., je ein Block). 3B zeigt
einen Macroblock im Falle des 4:2:2-Formats. Ein Macroblock im 4:2:2-Format
wird durch vier Helligkeitsblöcke
(Y) und vier Farbdifferenzblöcke
(Cb, Cr) gebildet (d.h., je zwei Blöcke).
-
Für jeden
Macroblock ist eine Vorschätzungskodierungsverarbeitung
durch mehrere Verfahren möglich.
Der Vorhersage-Modus ist grob in zwei Typen der Bereichsvorhersage
und der Rahmenvorhersage eingeteilt. In der Bereichsvorhersage werden
Daten von einem oder eine Mehrzahl von Bereichen verwendet, die
vorher decodiert wurden und die Vorhersage wird in Bezug auf jeden
Bereich durchgeführt.
In der Rahmenvorhersage wird eine Vorhersage eines Rahmens durchgeführt, indem
ein oder eine Mehrzahl von Rahmen verwendet wird, die vorher decodiert
werden. In einem Bereichsbild sind alle Vorhersagen Bereichsvorhersagen.
In einem Rahmenbild kann eine Vorhersage andererseits durch Bereichsvorhersage
oder Rahmenvorhersage durchgeführt
werden und das Vorhersage-Verfahren wird für jeden Macroblock ausgewählt. In
der Vorhersagecodierungsverarbeitungsoperation eines Macroblocks
können
zwei Typen von speziellen Vorhersage-Modi verwendet werden, das
heißt
16×8 Bewegungsausgleich
und doppelt teilerfremd, anders als Bereichsvorhersage und Rahmenvorhersage.
-
Bewegungsvektorinformation
und andere Zusatzinformation werden zusammen mit einem Vorhersagestörungsignal
jedes Macroblocks kodiert. Durch Kodierung des Bewegungsvektors
wird der letzte Bewegungsvektor, der kodiert wird, indem ein variabler
Längecode
verwendet wird, als Vorhersagevektor verwendet und ein differentialer
Vektor wird vom Vorhersagevektor kodiert. Die maximale Lange eines
Vektors, der angezeigt werden kann, kann für jedes Bild programmiert werden.
Die Berechnung eines passenden Bewegungsvektors wird von einem Codierer
durchgeführt.
-
Nach
picture_data werden sequence_header und sequence_extension eingeordnet.
Die Daten-Elemente, die durch sequence_header und sequence_extension
beschrieben werden, sind genau dieselben wie die Daten-Elemente,
die durch sequence_header und sequence_extension am Anfang der Videostromsequenz
beschrieben werden. Der Zweck des Beschreibens der gleichen Daten
im Strom ist wieder, solch eine Situation zu vermeiden, dass, wenn
die Bitstromempfangseinheit bei einem halben Teil des Datenstromes
das Empfangen beginnt (z.B. ein Bitstrom-Teil, der der Bild-Schicht
entspricht), die Daten der Sequenz-Schicht nicht empfangen werden
und folglich der Strom nicht decodiert werden kann.
-
Nach
den Daten-Elementen, die durch den letzten sequence_header und das sequence_extension
definiert werden, das heißt,
am Ende des Datenstromes, sequence_end_code mit 32 Bits wird beschrieben,
was das Ende der Sequenz anzeigt.
-
Die
jeweiligen Daten-Elemente werden jetzt im Detail mit Bezug auf 4 bis 12 beschrieben.
-
4 zeigt
die Daten-Struktur von sequence_header. Die Daten-Elemente, die
im sequence_header umfasst sind, sind 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, Kennmarke, load_intra_quantiser_matrix, intra_quantiser_matrix, load_non_intra_quantiser_matrix
und non_intra_quantiser_matrix.
-
Sequence_header_code
kennzeichnet die Daten, die den Startsynchronisationscode der Sequenz-Schicht
ausdrückt.
Horizontal_size_value kennzeichnet Daten der unteren 12 Bits, welche
die Zahl der Pixel in der horizontalen Richtung des Bildes ausdrücken. Vertical_size_value
kennzeichnet Daten der unteren 12 Bits, welche die Zahl der vertikalen Spalten
der Bild ausdrücken. Aspect_ratio_information
kennzeichnet die Daten, die das Längenverhältnis der Pixel oder das Längenverhältnis des
Anzeigeschirms ausdrücken. Frame_rate_code
kennzeichnet die Daten, die den Anzeigezyklus des Bildes ausdrücken. Bit_rate_value
kennzeichnet Daten der unteren 18 Bits, welche die Übertragungsgeschwindigkeit
für das
Begrenzen der Quantität
der erzeugten Bits ausdrücken.
-
Marker_bit
kennzeichnet die Bit-Daten, die eingesetzt werden, um Startcodeemulation
zu verhindern. Vbv_buffer_size_value kennzeichnet Daten der unteren
10 Bits, die einen Wert für
die Bestimmung der Größe eines
virtuellen Puffers VBV ausdrücken
(Videopuffer-Verifizierer) zum Kontrollieren die Quantität der erzeugten
Codes. Constrained_parameter_flag kennzeichnet Daten, die kennzeichnen,
dass jeder Parameter innerhalb einer Begrenzung ist. Load_non_intra_quantiser_matrix kennzeichnet
Daten, die das Bestehen von nicht in einem MB quantisierten Matrixdaten
kennzeichnet.
-
Load_intra_quantiser_matrix
kennzeichnet Daten, die das Bestehen der in MB quantisierten Matrixdaten
kennzeichnet. Intra_quantiser_matrix kennzeichnet Daten, die den
Wert der in MB quantisierten Matrix kennzeichnet. Non_intra_quantiser_matrix kennzeichnet
Daten, die den Wert der nicht in MB quantisierten Matrix kennzeichnet.
-
5 zeigt
die Daten-Struktur von sequence_extension. Sequence_extension umfasst Daten-Elemente
wie extension_start_code, extension_start_code_identifier, profile_and_level_indication,
progressive_sequence, chroma_formst, 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
kennzeichnet die Daten, die den Anfangssynchronisationscode der
Zusatzdaten ausdrücken.
Extension start_code_identifier kennzeichnet Daten, die ausdrücken, welche
Zusatzdaten gesendet werden sollen. Profile_and_level_indication
kennzeichnet Daten zum Kennzeichnen des Profils und des Levels der
Videodaten. Progressive_sequence kennzeichnet Daten, die kennzeichnen,
dass die Videodaten der Reihe nach gescannt werden (schrittweise
Bild). Chroma_formst kennzeichnet Daten zum Kennzeichnen des Farbdifferenz-Formats
der Videodaten. Horizontal_size_extension kennzeichnet Daten der oberen
zwei Bits, die dem horizontal_size-Wert des Sequenz Headers hinzuaddiert
werden. Vertical_size_extension kennzeichnet Daten der oberen zwei
Bits, die dem vertical_size_value des Sequenz-Headers hinzuaddiert
werden.
-
Bit_rate_extension
kennzeichnet Daten der höheren
12 Bits, die dem bit_rate_value des Sequenz-Header hinzuaddiert
werden. Marker_bit kennzeichnet die Bitdaten, die eingesetzt werden, um
Startcodeemulation zu verhindern. Vbv_buffer_size_extension kennzeichnet
Daten der höheren
8 Bits, die dem vbv_buufer_size_value des Sequenz-Headers hinzugefügt werden.
Low_delay kennzeichnet Daten, die kennzeichnen, dass kein B-Bild
enthalten ist. Frame_rate_extension_n kennzeichnet Daten zum Erhalten
der Rahmenrate in Verbindung mit frame_rate_code des Sequenz-Headers. Frame_rate_extension_d
kennzeichnet Daten zum Erhalten der Rahmenrate in Verbindung mit frame_rate_code
des Sequenz-Headers.
-
6 zeigt
die Daten-Struktur des GOP_header. Die Daten-Elemente, die GOP_header bilden,
umfassen group_start_code, time_code, closed_gop und broken_link.
-
Group_start_code
kennzeichnet Daten, die die Startcodesynchronisation der GOP-Schicht kennzeichnen.
Time_code kennzeichnet einen Zeitcode, der die Zeit des führenden
Bildes des GOP kennzeichnet. Closed_gop kennzeichnet ein Flag, das kennzeichnet,
dass die Bilden innerhalb des GOP von anderen GOPs unabhängig reproduziert
werden können.
Broken_link kennzeichnet ein Flag, das kennzeichnet, dass das führende B-Bild
im GOP nicht für
das Editieren oder dergleichen genau reproduziert werden kann.
-
7 zeigt
die Daten-Struktur von picture_header. Die Daten-Elemente, die auf picture_header
bezogen werden, umfassen picture_start_code, temporal_reference, picture_coding_type,
vbv_delay, full_pel_forward_vector, forward_f_code, full_pel_backwardvector
und backward_f_code.
-
Picture_start_code
kennzeichnet die Daten, die den Startsynchronisationscode der Bild-Schicht ausdrücken. Temporal_reference
kennzeichnet Daten der Nummer, die die Anzeigereihenfolge der Bilder
kennzeichnet und die am führenden
Teil des GOP rückgesetzt
wird. Picture_coding_type kennzeichnet Daten, die den Bild-Typ kennzeichnen.
Vbv_delay kennzeichnet Daten, die den Ausgangszustand eines virtuellen
Puffers zu der Zeit des zufälligen
Zugriffs kennzeichnen. Full_pel_forward_vector, forward_f_code,
full_pel_backward_vector und backward_f_code sind festgelegte Daten,
die in MPEG2 nicht verwendet werden.
-
8 zeigt
die Daten-Struktur von picture_coding_extension. Picture_coding_extension
umfasst Daten-Elemente wie extension_start_code ein, extension_start_code_identifier,
f_code [0] [0], f_code [0] [1], 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, intra_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
kennzeichnet der Startcode, der den Anfang der Zusatzdaten der Bild-Schicht
kennzeichnet. Extension_start_code_identifier kennzeichnet ein Code,
der anzeigt, welche Zusatzdaten gesendet werden sollen. F_code [0]
[0] kennzeichnet Daten, welche die horizontale Bewegung der den
horizontalen Bewegungsvektorsuchbereich in Vorwärtsrichtung ausdrücken. F_code
[0] [1] kennzeichnet Daten, welche den vertikalen Bewegungsvektorsuchbereich in
Vorwärtsrichtung
ausdrücken.
F_code [1] [0] kennzeichnet Daten, welche den horizontalen Bewegungsvektorsuchbereich
in rückwärtige Richtung ausdrücken. F_code
[1] [1] kennzeichnet Daten, welche den vertikalen Bewegungsvektorsuchbereich
in rückwärtige Richtung
ausdrücken.
-
Intra_dc_precision
kennzeichnet Daten, welche die Präzision eines DCT-Koeffizienten
ausdrücken.
Durch ein Ausführen
der DCT auf die Matrix f, welche die Helligkeits- und Farbdifferenzignale der jeweiligen
Pixel im Block darstellt, wird eine 8×8 DCT-Koeffizientmatrix F erhalten. Der Koeffizient
an der oberen linken Ecke der Matrix F wird als DCT-Koeffizient
bezeichnet. Der DCT-Koeffizient ist ein Signal, das die durchschnittliche
Helligkeit und den durchschnittlichen Farbdifferenz innerhalb des
Blockes kennzeichnet. Picture_structure kennzeichnet Daten, die
kennzeichnen, ob die Bild-Struktur eine Rahmen-Struktur oder eine
Bereichsstruktur ist. Im Falle der Bereichsstruktur zeigen die Daten
von picture_structure auch an, ob es einen oberen Bereich oder einen
unteren Bereich handelt. Top_field_first kennzeichnet Daten, die
kennzeichnen, ob der erste Bereich ein oberer Bereich oder ein unterer
Bereich im Falle der Rahmen-Struktur ist. Frame_pred_frame_dct kennzeichnet
Daten, die kennzeichnen, dass eine Vorhersage der Rahmen-Modus DCT
nur für
den Rahmen-Modus
im Falle der Rahmen-Struktur gültig
ist. Concealment_motion_vectors kennzeichnet Daten, die kennzeichnen,
dass ein Bewegungsvektor für
das Verbergen eines Übertragungsfehlers
an einen Intra-Macroblock angehängt
wird.
-
Q_scale_type
kennzeichnet Daten, die kennzeichnen, ob eine lineare Quantelungskala
oder eine nichtlineare Quantelungsskala zu verwenden ist. Intra_vlc_format
kennzeichnet Daten, die kennzeichnen, ob oder nicht eine andere
zweidimensionale VLC (VLC = variable length coding = variable Längencodierung)
für den
Intra-Macroblock
zu verwenden ist. Alternate_scan kennzeichnet Daten, die die Auswahl
kennzeichnen, ob Zickzack-Abtastung oder alternierende Abtastung
verwendet werden soll. Repeat_first_field kennzeichnet Daten, die
in einem 2:3 Pull-Down verwendet werden. Chroms_420_type kennzeichnet
Daten, die den gleichen Wert wie das folgende progressive_frame
im Falle 4:2:0 Signalformat zeigen oder anderenfalls 0 anzeigen. Progressive_frame
Signalformat Daten, die kennzeichnen, ob das Bild der Reihe nach
gescannt wird oder ein verschachtelter Bereich ist. Composite_display_flag kennzeichnet
Signalformat-Daten, die kennzeichnen, ob das Ursprungssignal ein
zusammengesetztes Signal ist oder nicht. V_axis, field_sequence,
sub_carrier, burst_amplitude und sub_carrier_phase sind die verwendeten
Daten, wenn das Ursprungssignal ein zusammengesetztes Signal ist.
-
9 zeigt
die Daten-Struktur von picture_data. Die Daten-Elemente, die durch
die picture_data()-Funktion definiert werden sind die Daten-Elemente,
die durch die Schnitt()-Funktion definiert werden. Mindestens wird
ein Daten-Element, das durch die Schnitt()-Funktion definiert wird
im Bitstrom beschrieben.
-
Die
Schnitt()-Funktion wird durch Daten-Elemente wie slice_start_code,
quantiser_scale_code, intra_slice_flag, intra_slice, reserved_bits, extra_bit_slice
und extra_information_slice und die Macroblock()-Funktion definiert,
wie in 10 gezeigt.
-
Slice_start_code
kennzeichnet den Anfangscode, der den Anfang der Daten-Elemente
anzeigt, die durch die Schnitt()-Funktion definiert sind. Quantiser_scale_code
kennzeichnet die Daten, die die Quantisierungsschrittgröße für die Macroblocks festsetzt,
die auf der Teil-Schicht bestehen. Wenn quantiser_scale_code für jeden
Macroblock eingestellt wird, werden vorzugsweise die Daten des Macroblock_quantiser_scale_code
verwendet, die für
jeden Macroblock eingestellt sind.
-
Intra_slice_flag
ist ein Flag der anzeigt, ob intra_slice und reserved_bits im Bitstrom
bestehen oder nicht. Intra_slice sind Daten, die kennzeichnen, ob
ein nicht-intra-Macroblock
in der Teil-Schicht besteht oder nicht. Wenn einer der Macroblocks
in der Teil-Schicht ein nicht-intra-Macroblock ist, hat intra_slice
einen Wert „0". Wenn alle Macroblocks
in der Teil-Schicht nicht-intra-Macroblocks sind, hat intra slice
einen Wert „1". Reserved_bits sind
Daten von sieben Bits, die einen Wert „0" haben. Extra_bit_slice ist ein Flag,
das das Bestehen der zusätzlichen
Information kennzeichnet. Wenn es von extra_information_slice gefolgt
wird, wird extra_bit_slice auf „1" eingestellt. Wenn es keine zusätzliche
Information gibt, wird extra_bit_slice auf „0" eingestellt.
-
Neben
diesen Daten-Elementen werden Daten-Elemente, die durch die Macroblock
() Funktion definiert werden, beschrieben. Die Macroblock () Funktion
ist eine Funktion für
das Beschreiben der Daten-Elemente wie Macroblock_escape, Macroblock_address_increment, quantiser_scale_code
und marker_bit, und für
das Beschreiben der Daten-Elemente, die durch die Macroblock_modes()
Funktion, die motion_vectors () Funktion und die coded_block_pattern
() Funktion definiert werden, wie in 11 gezeigt.
-
Macroblock_escape
ist ein festgelegter Bitstring, der kennzeichnet, ob die horizontale
Differenz zwischen einem Bezugsmacroblock und dem vorhergehenden
Macroblock nicht kleiner als 34 oder kleiner als 34 ist. Wenn der
horizontale Unterschied zwischen dem Bezugsmacroblock und dem vorhergehenden
Macroblock nicht kleiner als 34 ist, wird dem Wert von Macroblock_address_increment
33 hinzugefügt.
Macroblock_address_increment sind Daten, die den horizontalen Unterschied
zwischen dem Bezugsmacroblock und dem vorhergehenden Macroblock
kennzeichnen. Wenn ein Macroblock_escape vor Macroblock_address_increment
besteht, ist der Wert, der durch Hinzufügen von 33 zum Wert von Macroblock_address_increment
erhalten wird, die Daten, die den tatsächlichen horizontalen Unterschied
zwischen dem Bezugsmacroblock und dem vorhergehenden Macroblock
kennzeichnen.
-
Quantiser_scale_code
sind Daten, die die Quantelungs-Schrittgröße, die für jeden Macroblock eingestellt
wird, kennzeichnet und nur besteht, wenn Macroblock_quant „1" ist. Für jede Teil
-Schicht wird slice_quantiser_scale_code eingestellt, der die Quantelungs-Schrittgröße der Teil-Schicht
kennzeichnet. Jedoch wenn scale_code für den Bezugsmacroblock eingestellt
wird, wird diese Quantelungs-Schrittgröße ausgewählt.
-
Neben
Macroblock_address_increment werden die Daten-Elemente beschrieben,
die durch die Macroblock_modes () Funktion beschrieben werden. Wie
in 12 gezeigt, ist die Macroblock_modes () Funktion
eine Funktion für
das Beschreiben der Daten-Elemente
wie Macroblock_type, frame_motion_type, field_motion_type und dct_type. Macroblock_type
sind Daten, die den Kodierungs-Typ des Macroblocks kennzeichnen.
-
Wenn
Macroblock_motion_forward oder Macroblock_motion_backward „1" ist, ist die Bildstruktur
eine Rahmen-Struktur, und frame_pred_frame_dct ist „0", ein Daten-Element, das frame_motion_type
ausdrückt,
wird neben dem Daten-Element beschrieben, das Macroblock_type ausdrückt. Dieses
frame_pred_frame_dct ist ein Flag das kennzeichnet, ob ein frame_motion_type
im Bitstrom besteht oder nicht.
-
Frame_motion_type
ist ein Zwei-Bit-Code, der den Vorhersage-Typ der Macroblocks im
Rahmen kennzeichnet. Für
einen bereichsbasierten Vorhersage-Typ, der zwei Vorhersagevektoren
hat, ist frame_motion_type „00". Für einen
bereichsbasierten Vorhersage-Typ, der einen Vorhersagevektor hat, ist
frame_motion_type „01". Für einen
Rahmen-basierten Vorhersage-Typ, der einen Vorhersagevektor hat,
ist frame_motion_type „10". Für einen
doppelten Hauptvorhersage-Typ, der einen Vorhersagevektor hat, ist
frame_motion_type „11".
-
Field_motion_type
ist ein Zwei-Bit-Code, der die Bewegungsvorhersage der Macroblocks
in dem Bereich kennzeichnet. Für
einen bereichsbasierten Vorhersage-Typ, der einen Vorhersagevektor hat,
ist field_motion_type „01". Für einen
18×8 Macroblock-basierten
Vorhersage-Typ, der zwei Vorhersagevektoren hat, ist field_motion_type „10". Für einen doppelten
Hauptvorhersage-Typ, der einen Vorhersagevektor hat, ist field_motion_type „11".
-
Wenn
die Bild-Struktur eine Rahmen-Struktur ist, zeigt frame_pred_frame_dct
an, dass frame_motion_type in dem Bitstrom besteht und frame_pred_frame_dct
zeigt an, dass dct_type im Bitstrom besteht; ein Daten-Element,
das dct_type ausdrückt,
wird nahe bei dem Daten-Element beschrieben, das Macroblock_type
ausdrückt.
Dct_type sind Daten, die kennzeichnen, ob DCT ein Rahmen-DCT-Modus
oder ein Feld-DCT-Modus
ist.
-
In
dem MPEG2-Strom werden die Daten-Elemente, die oben beschrieben
werden, durch spezielle Bit-Muster begonnen, die Startcodes genannt
werden. Unter anderen Umständen
sind diese Startcodes spezifizierte Bitmuster, die nicht im Bitstrom
erscheinen. Jeder Startcode wird durch ein Startcodepräfix und
einen darauf folgenden Startcode-Wert festgesetzt. Der Startcodepräfix ist
eine Bitkette „0000
0000 0000 0000 0000 0001".
Der Startcode-Wert ist eine acht-Bit Ganzzahl, die den Typ des Startcodes
kennzeichnet.
-
13 zeigt
den Wert jedes Startcodes von MPEG2. Viele Startcodes werden durch
einen Startcode-Wert dargestellt. Jedoch wird slice start code durch
eine Mehrzahl von Startcode-Werten 01 zu AF dargestellt. Diese Startcode-Werte
drücken
die vertikale Position in Bezug auf den Teil aus. Alle diese Startcodes
werden so justiert, dass sie Byte-basiert sind, indem man eine Mehrzahl
von Bits „1" vor dem Startcodepräfix einsetzt,
dass das erste Bit des Startcodepräfixes das erste Bit des Bytes
wird.
-
14 ist
ein Blockdiagramm, welches die Schaltkreis-Struktur eines MPEG Videodecoders zeigt,
der zum herkömmlichen
MP@ML konform ist.
-
Der
MPEG-Videodecoder umfasst die folgenden Komponenten-Elemente: einen
IC (IC = integrated circuit = integrierten Schaltkreis) 1,
der einen Strom-Eingangsschaltkreis 11,
einen Puffer-Steuerungsschaltkreis 12, einen Taktgeber-Schaltkreis 13, einen
Startcode-Detektionsschaltkreis 14, einen Decoder 15,
einen Bewegungs-Ausgleichs-Schaltkreis 16 und einen Anzeigen-Ausgangs-Schaltkreis 17 umfasst;
und einen Puffer 2, der einen Strom-Puffer 21 und einen
Video-Puffer 22 aufweist und aus z.B. einem DRAM (dynamischen
Arbeitsspeicher) gebildet ist.
-
Der
Strom-Eingangs-Schaltkreis 11 des IC 1 empfangt
eine Eingabe eines hocheffizient-codierten Stromes und liefert den
kodierten Strom an den Puffer-Steuerungs-Schaltkreis 12.
Der Puffer-Steuerungs-Schaltkreises 12 leitet den eingegebenen
kodierten Strom zum Strom-Puffer 21 des Puffers 2 entsprechend
einem Basis-Taktgeber, der vom taktgebenden Schaltkreis 13 erzeugt
wird. Der Strom-Puffer 21 hat eine Kapazität von 1.835.008
Bits, welches eine VBV Puffergröße ist,
die für
die MP@ML-Decodierung erforderlich ist. Der kodierte Strom, der
im Strom-Puffer 21 gespeichert wird, wird sequentiell von
den ersten eingeschriebenen Daten unter der Steuerung des Puffer-Steuerungs-Schaltkreises 12 ausgelesen
und wird an den Startcode-Detektionsschaltkreis 14 geliefert.
Der Startcode-Dektektionsschaltkreis 14 ermittelt einen
Startcode, wie mit Bezug auf 13 vom
eingegebenen Strom beschrieben wird und gibt den ermittelten Startcode
und den eingegebenen Strom an den Decoder 15 aus.
-
Der
Decoder 15 decodiert den eingegebenen Strom auf der Grundlage
einer MPEG Syntax. Zuerst decodiert der Decoder 15 einen
Headerparameter einer Bild-Schicht in Übereinstimmung mit dem eingegebenen
Startcode, dann teilt er eine Schnitt-Schicht in Macroblocks auf
der Grundlage von den decodierten Headerparametern, decodiert dann
die Macroblocks, und gibt den sich ergebenden Vorhersagevektor und
-Pixel an den Bewegungs-Ausgleichs-Schaltkreis 16 aus.
-
In Übereinstimmung
mit MPEG wird die Kodierungs-Leistungsfähigkeit durch das Erreichen
des bewegungskompensierten Unterschiedes zwischen angrenzenden Bildern
durch Verwendung der zeitlichen Redundanz der Bilder verbessert.
Im MPEG Videodecoder werden, in Bezug auf pixelverwendenden Bewegungsausgleich,
Pixeldaten eines Bezugsbildes durch den Bewegungsvektor eines laufend
decodierten Pixels hinzugefügt,
um den Bewegungsausgleich durchzuführen und die Daten zu den Bilddaten
vor Kodierung zu decodieren.
-
Wenn
die Macroblocks, die vom Decoder 15 ausgegeben sind, nicht
den Bewegungsausgleich benutzen, schreibt der Bewegungs-Ausgleichs-Schaltkreis 16 die
Pixeldaten zum Video-Puffer 22 des Puffers 2 über den
Puffer-Steuerungs-Schaltkreis 12, die er so für den Anzeige-Ausgang
aufbereitet und die er auch für
den Fall aufbereitet, dass die Pixeldaten als Bezugsdaten für ein anderes
Bild verwendet werden.
-
Wenn
die Macroblocks, die vom Decoder 15 ausgegeben werden,
den Bewegungsausgleich benutzen, liest der Bewegungs-Ausgleichs-Schaltkreis 16 die
Bezugspixeldaten vom Videopuffer 22 des Puffers 2 über den
Puffer-Steuerungs-Schaltkreis 12 aus,
in Übereinstimmung
mit einem Vorhersagevektor, der vom Decoder 15 ausgegeben
wird. Dann fügt der
Bewegungs-Ausgleichs-Schaltkreis 16 die Anzeigebezugspixeldaten
den Pixeldaten hinzu, die vom Decoder 15 geliefert werden
und führt
so den Bewegungsausgleich durch. Der Bewegungs-Ausgleichs-Schaltkreis 16 schreibt
die bewegungs-kompensierten Pixeldaten auf den Videopuffer 22 des Puffers
2 über
den Puffer-Steuerungs-Schaltkreis 12, um sie so für die Anzeigen-Ausgabe vorzubereiten und
auch für
den Fall vorzubereiten, in dem die Pixeldaten als Bezugsdaten für ein anderes
Bild verwendet werden.
-
Der
Anzeigen-Ausgangs-Schaltkreis 17 erzeugt ein synchrones
taktgebendes Signal für
das Ausgeben der decodierten Bilddaten, liest dann die Pixeldaten
vom Videopuffer 22 über
den Puffer-Steuerungs-Schaltkreis 12 auf Basis dieses Takts
aus und gibt ein decodiertes Videosignal aus.
-
Wie
oben beschrieben, hat der MPEG2-Strom eine hierarchische Struktur.
Die Datenquantität
der Daten des sequence_header zum picture_coding_extension der Bild-Schicht,
die mit Bezug auf 2 beschrieben ist, wird nicht
sehr viel geändert,
selbst wenn das Profil und der Level, der mit Bezug auf 1 beschrieben
wird, verändert werden.
Andererseits hängen
die Datenquantitäten der
Datenschicht und der folgenden Schichtenschnitte von der Zahl der
zu kodierenden Pixel ab.
-
Bezug
nehmend auf 1 ist die Zahl der Macroblocks
die in ein Bild in HL verarbeitet werden ungefähr sechsmal so groß als in
ML. Vielmehr wird mit Bezug auf 3B die
Anzahl der Blöcke,
die in einen Macroblock im 4:2:2P Format verarbeitet werden 4/3
so viel als in MP.
-
Das
heißt,
wenn ein kodierter Strom von 4:2:2P@HL durch den Videodecoder konform
zu MP@ML decodiert werden soll, der entsprechend 14 beschrieben wird,
wird die Puffergröße des Strom-Puffers 21 wegen
der Zunahme der VBV-Puffergröße und der
Zahl der Pixel unzureichend. Außerdem
kann die Steuerung durch den Puffer-Steuerungs-Schaltkreis 12 wegen
der Zunahme der Übertragungsgeschwindigkeit
nicht mit der Zunahme der Anzahl von Zugriffen des Eingangstromes
zum Strom-Puffer 21, und die Zunahme der Anzahl von Zugriffen
zum Videopuffer 22 durch den Bewegungs-Ausgleichs-Schaltkreis 16 nicht
wegen der Zunahme der Anzahl an Pixel mithalten. Außerdem kann
die Verarbeitung durch den Decoder 15 nicht mit der Zunahme
der Übertragungsgeschwindigkeit und
der Zunahme der Anzahl an Macroblocks und Blöcken mithalten.
-
Der
neueste Fortschritt in der Halbleitertechnik hat die Arbeitsgeschwindigkeit
sowohl der Signalverarbeitungs-Schaltkreise als auch der Schaltkreise des
Informationsspeichers (Puffer) erheblich verbessert. Jedoch wurde
in der gegenwärtigen
MP@ML Decodierungstechnik, die Decodierung von 4:2:2P@HL noch nicht
erzielt. Im Allgemeinen erhöht eine
solche Hochgeschwindigkeits-Signalverarbeitung
die Schaltkreisgröße sehr
und führt
zu einer Zunahme der Anzahl von Komponenten-Teilen und einer Zunahme
an Leistungsverbrauch.
-
Die
US 5,532,744 offenbart Techniken
zum Decodieren eines hierarchisch codierten Videosignal-Bitstroms,
der eine Anzahl von individuellen Decoder-Modulen einsetzt, die
parallel geschaltet sind. Vor einem Decodieren wird ein Bitstrom
initial analysiert und die Teile zwischen den Decoder-Modulen aufgeteilt.
Ein Schnitt-Parser teilt die Teile zu jedem Decoder-Module zu. Die
separaten Daten-Ströme von
jedem der Decoder-Module werden dann einem Rahmen-Puffer zugeführt.
-
Die
US 5,557,332 offenbart eine
Technik zum Decodieren eines digitalen Videosignals, welches eine
Parallelverarbeitung verwendet. Rahmen des Videosignals werden in
Teile geteilt, welche aus einer Sequenz von Markoblöcken bestehen.
Ein Demultiplexer sammelt vorherbestimmte Teile an einem Code-Puffer,
der mit einem Decodier-Schaltkreis verbunden ist. Die Anzahl der
Makroblöcke
in jedem Teil ist fest vorgegeben, so dass es für keinen der Decoder nötig sein
wird zu warten, da eine Ergebnis-Dekodierung, die durch den Decoder
durchgeführt
wird, synchronisiert wird. In dieser Weise gibt jeder Decoder simultan
genau die Blöcke
von Teilen aus, die dorthin weitergegeben wurden.
-
Offenbarung der Erfindung
-
Angesichts
des vorstehenden Standes der Technik ist es Gegenstand der vorliegenden
Erfindung, die Realisierung eines Videodecoders zu ermöglichen,
der zu 4:2:2P@HL konform ist, das in Realzeit mit einer praktikablen
Schaltkreisgröße arbeiten
kann, indem es die neueste Halbleitertechnik verwendet.
-
Eine
Decodierungs-Vorrichtung gemäß der vorliegenden
Erfindung ist in Anspruch 1 beansprucht.
-
Die
Decodierungs-Vorrichtung kann weiterhin ein erstes Puffer-Mittel
zum Abpuffern des kodierten Stromes, ein Lese-Mittel zum Auslesen
eines Startcodes, der den Anfang einer vorbestimmten Informationsmaßeinheit
kennzeichnet, die im kodierten Strom vom kodierten Strom umfasst
ist und die Position-Information ausliest, die sich auf die Stelle
bezieht, wo der Startcode zur ersten Puffereinrichtung gehalten
wird, ein zweites Puffer-Mittel zum Abpuffern des Startcodes und
zum Auslesen der Positions-Information
durch das Lese-Mittel und eine abpuffernde Steuerungs-Vorrichtung
für das
Steuern des Pufferns des kodierten Stromes durch das erste Puffer-Mittel
und das Puffer des Startcodes und der Position-Information durch
das zweite Puffer-Mittel umfassen.
-
Der
kodierte Strom kann ein MPEG2-kodierter Strom sein, der durch ISO/IEC
13818-2 und die ITU-T
Empfehlungen H.262 vorgeschrieben ist.
-
Die
Decodierungs-Vorrichtung kann weiterhin umfassen: Auswähl-Mittel
zum Auswählen
von des Startcodes und der Positionsinformation durch das zweite
Halte-Mittel, Auswählmittel
zum Auswählen
von vorbestimmten Bilddaten aus der Mehrzahl an Bilddaten, die durch
die Mehrzahl der Decodierungs-Mittel decodiert und ausgegeben wurden,
Bewegungs-Ausgleichs-Mittel zum Empfangen der Eingabe der Bilddaten,
die durch die Auswahl-Mittel ausgewählt wurden und wenn nötig den
Bewegungsausgleich durchführen,
dritte Halte-Mittel zum Halten der durch die Auswahlmittel ausgewählten Bilddaten oder
den Bilddaten, an welchen die Bewegungs-Kompensation durch die Bewegungs-Kompensation-Mittel
ausgeführt
wird, zweite Halte-Kontroll-Mittel zum Steuern des Haltens, durch
das dritte Halte-Mittel,
von Bilddaten die durch das Auswahl-Mittel ausgewählt wurden
oder von Bilddaten, an denen eine Bewegungs-Kompensation durch das Bewegungs-Kompensations-Mittel
ausgeführt
wird, unabhängig
von dem ersten Halte-Steuer-Mittel.
-
Ein
Decodierungs-Verfahren entsprechend der vorliegenden Erfindung ist
in Anspruch 18 beansprucht.
-
Ein
Programm entsprechend der vorliegenden Erfindung, das in einem Speicher-Medium gespeichert
ist, ist in Anspruch 22 beansprucht.
-
Ein
Programm gemäß der vorliegenden
Erfindung wird in Anspruch 21 beansprucht.
-
In
der Decodierungs-Vorrichtung, dem Decodierungs-Verfahren und -Programm
wird ein kodierter Strom dekodiert und der Dekodierungs-Prozess wird
derart gesteuert damit es parallel ausgeführt werden kann.
-
In
Ausführungsbeispielen
wird ein kodierter Strom durch eine Mehrzahl von Teil-Decodern decodiert
und der Dekodierungs-Prozess wird durch eine Mehrzahl von Teil-Decodern parallel
ausgeführt.
-
In
Ausführungsbeispielen
wird ein quellencodierter Strom für jeden Teil dekodiert, der
ein Bild aus dem quellencodierten Strom bildet. Die Dekodierungs-Stati
der Mehrzahl von Teil-Decodern werden überwacht und die Mehrzahl von
Teil-Decodern wird gesteuert. Die Teile werden so der Mehrzahl von Teil-Decodern
zugewiesen, dass die schnellste Ausführung des Dekodierungs-Prozesses
erreicht wird, die durch die Teil-Decoder ausgeführt werden, ohne Rücksicht
auf die Reihenfolge der Teile, die in dem Bild enthalten sind.
-
In
Ausführungsbeispielen
wird der quellencodierte Strom für
jeden Teil dekodiert, der ein Bild aus dem quellencodierten Strom
bildet. Die Dekodierungs-Stati der Mehrzahl von Teil-Decodern werden überwacht
und die Mehrzahl der Teil-Decoder wird gesteuert. Der Teil, der
dekodiert wird, wird dem Teil-Decoder aus der Mehrzahl von Teil-Decodern
zugewiesen, der die Dekodierung beendete, ohne Rücksicht auf die Reihenfolge
der Teile, die in dem Bild enthalten sind.
-
Kurze Beschreibung der Zeichnungen
-
1 veranschaulicht
obere Begrenzungswerte von Parametern, die auf dem Profil und dem Level
in MPEG2 basieren.
-
2 veranschaulicht
die hierarchische Struktur eines MPEG-Bit-Stromes.
-
3A und 3B veranschaulichen
eine Macroblock Schicht.
-
4 veranschaulicht
die Daten-Struktur von sequence_header.
-
5 veranschaulicht
die Daten-Struktur von sequence_extension.
-
6 veranschaulicht
die Daten-Struktur von GOP_header.
-
7 veranschaulicht
die Daten-Struktur von picture_header.
-
8 veranschaulicht
die Daten-Struktur von picture_coding_extension.
-
9 veranschaulicht
die Daten-Struktur von picture_data.
-
10 veranschaulicht
die Daten-Struktur eines Teils.
-
11 veranschaulicht
die Daten-Struktur eines Macroblock.
-
12 veranschaulicht
die Daten-Struktur von Macroblock modes.
-
13 veranschaulicht
Startcodes.
-
14 kennzeichnet
ein Blockdiagramm, welches die Struktur eines Videodecoders für die Decodierung
eines kodierten Stromes herkömmlicher MP@ML
zeigt.
-
15 kennzeichnet
ein Blockdiagramm, welches die Struktur eines Bildschirmdecoders
gemäß der vorliegenden
Erfindung zeigt.
-
16 kennzeichnet
ein Flussdiagramm zum Erklären
der Verarbeitung durch einen Teildecoder-Steuerungs-Schaltkreis.
-
17 veranschaulicht
ein spezifisches Beispiel der Verarbeitung durch einen Teildecoder-Steuerungs-Schaltkreis.
-
18 kennzeichnet
ein Flussdiagramm, das die Entscheidungsverarbeitung von Teildecodern durch
einen Bewegungs-Ausgleichs-Schaltkreis erklärt.
-
19 veranschaulicht
ein spezifisches Beispiel der Entscheidungsverarbeitung von Teildecodern
durch einen Bewegungs-Ausgleichs-Schaltkreis.
-
20 kennzeichnet
ein Blockdiagramm, das die Struktur eines Wiedergabegeräts zeigt,
das den MPEG Videodecoder von 15 hat.
-
21 zeigt
die Bildsstruktur eines MPEG-Video-Signals, das in einen Codierer
eingegebenen und dann kodiert wird.
-
22 zeigt
ein Beispiel einer MPEG-Bild-Kodierung, die eine Zwischenrahmenvorhersage
verwendet.
-
23 veranschaulicht
die Decodierungsverarbeitung für
den Fall, in dem ein MPEG-kodierter Strom
in Vorwärtsrichtung
reproduziert wird.
-
24 veranschaulicht
die Decodierungsverarbeitung in dem Fall, in dem ein MPEG-kodierter Strom in
Rückwärtsrichtung
reproduziert wird.
-
Bester Modus für das Durchführen der
Erfindung
-
Ein
bevorzugtes Ausführungsbeispiel
der vorliegenden Erfindung wird jetzt mit Bezug auf die Zeichnungen
beschrieben.
-
15 kennzeichnet
ein Blockdiagramm, welches die Schaltkreis-Struktur eines MPEG Videodecoders
gemäß der vorliegenden
Erfindung zeigt.
-
Der
MPEG-Videodecoder von 15 umfasst die folgenden Aufbau-Elemente:
einen IC 31, gebildet durch einen Strom-Eingangs-Schaltkreis 41, einen
Startcode-Erkennungs-Schaltkreis 42,
einen Strom-Puffer-Steuerungs-Schaltkreis 43, einen Takterzeugungs-Schaltkreis 44,
einen Bild-Decoder 45, einen Teil-Decodier-Steuerungs-Schaltkreis 46,
Teildecoder 47 bis 49, einen Bewegungs-Ausgleichs-Schaltkreis 50,
einen Helligkeits-Puffer-Steuerungs-Schaltkreis 51, einen
Farbdifferenz-Puffer-Steuerungs-Schaltkreis 52 und einen
Anzeigen-Ausgangs-Schaltkreis 53;
einen Puffer 32, gebildet durch einen Strom-Puffer 61 und
einen Startcode-Puffer 62 und gebildet aus z.B. einem DRAM; einem
Videopuffer 33, gebildet durch einen Helligkeits-Puffer 71 und
einen Farbdifferenz-Puffer 72 und gebildet aus z.B. einem
DRAM; einen Controller 34; und einen Antrieb 35.
-
Der
Strom-Eingangs-Schaltkreis 41 empfangt die Eingabe eines
hoch-effizient kodierten Stromes und stellt den kodierten Strom
dem Startcode-Erkennungs-Schaltkreis 42 zur
Verfügung.
Der Startcode-Erkennungs-Schaltkreis 42 liefert den eingegebenen
kodierten Strom an den Strom-Puffer-Steuerungs-Schaltkreis 43.
Der Startcode-Erkennungs-Schaltkreis 42 ermittelt auch
einen Startcode, wie mit Bezug auf 13 beschrieben,
erzeugt dann eine Startcode-Information einschließlich des
Typs des Startcodes und einen Schreibpointer, welcher die Position
anzeigt, in der der Startcode auf den Strom-Puffer 61 auf
Grundlage von dem ermittelten Startcode geschrieben wird, und liefert
die Startcode-Information an den Strom-Puffer-Steuerungs-Schaltkreis 43.
-
Der
Taktgeberschaltkreis 44 erzeugt einen Basistakt, der zweimal
so groß wie
der des Taktgeberschaltkreises 13 ist, der mit Bezug auf 14 beschrieben
wird, und liefert den Basistakt an den Strom-Puffer-Steuerungs-Schaltkreis 43.
Der Strom-Puffer-Steuerungs-Schaltkreis 43 schreibt
den eingegebenen kodierten Strom zum Strom-Puffer 61 des Puffers 32 und
schreibt die eingegebene Startcode-Information in den Startcode-Puffer 62 des
Puffers 32 entsprechend dem Basistakt, der vom Taktgeberschaltkreis 44 erzeugt
wird.
-
In
dem Fall, in dem der MPEG-Videodecoder einen MPEG kodierten Strom
von 4:2:2P@HL in Vorwärtsrichtung
reproduzieren kann, hat der Strom-Puffer 61 mindestens
eine Kapazität
von 47.185.920 Bits, welches eine VBV-Puffergröße ist, die für die Decodierung
von 4:2:2P@HL gefordert wird. In dem Fall, in dem der MPEG-Videodecoder Rückwärts-Wiedergabe
durchführen
kann, hat der Strom-Puffer 61 mindestens eine Kapazität zum Aufzeichnen
von Daten von zwei GOPs.
-
Der
Bilddecoder 45 liest die Startcode-Information vom Startcode-Puffer 62 über den
Strom-Puffer-Steuerungs-Schaltkreis 43 aus. Wenn beispielsweise
die Decodierung gestartet ist, da sie mit sequence_header startet,
welches mit Bezug auf 2 beschrieben wird, liest der
Bilddecoder 45 einen Schreibpointer aus, der dem sequence_header code
entspricht, welches der Startcode ist, der mit Bezug auf 4 beschrieben
wird, vom Startcode-Puffer 62 und liest sequence_header
aus und decodiert es vom Strom-Puffer 61 auf der Grundlage des
Schreibpointers. Darauf folgend liest der Bilddecoder 45 sequence_extension,
GOP_header, picture_coding_extension und dergleichen vom Strom-Puffer 61 aus
und decodiert es, ähnlich
dem Lesen von sequence_header.
-
An
dem Punkt, an dem der Bilddecoder 45 den ersten slice start
code vom Startcode-Puffer 62 ausliest,
sind alle notwendigen Parameter für die Decodierung des Bildes
zur Verfügung
gestellt. Der Bilddecoder 45 decodiert die Parameter der
decodierten Bild-Schicht
zum Teil-Decoder-Steuerungs-Schaltkreis 46.
-
Der
Teil-Decoder-Steuerungs-Schaltkreis 46 empfangt die Eingabe
der Parameter der Bild-Schicht und liest die Startcode-Information
des entsprechenden Teils vom Startcode-Puffer 62 über den
Strom-Puffer-Steuerungs-Schaltkreis 43 aus. Der Teil-Decoder-Steuerungs-Schaltkreis 46 umfasst auch
ein Register, welches die Ordnungszahl eines Teils im kodierten
Strom umfasst, welcher durch einen der Teildecoder 47 bis 49 decodiert
werden soll, und liefert die Parameter der Bild-Schicht und des Schreibpointers
des Teils, welche in der Startcode-Information enthalten war, an
einen der Teildecoder 47 bis 49. Die Verarbeitung,
in der der Teildecoder-Steuerungs-Schaltkreis 46 einen
Teildecoder auswählt, um
die Decodierung in den Teildecodern 47 bis 49 durchzuführen, wird
später
mit Bezug auf 16 und 17 beschrieben.
-
Der
Teildecoder 47 wird durch einen Macroblock-Erkennenden-Schaltkreis 81,
einen Vektor-Decodierenden-Schaltkreis 82, einen Entquantelungs-Schaltkreis 83 und
einen inversen DCT-Schaltkreis 84 gebildet. Der Teildecoder 47 liest
den entsprechenden Teil vom Strom-Puffer 61 über den Strom-Puffer-Steuerungs-Schaltkreis 43 auf
der Grundlage des Schreibpointers des Teils aus, der vom Teildecoder-Steuerungs- Schaltkreis 46 eingegeben
wird. Dann decodiert der Teildecoder 47 den Auslese-Teil
entsprechend den Parametern der Bild-Schicht, die vom Teildecoder-Steuerungs-Schaltkreis 46 eingegeben
werden und gibt die decodierten Daten an den Bewegungs-Ausgleichs-Schaltkreis 50 aus.
-
Der
Macroblock-Ermittlungs-Schaltkreis 81 trennt Macroblöcke der
Teil-Schicht, decodiert den Parameter jedes Macroblocks, liefert
den mit variabler Länge
kodierte Vorhersage-Modus und den Vorhersagevektor eines jeden Macroblocks
an den Vektor-Decodierungs-Schaltkreis 82 und liefert mit
variabler Länge
kodierte Koeffizienz-Daten an den Dequantelungs-Schaltkreis 83.
Der Vektor-Decodierungs-Schaltkreis 82 decodiert
den mit variabler Länge
kodierten Vorhersage-Modus und den Vorhersagevektor jedes Macroblocks
und stellt so den Vorhersagevektor wieder her. Der Entquantelungs-Schaltkreis 83 decodiert
die mit variabler Länge
kodierten Koeffizienten-Daten und liefert die decodierten Koeffizienten-Daten
an den inversen DCT-Schaltkreis 84. Der inverse DCT-Schaltkreis 84 führt eine
inverse DCT auf den decodierten Koeffizienten-Daten durch und stellt
so die Original-Pixeldaten vor der Codierung wieder her.
-
Der
Teildecoder 47 fordert beim Bewegungs-Ausgleichs-Schaltkreis 50 an,
den Bewegungs-Ausgleich auf den decodierten Macroblock durchzuführen (das
heißt,
ein Signal, bezeichnet durch REQ in 15, auf
1 einzustellen). Der Teildecoder 47 empfangt ein Signal,
das die Annahme der Anforderung anzeigt, den Bewegungs-Ausgleich (das heißt, ein
Signal bezeichnet durch ACK in 15) vom
Bewegungs-Ausgleichs-Schaltkreis 50 durchzuführen und
liefert den decodierten Vorhersagevektor und die decodierten Pixel
zum Bewegungs-Ausgleichs-Schaltkreis 50. Nachdem Empfang
der Eingabe des ACK-Signals und dem Liefern des decodierten Vorhersagevektor
und der decodierten Pixel an den Bewegungs-Ausgleichs-Schaltkreis 50,
verändert
der Teildecoder 47 das REQ-Signal von 1 nach 0. Dann, an
dem Punkt, wenn die Decodierung des folgenden eingegebenen Macroblocks
endet, verändert
der Teildecoders 47 das REQ-Signal von 0 nach 1.
-
Schaltkreise
eines Macroblock-Erkennungs-Schaltkreises 85 zu einem inversen DCT-Schaltkreis 88 des
Teildecoders 48 und Schaltkreise von einem Macroblock-Erkennungs-Schaltkreis 89 zu
einem inversen DCT-Schaltkreis 92 des Teildecoders 49 führen die
Verarbeitung ähnlich
zu der Verarbeitung aus, die durch die Schaltkreise vom Macroblock-Erkennungs-Schaltkreis 81 zum
inversen DCT-Schaltkreis 84 des Teildecoders 47 durchgeführt wird
und wird daher nicht weiter im Detail beschrieben.
-
Der
Bewegungs-Ausgleichs-Schaltkreis 50 hat drei Register Reg_REQ_A,
Reg_REQ_B und Reg_REQ_C welche anzeigen ob der Bewegungs-Ausgleich
der Daten, die von den Teildecodern 47 bis 49 eingegeben
wurden, beendet ist oder nicht. Der Bewegungs-Ausgleichs- Schaltkreis 50 wählt einen
geeigneten Teildecoder 47 bis 49 mit Bezug auf
die Werte dieser Register, empfangt dann einen Bewegungs-Ausgleichs-Durchführungs-Auftrag (das
heißt,
gibt ein ACK-Signal zu einem REQ-Signal aus
und empfängt
die Eingabe eines Vorhersagevektors und eines Pixels) und führt die
Bewegungs-Ausgleichs-Verarbeitung durch. In diesem Fall, nachdem der
Bewegungs-Ausgleich für
irgendeinen der Teildecoder 47 bis 49, der ein
REQ-Signal von 1 an einem vorbestimmten Zeitpunkt aufweist, einmal
für jeden der
Teildecoder 47 bis 49 endet, empfangt der Bewegungs-Ausgleichs-Schaltkreis 50 den
nächstfolgenden
Auftrag zum Bewegungs-Ausgleich. Zum Beispiel selbst wenn der Teildecoder 47 aufeinanderfolgend
Bewegungs-Ausgleichs-Aufträge
herausgibt, kann der Bewegungs-Ausgleichs-Schaltkreis 50 nicht
den zweiten Bewegungs-Ausgleichs-Auftrag vom
Teildecoder 47 annehmen, bis der Bewegungs-Ausgleich für den Teildecoder 48 und
den Teildecoder 49 endet. Der Prozess, in welchem der Bewegungs-Ausgleichs-Schaltkreis 50 einen
der Teildecoder 47 bis 49 auswählt, um einen Bewegungs-Ausgleiches
auf der Ausgabe des vorgewählten
Teildecoders durchzuführen,
wird später
mit Bezug auf 18 und 19 beschrieben.
-
Wenn
der Macroblock, der von einem der Teildecoder 47 bis 49 eingegeben
wird, nicht den Bewegungs-Ausgleich verwendet, falls die Pixeldaten Helligkeitsdaten
sind, schreibt der Bewegungs-Ausgleichs-Schaltkreis 50 die
Pixeldaten in den Helligkeits-Puffer 71 des
Video-Puffers 33 über
den Helligkeits-Puffer-Steuerungs-Schaltkreis 51 ein und
wenn die Pixeldaten Farbdifferenz-Daten sind, schreibt der Bewegungs-Ausgleichs-Schaltkreis 50 die
Pixeldaten in den Farbdifferenz-Puffer 72 des Video-Puffers 33 über den
Farbdifferenz-Puffer-Steuerungs-Schaltkreis 52 ein. So
bereitet sich der Bewegungs-Ausgleichs-Schaltkreis 50 zur
Anzeigeausgabe vor und bereitet sich auch für den Fall vor, in dem die
Pixeldaten als Referenzdaten für
ein anderes Bild verwendet werden.
-
Wenn
der Macroblock, der von einem der Teildecoder 47 bis 49 ausgegeben
wird, den Bewegungs-Ausgleich benutzt, wenn die Pixeldaten Helligkeitsdaten
sind, liest der Bewegungs-Ausgleichs-Schaltkreis 50 ein
Bezugs-Pixel vom Helligkeits-Puffer 71 über den Helligkeits-Puffer-Steuerungs-Schaltkreis 51 in Übereinstimmung
mit dem Vorhersagevektor ein, der von dem entsprechenden der Teildecoder 47 bis 49 eingegeben
wird, und wenn die Pixeldaten Farbdifferenz-Daten sind, liest der
Bewegungs-Ausgleichs-Schaltkreis 50 die Bezugspixeldaten
vom Farbdifferenz-Puffer 72 über den Farbdifferenz-Puffer-Steuerungs-Schaltkreis 52 ein.
Dann fügt
der Bewegungs-Ausgleichs-Schaltkreis 50 die ausgelesenen
Referenz-Pixel-Daten den Pixeldaten hinzu, die von dem entsprechen
der Teildecoder 47 bis 49 geliefert werden und
führt so
den Bewegungs-Ausgleich durch.
-
Wenn
die Pixeldaten Helligkeitsdaten sind, schreibt der Bewegungs-Ausgleichs-Schaltkreis 50 die
Pixeldaten, an denen ein Bewegungs-Ausgleich durchgeführt wird,
in den Helligkeits-Puffer 71 über den Helligkeits-Puffer-Steuerungs-Schaltkreis 51 ein. Wenn
die Pixeldaten Farbdifferenz-Daten sind, schreibt der Bewegungs-Ausgleichs-Schaltkreis 50 die
Pixeldaten, an denen Bewegungs-Ausgleich durchgeführt wird,
in den Farbdifferenz-Puffer 72 über den Farbdifferenz-Puffer-Steuerungs-Schaltkreis 52 ein.
So bereitet sich der Bewegungs-Ausgleichs-Schaltkreis 50 für die Anzeigeausgabe
vor und bereitet auch sich für
den Fall vor, in dem die Pixeldaten als Bezugsdaten für ein anderes
Bild verwendet werden.
-
Der
Anzeigen-Ausgabe-Schaltkreis 53 erzeugt ein synchrones
Takt-Signal zum Ausgeben der decodierten Bild-Daten, liest dann
die Helligkeitsdaten vom Helligkeits-Puffer 71 über den Helligkeits-Puffer-Steuerungs-Schaltkreis 51 aus
und liest die Farbdifferenz-Daten vom Farbdifferenz-Puffer 72 über den
Farbdifferenz-Puffer-Steuerungs-Schaltkreis 52 in Übereinstimmung
mit der Taktung aus. Die Anzeigen-Ausgabe-Schaltkreis 52 gibt
folglich die Daten als decodiertes Videosignal aus.
-
Das
Laufwerk 35 ist mit der Steuereinheit 34 verbunden,
und falls nötig,
führt das
Laufwerk 35 die Übertragung
und die Annahme von Daten zu und von einer magnetischen Scheibe 101,
einer optischen Scheibe 102, einer magnet-optischen Scheibe 103 und
einem Halbleiterspeicher 104 durch, welche hierauf geladen
werden. Die Steuereinheit 34 steuert den Betrieb des oben
beschriebenen ICs 31 und des Laufwerks 35. Zum
Beispiel kann die Steuereinheit 34 den IC 31 veranlassen,
die Verarbeitung in Übereinstimmung
mit den Programmen durchzuführen, die
auf der magnetischen Scheibe 101, der optischen Scheibe 102,
der magneto-optischen Scheibe 103 und dem Halbleiterspeicher 104 gespeichert
sind, der auf dem Laufwerk geladen ist.
-
Die
Verarbeitung durch den Teildecoder-Steuerungs-Schaltkreis 46 wird
jetzt mit Bezug auf das Flussdiagramm aus 16 beschrieben.
-
Im
Schritt S1 stellt der Teildecoder-Steuerungs-Schaltkreis 46 den
Wert des Registers auf N = 1 ein, das die Ordnungszahl des Teils
anzeigt, der im kodierten Strom verarbeitet wird. Im Schritt S2,
stellt der Teildecoder-Steuerungs-Schaltkreis 46 fest,
ob der Teildecoder 47 beim Verarbeiten ist oder nicht.
-
Wenn
im Schritt S2 festgestellt wird, dass der Teildecoder 47 nicht
beim Verarbeiten ist, liefert der Teildecoder-Steuerungs-Schaltkreis 46 im
Schritt S3 den Parameter der Bild-Schicht und des Schreibpointers
des Teils N, die in der Startcode-Information an den Teildecoder 47 eingeschlossen
ist, und veranlasst den Teildecoder 47, den Teil N zu decodieren. Die
Verarbeitung gehen dann zu Schritt S8.
-
Wenn
im Schritt S2 festgestellt wird, dass der Teildecoder 47 beim
Verarbeiten ist, stellt der Teildecoder-Steuerungs-Schaltkreis 46 im
Schritt S4 fest, ob der Teildecoder 48 beim Verarbeiten
ist, oder nicht. Wenn im Schritt S4 festgestellt wird, dass der Teildecoder 48 nicht
beim Verarbeiten ist, liefert der Teildecoder-Steuerungs-Schaltkreis 46 im
Schritt S5 den Parameter der Bild-Schicht und des Schreibpointers
des Teils N, die in der Startcode-Information an den Teildecoder 48 eingeschlossen
ist, und veranlasst den Teildecoder, den Teil N zu decodieren. Die Verarbeitung
geht dann zu Schritt S8.
-
Wenn
im Schritt S4 festgestellt wird, dass der Teildecoder 48 beim
Verarbeiten ist, stellt der Teildecoder-Steuerungs-Schaltkreis 46 im
Schritt S6 fest, ob der Teildecoder 49 beim Verarbeiten
ist oder nicht. Wenn im Schritt S6 festgestellt wird, dass der Teildecoder 49 beim
Verarbeiten ist, geht die Verarbeitung zum Schritt S2 zurück und die
darauf folgende Verarbeitung wird wiederholt.
-
Wenn
im Schritt S6 festgestellt wird, dass der Teildecoder 49 nicht
beim Verarbeiten ist, liefert der Teildecoder-Steuerungs-Schaltkreis 46 im
Schritt S7 den Parameter der Bild-Schicht und des Schreibpointers
des Teils N, die in der Startcode-Information an den Teildecoder 49 eingeschlossen
ist, und veranlasst den Teildecoder 49, den Teil N zu decodieren. Die
Verarbeitung gehen dann zu Schritt S8.
-
Im
Schritt S8 stellt der Teildecoder-Steuerungs-Schaltkreis 46 den
Wert der Register auf N = N+1 ein, welches die Ordnungszahl des
Teils anzeigt, die im kodierten Strom verarbeitet wird. Im Schritt
S9 stellt der Teildecoder-Steuerungs-Schaltkreis 46 fest, ob
die Decodierung aller Teile beendet ist oder nicht. Wenn im Schritt
S9 festgestellt wird, dass die Decodierung aller Teile nicht beendet
ist, geht die Verarbeitung zum Schritt S2 zurück und die folgende Verarbeitung
wird wiederholt. Wenn im Schritt S9 festgestellt wird, dass die
Decodierung aller Teile beendet ist, endet die Verarbeitung.
-
17 zeigt
ein spezifisches Beispiel der Verarbeitung durch den Teildecoder-Steuerungs-Schaltkreis 46,
der mit Bezug auf 16 beschrieben wird. Wie oben
beschrieben, werden die Daten der Bild-Schicht durch den Bild-Decoder 45 und
den Parameter der Bild-Schicht decodiert, die an den Teildecoder-Steuerungs-Schaltkreis 46 geliefert wird.
In diesem Fall, im Schritt S1, der mit Bezug auf 16 beschrieben
wird, stellt der Teildecoder-Steuerungs-Schaltkreis 46 den
Wert der Register auf N = 1 ein. Im Schritt S2 wird festgestellt,
dass der Teildecoder 47 nicht beim Verarbeiten ist. Folglich
liefert im Schritt S3 der Teildecoder-Steuerungs-Schaltkreis 46 den
Parameter der Bild-Schicht und des Schreibpointers eines Teils 1,
der in der Startcode-Information enthalten
ist an den Teildecoder 47 und veranlasst den Teildecoder 47,
den Teil N zu decodieren (wobei N = 1). Im Schritt S8 stellt der
Teildecoder-Steuerungs-Schaltkreis 46 den
Wert der Register auf N = N+1 ein. Im Schritt S9 wird festgestellt,
dass die Decodierung aller Teile nicht beendet ist. Folglich geht die
Verarbeitung zu Schritt S2 zurück.
-
Im
Schritt S2 wird festgestellt, dass der Teildecoder 47 beim
Verarbeiten ist. Im Schritt S4 wird festgestellt, dass der Teildecoder 48 nicht
beim Verarbeiten ist. Folglich liefert im Schritt S5 der Teildecoder-Steuerungs-Schaltkreis 46 den
Parameter der Bild-Schicht und des Schreibpointers eines Teils 2
an den Teildecoder 48 und veranlasst den Teildecoder 48,
den Teil N zu decodieren (wobei N = 2). Im Schritt S8 stellt der
Teildecoder-Steuerungs-Schaltkreis 46 den Wert der Register
auf N = N+1 ein. Im Schritt S9 wird festgestellt, dass die Decodierung
aller Teile nicht beendet ist: folglich geht die Verarbeitung zu Schritt
S2 zurück.
-
Im
Schritt S2 wird festgestellt, dass der Teildecoder 47 beim
Verarbeiten ist, und im Schritt S4 wird festgestellt, dass der Teildecoder 48 beim
Verarbeiten ist. Im Schritt S6 wird festgestellt, dass der Teildecoder 49 nicht
beim Verarbeiten. Folglich liefert im Schritt S7 der Teildecoder-Steuerungs-Schaltkreis 46 den
Parameter der Bild-Schicht und des Schreibpointers eines Teils 3
an den Teildecoder 49 und veranlasst den Teildecoder 49,
den Teil N zu decodieren (wobei N = 3). Im Schritt S8 stellt der
Teildecoder-Steuerungs-Schaltkreis 46 den Wert der Register auf
N = N+1 ein. Im Schritt S9 wird festgestellt, dass die Decodierung
aller Teile nicht beendet ist. Folglich geht die Verarbeitung zu
Schritt S2 zurück.
-
Nach
dem Ausführen
der Decodierungs-Verarbeitung des eingegebenen Teils, geben die
Teildecoder 47 bis 49 ein Signal aus, welches
die Beendigung der Decodierungs-Verarbeitung
dem Teildecoder-Steuerungs-Schaltkreis 46 anzeigt. Das
heißt, bis
ein Signal, welches die Beendigung der Decodierungs-Verarbeitung
des Teils anzeigt, von einem der Teildecoder 47 bis 49 eingegeben
wird, sind alle Teildecoder 47 bis 49 beim Verarbeiten
und bearbeiten folglich die Prozesse der Schritte S2, S4 und S6
wiederholt. Wenn der Teildecoder 48 ein Signal ausgibt, welches
die Beendigung des Decodierungsprozesses dem Teildecoder-Steuerungs-Schaltkreis 46 zu der
Taktung, die durch A in 17 angezeigt
wird, anzeigt, wird im Schritt S4 festgestellt, dass der Teildecoder 48 nicht
beim Verarbeiten ist. Folglich liefert im Schritt S5 der Teildecoder-Steuerungs-Schaltkreis 46 den
Schreibpointer eines Teils 4 an den Teildecoder 48 und
veranlasst den Teildecoder 48, den Teil N zu decodieren
(wo N = 4). Im Schritt S8 setzt der Teildecoder-Steuerungs-Schaltkreises 46 den
Wert der Register auf N = N+1. Im Schritt S9 wird festgestellt, dass
die Decodierung aller Teile nicht beendet ist. Folglich geht die
Verarbeitung zu Schritt S2 zurück.
-
Der
Teildecoder-Steuerungs-Schaltkreis 46 wiederholt die Verarbeitung
der Schritte S2, S4 und S6, bis der nächste Eingang eines Signals,
welches die Beendigung der Decodierungs-Verarbeitung kennzeichnet,
von einem der Teildecoder 47 bis 49 empfangen
wird. In 17 wird, da der Teildecoder-Steuerungs-Schaltkreis 46 den
Eingang eines Signal-Kennzeichnens empfangt, welches das Ende der
Decodierung des Teils 3 vom Teildecoder 49, zu dem Takt,
der durch B angezeigt wird, anzeigt, wird im Schritt S6 festgestellt,
dass der Teildecoder 49 beim Verarbeiten ist. Im Schritt
S7 liefert der Teildecoder-Steuerungs-Schaltkreis 46 den
Schreibpointer eines Teils 5 an den Teildecoder 49 und
veranlasst den Teildecoder 49, den Teil N zu decodieren
(wo N = 5). Im Schritt S8 stellt der Teildecoder-Steuerungs-Schaltkreis 46 den
Wert der Register auf N = N+1 ein. Im Schritt S9 wird festgestellt,
dass die Decodierung aller Teile nicht beendet ist. Folglich geht die
Verarbeitung zu Schritt S2 zurück.
Eine ähnliche Verarbeitung
wird bis zur Decodierung des letzten Teil-Endes wiederholt.
-
Da
der Teildecoder-Steuerungs-Schaltkreis 46 die Teile für die Decodierungs-Verarbeitung mit Bezug
auf die Verarbeitungs-Stati der Teildecoder 47 bis 49 zuteilt,
kann die Mehrzahl der Decoder effizient verwendet werden.
-
Die
Entscheidungs-Verarbeitung der Teildecoder durch den Bewegungs-Ausgleichs-Schaltkreis 50 wird
jetzt mit Bezug auf das Flussdiagramm von 18 beschrieben.
-
Im
Schritt S21 initialisiert der Bewegungs-Ausgleichs-Schaltkreis 50 die
internen Register Reg_REQ_A, Reg_REQ_B und Reg_REQ_C. Das heißt, er setzt
Reg_REQ_A = 0, Reg_REQ_B = 0 und Reg_REQ_C = 0.
-
Im
Schritt S22 stellt der Bewegungs-Ausgleichs-Schaltkreis 50 fest,
ob alle Registerwerte 0 sind oder nicht. Wenn im Schritt S22 festgestellt
wird, dass alle Registerwerte nicht 0 sind (das heißt, mindestens
ein Registerwert ist 1), geht die Verarbeitung zu Schritt S24.
-
Wenn
im Schritt S22 festgestellt wird, dass alle Registerwerte 0 sind,
aktualisiert der Bewegungs-Ausgleichs-Schaltkreis 50 im
Schritt S23 die Registerwerte aufgrund von REQ-Signalen, die von den
Teildecodern 47 bis 49 eingegeben werden. Genauer,
wenn ein REQ-Signal vom Teildecoder 47 ausgegeben ist,
wird Reg_REQ_A = 1 eingestellt. Wenn ein REQ-Signal vom Teildecoder 48 ausgegeben
ist, wird Reg_REQ_B = 1 eingestellt. Wenn ein REQ-Signal vom Teildecoder 49 ausgegeben
ist, wird Reg_REQ_C = 1 eingestellt. Die Verarbeitung geht dann
zu Schritt S24.
-
Im
Schritt S24 stellt der Bewegungs-Ausgleichs-Schaltkreis 50 fest,
ob Reg_REQ_A 1 ist oder nicht. Wenn im Schritt S24 festgestellt
wird, dass Reg_REQ_A 1 ist, übermittelt
der Bewegungs-Ausgleichs-Schaltkreis 50 im Schritt S25
ein ACK-Signal an den Teildecoder 47 und stellt Reg_REQ_A
= 0 ein. Der Teildecoders 47 gibt einen Vorhersagevektor, welcher
durch den Vektor-Decodierenden-Schaltkreis 82 decodiert
wird, und die Pixel, an denen ein inverses DCT durch den inversen
DCT-Schaltkreis 84 durchgeführt wird, an den Bewegungs-Ausgleichs-Schaltkreis 50 aus.
Die Verarbeitung geht dann zu Schritt S30.
-
Wenn
im Schritt S24 festgestellt wird, dass Reg_REQ_A nicht 1 ist, stellt
der Bewegungs-Ausgleichs-Schaltkreis 50 im Schritt S26
fest, ob Reg_REQ_B 1 ist oder nicht. Wenn im Schritt S26 festgestellt
wird, dass Reg_REQ_B 1 ist, übermittelt der
Bewegungs-Ausgleichs-Schaltkreis 50 im Schritt S27 ein
ACK-Signal an den Teildecoder 48 und stellt Reg_REQ_B =
0 ein. Der Teildecoder 48 gibt einen Vorhersagevektor an
den Vektor-Decodier-Schaltkreis 86 und die Pixel, an denen
eine inverse DCT durch den inversen-DCT-Schaltkreis 88 durchgeführt wird,
an den Bewegungs-Ausgleichs-Schaltkreis 50 aus. Die Verarbeitung
geht dann zu Schritt S30.
-
Wenn
im Schritt S26 festgestellt wird, dass Reg_REQ_B nicht 1 ist, stellt
der Bewegungs-Ausgleichs-Schaltkreis 50 im Schritt S28
fest, ob Reg_REQ_C 1 ist oder nicht. Wenn im Schritt S28 festgestellt
wird, dass Reg_REQ_C nicht 1 ist, geht die Verarbeitung zum Schritt
S22 zurück
und die nachfolgende Verarbeitung werden wiederholt.
-
Wenn
im Schritt S28 festgestellt wird, dass Reg_REQ_C 1 ist, übermittelt
der Bewegungs-Ausgleichs-Schaltkreis 50 im Schritt S29
ein ACK-Signal an den Teildecoder 49 und stellt Reg_REQ_C
= 0 ein. Der Teildecoder 49 gibt einen Vorhersagevektor durch
den Vektor-Decodier-Schaltkreis 90 und die Pixel, an denen
eine inverse DCT durch den inversen-DCT-Schaltkreis 92 durchgeführt wird,
an den Bewegungs-Ausgleichs-Schaltkreis 50 aus. Die Verarbeitung
geht dann zu Schritt S30.
-
Im
Schritt S30 stellt der Bewegungs-Ausgleichs-Schaltkreis 50 fest,
ob der Macroblock, der von einem der Teildecoder 47 bis 49 eingegeben wird,
den Bewegungs-Ausgleich benutzt oder nicht.
-
Wenn
im Schritt S30 festgestellt wird, dass der Macroblock den Bewegungs-Ausgleich
benutzt, führt
der Bewegungs-Ausgleichs-Schaltkreis 50 im Schritt S31
die Bewegungs-Ausgleichs-Verarbeitung an dem eingegebenen Macroblock
durch. Genauer, in Übereinstimmung
mit dem Vorhersagevektor, welcher von einem entsprechenden der Teildecoder 47 bis 49 ausgegeben
wird, wenn die Pixeldaten Helligkeitsdaten sind, liest der Bewegungs-Ausgleichs-Schaltkreis 50 Bezugspixeldaten
vom Helligkeits-Puffer 71 über den Helligkeits-Puffer-Steuerungs-Schaltkreis 51 aus
und wenn die Pixeldaten Farbdifferenz-Daten sind, liest der Bewegungs-Ausgleichs-Schaltkreis 50 Bezugspixeldaten
vom Farbdifferenz-Puffer 72 über den Farbdifferenz-Puffer-Steuerungs-Schaltkreis 52 aus.
Dann fügt
der Bewegungs-Ausgleichs-Schaltkreis 50 die ausgelesenen
Bezugspixeldaten den Pixeldaten hinzu, die von einem entsprechenden
der Teildecoder 47 bis 49 geliefert werden und
führt so
den Bewegungs-Ausgleich durch.
-
Wenn
die Pixeldaten Helligkeitsdaten sind, schreibt der Bewegungs-Ausgleichs-Schaltkreis 50 die
bewegungs-kompensierten Pixeldaten in den Helligkeits-Puffer 71 über den
Helligkeits-Puffer-Steuerungs-Schaltkreis 51. Wenn die
Pixeldaten Farbdifferenzdaten sind, schreibt der Bewegungs-Ausgleichs-Schaltkreis 50 die
bewegungs-kompensierten Pixeldaten in den Farbdifferenz-Puffer 72 über den
Farbdifferenz-Puffer-Steuerungs-Schaltkreis 52. So bereitet
sich der Bewegungs-Ausgleichs-Schaltkreis 50 für eine Anzeigenausgabe
vor und bereitet sich auch für
den Fall vor, in dem die Pixeldaten als Bezugsdaten für ein anderes
Bild verwendet werden. Die Verarbeitung geht dann zum Schritt S22
zurück
und die nachfolgende Verarbeitung wird wiederholt.
-
Wenn
im Schritt S30 festgestellt wird, dass der Macroblock nicht den
Bewegungs-Ausgleich
benutzt, schreibt der Bewegungs-Ausgleichs-Schaltkreis 50 im
Schritt S32 die Pixeldaten in den Helligkeits-Puffer 71 über den
Helligkeits-Puffer-Steuerungs-Schaltkreis 51,
wenn die Pixeldaten Helligkeitsdaten sind, und schreibt die Pixeldaten
in den Farbdifferenz-Puffer 72 über den Farbdifferenz-Puffer-Steuerungs-Schaltkreis 52,
wenn die Pixeldaten Farbdifferenz-Daten sind. So bereitet sich der
Bewegungs-Ausgleichs-Schaltkreis 50 für die Anzeigenausgabe
vor und bereitet auch sich für
den Fall vor, in dem die Pixeldaten als Bezugsdaten für ein anderes
Bild verwendet werden. Die Verarbeitung geht dann zum Schritt S22
zurück
und die nachfolgende Verarbeitung wird wiederholt.
-
19 zeigt
ein spezifisches Beispiel der Entscheidungs-Verarbeitung des Decoders
durch den Bewegungs-Ausgleichs-Schaltkreis 50, der oben mit
Bezug auf 18 beschrieben wird.
-
Wenn
festgestellt wird, dass alle Registerwerte des Bewegungs-Ausgleichs-Schaltkreises 50 durch
die Verarbeitung des Schrittes S22 von 18 bei
Takt C, der in 19 gezeigt wird, 0 sind, geben alle
Teildecoder 47 bis 49 REQ-Signale aus. Folglich werden
die Registerwerte auf Reg_REQ_A = 1, auf Reg_REQ_B = 1 und auf Reg_REQ_C
= 1 durch die Verarbeitung im Schritt S23 aktualisiert. Da durch
die Verarbeitung des Schrittes S24 festgestellt wird, dass Reg_REQ_A
gleich 1 ist, gibt der Bewegungs-Ausgleichs-Schaltkreis 50 im
Schritt S25 ein ACK-Signal zum Teildecoder 47 aus und stellt
Reg_REQ_A = 0 ein. Der Bewegungs-Ausgleichs-Schaltkreis 50 empfangt dann
den Eingang des Vorhersagevektors und das Pixel vom Teildecoder 47 und
führt den
Bewegungs-Ausgleich 1 durch.
-
Nachdem
der Bewegungs-Ausgleich 1 endet, das heißt am Takt
D, der in 19 gezeigt ist, geht die Verarbeitung
zum Schritt S22 zurück.
Im Takt D, der in 19 gezeigt ist, wird ein REG-Signal vom
Teildecoder 47 ausgegeben. Da die Registerwerte jedoch
Reg_REQ_A = 0, Reg_REQ_B = 1 und Reg_REQ_C = 1 sind, und im Schritt
S22 festgestellt wird, dass alle Registerwerte nicht 0 sind, geht
die Verarbeitung zu Schritt S24 und die Registerwerte werden nicht
aktualisiert.
-
Im
Schritt S24 wird festgestellt, dass Reg_REQ_A gleich 0 ist und es
wird im Schritt S26 festgestellt, dass Reg_REQ_B gleich 1 ist. Folglich gibt
der Bewegungs-Ausgleichs-Schaltkreis 50 in Schrittes
S27 ein ACK-Signal zum Teildecoder 48 aus und stellt Reg_REQ_B
= 0 ein. Der Bewegungs-Ausgleichs-Schaltkreis 50 empfangt
dann den Eingang des vorbestimmten Vektors und das Pixel vom Teildecoder 48 und
führt den
Bewegungs-Ausgleich 2 durch.
-
Nachdem
der Bewegungs-Ausgleich 2 endet, d.h. bei Takt E, der in 19 gezeigt
ist, geht die Verarbeitung zum Schritt S22 zurück. Am Takt E, der in 19 gezeigt
ist, wird ein REG-Signal vom Teildecoder 47 ausgegeben.
Da die Registerwerte jedoch Reg_REQ_A = 0, Reg_REQ_B = 0 und Reg_REQ_C
= 1 sind, und im Schritt S22 festgestellt wurde, dass alle Registerwerte
nicht 0 sind, werden die Registerwerte nicht aktualisiert, ähnlich zum
Fall der Taktung D.
-
Im
Schritt S24 wird festgestellt, dass Reg_REQ_A gleich 0 ist und im
Schritt S26 wird festgestellt, dass Reg_REQ_B gleich 0 ist. Im Schritt
S28 wird festgestellt, dass Reg_REQ_C gleich 1 ist. Folglich gibt
der Bewegungs-Ausgleichs-Schaltkreis 50 im schritt S29
ein ACK-Signal zum Teildecoder 49 aus und stellt Reg_REQ_C
= 0 ein. Der Bewegungs-Ausgleichs-Schaltkreis 50 empfangt
dann den Eingang des vorbestimmten Vektors und das Pixel vom Teildecoder 49 und
führt den
Bewegungs-Ausgleich 3 durch.
-
Nach
dem der Bewegungs-Ausgleich 3 endet, das heißt am Takt
F, der in 19 gezeigt ist, geht die Verarbeitung
zum Schritt S22 zurück.
Am Takt F werden, da die Registerwerte Reg_REQ_A = 0, Reg_REQ_B
= 0 und Reg_REQ_C = 0 sind, die Registerwerte auf Reg_REQ_A = 1,
auf Reg_REQ_B = 1 und auf Reg_REQ_C = 0 im Schritt S23 aktualisiert.
-
Dann
wird im Schritt S24 festgestellt, dass Reg_REQ_A gleich 1 ist und
der Bewegungs-Ausgleich 4 wird durch ähnliche Verarbeitungsschritte durchgeführt.
-
Indem
er solche Verarbeitungsschritte wiederholt, führt der Bewegungs-Ausgleichs-Schaltkreis 50 den
Bewegungs-Ausgleich beim Entscheiden zwischen den Teildecodern 47 bis 49 durch.
-
Wie
oben beschrieben, können
die Decoder vom Bilddecoder 45 bis zu dem Teildecoder 49 im MPEG-Videodecoder
von 15, da der Startcode-Puffer 62 zur Verfügung gestellt
wird, auf den Strom-Puffer 61 zugreifen, ohne auf das Ende
der Verarbeitung der anderen Decoder zu warten. Die Teildecoder 47 bis 49 können durch
die Prozessierung des Teildecoder-Steuerungs-Schaltkreis 46 zum simultanen
Arbeiten veranlasst werden. Außerdem kann
der Bewegungs-Ausgleichs-Schaltkreis 50 einen geeigneten
Teildecoder auswählen,
auf den Helligkeits-Puffer 71 und den Farbdifferenz-Puffer 72 zugreifen,
die von einander getrennt sind, und den Bewegungs-Ausgleich durchführen. So
wird im MPEG-Videodecoder nach 15 die
Decodierungs-Verarbeitungs-Leistung und die Zugriffleistung auf
die Puffer verbessert und die Decodierungs-Verarbeitung von 4:2:2P@HL
wird ermöglicht.
-
Der
Rahmenpufferbetrieb im Fall, in dem ein MPEG-Strom, der dem MPEG
Videodecoder von 15 zugeführt wird, decodiert und reproduziert wird,
wird jetzt beschrieben.
-
20 ist
ein Blockdiagramm, welches die Struktur eines Wiedergabegeräts zeigt,
das den MPEG Videodecoder von 15 aufweist.
Die Teile, die denen von 15 entsprechen,
werden durch die gleichen Ziffern bezeichnet und werden nicht weiter im
Detail beschrieben werden.
-
Ein
MPEG-kodierter Strom wird auf einer Festplatte 112 aufgezeichnet.
Ein Servo-Schaltkreis 111 steuert
die Festplatte 112 unter der Steuerung des Controllers 34 und
ein nicht gezeigter MPEG Strom, der durch eine Daten-Leseneinheit
ausgelesen wurde, wird einem Wiedergabe-Schaltkreis 121 des
IC 31 zugeführt.
-
Der
Wiedergabe-Schaltkreis 121 schließt die Schaltkreise vom Strom-Eingang-Schaltkreis 4.1 zum
Taktgeber-Schaltkreis 44 ein, der mit Bezug auf 15 beschrieben
wird. Bei der Vorwärts-Wiedergabe
gibt der Wiedergabe-Schaltkreises 121 den MPEG-Strom in
der eingegebenen Reihenfolge als reproduziertem Strom zu einem MPEG
Videodecoder 122 aus. Bei der Rückwärts-Wiedergabe (inverse Wiedergabe),
ordnet der Wiedergabe-Schaltkreis 122 den eingegebenen
MPEG-kodierten Strom
in einer passenden Reihenfolge für
Rückwiedergabe durch
Verwendung des Strom-Puffers 61 neu, indem er den Strom-Puffer 61 und
dann den neu geordneten MPEG-kodierten Strom als ein reproduzierter Strom
zum MPEG Videodecoder 122 ausgibt.
-
Der
MPEG-Videodecoder 122 umfasst die Schaltkreise vom Bild-Decoder 45 zum
Anzeige-Ausgangs-Schaltkreis 53, der mit Bezug auf 15 beschrieben
wird. Durch die Verarbeitung am Bewegungs-Ausgleichs-Schaltkreis 50,
liest der MPEG-Videodecoder 122 einen
decodierten Rahmen aus dem Video-Puffer 33 als ein Bezugsbild
aus, wenn nötig, führt dann
einen Bewegungs-Ausgleich durch decodiert jeden Bild-(Rahmen) des
eingegebenen reproduzierten Stromes in Übereinstimmung mit dem oben beschriebenen
Verfahren und speichert jedes decodierte Bild im Video-Puffer 33.
Außerdem
liest durch die Verarbeitung am Anzeige-Ausgang-Schaltkreis 53 der
MPEG Videodecoder 122 der Reihe nach die Rahmen aus, die
im Video-Puffer 33 und in den Ausgängen gespeichert werden und
zeigt die Rahmen auf einer Anzeige-Einheit oder Anzeige-Vorrichtung an,
die nicht gezeigt ist.
-
In
diesem Beispiel wird der MPEG-kodierte Strom, der auf der Festplatte 112 gespeichert
wurde, decodiert, ausgegeben und anzeigt. Im Wiedergabegerät oder in
einem Aufzeichnungs-/Wiedergabegerät, das den MPEG-Videodecoder
von 15 aufweist, sogar mit einer anderen Struktur
von der aus 20 (z.B. eine Struktur, in der
der MPEG-Videodecoder 122 die Funktion hat, einen kodierten
Strome ähnlich
dem Strom-Puffer 61 zu halten und die Funktion, um Rahmen ähnlich zum
Wiedergabe-Schaltkreis 121 neu zu ordnen), wird ein eingegebener MPEG-kodierter
Strom decodiert und durch eine im Wesentlichen gleiche Verarbeitung
ausgegeben.
-
Als
Selbstverständlichkeit
können
verschiedene andere Aufzeichnungsmedien als eine Festplatte 112 wie
eine Bildplatte, eine magnetische Scheibe, eine Magnetoptikscheibe,
ein Halbleiterspeicher und ein Magnetband als das Informationsspeicher-Medium
für die
Speicherung des kodierten Stromes verwendet werden.
-
Die
Bild Struktur eines MPEG-vorbestimmten kodierten Bildes wird jetzt
mit Bezug auf 21 und 22 beschrieben.
-
21 zeigt
die Bild-Struktur eines MPEG-Videosignals, das an einen Codierer
einzugegeben ist und zu kodieren ist (Kodierungs-Vorrichtung), die
nicht gezeigt ist. Ein Rahmen 12 ist ein intra-kodierter
Rahmen (I-Bild), der kodiert wird, ohne sich auf ein anderes Bild
zu beziehen. Solch ein Rahmen stellt einer kodierten Reihenfolge
einen Zugriffspunkt als Decodierungs-Anfangspunkt zur Verfügung, aber
seine Kompressionsrate ist nicht sehr hoch.
-
Rahmen
P5, P8, Pb und PET sind vorwärts vorbestimmende
kodierte Rahmen (P-Bilder),
die effizienter als ein I-Bild durch Bewegungs-Ausgleichs-Vorhersage
von einem vergangenen I-Bild oder P-Bild kodiert werden. P-Bilder
selbst werden auch als Bezugsbilder für eine Vorhersage benutzt. Rahmen
B3, B4, ..., Bd sind bidirektional vorbestimmende kodierte Rahmen.
Diese Rahmen sind effizienter als I-Bild und P-Bilder komprimiert aber erfordern bidirektionale
Bezugsbilder der Vergangenheit und der Zukunft. B-Bilder werden
nicht als Bezugsbilder für
eine Vorhersage benutzt.
-
22 zeigt
ein Beispiel der Kodierung eines MPEG-Videosignals (MPEG-kodierter
Strom) wobei die Zwischenblockvorhersage verwendet wird, durchgeführt von
einem Kodierer, der nicht gezeigt ist, um die MPEG-kodierten Bilder
zu erzeugen, die mit Bezug auf 21 beschrieben
werden.
-
Ein
eingegebenes Videosignal wird in GOPs (Gruppen von Bildern) geteilt,
z.B. besteht jede Gruppe aus 15 Rahmen. Der dritte Rahmen
vom Anfang jedes GOP wird als I-Bild benutzt, und nachfolgende Rahmen,
die in Abständen
von zwei Rahmen erscheinen, werden als P-Bilder benutzt. Die anderen Rahmen
werden als B-Bilder (M = 15, N = 3) benutzt. Ein Rahmen B10 und
ein Rahmen B11, die die B-Bilder sind, die Rückwärtsvorhersage für die Kodierung erfordern,
werden vorübergehend
im Puffer gespeichert und in einem Rahmen I12, der eine I-Bild ist,
zuerst kodiert.
-
Nach
der Kodierung der Enden des Rahmens I12, werden der Rahmen B10 und
der Rahmen B11, der vorübergehend
im Puffer gespeichert ist, mit dem Rahmen I12 als Bezugsbild kodiert.
Ein B-Bild sollte mit Bezug auf beide, das letzte und das zukünftigen
Bezugsbilder kodiert werden. Jedoch in Bezug auf die B-Bilder, die
keine Bilder haben, auf die sich für die Vorwärtsvorhersage bezogen werden
kann, wie die Rahmen B10 und B11, wird ein geschlossenes GOP-Flag
gesetzt und Kodierung wird durchgeführt, indem nur eine rückwärtige Vorhersage
verwendet wird, ohne eine Vorwärtsvorhersage
zu verwenden.
-
Ein
Rahmen B13 und ein Rahmen B14, eingegeben, die während der Durchführung der
Kodierung des Rahmens B10 und des Rahmens B11 eingegeben werden,
werden im Videopuffer gespeichert. Ein Rahmen P15, der nach den
Rahmen B13 und B14 eingegeben wird, wird mit Bezug auf den Rahmen
I12 als Vorwärtsvorhersagebild
kodiert. Der Rahmen B13 und der Rahmen B14, der vom Videopuffer
ausgelesen wird, werden mit Bezug auf den Rahmen I12 als Vorwärtsvorhersagebild
und mit Bezug auf den Rahmen P15 als Rückwärtsvorhersagebild kodiert.
-
Dann
werden ein Rahmen B16 und ein Rahmen B17 im Videopuffer gespeichert. Ähnlich wird
ein P-Bild mit Bezug auf ein vorher kodiertes I-Bild oder P-Bild
als Vorwärtsvorhersagebild
kodiert, und eine B-Bild wird vorübergehend im Videopuffer gespeichert
und dann mit Bezug auf ein vorher kodiertes I-Bild oder P-Bild als
Vorwärtsvorhersagebild
oder Rückwärtsvorhersagebild
kodiert.
-
In
dieser Weise generieren Bilddaten, die über einer Mehrzahl von GOPs
kodiert werden, einen kodierten Strom. Auf der Festplatte 112 von 20, wird
ein MPEG-kodierter
Strom, der durch das oben beschriebene Verfahren kodiert wurde,
aufgezeichnet.
-
Wenn
ein gewöhnliches
Bild DCT-transformiert wird, hat eine DCT-Koeffizientmatrix, die durch zu der
zeit der Kodierung durch eine DCT-Transformation erreicht wird, solch
eine Eigenschaft um, dass sie einen großen Wert für eine Niederfrequenz-Komponente
und einen kleinen Wert für
eine Hochfrequenz-Komponente
hat. Kompression von Information, durch Verwendung dieser Eigenschaft,
ist Quantelung (jeder DCT-Koeffizient wird durch eine bestimmte
Quantelungmaßeinheit
geteilt und die Dezimalstellen werden heraus gerundet). Die Quantelungmaßeinheit
wird als 8×8-Quantisierungstabelle erstellt,
und ein kleiner Wert für
eine Niederfrequenz-Komponente und ein großer Wert für eine Hochfrequenz-Komponente
werden festgelegt. Resultierend aus der Quantelung werden die Komponenten
der Matrix fast 0, außer
einer oberen linken Komponente. Die Quantisierungs-ID, die der Quantelungsmatrix
entspricht, wird den komprimierten Daten hinzugefügt und auf
diese Weise auf die Decoderseite geschickt. Das heißt, der
MPEG-Videodecoder 122 aus 20 decodiert
den MPEG-kodierten Strom mit Bezug auf die Quantelungsmatrix von
der Quantelungs-ID.
-
Auf 23 bezugnehmend,
werden jetzt die Verarbeitung beschrieben, in denen ein kodierter Strom
einschließlich
GOPs von GOP1 zu GOP3 an den Wiedergabe-Schaltkreis 121 eingegeben
wird und durch den MPEG-Videodecoder 122 decodiert für den Fall
des Wiedergebens der Videodaten in der Vorwärtsrichtung von der Festplatte 112. 23 zeigt
ein Beispiel von MPEG-Decodierung die eine Zwischenblockvorhersage
nutzt.
-
Ein
MPEG-Videostrom, der zum Wiedergabe-Schaltkreis 121 der
Festplatte 112 für
Vorwärtswiedergabe
eingegeben wird, wird zum MPEG-Videodecoder 122 als ein
reproduzierter Strom der gleichen Bildanordnung wie die eingegebene
Reihenfolge durch die Verarbeitung am Wiedergabe-Schaltkreis 121 ausgegeben.
Am MPEG-Videodecoder 122 wird
der reproduzierte Strom in Übereinstimmung
mit der Vorgehensweise decodiert, das mit Bezug auf 15 bis 19 beschrieben
wird, und dann im Videopuffer 33 gespeichert wird.
-
Der
erste eingegebene Rahmen I12 ist ein I-Bild und erfordert folglich
kein Bezugsbild für
die Decodierung. Der Pufferbereich im Videopuffer 33, in dem
der Rahmen I12, der durch den MPEG-Videodecoder 122 decodiert
wird, gespeichert wird, wird als Puffer 1 bezeichnet.
-
Die
folgenden Rahmen B10 und B11, die dem MPEG-Videodecoder 122 zugeführt werden, sind
B-Bilder. Jedoch da ein geschlossenes GOP-Flag gesetzt wird, werden
diese Rahmen B10 und B11 mit Bezug auf den Rahmen decodiert I12, der
im Puffer 1 des Videopuffers 33 als Rückbezugsnamebild gespeichert
ist und dann im Videopuffer 33 gespeichert wird. Der Pufferbereich,
in dem der decodierte Rahmen B10 gespeichert wird, ist als Puffer
3 bezeichnet.
-
Durch
die Verarbeitung am Anzeige-Ausgangs-Schaltkreis 53, wird
der Rahmen B10 vom Puffer 3 des Videopuffers 33 ausgelesen
und an eine nicht gezeigte Display-Einheit ausgegeben und dort angezeigt.
Der folgende decodierte Rahmen B1 wird im Puffer 3 des Videopuffers 33 (das
heißt,
neu in Puffer 3 geschrieben) gespeichert, dann ausgelesen, und auf
die nicht dargestellte Display-Einheit ausgegeben und dort angezeigt.
-
Danach
wird der Rahmen I12 vom Puffer 1 ausgelesen und wird an die Display-Einheit, die nicht dargestellt
ist, ausgegeben und darauf angezeigt. Zu diesem Zeitpunkt wird der
folgende Rahmen P15 mit Bezug auf den Rahmen I12 decodiert, der
im Puffer 1 des Videopuffers 33 als Bezugsbild gespeichert
ist, und dann in einem Puffer 2 des Videopuffers 33 gespeichert.
-
Wenn
kein geschlossenes GOP-Flag für
den Rahmen B10 und den Rahmen B11 gesetzt wird, werden der Rahmen
B10 und der Rahmen B11 nicht decodiert, weil es keine Bild gibt,
das als Vorwärtsreferenzbild
benutzt werden kann. In solch einem Fall wird der Rahmen I12 zuerst
vom Anzeige Ausgang-Schaltkreis 53 ausgegeben und angezeigt.
-
Der
folgende eingegebene Rahmen B13 wird mit Bezug auf den Rahmen I12
decodiert, der im Puffer 1 des Videopuffers 33 als Vorwärtsreferenzbild gespeichert
ist und wird mit Bezug auf den Rahmen P15, der im Puffer 2 als Rückbezugsnahmebild
gespeichert ist und wird dann im Puffer 3 gespeichert. Während der
Rahmen B13 vom Puffer 3 des Videopuffers 33 ausgelesen
wird und die Ausgangsanzeige-Verarbeitung durch den Anzeige-Ausgangs-Schaltkreis 53 durchgeführt wird,
wird der folgende eingegebene Rahmen B14 mit Bezug auf den Rahmen
I12, der im Puffer 1 des Videopuffers 33 als Vorwärtsbezugsbild
gespeichert ist, und mit Bezug auf den Rahmen P15, der im Puffer
2 als Rückbezugsnahmebild
gespeichert ist, decodiert und wird dann im Puffer 3 gespeichert.
Durch die Verarbeitung am Anzeige-Ausgangs-Schaltkreis 53 wird der Rahmen
B14 vom Puffer 3 des Videopuffers 33 ausgelesen und wird
ausgegeben und angezeigt.
-
Der
folgende eingegebene Rahmen P18 wird mit Bezug auf den Rahmen P15
decodiert, der im Puffer 2 als Vorwärtsbezugsbild gespeichert ist. Nach
der Decodierung der Enden des Rahmens B14 wird der Rahmen I12, der
im Puffer 1 gespeichert ist, nicht benutzt, während ein Bezugsbild und folglich der
decodierte Rahmen P18 im Puffer 1 des Videopuffers 33 gespeichert
wird. Dann, zu dem Zeitpunkt wenn der Rahmen P18 im Puffer 1 gespeichert
wird, wird der Rahmen P15 vom Puffer 2 ausgelesen, ausgegeben und
angezeigt.
-
Ähnlich werden
die folgenden Rahmen des GOP1 der Reihe nach decodiert, dann in
den Puffer 1 bis 3 gespeichert, der Reihe nach ausgelesen und angezeigt.
-
Wenn
ein führender
Rahmen I22 des GOP2 eingegeben wird, erfordert der Rahmen I22, der
ein I-Bild ist, nicht das Bezugsbild für die Decodierung und folglich
decodiert wie er ist, wird er im Puffer 2 gespeichert. Zu diesem
Zeitpunkt wird ein Rahmen P1e des GOP1 ausgelesen, ausgegeben und
angezeigt.
-
Ein
Rahmen B20 und ein Rahmen B21; welche nacheinander eingegeben werden,
werden mit Bezug auf den Rahmen P1e im Puffer 1 als Vorwärtsbezugsbild
und mit Bezug auf den Rahmen I22 im Puffer 2 als Rückwärtsbezugsbild
decodiert, dann der Reihe nach im Puffer 3 gespeichert, ausgelesen
und angezeigt. Auf diese Weise wird das B-Bild am führenden
Ende des GOP mit Bezug auf die P-Bild des vorhergehenden GOP als
Vorwärtsbezugsbild
decodiert.
-
Ähnlich werden
die folgenden Rahmen des GOP2 der Reihe nach decodiert, gespeichert
dann der Reihe nach in den Puffer 1 bis 3 ausgelesen und angezeigt.
Dann werden die Rahmen des GOP3 und das folgende GOPs der Reihe
nach ähnlich decodiert,
dann in den Puffer 1 bis 3 gespeichert und der Reihe nach ausgelesen
und angezeigt.
-
In
der oben beschriebenen Verarbeitung führt der MPEG-Videodecoder 122 die
Decodierungs-Verarbeitung mit Bezug auf die Quantelungs-ID durch.
-
Der
Fall des Durchführens
der Rückwiedergabe
im Wiedergabegerät,
das mit Bezug auf 20 beschrieben wird, wird jetzt
beschrieben.
-
In
der herkömmlichen
Rückwiedergabe
kann nur ein unnatürliches
Wiedergabebild erhalten werden, in dem nur ein Rahmen der 15 Rahmen
angezeigt wird, da nur ein I-Bild
herausgenommen und decodiert wird.
-
Andererseits
kann der Wiedergabe-Schaltkreis 121 von 20 einen
reproduzierten Strom erzeugen, während
die Reihenfolge der Rahmen des GOP geändert wird, die dem Strom-Puffer 61 auf
der Grundlage des Startcodes zugeführt wird, der im Startcode-Puffer 62 aufgezeichnet
ist, und die MPEG-Videodecoders 122 alle 15 Rahmen decodieren
kann.
-
Jedoch
ist es für
eine Rückwiedergabe
nicht genug, dass der Wiedergabe-Schaltkreis 121 einen reproduzierten
Strom einfach durch ein Aufheben der Reihenfolge der Rahmendes GOP
erzeugt, der dem Strom-Puffer 61 auf der Grundlage von
dem Startcode eingegeben wird, der im Startcode-Puffer 62 aufgezeichnet
ist.
-
Zum
Beispiel wird mit Bezug auf 22 beschrieben,
dass im Fall des Durchführen
der Rückwiedergabe
des GOP2 und des GOP1 des MPEG-kodierten Stroms, der erste auszugebende und
anzuzeigende Rahmen ein Rahmen P2e sein muss. Die Decodierung des
Rahmens P2e erfordert einen Hinweis auf einem Rahmen P2b als Vorwärtsbezugsbild
und die Decodierung des Rahmens P2b erfordert einen Hinweis auf
einem Rahmen P28 als Vorwärtsbezugsbild.
Da die Decodierung des Rahmens P28 auch ein Vorwärtsbezugsbild erfordert, müssen all
die I-Bilder und P-Bilder des GOP2 decodiert werden, um den Rahmen
P2e zu decodieren, auszugeben und anzuzeigen.
-
Um
den zuerst in der Rückwiedergabe
anzuzeigenden Rahmen P2e zu decodieren; kann auch ein anderes Verfahren
betrachtet werden, in dem der gesamte GOP2 der Reihe nach vom letzten
Rahmen decodiert und im Videopuffer 33 gespeichert und dann
ausgelesen wird. In solch einem Fall jedoch benötigt der Videopuffer 33 einen
Pufferbereich für
ein GOP (15 Rahmen).
-
Obwohl
es möglich
ist, die Rahmen von den Rahmen P2e bis zum Rahmen I22 zu decodieren
und zu reproduzieren, erfordert mit diesem Verfahren außerdem das
Decodieren der ersten zwei Rahmen des GOP2, das heißt, der
Rahmen B21 und der Rahmen B20, die schließlich in umgekehrter Reproduktion
angezeigt werden sollen, den Rahmen P1e von GOP1 als Vorwätsreferenzbild.
Um den Rahmen P1e des GOP1 zu decodieren, sind alle I-Bilder und
P-Bilder des GOP1 notwendig.
-
Das
heißt,
mit diesem Verfahren, kann Rückwiedergabe
aller Rahmen von einem GOP nicht durchgeführt werden, während der
Videopuffer 33 einen Pufferbereich für 15 Rahmen erfordert.
-
Im
Fall, in dem das Codieren mit M = 15 und N = 3 durchgeführt wird,
wie oben mit Bezug auf 22 beschrieben ist, enthält ein GOP
eine Gesamtmenge von fünf
Rahmen der I-Bilder und der P-Bilder.
-
Dadurch,
dass ermöglicht
wird, dass der Strom-Puffer 61 Rahmen von mindestens zwei
GOPs speichert und dass ermöglicht
wird, dass die Bestimmung der Reihenfolge der Rahmen des reproduzierten
Stroms erfolgt, der durch den Wiedergabe-Schaltkreis 121 auf
der Basis der Decodierungsreihenfolge zur umgekehrten Wiedergabe
durch den MPEG-Videodecoder 122 erzeugt wird und die Speicherung
von Rahmen von mindestens der Anzahl, die dem Video-Puffer 33 durch
die „gesamte
Anzahl von I-Bild(ern)
und P-Bild(ern) eingeschlossen einen GOP+2" ausgedrückt wird, können alle Rahmen einschließlich des
Rahmens über
GOPs kontinuierlich in die rückwärtige Richtung
reproduziert werden.
-
Bezug
nehmend auf 24 werden jetzt die Decodierungsverarbeitung
im Falle der Rückwiedergabe
der Bild-Daten von GOP1 zu GOP3 von der Festplatte 112 beschrieben. 24 zeigt
einen exemplarischen Betrieb des MPEG Rückwiedergabedecoders. Der Controller 34 steuert
den Servo-Schaltkreis 111, um zuerst einen MPEG-kodierten Strom
des GOP3 und dann von der Festplatte 112 zum Wiedergabe-Schaltkreis 121 einen
MPEG-kodierten Strom des GOP2 auszugeben. Der Wiedergabe-Schaltkreis 121 speichert
den MPEG-kodierten Strom des GOP3 und speichert dann den MPEG-kodierten
Strom des GOP2 zum Strom-Puffer 61.
-
Der
Wiedergabe-Schaltkreis 121 liest einen führenden
Rahmen I32 des GOP3 vom Strom-Puffer 61 und gibt von den
Ausgängen
den führenden
Rahmen I32 als ersten Rahmen des reproduzierten Stromes zum MPEG-Videodecoder 122 aus.
Da der Rahmen I32 eine I-Bild ist und keine Bezugsbilder für die Decodierung
erfordert, wird der Rahmen I32 durch den MPEG-Videodecoder 122 decodiert
und im Videopuffer 33 gespeichert. Der Bereich des Videopuffers 33,
in dem der decodierte Rahmen I32 gespeichert wird, ist als Puffer
1 bezeichnet.
-
Die
Daten der entsprechenden Rahmen werden auf der Grundlage von Parameter
decodiert, die im Header und in den Zusatzdaten mit Bezug auf 2 beschrieben
werden. Wie oben beschrieben, werden die Parameter durch den Bild-Decoder 45 des
MPEG-Videodecoders 122 decodiert, dann an den Teildecoder-Steuerungs-Schaltkreis 46 geliefert und
für die
Decodierungs-Verarbeitung verwendet. Im Falle des Decodieren des
GOP1, wird die Decodierung durchgeführt, indem die Parameter der
oberen Schichten verwendet werden, die im sequence_header, im sequence_extension
und im GOP_header des GOP1 beschrieben werden (z.B. die oben beschriebene
Quantelungsmatrix). Im Falle des Decodieren des GOP2 wird die Decodierung durchgeführt, indem
die Parameter der oberen Schichten verwendet werden, die im sequence_header,
im sequence_extension und im GOP_header des GOP2 beschrieben werden.
Im Falle des Decodieren des GOP3; wird die Decodierung durchgeführt, indem
die Parameter der oberen Schichten verwendet werden, die im sequence_header,
im sequence_extension und in GOP_header des GOP3 beschrieben werden.
-
In
der Rückwiedergabe
jedoch liefert, da die Decodierung nicht für jedes GOP ausgeführt wird, der
MPEG-Videodecoder 122 die oberen Schichtparameter an den
Controller 34, wenn das I-Bild zuerst in den entsprechenden
GOPs decodiert wird. Der Controller 34 hält die gelieferten
oberen Schichtparameter in seinem internen Informationsspeicher,
der nicht gezeigt ist.
-
Der
Controller 34 überwacht
die Decodierungsverarbeitung, die durch den MPEG-Videodecoder 122 durchgeführt wird,
dann liest er die oberen Schichtparameter, entsprechend dem Rahmen,
der verarbeitet wird, vom internen Informationsspeicher aus und
liefert den oberen Schichtparameter an den MPEG Videodecoder 122,
um eine passende Decodierungsverarbeitung zu verwirklichen.
-
In 24 stellen
die Zahlen über
den Rahmenzahlen des reproduzierten Stromes Quantelung-IDs dar.
Jeder Rahmen des reproduzierten Stromes wird auf der Grundlage von
der Quantelungs-ID, ähnlich
zur Vorwärtsdecodierung
decodiert, die mit Bezug auf 23 beschrieben
wird.
-
In
der vorliegenden Ausführungsform
hat der Controller 34 einen internen Informationsspeicher, um
die oberen Schichtkodierungparameter zu halten. Jedoch kann ein
Informationsspeicher zur Verfügung gestellt
werden, der an den Controller 34 angeschlossen ist, damit
der Controller 34 die oberen Schichtkodierungparameter
im externen Informationsspeicher auch ohne einen internen Informationsspeicher
halten kann und die oberen Schichtkodierungparameter auslesen und
an den MPEG-Videodecoder 122 liefern
kann.
-
Ein
Informationsspeicher zum Halten der oberen Schichtkodierungparameter
von GOPs kann im MPEG-Videodecoder 122 auch zur Verfügung gestellt
werden. Außerdem,
wenn die Codierungsumstände
wie die oberen Schichtkodierungparameter bekannt sind, die Codierungbedingungen
im MPEG-Videodecoder 122 im Voraus eingestellt werden.
Alternativ, wenn bekannt ist, dass die oberen Schichtkodierungparameter
nicht zwischen GOPs schwanken, können
die Codierungsparameter in dem MPEG-Videodecoder 122 nur
einmal am Anfang des Betriebes eingestellt werden, anstatt die oberen Schichtkodierungparameter
für jeden
GOP auszulesen und die Parameter im MPEG-Videodecoder 122 für jeden
Rahmen durch den Controller 34 einzustellen.
-
Der
Wiedergabe-Schaltkreis 121 liest einen Rahmen P35 vom Strom-Puffer 61 aus
und gibt den Rahmen P35 als den folgende Rahmen des reproduzierten
Stromes zum MPEG-Videodecoder 122 aus. Der Rahmen P35 wird
durch den MPEG-Videodecoder 122 mit Bezug auf den Rahmen
I32 decodiert, der im Puffer 1 als Vorwärtsbezugsbild aufgenommen ist und
wird dann im Videopuffer 33 gespeichert. Der Bereich im
Videopuffer 33, in dem der decodierte Rahmen P35 gespeichert
wird, wird als Puffer 2 bezeichnet.
-
Der
Wiedergabe-Schaltkreis 121 liest der Reihe nach einen Rahmen
P38, einen Rahmen P3b und einen Rahmen P3e vom Strom-Puffer 61 aus und
gibt diese Rahmen als ein reproduzierter Strom aus. Jede dieser
P-Bilder wird durch den MPEG-Videodecoder 122 mit
Bezug auf das vorangehende decodierte P-Bild als Vorwärtsbezugsbild
decodiert und wird dann im Videopuffer 33 gespeichert.
Die Bereiche im Videopuffer 33, in dem diese decodierten P-Bild-Rahmen
gespeichert ist, werden als Puffer 3 bis 5 bezeichnet.
-
An
diesem Punkt sind alle I-Bilder und P-Bilder des GOP3 im Videopuffer 33 decodiert
und gespeichert worden.
-
Nachher
liest der Wiedergabe-Schaltkreis 121 einen Rahmen I22 des
GOP2 vom Strom-Puffer 61 aus und gibt den Rahmen I22 als
ein reproduzierter Strom aus. Der Rahmen I22, der ein I-Bild ist,
wird durch den MPEG-Videodecoder 122, ohne irgendein Bezugsbild
zu erfordern, decodiert und wird dann im Videopuffer 33 gespeichert.
Der Bereich, in dem der decodierte Rahmen 122 gespeichert
wird, wird als Puffer 6 bezeichnet. Am Zeitpunkt, wenn der Rahmen 122 im
Puffer 6 gespeichert wird, wird der Rahmen P3e des GOP3 vom Puffer
5 ausgelesen, dann ausgegeben und anzeigt als das erste Bild der
Rückwiedergabe.
-
Der
Wiedergabe-Schaltkreis 121 liest einen Rahmen B3d des GOP3
vom Strom-Puffer 61 aus, das heißt, denjenigen Rahmen der in
der Rückrichtung
der B-Bilder des GOP3 zu reproduzieren ist, und gibt den Rahmen
B3d als reproduzierter Strom aus. Der Rahmen B3d wird durch den
MPEG-Videodecoder 122 mit Bezug auf den Rahmen P3b im Puffer
4 als Vorwärtsbezugsbild
und mit Bezug auf den Rahmen P3e im Puffer 5 als Rückwärtsbezugsbild
decodiert und wird dann im Videopuffer 33 gespeichert. Der
Bereich, in dem der decodierte Rahmen B3d gespeichert wird, wird
als Puffer 7 bezeichnet.
-
Nachdem
eine Rahmen-/Bereichskonversion und eine Anpassung an die synchrone
Taktung der Videoausgabe durchgeführt wurden, wird der Rahmen
B3d, der im Puffer 7 gespeichert ist, ausgegeben und anzeigt. An
dem gleichen Zeitpunkt wie die Anzeige des Rahmens B3d, liest der
Wiedergabe-Schaltkreis 121 einen Rahmen B3c des GOP3 vom
Strom-Puffer 61 aus und gibt den Rahmen B3c zum MPEG-Videodecoder 122 aus. Ähnlich zum Rahmen
B3d, wird der Rahmen B3c durch den MPEG-Videodecoder 122 mit Bezug
auf den Rahmen P3b im Puffer 4 als Vorwärtsbezugsbild und mit Bezug
auf den Rahmen P3e im Puffer 5 als Rückwärtsbezugbild decodiert.
-
Der
Rahmen B3d, der vorher decodiert und ausgegeben wird, ist ein B-Bild
und es wird sich folglich nicht auf diesen zur Decodierung eines
anderen Rahmens bezugen. Folglich wird der decodierte Rahmen P3c
anstatt des Rahmens B3d im Puffer 7 gespeichert (das heißt, überschrieben
im Puffer 7). Nachdem die Rahmen/Bereichskonversion und die Anpassung
an die synchrone Taktung der Videoausgabe und durchgeführt wurden,
wird der Rahmen P3c ausgegeben und angezeigt.
-
Der
Wiedergabe-Schaltkreis 121 liest einen Rahmen P25 des GOP2
vom Strom-Puffer 61 aus und gibt den Rahmen P25 zum MPEG-Videodecoder 122 aus.
Der Rahmen P25 des GOP2 wird durch den MPEG-Videodecoder 122 mit
Bezug auf den Rahmen I22 im Puffer 6 als Vorwärtsbezugsbild decodiert. Da
der Rahmen P3e, der im Puffer 5 gespeichert ist, nicht mehr als
Bezugsbild benutzt wird, wird der decodierte Rahmen P25 anstatt
des Rahmens P3e im Puffer 5 gespeichert. Dann zum gleichen Zeitpunkt
wie die Informationsspeicherung des Rahmens P25 in dem Puffer 5,
wird der Rahmen P3b im Puffer 4 ausgelesen und angezeigt.
-
Der
Wiedergabe-Schaltkreis 121 liest einen Rahmen B3a des GOP3
vom Strom-Puffer 61 aus und gibt den Rahmen B3a als reproduzierter
Strom aus. Der Rahmen B3a wird durch den MPEG-Videodecoder 122 mit
Bezug auf den Rahmen P38 im Puffer 3 als Vorwärtsbezugbild und mit Bezug
auf den Rahmen P3b im Puffer 4 als Rückwärtsbezugsbild decodiert und
wird dann im Puffer 7 des Videopuffers 33 gespeichert.
-
Nachdem
eine Rahmen-/Bereichskonversion und Anpassung an die synchrone Taktung
der Videoausgabe durchgeführt
wurde, wird der Rahmen B3a, der im Puffer 7 gespeichert wird, ausgegeben und
angezeigt. Zum gleichen Zeitpunkt die Anzeige des Rahmens B3a, liest
der Wiedergabe-Schaltkreis 121 einen Rahmen B39 des GOP3
vom Strom-Puffer 61 aus und gibt den Rahmen B39 zum MPEG-Videodecoder 122 aus. Ähnlich dem
Rahmen B3a, wird der Rahmen B39 durch den MPEG-Videodecoder 122 mit Bezug
auf den Rahmen P39 im Puffer 3 als Vorwärtsbezugsbild und mit Bezug
auf den Rahmen P3b im Puffer 4 als Rückwärtsbezugsbild decodiert. Der Rahmen
B39 wird dann anstatt des Rahmens B3a im Puffer 7 gespeichert. Nachdem
eine Rahmen-Bereichskonversion und Anpassung an die synchrone Taktung
der Videoausgabe durchgeführt
wurde, wird der Rahmen B39 ausgegeben und angezeigt.
-
Der
Wiedergabe-Schaltkreis 121 liest einen Rahmen P28 des GOP2
vom Strom-Puffer 61 aus und gibt den Rahmen P28 zum MPEG-Videodecoder 122 aus.
Der Rahmen P28 des GOP2 wird durch den MPEG-Videodecoder 122 mit
Bezug auf den Rahmen P25 im Puffer 5 als Vorwärtsbezugsbild decodiert. Da
der Rahmen P3b, der im Puffer 4 gespeichert wird, nicht mehr als
Bezugsbild benutzt wird, wird der decodierte Rahmen P28 anstatt
des Rahmens P3b im Puffer 4 gespeichert. Zum selben Zeitpunkt, an
dem der Rahmen P28 im Puffer 4 angespeichert wird, wird der Rahmen
P38 im Puffer 3 ausgelesen und angezeigt.
-
In
dieser Weise wird zum Zeitpunkt, an dem das I-Bild oder das P-Bild
des GOP2 in dem Puffer 33 decodiert und gespeichert wird,
das I-Bild oder das P-Bild des GOP3 vom Puffer 33 ausgelesen
und angezeigt.
-
Ähnlich wie
in 24 gezeigt, werden die restlichen B-Bilder des
GOP3 und die restlichen P-Bilder des GOP2 in der Reihenfolge B37,
B36, P2b, B34, B33 und P2e decodiert. Die decodierten B-Bilder werden
im Puffer 7 gespeichert und werden der Reihe nach ausgelesen und
angezeigt. Die decodierten P-Bilder des GOP2 werden der Reihe nach
in einem den Puffer 1 bis 6 gespeichert, in denen ein Rahmen mit
abgeschlossener Bezugnahme gespeichert wurde, und zu diesem Zeitpunkt
wird das P-Bild des
GOP3, das bereits in einem der Puffer 1 bis 6 gespeichert ist, ausgelesen
und zwischen B-Bildern ausgegeben, um der Reihenfolge der Rückwiedergabe
zu entsprechen.
-
Der
Wiedergabe-Schaltkreis 121 liest einen Rahmen B31 des GOP3
aus und liest dann einen Rahmen B30 vom Strom-Puffer 61 aus
gibt diese Rahmen an den MPEG-Videodecoder 122 aus.
Da der Rahmen P2e als ein Vorwärtsbezugsbild
und der Rahmen I32 als ein Rückwärtsbezugbild,
die für
die Decodierung des Rahmens B31 und des Rahmens B30 notwendig sind,
im Puffer 2 bzw. im Puffer 1 gespeichert werden, können die
ersten zwei Rahmen des GOP3, das heißt, die letzten, die in der
Rückwiedergabe
anzuzeigen sind, auch durch den MPEG-Videodecoder 122 decodiert
werden.
-
Der
decodierte Rahmen B31 und der Rahmen B30 werden der Reihe nach in
dem Puffer 7 gespeichert. Nachdem eine Rahmen-/Bereichskonversion
und Anpassung an die synchrone Taktung der Video-Ausgabe durchgeführt wurden,
werden der Rahmen B31 und der Rahmen B30 ausgegeben und anzeigt.
-
Nachdem
alle Rahmen des GOP3 vom Strom-Puffer 61, ausgelesen wurden,
steuert der Controller 34 der Abhängigkeitsschaltung 111 zum Auslesen
des GOP1 von der Festplatte 112 uns zum liefern von diesem
an den Wiedergabe-Schaltkreis 121. Der Wiedergabe-Schaltkreis 121 führt eine
vorbestimmte Verarbeitung aus, um den Startcode des GOP1 zum Startcode-Puffer 62 extrahieren
und aufnehmen zu können.
Der Wiedergabe-Schaltkreis 121 liefert und speichert auch
den kodierten Strom des GOP1 an den Strom-Puffer 61.
-
Dann
liest der Wiedergabe-Schaltkreis 121 einen Rahmen I12 des
GOP1 vom Strom-Puffer 61 aus
und gibt den Rahmen I12 als ein reproduzierter Strom zum MPEG-Videodecoder 122 aus.
Der Rahmen I12 ist ein I-Bild und folglich wird er durch den MPEG-Videodecoder 122 decodiert,
ohne sich auf irgendein anderes Bild zu beziehen. Der Rahmen I12 wird
zum Puffer 1 ausgegeben und anstatt des Rahmens I32 im Puffer 1
gespeichert, der nicht mehr als Bezugsbild in der folgenden Verarbeitung
benutzt wird. An diesem Punkt wird der Rahmen P2e ausgelesen und
vom Puffer 2 ausgegeben und die Rückwiedergabeanzeige des GOP2
wird begonnen.
-
Der
Wiedergabe-Schaltkreis 121 liest dann einen Rahmen B2d
von GOP2 vom Strom-Puffer 61 aus,
das heißt,
der erste in der Rückwiedergabe
der B-Bilder des GOP2, und gibt den Rahmen B2d als reproduzierter
Strom aus. Der Rahmen B2d wird durch den MPEG-Videodecoder 122 mit
Bezug auf den Rahmen P2b im Puffer 3 als Vorwärtsbezugsbild und mit Bezug
auf den Rahmen P2e im Puffer 2 als Rückwärtsbezugbild decodiert und
wird dann im Videopuffer 33 gespeichert. Der decodierte
Rahmen B2d wird im Puffer 7 gespeichert. Nachdem eine Rahmen-Bereichskonversion
und Anpassung an die synchrone Taktung der Video-Ausgabe durchgeführt wurde,
wird der Rahmen B2d ausgegeben und anzeigt.
-
Ähnlich werden
die restlichen B-Bilder des GOP2 und die restlichen P-Bilder des
GOP1 in der Reihenfolge B2c, P15, B2a, B29, P18, B27, B26, P1b,
B24, B23, P1e, P21 und P20 decodiert. Diese Bilder werden der Reihe
nach in einem der Puffer 1 bis 7 gespeichert, in denen ein Rahmen
mit abgeschlossener Bezugsnahme gespeichert wurde, ausgelesen und
in der Reihenfolge der Rückwiedergabe ausgegeben.
Schließlich
werden die restlichen B-Bilder des GOP1 decodiert und der Reihe
nach in den Puffer 7 gespeichert und ausgelesen und in der Reihenfolge
der Rückwiedergabe
ausgegeben, obwohl dies nicht gezeigt ist.
-
In
den Verarbeitung, die mit Bezug auf 24 beschrieben
werden, wird die Rückwiedergabe
mit der gleichen Geschwindigkeit wie der normalen Wiedergabe durchgeführt. Jedoch,
wenn der Wiedergabe-Schaltkreis 121 den reproduzierte Strom
zum MPEG-Videodecoder 122 mit einer Geschwindigkeit ausgibt,
die 1/3 der Geschwindigkeit der normalen Wiedergabe entspricht und
der MPEG-Videodecoder 122 die Decodierungsverarbeitung
von nur einem Rahmen in einer Verarbeitzeit durchführt, die
normalerweise drei Rahmen entspricht und verursacht, dass die nicht
gezeigte Display-Einheit oder Anzeige-Vorrichtung nicht den gleichen
Rahmen in einer Anzeige-Zeit anzeigen, welche normalerweise für drei Rahmen
vorgesehen ist, werden Vorwärtswiedergabe
und Rückwiedergabe mit
einer 1/3-Tupel-Geschwindigkeit
durch ähnliche Verarbeitung
ermöglicht.
-
Außerdem,
wenn der Anzeige-Ausgangs-Schaltkreis 53 wiederholt den
gleichen Rahmen ausgibt, wird eine so genannte ruhige Wiedergabe
ermöglicht.
Durch ein Verändern
der Daten-Ausgaberate von dem Wiedergabe-Schaltkreis 121 zum MPEG-Videodecoder 122 und
der Verarbeitungsgeschwindigkeit des MPEG-Videodecoders 122,
werden eine Vorwärtswiedergabe
und eine Rückwiedergabe
mit einer an einer 1/n-Tupel-Geschwindigkeit (wobei n eine willkürliche Zahl
ist) durch eine ähnlichen
Verarbeitung ermöglicht.
-
Das
heißt,
im Wiedergabegerät
gemäß der vorliegenden
Erfindung, ist eine glatte Trick-Wiedergabe mit einer willkürlichen
Geschwindigkeit bei der Rückwiedergabe
mit einer normalen Laufgeschwindigkeit, in der Rückwiedergabe bei einer 1/n-Tupel-Geschwindigkeit,
ruhige Wiedergabe, Vorwärtswiedergabe
mit einer 1/n-Tupel-Geschwindigkeit
und Vorwärtswiedergabe
mit einer normalen Geschwindigkeit möglich.
-
Da
der MPEG-Videodecoder 122 ein Decoder ist, der zu MPEG2
4:2:2P@HL kompatibel ist, hat er die Fähigkeit, einen MPEG2 MP@ML-kodierten Strom
mit einer Sextuple-Geschwindigkeit zu decodieren. Folglich, wenn
der Wiedergabe-Schaltkreis 121 einen reproduzierten Strom
zum MPEG-Videodecoder 122 ausgibt, der aus einem MPEG2 MP@ML-
kodierten Strom erzeugt wurde, mit einer Geschwindigkeit, die sechs
mal die Geschwindigkeit der normalen Wiedergabe ist, wird Vorwärtswiedergabe
und Rückwärtswiedergabe
mit einer Sextuple-Geschwindigkeit durch eine ähnlichen Verarbeitung ermöglicht,
indem bewirkt wird, dass die nicht gezeigte Display-Unit oder Anzeige-Vorrichtung,
jeden der extrahierten sechs Rahmen anzuzeigen.
-
Das
heißt,
im Wiedergabegerät
gemäß der vorliegenden
Erfindung, ist glatte Trick-Wiedergabe eines
MPEG2 MP@ML-kodierten Stromes mit einer willkürlichen Geschwindigkeit in
der Rückwiedergabe mit
einer sextuple-Geschwindigkeit, in der Rückwärtswiedergabe mit der normalen
Geschwindigkeit, in der Rückwiedergabe
mit einer 1/n-Tupel-Geschwindigkeit, in der ruhigen Wiedergabe,
in der Vorwärtswiedergabe
mit einer 1/n-Tupel-Geschwindigkeit, in der Vorwärtswiedergabe mit einer normalen Geschwindigkeit
und in der Vorwärtswiedergabe
mit einer Sextuple-Geschwindigkeit möglich.
-
Wenn
der MPEG-Videodecoder 122 die Fähigkeit hat, mit einer N-Tupel-Geschwindigkeit zu
decodieren, ist glatte Trick-Wiedergabe mit einer willkürlichen
Geschwindigkeit, in der Rückwiedergabe mit
einer N-Tuple-Geschwindigkeit, Rückwiedergabe mit
einer normalen Geschwindigkeit, Rückwiedergabe mit einer 1/n- Tupel Geschwindigkeit,
ruhige Wiedergabe, Vorwärtswiedergabe
mit einer 1/n-Tupel-Geschwindigkeit,
Vorwärtswiedergabe
mit einer normalen Geschwindigkeit und Vorwärtswiedergabe mit einer N-Tupel-Geschwindigkeit
im Wiedergabegerät
gemäß der vorliegenden
Erfindung möglich.
-
So
kann z.B. in der Überprüfung der
Videosignale der Inhalt von Videomaterial leicht überprüft werden.
Im Verbessern der Leistungsfähigkeit
der Videomaterialüberprüfungsarbeit
und in der Videosignal-Schnittarbeit kann ein Editierpunkt passend
gewonnen werden und die Leistungsfähigkeit der Effizienz der Editierarbeit
kann verbessert werden.
-
Die
oben beschriebene Reihe der Verarbeitung kann durch Software durchgeführt werden.
Ein Programm, das solche Software bildet, wird von einem Aufzeichnungsmedium
zu einem Computer in der dafür
vorgesehenen Hardware übertragen
oder wird zu einem universellen PC übertragen, der verschiedene
Funktionen durchführen
kann, indem auf ihm verschiedene Programme installiert werden.
-
Dieses
Aufzeichnungsmedium wird durch ein Verpackungs-Medium gebildetn,
auf welchem das Programm gespeichert ist, und das verteilt wird, um
das Programm dem Benutzer separat vom Computer zur Verfügung zu
stellen, wie eine magnetische Scheibe 101 (einschließlich einer
Diskette), eine optische Scheibe 102 (einschließlich CD-ROM
(kompakten Scheibe mit einem Nur-lesbaren-Informationsspeicher)
und DVD (digitale vielseitige Scheibe)), eine magnetoptische Scheibe 103 (einschließlich MD (Mini-Scheibe))oder
einen Halbleiterspeicher 104, wie in 15 oder 20 gezeigt
ist.
-
In
dieser Spezifikation schließen
die Schritte, die das Programm beschreiben, das auf dem Aufzeichnungsmedium
gespeichert ist, nicht nur die Verarbeitung ein, die der beschriebenen
Reihenfolge nacheinander durchgeführt wird, aber auch die Verarbeitung,
die aber nicht notwendigerweise nacheinander durchgeführt wird,
aber parallel oder einzeln durchgeführt wird.
-
Entsprechend
der ersten Decodierungsvorrichtung, dem Decodierungsverfahren und
dem Programm der vorliegenden Erfindung, wird ein kodierter Strom
decodiert und die Decodierungsverarbeitung wird parallel durchgeführt. Folglich
kann ein Videodecoder verwirklicht werden, der zu 4:2:2P@HL kompatibel
ist und zum Durchführen
eines Echtzeit-Ablaufs auf einer praktikablen Schaltkreisgröße fähig ist.
-
Entsprechend
der zweiten Decodierungsvorrichtung, dem Decodierungsverfahren und
dem Programm der vorliegenden Erfindung, wird ein kodierter Strom
durch eine Mehrzahl der Teildecoder decodiert und die Decodierungsverarbeitung
wird in durch die Mehrzahl der Teildecoder parallel durchgeführt. Folglich
kann ein Videodecoder verwirklicht werden, der zu 4:2:2P@HL kompatibel
und ist zum Durchführen des
Echtzeit-Ablaufs in einer praktikablen Schaltkreisgröße fähig ist.
-
Entsprechend
der dritten Decodierungsvorrichtung, dem Decodierungsverfahren und
dem Programm der vorliegenden Erfindung, wird ein quellencodierter
Strom für
jeden Teil decodiert, der ein Bild des quellencodierten Stromes
bildet, und die Decodierungs-Stati
einer Mehrzahl der Teildecoder werden überwacht, während die Mehrzahl der Teildecoder
gesteuert werden und so die Teile zur Mehrzahl der Teildecoder zuweisen,
um die schnellsten Decodierungsverarbeitung zu verwirklichen, die
durch die Teildecoder ungeachtet der Reihenfolge der Teile durchgeführt werden,
die in dem Bild enthalten sind. Folglich kann ein Videodecoder verwirklicht
werden, der zu 4:2:2P@HL kompatibel ist und ist zum Durchführen des
Echtzeit-Ablaufs in einer praktikablen Schaltkreisgröße fähig ist.
-
Entsprechend
der vierten Decodierungsvorrichtung, dem Decodierungsverfahren und
dem Programm der vorliegenden Erfindung, wird ein quellencodierter
Strom für
jeden Teil decodiert, der ein Bild des quellencodierten Stromes
bildet, und die Decodierungs-Stati
einer Mehrzahl der Teildecoder werden überwacht, während die Mehrzahl der Teildecoder
gesteuert werden und so den zu decodierenden Teil dem Teildecoder
zuweisen, der die Decodierung in einer Mehrzahl der Teildecoder,
ungeachtet der Reihenfolge des Teils beendete, der in dem Bild enthalten
war. Folglich kann ein Videodecoder verwirklicht werden, der zu
4:2:2P@HL kompatibel ist und ist zum Durchführen des Echtzeit-Ablaufs in
einer praktikablen Schaltkreisgröße fähig ist.