-
TECHNISCHES GEBIET
-
Die
Erfindung betrifft das Ändern
der Bitrate eines Datenstroms mit den folgenden kennzeichnenden
Merkmalen. Der Datenstrom umfasst Steuerungswörter. Ein Steuerungswort legt
fest, wann ein Datenabschnitt, der in dem Datenstrom enthalten ist, aus
einem Eingangspuffer an einem Empfangsende zu lesen ist. Ein Videodatenstrom
gemäß einem Standard
der Moving Pictures Experts Group (MPEG) has solche kennzeichnenden
Merkmale.
-
ALLGEMEINER STAND DER
TECHNIK
-
US-Patent
Nr. 5,680,483 beschreibt einen MPEG-Codierer mit umschaltbaren Bitraten.
In der gleichen Weise offenbart die internationale Patentanmeldung
WO 97/38532 A ein Verfahren zum Ändern der
Bitrate, umfassend einen Schritt des Steuerns des Codiererpuffers
dergestalt, dass eine Änderung der
Rate der Datenausgabe aus dem Codierer (d. h. die Ausgabebitrate)
um einen vorgegebenen Zeitraum relativ zu einer Änderung der Dateneingabe in den
Codiererpuffer verzögert
wird. Die Verzögerung sollte
gleich dem Zeitstempelzeitraum (d. h. der Ende-zu-Ende-Verzögerung)
sein. Somit erfolgt ein Umschalten zu einer neuen Bitrate nach einer
Verzögerung
gleich der Ende-zu-Ende-Verzögerung.
-
US-Patent
Nr. 5,686,963 offenbart ein Verfahren zum Ändern der Bitrate ohne Vorankündigung.
Die Berechnung einer größten und
kleinsten Bitrate stützt
sich auf den Füllungsgrad
des Codiererpuffers zum Zeitpunkt des Bitratenwechsels. Weil der Füllungsgrad
des Codiererpuffers an einem in der Zukunft liegenden Zeitpunkt
nicht bekannt ist, folgt daraus, dass der Bitratenwechsel unmittelbar
erfolgt.
-
Zwei
Ausführungsformen
eines Verfahrens zum Ändern
der Bitrate werden in der Patentanmeldung GB-A-2307151 beschrieben.
Bei einer ersten Ausführungsform
wird eine neue Bitrate nach einer Verzögerung, die der Ende-zu-Ende-Verzögerung entspricht,
angewendet, wie in WO 97/38532 A. Bei einer zweiten Ausführungsform
wird eine neue Bitrate unmittelbar angewendet. In diesem Fall wird
ein größter und
ein kleinster Wert für
die neue Bitrate berechnet, wie in
US
5,686,963 .
-
KURZDARSTELLUNG DER ERFINDUNG
-
Es
ist eine Aufgabe der Erfindung, eine bessere Qualität der in
dem Datenstrom enthaltenen Daten zu ermöglichen.
-
Die
Erfindung berücksichtigt
die folgenden Aspekte. Nehmen wir an, dass in einem bestimmten Moment
festgestellt wird, dass Bitrate eines Datenstroms erhöht werden
sollte, um ein bestimmtes Qualitätsniveau
aufrecht zu erhalten. Am besten wird die Bitrate sofort geändert. Das
heißt,
im Idealfall erfolgt eine unmittelbare Reaktion auf eine Bitanforderung. Allerdings
kann bei einem Datenstrom mit den oben erwähnten kennzeichnenden Merkmalen
die Bitrate nicht unmittelbar geändert
werden. Wenn die Bitrate unmittelbar geändert werden würde, so
würde dies wahrscheinlich
zu einem Unterlauf oder Überlauf
des Eingangspuffers am Empfangsende führen. In diesem Fall würden Daten
verloren gehen, was der Qualität
abträglich
ist.
-
Im
Stand der Technik scheint man sich folgenden Prinzips zu bedienen.
Die Bitrate wird erst geändert,
nachdem jedes Steuerungswort, das bereits definiert wurde, am Empfangsende
wirksam geworden ist. In der MPEG-Terminologie bedeutet das, dass
die Bitrate mit einer Verzögerung
geändert
wird, die der Ende-zu-Ende-Verzögerung
entspricht. Dementsprechend wird gewährleistet, dass es weder zu Unterlauf
noch Überlauf
kommt, unabhängig
davon, wie die Bitratenänderung
ausfällt.
-
Gemäß der Erfindung
wird für
wenigstens einen in der Zukunft liegenden Zeitpunkt berechnet, innerhalb
welcher Grenzen die Bitrate des Datenstroms an jenem in der Zukunft
liegenden Zeitpunkt verändert
werden kann, so dass weder Unterlauf noch Überlauf des Eingangspuffer
entsteht. Die Rate wird an einem in der Zukunft liegenden Zeitpunkt
innerhalb der Grenzen geändert,
die für
den in der Zukunft liegenden Zeitpunkt bestimmt wurden.
-
Dementsprechend
gestattet die Erfindung das Ändern
der Bitrate innerhalb einer relativ kurzen Verzögerung bei gleichzeitigem Verhindern
von Unterlauf und Überlauf.
Es kann passieren, dass die Bitrate sozusagen nicht zu einer bestimmten
gewünschten
Bitrate innerhalb einer relativ kurzen Verzögerung umgeschaltet werden
kann. Jedoch kann die Bitrate zu einer Annäherung der gewünschten
Bitrate umgeschaltet werden, wobei es sich bei der Annäherung um
eine der oben erwähnten
Grenzen handelt. Dieses Letztgenannte erbringt im Allgemeinen eine
bessere Reaktion auf eine Bitanforderung als nannte erbringt im
Allgemeinen eine bessere Reaktion auf eine Bitanforderung als das
Warten über
eine relativ lange feste Verzögerung
hinweg, um die gewünschte
Bitrate anzuwenden, wie zum Beispiel im Stand der Technik. Folglich
ermöglicht
die Erfindung eine bessere Qualität der in dem Datenstrom enthaltenen
Daten.
-
Die
Erfindung und die weiteren Merkmale, die optional und vorteilhaft
zum Implementieren der Erfindung verwendet werden können, gehen
aus den im Folgenden beschriebenen Zeichnungen hervor und können aus
diesen Zeichnungen abgeleitet werden.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 und 2 sind
Konzeptschaubilder, die grundlegende Merkmale der Erfindung gemäß Anspruch
1 veranschaulichen.
-
3 ist
ein Blockschaubild, das ein Beispiel einer Videocodiererbaugruppe
gemäß der Erfindung veranschaulicht.
-
4 ist
ein Blockschaubild, das einen Codierer veranschaulicht, der einen
Teil der in 3 veranschaulichten Videocodiererbaugruppe
bildet.
-
5 ist
ein Flussdiagramm, das ein Verfahren der gemeinsamen Bitratensteuerung
für die
in 3 veranschaulichte Videocodiererbaugruppe veranschaulicht.
-
6 ist
ein Kurvendiagramm, das für
einen Codierer in der in 3 veranschaulichten Videocodiererbaugruppe
die Übertragung
codierter Daten über
den Ausgangspuffer des Codierers und über den Eingangspuffer eines
hypothetischen Decodierers veranschaulicht.
-
7 ist
ein Kurvendiagramm, das ein Verfahren zum Berechnen einer kleinsten
neuen Bitrate und einer größten neuen
Bitrate für
einen Codierer in der Videocodiererbaugruppe von 3 veranschaulicht.
-
8 ist
ein Flussdiagramm, das ein Beispiel eines Verfahrens zur Quantisierungsparametersteuerung
für den
in 4 veranschaulichten Codierer veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
folgenden Anmerkungen betreffen Bezugszeichen. Gleiche Entitäten werden
in allen Figuren durch gleiche Bezugszeichen bezeichnet. Es können mehrere ähnliche
Entitäten
in einer einzelnen Figur erscheinen. In diesem Fall wird dem Bezugsbuchstaben
eine Ziffer oder ein Suffix beigegeben, um gleiche Entitäten voneinander
zu unterscheiden. Die Ziffer oder der Suffix können aus gründen der besseren Übersichtlichkeit weggelassen
werden oder können
durch ein Sternchen ersetzt werden, wenn wo ihr Wert nicht von Bedeutung
ist (unbedeutender Wert). Das gilt für die Beschreibung wie auch für die Ansprüche.
-
1 veranschaulicht
die folgenden Merkmale. Ein Datenstrom DS umfasst Steuerungswörter CW.
Ein Steuerungswort CW[i] legt fest, wann ein Datenabschnitt DP[i],
der zwischen dem Steuerungswort und einem nachfolgenden Steuerungswort
CW[i + 1] enthalten ist, aus einem Eingangspuffer IBUF an einem
Empfangsende zu lesen ist.
-
2 veranschaulicht
die folgenden Merkmale. Es wird für wenigstens einen in der Zukunft
liegenden Zeitpunkt Tfut berechnet, innerhalb welcher Grenzen Rmax,
Rmin die Bitrate R des Datenstromes an jenem in der Zukunft liegenden
Zeitpunkt Tfut verändert
werden kann, so dass es weder zu Unterlauf noch Überlauf des Eingangspuffers
kommt. Die Bitrate wird an einem in der Zukunft liegenden Zeitpunkt
Tfut2 innerhalb der Grenzen Rmax2, Rmin2 geändert, die für den in
der Zukunft liegenden Zeitpunkt Tfut2 berechnet wurden.
-
3 veranschaulicht
ein Beispiel einer Videocodiererbaugruppe gemäß der Erfindung. Die Videocodiererbaugruppe
empfängt
verschiedene Videoprogramme VP und gibt in Reaktion darauf einen Multiplex-MPEG-Datenstrom
MMDS aus. Der Multiplex-MPEG-Datenstrom
MMDS enthält
eine MPEG-codierte Version jedes Videoprogramms VP. Die Videocodiererbaugruppe
umfasst verschiedene Codierer ENC, einen Multiplexierer MUX und
eine gemeinsame Bitratensteuerung JBRC.
-
Die
Videocodiererbaugruppe funktioniert im Grunde folgendermaßen. Jeder
Codierer ENC codiert ein anderes Videoprogramm und gibt einen MPEG-Datenstrom
MDS an den Multiplexierer aus. Der Multiplexierer kombiniert die
MPEG-Datenströme
zu dem Multiplex-MPEG-Datenstrom MMDS. Jeder Codierer legt des Weiteren
eine Bitratensteuerungsanzeige IND mit jedem Bild in dem Videoprogramm
fest, das er codiert. Die Bitratensteuerungsanzeige ist eine Schätzung, wie
schwierig oder wie leicht es ist, das momentane Bild und eine Anzahl nachfolgender
Bilder zu codieren. Ein Bild ist schwierig oder leicht zu codieren,
wenn für
eine bestimmte Qualität
die Codierung des Bildes relativ viele bzw. wenige Bits erzeugt.
-
Die
gemeinsame Bitratensteuerung teilt eine Gesamtbitrate Rtot zwischen
den Videocodierern auf der Basis der Bitratensteuerungsanzeigen
auf, die sie empfängt.
Das heißt,
die gemeinsame Bitratensteuerung weist jedem Codierer eine bestimmte
Bitrate R zu, wobei die Summe dieser Bitraten die Gesamtbitrate
ist. Ein Codierer speist seinen MPEG-Datenstrom in den Multiplexierer
mit der ihm zugewiesenen Bitrate ein. Die gemeinsame Bitratensteuerung weist
einem Codierer, der Bilder empfängt,
die schwierig zu codieren sind, eine höhere Bitrate zu als einem Codierer,
der Bilder empfängt,
die leicht zu codieren sind. Auf diese Weise behält die gemeinsame Bitratensteuerung
ein im Wesentlichen konstantes Qualitätsverhältnis zwischen codierten Bildern,
die von den jeweiligen Codierern kommen, bei. Des Weiteren hilft
die gemeinsame Bitratensteuerung den jeweiligen Codierern, aufeinanderfolgende
codierte Bilder mit einer im Wesentlichen konstanten Qualität auszugeben.
Dies wird im Folgenden eingehender erläutert.
-
4 veranschaulicht
einen Codierer ENC, der einen Teil der in 3 veranschaulichten
Videocodiererbaugruppe bildet. Der Codierer umfasst Codierungsschaltungen
EC, einen Ausgangspuffer OBUF und eine Steuerung CON. Im Grunde
arbeitet er folgendermaßen.
Die Codierungsschaltungen codieren aufeinanderfolgende Bilder P
in Abhängigkeit von
einem Quantisierungsparameter QP. Die Codierungsschaltungen senden
codierte Bilder Pe an den Ausgangspuffer OBUF. Der Ausgangspuffer
gibt die codierten Bilder in Form eines MPEG-Datenstromes mit einer
Bitrate R aus.
-
Es
gibt drei Codierungstypen, gemäß denen ein
Bild codiert werden kann, und zwar die Codierung vom I-Typ, die
Codierung vom P-Typ und die Codierung vom B-Typ. Ein Bild, das I-Typ-, P-Typ- oder B-Typ-codiert
ist, wird im Folgenden I-, P- bzw. B-Bild genannt. Des Weiteren gibt es ein
zyklisches Muster bei dem Codierungstyp, der angewendet wird. Jeder Zyklus
beginnt mit einer I-Typ-Codierung, worauf eine oder mehrere P- und
B-Typ-Codierungen folgen. Ein Zyklus umfasst N Bilder, wobei N eine
ganze Zahl ist. Zum Beispiel kann bei N = 6 das zyklische Codierungsmuster
I-B-B-P-B-B sein.
-
Die
Steuerung steuert die Bitrate auf der Basis gemeinsamer Bitratensteuerungsmeldungen JBRCM,
die sie von der gemeinsamen Bitratensteuerung empfängt. Eine
gemeinsame Bitratensteuerungsmeldung legt eine Bitrate für den Codierer
fest und legt des Weiteren fest, wann diese Bitrate anzuwenden ist.
Somit legen die gemeinsamen Bitratensteuerungsmeldungen ein Bitratenprofil
für den
Codierer fest. Die Steuerung steuert die Bitrate gemäß dem Bitratenprofil.
Dies tut sie mittels eines Bitratensteuerungssignals RC, das die
Rate bestimmt, mit der codierte Bilddaten aus dem Ausgangspuffer
gelesen werden.
-
Der
Quantisierungsparameter bestimmt im Wesentlichen die Qualität der codierten
Bilder. Je niedriger sein Wert während
der Codierung eines Bildes ist, desto höher ist die Qualität des codierten
Bildes, aber desto mehr Bits umfasst das codierte Bild. Der Quantisierungsparameter
sollte vorzugsweise einen Wert haben, der im Wesentlichen konstant
und so klein wie möglich
ist, ohne Unterlauf oder Überlauf in
einem Eingangspuffer eines Decodierers, der den MPEG-Datenstrom
empfängt,
zu verursachen.
-
Die
Steuerung steuert den Quantisierungsparameter auf der Basis verschiedener
Parameter. Ein Parameter ist das Bitratenprofil gemäß Festlegung
durch die gemeinsamen Bitratensteuerungsmeldungen. Ein anderer Parameter
ist die Menge codierter Daten F, die in dem Ausgangspuffer enthalten ist.
Diese zwei Parameter bestimmen dem Platz im Hinblick auf die Anzahl
von Bits, der für
die Codierung einer Bildergruppe zur Verfügung steht. Ein weiterer Parameter,
der für
die Quantisierungsparametersteuerung verwendet wird, sind die Codierungsergebnisse
ER. Die Codierungsergebnisse geben Informationen darüber, wie
der verfügbare
Platz unter den Bildern aufzuteilen ist, dergestalt, dass der Quantisierungsparameter
einen im Wesentlichen konstanten Wert hat. Ein Codierungsergebnis
für ein Bild,
oder einen Teil eines Bildes, kann folgendermaßen ausgedrückt werden: die Anzahl von
Bits, die durch die Codierung des Bildes, oder seines Teils, erzeugt
wird, multipliziert mit dem Quantisierungsparameterwert, der angewendet
wurde. Dieses Produkt wird im Weiteren als "Komplexität" bezeichnet.
-
Der
Codierer kann in einem Einzeldurchgangsmodus oder in einem Doppeldurchgangsmodus
arbeiten. Beim Einzeldurchgangsmodus codieren die Codierungsschaltungen
ein Bild nur einmal. Das heißt,
ein Bild durchläuft
die Codierungsschaltungen sozusagen nur einmal. Während dieses
Einzeldurchgangs steuert die Steuerung den Quantisierungsparameter
unter Verwendung von Codierungsergebnissen, die sich nur auf vorherige
Bilder beziehen. Beim Doppeldurchgangsmodus codieren die Codierungsschaltungen
ein Bild zweimal. Das heißt, ein
Bild durchläuft
die Codierungsschaltungen sozusagen zweimal. Beim ersten Durchgang
wird das Bild codiert, während
die Steuerung einen festen Quantisierungsparameter anwendet. Der
erste Durchgang dient dazu, Codierungsergebnisse zu erhalten, die sich
auf das Bild beziehen. Beim zweiten Durchgang steuert die Steuerung
den Quantisierungsparameter wie oben beschrieben unter Verwendung
der Codierungsergebnisse, die beim ersten Durchgang erhalten wurden.
Somit arbeitet die Quantisierungsparametersteuerung im Allgemeinen
im Doppeldurchgangsmodus besser als im Einzeldurchgangsmodus.
-
Die
Steuerung legt des Weiteren eine Bitratensteuerungsanzeige IND mit
jedem zu codierenden Bild fest. Beim Einzeldurchgangsmodus legt
der Codierer die Bitratensteuerungsanzeige auf der Basis von Codierungsergebnissen
fest, die sich nur auf vorherige Bilder beziehen. Beim Doppeldurchgangsmodus
legt der Codierer die Bitratensteue rungsanzeige auf der Basis von
Codierungsergebnissen fest, die ein Codierungsergebnis des momentanen
Bildes enthalten.
-
5 veranschaulicht
ein Verfahren der gemeinsamen Bitratensteuerung für die in 3 veranschaulichte
Videocodiererbaugruppe. Bei einem Initialisierungsschritt GS1 weist
die gemeinsame Bitratensteuerung jedem Codierer ENC eine Zielbitrate Rtarget
zu. Die Zielbitrate Rtarget bestimmt die durchschnittliche Qualität der codierten
Bilder, die der betreffende Codierer liefert.
-
Die
folgende Reihe von Schritten wird wiederholt ausgeführt. Zum
Beispiel können
sie in jedem Bildzeitraum ausgeführt
werden.
-
In
einem Anzeigeberechnungsschritt GS2 berechnet jeder Codierer eine
Bitratensteuerungsanzeige IND und sendet die Bitratensteuerungsanzeige an
die gemeinsame Bitratensteuerung. Die Bitratensteuerungsanzeige
kann folgendermaßen
berechnet werden. Die Bitratensteuerungsanzeige ist eine durchschnittliche
Bildkomplexität
AVX, multipliziert mit der Zielbitrate für den Codierer, geteilt durch
einen Messwert der Leuchtdichteentropie ACT. Die durchschnittliche
Bildkomplexität
wird folgendermaßen
berechnet. Es wird angenommen, dass für die N-1 nachfolgenden Bilder
jedes I-, P- und B-Bild eine Komplexität hat, die derjenigen des zuletzt
codierten I-, P- bzw. B-Bildes entspricht. Die durchschnittliche Bildkomplexität ist dann
die durchschnittliche Komplexität
des momentanen Bildes und der N-1 nachfolgenden Bilder. Die Leuchtdichteentropie
ist der Durchschnitt von Makroblockaktivitäten in dem zuletzt codierten
Bild, bei dem es sich um das vorherige Bild beim Einzeldurchgangsmodus
oder das momentane Bild beim Doppeldurchgangsmodus handelt. Die
Makroblockaktivität
wird in dem Dokument ISO/IEC JTC1/SC29/WG11/N0400, April 1993, "Test Model 5, Draft
Revision 2", Abschnitt
5.2.2, Seite 60, definiert.
-
In
einem Bitratenberechnungsschritt GS3 berechnet die gemeinsame Bitratensteuerung
für jeden
Codierer eine optimale Bitrate Ropt, die dem Codierer am besten
zuzuweisen ist. Die optimale Bitrate für einen Codierer ist die Bitratensteuerungsanzeige des
Codierers, geteilt durch die Summe aller Bitratensteuerungsanzeigen,
multipliziert mit der Gesamtbitrate. Somit ist die optimale Bitrate
praktisch ein Teil der Gesamtbitrate. Die Größe des Teils entspricht dem
Beitrag der Bitratensteuerungsanzeige zu der Summe aller Bitratensteuerungsanzeigen.
-
Im
Umschaltzeitüberprüfungsschritt
GS4 wird eine Anzahl unterschiedlicher Umschaltzeiten Tsw überprüft. Eine
Umschaltzeit ist ein Augenblick, wenn die Bitraten der jeweiligen
MPEG-Datenströme geändert werden
können.
Einige Umschaltzeiten oder sogar alle Umschaltzeiten können vor
dem momentanen Augenblick – plus
einer konstanten Ende-zu-Ende-Verzögerung – liegen. Die konstante Ende-zu-Ende-Verzögerung ist
die Differenz zwischen dem Augenblick, wo ein codiertes Bild in
den Ausgangspuffer eines Codierers geschrieben wird, und dem Augenblick,
wo das codierte Bild aus einem Eingangspuffer eines hypothetischen
Decodierers gelesen wird, der direkt mit dem Codierer verbunden
ist. Das heißt,
es gibt keine Übertragungsverzögerung zwischen
dem Codierer und dem hypothetischen Decodierer.
-
Der
Umschaltzeitüberprüfungsschritt
GS4 umfasst zwei Teilschritte, die für jede Umschaltzeit einzeln
ausgeführt
werden.
-
In
einem Bitratenbegrenzungs-Teilschritt GS4a legt die gemeinsame Bitratensteuerung
eine begrenzte optimale Bitrate Roptc für jeden Codierer in der folgenden
Weise fest. Zuerst berechnet die gemeinsame Bitratensteuerung eine
größte neue
Bitrate Rmax und eine kleinste neue Bitrate Rmin für eine MPEG-2-Kompatibilität des Codierers.
Der Codierer ist MPEG-2-kompatibel, wenn der von ihm ausgegebene
MPEG-Datenstrom weder Unterlauf noch Überlauf in einem Decodierer-Eingangspuffer
verursacht. Zu einem Überlauf
kommt es, wenn die neue Bitrate die größte neue Bitrate übersteigt,
und zu einem Unterlauf kommt es, wenn die neue Bitrate kleiner ist
als die kleinste neue Bitrate. Die Art und Weise, in der die gemeinsame
Bitratensteuerung die kleinste neue Bitrate und die größte neue
Bitrate berechnet, wird im Weiteren näher erläutert. Die begrenzte optimale
Bitrate ist die optimale Bitrate, wie sie oben definiert wurde,
sofern die optimale Bitrate keinen Unterlauf oder Überlauf
verursacht. In diesem Fall ist die begrenzte optimale Bitrate die
kleinste Bitrate bzw. die größte Bitrate.
-
Bei
einem Delta-Raten-Berechnungs-Teilschritt GS4b berechnet die gemeinsame
Bitratensteuerung für
jeden Codierer eine Delta-Rate ΔR.
Es wird angenommen, dass die Bitrate in der untersuchten Umschaltzeit
zu der begrenzten optimalen Bitrate umgeschaltet wird. Die gemeinsame
Bitratensteuerung berechnet die durchschnittliche Bitrate, die dann über ein
Zeitintervall erhalten wird, das sich über das momentane Bild und
die N-1 nachfolgenden
Bilder erstreckt. Die Delta-Rate ist die Differenz zwischen der
optimalen Bitrate und der durchschnittlichen, in dieser Weise berechneten
Bitrate. Die Delta-Rate sollte im Idealfall für jeden Codierer null sein.
-
In
einem Umschaltzeitauswahlschritt GS5 wird eine der untersuchten
Umschaltzeiten in der folgenden Weise ausgewählt. Für jede Umschaltzeit wird festgelegt, welche
Delta-Rate den höchsten Wert
hat. Diese Delta-Rate wird als die größte Delta-Rate bezeichnet.
Je höher
die Delta-Rate, desto stärker
weicht die betreffende Bitrate von der optimalen Bitrate ab, und
desto größer ist
darum die Abweichung von einem gewünschten Qualitätsverhältnis zwischen
den MPEG-Datenströmen.
Es wird die Umschaltzeit ausgewählt,
für die
die größte Delta-Rate den
niedrigsten Wert hat: Tswsel = Tsw ⇒ MIN(MAX(ΔR)).
-
In
einem Bitratensteuerungsschritt GS6 sendet die gemeinsame Bitratensteuerung
eine gemeinsame Bitratensteuerungsmeldung JBRCM zu jedem Codierer.
Die gemeinsame Bitratensteuerungsmeldung spezifiziert die gewählte Umschaltzeit.
Sie spezifiziert des Weiteren die begrenzte optimale Bitrate für den Codierer,
die für
die gewählte
Umschaltzeit gilt. Somit programmiert die gemeinsame Bitratensteuerung
jeden Codierer, seinen MPEG-Datenstrom mit der begrenzten optimalen
Bitrate auszugeben, sobald die gewählte Umschaltzeit erreicht
ist. Bis zu dieser Zeit geben die jeweiligen Codierer ihre MPEG-Datenströme so aus,
wie es in den vorangegangenen Bitratensteuerungsmeldungen festgelegt ist.
-
6 veranschaulicht
für einen
Codierer in der in 3 veranschaulichten Videocodiererbaugruppe
die Übertragung
von codierten Daten über den
Ausgangspuffer des Codierers und über den Eingangspuffer eines
hypothetischen Decodierers. 6 ist ein
Kurvendiagramm, dessen horizontale Achse die Zeit T darstellt und
dessen vertikale Achse die Menge der codierten Daten NB darstellt,
die durch den Codierer im Hinblick auf die Anzahl von Bits erzeugt
werden. Die vertikale Achse zeigt des Weiteren an, zu welchem Bild
P die codierten Daten gehören.
Die Menge an codierten Daten wächst
mit jedem nachfolgenden Bild P, das codiert wurde.
-
Das
in 6 veranschaulichte Kurvendiagramm umfasst drei
Kurven: A, B und C. Kurve A stellt codierte Daten dar, die in den
Ausgangspuffer des Codierers geschrieben werden. Zum Beispiel zeigt
Kurve A, dass codierte Daten, die zum Bild P[i] gehören, im
Augenblick T[i] in den Ausgangspuffer geschrieben werden. In jedem
Bildzeitraum Tpp wird ein neues Bild in den Ausgangspuffer geschrieben.
-
Kurve
B stellt codierte Daten dar, die aus dem Ausgangspuffer gelesen
werden, um den MPEG-Datenstrom zu bilden. Die Schräge der Kurve B
wird durch die Bitrate des MPEG-Datenstroms bestimmt. Kurve B zeigt
zum Beispiel, dass codierte Daten, die zum Bild P[i] gehören, nach
einer Verzögerung ΔTob relativ
zum Augenblick T[i] aus dem Ausgangspuffer gelesen werden. Es wird
angenommen, dass der hypothetische Decodierer den MPEG-Datenstrom
ohne eine Übertragungsverzögerung empfängt. Infolge
dessen stellt Kurve B auch codierte Daten dar, die in den Eingangspuffer
dieses Decodierers geschrieben werden. Das heißt, das Bild P[i] wird im Augenblick
T[i] + ΔTob
in den Eingangspuffer geschrieben.
-
Kurve
C stellt codierte Daten dar, die aus dem Eingangspuffer des hypothetischen
Decodierers gelesen werden. Es wird angenommen, dass ein Bild sofort
aus dem Eingangspuffer gelesen wird. Das heißt, es dauert keine Zeit, ein
Bild zu lesen. Zum Beispiel zeigt Kurve C, dass codierte Daten,
die zum Bild P[i] gehören,
im Augenblick T[i] + ΔTeed
sofort aus dem Eingangspuffer gelesen werden. ΔTeed stellt eine konstante Ende-zu-Ende-Verzögerung dar. Die
konstante Ende-zu-Ende-Verzögerung
ist somit die Differenz zwischen dem Augenblick, wo ein Bild in
den Ausgangspuffer des Codierers geschrieben wurde, und dem Augenblick,
wo ein Bild aus dem Eingangspuffer des hypothetischen Decodierers
gelesen wurde. Es gilt, dass ΔTeed
= ΔTob + ΔTib, wobei ΔTib eine
Eingangspufferverzögerung
darstellt. Die Eingangspufferverzögerung legt fest, wann ein Bild
aus einem Eingangspuffer eines Decodierers gelesen werden soll.
-
In
jedem Augenblick ist die Menge an Daten, die in dem Eingangspuffer
des hypothetischen Decodierers enthalten sind, die Differenz zwischen
Kurve B und C in jenem Augenblick. Für eine MPEG-Kompatibilität muss diese
Menge an Daten zwischen einer Obergrenze und einer Untergrenze bleiben. Wenn
dies der Fall ist, so ist gewährleistet,
dass kein MPEG-kompatibler Decodierer, der den MPEG-Datenstrom empfängt, unterläuft oder überläuft. In
dieser Hinsicht spielt keine Übertragungsverzögerung zwischen
Codierer und Decodierer eine Rolle. Das liegt daran, dass der MPEG-Datenstrom
Steuerungswörter
umfasst, die für
jedes Bild bestimmen, wann das Bild aus dem Eingangspuffer gelesen
werden muss. Diese Steuerungswörter
bestimmen ΔTib
für jedes
Bild, dergestalt, dass ΔTob
+ ΔTib = ΔTeed. Folglich
gilt immer, dass die Menge an Daten, die in dem Eingangspuffer des
hypothetischen Decodierers enthalten sind, nach einer Verzögerung ΔTtrans ebenfalls
in dem Eingangspuffer eines echten Decodierers enthalten sind, wobei ΔTtrans die Übertragungsverzögerung ist.
Das heißt,
wenn der Eingangspuffer des hypothetischen Decodierers niemals unterläuft oder überläuft, so
tut es der Eingangspuffer des echten Decodierers ebenfalls nicht.
-
Nehmen
wir an, dass die momentane Zeit der Augenblick T[i] ist. Bild P[i]
ist gerade dabei, codiert zu werden, und ist folglich gerade dabei,
in den Ausgangspuffer des Codierers geschrieben zu werden. Dies
impliziert, dass jeder Augenblick später als T[i] die Zukunft ist.
Es wurde bereits erwähnt,
dass jedes codierte Bild, das in den Ausgangspuffer geschrieben
wird, nach einer Verzögerung ΔTeed aus dem
Eingangspuffer gelesen wird. Folglich kann die Zukunft von Kurve
C exakt innerhalb eines Zeitintervalls vorhergesagt werden, das ΔTeed von
der momentanen Zeit ausgehend verlängert. Es hängt allein von der Zukunft
von Kurve B innerhalb desselben Zeitintervalls ab, ob es zu einem
Unterlauf oder einem Überlauf
oder keinem von beiden kommt. Die Zukunft von Kurve B wird durch
ein Bitratenprofil für den
MPEG-Datenstrom bestimmt. Das Bitratenprofil wird durch die gemeinsame
Bitratensteuerung bestimmt, wie oben mit Bezug auf 5 erklärt.
-
7 veranschaulicht
ein Verfahren zum Berechnen einer kleinsten neuen Bitrate und einer größten neuen
Bitrate für
einen Codierer in der Videocodiererbaugruppe von 3.
Die Berechnung gilt für
einen Bitratenwechsel in einem zukünftigen Augenblick T[i] + ΔTsw, wobei ΔTsw zwischen
0 und ΔTeed
enthalten ist. 7 ist ein Kurvendiagramm, das
noch einmal die Merkmale des in 6 veranschaulichten
Kurvendiagramms aufgreift. Der Einfachheit halber wird angenommen,
dass die Bitrate bis T[i] + ΔTsw
im Wesentlichen konstant und gleich R1 ist. Die Menge an Daten,
unterhalb derer der Eingangspuffer unterläuft, soll null sein. Die Menge
an Daten, oberhalb derer der Eingangspuffer überläuft, soll OVR sein. Das in 7 veranschaulichte
Kurvendiagramm umfasst eine Kurve C+, bei der es sich um die Kurve
C handelt, die um einen Betrag gleich OVR angehoben ist.
-
Die
Kurve B erstreckt sich über
zwei Schrägen:
Rmin und Rmax. Die Schräge
Rmin bezeichnet die kleinste neue Bitrate, unterhalb derer es zum
Unterlauf kommt. Die Schräge
Rmin berührt
nur einen Punkt von Kurve C. Wenn die Schräge Rmin weniger steil wäre, so käme es zu
einem Unterlauf. Die Schräge
Rmax bezeichnet die größte neue
Bitrate, oberhalb derer es zu einem Überlauf kommt. Die Schräge Rmax
berührt
nur einen Punkt von Kurve C+. Wenn die Schräge Rmax steiler wäre, so käme es zu
einem Überlauf.
-
Die
gemeinsame Bitratensteuerung kann die Kurve C und C+ für jeden
Codierer auf der Basis von Meldungen berechnen, die von dem Codierer
stammen. Eine Meldung kann zum Beispiel die Menge an codierten Daten,
die in einem codierten Bild enthalten sind, und den Augenblick,
wo das codierte Bild aus dem Eingangspuffer des hypothetischen Decodierers gelesen
wird, anzeigen. Die gemeinsame Bitratensteuerung kann auch die Kurve
B bis zum Augenblick T[i] + ΔTsw
auf der Basis des Bitratenprofils des Codierers berechnen. Das Bitratenprofil
wird durch die gemeinsame Bitratensteuerung selbst be stimmt. Somit
reicht es für
die Berechnung von Kurve B aus, dass sich die gemeinsame Bitratensteuerung
die Bitratensteuerungsmeldungen merkt, die sie in der jüngeren Vergangenheit
an den Codierer gesandt hat. Sobald die Kurven C und C+ für das Zeitintervall
zwischen T[i] und T[i] + ΔTeed
berechnet wurden und die Kurve B für das Zeitintervall zwischen
T[i] und T[i] + ΔTsw
berechnet wurde, kann die gemeinsame Bitratensteuerung die kleinste
und die größte neue
Bitrate berechnen, die zur Umschaltzeit T[i] + ΔTsw angewendet werden kann.
-
8 veranschaulicht
ein Beispiel eines Verfahrens zur Quantisierungsparametersteuerung in
dem in 4 veranschaulichten Codierer. Das Verfahren umfasst
mehrere Schritte S1-S9, die für
jedes Bild P ausgeführt
werden. Die Schritte S1-S9 können
auch für
jede Scheibe in dem Bild P ausgeführt werden. Es wird angenommen,
dass der Codierer im Einzeldurchgangsmodus arbeitet, der oben beschrieben
wurde. Es ist zu beachten, dass es beim MPEG drei verschiedene Typen
des Codierens eines Bildes gibt: eine I-Typ-Codierung, eine P-Typ-Codierung
und eine B-Typ-Codierung. Ein Bild, das einer I-Typ-, einer P-Typ- oder einer B-Typ-Codierung
unterzogen wird, wird als ein Typ-I-, ein Typ-P- bzw. ein Typ-B-Bild
bezeichnet.
-
In
einem Schritt S1 wird eine Bildkomplexität PCX für jeden Typ des Bildes I, P
und B berechnet. Jede Bildkomplexität PCX ist ein Produkt aus der
Anzahl von Bits NOB, die durch eine jüngste Codierung erzeugt wurden,
und dem Quantisierungsparameterwert QPAR, der in der jüngsten Codierung
verwendet wurde. Jede Bildkomplexität PCX ist eigentlich eine in
der Vergangenheit liegende Codierungserfahrung für den betreffenden Codierungstyp.
Sie kann benutzt werden, um für
einen bestimmten Quantisierungsparameterwert QPAR vorherzusagen,
welche Anzahl von Ausgangsbits erhalten wird, wenn ein nachfolgendes
Bild codiert wird. Die Bildkomplexität PCX für den zu verwendenden Codierungstyp
kann durch den Quantisierungsparameterwert QPAR geteilt werden.
Das Ergebnis dieser Division ist eine Vorhersage – auf der
Grundlage der in der Vergangenheit liegenden Codierungserfahrung – der Anzahl von
Ausgangsbits, die erhalten werden.
-
In
einem Schritt S2 wird eine Bildergruppen-Komplexität GCX berechnet.
Die Bildergruppen-Komplexität
GCX ist die Summe aus drei Termen. Jeder Term bezieht sich auf einen
anderen Bildtyp und ist die Bildkomplexität PCX des betreffenden Typs,
multipliziert mit der Anzahl M von Bildern des betreffenden Typ
innerhalb einer Bildergruppe, geteilt durch einen Gewichtungsfaktor
K für den
betreffenden Typ. Die Bildergruppen-Komplexität GCX ist ebenfalls eigentlich
eine in der Vergangenheit liegende Co dierungserfahrung, die breiter
ist als die Bildkomplexität
PCX, die benutzt werden kann, um einen Wert für den Quantisierungsparameter
QPAR zu berechnen. Zum Beispiel kann die Bildergruppen-Komplexität GCX durch
eine gewünschte
Anzahl von Ausgangsbits geteilt werden, die für N nachfolgende Bilder erhalten
werden soll. Dementsprechend wird ein Wert für den Quantisierungsparameter
QPAR erhalten, mit dem – auf
der Grundlage der in der Vergangenheit liegenden Codierungserfahrung – die Codierung
der N nachfolgenden Bilder die gewünschte Anzahl von Bits erzeugen
sollte. Dieses letztere braucht jedoch nicht so zu sein.
-
In
einem Schritt S3 wird eine Bildcodierungsschätzung PCE für jeden Bildtyp I, P und B
berechnet. Die Bildcodierungsschätzung
PCE ist das Produkt eines ersten und eines zweiten Terms. Der erste Term
ist die Bildkomplexität
PCX des betreffenden Typs, geteilt durch den Gewichtungsfaktor K
des betreffenden Typ. Der zweite Term ist ein anfänglicher Wert
VALint für
ein Gruppencodierungsziel GCT, geteilt durch die in Schritt S2 berechnete
Bildergruppen-Komplexität
GCX. Das Gruppencodierungsziel GCT ist die Anzahl von Bits, die
durch die Codierung des momentanen Bildes und der N-1 nachfolgenden Bilder
erhalten werden sollte. Der anfängliche
Wert VALint für
das Gruppencodierungsziel GCT ist die Anzahl von Bits, die aus dem
Ausgangspuffer während
eines Zeitraums ausgegeben werden, der sich über das momentane Bild und
die N-1 nachfolgenden Bilder erstreckt. Somit basiert die Bildcodierungsschätzung PCE
auf dem folgenden Ziel: Die Menge an Daten, die in den Ausgangspuffer
OBUF eingespeist wird, sollte gleich der Menge an Daten sein, die
während
des betreffenden Zeitraums aus dem Ausgangspuffer OBUF herausgenommen
werden. Der zweite Term der Bildcodierungsschätzung PCE stellt einen Wert
für den
Quantisierungsparameter QPAR dar, mit dem – auf der Grundlage einer in
der Vergangenheit liegenden Codierungserfahrung – dieses Ziel erreicht werden
sollte.
-
Es
ist zu beachten, dass der anfängliche Wert
VALint des Gruppencodierungsziels GCT von den gemeinsamen Bitratensteuerungsmeldungen abhängt, die
durch den Codierer empfangen werden. Es ist oben unter Bezug auf 3 erläutert worden, dass
diese gemeinsamen Bitratensteuerungsmeldungen ein Bitratenprofil
für den
Codierer festlegen. Das Bitratenprofil bestimmt die Menge an Bits,
die Anzahl von Bits, die während
eines Zeitraums, der sich über
das momentane Bild und die N-1 nachfolgenden Bilder erstreckt, aus
dem Ausgangspuffer OBUF ausgegeben werden. Da diese Anzahl von Bits
das Gruppencodierungsziel GCT ist, bestimmen die gemeinsamen Bitratensteuerungsmeldun gen
somit dieses Ziel. Folglich hängt
die Bildcodierungsschätzung
PCE von den gemeinsamen Bitratensteuerungsmeldungen ab.
-
In
einem Schritt S4 wird ein prognostizierter Pufferfüllungsgrad
BF[nextI] am nächsten
I-Bild berechnet. Der prognostizierte Pufferfüllungsgrad BF[nextI] basiert
auf dem anfänglichen
Wert VALint für
das Gruppencodierungsziel GCT und der daraus abgeleiteten Bildcodierungsschätzung PCE.
Der prognostizierte Pufferfüllungsgrad
BF[nextI] ist der momentane Füllungsgrad
BF[now] des Ausgangspuffers plus einer Summe F von Bildcodierungsschätzungen,
die eine Bildcodierungsschätzung
PCE für jedes
Bild bis zum nächsten
I-Bild umfasst, minus der Anzahl von Bits OUT[nextI], die aus dem
Ausgangspuffer bis zum nächsten
I-Bild ausgegeben werden.
-
In
einem Schritt S5 wird ein Pufferfüllungsgradüberschuss ΔBF berechnet. Der Pufferfüllungsgradüberschuss ΔBF ist die
Differenz zwischen dem prognostizierten Pufferfüllungsgrad BF[nextI] und einem
gewünschten
Pufferfüllungsgrad
BF[des] am nächsten
I-Bild. Der gewünschte
Pufferfüllungsgrad BF[des]
wird vorzugsweise so bestimmt, dass er einem Eingangspuffer an einem
Decodierungsende entspricht, der unmittelbar vor dem Decodieren
des I-Bildes im Wesentlichen mit Daten gefüllt ist.
-
In
einem Schritt S6 wird ein adaptierter Wert VALadp für das Gruppencodierungsziel
GCT berechnet. Der adaptierte Wert VALadp für das Gruppencodierungsziel
GCT ist der anfängliche
Wert VALint des Gruppencodierungsziels GCT, das die Anzahl von Bits
ist, die während
eines Zeitraums, der sich über das
momentane Bild und die nachfolgenden N-1 Bilder erstreckt, aus dem
Ausgangspuffer ausgegeben wird, minus dem Pufferfüllungsgradüberschuss ΔBF.
-
In
einem Schritt S7 wird ein Bildcodierungsziel PCT zum Codieren des
momentanen Bildes berechnet. Das Bildcodierungsziel PCT basiert
in der gleichen Weise auf dem adaptierten Wert VALadp des Gruppencodierungsziels
GCT, wie die Bildcodierungsschätzung
PCE auf dem anfänglichen
Wert VALint des Gruppencodierungsziels GCT basiert. Das Bildcodierungsziel
PCT ist ein Produkt eines ersten Terms und eines zweiten Terms.
Der erste Term ist die Bildkomplexität PCX, die zu dem Typ des zu codierenden
Bildes I, B oder P gehört,
geteilt durch den Gewichtungsfaktor K, der für diesen Typ verwendet wird.
Der zweite Term ist der adaptierte Wert VALadp für das Gruppencodierungsziel
GCT, geteilt durch die Bildergruppen-Komplexität GCX.
-
In
einem Schritt S8 wird das Bildcodierungsziel PCT verifiziert, um
ein verifiziertes Bildcodierungsziel PCTver zu erhalten. In diesem
Schritt wird überprüft, ob es
an einem Decodierungsende zu einem Unterlauf oder einem Überlauf
kommt oder nicht, wenn die Codierung des momentanen Bildes eine
Anzahl von Bits erzeugt, die gleich dem Bildcodierungsziel PCT ist.
Wenn es weder Unterlauf noch Überlauf
gibt, so ist das verifizierte Bildcodierungsziel PCTver gleich dem
Bildcodierungsziel PCT, das heißt,
das Bildcodierungsziel PCT wird nicht verändert. Wenn jedoch das Bildcodierungsziel
PCT zu einem Unterlauf oder Überlauf
führt,
so wird das Bildcodierungsziel PCT bei seiner Ersetzung praktisch um
einen Wert begrenzt, wo es weder zu einem Unterlauf noch einem Unterlauf
kommt.
-
In
einem Schritt S9 wird der Quantisierungsparameterwert QPAR während der
Codierung des momentanen Bildes in der folgenden Weise gesteuert.
Der Quantisierungsparameterwert QPAR ist die Summe eines ersten
Terms und eines zweiten Terms. Der erste Term ist die Bildkomplexität PCT des
betreffenden Typs, geteilt durch das verifizierte Bildcodierungsziel
PCTver. Der zweite Term ist das Produkt einer Zielabweichung ΔTGT und eines
Reaktionsparameters RP. Die Zielabweichung ΔTGT ist die Anzahl von Bits
NOBP, die bis dahin durch die Codierung des momentanen Bildes erzeugt
wurden, minus dem verifizierten Bildcodierungsziel PCTver, multipliziert
mit dem Verhältnis
der bis dahin verstrichenen Zeit t-t0 zum Codieren des momentanen
Bild und des Bildzeitraums Tp. Der Reaktionsparameter RP ist 512,
geteilt durch die Bitrate R des MPEG-Datenstroms DS.
-
Hinsichtlich
der Quantisierungsparametersteuerung QPAR wird Folgendes angemerkt.
Der erste Term ist eine globale oder langfristige Strategie zum
Steuern des Quantisierungsparameterwertes QPAR. Nehmen wir an, dass
das Bildcodierungsziel nicht begrenzt ist, was bedeutet, dass das
verifizierte Bildcodierungsziel PCTver gleich dem Bildcodierungsziel
PCT ist. In diesem Fall entspricht der erste Term dem Gewichtungsfaktor
K für das
betreffende Bild, multipliziert mit der Bildergruppen-Komplexität GCX, geteilt
durch den adaptierten Wert VALadp des Gruppencodierungsziels GCT.
Die Bildergruppen-Komplexität
GCX besteht aus einer Summe von Produkten aus "Anzahl von Bits, die in der jüngeren Vergangenheit
tatsächlich
erzeugt wurden" und "dem Quantisierungsparameter,
der angewendet wurde". Somit
stellt der erste Term praktisch einen Wert für den Quantisierungsparameter
QPAR dar, von dem man – auf
der Erfahrung der jüngsten
Vergangenheit basierend – erwartet,
dass er zu einer Anzahl von gewünschten
Bits führt.
Der zweite Term ist eine lokale oder kurzfristige Strategie zum
Justieren des Quantisierungsparameters QPAR. Er ist eine Art von
Sicherheitsmaßnahme,
die verhindert, dass die Co dierung eine Anzahl von Bits hervorbringt,
die in einem relativ großen
Ausmaß von
der Zielanzahl von Bits abweicht, die das verifizierte Bildcodierungsziel
PCTver darstellt.
-
Die
Zeichnungen und ihre obige Beschreibung dienen daher der Veranschaulichung
und nicht der Einschränkung
der Erfindung. Es ist klar, dass es zahlreiche Alternativen gibt,
die in den Geltungsbereich der angehängten Ansprüche fallen. In diesem Zusammenhang
werden die folgenden abschließenden
Anmerkungen gemacht.
-
Es
gibt zahlreiche Möglichkeiten,
Funktionen oder Funktionselemente physisch über verschiedene Einheiten
zu verteilen. In dieser Hinsicht sind die Zeichnungen sehr schaubildhaft,
und jede stellt nur eine einzelne mögliche Ausführungsform der Erfindung dar.
Obgleich also eine Zeichnung verschiedene Funktionselemente als
verschiedene Blöcke
zeigt, schließt
dies in keiner Weise eine Implementierung einiger oder aller Funktionselemente
als eine einzelne physische Einheit aus. Zum Beispiel können die Ausgangspuffer
der in 3 gezeigten Codierer als ein einzelner Speicherschaltkreis
implementiert sein, wie in der internationalen Anmeldung beschrieben, die
unter der Nummer WO 96/20568 veröffentlicht
ist.
-
Obgleich 8 ein
Beispiel eines Verfahrens zur Quantisierungsparametersteuerung auf
der Basis der Ausgangsbitrate veranschaulicht, schließt dies
in keiner Weise andere Verfahren der Quantisierungsparametersteuerung
aus. Worauf es ankommt, ist einzig und allein, dass das Ausmaß der Komprimierung,
das bei dem Verfahren von 8 mit Hilfe eines
Ziels gesteuert wird, auf der Basis der Ausgangsbitrate berechnet
wird.