-
Diese
Erfindung bezieht sich auf eine Videokodierung und -Dekodierung.
-
Eines
der jüngsten
Ziele in der Mobiltelekommunikation ist es gewesen, die Geschwindigkeit
der Datenübertragung
zu erhöhen,
um die Aufnahme von Multimedia-Diensten in Mobilnetzwerken zu ermöglichen.
Eine der Hauptkomponenten von Multimedia ist ein digitales Video.
Videoübertragung
umfasst einen ziemlich kontinuierlichen Datenverkehr, welcher bewegende
Bilder darstellt. Wie allgemein bekannt ist, ist die benötigte Datenmenge,
die benötigt
wird um Bilder zu übertragen,
groß,
verglichen mit vielen anderen Medienarten, und bislang die Verwendung von
Video in niedrigen Bitraten-Endgeräten (low bit-rate terminals)
vernachlässigbar
gewesen ist. Jedoch wurde ein signifikanter Fortschritt in dem Bereich
der niedrigen Bitraten-Videokompression erreicht. Akzeptable Videoqualität kann bei
Bitraten um 20 kB (Kilobyte) pro Sekunde erreicht werden. Als ein Ergebnis
dieser fortschreitenden Verringerung in der Bitrate, wird Video
ein durchführbarer
anzubietender Dienst über
Kanäle,
wie Mobilkommunikationskanäle sein.
-
Eine
Videosequenz besteht aus Serien stehender Bilder oder Rahmen. Videokomprimierungs-Verfahren
beruhen auf einem Reduzieren der Redundanz und wahrnehmungs-irrelevanter
Teile von Videosequenzen. Die Redundanz in Videosequenzen kann in
räumliche,
zeitliche und spektrale Redundanz eingeteilt werden. Räumliche
Redundanz bedeutet die Korrelation zwischen benachbarten Pixeln
innerhalb eines Rahmens. Zeitliche Redundanz bedeutet die Korrelation
zwischen Bereichen aufeinanderfolgender Rahmen. Zeitliche Redundanz ergibt
sich aus der Wahrscheinlichkeit von Objekten, die in einem vorhergehenden
Bild erscheinen, auch in dem gegenwärtigen Bild zu erscheinen.
Kompression kann durch ein Erzeugen von Bewegungskompensationsdaten
erreicht werden, welche die Bewegung (d. h. Verschiebung) zwischen ähnlichen
Bereichen des gegenwärtigen
und vorhergehenden Bildes beschreiben. Das gegenwärtige Bild
wird somit von dem vorhergehenden vorausgesagt. Spektrale Redundanz
bedeutet die Korrelation zwischen den unterschiedlichen Farbkomponenten
des gleichen Bildes.
-
Video-Kompressionsverfahren
unterscheiden typischerweise zwischen Bildern, die eine zeitliche
Redundanzverringerung verwenden oder nicht verwenden. Komprimierte
Bilder, die zeitliche Redundanz-Verringerungsverfahren nicht nutzen,
werden üblicherweise
INTRA- oder I-Rahmen
bezeichnet, während
zeitlich vorausgesagte Bilder INTER- oder P-Rahmen genannt werden
(und auch B-Rahmen, wenn die INTER-Rahmen in einer Vorwärts- oder Rückwärts-Weise
vorausgesagt werden können).
In dem Fall von INTER-Rahmen, ist das vorausgesagte (bewegungskompensierte)
Bild selten präzise
genug, und deshalb ist ein räumlich
komprimiertes Vorhersagebild auch ein Teil von jedem INTER-Rahmen.
-
Jedoch
kann eine ausreichende Kompression gewöhnlich nicht nur durch ein
Verringern der Redundanz der Videosequenz erreicht werden. Somit versuchen
Videokodierer die Qualität
jener Teile der Videosequenz zu verringern, welche subjektiv die
am wenigsten wichtigen sind. Zusätzlich
wird die Redundanz des kodierten Bitstroms mittels effizienter verlustfreier
Kodierung von Kompressionsparametern und Koeffizienten reduziert.
Die Haupttechnik ist variable Längenkodes
zu verwenden.
-
Komprimiertes
Video wird leicht durch Übertragungsfehler
verfälscht,
hauptsächlich
aus zwei Gründen.
Erstens, aufgrund der Verwendung zeitlicher voraussagender unterschiedlicher
Kodierung (INTER-Rahmen) wird ein Fehler sowohl räumlich als auch
zeitlich fortgepflanzt. In der Praxis bedeutet dies, dass, wenn
einmal ein Fehler auftritt, es für
das menschliche Auge für
eine relativ lange Zeit leicht sichtbar ist. Insbesondere anfällig sind Übertragungen
bei geringen Bitraten, wo es nur wenige INTRA-kodierte Rahmen gibt
(die Übertragung
INTRA-kodierter Rahmen würde
die zeitliche Fehlerfortpflanzung beenden). Zweitens erhöht die Verwendung
variabler Längenkodes
die Fehleranfälligkeit. Wenn
ein Bitfehler das Kodewort zu einem anderen unterschiedlicher Länge verändert, verliert
der Dekoder die Kodewort-Synchronisation und dekodiert aufeinanderfolgende
fehlerfreie Kodewörter
(umfassend mehrere Bits) falsch, bis zur nächsten Synchronisation oder
Startkode. (Ein Synchronisationskode ist ein Bit-Muster, welches
nicht aus irgendeiner erlaubten Kombination andere Kodewörter erzeugt
werden kann.)
-
Eine
der anhaftenden Eigenschaften drahtloser Datenübernagung ist eine relativ
hohe Bitfehler-Wahrscheinlichkeit. Dieses Problem kann durch verschiedene
Transport-, Netzwerk- und Verbindungsschicht-Weitermeldungs-Schemen
(link layer retransmission schemes) angegangen werden. Jedoch ist
der Nachteil derartiger Schemen, die Möglichkeit unbeschränkter und
fluktuierender Übertragungsverzögerungen.
In audio-visuellen Gesprächsdiensten
ist es nicht akzeptabel, große
Ende-zu-Ende-Verzögerungen
zu haben. Somit können
Weitermeldungs-Schemen in derartigen Diensten nicht verwendet werden.
Stattdessen muss man versuchen, die Übertragungsfehler zu erfassen
und zu verdecken. In strömenden
audio-visuellen Wiedergewinnungsdiensten kann der Übertragungsverzug
etwas variieren, aufgrund der Tatsache, dass etwas anfängliche
Pufferung vor dem Beginn einer Wiedergabe (play-back) auftritt.
Jedoch ist der maximale akzeptable Übertragungsverzug festgelegt
und falls er überschritten
wird, gibt es eine störende
Pause in der Wiedergabe. In der Praxis werden sowohl zuverlässige als
auch unzuverlässige
Transportkanäle
in den Wiedergewinnungsdiensten verwendet.
-
Nicht
jedes Bit in einem komprimierten Video-Bitstrom weist eine gleiche
Wichtigkeit für
die dekomprimierten Bilder auf. Einige Bits definieren eine wesentliche
Information, wie Bildtyp (z. B. INTRA oder INTER), Quantisierungswert
und optionale Kodierungsmoden, die verwendet worden sind. Die ITU-T-Empfehlung
H.263 bezieht sich auf Videokodierung für eine geringe Bitraten-Kommunikation.
In H.263 wird die wesentlichste Information in dem Bild-Header gesammelt.
Ein Übertragungsfehler
in dem Bild-Header verursacht eine totale Fehlinterpretation aufeinanderfolgenden
Bits, die den Bildinhalt definieren. Aufgrund der Verwendung zeitlich
vorhersagender differentieller Kodierung (INTER-Rahmen), wird der
Fehler sowohl räumlich
als auch zeitlich fortgepflanzt. Somit ist ein normaler Ansatz für eine Bild-Header-Verfälschung,
das vorhergehende Bild auf dem Bildschirm zu fixieren, um eine INTRA-Bildanfrage
an das übertragende
Endgerät
zu senden und auf den angefragten INTRA-Rahmen zu warten. Dies kann
eine störende
Pause in dem empfangenen Video verursachen, insbesondere in Echtzeit-Gesprächsvideosequenzen.
-
Übertragungsfehler
weisen eine unterschiedliche Natur auf, abhängig von dem darunter liegenden
Netzwerk. In paketvermittelten Netzwerken, wie Internet etc., sind Übertragungsfehler
typischerweise Paketverluste (aufgrund von Staus in Netzwerkelementen).
In leitungsvermittelten Netzwerken, wie Mobilnetzwerken (z.B. HSCSD
für GSM),
sind Übernagungsfehler
typischerweise Bitfehler, wo „1" zu „0" verfälscht wird,
oder umgekehrt.
-
Um
Verschlechterungen in Bildern zu verhindern, die durch Übertragungsfehler
eingebracht worden sind, kann eine Weitermeldung verwendet werden,
eine Fehlererfassung und/oder Fehlerkorrekturverfahren können angewandt
werden und/oder Effekte von den empfangenen verfälschten Daten können kaschiert
werden. Normale Weitermeldung liefert einen angemessenen Weg, um
Videodatenströme vor
Fehlern zu schützen,
aber große Hin-und-Rück-Verzögerungen, die mit geringer
Bitraten-Übertragung
und moderaten oder hohen Fehlerraten verbunden sind, machen es praktisch
unmöglich,
eine Weitermeldung zu verwenden, insbesondere mit Echtzeit-Videotelefonanwendungen.
Fehlererfassungs- und Verbesserungsverfahren benötigen gewöhnlich hohe Übertragungs-Zusätze (transmission
overheads), da sie etwas Redundanz zu den Daten hinzufügen. Infolgedessen
kann eine Fehlerverschleierung für
geringe Bitraten-Anwendungen als ein bevorzugter Weg angesehen werden,
um Bilder vor Übertragungsfehlern
zu schützen
und wiederherzustellen. Videofehler-Verschleierungsverfahren sind typischerweise
bei Übertragungsfehlern
anwendbar, die durch Paketverlust und Bitverfälschung auftreten.
-
H.263
ist eine ITU-T-Empfehlung einer Videokodierung für eine geringe Bitraten-Kommunikation, die
im Allgemeinen Datenraten unter 64 kB/s (Kilobyte pro Sekunde) bedeutet.
Die Empfehlung spezifiziert die Bitstrom-Syntax und die Dekodierung
des Bitstroms. Momentan gibt es zwei Versionen von H.263. Die Version
1 besteht aus dem Kernalgorithmus und vier optionalen Kodierungsmoden.
Die H.263 Version 2 ist eine Erweiterung der Version 1, welche zwölf neue übertragbare
Kodierungsmoden bereitstellt. H.263 ist gegenwärtig eine der beliebtesten
Kodierungsverfahren, die für
mobile schnurlose Anwendungen vorgeschlagen wird, wo die Bitrate
in der Größenordnung
von 28,8 Bits pro Sekunde liegt und wobei gemeinsame Viertel-Zwischenformat (Quarter
Common Intermediate Format, QCIF)-Bilder von 176 × 144 Pixel
gewöhnlich
verwendet werden. Momentan betragen die erwarteten Bitraten für schnurlose
Produkte der dritten Generation ungefähr 64 kB/s (Kilobyte pro Sekunde)
und die Bildauflösung kann
höher sein.
-
Bilder
werden als Luminanz (Y) und zwei Farbunterschieds (Chrominanz)-Komponenten
(CB und CR kodiert.
Die Chrominanz-Bilder werden bei der halben Auflösung des Luminanzbildes entlang beider
Koordinatenachsen abgefragt. Bilddaten werden auf einer Block-für-Block-Basis
kodiert, wobei jeder Block 8 × 8
Pixel der Luminanz oder Chrominanz darstellt.
-
Jedes
kodierte Bild, wie auch der entsprechende kodierte Bitstrom, ist
in einer hierarchischen Struktur von vier Schichten angeordnet,
die von unten nach oben sind: Blockschicht, Makroblock-Schicht,
Bildsegment-Schicht und Bildschicht. Die Bildsegment-Schicht kann
entweder als eine Gruppe von Blöcken
oder einer Scheibe angeordnet werden.
-
Ein
Block bezieht sich auf 8 × 8
Pixel von Luminanz oder Chrominanz. Die Block-Schichtdaten besteht aus gleichfömig quantisierten
diskreten Cosinus-Transformationskoeffizienten,
die in Zickzack-Weise gescannt werden, wobei sie mit einem Stichproben-Kodierer
(run-length encoder) und mit variablen Längenkodes kodiert werden.
-
Jeder
Makroblock bezieht sich auf 16 × 16 Pixel
der Luminanz und den räumlich
entsprechenden 8 × 8
Pixel der zwei Chrominanzkomponenten. Mit anderen Worten, ein Makroblock
besteht aus vier 8 × 8
Luminanzblöcken
und den zwei räumlich
entsprechenden 8 × 8
Farbunterschiedsblöcken.
Jeder INTER-Makroblock ist mit einem Bewegungsvektor verbunden,
der die Position eines entsprechenden Bereichs in dem Referenzrahmen
definiert, der den Pixeln des gegenwärtigen INTER-Makroblocks ähnelt. Die
INTER-Makroblockdaten
umfassen kodierte Vorhersagefehlerdaten für die Pixel des Makroblocks.
-
Üblicherweise
ist jedes Bild in Segmente aufgeteilt, die als Gruppen von Blöcken (groups
of blocks, GOBs) bekannt sind. Eine Gruppe von Blöcken (GOB)
für ein
QCIF (Quarter Common Intermediate Format)-Bild umfasst typischerweise
eine Reihe von Makroblöcken (d.
h. 11 Makroblöcken).
Daten für
jede GOB besteht aus einem optionalen GOB-Header, gefolgt von Daten
für die
Makroblöcke innerhalb
der GOB.
-
Falls
der optionale scheibenstrukturierte Modus verwendet wird, wird jedes
Bild in Scheiben anstatt der GOBs aufgeteilt. Eine Scheibe enthält eine Zahl
aufeinanderfolgender Makroblöcke
in Abfrage-Ordnung (scan-order). Daten für jede Scheibe bestehen aus
einem Scheiben-Header, gefolgt durch Daten für die Makroblöcke der
Scheibe.
-
Die
Bildschicht-Daten enthalten Parameter, die den gesamten Bildbereich
und die Dekodierung der Bilddaten beeinflussen. Die kodierten Parameterdaten
sind in einem sogenannten Bild-Header angeordnet. Im QCIF-Format
ist ein Bild aufgeteilt in 176 × 144
Pixel, was 9 Reihen von 11 Makroblöcken entspricht.
-
Bilder-
und GOB-(oder Scheiben)-Header beginnen mit einem Synchronisations-
oder Startkode. Kein anderes Kodewort oder eine erlaubte Kombination
von Kodewörtern
kann das gleiche Bitmuster bilden, wie die Synchronisationskodes.
Somit können
die Synchronisationskodes für
eine Bitstrom-Fehlererfassung verwendet werden und für eine erneute
Synchronisation nach Bitfehlern.
-
H.263
ist der Video-Komprimierungsstandard, der in der ITU-T-Empfehlung
H.324 „Terminal for
Low Bit-Rate Communication" Februar
1998 empfohlen wird, welcher Videotelefon-Kommunikation über PSTN
und Mobilnetzwerke definiert. Wenn eine H.324-Verbindung über einen schnurlosen Kanal läuft, ist
es wahrscheinlich, dass der empfangene Bitstrom Transmissionsfehler
enthält.
In einem H.263-Videobitstrom sind diese Fehler extrem nachteilig,
wenn sie in Bild-Headern auftreten. Ein derartiger Fehler kann die
Dekodierung der Bildinhalte verhindern. Fehler in den INTRA-Bild-Headern
verursachen die stärksten
Auswirkungen, da diese Bilder als anfängliche zeitliche Vorhersagequellen
verwendet werden. Fehler in einem INTRA-Bild-Header beeinflussen
schädlich
das entsprechende dekodierte INTRA-Bild und jedes nachfolgende Bild,
welches anfangs von diesem INTRA-Bild vorhergesagt worden ist.
-
Das
europäische
Patent
EP 0 844 792
A2 mit dem Titel „Method
for Arranging Compressed Video Data for Transmission over a Noisy
Communication Channel" offenbart
eine digital komprimieries Videosignal-Übertragungssystem, das einen
Transportprozessor zum Segmentieren bereits komprimierter Daten
in Transportzellen für
eine Übertragung
beinhaltet. Bestimmte Abschnitte der komprimierten Daten werden
in weiteren Transportzellen formatiert, die mit normal auftretenden
Transportzellen vermischt sind. Die weiteren Transportzellen beinhalten
redundante Videosignaldaten, die verwendet werden können, um eine
komprimierte Videosignaldekodierung nach einem Verlust oder einer
Verfälschung übertragener Daten
zu verwenden. Das Dokument lehrt oder schlägt nicht vor, dass eine Vervielfältigung
von Header-Daten während
der Erzeugung des komprimierungskodierten Signals bereitgestellt
werden sollte, um einen komprimierungskodierten Videobitstrom bereitzustellen,
dem eine Fehlerausfallssicherheit (error resilience) innewohnt.
-
Gemäß der Erfindung
wird ein Verfahren einer Videokodierungs und -Dekodierung bereitgestellt,
wie in den angefügten
Ansprüchen
beansprucht. Ein Kodierer und Dekodierer werden ebenso bereitgestellt,
wie in den angefügten
Ansprüchen
beansprucht.
-
Eine
erste Ausführungsform
der Erfindung führt
ein neues Verfahren ein, um INTRA-Bild-Header in Video-Bitströmen zu wiederholen,
welches vollständig
verträglich
mit den ITU-T H.263-Empfehlungen ist. Die Erfindung führt redundante
Kopien von Bild-Headern in dem Bitstrom ein. Falls der erste Bild-Header
verfälscht
wird, kann ein Dekoder eine Kopie davon verwenden, um die Dekodierung
der Bildinhalte zu erlauben. Diese Erfindung führt ein INTRA-Bild-Header-Verfahren
ein, das die Standard-Syntax und -Semantik von H.263 verwendet. Deshalb
können
alle verträglichen
Kodierer das Verfahren verwenden.
-
Die
Einbeziehung einer Wiederholung des Bild-Headers, zumindest für INTRA-Rahmen,
bedeutet, dass ein empfangender Dekoder nicht notwendigerweise die
Anzeige fixieren, eine Wiederholungsanfrage an den Kodierer senden
und auf den Kodierer warten muss, um die wiederholte Information
zu senden. Somit gestörte
Pausen aufgrund der Bild-Fixierung werden verhindert und ein Endnutzer
sollte eine besseres Qualitätsvideo
erhalten.
-
Die
Erfindung ist anwendbar auf Echtzeit-Anwendungen und auch auf Nicht-Echtzeit-Anwendungen, wie
Rückgewinnungsdienste,
denen es nicht möglich
ist, auf INTRA-Wiederholungsanfragen
von einem empfangenden Dekoder zu antworten.
-
Aspekte
der Erfindung werden in den Ansprüchen bereitgestellt.
-
Die
Erfindung wird jetzt nur auf dem Weg des Beispiels, mit Bezug auf
die beigefügten
Zeichnungen beschrieben, in welchen:
-
1 ein
Multimedia-Mobilkommunikationssystem zeigt;
-
2 ein
Beispiel der Multimedia-Komponenten eines Multimedia-Endgeräts zeigt;
-
3 die
typische Datenstruktur eines Videosignals zeigt, das gemäß H.263
kodiert ist;
-
4 ein
Beispiel eines Video-Codec gemäß der Erfindung
zeigt;
-
5 die
Datenstruktur einer kodierten Videosignalausgabe durch einen Kodierer
gemäß einer ersten
Ausführungsform
der Erfindung zeigt;
-
6 die
Datenstruktur einer kodierten Videosignalausgabe durch einen Kodierer
gemäß einer zweiten
Ausführungsform
der Erfindung zeigt;
-
7 ein
Flussdiagramm ist, welches den Betrieb eines Videokodierers gemäß einer
dritten Ausführungsform
der Erfindung zeigt.
-
8 ein
Flussdiagramm ist, welches den Betrieb eines Videokodierers gemäß einer
ersten Ausführungsform
der Erfindung zeigt.
-
9 ein
Flussdiagramm ist, welches den Betrieb eines Videokodierers gemäß einer
dritten Ausführungsform
der Erfindung zeigt.
-
Eine
weitere Beschreibung der Erfindung wird mit Bezug auf die H.324-
und H.263-Empfehlungen
gemacht. Jedoch ist es nicht die Absicht, die Anwendung der Erfindung
auf diese oder verwandte Protokolle zu beschränken.
-
Die 1 zeigt
ein typisches Multimedia-Mobilkommunikationssystem. Ein erstes Multimedia-Endgerät 1 kommuniziert
mit einem zweiten Multimedia-Endgerät 2 mittels einer
Kommunikationsverbindung 3 und einem Kommunikationsnetzwerk 4.
Steuerungsdaten wie auch Multimediadaten werden zwischen den zwei
Endgeräten 1, 2 gesendet.
In den Ausführungsformen
der zu beschreibenden Erfindung, sind die Multimedia-Endgeräte 1, 2 mobile/schnurlose
Videotelefone und wobei das Kommunikationsnetzwerk ein Mobilkommunikationsnetzwerk,
wie ein GSM-Netzwerk ist. Die Kommunikationsverbindung 3 in
dieser Ausführungsform
ist eine Funkverbindung. In anderen Ausführungsformen der Erfindung,
können
die Multimedia-Endgeräte
sowohl Videotelefone eines öffentlichen
Telefonnetzes (Public Switched Telephone Network, PSTN) sein oder
eines kann ein mobiles Multimedia-Endgerät und eines ein PSTN-Multimedia-Endgerät sein. Die
Endgeräte 1, 2 können für Echtzeit-Anwendungen,
wie Videotelefonie oder für
Nicht-Echtzeit-Anwendungen, wie Rückgewinnungs-Dienste verwendet
werden.
-
Die 2 zeigt
die typischen Multimedia-Komponenten eines Endgerätes 1,
welches H.324 entspricht. Das Endgerät umfasst einen Video-Codec 10,
welcher H.263 entspricht, einen Audio-Codec 20, welcher
G.723.1 entspricht, einen Datenprotokoll-Manager 30, welcher
T.120 entspricht, einen Steuerungsmanager 40, welcher ein
Signal gemäß dem H.245-Steuerungsprotokoll
ausgibt, einen Multiplexer/Demultiplexer 50, welcher H.223
entspricht, und ein Modem 60 (falls benötigt). Der Video-Codec 10 empfängt Signale
von einer Videoerfassungs-Vorrichtung des Endgeräts (z.B. eine Kamera (nicht
dargestellt)) zum Kodieren und empfängt Signale von einem entfernten
Endgerät 2 zum
Dekodieren und Anzeigen durch das Endgerät 1 auf einer Anzeige 70.
Der Audio-Codec 20 empfängt
Signale zum Kodieren von dem Mikrofon (nicht dargestellt) des Endgerätes 1 und
empfängt
Signale von einem entfernten Endgerät 2 zum Dekodieren
und zur Wiedergabe durch einen Lautsprecher (nicht dargestellt) des
Endgerätes 1.
Diese Standards, auf welche vorhergehend Bezug genommen worden ist,
werden nur für
beispielhafte Zwecke beschrieben und sind beabsichtigt, beschränkend zu
sein.
-
Der
Steuerungsmanager 40 steuert den Betrieb des Video-Codec 10,
des Audio-Codec 20, des Datenprotokoll-Managers 30 und
des Multiplexers/Demultiplexers 50. Da die Erfindung jedoch
den Betrieb des Video-Codecs 10 betrifft, wird keine weitere
Diskussion anderer Teile des Endgerätes geliefert.
-
Der
Video-Codec 10 empfängt
ein digitales Eingabe-Videosignal von einer Signalquelle (nicht dargestellt).
Das Videosignal stellt eine Sequenz von Rahmen dar, wo jeder Rahmen
ein ruhendes Bild ist. Wenn die Rahmen in einer Sequenz angezeigt
werden, liefern sie den Eindruck eines Bildes, das eine Bewegung
enthält.
Somit wird die Sequenz von Rahmen hier als ein bewegendes Bild bezeichnet.
Der Codec 10 kodiert das bewegende Bild von der Signalquelle
(nicht dargestellt) und dekodiert ein empfangenes Signal, welches
ein bewegendes Bild zum Anzeigen auf der Anzeige 70 darstellt.
-
Die 3 zeigt
die Datenstruktur für
einen Rahmen (oder Bild) eines Videosignals, welches gemäß H.263
kodiert ist. Jeder Rahmen beginnt mit einem Bild-Header 80,
gewöhnlich
von ungefähr
50 Bits. Der Bild-Header 80 beinhaltet:
einen Bild-Startkode
(Picture Start Code, PSC) zur Synchronisation;
eine zeitliche
Referenz (Temporal Reference, TR), die durch Erhöhen des Wertes von TR in dem
zeitlich vorhergehenden Referenzbild (z.B. I-Rahmen)-Header um Eins
gebildet wird, zusätzlich
die Anzahl ausgelassener Bilder oder Bildern ohne Bezug seit dem vorhergehend übertragenen
Referenz-Bild;
Typ-Information (PTYPE), welche unter anderem
anzeigt, ob der Rahmen ein INTRA-Rahmen oder ein INTER-Rahmen, das
Format des Bildes (CIF, QCIF etc.) ist;
Quantisierer-Information
(PQUANT), die den für
den Rest des Bildes zu verwendenden DCT-Quantisierer anzeigt.
-
Dem
Bild-Header 80 folgen Bilderdaten 82 für das erste
Segment (GOB, Scheibe, etc) des Bildes. Infolge des Vorhandenseins
des Bild-Headers 80, ist ein Segment-Header für das erste
Segment nicht notwendig. Somit enthalten die Bild-Daten 82, die
dem Bild-Header 80 folgen, einen Makroblock-Bewegungsvektor 821 (falls
anwendbar) und Blockdaten 822.
-
Nach
den Daten 82 für
das erste Segment des Bildes gibt es einen Segment-Header 84 (z.B. GOB-Header)
für das
nächste
Segment. Dieser GOB-Header beinhaltet:
einen GOB-Startkode
(GOB start code, GBSC) zur Synchronisation;
eine Gruppenzahl
(Group Number, GN), welche die Zahl der GOB innerhalb des Bildes
anzeigt;
eine GOB-Rahmen-ID (GOB Frame ID, GFID), die den gleichen
Wert in jedem Segment eines vorgegebenen Bildes und den gleichen
Wert, wie in dem vorhergehend kodierten Bild aufweist, falls zwei
Bilder vom gleichen Typ sind (I, P, etc.); und
Quantisierer-Information
(GQUANT), welche den Quantisierer angibt, der für den Rest des Bildes verwendet
werden kann (wenn nicht aufeinanderfolgend in dem Bitstrom geändert).
-
Der
Segment-Header 84 für
das zweite Segment wird durch die Bilddaten 86 (d.h. Makroblock-Bewegungsvektor
(falls anwendbar) und Blockdaten) für das Segment gefolgt. Die
Rahmendaten setzen mit den Segment-Headern 84 und den Bild-Daten 86 fort,
bis der gesamte Rahmen kodiert worden ist. Ein Bild-Header 80 für den nächsten Rahmen
wird dann gesendet.
-
Es
wird einem Leser klar sein, dass der Verlust eines Bild-Headers
ernste Auswirkungen auf die Kodierung eines Bildes haben kann. Dem
Dekoder wird es nicht möglich
sein, das Bild zu synchronisieren, er wird nicht wissen, wie das
Bild kodiert worden ist (I oder P), etc. Üblicherweise, wenn der Bild-Header
verfälscht
wird, wird die Gesamtheit der Daten gestrichen und eine Anfrage
für eine
INTRA-Bild-Aktualisierung wird an die übertragende Vorrichtung gesendet.
Als Antwort kodiert die übertragende
Vorrichtung einen Rahmen im INTRA-Modus, und wobei das gegenwärtige Bild
auf der Anzeige fixiert wird bis diese neuen INTRA-kodierten Daten
erhalten und dekodiert werden.
-
Die 4 zeigt
ein Beispiel eines Video-Codec 10 gemäß der Erfindung. Der Video-Codec
umfasst einen Kodierteil 100 und einen Dekodierteil 200.
-
Wenn
man das Endgerät 1 als übertragende kodierte
Videodaten an das Endgerät 2 betrachtet, wird
der Betrieb des Video-Codec 10 jetzt mit Bezug auf seine
Kodierungsrolle beschrieben. Der Kodierteil 100 umfasst
eine Eingabe 101 zum Empfangen eines Videosignals von einer
Kamera oder Videoquelle (nicht dargestellt) des Endgeräts 1.
Ein Schalter 102 schaltet den Kodierer zwischen dem INTRA-Modus
des Kodierens und dem INTER-Modus.
-
Im
INTRA-Modus wird das Videosignal von dem Eingang 101 direkt
in einen DCT-Wandler 103 eingegeben, der die Pixeldaten
in DCT-Koeffizienten transformiert. Die DCT-Koeffizienten werden dann zu einem Quantisierer 104 weitergegeben,
der die Koeffizienten quantisiert. Sowohl der Schalter 102 als auch
der Quantisierer 104 werden durch einen kodierenden Steuerungsmanager 105 des
Video-Codecs gesteuert, der auch eine Feedback-Steuerung von dem empfangenen Endgerät 2 mittels
des H.245-Steuerungsmanagers 40 empfängt. Die Datenausgabe von dem
Quantisierer 104 wird durch einen inversen Quantisierer 108 und
einen inversen DCT-Wandler 109 ausgeführt. Die resultierenden Daten
werden zu den Inhalten eines Bildspeichers 107 durch einen
Addierer 110 hinzugefügt.
Im INTRA-Modus wird der Schalter 115 geöffnet, sodass die Inhalte des
Bildspeichers 107 durch die Ausgabe des inversen DCT-Wandlers 109 überschrieben
werden.
-
Im
INTER-Modus wird der Schalter 102 betrieben, um von einem
Subtrahierer 106 den Unterschied zwischen dem Signal von
der Eingabe 101 und einem vorhergehenden Bild, welches
in dem Bildspeicher 107 gespeichert ist, zu akzeptieren.
Die Differenz-Datenausgabe von dem Subtrahierer 106 stellt
den Vorhersagefehler zwischen dem gegenwärtigen Bild und dem vorhergehend
in dem Bildspeicher 107 gespeicherten Bild dar. Der Vorhersagefehler wird
DCT-transformiert und quantisiert. Die Daten in dem Bildspeicher 107 werden
dann durch Verlaufen der Datenausgabe durch den Quantisierer 104 über den
Quantisierer 108 und den inversen DCT-Wandler 109 und
Hinzufügen
der ergebenden Daten an die Inhalte des Bildspeichers 107 durch
einen Addierer 110 aktualisiert, wobei der Schalter 115 geschlossen ist. Ein
Bewegungsschätzer 111 kann
Bewegungskompensationsdaten von den Daten in dem Bildspeicher 107 in
einer herkömmlichen
Weise erzeugen.
-
Der
Videokodierer 100 erzeugt Header-Information (z.B. eine
zeitliche Referenz-Flagge TR 112a, um die Zahl des Rahmens
anzugeben, der kodiert wird, eine INTRA/INTER-Flagge 112b,
um den ausgeführten
Kodierungsmodus anzuzeigen (I oder P/B), einen Quantisierungs-Index 112c (d.h.
die Details des verwendeten Quantisierers), die quantisierten DCT-Koeffizienten 112d und
die Bewegungsvektoren 112e für das zu kodierende Bild. Diese
werden kodiert und zusammen durch den variablen Längenkodierer
(VLC) 113 gemultiplext. Die Ausgabe des Kodierers wird
dann mit anderen Signale durch den Multiplexer 50 gemultiplext.
-
In
einer ersten Ausführungsform
der Erfindung ist der Kodierer angeordnet, um Wiederholungen des
Bild-Headers zu jedem INTRA-Rahmen zu senden. Ein Datenspeicher 114 wird
deshalb bereitgestellt, um zeitlich die zu wiederholenden Daten
zu speichern. In der ersten Ausführungsform,
für jeden INTRA-Rahmen,
werden der Bild-Header 80 und das erste Datensegment 82 zur Übertragung
an einen empfangenden Kodierer wiederholt. Somit gibt der Kodierer
Daten in der in 5 dargestellten Form aus.
-
Wie
in 5 dargestellt, beginnt das kodierte Signal mit
den Daten für
das erste Bild 510 des Videosignals. Dieser Rahmen ist
INTRA-kodiert. Die Daten umfassen den Bild-Header 80, die
Daten für das
erste Segment 82 und Header 84 und Daten 86 für aufeinanderfolgende
Segmente des ersten Bildes. Der Bild-Header 80 und die
Daten 82 für
das erste Segment des ersten Bildes 510 werden dann als
Daten 512 wiederholt, wobei der wiederholte Bild-Header
die gleiche zeitliche Referenz TR wie der Originalrahmen aufweist.
Diese wiederholten Daten werden von Daten für aufeinanderfolgende INTER-kodierte
Rahmen 520, 522, 524 gefolgt. Wenn der
nächste
INTRA-Rahmen kodiert ist, werden die Daten 510' für den Rahmen
durch eine Wiederholung des Bild-Headers 80 und ersten
Segmentdaten 82 für den
INTRA-Rahmen 510' gefolgt.
-
Diese
Anordnung führt
zu einem Zusatz von ungefähr
227 Bytes pro INTRA-Rahmen für eine
28,8 kB/s-Übertragung
und ein QCIF-Bild.
-
Der
empfangende Dekoder wird deshalb eine Vervielfältigung der Headerinformation
empfangen. In diesem Szenario ist der Dekoder angeordnet, um, wie
in Annex N von H.263 beschrieben, mit Bezug auf den Referenz-Bild-Auswahl
(Reference Picture Selection, RPS)-Modus zu arbeiten. Gemäß H.263
Annex N, falls ein Dekoder zwei oder mehrere Bild-Header empfängt, die
die gleiche zeitliche Referenz (Temporal Reference, TR) aufweisen,
dann werden der zweite und nachfolgende Bild-Header (und deren verwandte
Daten) durch den Dekoder ignoriert. Falls somit ein empfangender
Dekoder verwaltet, um das erste Auftreten des Bild-Headers korrekt zu
dekodieren (und somit den TR dieses Headers zu lesen), wird der
Dekoder die Wiederholung des Bild-Headers ignorieren. Somit wird
ein Kodierer gemäß der ersten
Ausführungsform
der Erfindung mit einem herkömmlichen
Dekoder betreibbar sein, obwohl eine derartige Anordnung nicht die
Vorteile der Erfindung ergeben wird. Kompatibilität wird jedoch bereitgestellt.
-
In
der ersten vorhergehend beschriebenen Ausführungsform, beziehen sich die
wiederholten Daten auf einen unvollständigen Teil eines Rahmens und
insbesondere auf einen Bild-Header und die Daten für das erste
Segment des Bildes. Ein Dekoder gemäß der Erfindung erfasst deshalb
die Anwesenheit wiederholter Daten durch Erfassen, dass Daten für einen
unvollständigen
Rahmen empfangen worden sind und verwendet gespeicherte Daten, um
den Rahmen zu vervollständigen.
-
In
einer zweiten Ausführungsform
eines Kodierers gemäß der Erfindung,
werden redundante Videorahmen zu dem kodierten Bitstrom hinzugefügt. Ein
derartiger redundanter Rahmen wird nicht verwendet, um irgendeine
zusätzliche
Information an die übertragene
Videosequenz zu bringen. Stattdessen wird der redundante Rahmen
verwendet, um den Bild-Header
eines vorhergehenden Bildes zu verwenden. Die redundanten Rahmen
werden zu dem Video-Bitstrom durch einen Kodierer gemäß der Erfindung
hinzugefügt.
Das Vorhandensein eines redundanten Rahmens wird explizit einem
Dekoder signalisiert oder ein Dekoder kann implizite Merkmale der
redundanten Rahmen verwenden, um das Vorhandensein eines derartigen
redundanten Rahmens zu erfassen.
-
Die 6 zeigt
die rahmende Struktur einer Signalausgabe durch einen Kodierer gemäß der zweiten
Ausführungsform
der Erfindung. Der Kodierer ist angeordnet, um einen redundanten
Rahmen 612 nach jedem INTRA-Rahmen 610 zu erzeugen und
zu senden. Gemäß H.263
können
fortlaufende Bilder nicht das gleiche unkomprimierte Bild darstellen,
außer
wenn der Referenzbild-Auswahl (Reference Picture Selection, RPS)-Modus
verwendet wird (Annex N). Die zweite Ausführungsform der Erfindung beruht
nicht auf RPS, welches gewählt
wird. In diesem Fall ist der Bild-Header nur in dem Datenspeicher 114 gespeichert.
Unter der Steuerung der Steuerung 105 wird der ursprüngliche
Bild-Header 80 abgeändert,
so dass der neue Bild-Header 80' der gleiche ist, wie jener für den INTRA-Rahmen 610,
außer dass
der Bildkodierungstyp in dem PTYPE-Feld von I nach P geändert wird
und das TR-Feld erhöht
wird. Die Steuerung 105 setzt auch ein Feld 88,
welches anzeigt, dass es keine Änderung
zu den Daten für den
gesamten Rahmen gegeben hat. In H.263 beinhaltet dieses Feld eine
kodierte Makroblock-Anzeige (Coded Macroblock Indication, COD)-Flagge,
welche in Bezug von einem Makroblock gesetzt wird, der INTER-kodiert
ist, und, wenn gesetzt, anzeigt, dass keine weitere Information
für den
Makroblock (d.h. Keine-Änderung)
gesendet wird. Aufeinanderfolgende INTER-Rahmen 620, 622, 624,
die in der gleiche Weise kodiert sind, wie die Rahmen 520, 522, 524, die
in 5 dargestellt sind, werden bis zum nächsten INTRA-Rahmen 610' übertragen.
-
Gemäß einer
weiteren Ausführungsform
der Erfindung, sind redundante Rahmen nach INTER-Rahmen genauso
wie INTRA-Rahmen beinhaltet.
-
Der
redundante Rahmen wiederholter Daten 612 enthält einen
Bild-Header 80' von
ungefähr
50 Bits, 99 COD-Bits (eines für
jeden der 99 Makroblöcke
innerhalb eines QCIF-Bildes) und einige füllende Bits, um eine ganze
Zahl von Bits für
einen vollständigen
Rahmen herzustellen. Zusammen besteht ein derartiger redundanter
Rahmen typischerweise aus 19 Bytes und addiert somit rund 8% an
Zusatz zu dem Datenstrom für
eine 28,8 kB/s-H.263-Verbindung
und ein QCIF-Bild. Dieser Zusatzwert wird nur angewandt, falls jeder
INTRA-Rahmen und
jeder INTER-Rahmen mit einem redundanten Rahmen verbunden ist. Klarerweise
kann der Zusatz verringert werden, wenn ein redundanter Rahmen nur
nach jedem INTRA-Rahmen kodiert wird.
-
Wie
mit Bezug auf die 5 und 6 beschrieben
worden ist, wird der wiederholte Bild-Header für einen Rahmen aufeinanderfolgt
auf die ursprünglichen
Daten für
den Rahmen von einem Bild und vor Daten für den nächsten Rahmen bereitgestellt.
-
Es
wird jetzt eine dritte Ausführungsform
des Kodierers beschrieben. Diese Ausführungsform beruht auf einer
neuen Hinzufügung
zu dem zusätzlichen
Verbesserungs-Informationsfeld
(Supplemental Enhancement Information field) (Annex L) von H.263. Die
Hinzufügung
erlaubt eine Wiederholung gewisser Bildschicht-Felder des vorhergehenden
Bildes in den zusätzlichen
Verbesserungsinformationsfeldern des gegenwärtigen Bildes. (Bildschicht-Felder
werden nicht wiederholt innerhalb des gleichen Bildes, da sie Gefahr
laufen, zur gleichen Zeit wie die Bildschichtdaten selbst verfälscht zu
werden.)
-
Die
Einbeziehung einer zusätzlichen
Verbesserungsinformation in einen Bild-Header wird gemäß H.263
durch eine Flagge PEI angezeigt. Falls PEI gesetzt wird, zeigt dies
an, dass zusätzliche
Information in einem 8-Bit-Feld PSUPP folgt. Eine weitere PEI zeigt
an, dass ein weiteres PSUPP-Feld mit weiterer Information folgt
und so weiter.
-
Dekoder,
die nicht die erweiterten, in Annex L beschriebenen, Fähigkeiten
unterstützen,
sind ausgeführt,
um PSUPP zu streichen, falls PEI 1 gesetzt wird. Dies ermöglicht eine
Rückwärts-Kompatibilität (backward
compatibility) für
die erweiterten Fähigkeiten
von Annex L, so dass ein Bitstrom, der die erweiterten Fähigkeiten
verwendet, auch ohne Abänderung
durch Dekoder verwendet werden kann, die jene Fähigkeiten nicht unterstützen.
-
Annex
L von H.263 beschreibt das Format der zusätzlichen Verbesserungsinformation,
die in dem PSUPP-Feld der Bildschicht dieser Empfehlung gesendet
wird. Das Vorhandensein dieser zusätzlichen Verbesserungsinformation
wird in PEI angezeigt und ein zusätzliches PEI-Bit wird zwischen
jedes Oktett von PSUPP-Daten eingefügt.
-
Die
PSUPP-Daten bestehen aus einer Vier-Bit-Funktionstyp-Anzeige (four-bit
function type indication, FTYPE), gefolgt von einer Vier-Bit-Parameter-Datengrößen-Spezifikation
(four-bit parameter data
size specification, DSIZE), gefolgt von DSIZE-Oktetten von Funktionsparameter-Daten,
optional von einer weiteren Funktionstyp-Anzeige gefolgt, und so
weiter. Ein Dekoder, der eine Funktionstyp-Anzeige empfängt, die
er nicht unterstützt,
kann die Funktionsparameter-Daten für diese Funktion streichen
und dann für
eine aufeinanderfolgende Funktionstyp-Anzeige überprüfen, welche unterstützt werden
kann. Die FTYPE-Werte, die definiert worden sind, sind in Tabelle
L.1 von H.263 gezeigt. Diese Ausführungsform der Erfindung würde einige Änderungen
bei Annex L von H.263 benötigen.
Diese Änderungen
sind:
- 1. die Definition einer neuen Funktionstyp-Anzeige
(FTYPE) in Tabelle L.1 von H.263, z.B. Eintrag 13 – Bildschicht-Datenwiederholung;
und
- 2. die Einbeziehung in Annex L einer Erklärung des Effektes dieses FTYPE-Kodes,
z.B.:
Die Bildschicht-Datenwiederholungsfunktion soll verwendet
werden, um bestimmte Felder der kodierten Darstellung der Bildschichtdaten
des vorhergehenden Bildes zu wiederholen. Die wiederholten Daten
sollen in natürlicher
syntaktischer Ordnung erscheinen, beginnen von dem zeitlichen Referenz
(TR)-Feld. Mit anderen Worten, falls die PEI-Bits von den wiederholten
Bildschichtdaten entfernt worden sind, würde der Bitstrom der Wiederholung
genau der gleiche wie der ursprüngliche
Bitstrom in der entsprechenden Position sein. Das DSIZE-Feld der
SEI zeigt die Zahl wiederholter Bytes an. Eine DSIZE gleich null
ist für
eine zukünftige
Verwendung reserviert. Die Bild-Header-Information folgt dann dem FTYPE/DSIZE-Oktett.
-
Dieses
vorgeschlagene Verfahren bringt einen beträchtlichen Verzug verglichen
mit den vorhergehenden Ausführungsformen,
wenn ein verfälschter Bildheader
wiederhergestellt wird, da die Wiederherstellung nicht stattfinden
kann, bis der Beginn des nächsten
Bildes erhalten wird. Da jedoch der Betrieb eines Dekoders typischerweise
schneller als eine Echtzeit-Videodatenübertragung zumindest bei niedrigen
Rahmenraten ist, kann der Dekoder wahrscheinlich die Zeit wiederherstellen,
die zum Warten des nächsten
ankommenden Bildes benötigt
worden ist.
-
Eine
mögliche
Art, um einen Kodierer gemäß der dritten
Ausführungsform
zu implementieren, ist in dem Flussdiagramm in 7 dargestellt.
Mit Bezug auf diese Ausführungsform
bezieht sich der Bild-Header auf Bildschichtdaten, die der zusätzlichen
Verbesserungsinformation in der Bitstrom-Syntax vorausgehen.
-
Ein
unkomprimiertes Signal wird in den Kodierer (700) bei einer
gewissen Rahmenrate eingegeben. Ein Bitraten-Steuerungsalgorithmus
entscheidet, ob ein bestimmter Rahmen (702) kodiert oder ausgelassen
werden soll. Falls ein Rahmen kodiert wird, wird der Bild-Header zuerst kodiert
(704). Der Bild-Header wird auch in dem Datenspeicher 114 gespeichert
(708). Nicht mehr als drei Bild-Header werden zu irgendeinem
Moment benötigt,
nämlich
der Header von dem gegenwärtigen
Bild und die Header von den zwei vorhergehend kodierten Bildern.
Der Kodierer bestimmt (706), ob der GFID in diesem Bild (verglichen
mit dem vorhergehenden Bild) geändert wird,
basierend auf den Bild-Headern des gegenwärtigen und vorhergehenden Bildes.
Falls der GFID des vorhergehenden Bildes auch von dem GFID des Bildes
davor unterschieden hat (710), muss man den Bild-Header
des vorhergehenden Bildes als zusätzliche Verbesserungsinformation
wiederholen. Andererseits, kann der Empfänger den Bild-Header des vorhergehenden
Bildes (712) wiederherstellen, wobei der GFID von entweder
dem gegenwärtigen
Bild oder dem Bild, welches dem vorhergehenden Bild vorhergeht,
verwendet wird. Schließlich
wird der Rest des Bildes kodiert (714). Anschließend setzt
die Kodierungsschleife vom Anfang (700) fort.
-
Der
wiederholte Bild-Header kann ohne den PSC wiederholt werden. Andererseits
könnte
der Header durch einen systematischen Fehler-Korrekturkode manipuliert
werden. Ein systematischer Fehlerkorrektur-Kode ist derart, dass
k erste Symbole die aktuelle Nachricht sind und der Rest der Symbole
für die
Fehlerüberprüfung verwendet
werden. In diesem bestimmten Fall sind k erste Bits der Bild-Header
und der Rest der Bits werden als zusätzliche Verbesserungsinformation
in dem nächsten
Rahmen übertragen.
Infolgedessen, verursacht die Wahl des Fehlerkorrektur-Kodes wie
viele Bitinversions-Fehler erfasst und korrigiert werden können und
wie viele zusätzliche
Bits benötigt
werden, um diesen Fehlerschutz bereitzustellen.
-
In
den Ausführungsformen
des vorhergehend beschriebenen Kodierers 100, ist der Kodierer vorprogrammiert
worden, um Bild-Header-Wiederholungen zu senden. Jedoch kann der
Kodierer 100 zusätzlich
angeordnet sein, um die Bilddaten als Reaktion auf einen Befehl
von einem Dekoder zu wiederholen oder zu aktualisieren.
-
Zusätzlich oder
alternativ kann der Kodierer angeordnet sein, um einen Wiederholungs-Bild-Header jedes Mal
zu senden, wenn sich der Zustand des GFID-Parameters ändert.
-
Wenn
man das Endgerät 1 als
empfangende kodierte Videodaten von Endgerät 2 betrachtet, wird der
Betrieb des Video-Codec 10 gemäß der Erfindung jetzt mit Bezug
auf seine Dekodierungsrolle beschrieben. Das Endgerät 1 empfängt ein
Multimedia-Signal von dem übertragenden
Endgerät 2.
Der Demultiplexer 50 demultiplext das Multimedia-Signal und
gibt die demultiplexten Signale an die richtigen Teile des Empfängers, z.B.
die Videodaten an den Video-Codec 10, die Audio-Daten an
den Audio-Codec 20 und die H.245-Steuerungsdaten an die H.245-Steuerung 40 weiter.
Der Dekoder 200 des Video-Codecs dekodiert die kodierten
Videodaten durch inverse Quantisierung, inverse DCT-Tranformation und
Bewegungskompensation der Daten. Die dekodierte Videodaten werden
dann zur Vervielfältigung
auf einer Anzeige 70 des empfangenden Endgeräts 1 ausgegeben.
-
Wie
in 4 beschrieben, umfasst der Dekodierteil 200 des
Video-Codec 10 einen variablen Längendekoder 218, einen
inversen Quantisierer, einen inversen DCT-Wandler 221,
einen Bewegungskompensator 222, einen Bildspeicher 223,
eine Steuerung 224, einen temporären Bilddatenspeicher 228 und
Schalter 230 und 232. Die Steuerung 224 empfängt Video-Codec-Steuerungssignale,
die von dem kodierten Multimedia-Strom durch den Demultiplexer 50 demultiplext
sind. In der Praxis können
die Steuerung 105 des Kodierers und die Steuerung 224 des Dekoders
der gleiche Prozessor sein.
-
Die
Steuerung 224 des Dekoders überprüft die Integrität der empfangenen
Daten. Ein Fehler in dem Bild-Header kann bedeuten, dass das Bild
nicht dekodiert werden kann und vollständig verloren ist oder so verfälscht ist,
dass es effektiv verloren ist.
-
Eine
erste Ausführungsform
des Dekoders wird jetzt beschrieben. Im normalen Betrieb empfängt der
Dekoder 200 kodierte Daten. Der variable Längendekoder
(Variable Length Decoder, VLD) 218 dekodiert die empfangenen
Daten in einem Ansatz, um die ursprüngliche Rahmenstruktur wiederherzustellen,
die ein Format aufweist, wie es in 3 dargestellt
ist. Das heißt,
der VLD 218 dekomprimiert die kodierten Daten und die Steuerung 224 erfasst
den Bild-Startkode (Picture Beginn Code, PSC) innerhalb der empfangenen
Daten. Die Steuerung 224 verwendet dann die Information
innerhalb des Bild-Headers, um den inversen Quantisierer 220 und
den Schalter 230 zu steuern. Wenn die PTYPE-Information einen INTRA-Rahmen
anzeigt, wird der Schalter 230 geöffnet und die Ausgabe der inversen
DCT-Vorrichtung 221 wird in den Bildspeicher 223 eingegeben.
Wenn die PTYPE-Information einen INTER-Rahmen anzeigt, wird der
Schalter 230 geschlossen und die Inhalte des Bildspeichers 223 werden
zu der Ausgabe der inversen DCT-Vorrichtung 221 hinzugefügt (der dekodierte
Vorhersagefehler) durch Addierer 234.
-
Falls
der Dekoder nicht den ersten Bild-Header dekodieren kann, der andere
Segmente des Bildes (z.B. das GBSC des zweiten Segments 84)
erfassen kann, dann speichert der Dekoder diese Daten in dem temporären Bilddatenspeicher 228.
Wenn der Dekoder die wiederholten Headerdaten (und die ersten Segmentdaten 82)
empfängt,
dekodiert und identifiziert, dann verwendet der Dekoder die Daten in
dem temporären
Bildspeicher um den Rest des Bildes wiederherzustellen.
-
Falls
somit die Steuerung 224 kein PSC beim Beginn eines Rahmens
erfasst (oder andererseits bestimmt, dass der Bild-Header verfälscht ist)
aber einen Segment-Header erfasst (z.B. durch Erfassen eines GOB-Startkodes
GBSC), verändert
die Steuerung 224 den Status des Schalters 232,
so dass die Datenausgabe von VLD 218 in den temporären Bilddatenspeicher 228 eingegeben
wird. Diese Daten werden von dem erfassten GBSC-Kode gestartet,
da der VLD nicht zu dem Beginn des Bildes synchronisieren kann.
-
Bezüglich 5 nehmen
wir an, dass der Dekoder den GBSC in dem Header 84 für das zweite Segment
des Rahmens 510 erfasst hat. Die gespeicherten Daten in
dem temporären
Bilddatenspeicher 228 umfassen deshalb Header 84 nach
vorne (onwards), d.h. der Header für das zweite Segment, Daten
für das
zweite Segment, der Header für
das dritte Segment, Daten für
das dritte Segment etc. von Rahmen 510.
-
Falls
der verlorene/verfälschte
Bild-Header zu einem INTRA-Rahmen gehörte, werden die nächsten durch
den Dekoder empfangenen Daten der wiederholte Bild-Header und die
ersten Segmentdaten 512 sein. Der Dekoder empfängt die
Daten 512, die sich auf den wiederholten Bild-Header 80 und
die wiederholten ersten Segmentdaten 82 beziehen. Die Steuerung
erfasst den PSC in den wiederholten Daten 512, liest das
PTYPE-Feld in dem Header und weist dann den Quantisierer 220 als
den zu verwendenden Quantisierer an und öffnet Schalter 230 in
Reaktion auf das PTYPE-Feld in dem Header, der einen INTRA-Rahmen
anzeigt. Der Rest der wiederholten Information (d.h. das wiederholte
erste Segment der Daten) wird durch den inversen Quantisierer 220 und
die IDCT-Transformation 221 dekodiert und das dekodierte
wiederholte erste Bildsegment wird von IDCT 222 an den
Bildspeicher 223 ausgegeben.
-
Der
Dekoder erkennt, dass die Daten nicht für ein gesamtes Bild sind, d.h.
es nur ein Bild-Header 80 ist,
gefolgt von Bilddaten 82 für ein erstes Segment, gefolgt
durch einen Bild-Header
für einen
aufeinanderfolgenden Rahmen, dadurch, dass beispielsweise der Dekoder
die wiederholten Daten 512 dekodiert und dann erfasst,
dass der aufeinanderfolgende Startkode für einen unterschiedlichen Rahmen
ist, d.h. Rahmen 520. Als Reaktion auf die Erfassung durch
den Dekoder, verändert
die Steuerung 224 den Status des Schalters 232,
sodass die Daten von Rahmen 510, die in dem temporären Bildspeicher 228 gespeichert
werden, an den inversen Quantisierer 220 und die IDCT-Transformation 221 ausgegeben
werden. Die dekodierten Daten werden dann an den Bildspeicher 223 ausgegeben,
um die Inhalte des Bildspeichers mit dem Rest der dekodierten Daten
für das
gegenwärtige
Bild zu aktualisieren.
-
Wie
vorhergehend erwähnt,
in der ersten Ausführungsform
eines Dekoders gemäß der Erfindung,
erfasst der Dekoder den Empfang eines wiederholten Bild-Headers
durch Erfassen des Austretens eines Bild-Headers, welcher nicht
durch Daten für
ein gesamtes Bild gefolgt wird (z. B. ein Bild, welches durch Daten
für ein
Segment des Bildes aber nicht mehr gefolgt wird). Andere Arten könnten verwendet
werden, um die Wiederholung der Header-Information zu erfassen.
-
Wie
früher
erklärt,
falls der Dekoder den Rahmen korrekt dekodieren kann, streicht der
Dekoder einfach die Wiederholung des Headers 512, wenn
das Signal formatiert wird, wie in 5 dargestellt
ist.
-
Die 8 zeigt
ein Flussdiagramm, welches ein Verfahren zum Betreiben eines Dekoders
gemäß der ersten
Ausführungsform
der Erfindung darstellt. Zuerst (400) beginnt der Dekoder
(200) ein empfangenes Signal durch Prüfen, ob ein Bild-Startkode (PSC)
in dem nächsten
Kode der einlangenden Daten ist, zu dekodieren. Falls der Bild-Header
als verfälscht
(402) erachtet wird, speichert die Steuerung (404)
die Bilddaten, die mit den verbleibenden Segmenten des Bildes in
dem temporären
Bilddatenspeicher 228 verbunden sind.
-
Unterschiedliche
Wege können
verwendet werden, um zu bestimmen, ob das Bild verfälscht ist. Einige
beispielhafte Verfahren sind, falls der Dekoder nicht das PSC dekodieren
kann, oder falls ein Fehlererfassungsverfahren (wie eine H.223 CRC
Prüfsumme
(checksum)) anzeigt, dass es einen Fehler gibt, oder falls ein unwahrscheinlicher
Parameter in dem Bild-Header
gefunden wird (z.B. eine INTER-Flagge wird innerhalb eines Segment-Headers
gesetzt, wenn der Kodierungstyp des Bildes INTRA ist).
-
Der
Dekoder 200 sucht dann nach dem nächsten fehlerfreien Header.
Falls dieser Header für einen
INTRA-Rahmen ist, versucht der Dekoder den Rahmen zu dekodieren.
Falls es sich herausstellt, dass einige der Bildsegmente fehlen,
werden die entsprechenden Segmente des vorhergehenden Rahmens von
dem temporären
Bildspeicher 228 gelesen und dekodiert. Falls der verlorene/verfälschte Bild-Header
zu einem INTRA-Rahmen gehörte,
werden die nächsten
durch den Dekoder empfangenen Daten deshalb der wiederholte Bild-Header
und die ersten Segmentdaten 512 sein. Der Dekoder dekodiert
(408) den Bild-Header und die Daten für das erste Segment des Bildes.
Der Dekoder erfasst (406), dass die Daten nicht für einen
gesamten Rahmen sind und als Reaktion dekodiert dann der Dekoder
(408) die Daten, die in dem temporären Bilddatenspeicher 228 gespeichert
sind auf der Basis dieses wiederholten Bild-Headers.
-
Normale
Fehlerverschleierungstechniken können
dann verwendet werden, um Fehler innerhalb des Bildes zu verschleiern,
die sich aus einer Übertragung
oder Dekodierungsfehlern ergeben haben. Wie es üblich ist, kann der Dekoder
auch eine Aktualisierungsanfrage an den Dekoder senden, ob der dekodierte
Rahmen als zu fehlerhaft betrachtet wird.
-
Ein
herkömmlicher
Dekoder würde
beim Empfangen eines unvollständigen
Rahmens von Daten schließen,
dass die fehlenden Daten bei einer Übertragung verloren gegangen
sind. Somit würde der
Dekoder eine INTRA-Bildanfrage in der gewohnten Weise anfragen.
Somit kann ein Kodierer gemäß der Erfindung
mit einem Dekoder arbeiten, der nicht in Übereinstimmung mit der Erfindung
ist.
-
Eine
zweite Ausführungsform
eines Dekoders gemäß der Erfindung
wird jetzt beschrieben. Mit Bezug auf ein formatiertes Signal, welches
in 6 dargestellt ist, falls der Dekoder nicht den
ursprünglichen
Header von Rahmen 610 dekodieren kann, speichert der Dekoder
die verbleibenden Bilddaten (84, 86) für den Rahmen
in dem temporären
Bildspeicher 228. Das erste Segment des Rahmens wird nicht
gespeichert, da es durch den Dekoder nicht identifiziert werden
kann. Wenn der redundante Rahmen 612 empfangen wird, liest
der Dekoder die Daten als wären
sie INTER-kodiert aber mit keiner Veränderung. Ein Kodierer gemäß dem Stand
der Technik würde
gewöhnlich
nicht diese Information liefern (sie ist ungefähr zu 100% redundant). Ein
Dekoder gemäß der Erfindung
erfasst einen Empfang eines wiederholten Bild-Headers durch Erfassen
des Auftretens eines INTER-Bild-Headers gefolgt durch ein Feld,
welches keine Änderung
anzeigt. Beim Empfang derartiger Daten, verwendet der Dekoder den INTER-Bild-Header,
um den Dekoder zu konfigurieren und dekodiert dann die Information
von dem vorhergehenden Rahmen, der in dem Speicher 228 gespeichert
ist.
-
In
dieser Ausführungsform
werden die Daten für
das erste Segment des Bildes nicht wiederholt und können daher
als verloren betrachtet werden. Der Dekoder bewirkt deshalb bei
Empfang der wiederholten Headerdaten, dass der Schalter 232 den Status
verändert,
so dass die Inhalte der Bilddaten von dem zweiten Segment nach vorne
aktualisiert werden. Andererseits kann der Dekoder auch schätzen, wo
die ersten Segmentbilddaten in den verfälschten Daten beginnen und
die Daten von diesem Punkt dekodiert werden sollten. Lassen Sie
uns beispielsweise annehmen, dass es einen Ein-Bit-Inversionsfehler
in dem Bild-Header
des ursprünglichen Bildes
gibt und deshalb der Bild-Header nicht dekodiert werden kann. Jedoch
ist der PSC noch immer gültig
und der Beginn des Rahmens kann deshalb verlässlich erfasst werden. Das
gesamte Bild 610 wird deshalb in dem temporären Bildspeicher 228 gespeichert
und dann, wenn der wiederholte Header empfangen wird, beginnt der
Dekoder 200 die gespeicherten Daten bei der Position zu
dekodieren, wo von dem Bild-Header angenommen wird, dass er endet
und wo von den Daten für
das erste Segment angenommen wird, dass sie beginnen.
-
Somit überprüft der Dekoder
die einlangenden Daten. Falls der Bildheader verloren geht oder verfälscht wird,
werden die Daten für
den Rest des Rahmens in dem temporären Bilddatenspeicher 228 gespeichert.
Aufeinanderfolgende Daten werden dann dekodiert und falls sich die
Daten auf einen INTER-Rahmen beziehen und anzeigen, dass es keine Änderung
in dem Bild gibt, wird der Bild-Header dekodiert und die Daten von
dem temporären
Bilddatenspeicher 228 werden dekodiert, wobei die Information
in dem Bild-Header
des redundanten Rahmens verwendet wird.
-
Wenn
das Signal formatiert wird, wie in 6 dargestellt
ist, falls der Dekoder verwaltet, um das Bild des Bild-Headers von
Rahmen 610 korrekt zu dekodieren, wird der Dekoder fortsetzen
und dekodiert die Wiederholung des Headers 612. Wie mit Bezug
auf 6 beschrieben, umfasst die wiederholte Information 612 den
Bild-Header 82 (beinhaltend ein erhöhtes TR) und ein Feld 88,
welches anzeigt, dass sich keinen Daten mit Bezug auf den vorhergehend
kodierten Rahmen geändert
haben. Da es keine gespeicherten Daten in dem temporären Bilddatenspeicher 228 gibt,
wird der Dekoder den redundanten Rahmen von Daten 612 streichen
und den nachfolgenden Rahmen 620 dekodieren.
-
Beim
Empfang eines kodierten Signals, gemäß der dritten Ausführungsform
der Erfindung, verwendet ein Dekoder gemäß der Erfindung die Daten, die
dem FTYPE/DSIZE-Oktett der zusätzlichen
Verbesserungsinformation folgen in dem nachfolgenden Rahmen, um
die in dem temporären
Bildspeicher 228 gespeicherten Daten zu dekodieren.
-
Die
dritte Ausführungsform
der Dekoders wird jetzt mit Bezug auf 9 beschrieben.
Diese Ausführungsform
verwendet das SEI-Verfahren, wie es früher mit Bezug auf den Dekoder
und 7 beschrieben worden ist.
-
Der
Dekoder arbeitet wie folgt. Zuerst (900) empfängt der
Dekoder den Bild-Header des nächsten übertragenen
Bildes. Falls der Header frei von Fehlern (901) ist, kann
der Dekoder den Header ohne Probleme (902) dekodieren.
Anschließend
kann er mit dem Dekodieren des Restes des Bildes (904)
fortsetzen. Falls einige Fehler in dem Bild-Header (901) erfasst
worden sind, sucht der Dekoder (906) nach dem ersten fehlerfreien
Bildsegment (GOB oder Scheibe)-Header des Bildes. Nennen wird diese
Bitstromposition die erste erneute Synchronisationsposition. Falls
der GFID des Headers der gleiche wie in dem vorhergehenden Bild
(908) ist, kann der Dekoder die kritischen Teile des Bild-Headers
(910) wiederherstellen und ein Dekodieren fortsetzen (904), beginnend
von dem bestimmten Bildsegment. Falls der GFID sich von demjenigen
des vorhergehenden Bildes (908) unterscheidet, sucht der
Dekoder (912) nach dem nächsten Bildstartkode. Falls
die Bildschichtdaten dieses Bildes eine SEI-Bild-Header-Wiederholung
(914) enthalten, kann der Dekoder den Bild-Header des gegenwärtigen Bildes
(916) wiederherstellen. Er muss auch die Dekodierungsposition
in dem Bitstrom zurück
zu der ersten erneuten Synchronisationsposition (918) setzen.
Falls die Bildschichtdaten keine SEI-Bild-Header-Wiederholung enthalten, sucht der Dekoder
nach dem nächsten Bildsegmentstartkode
und überprüft (920),
falls der GFID in dem Header der gleiche wie der GFID des Bildes
ist, der dekodiert wird. Falls die GFIDs gleich sind, kann der Dekoder
den Bild-Header (910) wiederherstellen und ein Dekodieren
von der ersten erneuten Synchronisationsposition fortsetzen. Falls
die GFID von einander unterschiedlich sind, weist der Dekoder keine
Mittel auf, um den verfälschten Bild-Header
wiederherzustellen. In diesem Fall (922) kann er beispielsweise
für eine
INTRA-Aktualisierung anfragen.
-
Der
temporäre
Bildspeicher kann kodierte Daten für eine Vielzahl von Rahmen
speichern. Da die meisten Rahmen in niedrigen Bitraten-Anwendungen
in einer INTER-Rahmen-Weise kodiert sind, stellen die meisten der
in dem temporären
Bilddatenspeicher gespeicherten Daten wahrscheinlich Vorhersagefehlerdaten
dar und sind somit relativ kompakt. Der temporäre Bildspeicher sollte deshalb
ausreichend sein, um Daten für
mindestens einen INTRA-Rahmen und einen INTER-Rahmen von Daten zu
speichern, wobei ein INTER-Rahmen
typischerweise mit ungefähr
250 Bytes für
ein QCIF-Bild bei 28,8 kB/s kodiert ist.
-
Falls
irgendwelche Daten für
nachfolgende Rahmen des Videos auch in dem temporären Bilddatenspeicher 228 gespeichert
sind, werden diese auch dekodiert und an den Bildspeicher 223 ausgegeben, um
die Inhalte des Bildspeichers 223 in Übereinstimmung mit den Inhalten
des entsprechenden Bildspeichers der übertragenden Vorrichtung zu
bringen.