-
Die
Erfindung betrifft ein Verfahren und eine Vorrichtung für das angepaßte Codieren
eines Informationsstroms in Antwort auf eine Informationsstromdiskontinuität.
-
TECHNISCHER HINTERGRUND
DER BESCHREIBUNG
-
In
verschiedenen Kommunikationssystemen werden die zu übertragenden
Daten komprimiert, so daß die
verfügbare
Bandbreite effizienter verwendet wird. Beispielsweise hat die Moving
Pictures Experts Group (MPEG) verschiedene Normen betreffend digitale
Datenliefersysteme vorgeschlagen. Die erste, bekannt als MPEG-1,
bezieht sich auf die ISO/IEC-Normen 11172. Die zweite, bekannt als
MPEG-2, bezieht sich auf die ISO/IEC-Normen 13818. Ein komprimiertes
digitales Videosystem wird in dem Digitalfernsehnormdokument A/53
des Advanced Television Systems Committee (ATSC) beschrieben.
-
Die
oben erwähnten
Normen beschreiben Datenverarbeitungs- und -manipulationstechniken,
die gut geeignet sind für
die Komprimierung und die Lieferung von Video-, Audio- und anderer
Information unter Verwendung von digitalen Kommunikationssystemen
mit fester oder variabler Länge.
Insbesondere komprimieren die oben erwähnten Normen und andere "MPEG-artige" Normen und Techniken
anschaulich die Videoinformation unter Verwendung von Intraframe-
bzw. Intraeinzelbildcodierungstechniken (wie z.B. die Lauflängencodierung,
die Huffman-Codierung und dergleichen) und von Interframe- bzw.
Intereinzelbildtechniken (wie z.B. die vorwärts- und rückwärtsprädiktive Codierung, die Bewegungskompensation
und dergleichen).
-
Insbesondere
im Fall von Videoverarbeitungssystemen werden MPEG- und MPEG-artige
Videoverarbeitungssysteme charakterisiert durch die vorhersagebasierte
Komprimierungscodierung von Videoeinzelbildern mit oder ohne Intra-
und/oder Interframebewegungskompensationscodierung.
-
In
einem typischen MPEG-Codierer wird ein empfangener Videostrom, der
eine Mehrzahl von Videoeinzelbildern aufweist, codiert entsprechend
einer vorbestimmten Bildgruppen- bzw. "group of pictures"- (GOP-) Struktur. Das heißt, der
empfangene Videostrom wird codiert, um eine GOP zu erzeugen, die
z.B. ein intracodiertes Frame (I-Frame), gefolgt von einem oder
mehreren vorwärts
vorhergesagten codierten Einzelbildern (P-Frames) und bidirektional
(z.B. vorwärts
und rückwärts) vorhergesagten
codierten Einzelbildern (B-Frames), aufweist. Im Fall einer Szenenveränderung
in dem empfangenen Videostrom kann das erste Einzelbild der neuen
Szene sich signifikant von dem vorherigen Ankerframe unterscheiden.
Somit kann es notwendig sein, daß der Codierer einen großen Prozentsatz
der Makroblöcke
in dem ersten Einzelbild intracodiert. In dieser Situation codieren
Codierer typischerweise das Einzelbild als ein Ankerframe, von dem
nachfolgende Frames innerhalb der vorbestimmten GOP-Struktur vorhergesagt
werden.
-
Falls
das neue Ankerframe als ein P-Frame codiert werden sollte, beeinträchtigt seine
Intracodierung unglücklicherweise
die Ratensteuerung- (RC-) Vorhersagen, die von dem Codierer ver wendet
werden. Abhängig
davon, wie die RC durchgeführt
wird, kann dies die codierte Qualität des P-Frames selbst und die
Qualität über die
wenigen Einzelbilder bzw. Frames, die nach dem P-Frame codiert werden, negativ beeinflussen.
Insbesondere wird der Effekt am größten sein, wenn das vorherige
Ankerframe ein I-Frame war.
-
Zusätzlich,
es sei denn, das erste Ankerframe nach einer Szenenveränderung
wird als I-Frame
bezeichnet statt als ein P-Frame mit den meisten oder allen seiner
Makroblöcke
intracodiert, wird wahlfreier Zugriff (d.h. unabhängige Decodierbarkeit)
nahe des Beginns der Szenenveränderung
nicht erreicht. Um somit wahlfreien Zugriff beizubehalten, codieren
einige Codierer einfach das erste Einzelbild nach einer Szenenveränderung
als ein I-Frame, unabhängig
davon, ob es als P-Frame
oder B-Frame terminiert wurde. Solch ein Codierverhalten beeinflußt ebenso
das RC-Verhalten
des Codierers.
-
Es
wurde daher als wünschenswert
erachtet, die oben beschriebenen Probleme anzusprechen durch Bereitstellen
eines Verfahrens und einer entsprechenden Vorrichtung für das Anpassen
des Verhaltens eines MPEG-artigen Codierers an Szenenveränderungen
innerhalb eines empfangenen Videostroms, so daß die Codierqualität und der
wahlfreie Zugriff auf den codierten Strom nahe der Szenenveränderungspunkte
beibehalten wird. Allgemeiner gesagt wurde es als wünschenswert
erachtet, ein Verfahren und eine entsprechende Vorrichtung für das Anpassen
des Verhaltens eines MPEG-artigen Codierers an Informationsdiskontinuitäten innerhalb
eines empfangenen Informationsstroms irgendeines Typs bereitzustellen,
so daß die
Codierqualität und
der wahlfreie Zugriff auf den codierten Strom in der Nähe von Informationsdiskontinuitätspunkten
beibehalten wird.
-
Die
EP 0 825 782 beschreibt
das Erfassen einer Diskontinuität
innerhalb der Abfolge von nicht codierten Videoeinzelbildern und
das Anpassen der Bildgruppenstruktur (GOP), so daß der erste
Ankerframe, der der Diskontinuität
folgt, ein I-Frame aufweist, und das erste Ankerframe, das der Diskontinuität vorausgeht,
ein P-Frame aufweist.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Ein
Aspekt der vorliegenden Erfindung stellt ein Verfahren zur komprimierenden
Codierung einer Sequenz von nicht codierten Informationseinzelbildern
bereit, um eine Abfolge von codierten Informationseinzelbildern
im wesentlichen in Übereinstimmung
mit einer Bildgruppeninformationsstruktur zu erzeugen, wobei jede
GOF zumindest eine Unter-GOF aufweist, wobei jede Unter-GOF zumindest
ein Ankerframe aufweist, wobei jedes Ankerframe ein intracodiertes
Frame (I-Frame-Typ) oder ein vorwärts vorhergesagtes Frame (P-Frame-Typ)
aufweist, wobei das Verfahren die Schritte aufweist: Codieren dieser
nicht codierten Informationsframes, die als Ankerframe des P-Frame-Typs
oder des I-Frame-Typs vorgesehen sind, und ebenso derjenigen nicht
codierten Informationsframes, die als Ankerframes des anderen Typs,
I-Frame-Typ oder P-Frame-Typ, vorgesehen sind, als sowohl I-Frame
als auch P-Frame; und in Antwort auf eine Informationsdiskontinuität zwischen
Frames innerhalb der Abfolge von nicht codierten Informationsframes
Anpassen der GOF-Informationsstruktur,
so daß ein
erstes Ankerframe, das der Informationsdiskontinuität folgt,
ein I- Frame aufweist,
und das erste Ankerframe, das der Informationsdiskontinuität vorausgeht,
ein P-Frame aufweist.
-
Ein
anderer Aspekt der vorliegenden Erfindung stellt eine Vorrichtung
zur Verfügung,
die aufweist: eine Codiereinrichtung für die komprimierende Codierung
einer Sequenz von nicht codierten Informationsframes, um eine Sequenz
bzw. Abfolge von codierten Informationsframes zu erzeugen im wesentlichen
in Übereinstimmung
mit einer Bildgruppeninformationsstruktur, wobei jede GOF zumindest
eine Unter-GOF aufweist, wobei jede Unter-GOF zumindest ein Ankerframe
aufweist, wobei jedes Ankerframe ein intracodiertes Frame (I-Frame-Typ)
oder ein vorwärts
vorhergesagtes Frame (P-Frame-Typ) aufweist, wobei die Codiereinrichtung
betreibbar ist, um diese nicht codierten Informationsframes, die
als Ankerframe vom P-Frame-Typ oder vom I-Frame-Typ vorgesehen sind,
und optional ebenso diese nicht codierten Informationsframes, die
als Ankerframes des anderen Typs, des P-Frame-Typs oder des I-Frame-Typs,
vorgesehen sind, sowohl als I-Frame als auch als P-Frame zu codieren,
und Steuer- und Anpaßeinrichtungen
für das
Steuern der Codiereinrichtung in Antwort auf Anzeichen einer Interframeinformationsdiskontinuität innerhalb
der Sequenz von nicht codierten Informationseinzelbildern und für das Anpassen
der GOF-Informationsstruktur, so daß ein erstes Ankerframe, das
der Informationsdiskontinuität
folgt, ein I-Frame aufweist, und ein erstes Ankerframe, das der
Informationsdiskontinuität
vorhergeht, ein P-Frame aufweist.
-
KURZE BESCHREIBUNG DER
FIGUREN
-
Die
Lehren der vorliegenden Erfindung können leicht verstanden werden
durch Inbetrachtziehen der folgenden detaillierten Beschreibung
in Verbindung mit den begleitenden Zeichnungen, in denen:
-
1 ein
MPEG-artiges Codiersystem 100 gemäß der Erfindung darstellt,
-
2 ein
Flußdiagramm
einer adaptiven Frameschaltroutine 200 darstellt, die für die Verwendung
in dem MPEG-artigen Codierer, der in 1 dargestellt
ist, geeignet ist,
-
3 ein
anderes MPEG-artiges Codiersystem 100 darstellt,
-
4 ein
Flußdiagramm
einer adaptiven Frameschaltroutine 400 darstellt, die für die Verwendung
in dem MPEG-artigen Codierer, der in 3 dargestellt
ist, geeignet ist,
-
5 ein
anderes MPEG-artiges Codiersystem 500 darstellt,
-
6 einen
Controller darstellt, der für
die Verwendung in dem MPEG-artigen Codierer, der in 1, 3 oder 5 dargestellt
ist, geeignet ist.
-
Um
das Verständnis
zu erleichtern, wurden identische Bezugszahlen verwendet, wo dies
möglich
war, um identische Elemente, die den Figuren gemein sind, zu bezeichnen.
-
DETAILLIERTE BESCHREIBUNG
-
Die
Erfindung wird im Kontext eines MPEG-artigen Codiersystems beschrieben,
das einen Eingangsinformationsstrom IN codiert, um einen codierten
Ausgangsinformationsstrom OUT zu erzeugen, der nominell einer Einzelbildgruppen-
(GOF-) oder Bildgruppen- (GOP-) Datenstruktur entspricht. Jede GOF/GOP-Datenstruktur
weist N Frames auf, die als eine Mehrzahl von Unter-GOF- oder Unter-GOP-Datenstrukturen
mit einer Maximalgröße von M
Frames angeordnet sind. Jede Unter-GOF/GOP weist ein entsprechendes
Ankerframe (z.B. ein I-Frame oder ein P-Frame) und optional ein
oder mehrere Nicht-Ankerframes (z.B. B-Frames) auf. In Antwort auf
eine Interframeninformationsdiskontinuität innerhalb des Eingangsinformationsstroms
IN paßt
die Erfindung den codierten Ausgangsinformationsstrom an, so daß das erste
Ankerframe, der auf die Informationsdiskontinuität folgt, ein I-Frame aufweist,
während
das erste Ankerframe, das der Informationsdiskontinuität vorausgeht,
ein P-Frame aufweist.
-
1 stellt
ein MPEG-artiges Codiersystem 100 gemäß der Erfindung dar. Genauer
gesagt stellt 1 ein MPEG-artiges Codiersystem
dar, das ein erstes Codiermodul 101, ein zweites Codiermodul 102,
einen Controller 103, einen Selektor 104 und einen
Ausgangspuffer 160 aufweist. Das MPEG-artige Codiersystem 100 empfängt und
codiert einen Eingangsinformationsstrom IN, der eine Mehrzahl von
nicht komprimierten Informationsframes aufweist, beispielsweise
eine Abfolge von Bildern, die einen Videoinformationsstrom bilden,
um einen codierten Ausgangsinformationsstrom OUT zu erzeugen.
-
Das
erste Codiermodul 101 empfängt und codiert den Eingangsinformationsstrom
IN, um einen ersten codierten Informationsstrom S101 zu erzeugen,
der teilweise einer Framegruppen-(GOF-)
oder Bildgruppen- (GOP-) Datenstruktur entspricht. Der erste codierte
Informationsstrom S101 entspricht teilweise der GOF- oder GOP-Datenstruktur,
da das erste Codiermodul 101 jedes Ankerframe als ein vorwärts prädiktiv codiertes
Einzelbild (P-Frame) codiert, selbst wenn das Einzelbild gemäß der GOF/GOP-Datenstruktur
als intracodiertes Frame (I-Frame) geplant war. Somit beinhaltet
der erste codierte Informationsstrom S101 Unter-GOFs oder Unter-GOPs
mit P-Frames als Ankerframes. Der erste codierte Informationsstrom
S101 wird in einem Unter-GOF/GOP puffergespeichert und dann mit
einem ersten Eingang des Selektors 104 verbunden.
-
Das
zweite Codiermodul 102 empfängt und codiert den Eingangsinformationsstrom
IN, um einen zweiten codierten Informationsstrom S102 zu erzeugen,
der nur intracodierte Ankerframes aufweist. Genauer gesagt codiert
das zweite Codiermodul 102 jedes Ankerframe als ein intracodiertes
Frame (I-Frame), selbst wenn das Einzelbild entsprechend der GOF/GOP-Datenstruktur,
die von dem ersten Codiermodul 101 verwendet wird, als
P-Frame vorgesehen war. Solch ein Frame wird als dual codiertes
Frame bezeichnet, da es als ein I-Frame durch das zweite Codiermodul 102 und
als ein P-Frame durch das erste Codiermodul 101 codiert
wird. Somit beinhaltet der zweite codierte Informationsstrom S102
nur intracodierte Ankerframes. Der zweite codierte Informationsstrom
S102 wird in einem Unter-GOF/GOP-Pufferspeicher gespeichert und
dann mit einem zweiten Eingang des Selektors 104 verbunden.
Zusätzlich
wird jedes Einzelbild, das von dem zweiten Cadierer 102 codiert
wurde, rekonstruiert (d.h. decodiert), um ein Referenzankerframe
bereitzustellen, das für
die Verwendung in einem bewegungsvorhergesagten Abschnitt des ersten
Cadiermoduls 101 geeignet ist, wie unten erörtert wird.
-
Der
Ausgangspuffer 160 erzeugt ein Ratensteuersignal RC, das
einen Pufferverwendungsgrad eines Ferndecoderpuffers anzeigt. Das
Ratensteuersignal RC ist mit dem ersten Codiermodul 101 und
dem zweiten Codiermodul 102 verbunden. Die Codiermodule
verwenden das Ratensteuer signal, um die Quantisierungsparameter
ihrer jeweiligen Codierprozesse anzupassen, so daß die Bitrate
ihrer entsprechenden Ausgangssignale S101 und S102 gesteuert werden
können,
wodurch ein Pufferüberlauf
oder -unterlauf in einem entfernten Decoderpuffer verhindert wird.
-
Der
Controller 103 ist mit einem Steuereingang des Selektors 104 verbunden
und erzeugt ebenso ein erstes Codiersteuersignal C1 und ein zweites
Codiersteuersignal C2 für
die Steuerung des ersten Codiermoduls 101 bzw. des zweiten
Codiermoduls 102. Der Controller 103 arbeitet
normalerweise in einem kontinuierlichen Betriebsmodus, wobei der
Informationsstrom, der dem Ausgangspuffer bereitgestellt wird, einer
festgelegten GOF/GOP-Datenstruktur entspricht. Um beispielsweise
das Auftreten von aufeinanderfolgenden Ankerframes vom I-Frame-Typ
in dem bereitgestellten Informationsstrom zu vermeiden, tritt der
Controller 103 in einen diskontinuierlichen Betriebsmodus
im Fall von z.B. einer Szeneveränderung
oder einer anderen Informationsstromdiskontinuität. In dem diskontinuierlichen
Betriebsmodus verändert
der Controller 103 das erste (temporäre) Ankerframe von einem I-Frame
in ein P-Frame. Dies ist möglich,
da jedes Ankerframe als sowohl ein I-Frame als auch ein P-Frame
dual codiert ist, wie vorher erwähnt
wurde. Um solch eine Informationsdiskontinuität zu erfassen, empfängt der
Controller 103 zumindest den Eingangsinformationsstrom
IN oder ein modusentscheidungsanzeigendes Signal MD von dem zweiten
Codiermodul 102. Die Erfassung einer Informationsdiskontinuität wird unten
beschrieben. Kurz gesagt, wo mehr als eine Grenzzahl von Makroblöcken für die Intracodierung
(statt der Intercodierung oder der prädiktiven Codierung) ausgewählt wird,
ist das gegenwärtige
Informationsframe, das codiert wird, inhärent ausreichend unterschiedlich
von einem Ankerframe, auf dem die Vorhersagen basieren, um daraus
zu schließen,
daß eine
Informationsdiskontinuität,
wie z.B. eine Szeneveränderung,
aufgetreten ist.
-
Das
erste Codiermodul 101 weist einen Addierer 155,
ein Modusentscheidungsmodul 105P, ein diskretes Kosinustransformationsmodul
(DCT) 110P, ein Quantisiermodul (Q) 115P, ein
variable-Längen-Codierungsmodul
(VLC) 120P, einen inversen Quantisierer (Q–1) 125P,
ein inverses diskretes Kosinustransformationsmodul (DCT–1) 130P,
einen Subtrahierer 156, einen Pufferspeicher 135P,
ein Ratensteuermodul 140P, ein Bewegungskompensationsmodul 145P,
ein Bewegungsabschätzmodul 150P und
ein Ankerframespeichermodul 170 auf. Obgleich das zweite
Codiermodul 102 eine Mehrzahl von Modulen aufweist, wird
der Fachmann erkennen, daß die
Funktionen, die von den verschiedenen Modulen durchgeführt werden,
nicht in getrennten Modulen isoliert sein müssen, wie dies in 1 gezeigt
ist. Beispielsweise ist der Satz von Modulen, der das Bewegungskompensationsmodul 145P,
das inverse Quantisierungsmodul 125P und das inverse DCT-Modul 130P aufweist,
allgemein als ein "eingebetteter
Decoder" bekannt.
-
In
dem Fall, daß der
Eingangsinformationsstrom IN einen Videoinformationsstrom aufweist,
stellt der Videoinformationsstrom eine Abfolge von Bildern auf dem
Eingangssignalpfad IN dar, der digitalisiert und dargestellt wird
anschaulich als ein Helligkeitssignal und zwei Farbdifferenzsignale
(Y, Cr, Cb) in Übereinstimmung mit
den MPEG-Standards. Diese Signale werden weiterhin in eine Mehrzahl
von Schichten (Abfolge, Bildgruppe, Bild, Schnitt, Makroblock und
Block) unterteilt, so daß jedes
Bild (Einzelbild) durch eine Mehrzahl von Makroblöcken dargestellt
wird. Jeder Makroblock weist vier (4) Helligkeitsblöcke, einen
Cr-Block und einen Cb-Block
auf, wobei ein Block festgelegt ist als eine acht- (8) mal-acht-
(8) Abfrageanordnung. Die Unterteilung eines Bildes in Blockeinheiten
verbessert die Fähigkeit,
Veränderungen
zwischen zwei aufeinanderfolgenden Bildern zu erkennen, und verbessert
die Bildkomprimierung durch die Eliminierung von transformierten
Koeffizienten mit niedriger Amplitude (unten erörtert). Das digitalisierte
Signal kann optional eine Vorverarbeitung erfahren, wie z.B. eine
Formatumwandlung für
das Auswählen
eines geeigneten Fensters, einer geeigneten Auflösung und eines Eingangsformats.
-
Der
Subtrahierer 155 erzeugt ein Restsignal (ebenso im Stand
der Technik als der Rest oder Restmakroblock bezeichnet) durch Subtrahieren
eines vorhergesagten Makroblockes auf dem Signalpfad PF von einem
Eingangsmakroblock auf dem Signalpfad IN.
-
Das
Modusentscheidungsmodul 150P empfängt den Restmakroblock (d.h.
den vorhergesagten Makroblock) von dem Subtrahierer 155 und
den Eingangsmakroblock von dem Signalpfad IN. Falls der vorhergesagte
Makroblock im wesentlichen ähnlich
dem Eingangsmakroblock ist (d.h. die Reste sind relativ klein und werden
unter Verwendung von sehr wenigen Bits codiert), dann wählt das
Modusentscheidungsmodul 105P das Restsignal von dem Subtrahierer 155 für die Intercodierung
aus. Das heißt,
der Makroblock wird als ein bewegungskompensierter Makroblock, d.h.
Bewegungsvektor(en) und verknüpfter)
Reste) codiert. Falls jedoch der Unterschied zwischen dem vorhergesagten
Makroblock und dem Eingangsmakroblock wesentlich ist, sind die Reste
schwierig zu codieren. Folglich arbeitet das System effizienter
durch das direkte Codieren des Eingangsmakroblockes statt das Codieren
des bewegungskompensierten Restmakroblocks.
-
Der
obige Auswahlprozeß ist
bekannt als eine Auswahl des Codiermodus. Das Codieren des Eingangsmakroblocks
wird als Intracodieren bezeichnet, während das Codieren der Reste
als Intercodierung bezeichnet wird. Die Auswahl zwischen diesen
zwei Modi ist bekannt als die Intra-Inter-Entscheidung (IID). Die IID wird typischerweise
berechnet durch als erstes Berechnen der Varianz des Restmakroblocks
(Var R) und der Varianz des Eingangsmakroblocks (Var I). Die Codierentscheidung
basiert auf diesen Werten. Es gibt verschiedene Funktionen, die
verwendet werden können,
um diese Entscheidung zu fällen.
Beispielsweise unter Verwendung der einfachsten Funktion, falls
Var R kleiner als Var I ist, wählt
die IID den Intermodus. Umgekehrt, falls Var I geringer als Var
R ist, wählt
die IID den Intramodus.
-
Optional
stellt das Modusentscheidungsmodul 105P ein Ausgangssignal
MD bereit, das die Anwesenheit oder die Abwesenheit einer Informationsstromdiskontinuität anzeigt.
Beispielsweise zeigt in einer Ausführungsform der Erfindung das
Ausgangssignal MD die Anzahl von Makroblöcken innerhalb eines bestimmten Informationsframes
an, das durch den IID-Prozeß als
intracodierte Makroblöcke
ausgewählt
wurde. Eine große Anzahl
von intracodierten Makroblöcken
innerhalb eines bestimmten Informationsframes zeigt an, daß das Informationsframe
sich im wesentlichen von einem vorhergehenden Informationsframe
unterscheidet. Solch ein wesentlicher Unterschied kann aufgrund
einer Informationsdiskontinuität
vorliegen, wie z.B. ein Szenenschnitt oder eine Szenenveränderung
in einem Eingangsvideoinformationsstrom. Der Controller kann konditioniert werden,
um Exkursionen über
eine vorbestimmte Anzahl von intracodierten Makroblöcken innerhalb
eines Einzelbildes als Anzeige eines Szeneschnitts zu interpretieren.
Der Betrieb des Controllers wird detaillierter unten unter Bezug
auf die 2 und 3 beschrieben.
-
Der
ausgewählte
Block (d.h. der Eingangsmakroblock oder Restmakroblock) wird dann
mit dem diskreten Kosinustransformationsmodul (DCT) 110P verbunden.
Das DCT-Modul 110P legt einen diskreten Kosinustransformationsprozeß an jeden
Block des empfangenen Makroblocks an, um einen Satz von anschaulich acht
(8) mal acht (8) Blöcken
von DCT-Koeffizienten zu erzeugen. Die DCT-Basisfunktion oder die
Subbandzerlegung erlaubt die effektive Verwendung von psychovisuellen
Kriterien, was für
den nächsten
Schritt der Quantisierung wichtig ist. Es sei bemerkt, daß, obwohl
das DCT-Modul angepaßt
werden kann, um jeden Größenblock
oder Makroblock zu verarbeiten, obgleich die acht-mal-acht-Blockgröße gemeinhin
in MPEG-artigen Komprimierungssystemen verwendet wird. Die DCT-Koeffizienten,
die von dem DCT-Modul 110P erzeugt wurden, werden mit dem
Quantisiermodul 115P verbunden.
-
Das
Quantisierungsmodul 115P quantisiert die empfangenen DCT-Koeffizienten,
um einen quantisierten Ausgangsblock zu erzeugen. Der Prozeß der Quantisierung
reduziert die Genauigkeit, mit der die DCT-Koeffizienten durch Teilen
der DCT-Koeffizienten durch einen Satz von Quantisierungswerten
mit geeigneter Rundung, um ganze Zahlen zu bilden, dargestellt werden.
Die Quantisierungswerte können
einzeln für
jeden DCT-Koeffizienten eingestellt werden unter Verwendung von
Kriterien basierend auf der Sichtbarkeit der Basisfunktionen (bekannt
als visuell gewichtete Quantisierung). Der Quantisierungswert korrespondiert
nämlich zu
dem Grenzwert für
die Sichtbarkeit einer gegebenen Basisfunktion, d.h. die Koeffizientenamplitude,
die gerade so vom menschlichen Auge erfaßbar ist. Durch Quantisieren
der DCT-Koeffizienten mit diesem Wert werden viele der DCT-Koeffizienten
in einen Wert "Null" umgewandelt, wodurch
die Bildkomprimierungseffizienz verbessert wird. Der Prozeß der Quantisierung
ist eine Schlüsseloperation
und ist ein wichtiges Werkzeug, um visuelle Qualität zu erzielen
und den Codierer zu steuern, um seinen Ausgang an eine gegebene
Bitrate anzupassen (Ratensteuerung). Da ein anderer Quantisierungswert
an jedem DCT-Koeffizienten
angewendet werden kann, wird eine "Quantisierungsmatrix" allgemein als eine Referenztabelle
errichtet, z.B. eine Helligkeitsquantisierungstabelle oder eine
Farbquantisierungstabelle. Der Codierer wählt somit einen Quantisierungsmatrix
aus, die bestimmt, wie jeder Frequenzkoeffizient in dem transformierten
Block quantisiert wird.
-
Das
Ratensteuermodul 140P steuert die Quantisierungsskala (Schrittgröße), die
verwendet wird, um die DCT-Koeffizienten zu quantisieren, und/oder
steuert die Anzahl von DCT-Koeffizienten, die von dem System in
Antwort auf ein Ratensteuersignal RC, das von dem Ausgangspuffer 160 erzeugt
wird, codiert werden. Das Ratensteuersignal RC, das von dem Ausgangspuffer 160 erzeugt
wird, zeigt einen Verwendungsgrad des Ausgangspuffers 160 an.
Die Hauptaufgabe des Ratensteuermoduls 140P ist es, den
Füllgrad
oder Verwendungsgrad des Ausgangspuffers 160 zu verwalten,
von dem eine konstante Ausgangsbitrate einem Übertragungskanal bereitgestellt
wird. Die konstante Bitrate muß beibehalten
werden, obgleich die Codierrate signifikant variieren kann abhängig von
dem Inhalt jedes Bildes und der Abfolge von Bildern.
-
Das
Ratensteuermodul 140P stellt die Ausgangsbitrate des ersten
Codiermoduls 101 ein durch Auswählen einer Quantisierungsskala
für jedes
Einzelbild in einer Art und Weise, die die Gesamtqualität des Videobildes
beibehält,
während
die Codierungsrate gesteuert wird. Eine Quantisierungsskala wird
nämlich
für jedes Einzelbild
ausgewählt,
so daß die
Zielbitrate für
das Bild erreicht wird, während
eine gleichförmige
visuelle Qualität über die
gesamte Sequenz von Bildern beibehalten wird. In dieser Art und
Weise arbeitet das Ratensteuermodul 140P, um Pufferüberlauf-
und -unterlaufbedingungen auf der Decoderseite (z.B. innerhalb eines Receivers
oder einer Zielspeichereinrichtung, nicht gezeigt) nach der Übertragung
des Ausgangsinformationsstroms zu verhindern.
-
Optional
reagiert das Ratensteuermodul 140P auf ein Ratensteuersignal
RC1, das einen Verwendungsgrad des Puffers 135P anzeigt.
Wie vorher erwähnt,
wird der Puffer 135P verwendet, um z.B. zumindest ein codiertes
Unter-GOF/GOP zu halten, das ein Ankerframe (z.B. ein I-Frame oder
ein P-Frame) und eine Mehrzahl von Nicht-Ankerframes (z.B. B-Frames)
gemäß der GOF/GOP-Datenstruktur
aufweist. Falls daher die Kapazität des Puffers 135P begrenzt
ist, dann muß das
Ratensteuermodul 140P sicherstellen, daß der Puffer 135P nicht überläuft.
-
Eine
weitere wichtige Aufgabe des Ratensteuermoduls 140P ist
es, sicherzustellen, daß der
Bitstrom, der von dem Codierer erzeugt wird, einen Eingangspuffer
des Decoders nicht überlaufen
oder unterlaufen läßt. Die Überlauf-
und Unterlaufsteuerung wird verwirklicht durch Beibehalten und Überwachen
eines virtuellen Puffers innerhalb des Codierers. Dieser virtuelle
Puffer ist als der Videopufferverifizierer (VBV) bekannt. Um die
richtige Decodereingangspufferbitsteuerung sicherzustellen, errichtet
der Ratensteuerprozeß des
Codierers für
jedes Bild und ebenso für
jeden Makroblock von Pixeln, den das Bild aufweist, einen Bitanteil
bzw. eine Bitquote (hier ebenso als Bitbudget bezeichnet). Durch
Codieren der Blöcke
und des Gesamtbildes unter Verwendung von jeweiligen Anzahlen von
Bits, die innerhalb des jeweiligen Bitbudgets sind, zeigt der VBV
keinen Überlauf
oder Unterlauf. Da der VBV den Betrieb des Eingangspuffers des Decoders
spiegelt, falls der VBV keinen Unterlauf oder Überlauf zeigt, wird dann der
Eingangspuffer des Decoders keinen Unterlauf oder Überlauf
zeigen.
-
Um
solch eine Puffersteuerung zu verwirklichen, macht der Ratencontroller
die Standardannahme in der Videocodierung, daß das gegenwärtige Bild
dem vorherigen Bild ähnlich
ist. Falls diese Annahme zutreffend ist, werden die Pixelblöcke in dem
Bild bewegungskompensiert durch die Codiertechnik und sobald sie kompensiert
sind, erfordern sie sehr wenig Bits, um codiert zu werden. Dieses
Verfahren arbeitet sehr gut, solange die tatsächliche Anzahl von Bits, die
notwendig ist, um das Bild zu codieren, nahe der Zielzahl von Bits ist,
die dem Bild zugewiesen wurde, d.h. daß die Anzahl von Bits, die
tatsächlich
verwendet wird, innerhalb der Bitquote für dieses Bild liegt.
-
Die
quantisierten DCT-Koeffizienten (z.B. ein 8×8-Block von quantisierten
DCT-Koeffizienten),
die von dem Quantisierungsmodul 115P erzeugt wurden, sind
mit dem variablen Längencodierungsmodul
(VLC) verbunden, wo der zweidimensionale Block von quantisierten
Koeffizienten in einer "Zick-Zack"-Ordnung abgetastet
wird, um ihn in einen eindimensionalen String von quantisierten
DCT-Koeffizienten umzuwandeln. Diese Zick-Zack-Abtastordnung ist
eine näherungs weise
sequentielle Ordnung der DCT-Koeffizienten von der niedrigsten Raumfrequenz
zu der höchsten.
Das variable-Längen-Codierungs-Modul
(VLC) 120 codiert dann den String von quantisierten DCT-Koeffizienten
und jegliche Nebeninformation für
den Makroblock unter Verwendung der variablen Längencodierung und der Lauflängencodierung.
-
Um
die Bewegungsvorhersage und -kompensation durchzuführen, regeneriert
das erste Codierungsmodul 101 die codierten Ankerframes
für die
Verwendung als Referenzframes. Genauer gesagt werden die quantisierten
DCT-Koeffizienten (z.B. ein 8×8-Block
von quantisierten DCT-Koeffizienten),
die von dem Quantisierungsmodul 115P erzeugt wurden, mit
dem inversen Quantisierungsmodul (Q–1) 125P verbunden,
wo ein inverser Quantisierungsprozeß auf jedem Makroblock durchgeführt wird.
Die resultierenden dequantisierten DCT-Koeffizienten (z.B. ein 8×8-Block
von dequantisierten DCT-Koeffizienten) werden zu dem inversen DCT-Modul
(DCT–1) 130P geleitet,
wo ein inverser DCT-Prozeß auf
jedem Makroblock durchgeführt
wird, um ein decodiertes Fehlersignal zu erzeugen. Das Fehlersignal,
das von dem DCT–1-Modul 130P erzeugt
wurde, wird mit dem Eingang eines Addierers 156 verbunden.
-
Das
Bewegungsschätzmodul 150P empfängt den
Eingangsinformationsstrom IN und einen gespeicherten Ankerframeinformationsstrom
AOUT. Der gespeicherte Ankerframeinformationsstrom AOUT wird durch
das Ankerframespeichermodul 170 bereitgestellt, was einen
Eingangsankerframeinformationsstrom AIN speichert, der von dem zweiten
Codiermodul 101 bereitgestellt wird und der unten genauer
erläutert
wird. Kurz gesagt stellt der gespeicherte Ankerframeinformationsstrom
AOUT eine decodierte Version des intracodierten ersten Ankerframes
einer GOF oder GOP, die gegenwärtig
von dem zweiten Codiermodul 102 (und dem ersten Codiermodul 101)
codiert wird, zur Verfügung.
-
Das
Bewegungsschätzmodul 150P schätzt die
Bewegungsvektoren ab unter Verwendung des Eingangsinformationsstroms
IN und des gespeicherten Ankerframeinformationsstroms AOUT. Ein
Bewegungsvektor ist ein zweidimensionaler Vektor, der von der Bewegungskompensation
verwendet wird, um einen Offset bzw. eine Verschiebung von der Koordinatenposition
eines Blockes in dem gegenwärtigen
Bild gegenüber
den Koordinaten in einem Referenzframe bereitzustellen. Die Referenzframes
können
vorwärts-prädiktiv codierte Frames
(P-Frames) oder bidirektional (d.h. vorwärts und rückwärts) prädiktive Frames (B-Frames) sein.
Die Verwendung von Bewegungsvektoren verbessert die Bildkomprimierung
stark durch Reduzieren der Informationsmenge, die auf einem Kanal übertragen
wird, da nur die Veränderungen
zwischen dem gegenwärtigen und
den Referenzframes codiert und übertragen
werden. Die Bewegungsvektoren sind mit dem Bewegungskompensationsmodul 145P und
dem VLC-Modul 120P verbunden.
-
Das
Bewegungskompensationsmodul 145P verwendet die empfangenen
Bewegungsvektoren, um die Effizienz der Vorhersage der Abfragewerte
zu verbessern. Die Bewegungskompensation schließt eine Vorhersage ein, die
Bewegungsvektoren verwendet, um Offsetwerte gegenüber den
vergangenen und/oder zukünftigen
Referenzframes bereitzustellen, die vorher decodierte Abfragewerte
enthalten, die verwendet werden, um den Vorhersagefehler zu bilden.
Das Bewegungskompensationsmodul 150P verwendet nämlich das
vorher decodierte Frame und die Bewegungsvekto ren, um eine Abschätzung des
gegenwärtigen
Frames zu konstruieren. Weiterhin wird der Fachmann erkennen, daß die Funktionen,
die von dem Bewegungsschätzmodul und
dem Bewegungskompensationsmodul durchgeführt werden, in einem kombinierten
Modul, z.B. einen Einzelblockbewegungskompensator, implementiert
werden können.
-
Vor
dem Durchführen
der Bewegungskompensationsvorhersage für einen gegebenen Makroblock muß ein Codiermodus
ausgewählt
werden. In dem Gebiet der Codiermodusentscheidung liefern MPEG-
und MPEG-artige Normen eine Vielzahl von unterschiedlichen Makroblockcodiermodi.
Genauer gesagt stellt MPEG-2 Makroblockcodiermodi zur Verfügung, die
die Intramode, keine Bewegungskompensationsmode (no MC), die Frame/Feld/Dual-Primzahlbewegungskompensationsintermode,
die vorwärts/rückwärts/mittlere
Intermode und die Feld/Frame-DCT-Mode beinhalten.
-
Sobald
ein Codiermodus ausgewählt
ist, erzeugt das Bewegungskompensationsmodul 145P ein bewegungskompensiertes
Prädiktionsframe
(d.h. ein vorhergesagtes Bild) auf dem Pfad PF der Inhalte des Blockes
basierend auf vergangenen und/oder zukünftigen Referenzbildern. Dieses
bewegungskompensierte Prädiktionsframe
auf dem Pfad PF wird über
den Subtrahierer 155 von dem Eingangsinformationsframe
IN (z.B. ein Videobild) in dem gegenwärtigen Makroblock abgezogen,
um ein Fehlersignal oder prädiktives
Restsignal zu bilden. Das Bilden des prädiktiven Restsignals entfernt
effektiv redundante Information in dem Eingangsvideobild. Wie vorher
erörtert,
ist das prädiktive
Restsignal mit dem Modusentscheidungsmodul 105P für die weitere
Verarbeitung verbunden.
-
Der
VLC-Datenstrom, der von dem VLC-Codierer 120P erzeugt wird,
wird in dem Puffer 135P empfangen, anschaulich ein "First-In-First-Out"- (FIFO-) Puffer,
der in der Lage ist, zumindest eine codierte Unter-GOF/GOP entsprechend
der GOF/GOP-Datenstruktur zu halten. Der VLC-Datenstrom, der im Puffer 135P abgelegt
ist, wird selektiv über
den Selektor 104 mit dem Ausgangspuffer 160, anschaulich
ein FIFO-Puffer, verbunden.
-
Eine
Folge der Verwendung unterschiedlicher Bildtypen und der variablen
Längencodierung
ist die, daß die
Gesamtbitrate zu dem Ausgangspuffer 160 variabel ist. Die
Anzahl von Bits, die verwendet wird, um jedes Einzelbild zu codieren,
kann nämlich
unterschiedlich sein. In Anwendungen, die einen Kanal mit fester Rate
einschließen
für das
Koppeln des Ausgangsinformationsstroms OUT zu beispielsweise einem
Speichermedium oder einem Telekommunikationskanal, wird der Ausgangspuffer 160 verwendet,
um den Codiererausgang zu dem Kanal anzupassen für das Angleichen der Bitrate.
Das Ausgangssignal OUT des FIFO-Puffers 160 ist somit eine
komprimierte Darstellung des Eingangsinformationsstroms IN.
-
Das
zweite Codiermodul 120 weist ein diskretes Kosinustransformationsmodul
(DCT) 110I, ein Quantisierermodul (Q) 115I, ein
variable-Längen-Codierungsmodul
(VLC) 120I, ein inverses Quantisierungsmodul (Q–1),
ein inverses diskretes Kosinustransformationsmodul (DCT–1) 130I,
einen Puffer 135I und ein Ratensteuermodul 140I auf.
Die verschiedenen Module, die in dem zweiten Codiermodul 102 eingeschlossen
sind, sind miteinander verbunden und arbeiten im wesentlichen in
der gleichen Art und Weise wie vorher in Bezug auf das erste Codiermodul 101 beschrieben
wurde. Da dies so ist, werden nur Unterschiede zwischen den beiden Codiermodulen
im Detail erörtert.
Der Hauptunterschied zwischen den beiden Codiermodulen ist der,
daß das zweite
Codiermodul 102 nur diejenigen Eingangsinformationsframes
codiert, die gemäß der GOF/GOP-Datenstruktur
als Ankerframes zu codieren sind. Im Gegensatz dazu codiert das
erste Codiermodul 101 alle Eingangsinformationsframes gemäß der GOF/GOP-Datenstruktur.
-
Der
Controller 103 veranlaßt,
daß der
MPEG-artige Codierer, der in 1 dargestellt
ist, in einem von verschiedenen Betriebsmodi arbeitet, nämlich einem
kontinuierlichen Betriebsmodus und einem diskontinuierlichen Betriebsmodus.
Der Controller 103 arbeitet normalerweise in einem kontinuierlichen
Betriebsmodus, wobei der Informationsstrom, der dem Ausgangspuffer
zur Verfügung
gestellt wird, einer festgelegten GOF/GOP-Datenstruktur entspricht.
Um z.B. das Auftreten von aufeinanderfolgenden Ankerframes vom I-Frame-Typ
in dem bereitgestellten Informationsstrom zu verhindern, tritt der
Controller 103 in einen diskontinuierlichen Betriebsmodus
ein für
den Fall z.B. einer Szenenveränderung
oder einer anderen Informationsstromdiskontinuität. In dem diskontinuierlichen
Betriebsmodus verändert
der Controller 103 das erste (temporäre) Ankerframe von einem I-Frame
in ein P-Frame. Dies ist möglich,
da jedes Ankerframe dual als sowohl I-Frame als auch P-Frame codiert
ist, wie vorher erläutert.
Der Betrieb des Controllers 103 wird unten detaillierter
in Bezug auf Tabelle 1 und 2 beschrieben.
-
In
den diskontinuierlichen Betriebsmodus wird eingetreten, wenn der
Controller 103 bestimmt, daß eine Informationsdiskontinuität innerhalb
des Informationsstroms IN aufgetreten ist, z.B.: eine Szenenveränderung
oder ein "Szenenschnitt" innerhalb eines
Eingangsvideostroms. In dem kontinuierlichen Betriebsmodus paßt der Controller 103 den
Selektor 104 derart an, daß der Ausgangsstrom S101 des
ersten Codierers und der Ausgangsstrom S102 des zweiten Codierers
in einer Art und Weise ausgewählt
werden, daß am
Ausgang des Schalters 104 ein Informationsstrom erzeugt
wird, der die GOF/GOP-Datenstruktur erfüllt. Genauer gesagt veranlaßt der Controller 103,
daß der
Schalter 104 als das erste Einzelbild in einer GOF oder
GOP, die gebildet wird, das I-Frame innerhalb des Ausgangsstroms
S102 des zweiten Codierers ausgewählt wird, das mit dem ersten
Einzelbild der GOF oder GOP verknüpft ist. Das heißt, die
I-Frame-Version des dual codierten Frames wird ausgewählt. Der
Controller 103 veranlaßt
dann, daß der
Selektor 104 als verbleibende Frames in der GOF oder GOP,
die gebildet wird, die Ankerframes und die Nicht-Ankerframes, die
mit den verbleibenden Frames der GOF oder GOP verknüpft sind,
auswählt.
Dieser Prozeß wird
für jede
GOF oder GOP wiederholt, bis der Controller 103 in den
diskontinuierlichen Betriebsmodus eintritt.
-
In
dem diskontinuierlichen Betriebsmodus bestimmt der Controller
103,
ob die Diskontinuität
aufgetreten ist innerhalb einer Unter-GOF/GOP von dem Start einer
neuen GOF- oder GOP-Informationsstruktur.
Falls dies nicht der Fall ist (d.h. das vorherige Ankerframe war
ein P-Frame und somit nicht das erste Frame einer neuen Unter-GOF/GOP),
dann beginnt der Controller eine neue Unter-GOF/GOP durch Codieren
des Ankerframes nach der Informationsdiskontinuität als ein
I-Frame. Falls jedoch die Diskontinuität innerhalb einer Unter-GOF/GOP
des vorgesehenen I-Frames
auftritt, veranlaßt
der Controller
103, daß der
Selektor
104 die P-Frame-Version des dual codierten vorherigen
Ankerframes zusammen mit den verknüpften Nicht-Ankerframes (z.B.
den B-Frames der
Unter-GOF/GOP) auswählt.
Der Controller
103 veranlaßt dann, daß der Selektor
104 die
I-Frame-Version des dual codierten Ankerframes unmittelbar nach
der Informationsdiskontinuität
auswählt.
Im Ergebnis wird die vorgesehene erste Unter-GOF/GOP einer neuen
GOF/GOP als letzte Unter-GOF/GOP der vorherigen GOF/GOP-Informationsstruktur
gemacht und eine neue GOF/GOP-Informationsstruktur beginnt mit dem
Ankerframe als erstes Frame nach der Diskontinuität.
Tabelle
1
-
Die
Tabelle 1 stellt Informationen dar, die nützlich bei dem Verständnis der
Erfindung sind. Die erste Reihe der Tabelle 1 identifiziert eine
Framenummer (d.h. 1-18), die mit jedem der Mehrzahl von Eingangsinformationsframes,
beispielsweise Videoframes, verknüpft ist, die der Erfindung
bereitgestellt wird. Die zweite Reihe von Tabelle 1 stellt eine
Szenennummer (d.h. 1-2) dar, die mit jedem der Eingangsvideoframes
der ersten Reihe verknüpft
ist. Es ist wichtig, zu sehen, daß die Szenennummer von dem
elften Frame von Szene 1 zu der Szene 2 übergeht.
-
Die
dritte Reihe von Tabelle 1 stellt eine gewünschte GOF/GOP-Datenstruktur
dar, die verwendet wird, um die Videoeingangsbilder zu codieren
(d.h. IBBPBBPBB...). Die gewünschte
GOF/GOP-Datenstruktur ist die Struktur, die dafür vorgesehen ist, dem Ausgangsinformationsstrom
OUT, der von dem Ausgangspuffer 160 zu beispielsweise einem
Transmissionskanal geliefert wird, verliehen wird. Es muß erwähnt werden,
daß die
beispielhaft in Tabelle 1 dargestellte GOF/GOP-Datenstruktur nur illustrative Zwecke
hat; die Erfindung kann unter Verwendung von irgendeiner GOF/GOP-Datenstruktur
durchgeführt
werden.
-
Die
vierte Reihe stellt den Ausgangsinformationsstrom S101 des ersten
Codiermoduls 101 des MPEG-artigen Codierers, der in 1 gezeigt
ist, dar. Wie vorher erörtert,
empfängt
das erste Codiermodul 101 den Eingangsinformationsstrom
IN und codiert ihn, um einen ersten codierten Informationsstrom
S101, der teilweise mit einer Framegruppen- (GOF-) oder Bildgruppen-
(GOP-) Datenstruktur übereinstimmt,
beispielsweise die GOF/GOP-Datenstruktur, die in der dritten Reihe
von Tabelle 1 gezeigt ist, zu erzeugen. Der erste codierte Informationsstrom
S101 stimmt nur teilweise mit der GOF- oder GOP-Datenstruktur überein,
da das erste Codiermodul 101 jedes Ankerframe als ein P-Frame
codiert, selbst wenn das Frame gemäß der GOF/GOP-Datenstruktur
als ein I- Frame
vorgesehen ist. Somit beinhaltet der erste codierte Informationsstrom S101
Unter-GOFs oder Unter-GOPs mit P-Frames als Ankerframes.
-
Die
fünfte
Reihe stellt den Ausgangsinformationsstrom S102 des zweiten Codiermoduls 102 des MPEG-artigen
Codierers, der in 1 dargestellt ist, dar. Wie
vorher erörtert,
empfängt
das zweite Codiermodul 102 den Eingangsinformationsstrom
IN und codiert ihn, um einen zweiten codierten Informationsstrom S102,
der nur intracodierte Ankerframes aufweist, zu erzeugen. Genauer
gesagt codiert das zweite Codiermodul 102 jedes Ankerframe
als ein intracodiertes Frame (I-Frame),
selbst wenn das Frame gemäß der GOF/GOP-Datenstruktur,
die von dem ersten Codiermodul 101 verwendet wurde, als
P-Frame vorgesehen war. Somit beinhaltet der zweite codierte Informationsstrom
S102 nur intracodierte Ankerframes.
-
Die
sechste Reihe stellt einen Ausgangsinformationsstrom OUT dar, der
von dem Ausgangspuffer 160 des in 1 dargestellten
MPEG-artigen Codierers bereitgestellt wird. Genauer gesagt stellt
die sechste Reihe die Anpassung, die an die GOF/GOP-Datenstruktur
in Antwort auf eine Veränderung
von einer ersten Szene (Frame 11) und einer zweiten Szene
(Frame 12) durchgeführt
wurde, dar. Unter Bezug auf die GOF/GOP-Struktur, die in der dritten
Reihe festgelegt ist, wird Frame 13 als als P-Frame zu
codieren festgelegt. Da jedoch eine neue Szene in Frame 12 startete,
wird das erste Ankerframe der ersten Unter-GOF/GOP, die einer Szenenveränderung
folgt, als I-Frame
codiert werden. Da Frame 10 (ein dual codiertes Ankerframe) bereits
als ein I-Frame vorgesehen ist, veranlaßt der Controller, daß die P-Frame-Version
des Frame 10 für
die Ausgabe ausgewählt
wird, während
die I-Frame-Version des Frames 13 für die Ausgabe ausgewählt wird.
In dieser Art und Weise wird die nicht gewünschte Situation der Ausgabe
zweier eng benachbarter I-Frames (d.h. der Frames 10 und 13)
verhindert.
-
Die
siebte Reihe stellt einen alternativen Ausgangsinformationsstrom
OUT dar, der von dem Ausgangspuffer 160 des in 1 dargestellten
MPEG-artigen Codierers bereitgestellt wird. Genauer gesagt stellt die
siebte Reihe die Adaption dar, die an die GOF/GOP-Datenstruktur
in Antwort auf eine Veränderung
von einer ersten Szene (Frame 11) zu einer zweiten Szene
(Frame 12) durchgeführt
wurde, wobei das erste Frame der neuen Szene (d.h. Frame 12)
als ein I-Frame codiert wird anstelle des ersten Ankerframes (d.h.
Frame 13) der neuen Szene, wie in Reihe 6 dargestellt
ist.
-
2 stellt
ein Flußdiagramm
einer adaptiven Frameschaltroutine 200 dar, die für die Verwendung
in dem MPEG-artigen Codierer, der in 1 dargestellt
ist, geeignet ist. Genauer gesagt kann die Routine 200 von 2 als
eine Steuerroutine innerhalb des Controllers 103 oder als
eine logische Funktion zwischen kooperierenden Modulen des MPEG-artigen
Codierers 100 von 1 implementiert
werden. Die Routine 200 stellt ein adaptives Frame-Switching
bzw. adaptives Frameschalten innerhalb des Kontexts eines Codiersystems,
das gleichzeitig Ankerframes sowohl als I-Frames als auch P-Frames (d.h. dual
codierte Frame) codiert, zur Verfügung.
-
In
die Routine 200 von 2 wird in
Schritt 205 eingetreten, wo eine Variable LAST_INTRA gleich
0 gesetzt wird. Die Routine 200 setzt dann zu Schritt 210 fort,
wo die Abfrage durchgeführt
wird, ob ein empfangenes Eingangsinformationsframe, das codiert
werden soll, für
die Codierung als I-Frame (gemäß der GOF/GOP-Datenstruktur)
vorgesehen ist. Falls die Abfrage in Schritt 210 bestätigend beantwortet
wird, dann setzt die Routine 200 zu Schritt 215 fort.
-
In
Schritt 215 wird das empfangene Einzelbild als ein I-Frame
codiert und das codierte I-Frame
wird in einem ersten Puffer (z.B. BUFFER_I) gespeichert. Die Routine
setzt dann zu Schritt 220 fort, wo das empfangene Frame
als ein P-Frame codiert wird, und das codierte P-Frame wird in einem
zweiten Puffer (z.B. BUFFER_P) gespeichert. Die Routine 200 setzt
dann zu Schritt 225 fort, wo die LAST_INTRA-Variable gleich 1
gesetzt wird. Die Routine 200 setzt dann mit Schritt 210 fort.
-
Wenn
die Abfrage in Schritt 210 negativ beantwortet wird, dann
setzt die Routine 200 mit Schritt 230 fort. In
Schritt 230 wird eine Abfrage durchgeführt, ob das empfangene Frame
dafür vorgesehen
ist, als B-Frame codiert zu werden. Wenn die Abfrage in Schritt 230 bestätigend beantwortet
wird, dann setzt die Routine 200 mit Schritt 235 fort,
wo eine Abfrage gemacht wird, ob die LAST_INTRA-Variable gleich
1 ist. Falls die Abfrage in Schritt 235 bestätigend beantwortet
wird, setzt dann die Routine 200 zu Schritt 240 fort,
wo das empfangene Frame als ein B-Frame codiert wird, und das codierte
B-Frame wird in einem dritten Puffer (d.h. BUFFER_B) gespeichert.
Die Routine 200 setzt dann zu Schritt 210 fort.
Falls die Abfrage in Schritt 235 negativ beantwortet wird,
setzt dann die Routine 200 zu Schritt 245 fort,
wo das empfangene Frame als ein B-Frame codiert wird, und das codierte
B-Frame wird zu einem Ausgangspuffer gesendet. Die Routine 200 setzt
dann zu Schritt 210 fort.
-
Es
sollte bemerkt werden, daß der
erste Puffer (d.h. BUFFER_I), der zweite Puffer (d.h. BUFFER_P) und
der dritte Puffer (d.h. BUFFER_B) einzigartige Speichermodule, Abschnitte
desselben Speichermoduls, inneren Speicher von z.B. dem Controller 103 oder
irgendeinen anderen verfügbaren
Speicher einschließlich eines
Abschnitts eines Ausgangspuffers eines Codierers aufweisen kann.
Der Ort der verschiedenen Speicherorte beeinflußt nicht die Ausführbarkeit
der Erfindung, da der Fachmann, der von den Lehren dieser Erfindung
geleitet wird, leicht Modifikationen aus der Erfindung ableiten
wird, die für
eine Vielfalt von Speicherkonfigurationen geeignet sind.
-
Wenn
die Abfrage in Schritt 230 negativ beantwortet wird, dann
setzt die Routine 200 mit Schritt 250 fort, wo
eine Abfrage durchgeführt
wird, ob eine Informationsdiskontinuität (z.B. eine Szenenveränderung
in einem Videoeingangsstrom) erfaßt wurde. Falls die Abfrage
in Schritt 250 bestätigend
beantwortet wird, setzt die Routine 200 mit Schritt 272 fort,
wo eine Abfrage gemacht wird, ob die LAST_INTRA-Variable gleich
1 gesetzt ist. Falls die Abfrage in Schritt 272 negativ
beantwortet wird, setzt die Routine 200 mit Schritt 274 fort,
wo das empfangene Frame als ein I-Frame codiert wird und das codierte
I-Frame zu dem Ausgangspuffer gesendet wird. Die Routine 200 setzt
dann zu Schritt 210 fort.
-
Falls
die Abfrage in Schritt 272 bestätigend beantwortet wird, setzt
die Routine 200 mit Schritt 276 fort, wo die Inhalte
des zweiten Puffers (d.h. BUFFER_P) zu dem Ausgangspuffer übertragen
werden. Die Routine 200 setzt dann mit Schritt 278 fort,
wo die Inhalte des dritten Puffers (z.B. BUFFER_B) zu dem Ausgangspuffer übertragen
werden, und setzt mit Schritt 280 fort, wo das empfangene
Einzelbild als ein I-Frame codiert wird und das codierte I-Frame
zu dem Ausgangspuf fer gesendet wird. Die Routine 200 setzt
dann mit Schritt 282 fort, wo die LAST_INTRA-Variable gleich
0 gesetzt wird. Die Routine 200 setzt dann mit Schritt 210 fort.
-
Falls
die Abfrage in Schritt 250 negativ beantwortet wird, setzt
die Routine 200 mit Schritt 255 fort, wo eine
Abfrage durchgeführt
wird, ob die LAST_INTRA-Variable gleich 1 gesetzt wird. Falls die
Abfrage in Schritt 255 negativ beantwortet wird, setzt
die Routine 200 mit Schritt 260 fort, wo das empfangene
Frame als ein P-Frame codiert wird, und das codierte P-Frame wird
zu dem Ausgangspuffer gesendet. Die Routine 200 setzt dann
mit Schritt 210 fort.
-
Falls
die Abfrage in Schritt 255 bestätigend beantwortet wird, setzt
die Routine 200 zu Schritt 262 fort, wo die LAST_INTRA-Variable
gleich 1 gesetzt wird. Die Routine 200 setzt dann zu Schritt 264 fort,
wo die Inhalte des ersten Puffers (d.h. BUFFER_I) zu dem Ausgangspuffer übertragen
werden, und setzt mit Schritt 268 fort, wo die Inhalte
des dritten Puffers (d.h. BUFFER_B) zu dem Ausgangspuffer übertragen
werden. Die Routine 200 setzt dann mit Schritt 270 fort,
wo das empfangene Frame als ein P-Frame codiert wird, und das codierte
P-Frame wird zu dem Ausgangspuffer gesendet. Die Routine 200 setzt
dann zu Schritt 210 fort.
-
Die
oben beschriebene Flußroutine
stellt eine beispielhafte Ausführungsform
eines Verfahrens gemäß der Erfindung
dar. Genauer gesagt stellt die oben beschriebene Routine die gleichzeitige
Codierung eines empfangenen Ankerframes sowohl als I-Frame als auch
als P-Frame dar. Es ist wichtig, zu erkennen, daß der erste, der zweite, der
dritte und der Ausgangspuffer nur verwendet werden, um codierte
(d.h. komprimierte) Informationsframes zu speichern. Die Speicheranforderungen
des Systems sind somit auf Kosten erhöhter Verarbeitungsanforderungen
reduziert. Der Erfinder hat festgestellt, daß die hinzugefügten Verarbeitungskosten
solch eines Systems (z.B. die Hinzufügung eines zweiten Codiermoduls)
mehr als ausgeglichen werden können
durch einen verknüpften
Rückgang
bei den Speicherausgaben.
-
In
der oben beschriebenen Ausführungsform
der Erfindung codiert das zweite Codiermodul 102 jedes Ankerframe
als ein I-Frame. Es muß bemerkt
werden, daß das
zweite Codiermodul 102 ebenso gesteuert werden kann, um
nur diejenigen Frames, die gemäß GOF/GOP-Datenstruktur
dafür vorgesehen
sind, als P-Frames codiert zu werden, als I-Frames zu codieren.
Das heißt,
in einer anderen Ausführungsform
der Erfindung codiert das erste Codiermodul 101 Eingabeframes
als I-Frames, P-Frames und B-Frames in Übereinstimmung mit der GOF/GOP-Datenstruktur.
Gleichzeitig codiert das zweite Codiermodul 102 nur diejenigen
Frames, die gemäß GOF/GOP-Datenstruktur
für die
Codierung als P-Frames vorgesehen sind, als I-Frames.
-
In
dieser alternativen Ausführungsform
der Erfindung arbeitet der Controller 103 in im wesentlichen der
gleichen Art und Weise wie vorher beschrieben, außer daß während des
kontinuierlichen Betriebsmodus der Controller 103 nur veranlaßt, daß der Ausgangsstrom
S101 des ersten Codiermoduls mit dem Ausgangspuffer 160 verbunden
wird. Dies liegt daran, daß der
Ausgangsstrom S101 des ersten Codiermoduls 101 richtig entsprechend
der GOF/GOP-Datenstruktur codiert ist. Im diskontinuierlichen Betriebsmodus
verbindet der Controller 103 den Ausgangsstrom S102 des
zweiten Codiermoduls 102 mit dem Ausgangspuffer 160,
wenn ein P-Frame innerhalb des ersten Codiermodulausgangsstroms
S101 durch ein I-Frame ersetzt werden muß.
-
3 stellt
ein anderes MPEG-artiges Codiersystem 300 dar. Genauer
gesagt stellt 3 ein MPEG-artiges Codiersystem 300 dar,
das ein Codiermodul 101, einen Controller 103 und
einen Ausgangspuffer 160 aufweist. Das MPEG-artige Codiersystem 300 empfängt einen
Eingangsinformationsstrom IN, der eine Mehrzahl von nicht komprimierten
Informationsframes aufweist, anschaulich eine Abfolge von Bildern,
die einen Videoinformationsstrom bilden, und codiert ihn, um einen
codierten Ausgangsinformationsstrom OUT zu erzeugen. Das Codiermodul 101 empfängt den
Eingangsinformationsstrom IN und codiert ihn, um einen codierten
Informationsstrom S101 zu erzeugen, der im wesentlichen mit der
Einzelbildgruppen- (GOF-) oder der Bildgruppen- (GOP-) Datenstruktur übereinstimmt.
Der erste codierte Informationsstrom S101 wird in einem Unter-GOF/GOP-Puffer 135P gespeichert
und dann mit dem Ausgangspufferspeicher verbunden. Die codierten
Frames, die in dem Unter-GOF/GOP-Pufferspeicher 135P abgelegt
sind, können
durch den Controller 103 modifiziert werden, wie unten
erörtert
wird. Das Codiermodul 101 beinhaltet verschiedene Elemente,
die im wesentlichen in der gleichen Art und Weise arbeiten wie die
entsprechenden Elemente des ersten Codiermoduls 101, das
oben in Bezug auf 1 beschrieben wurde. Daher werden
nur Unterschiede in der Funktion der verschiedenen Elemente im Detail
unten beschrieben. Ausdrücklich
gesagt weist das Codiermodul 101 einen Addierer 155,
ein Modusentscheidungsmodul 105P, ein diskretes Kosinustransformationsmodul
(DCT) 110P, ein Quantisierungsmodul (Q) 115P,
ein variable-Längen-Codiermodul
(VLC) 120P, einen inversen Quantisierer (Q–1) 125P,
ein inverses diskretes Kosinustransformationsmodul (DCT–1) 130P,
einen Subtrahierer 156, einen Pufferspeicher 135P,
ein Ratensteuermodul 140P, ein Bewegungskompensationsmodul 145P, ein
Bewegungsabschätzmodul 150P und
ein Ankerframespeichermodul 170 auf.
-
Der
Hauptunterschied zwischen dem Codiermodul 101 von 3 und
dem ersten Codiermodul 101 von 1 ist der,
daß der
Ausgang des inversen DCT-Moduls 130P (d.h. das letzte Ankerframe)
in dem Ankerframespeichermodul 170 abgelegt wird und mit
dem Bewegungsschätzmodul 150P verbunden
wird für
das Abschätzen
der Bewegungsvektoren (statt eines nicht codierten I-Frames von
dem zweiten Codiermodul von 1). Zusätzlich wird
die nicht codierte Version jedes Einzelbildes, das gemäß der GOF/GOP-Struktur
als I-Frame vorgesehen ist, ebenso in dem Ankerframespeichermodul 170 abgelegt.
Das Ankerframespeichermodul enthält
somit das rekonstruierte Ankerframe, das dem letzten I-Frame vorhergeht,
und die nicht codierte Version des letzten I-Frames. Auf diese Art
und Weise wird in dem Fall, daß das
I-Frame erneut als ein P-Frame codiert wird (d.h. ein vorgesehenes
I-Frame wird als solches codiert) das rekonstruierte Ankerframe,
das dem I-Frame vorhergeht (zusammen mit der nicht codierten Version
des I-Frames), verwendet, um eine P-Frame-Ersetzung für das codierte
I-Frame vorherzusagen.
-
Der
Ausgangspufferspeicher 160 arbeitet im wesentlichen in
der gleichen Art und Weise wie der Ausgangspufferspeicher 160 von 1.
Der Ausgangspufferspeicher 160 erzeugt ein Ratensteuersignal
RC, das einen Verwendungsgrad eines entfernten Decoderpuffers anzeigt.
Das Ratensteuersignal RC ist mit dem Codiermodul 101 verbunden,
das das Ratensteuersignal RC verwendet, um z.B. die Quantisierungsparameter anzupassen,
so daß die
Bitrate des Ausgangsinfor mationsstroms OUT gesteuert werden kann,
wodurch ein Pufferüberlauf
oder -unterlauf in einem entfernten Decoderpuffer verhindert wird.
-
Der
Controller 103 erzeugt ein Codierersteuersignal C1 für das Steuern
des Codierungsmoduls 101 und empfängt zumindest den Eingangsinformationsstrom
IN oder einen Modusentscheidungsanzeigestrom MD von dem Codiermodul 101.
Der Controller 103 von 3 erfaßt Informationsdiskontinuitäten in der
vorher in Bezug auf 1 beschriebenen Art und Weise.
Während
der Controller 103 von 3 ebenso
in einem kontinuierlichen Modus oder einem diskontinuierlichen Modus
arbeitet und die Endergebnisse der beiden Betriebsmodi die gleichen
sind (in Bezug auf die GOF/GOP-Datenstrukturanpassung), ist der
Betrieb des Controllers 103 in diesen Modi leicht unterschiedlich
gegenüber
dem Betrieb des Controllers 103 von 1.
-
In
dem kontinuierlichen Betriebsmodus codiert das Codiermodul 101 von 3 den
Eingangsinformationsstrom IN in der oben beschriebenen Art und Weise,
um einen codierten Informationsstrom S101 zu erzeugen. Der codierte
Informationsstrom wird in einem temporären Puffer (Unter-GOF/GOP-Puffer 135P)
vor der Verbindung zu dem Ausgangspuffer gespeichert.
-
Mit
der Erfassung einer Informationsdiskontinuität tritt der Controller 103 in
den diskontinuierlichen Betriebsmodus. Falls es als angebracht angesehen
wird, das zuletzt codierte Ankerframe als ein P-Frame erneut zu
codieren (d.h. das gegenwärtig
vorgesehene P-Frame wird als ein I-Frame codiert), dann wird die
nicht codierte Version des letzten codierten Ankerframes (voraussichtlich
ein I-Frame) aus dem Ankerspeichermodul 170 abgerufen und
als ein P-Frame codiert unter Verwendung des rekonstruierten Ankerframes,
was zeitlich der nicht codierten Version des nicht codierten I-Frames vorhergeht
(ebenso in dem Ankerspeichermodul abgelegt). Der MPEG-artige Codierer
von 3 implementiert somit eine Recodierung "auf Abruf' eines vorher codierten
I-Frames als ein P-Frame.
-
4 stellt
ein Flußdiagramm
einer adaptiven Frameschaltroutine 400 dar, die für die Verwendung
in dem MPEG-artigen Codierer, der in 3 dargestellt
ist, geeignet ist. Genauer gesagt kann die Routine 400 von 4 als
eine Steuerroutine innerhalb des Controllers 103 oder als
eine logische Funktion zwischen den kooperierenden Modulen des MPEG-artigen
Codierers 300 von 3 implementiert
sein. Die Routine 400 stellt ein adaptives Frame-Switching
bzw. Frameschalten innerhalb des Kontexts eines Codiersystems, das
ein abrufbasiertes Codieren von Ankerframes als entweder I-Frames
oder P-Frames, so wie es notwendig ist, bereitstellt.
-
In
die Routine 400 wird in Schritt 402 eingetreten,
wo eine Variable LAST_INTRA gleich 0 gesetzt wird. Die Routine 400 setzt
dann mit Schritt 404 fort, wo eine Abfrage durchgeführt wird,
ob ein empfangenes Informationsframe (gemäß der GOF/GOP-Datenstruktur)
für die
Codierung als ein I-Frame vorgesehen ist. Falls die Abfrage in Schritt 404 bestätigend beantwortet
wird, setzt dann die Routine 400 zu Schritt 406 fort,
wo das empfangene Frame als ein I-Frame codiert wird und das codierte
I-Frame in einem ersten Pufferspeicher (d.h. BUFFER_I) abgelegt
wird. Die Routine 400 setzt dann mit Schritt 408 fort,
wo die Variable LAST_INTRA gleich 1 gesetzt wird. Die Routine 400 setzt
dann mit Schritt 410 fort, wo das empfangene Frame und
ein vorher rekonstruiertes Referenz frame (d.h. ein Ankerframe) in
einem nicht codierten Pufferspeicher (z.B. dem Ankerspeichermodul 170)
gespeichert werden. Die Routine 400 setzt dann mit Schritt 404 fort.
-
Falls
die Abfrage in Schritt 404 negativ beantwortet wird, setzt
die Routine 400 mit Schritt 412 fort, wo eine
Abfrage durchgeführt
wird, ob das empfangene Frame für
die Codierung als B-Frame
vorgesehen ist. Falls die Abfrage in Schritt 412 bestätigend beantwortet
wird, setzt die Routine 400 mit Schritt 414 fort,
wo eine Abfrage durchgeführt
wird, ob die Variable LAST_INTRA gleich 1 ist. Falls die Abfrage
in Schritt 414 bestätigend
beantwortet wird, setzt die Routine 400 mit Schritt 416 fort,
wo das empfangene Frame als ein B-Frame codiert wird und das codierte
B-Frame in einem zweiten Pufferspeicher (d.h. BUFFER_B) abgelegt
wird. Die Routine 400 setzt dann mit Schritt 404 fort.
Falls die Abfrage in Schritt 414 negativ beantwortet wird,
setzt die Routine 400 dann mit Schritt 418 fort,
wo das empfangene Frame als ein B-Frame codiert wird und das codierte B-Frame
zu dem Ausgangspuffer gesendet wird. Die Routine 400 setzt
dann mit Schritt 404 fort.
-
Falls
die Abfrage in Schritt 412 negativ beantwortet wird, setzt
die Routine 400 dann mit Schritt 420 fort, wo
eine Abfrage durchgeführt
wird, ob eine Informationsdiskontinuität (z.B. eine Szenenveränderung)
erfaßt
wurde.
-
Falls
die Abfrage in Schritt 420 bestätigend beantwortet wird, setzt
die Routine 400 zu Schritt 422 fort, wo eine Abfrage
durchgeführt
wird, ob die Variable LAST_INTRA gleich 1 ist. Falls die Abfrage
in Schritt 422 negativ beantwortet wird, setzt die Routine 400 mit
Schritt 424 fort, wo das empfangene Einzelbild als ein
I-Frame codiert wird und das codierte I-Frame mit dem Ausgangspuffer
verbunden wird. Die Routine 400 setzt dann mit Schritt 404 fort.
-
Falls
die Abfrage in Schritt 422 bestätigend beantwortet wird, setzt
die Routine 400 mit Schritt 426 fort, wo das vorher
gesicherte Referenzframe neu als P-Frame codiert wird und das codierte
P-Frame mit dem Ausgangspuffer verbunden wird. Die Routine 400 setzt
dann mit Schritt 428 fort, wo die Inhalte des zweiten Puffers (d.h.
BUFFER_B) mit dem Ausgangspuffer verbunden werden. Die Routine 400 setzt
dann mit Schritt 430 fort, wo das empfangene Frame als
ein I-Frame codiert wird und das codierte I-Frame mit dem Ausgangspuffer
verbunden wird. Die Routine 400 setzt dann mit Schritt 432 fort,
wo die Variable LAST_INTRA gleich 0 eingestellt wird, und setzt
mit Schritt 404 fort.
-
Falls
die Abfrage in Schritt 420 negativ beantwortet wird, setzt
die Routine mit Schritt 434 fort, wo eine Abfrage durchgeführt wird,
ob die Variable LAST_INTRA gleich 1 ist. Falls die Abfrage in Schritt 434 negativ beantwortet
wird, setzt die Routine 400 dann mit Schritt 436 fort,
wo das empfangene Einzelbild als ein P-Frame codiert wird und das
codierte P-Frame zu dem Ausgangspuffer gesendet wird. Die Routine 400 setzt
dann mit Schritt 404 fort.
-
Falls
die Abfrage in Schritt 434 bestätigend beantwortet wird, setzt
die Routine 400 mit Schritt 438 fort, wo die Inhalte
des ersten Puffers (BUFFER_I) mit dem Ausgangspuffer verbunden werden,
und setzt mit Schritt 440 fort, wo die Inhalte des zweiten
Puffers (BUFFER_B) mit dem Ausgangspuffer verbunden werden. Die
Routine 400 verarbeitet in 444, wo das empfangene
Frame als ein P-Frame codiert wird und das codierte P-Frame mit
dem Ausgangspuffer verbunden wird. Die Routine 400 setzt
dann mit Schritt 446 fort, wo die Variable LAST_INTRA gleich
0 gesetzt wird, und setzt mit Schritt 404 fort. Die adaptive
Frameschaltroutine 400 von 4 verwirklicht
im wesentlichen dieselbe Funktion wie die adaptive Frameschaltroutine 200 von 2, außer daß die Routine 400 von 4 dazu
neigt, mehr Speicherressourcen und weniger Verarbeitungsressourcen
als die Routine 200 von 2 zu erfordern.
Dies liegt daran, daß die
Routine 400 von 4 die Speicherung des nicht
codierten (d.h. nicht komprimierten) Informationsframes, das das
erste Frame einer GOF oder GOP sein soll, und des rekonstruierten
Ankerframes vor diesem erfordert.
-
5 stellt
ein anderes MPEG-artiges Codiersystem 500 dar. Genauer
gesagt stellt 5 ein MPEG-artiges Codiersystem 500 dar,
das ein M-Frame-Verzögerungsmodul 510,
ein Codiermodul 101, einen Controller 103 und
einen Ausgangspuffer 160 aufweist. Das MPEG-artige Codiersystem 500 empfängt einen Eingangsinformationsstrom
IN, der eine Mehrzahl von nicht komprimierten Informationsframes,
anschaulich eine Abfolge von Bildern, die einen Videoinformationsstrom
bilden, aufweisen, und codiert diesen, um einen codierten Ausgangsinformationsstrom
OUT zu erzeugen. Da das MPEG-artige Codiersystem 500 von 5 im
wesentlichen zu dem MPEG-artigen Codiersystem 300, das
vorher in Bezug auf 3 erläutert wurde, ähnlich ist,
werden nur die Unterschiede zwischen den beiden Systemen im Detail
erläutert.
-
In
dem MPEG-artigen Codiersystem 500 von 5 empfängt das
M-Frame-Verzögerungsmodul 510, anschaulich
ein "First-In-First-Out"- (FIFO-) Pufferspeicher,
den Eingangsinformationsstrom IN und stellt einen verzögerten Eingangsinformationsstrom
IN' dem Codierer 101 zur
Verfügung.
Wie vorher erörtert,
weist eine GOF/GOP-Datenstruktur IN Frames bzw. Einzelbilder auf,
die als eine Mehrzahl von Unter-GOF- oder Unter-GOP-Datenstrukturen
mit einer Maximalgröße von M
Frames angeordnet sind. Somit ist das M-Frame-Verzögerungsmodul 510 in
der Lage, zumindest eine Unter-GOF/GOP entsprechend der GOF/GOP-Datenstruktur
zu halten.
-
Das
Codiermodul 101 empfängt
den verzögerten
Eingangsinformationsstrom IN' und
codiert ihn, um einen codierten Informationsstrom S101 zu erzeugen,
der im wesentlichen mit einer Framegruppen- (GOF-) oder Bildgruppen-
(GOP-) Datenstruktur übereinstimmt.
Der erste codierte Informationsstrom S101 ist mit dem Ausgangspuffer 160 verbunden.
Das Codiermodul 101 beinhaltet verschiedene Elemente, die
im wesentlichen in der gleichen Art und Weise arbeiten wie die entsprechenden
Elemente des ersten Codiermoduls 101, das oben in Bezug
auf die 1 und 3 beschrieben
wurde. Im Grunde genommen werden nur Unterschiede im Betrieb der
verschiedenen Elemente unten im Detail erläutert. Genauer gesagt weist
das Codiermodul 101 einen Addierer 155, ein Modusentscheidungsmodul 105P,
ein diskretes Kosinustransformationsmodul (DCT) 110P, ein
Quantisierungsmodul (Q) 115P, ein variable-Längen-Codierungsmodul
(VLC) 120P, einen inversen Quantisierer (Q–1) 125P,
ein inverses diskretes Kosinustransformationsmodul (DCT–1) 130P,
einen Subtrahierer 156, ein Ratensteuermodul 140P,
ein Bewegungskompensationsmodul 145P, ein Bewegungsabschätzmodul 150P und
ein Ankerframespeichermodul 170 auf.
-
Der
Hauptunterschied zwischen dem Codiermodul 101 von 5 und
dem Codiermodul 101 von 3 ist der,
daß das
Codiermodul 101 von 5 keinen
Puffer 135 (das verknüpfte
optionale Ratensteuersignal RC1) beinhaltet, wie vorher in dem Codiermodul 101 von 3 dargestellt.
Zusätzlich
speichert das Ankerframespeichermodul 170 des Codiermoduls 101 von 5 nicht
das nicht codierte Informationsframe, das gemäß der GOF/GOP-Sruktur als das
erste Frame einer GOF oder GOP (d.h. das I-Frame) vorgesehen ist, wie
vorher in dem Codiermodul 101 von 3 beschrieben
wurde. Schließlich
stellt das Modusentscheidungsmodul 105P von dem Codiermodul 101 von 5 kein
optionales Modusentscheidungssignal MD1 dem Controller zu Verfügung, wie
vorher bei dem Codiermodul 101 von 3 beschrieben
wurde.
-
Der
Ausgangspufferspeicher 160 arbeitet im wesentlichen in
der gleichen Art und Weise wie der Ausgangspufferspeicher 160 von 3.
Der Ausgangspuffer 160 erzeugt ein Ratensteuersignal RC,
das einen Pufferverwendungsgrad eines entfernten Decoderpuffers
anzeigt. Das Ratensteuersignal RC ist mit dem Codiermodul 101 verbunden,
das das Ratensteuersignal RC verwendet, um z.B. die Quantisierungsparameter derart
anzupassen, daß die
Bitrate des Ausgangsinformationsstroms OUT gesteuert werden kann,
wodurch ein Pufferüberlauf
oder -unterlauf in einem entfernten Decoderpufferspeicher vermieden
wird.
-
Der
Controller 103 erzeugt ein Codierersteuersignal C1 für das Steuern
des Codiermoduls 101. Der Controller 103 empfängt an dem
Eingangsinformationsstrom IN Informationsdiskontinuitäten innerhalb
des Informationsstroms und erfaßt
sie. In Antwort auf das Erfassen einer Informationsdiskontinuität innerhalb
des (nicht verzögerten)
Eingangsinformationsstroms IN paßt der Controller 103 dynamisch
die GOF/GOP-Datenstruktur, die von dem Codierer verwendet wird,
derart an, daß ein
I-Frame nicht zwischen beiden der zwei aufeinanderfolgenden Unter-GOF/GOP-Gruppen
von codierten Frames beinhaltet ist.
-
Um
den Betrieb des Controllers 103 von 5 zu veranschaulichen,
beachte man den Fall eines Eingangsinformationsstroms IN, der eine
Unter-GOF/GOP einschließlich
einer Informationsdiskontinuität
dem M-Frame-Verzögerungsmodul 510 bereitstellt.
Der Controller 103 überwacht
den Eingangsstrom und erfaßt die
Informationsdiskontinuität
vor dem Codierer 101, der den verzögerten Eingangsinformationsstrom
IN' empfängt. Der
Controller 103 veranlaßt,
daß der
Codierer 101 das Ankerframe der Unter-GOF/GOP, die die
Informationsdiskontinuität
einschließt,
als ein P-Frame codiert. Der Controller 103 veranlaßt ebenso,
daß der
Codierer 101 das erste Frame, das der Informationsdiskontinuität folgt
(z.B. das erste Videoframe einer neuen Szene), oder das Ankerframe
der nächsten
Unter-GOF/GOP als ein I-Frame codiert.
-
Da
der Controller 103 jede Unter-GOF/GOP, bevor die Unter-GOF/GOP
mit dem Codierer 101 verbunden wird, untersucht, ist der
Controller 103 in der Lage, die geeignetste Methode der
Codierung der untersuchen Unter-GOF/GOP zu bestimmen. Das heißt, der
Controller stellt über
das Steuersignal C1 Information über
eine nächste
Unter-GOF/GOP, die zu codieren ist, dem Ratensteuermodul 140P zur
Verfügung.
Die Pufferverwendungsvorhersagen des Ratencontrollers 140P werden
somit verbessert, wodurch eine verbesserte Codierfunktionalität dem Codierer 101 zur
Verfügung
gestellt wird (z.B. können
die Bitbudgetsicherheitsspannen reduziert werden, wodurch eine Codierung
höherer
Qualität
erlaubt wird durch Zuweisen von mehr Bits zu jedem Einzelbild).
-
Es
soll erwähnt
werden, daß der
Effekt einer unerwarteten Szenenveränderung auf eine bestimmte Unter-GOF/GOP
auf die gesamte GOF oder GOP ausgedehnt werden kann, um jegliche
Qualitätsverschlechterung,
die durch die bestimmte Unter-GOF/GOP erfahren wird, zu minimieren.
-
Darüber hinaus,
da hinsichtlich des Beibehaltens visueller Wiedergabetreue die letzte
Unter-GOF/GOP einer
Szene wahrscheinlich weniger wichtig ist als die erste Unter-GOF/GOP
einer Szene, können
die Bits, die der letzten Unter-GOF/GOP einer gegenwärtigen Szene
zugewiesen werden, reduziert sein, wodurch ein entsprechender Anstieg
in der Bitzuweisung zu der nächsten
Unter-GOF/GOP ermöglicht wird, um
die Qualität
des I-Frame in der neuen Szene zu verbessern.
-
Es
ist wichtig, zu erwähnen,
daß der
Codierer 101 von 5 jedes
Ankerframe nur einmal codiert statt immer zweimal (gemäß 1)
oder manchmal zweimal (gemäß 3).
-
6 stellt
einen Controller 103 dar, der für die Verwendung in dem MPEG-artigen
Codierer, der entweder in 1 oder 3 dargestellt
ist, geeignet ist. Der Controller 103 weist einen Mikroprozessor 103-4 sowie
einen Speicher 103-8 auf für das Speichern einer Simultancodierung,
einer adaptiven Frameschaltroutine 200 und/oder einer Codierung "auf Abfrage", eine adaptive Frameschaltroutine 400.
Der Mikroprozessor 103-4 arbeitet mit einem konventionellen
Unterstützungsschaltkreis 103-6 zusammen,
wie z.B. Energiezuführungen,
Taktschaltkreisen, Cachespeichern und dergleichen sowie auch Schaltkreisen,
die bei der Ausführung der
Softwareroutinen unterstützen.
Genau genommen wird in Betracht gezogen, daß einige der Prozeßschritte,
die hier erörtert
wurden, als Softwareprozesse in der Hardware implementiert sein
können,
z.B. als ein Schaltkreis, der mit dem Mikroprozessor 103-4 zusammenarbeitet,
um verschiedene Schritte durchzuführen. Der Controller 103 enthält ebenso
einen Eingabe-/Ausgabeschaltkreis 103-2, der eine Schnittstelle
zwischen den verschiedenen Codiermodulen (101 und 102)
und dem Selektor (104) bildet. Obgleich der Controller 103 als
ein Allzweckcomputer dargestellt ist, der programmiert ist, um die
adaptive Frameschalt- und die verknüpften Steuerfunktionen in Übereinstimmung
mit der vorliegenden Erfindung durchzuführen, kann die Erfindung in
der Hardware als anwendungsspezifischer integrierter Schaltkreis
(ASIC) implementiert sein. Im Grunde genommen sind die Prozeßschritte,
die hier beschrieben wurden (z.B. in Bezug auf die 2 und
die 4), dafür
vorgesehen, breit interpretiert zu werden, so daß sie äquivalent durch Software, Hardware
oder eine Kombination hiervon durchgeführt werden können.
-
Der
Controller 103 kann verwendet werden, um die Steuerroutinen,
die in 2 und 4 beschrieben sind, auszuführen. Es
muß jedoch
bemerkt werden, daß der
Controller 103 ebenso verwendet werden kann, um die MPEG-artigen
Codierer von 1, 3 und 5 vollständig in
Software zu implementieren. Im Grunde genommen ist der Controller 103 von 6 als
den Eingangsinformationsstrom IN empfangend gezeigt und erzeugt
den Ausgangsinformationsstrom OUT. In solch einer Softwareimplementierung
führt der Controller 103 die
Funktionen durch, die oben in Bezug auf die MPEG-artigen Codierer
von 1, 3 und/oder 5 beschrieben
wurden.
-
Es
sollte erwähnt
werden, daß der
Pufferspeicher 135P des Codierers 101 von z.B. 3 codierte Frames
in einer "verknüpften-Liste"-Art und Weise speichern
kann. Das heißt,
daß jedes
der gespeicherten codierten Frames mit einer Zeigervariable verknüpft sein
kann, die beispielsweise das nächste
codierte Frame in einer Abfolge von codierten Frames identifiziert.
In dieser Art und Weise weist das Auswählen eines I-Frames anstelle
eines P-Frames für
die Aufnahme in dem Co diererausgangsstrom S101 das "Entbinden" des abgewählten Frames
und das "Verbinden" des ausgewählten Frames
auf. Das heißt,
der Zeiger des codierten Frames, das dem entbundenen Frame vorhergeht,
wird auf das zu verbindende Frame gerichtet. In gleicher Weise wird
der Zeiger, der mit dem verbundenen Frame verknüpft ist, auf den Frame, der
dem entbundenen Frame folgt, gerichtet.
-
Die
Erfindung verwendet mit Vorteil das Bitbudget einer GOF/GOP-Struktur,
so daß das
Bitbudget nicht "verschmutzt" wird durch Intracodierung
einer letzten Unter-GOF/GOP in einem Informationsstrom. Darüber hinaus
arbeitet die Erfindung, um im wesentlichen Decoderpufferüberlaufbedingungen
zu verhindern, die durch eng beabstandete intracodierte Informationsframes
(z.B. zwei aufeinanderfolgende I-Frames) verursacht werden. Darüber hinaus
sei erwähnt,
daß die
Informationsqualitäten,
wie z.B. die visuelle Informationsqualität der dual codierten Informationsframes,
als nahezu identisch für
das I-Frame und das P-Frame angesehen werden. Zusätzlich zu
der GOF/GOP-Qualitätsverbesserung
gibt es somit keine bemerkbare Informationsverschlechterung, die
auf irgendein individuelles Einzelbild bzw. Frame innerhalb der
GOF/GOPs durch die Ausführung
der Erfindung ausgeübt
wird.
-
Die
vorliegende Erfindung kann in der Form von computerimplementierten
Prozessen und Vorrichtungen für
das Ausführen
dieser Prozesse verkörpert
sein. Die vorliegende Erfindung kann ebenso in der Form von Computerprogrammcode
in greifbaren Medien, wie z.B. Disketten, CD-ROMs, Festplattenlaufwerken oder irgendeinem
anderen computerlesbaren Speichermedium verkörpert sein, wobei, wenn der
Computerprogrammcode in einen Computer geladen und ausgeführt wird,
der Computer eine Vorrichtung für
das Durchführen
der Erfindung wird. Die vorliegende Erfindung kann ebenso in Form
eines Computerprogrammcodes verkörpert
werden, beispielsweise gespeichert in einem Speichermedium, in einem
Computer geladen und/oder ausgeführt
oder übertragen über irgendein Übertragungsmedium,
wie z.B. elektrische Verdrahtung oder Verkabelung, über Faseroptiken
oder über
elektromagnetische Strahlung, wobei, wenn der Computerprogrammcode
in einen Computer geladen und ausgeführt wird, der Computer eine
Vorrichtung zur Durchführung
der Erfindung wird. Wenn auf einem Allzweckmikroprozessor implementiert,
konfigurieren die Computerprogrammcodesegmente den Mikroprozessor,
um spezifische logische Kreise zu erzeugen.
-
Obgleich
verschiedene Ausführungsformen,
die die Lehren der vorliegenden Erfindung beinhalten, gezeigt und
im Detail hier beschrieben wurden, können Fachleute leicht viele
weitere variierte Ausführungsformen
ableiten, die immer noch diese Lehren aufgreifen.