-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf eine Video-Kompressionsübertragung
und im Besonderen auf eine Fehlerüberwachung für eine stabile Übertragung
von komprimierten Videosequenzen über fehleranfällige Kanäle.
-
Hintergrund
der Erfindung
-
Die Übertragung
von komprimierten Video-Bitströmen über fehleranfällige Kanäle ist ein schwieriges
Problem, weil das normale Kompressionsverfahren, z. B. die H.261- und MPEG1 Videokompressionsformate,
den übertragenen
Bitstrom für Bitfehler
empfindlicher machen als die Videosequenz vor der Kompression. Zum
Beispiel resultiert das normale Verwenden von Entropiecodierung
in einem Videokompressionsalgorithmus in variable Längen-Code(VLC)-Sequenzen,
in denen der Bitstrom eine Selbstsynchronisierung für die codierten
Wortgrenzen enthält.
Ein einzelner Bitfehler in einem codierten Bitstrom mit variabler
Länge verursacht
typischerweise den Verlust der Synchronisation der codierten Wortgrenze
und somit den Verlust von Information an den Decodierer.
-
Aktuelle
Videokompressionsformate, wie z. B. H.261 und MPEG1, stellen einen
sehr begrenzten Fehlerschutz zur Verfügung. Die typische Lösung für eine Neusynchronisation
verlorener VLCs besteht darin, einen Rahmen in Scheiben (MPEG1)
oder Gruppen von Blöcken
(GOB – H.261/H.263)
aufzubrechen. In beiden dieser Fälle
werden Neusynchronisationswörter,
die durch Autokorrelation detektiert werden, an den Anfang von Makroblocksequenzen variabler
Länge angeordnet,
die an einem beliebigen Punkt in dem Bitstrom auftreten können. Somit
werden sehr lange Neusynchronisationswörter benötigt, die von den VLC-Tabellen
nicht erzeugt werden können.
Vom Standpunkt einer Kompression aus sind diese Neusynchronisationswörter daher
ineffizient. Zusätzlich
haben sie sehr schlechte Autokorrelationseigenschaften und zeigen
daher eine schlechte Leistung unter fehleranfälligen Kanalbedingungen. Andere
Verfahren der Fehlerüberwachung
in diesen Formaten umfassen das Verwenden des (511, 492) BCH-Codes für H.261.
Dieser Pegel von Fehlerschutz reicht für die niedrigen Zufallsbitfehlerraten (BER),
die man auf normalen Telefonleitungen oder ISDN-Kanälen findet,
aus, kann aber keine ausreichende Fehlerüberwachung über RF-Kanalbedingungen zur Verfügung stellen,
die hohe Zufalls-BER-Bedingungen
und zusätzlich
Fehlerbursts von 20 ms oder länger
haben. Solche Bedingungen herrschen in Systemen, wie z. B. zellularen
Telefonnetzwerken, vor, wodurch der Bedarf an stabilen Videobitströmen für die Übertragung
von Videoinformationen in solchen Umgebungen geweckt wird.
-
Die
Erfindung wird durch Anspruch 1 definiert.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
eine schematische Darstellung der Bitstromsyntax, die für eine Fehlerüberwachung
gemäß der vorliegenden
Erfindung benötigt
wird.
-
2 ist
ein Flussdiagramm einer bevorzugten Ausführungsform von Schritten eines
Verfahrens gemäß der vorliegenden
Erfindung.
-
3 ist
ein Blockdiagramm einer bevorzugten Ausführungsform einer Vorrichtung
gemäß der vorliegenden
Erfindung.
-
Beschreibung einer bevorzugten
Ausführungsform
-
Die
vorliegende Erfindung stellt ein zuverlässiges Fehlerüberwachungsverfahren
für die Übertragung
von komprimierten Videobitströmen über einen fehleranfälligen Kanal
zur Verfügung.
Das Verfahren ist geeignet, eine Fehlerüberwachung für Videokompressionsschemata
zur Verfügung
zu stellen, die eine bewegungskompensierte Vorhersage, einen makroblockbasierten
Ansatz verwendet und die durch die folgenden Fähigkeiten gekennzeichnet ist:
- 1. Bereitstellen sowohl eines Zufalls- als
auch eines Burstfehlerschutzes.
- 2. Bereitstellen eines Rahmenverlustschutzes.
- 3. Begrenzen des Verlustes von VLC-Synchronisation, was erfordert,
dass die Fehlerausbreitung über
einen Kanalfehlerburst hinaus eingeschränkt wird.
- 4. Bereitstellen einer Videofehlerdetektion, um so zu ermöglichen,
dass Fehlerverbergungsverfahren angewendet werden können.
- 5. Erreichen der oben genannten Ziele auf sehr effiziente Weise,
um so den benötigten
Fehlerüberwachungsaufwand
zu verringern.
-
Dieses
Verfahren stellt ein synchrones (feste Länge) Format zum Übertragen
von Paketen von Videodaten zur Verfügung. Dies reduziert die Paketsynchronisationsanforderung
auf ein Rahmensynchronisationsproblem. Somit können Paketgrenzen und verknüpfte Steuerinformationen
relativ zu Rahmensynchronisationswörtern angeordnet werden, und
ein Paket benötigt
kein zusätzliches
Synchronisationsoverhead. In der vorliegenden Erfindung wird das
Verwenden eingebetteter Synchronisationswörter zum Bereitstellen einer
VLC-Synchronisation
vermieden. Dies ist der Fall, weil ziemlich lange Synchronisationswörter nötig wären, um
die Wahrscheinlichkeit einer falschen Detektion von Synchronisationswörtern zu
verringern. Solche Wörter
würden
einen Mindestabstand zu allen mittleren bis langen VLC-Codewörtern benötigen und
müssten
außerdem bestimmte
Autokorrelationskriterien erfüllen.
Die GOB- und Scheibensynchronisationswörter der H.261- und MPEG1-Formate
erfüllen
diese Kriterien nicht und sind zudem sehr ineffizient.
-
In 1,
Ziffer 100, wird eine schematische Darstellung einer fehlerstabilen
Bitstromsyntax gemäß der vorliegenden
Erfindung gezeigt. In (102) werden mehr als zwei N-Bitpakete von Videoinformationen
aus einem Rahmen des Videos gezeigt. Bild(Rahmen)-Headerinformationen,
die Informationen umfassen, die zum Decodieren des Rahmens und zusätzlich eines
Rahmensynchronisationswortes, oder Bildstartcodes, benötigt werden,
werden zweimal pro Rahmen, getrennt durch N Bits, übertragen,
wobei N eine vorbestimmte ganze Zahl ist, um einen Rahmenverlustschutz
zur Verfügung
zu stellen. Wenn ein erster Bildheader verloren geht, dann stellt
der zweite Header die kritischen Rahmeninformationen zur Verfügung. Die
zwei Bildheader werden durch eine Einzelbit-ID am Ende des Bildstartcodes abgegrenzt.
Die Anzahl Bits in einem Paket, N, wird entsprechend einem erwünschten
Kompromiss zwischen Fehlerüberwachungsaufwand
und Fehlerdetektionseigenschaften bestimmt. Zwei repräsentative Werte
für N bei
den Zielvideoübertragungsraten
von 24 Kilobits/sec und 48 Kilobits/sec sind jeweils N = 512 und
N = 768.
-
Am
Anfang eines jeden Paketes befindet sich die Paketsteuerinformation,
die aus vier Steuerwörtern
besteht: absolute Zählung
(AC), relative Adresse (AD), absoluter Quantisierungsparameter (QP)
und absoluter Bewegungsvektor (MV). Die Position dieser Information
ist relativ zum Bildheader fest. Nachdem die Rahmensynchronisierung
erreicht ist, ist daher die Position aller Paketsteuerinformationen
in dem Rahmen bekannt.
-
Die
Verwendung eines Paketes mit fester Länge für Videomakroblöcke mit
variabler Länge
resultiert in einer variablen Anzahl von Videomakroblöcken in
einem Paket. Als ein Ergebnis kann der letzte Makroblock eines Paketes
in das nächste
Paket überfließen. Die
relative Adresse (AD) in Bytes von dem Ende des Steuerwortes am
Ende des aktuellen Paketes bis zum Start des ersten vollständigen Makroblocks
wird in der Paketsteuerinformation zur Verfügung gestellt. Da die relative
Adresse bis auf die Byteauflösung
gerundet wird, bleiben in einem Paket durchschnittlich 4 Bits als
Byterundung übrig.
Diese Bits werden in einem Fehlererkennungscodewort mit variabler
Länge,
CRC, verwendet, das in der Mitte eines Bitpaketes in (104)
zu sehen ist. weitere Informationen bezüglich der Verwendung dieses
Codewortes werden später
zur Verfügung
gestellt.
-
Um
das Ausbreiten eines VLC-Synchronisationsverlustes zu stoppen, müssen alle
Informationen, die benötigt
werden, um den Decodierer neu zu synchronisieren, am Start eines
jeden Paketes zur Verfügung
gestellt werden. Somit müssen
alle Informationen, die differentiell codiert sind, mit einem absoluten
Wert codiert sein und an Paketgrenzen zur Verfügung gestellt werden. Dieses
Verfahren stellt Steuerinformationen für Makroblöcke zur Verfügung, mit
denen eine bestimmte Quantisierung verknüpft ist, z. B. die Quantisierung
von diskreten Kosinusumwandlungs(DCT)-Koeffizienten in einer Umwandlung des
Makroblockes. Der absolute Wert des differentiell codierten Quantisierungsparameters
für den
letzten Makroblock in einem vorherigen Paket wird als QP codiert.
Wenn das vorherige Paket verloren geht, ist der Quantisierungswert
für den
ersten MB des aktuellen Paketes gleich QP plus dem differentiellen Quantisierungsparameter
für diesen
ersten MB. Die Zuordnung des QP auf diese Weise stellt zudem einen
effizienten Mechanismus zum Zulassen des Auftretens einer umgekehrten
Decodierung zur Verfügung,
wie unten erklärt.
Zusätzlich
wird der absolute (nicht vorausgesehene bzw. vorausberechnete) Wert der
Bewegungsvektoren an den Paketgrenzen (MV) codiert. Die differentiellen
MVs werden ebenso auf normale Art und Weise in den Makroblockdaten
codiert, sodass das unten beschriebene Rückwärtslesen von Daten bewerkstelligt
werden kann. Schließlich
wird die Zählung
des ersten Makroblocks (AC), die bei der relativen Adressen(AD)-Position
des Paketes beginnt, zur Verfügung
gestellt. Dies erlaubt die geeignete Verschiebung der wiedergewonnenen
Makroblöcke
in dem decodierten Rahmen.
-
Der
untere Bitstrom in 1, (104), zeigt die Bitstromsyntax
eines einzelnen Paketes. In dieser Abbildung wird eine repräsentative
Gruppe von Makroblöcken
zu Demonstrationszwecken gezeigt. Diese Makroblöcke sind von 1 bis 7 durchnummeriert. Wie
auf der rechten Seite gezeigt, ist der Makroblock 7 (MB7) zwischen
dem Ende des aktuellen Paketes und dem Beginn des nächsten aufgeteilt.
Ein anderer Aspekt der Syntax ist, dass die Makroblöcke in einem Paket
in zwei Teile geteilt und für
die vordere Hälfte des
Paketes in Vorwärtsrichtung
und in der zweiten Hälfte
des Paketes rückwärts bitcodiert
werden (jeder Makroblock hat umgekehrte Bits). Dies begrenzt den
Verlust der VLC-Synchronisationsperiode
durch das Bereitstellen zweier Zustände in einem Paket, in dem
ein Decodieren initiiert werden kann, weiter. Dies bedeutet, dass
die obige Syntax, anstatt die Paketsteuerinformation zum Neuinitiieren
des De codierers nach verlorener VLC-Synchronisation nur einmal pro
Paket in Vorwärtsrichtung
zu verwenden, jeden Paketsteuerpunkt durch Initiieren einer Decodierung sowohl
in Vorwärts-
als auch in umgekehrter Richtung von der Paketsteuerinformation
zweimal verwendet (durch zweimaliges Zurückstellen des Decodierprozesses
pro Paketsteuerwort). Wenn ein Kanalfehler einen Verlust der VLC-Synchronisation
verursacht, z. B. in dem MB3, dann werden der MB1 und MB2 zurückgewonnen
und der Rest des Rahmens geht vorübergehend verloren. Nach dem
Neuinitiieren des Decodierers am Ende des Paketes, können die
MB5–MB7
von dem bekannten Zustand bei der Paketgrenze durch Decodieren in
umgekehrter Bitstromfolge wiedergewonnen werden. Wenn nur konventionelles
Vorwärtscodieren
jedes Makroblocks verwendet werden würde, dann würden die MB3–MB7 alle
verloren gehen.
-
Ein
Verlust der VLC-Synchronisation kann durch die Detektion eines ungenauen
decodierten Wortes variabler Länge
(VLD) bei dem Decodierer oder durch die Detektion eines außerhalb
des Bereiches liegenden Parameters zuverlässig bestimmt werden. Die Detektion
von außerhalb
des Bereiches liegenden Paketsteuerinformationen wird ebenfalls verwendet.
Zusätzlich
wird am Ende der Makroblockcodierung, bei der Mitte des Paketes, überprüft, ob sowohl
die vorwärts- als auch die rückwärtscodierten Ströme richtig
zusammentreffen. Um die Paketfehlerdetektion weiter zu verbessern,
wird ein zyklisches Redundanzprüfungs-(CRC)-Codewort
bei der Mitte des Paketes angeordnet. Das CRC-Wort verwendet die
restlichen Bits nach dem Runden der Startadresse des ersten Makroblocks
auf eine Byteauflösung und
es ist in der Länge
variabel. Der Hamming(511, 502)-BCH-Code wird für die Fehlerdetektion verwendet.
Das CRC-Wort (b0–b8)
wird auf der nach dem Runden auf den nächsten Byte der Position des durch
den Adressenwert AD bezeichneten ersten Makroblocks zur Verfügung stehenden
Bits in dem N-Bitpaket abgekürzt.
-
Die
Konvention zum Auswählen
des Mittelpunktes für
den Vorwärts-/Rückwärts-Codierungsansatz
basiert auf der absoluten Zählung
des ersten Makroblocks in dem N-Bitpaket (MB_A) und der absoluten
Zählung
des letzten Makroblocks in dem Paket (MB_B). In diesem Ansatz ist
die Zahl des mittleren Makroblocks (MB_MID) (der der letzte Makroblock
in dem in der Vorwärtsrichtung
codierten Paketes ist) gegeben durch:
wobei die Division als ganzzahlig
angenommen wird. Ein Beispiel für
auf
1, Ziffer
100, basierende Informationsparametersteuerwerte
ist:
AC-erstes Paket = 1
AC-zweites Paket = 8
MB_MID
= 1 + (7 – 1)/2
= 4
AD = 5 Bytes
-
Für eine MB7-Überführung in
das nächste Paket
von 36 Bits sind dann die für
das CRC-Wort zusätzlich
zur Verfügung
stehenden Bits 5 × 8 – 36 = 4 Bits.
-
Das
Overhead der obigen Fehlerüberwachung
ist 24 + CEIL(log(N/8)) Bits für
die Paketsteuerinformation und durchschnittlich 4 Bits für das CRC pro
N-Bitpaket. Die Funktion CEIL(log(N/8)) ist die Anzahl Bits, die
benötigt
wird, um eine relative Adresse in Bytes darzustellen, die ein Maximum
von N Bits hat und auf die nächste
ganze Zahl gerundet ist. Diese Abbildung ist z. B. für N = 512
6, was zu einem Overhead von 30 Bits für Fehlerüberwachungswörter führt. Ein
repräsentatives
Beispiel von 38 Bits wird typischerweise für den zweiten Bildstartcode
und die Headerinformation (initiale Quantisierungsparameter, zeitliche
Referenz, und Bildtypinformation) verwendet, die mit dem Bildheader 2 bei
dem Bit 2N gesendet wird. Bei 24 Kilobits/sec, und N = 512, für eine Rahmenrate
von 11 Rahmen/Sekunde (fps), was für eine angemessene Bewegungssequenz
bei diesem Bitstrom typisch ist, sind das ungefähr 1914 Bits/sec, oder ein
7,9%-Overhead. Zum Vergleich verwendet das H.263-Format eine GOB-Struktur
mit variabler Länge
mit einem 17 Bit-Blockgruppenstartcode plus 14 Bits von einem anderen
Overhead für
Makroblockadressierung und Quantisierung. Das H.263-GOB-Schichtoverhead
bei 11 fps ist 3069 Bits/sec. oder 12,8%. Dies ist das 1,6 fache
des Overheads der vorliegenden Erfindung und umfasst keinerlei CRC-Schutz.
Außerdem
bietet die durch H.263 bereitgestellte Steuerinformation nicht dieselben
potentiellen Neusynchronisationsfähigkeiten, die durch die vorliegende
Erfindung zur Verfügung
gestellt werden, die Rückwärtsdecodieren
und zwei Bildheader pro Rahmen umfasst.
-
2,
Ziffer 200, ist ein Flussdiagramm von einer bevorzugten
Ausführungsform
eines Verfahrens gemäß der vor liegenden
Erfindung. Diese Abbildung zeigt eine chronologische Anordnung von
Steuerwörtern
in dem komprimierten Bitstrom. Jedes dieser Steuerwörter ist
entweder in dem Ausgangsbitstrom gemäß dem Diagramm angeordnet oder
wird wie gezeigt umgangen. Die Anordnung dieser Steuerwörter wird
durch ein oben genauer beschriebenes Multiplexschema gesteuert.
Die Komponenten dieses Fehlerüberwachungsverfahrens
umfassen Techniken oder Steuerwörter
in dem Codierer, der folgendes umfasst: eine Bitumkehrung, die auf
Bits aus den Makroblöcken
in der zweiten Hälfte
eines Bitpaketes gemäß dem ersten
Verfahren (202) angewendet wird; ein Bildheader, die einen
ersten Bildstartcode oder einen zweiten Bildstartcode und geeignete
Rahmen Headerinformationen (204) umfasst; eine absolute
Zählung
des ersten Makroblocks des nächsten Bitpaketes
in dem komprimierten Bitstrom (206); eine relative Adresse
in Bytes von dem Ende der Steuerwörter am Ende des aktuellen
Paketes bis zum Start des nächsten
vollständigen
Makroblocks in dem Bitstrom (208); einen absoluten Quantisierungsparameterwert
des letzten Makroblocks in dem momentanen Bitpaket (210);
einen absoluten Bewegungsvektorwert des letzten Makrobocks in dem
momentanen Paket (212); und ein Fehlerüberwachungsprüfwort, wie
z. B. ein CRC-Codewort, zum Detektieren von Fehlern in dem momentanen
Paket (214). In dem Decodierer wird ein Demultiplexverfahren
gemeinsam mit dem Decodieren des komprimierten Bitstroms angewendet,
die sowohl in der Vorwärts- als auch in der Rückwärtsrichtung
codiert worden ist, wie oben ausführlicher beschrieben, gefolgt
von einem Fehlerdetektionsverfahren (216). Das Ergebnis
der Fehlerüberwachungsinformation,
die dem Decodierer zur Verfügung
gestellt wird, ist die Detektion von Fehlern, die gemäß (218) kategorisiert
werden können:
Verlust von Entropie-Codier-Synchronisation;
fehlerhaftes AC-Codewort; CRC-Fehler; ungültige Codierparameter; und
VLD-Fehler. Diese Fehlerflags können an
ein geeignetes Fehlerverbergungsschema weitergegeben werden, um
die Wiederherstellung der Videodaten vor der Anzeige in dem Decodierer
zuzulassen.
-
3,
Ziffer 300, ist ein Blockdiagramm einer bevorzugten Ausführungsform
einer Vorrichtung gemäß der vorliegenden
Erfindung. In dem Codierer wird die durch diese Vorrichtung verwendete
Fehlerüberwachungsinformation
durch eine Bitpaketsteuerung (330) berechnet, die mit dem
komprimierten Bitstrom, einem blockbasierten Bitumkehrer (316)
und einem Multiplexer (314) gekoppelt ist. Die Fehlerüberwachungsinformation
wird dem Multiplexer (314) durch Eingänge von der Bitpaketsteuerung
zur Verfügung
gestellt, die die folgenden Steuerwörter erzeugt: der Bildheader
(302); die absolute Zählung, AC,
des nächsten
Makroblocks in dem Bitstrom (304); die relative Adresse,
AD, des nächsten
Makroblocks in dem Bitstrom in den Bytes (306); der absolute
Quantisierungsparameterwert, QP, des letzten Makroblocks in einem
momentanen Paket der Bits (308); der absolute Bewegungsvektor,
MV, der mit dem letzten Makroblock in dem momentanen Paket der Bits
(310) verknüpft
ist; und ein Prüfwort,
CRC, das Fehlerdetektionsfähigkeiten
für das
momentane Paket der Bits (312) zur Verfügung stellt. Der Multiplexer
(314) ist mit dem Eingang aus dem komprimierten Bitstrom,
der Bitpaketsteuerung (330) und dem Ausgang einer blockbasierten
Bitumkehreinheit (316) gekoppelt, die ebenso mit dem komprimierten
Bitstrom und der Bitpaketsteuerung zum Umkehren der Reihenfolge
der Makroblöcke
gekoppelt ist, welche als rückwärts codierte
Makroblöcke
bezeichnet sind. In dem Decodierer entfernt ein Demultiplexer (318) die
geeigneten Bits und überführt sie
zu einer anderen blockbasierten Bitumkehreinheit (322),
geleitet durch eine Steuereinheit (332), und nachfolgend
zu einer Decodiereinheit (324), oder direkt zu einer Decodiereinheit
(320). Die Fehlerdetektion wird durch einen Fehlerdetektor
(326) durchgeführt,
der mit dem Eingang aus dem Demultiplexer (318) und sowohl den
Vorwärts-
als auch Rückwärtsblockdecodierern (320)
und (324) gekoppelt ist. Der Fehlerdetektor (326)
verwendet die Steuerinformation und die decodierten Bitströme, um das
Vorliegen spezifischer Fehler zu signalisieren. Diese Fehler werden
nachfolgend durch eine Fehlermeldeeinheit (328) gemeldet und
umfassen: Verlust der Entropiecodierungssynchronisation, Fehler
in der AC aufgrund einer abnehmenden Zählung, CRC-Fehler, jeden beliebigen
anderen gültigen
detektierten Codierungsparameter und verschiedene VLD-Fehler. Diese
Informationen können
nachfolgend an andere Vorrichtungen zum Zwecke der Fehlerverbergung
weitergegeben werden.
-
Das
Verfahren und die Vorrichtung können ausgewählt werden,
um in mindestens einer der folgenden Vorrichtungen enthalten zu
sein: A) einer anwendungsspezifischen integrierten Schaltung; B)
einer feldprogrammierbaren Gittermatrix; und C) einem Mikroprozessor;
und D) einem computerlesbaren Speicher; angeordnet und konfiguriert,
um das erste modifizierte empfangene Signal zu bestimmen, das eine
auf ein Minimum gebrachte Verzerrung und Interferenz gemäß dem oben
ausführlicher
beschriebenen Schema hat.
-
Obwohl
oben beispielhafte Ausführungsformen
beschrieben werden, ist dem Fachmann auf dem Gebiet klar, dass viele
Veränderungen
und Modifikationen vorgenommen werden können, ohne von der Erfindung
abzuweichen. Entsprechend sollen alle solche Veränderungen und Modifikationen
im Umfang der Erfindung, wie in den angefügten Ansprüchen definiert, enthalten sein.