Die Erfindung betrifft eine Vorrichtung zur Codierung digitaler
visueller Bilder einschließlich der räumlichen (Inner-Bild) und
zeitlichen Komprimierung (Zwischen-Bild), das heißt der
Verringerung der Redundanz innerhalb eines Bildes und zwischen
Bildern. Die Redundanz in den Bildern wird durch die Verwendung
der diskreten Kosinustransformation, der Quantisierung und der
Veränderliche-Längen-Codierung verringert oder beseitigt. Die
Redundanz zwischen Bildern wird durch die Verwendung von
Bewegungsvektoren verringert oder sogar beseitigt. Im besonderen
betrifft die Erfindung ein skalierbares Codierersystem. Das
heißt, ein dem MPEG2-Standard entsprechendes Videocodierersystem
mit skalierbarem Aufbau, das ein Nur-I-Vollbilder-
Videocodierermodul mit einem Prozessor zur Ausführung der
diskreten Kosinustransformation, einem Quantisierer, einem
Veränderliche-Längen-Codierer, einem FIFO-Puffer und einer
Schnittstelle zum komprimierten Speichern aufweist, um eine I-
Vollbilder enthaltende Bitfolge zu erzeugen. FÜR IPB-Bitfolgen
enthält das System ein zweites Prozessorelement mit einer
Bezugsspeicher-Schnittstelle, der Fähigkeit zur
Bewegungskompensation, zur inversen Quantisierung, zur inversen
diskreten Kosinustransformation sowie
Bewegungskompensationsmittel; und mindestens ein drittes
Prozessorelement für die Bewegungsschätzung. Das System kann die
Form eines einzelnen integrierten Schaltkreischips oder einer
Vielzahl integrierter Schaltkreischips haben, das heißt ein Chip
für jeden Prozessor, für das I-Vollbild-Videocodierermodul, für
das zweite Prozessorelement und für das dritte Prozessorelement.
Es können eine oder mehrere dritte Prozessoreinheiten vorhanden
sein.
Hintergrund der Erfindung
Innerhalb der letzten zehn Jahre hat der Fortschritt der
weltweiten elektronischen Nachrichtübertragungssysteme die Art
und Weise, in der Menschen Informationen senden und empfangen
können, verbessert. Im besonderen haben sich die Möglichkeiten
der Echtzeit-Video- und Audiosysteme in den letzten Jahren
wesentlich verbessert. Um den Teilnehmern Dienste
bereitzustellen, wie beispielsweise Video-auf-Abruf und
Videokonferenzen, ist eine sehr große Bandbreite des Netzwerkes
erforderlich. Tatsächlich ist die Bandbreite des Netzes häufig
das Haupthindernis für eine effektive Arbeitsweise solcher
Systeme.
Um die durch die Netzwerke hervorgerufenen Beschränkungen zu
überwinden, sind Komprimierungssysteme entstanden. Diese Systeme
verringern den Umfang der Video- und Audiodaten, die übertragen
werden müssen, indem in den Bildfolgen auftretende Redundanzen
entfernt werden. Am Empfangsende wird die Bildfolge
dekomprimiert und kann in Echtzeit angezeigt werden.
Ein Beispiel für einen entstandenen Videokomprimierungsstandard
ist der MPEG-Standard (Moving Picture Experts Group). Innerhalb
des MPEG-Standards wird die Videokomprimierung sowohl innerhalb
eines gegebenen Bildes als auch zwischen Bildern definiert. Die
Videokomprimierung innerhalb eines Bildes wird durch Wandlung
des digitalen Bildes aus dem Zeitbereich in den Frequenzbereich
mittels einer diskreten Kosinustransformation, einer
Quantisierung, einer veränderliche-Längen-Codierung und der
Huffman-Codierung durchgeführt. Die Videokomprimierung zwischen
Bildern wird mit einem Prozeß durchgeführt, der als
Bewegungsschätzung bezeichnet wird, in welchem ein
Bewegungsvektor zusammen mit Differenzdaten verwendet wird, um
die Bewegung eines Satzes Bildelemente aus einem Bild in ein
anderes zu beschreiben.
Der ISO MPEG2-Standard spezifiziert nur die Syntax der Bitfolge
und die Semantik des Decodierprozesses. Die Auswahl der
Codierparameter und die Kompromisse zwischen Leistungsfähigkeit
und Komplexität bleiben dem Entwickler der Codierer überlassen.
Da die Entwicklung eines dem MPEG2-Standard entsprechenden
Codierers komplex und teuer ist, ist eine solche Codierer-Lösung
wünschenswert, die flexibel ist, um an verschiedene Anwendungen
angepasst zu werden, und die erweitert werden kann, wenn die
Anforderungen des Benutzers wachsen, das heißt ein skalierbarer
Codierer.
Der MPEG2-Standard erfordert zur Verarbeitung eines Videobildes
eine zehnmal höhere Leistungsfähigkeit und eine vier mal höhere
Auflösung als der MPEG1-Standard. Es wird somit zu einer großen
Herausforderung für die Entwickler, ein bezahlbares
Codiererprodukt zu schaffen. Der MPEG2-Standard stellt
Betriebsweisen bereit, die für einige Anwendungen vorteilhaft
sind, erfüllt andere aber nur in bestimmten Grenzen. Eine
skalierbare Produktarchitektur, die Wachstumsmöglichkeiten und
wirtschaftliche Abstufungen bietet, ist sehr wünschenswert.
Die US-Patentschrift Nr. 5,418,570 offenbart ein digitales
Videocodiersystem, das eine erhöhte Codiereffizienz besitzt,
dadurch, dass es zur vorhersagenden Codierung eines hoch
aufgelösten Bildsignals nur ein lokal dekodiertes Signal mit
niedriger Auflösung verwendet. Obwohl damit Fortschritte in der
Codiereffizienz erreicht werden, ist das dem Verfahren
entsprechende Codiersystem relativ teuer, da es speziell für den
jeweiligen Einsatzzweck mit anspruchsvolleren oder eher weniger
anspruchsvollen technischen Spezifikationen hergestellt werden
muß. Aufgrund der dort offenbarten Systemarchitektur ist es
nämlich unumgänglich, für unterschiedliche Anwendungszwecke
entsprechend unterschiedliche Implementierungen des
Codiersystems herzustellen, etwa für Videokonferenzen, die mit
relativ niedriger Bandbreite via Internet übertragen werden,
einfach gehaltene Implementierungen, oder im Gegensatz dazu
aufwändigere Implementierungen etwa für HDTV-Fernseh-
Übertragungen im digitalen Fernsehen, die breitbandig übertragen
werden müssen, um eine entsprechende Qualität insbesondere bei
schnellen Bildfolgen zu gewährleisten.
Grund dafür ist die oben erwähnte, nicht vorhandene
Skalierbarkeit des Codiersystems für unterschiedlich hohe
technische Anforderungen. Daher ist eine preisgünstige
Massenproduktion dieses Codiersystems nur begrenzt möglich.
Aufgaben der Erfindung
Es ist eine Hauptaufgabe der Erfindung, eine skalierbare
Codiererarchitetektur und deren Realisierung bereitzustellen.
Es ist eine weitere Aufgabe der Erfindung, eine Skalierbarkeit
bereitzustellen, die es gestattet, aus denselben Elementen Nur-
I, I-P und I-P-B Systeme aufzubauen.
Zusammenfassung der Erfindung
Diese und andere Aufgaben werden durch den dem MPEG2-Standard
entsprechenden digitalen Videocodierer der Erfindung mit
skalierbarer Architektur erfüllt. Das skalierbare
Prozessorsystem besitzt ein Nur-I-Vollbilder-Videocodierermodul
mit einem Prozessor zur Ausführung der diskreten
Kosinustransformation, einer Quantisierereinheit, einem
Veränderliche-Längen-Codierer, einem FIFO-Puffer und einer
Schnittstelle zum komprimierten Speichern, um eine I-Vollbilder
enthaltende Bitfolge zu erzeugen. FÜR IPB-Bitfolgen enthält das
System ein zweites Prozessorelement mit einer Bezugsspeicher-
Schnittstelle, der Fähigkeit zur Bewegungsschätzung, zur
inversen Quantisierung, zur inversen diskreten
Kosinustransformation sowie Bewegungskompensationsmittel; und
mindestens ein drittes Prozessorelement für die
Bewegungsschätzung. Das System kann die Form eines einzelnen
integrierten Schaltkreischips oder einer Vielzahl integrierter
Schaltkreischips haben, das heißt ein Chip für jeden Prozessor,
für das I-Vollbild-Videocodierermodul, für das zweite
Prozessorelement und für das dritte Prozessorelement. Es können
eine oder mehrere dritte Prozessoreinheiten vorhanden sein.
Die Figuren
Die Erfindung kann unter Bezugnahme auf die anhängenden Figuren
klarer verstanden werden.
Fig. 1 zeigt einen Signalflußplan eines dem MPEG2-Standard
entsprechenden verallgemeinerten Codierers 11, der eine Einheit
zur Ausführung der diskreten Kosinustransformation 21, einen
Quantisierer 23, einen Veränderliche-Längen-Codierer 25, einen
inversen Quantisierer 29, eine Einheit zur Ausführung der
inversen diskreten Kosinustransformation 31, eine
Bewegungskompensation 41, einen Vollbildspeicher 42 und eine
Bewegungsschätzung 43 enthält. Die Datenpfade enthalten den
Eingang für das i-te Bild 111 sowie Differenzdaten 112,
Bewegungsvektoren 113, den Bildausgang 121, die Bildrückführung
für die Bewegungsschätzung und Kompensation 131 und für das
bewegungskompensierte Bild 101. Diese Figur setzt voraus, daß
das i-te Bild im Bildspeicher 42 vorhanden ist und daß das
i + 1ste Bild mittels Bewegungsschätzung codiert wird.
Fig. 2 verdeutlicht die I-, P- und B-Bilder, Beispiele ihrer
Anzeige- und Übertragungsreihenfolge und die Vorwärts- und
Rückwärts-Bildvorhersage.
Fig. 3 verdeutlicht die Suche des Bewegungsschätzungsblockes im
aktuellen Vollbild oder Bild nach dem am besten
übereinstimmenden Block im nachfolgenden oder vorhergehenden
Vollbild oder Bild. Die Elemente 211 und 211' stellen denselben
Ort in den beiden Bildern dar.
Fig. 4 verdeutlicht die Bewegung von Blöcken entsprechend der
Bewegungsvektoren von ihrer Position innerhalb eines
vorhergehenden Bildes zu einem neuen Bild, und die
nachgestellten Blöcke des vorhergehenden Bildes nach der
Anwendung von Bewegungsvektoren.
Fig. 5 zeigt die Kombination von drei Codiererchips der
Erfindung. Dieses sind der Intra-Chip oder Intra-Prozessor 601,
der Weiterverarbeitungs-Chip oder Weiterverarbeitungs-Prozessor
801, hierin ebenfalls gleichbedeutend als Rekonstruktions-Chip
oder Rekonstruktions-Prozessor 801 bezeichnet, der Suche-Chip
oder Suche-Prozessor 901 und die zugeordneten RAM-Chips 531, 533
und 535, einschließlich DRAM-Chips und SRAM-Chips. Der Intra-
Chip oder Intra-Prozessor enthält die Schnittstelle zum
Leitrechner, einen digital gefilterten Videoeingang 541 und
einen Ausgang für komprimierte Videodaten.
Fig. 6 zeigt ein I-Vollbild-Videocodierermodul 601 mit einer
Leitrechner-Schnittstelle 611, einem internen RISC-Prozessor
621, einer Schnittstelle zum Bewegungsschätzungsmittel 631,
einer Bildelemente-Schnittstelle 641 zum Empfangen von
Bildelementedaten von einem Bildelementebus 643, einer
Bildspeicher-Schnittstelle 651 zum Empfangen von Vollbilddaten
von und zum Senden von Vollbilddaten an einen externen RAM 653,
einen Prozessor zur Ausführung der diskreten
Kosinustransformation (DCT-Prozessor) 671, eine
Quantisierungseinheit 673, einen Veränderliche-Längen-Codierer
675, einen FIFO-Puffer 677 und eine Schnittstelle zum
komprimierten Speichern 679.
Fig. 7 zeigt das Bildspeicherabbild 701 mit einem privaten
Speicher 711 für den Prozessor sowie fünf Speichersegmenten 721,
723, 725, 727 und 729.
Fig. 8 zeigt einen S-Chip oder Prozessor 801 mit einer
Suchspeicher-Schnittstelle 811, einem Suche-Eingabepuffer 821,
einer Suche-Bewegungsschätzung 803 und einer X-Chip-
Schnittstelle 831.
Fig. 9 zeigt einen Weiterverarbeitungs-Chip oder Prozessor 901
mit einer Bezugsspeicher-Schnittstelle 911, einem Weiter
verarbeitungs-Eingabepuffer 921, einer Weiterverarbeitungs-
Bewegungsschätzung 903, einem IR-Chip oder einer
Prozessorschnittstelle 931, einem Weiterverarbeitungs-Chip oder
Prozessorelement 905', einer inversen Quantisierung (IQ) 941,
einer inversen diskreten Kosinustransformationseinheit (IDCT)
943 und einer Fehlervorhersage und Bewegungskompensation 945.
Detaillierte Beschreibung der Erfindung
Die Erfindung betrifft skalierbare Codierer und Codierverfahren,
die den MPEG- und HDTV-Standards entsprechen. Die
Codierfunktionen, die von dem Codierer ausgeführt werden,
enthalten die Dateneingabe, die räumliche Komprimierung, die
Bewegungsschätzung, die Erzeugung der Makroblock-Arbeitsweise,
die Datenrekonstruktion, die Entropiecodierung und die
Datenausgabe. Die räumliche Komprimierung enthält die diskrete
Kosinustransformation (DCT), die Quantisierung und die
Entropiecodierung. Die zeitliche Komprimierung enthält intensive
Rekonstruktionsfunktionen wie beispielsweise die inverse
diskrete Kosinustransformation, die inverse Quantisierung und
die Bewegungskompensation. Die Bewegungsschätzung und
Kompensation sind zeitliche Komprimierungsfunktionen. Die
räumliche und zeitliche Komprimierung sind sich wiederholende
Funktionen mit hohen Verarbeitungsanforderungen.
Im besonderen betrifft die Erfindung einen skalierbaren
Prozessor zur Ausführung der räumlichen und zeitlichen
Komprimierung, einschließlich der diskreten
Kosinustransformation, der Quantisierung, der Entropiecodierung,
der Bewegungsschätzung, der Bewegungskompensation und der
Vorhersage, und noch spezieller ein skalierbares System zur
Ausführung der räumlichen und zeitliche Komprimierung.
Das skalierbare Prozessorsystem der Erfindung besitzt ein Nur-I-
Vollbilder-Videocodierermodul mit einem Prozessor zur Ausführung
der diskreten Kosinustransformation, einen Quantisierer, einen
Veränderliche-Längen-Codierer, einen FIFO-Puffer und einer
Schnittstelle zum komprimierten Speichern, um eine I-Vollbilder
enthaltende Bitfolge zu erzeugen. Für IPB-Bitfolge enthält das
System ein zweites Prozessorelement mit einer Bezugsspeicher-
Schnittstelle, der Fähigkeit zur Bewegungskompensation, zur
inversen Quantisierung, zur inversen diskreten Kosinustransforma
tion sowie Bewegungskompensationsmittel; und mindestens ein
drittes Prozessorelement für die Bewegungsschätzung. Das System
kann die Form eines einzelnen integrierten Schaltkreischips oder
einer Vielzahl integrierter Schaltkreischips haben, das heißt
einen Chip für jeden Prozessor, für das I-Vollbild-
Videocodierermodul, für das zweite Prozessorelement und für das
dritte Prozessorelement. Es können eine oder mehrere dritte
Prozessoreinheiten vorhanden sein.
Der erste Komprimierungschritt ist die Beseitigung der
räumlichen Redundanz, zum Beispiel der Beseitigung der
räumlichen Redundanz in einem stehenden Bildabschnitt eines "I"-
Vollbildes. Räumliche Redundanz ist die Redundanz innerhalb
eines Bildes. Wegen der auf Blöcken basierenden Natur des
Bewegungskompensationsprozesses, der unten beschrieben wird, war
es für den MPEG2-Standard wünschenswert, ein auf Blöcken
aufbauendes Verfahren zur Verringerung der räumlichen Redundanz
zu verwenden. Das Verfahren der Wahl ist die diskrete
Kosinustransformation und die diskrete
Kosinustransformationscodierung des Bildes. Die diskrete
Kosinustransformationscodierung wird mit einer gewichteten
skalaren Quantisierung und einer Lauflängencodierung kombiniert,
um noch weitergehende Komprimierungsniveaus zu erreichen.
Die diskrete Kosinustransformation ist eine orthogonale
Transformation. Orthogonale Transformationen sind, da sie über
den Frequenzbereich interpretiert werden, auf Filtersätze
orientiert. Die diskrete Kosinustransformation ist ebenfalls
eine lokale Transformation. Das heißt, der Codierprozeß tastet
ein räumliches Fenster der Größe 8 × 8 ab, was ausreichend ist, um
64 Transformationskoeffizienten oder Unter-Bänder zu erzeugen.
Ein weiterer Vorteil der diskreten Kosinustransformation besteht
darin, daß schnelle Codier- und Decodieralgorithmen verfügbar
sind. Zusätzlich verhält sich die Unter-Band-Zerlegung der
diskreten Kosinustransformation ausreichend gleichförmig, um die
Anwendung psycho-visueller Kriterien zu gestatten.
Nach der Transformation sind viele Frequenz-Koeffizienten null,
im besonderen die Koeffizienten für hohe räumliche Frequenzen.
Diese Koeffizienten werden in Form eines Zickzackmusters
organisiert und in Lauf-Amplituden- (Lauf-Pegel) Paare
gewandelt. Jedes Paar zeigt die Anzahl von Null-Koeffizienten
und die Amplitude der Nicht-Null Koeffizienten an. Dies wird in
einem Veränderliche-Längen-Code codiert.
Die Bewegungskompensation wird verwendet, um die Redundanz
zwischen Bildern zu verringern oder sogar zu beseitigen. Die
Bewegungskompensation nutzt die zeitliche Redundanz aus, indem
das aktuelle Bild in Blöcke unterteilt wird, zum Beispiel
Makroblöcke, und indem dann in vorhergehend übertragenen Bildern
nach einem nahegelegenen Block mit ähnlichem Inhalt gesucht
wird. Nur die Differenz zwischen den Bildelementen des aktuellen
Blockes und den Bildelementen des vorhergesagten Blockes, der
aus dem Bezugsbild ausgeblendet wird, wird für die Übertragung
tatsächlich komprimiert und anschließend übertragen.
Das einfachste Verfahren der Bewegungskompensation und
Vorhersage besteht darin, die Helligkeits- und Farbwerte, d. h.
die Intensität und die Farbe, jedes Bildelementes in einem "I"-
Bild aufzuzeichnen und dann Veränderungen der Helligkeits- und
Farbwerte, d. h. der Intensität und der Farbe, für jedes
spezielle Bildelement in dem nachfolgenden Bild aufzuzeichnen.
Dies ist jedoch bezüglich der Bandbreite des
Übertragungsmediums, des Speicherbedarfs, der Prozessorkapazität
und der Verarbeitungszeit unwirtschaftlich, weil sich zwischen
den Bildern Objekte bewegen, das heißt, Bildelementeinhalte
bewegen sich von einem Ort in einem Bild zu einem anderen Ort in
einem nachfolgenden Bild. Eine bessere Idee besteht darin, ein
vorhergehendes oder nachfolgendes Bild zu benutzen, um
vorherzusagen, wo sich ein Bildelementeblock in einem
nachfolgenden oder vorhergehenden Bild oder Bildern befinden,
wird zum Beispiel mit Bewegungsvektoren, und das Ergebnis als
"vorhergesagte Bilder" oder "P"-Bilder abzulegen. Im besonderen
beinhaltet dies die Ausführung einer besten Schätzung oder
Vorhersage darüber, wo die Bildelemente oder Makroblöcke aus
Bildelementen des i-ten Bildes in dem
i - 1sten oder i + 1sten Bild auftreten werden. Ein weiterer Schritt
besteht darin, sowohl nachfolgende als auch vorhergehende Bilder
zu verwenden, um vorherzusagen, wo sich ein Bildelementeblock in
einem Zwischen-Bild oder "B"-Bild befinden wird.
Es ist zu beachten, daß die Reihenfolge der Bildcodierung und
der Bildübertragung nicht notwendigerweise mit der Reihenfolge
der Anzeige der Bilder übereinstimmen muß. Vergleiche Fig. 2.
Für I-P-B-Systeme unterscheidet sich die Reihenfolge der
Bildeingabe von der Codierungsreihenfolge, und die eingegebenen
Bilder müssen zeitweilig gespeichert werden, bis sie zur
Codierung verwendet werden. Ein Puffer speichert diese Eingaben,
bis sie verwendet werden.
Zu Darstellungszwecken wird in Fig. 1 ein verallgemeinerter
Signalflußplan eines dem MPEG-Standard entsprechenden Codierers
gezeigt. In dem Signalflußplan werden die Darstellungen des
i-ten Bildes und des 1 + 1sten Bildes verarbeitet, um
Bewegungsvektoren zu erzeugen. Die Bewegungsvektoren sagen
voraus, wo sich ein Bildelemente-Makroblock in einem
vorhergehenden und/oder einem nachfolgenden Bild befinden wird.
Die Verwendung von Bewegungsvektoren anstatt vollständiger
Bilder ist ein Schlüsselaspekt der zeitlichen Komprimierung in
den MPEG- und HDTV-Standards. Wie in Fig. 1 dargestellt, werden
die Bewegungsvektoren, wenn sie einmal erzeugt wurden,
verwendet, um die Bewegung der Bildelemente-Makroblöcke vom i
ten Bild zum i + 1sten Bild zu beschreiben.
Wie in Fig. 1 dargestellt, werden die Darstellungen des i-ten
Bildes und des i + 1sten Bildes im Laufe des Codierprozesses im
Codierer 11 verarbeitet, um die Bewegungsvektoren zu erzeugen,
welche die Art und Weise darstellen, in welcher zum Beispiel das
i + 1ste und die nachfolgenden Bilder codiert und übertragen
werden. Ein Eingabe-Bildabschnitt 111 eines nachfolgenden Bildes
wird an die Bewegungsschätzungseinheit 43 des Codierers
angelegt. Als Ausgangssignal der Bewegungsschätzungseinheit 43
werden die Bewegungsvektoren 113 gebildet. Diese Vektoren werden
durch die Bewegungskompensationseinheit 41 verwendet, um
Makroblockdaten aus vorhergehenden und/oder zukünftigen Bildern
zu gewinnen, die als "Bezugsdaten" bezeichnet werden und die von
dieser Einheit ausgegeben werden. Ein Ausgabewert der
Bewegungskompensationseinheit 41 wird negativ zu dem Ausgabewert
der Bewegungsschätzungseinheit 43 addiert und auf den Eingang
der Einheit 21 zur Ausführung der diskreten
Kosinustransformation gegeben. Die Ausgabe der Einheit 21 zur
Ausführung der diskreten Kosinustransformation wird in einem
Quantisierer 23 quantisiert. Der Ausgang des Quantisierers 23
wird in zwei Ausgänge, 121 und 131, aufgespalten; ein Ausgang
121 geht auf ein nachgeordnetes Element 25 zur weiteren
Komprimierung und Verarbeitung vor der Übertragung, wie
beispielsweise einen Lauflängencodierer; der andere Ausgang 131
durchläuft die Rekonstruktion des codierten Bildelemente-
Makroblockes zum Speichern im Bezugsspeicher 42. In dem zu
Darstellungszwecken gezeigten Codierer durchläuft der zweite
Ausgabewert 131 eine inverse Quantisierung 29 und eine inverse
diskrete Kosinustransformation 31, um eine verlustbehaftete
Version des Differenz-Makroblockes zurückzugeben. Diese Daten
werden zu dem Ausgabewert der Bewegungskompensationseinheit 41
addiert und geben eine verlustbehaftete Version des
ursprünglichen Bildes an den Bezugsspeicher 42 zurück.
Wie in Fig. 2 dargestellt, gibt es drei Typen von Bildern. Dies
sind "Innere Bilder" oder "I"-Bilder, welche als Ganzes codiert
und übertragen werden und keine Bewegungsvektoren benötigen.
Diese "I"-Bilder dienen als Quelle für Bewegungsvektoren. Es
gibt "Vorhergesagte Bilder" oder "P"-Bilder, welche durch
Bewegungsvektoren aus einem vorhergehenden Bild gebildet werden
und die als Quelle für Bewegungsvektoren für weitere Bilder
dienen können. Schließlich gibt es "Zweirichtungs-Bilder" oder
"B"-Bilder, welche durch Bewegungsvektoren aus zwei anderen
Bildern gebildet werden, einem vergangenen und einem
zukünftigen, und die nicht als Quelle von Bewegungsvektoren
dienen können. Bewegungsvektoren werden aus "I"- und "P"-Bildern
erzeugt und verwendet, um "P"- und "B"-Bilder zu bilden.
Ein Verfahren, mittels dem die Bewegungsschätzung ausgeführt
wird, wird in Fig. 3 dargestellt und ist ausgehend von einem
Makroblock 21, die Suche eines i-ten Bildes innerhalb eines
Bereiches des nächsten Bildes, um den am besten
übereinstimmenden Makroblock 213 zu finden. Das Verschieben der
Makroblöcke auf diese Art und Weise ergibt für das i + 1ste Bild
ein Makroblockmuster, wie es in Fig. 4 dargestellt wird. Auf
diese Weise wird das i-te Bild ein wenig verändert, z. B. durch
Bewegungsvektoren und Differenzdaten, um das i + 1ste Bild zu
erzeugen. Was codiert wird, sind die Bewegungsvektoren und
Differenzdaten und nicht das i + 1ste Bild selbst.
Bewegungsvektoren verschieben die Position eines Bildabschnittes
von Bild zu Bild, während die Differenzdaten Veränderungen in
Helligkeit, Farbwerten und der Sättigung übertragen, d. h.
Veränderungen in den Schatten und der Beleuchtung.
Wir kehren zu Fig. 3 zurück und suchen eine gute
Übereinstimmung, indem im i-ten Bild sowie im i + 1sten Bild von
demselben Ort ausgegangen wird. Im i-ten Bild wird ein
Suchfenster erzeugt. Gesucht wird eine beste Übereinstimmung
innerhalb dieses Suchfensters. Einmal gefunden, werden die
Bewegungsvektoren für den am besten übereinstimmenden Makroblock
codiert. Die Codierung des am besten übereinstimmenden
Makroblockes beinhaltet einen Bewegungsvektor das heißt,
wieviele Bildelemente in
y-Richtung und wieviele Bildelemente in x-Richtung der am besten
übereinstimmende Makroblock im nächsten Bild verschoben ist. Die
Differenzdaten, auch als "Vorhesagefehler" bezeichnet, welche
die Differenz in Farbwerten und Helligkeit zwischen dem
aktuellen Makroblock und dem am besten übereinstimmenden Bezugs-
Makroblock angeben, werden ebenfalls codiert.
Die Arbeitsfunktionen eines MPEG2-Codierers sind in drei
grundlegenden Elementen realisiert: einem I- oder Intra-Element,
einem R- oder Weiterverarbeitungs- oder Rekonstruktions-Element
und einem S- oder Suche-Element. Die Funktionen sind
entsprechend der Anwendungsanforderungen, der Chipgröße, der
Entwicklungswerkzeuge und Komplexität und der Leistungsfähigkeit
unterteilt.
Wie in Fig. 6 dargestellt, findet die gesamte externe
Kommunikation einschließlich der Bildelemente-Schnittstelle 641,
der Leitrechner-Schnittstelle 611 und der Datenausgabe-
Schnittstelle 679 über ein einzelnes I-Element 601 statt. Das I-
Element 601 ist die Master-Schnittstelle des Codierers und eine
grundlegende Anforderung in einer beliebigen
Videokomprimierungsanwendung unter Verwendung des Chipsatzes der
Erfindung, wie sie in Fig. 5 dargestellt ist. In diesem Chip
ist ein programmierbarer Prozessor 621 zusammen mit den
Entropiecodierfunktionen, das heißt der diskreten
Kosinustransformations-Prozessoreinheit 6713 der
Quantisierungseinheit 673, und einem Veränderliche-Längen-
Codierer 672 integriert. Infolgedessen könnte dieses Bauelement
in einer Anwendung eingesetzt werden, die nur das Codieren von
Nur-I-Vollbildern erfordert. Um funktionelle Erweiterungen zu er
möglichen, ist eine Rekonstruktions-Schnittstelle hinzugefügt
worden. Die vor der Codierung anzuwendenden
Verarbeitungsfunktionen sind ebenfalls in diesem Bauelement
enthalten.
Die wiederaufbauende Verarbeitung des Makroblockes ist für alle
I-Vollbild- und P-Bild-Codierungen erforderlich. Funktionen wie
die inverse diskrete Kosinustransformation 943 (IDCT), die
inverse Quantisierung 941 (IQ) und die Bewegungskompensation 903
(MC) sind in einem einzelnen Chip untergebracht, dem R-Chip oder
R-Prozessor 901, wie er in Fig. 9 dargestellt ist. Eine gering
entwickelte Bewegungsschätzungsfähigkeit mit einem
programmierbaren Prozessor wird ebenfalls hinzugefügt, um
Anwendungen mit langsamen Bewegungen zu behandeln. Für
Anwendungen mit höheren Anforderungen an die Bewegungsschätzung
ist eine Ergebnissuche-Schnittstelle eingebaut. Dadurch können I-
und R-Chip zusammen in Anwendungen mit wenig Bewegung
eingesetzt werden, wie beispielsweise Fernunterricht,
Videokonferenzen, für Überwachungsaufgaben usw.
Die Bewegungsschätzung ist eine sich wiederholende Funktion und
stellt hohe Anforderungen an die Verarbeitung. Ein Hardware-
Bauelement, der Suche-Chip oder Suche-Prozessor 801, der in
Fig. 8 mit extern programmierbaren Registern dargestellt ist,
ist für diese Funktion vorgesehen. Es ist eine Erweiterungs-
Schnittstelle vorhanden, um einen größeren Suchbereich zu
erhalten. Die Drei-Chip-Konfiguration kann für Anwendungen wie
Rundfunkübertragungen und dergleichen eingesetzt werden. Für
schnellere Bewegungen, beispielsweise bei wissenschaftlichen
Anwendungen mit Hochgeschwindigkeitsfotografie können
zusätzliche S-Chips eine höhere Bildqualität mit einem größeren
Suchbereich bereitstellen. Dies ist eine skalierbare Eigenschaft
der vorliegenden Architektur.
Chip-Unterteilung
Die Verbindungen der drei Codiererchips sind in Fig. 5
dargestellt. Fig. 5 zeigt die Kombination der drei
Codiererchips der Erfindung. Dieses sind der Intra-Chip oder
Intra-Prozessor 601, der Weiterverarbeitungs-Chip oder
Weiterverarbeitungs-Prozessor 801, der Suche-Chip oder Suche-
Prozessor 901 und die zugeordneten RAM-Chips 531, 533 und 535
einschließlich DRAM-Chips und SRAM-Chips. Der Intra-Chip oder
Intra-Prozessor enthält die Schnittstelle zum Leitrechner, einen
digital gefilterten Videoeingang 541 und einen Ausgang für
komprimierte Videodaten 543.
I-Chip
Der in Fig. 6 dargestellte I-Chip behandelt die Eingabedaten
541 und die Ausgabebitfolge 543 des Codierersystems. Die
eingehenden Bildelementedaten werden im Vollbildformat in einem
externen DRAM gespeichert, der als Vollbildspeicher bezeichnet
wird. Dieser Chip führt die Kernfunktionen aus, die für die I-
Vollbild-Codierung erforderlich sind. Die Bildelementedaten
werden, wenn erforderlich, aus dem RGB-Format in das YCbCr-
Format gewandelt. Die Bildelementedaten werden auf
Szenenänderungen und auf sich wiederholende Felder überwacht,
auf der Basis von 3:2 Auszügen. Die eingehenden
Bildelementedaten werden ebenfalls nachgestellt, um ein HHR-
Ausgabeformat zu erzeugen. Der Codierer kann eine
feldorientiertes oder ein vollbildorientiertes Format empfangen
und codierte Felder oder Vollbilder ausgeben, unabhängig davon,
welches Format die Eingabe hatte. Eingabedaten 4:2:2 können als
4:2:2 oder 4:2:0 Ausgabedaten codiert werden. Der auf dem Chip
integrierte RISC-Prozessor 621 ist für die adaptive DCT, die
adaptive Quantisierung und die Geschwindigkeitssteuerung
verantwortlich. Der Prozessor besitzt eine dynamisch
unterteilbare Struktur, die es ihm gestattet, als 4-Byte-
Maschine oder als vier 1-Byte-Maschinen zu arbeiten. Dies wird
in unserer gemeinsamen, ebenfalls anhängenden US-Patentanmeldung
Nr. 08/411 239 vom 27. März 1995 von Charles Boice, John M.
Kaczmarczyk, Agnes Ngai und Robert C. Woodard mit dem Titel
"DYNAMICALLY PARTITIONABLE DIGITAL VIDEO PROCESSOR" beschrieben,
deren Offenbarung durch diese Bezugnahme hierin mit aufgenommen
wird.
Die codierten Bilddaten werden mit Kopfzeileninformationen
vermischt, wie dies in unserer gemeinsamen, ebenfalls
anhängenden US-Patentanmeldung Nr. 08/410 951 vom 27. März 1995
von James D. Greenfield, Diane M. Mauersberg und Agnes Ngai mit
dem Titel "APPARATUS FOR HEADER GENERATION" beschrieben, deren
Offenbarung durch diese Bezugnahme hierin mit aufgenommen wird.
Dies erzeugt die letztendliche MPEG-2- oder MPEG-1-Bitfolge,
welche der Codierer in einen externen DRAM oder FIFO schreiben
kann, zum Beispiel über die Schnittstelle 679 zum komprimierten
Speichern. Wenn das Bild in einem DRAM gespeichert wird, kann es
durch den Benutzer über die Leitrechner-Schnittstelle in Nicht-
Echtzeit ausgelesen werden.
Der R-Chip 901, ebenfalls als Weiterverarbeitungs-Chip oder
Rekonstruktions-Chip bezeichnet, der in Fig. 9 dargestellt ist,
ist für die Weiterverarbeitung mittels Suchverfahren zur
Bewegungsschätzung und für die Bildrekonstruktion zur
Bewegungskompensation verantwortlich. Zur Unterstützung der
Bewegungsschätzungsfunktion wird externer DRAM eingesetzt. Die
Funktionseinheiten des R-Chips führen alle die Grundfunktionen
aus, die für die Rekonstruktion der Bilder und für die
Bewegungsschätzung erforderlich sind.
Die Hauptfunktionen des Prozessors sind auf Makroblöcken
basierende Entscheidungen, die Einstellung des Suchbereiches pro
Bild und die Unterstützungen der Bewegungsschätzung. Die
Quantisiererdaten werden von der Bewegungsschätzer-Schnittstelle
631 des I-Chips empfangen, während S-Chip-Suchergebnisse vom S-
Chip auf der X-Chip-Schnittstelle 831 empfangen werden.
Quantisierte Daten werden dann unter Verwendung von bis zu vier
Matrizentabellen dequantisiert. Die IDCT wandelt über eine
zweidimensionale inverse Transformation die Koeffizienten in
Bildelementedaten um. Diese rekonstruierten Bilddaten werden als
Bezugsdaten für nachfolgende Bildcodierungen über die Speicher-
Schnittstelle gesichert. Die Bewegungsschätzung kann Feld- und
Bildbewegungen, doppelte, einzelne und Zweirichtungs-Bewegungen
bis zu einer Auflösung von einem halben Bildelement für I- P-
und B-Bilder unterstützen.
Die Zwei-Chip-Konfiguration (Intra- und Weiterverarbeitungs/
Rekonstruktions-Chips) kann einen Suchbereich bis zu +/-
8horizontal und +/-7vertikal unterstützen, und die Drei-Chip-
Konfiguration (Intra-, Weiterverarbeitungs/Rekonstruktions und
Suche-Chips kann einen Suchbereich bis zu +/-64horizontal und
+/-56vertikal unterstützen. Wenn Bewegungsschätzungsergebnisse
benötigt werden, werden die Größe des Suchfensters und die Ergeb
nisse der Suche nach der besten Übereinstimmung bestimmt und die
Makroblock-Differenzdaten erzeugt.
Suche-Chip
Der Suche-Chip 801, der in Fig. 8 dargestellt ist, ist für den
Hauptanteil der Bewegungsschätzung verantwortlich. Der Zweck der
Bewegungsschätzung besteht darin, den Platz eines Makroblockes
aus dem aktuellen Bild (CMB) in dem Bezugsbild zu finden. Dieser
Ort wird bestimmt, indem die beste Übereinstimmung gefunden
wird, welche durch Vergleichen der CMB-Daten mit den
Bezugsbilddaten und Einbeziehen eines systematischen Faktors,
welcher auf der Bewegung der vorhergehenden Bilder basiert,
festgestellt wird.
Das gesamte Bezugsbild kann in Echtzeit nicht abgesucht werden.
Deshalb erfolgt die Suche in einem Untersatz des Bezugsbildes.
Dieser Untersatz wird als Suchfenster bezeichnet. Vergleiche
Fig. 3. Je größer das Suchfenster ist, desto größer ist die
Chance, eine exakte Übereinstimmung für den CMB zu finden. Das
Suchfenster kann deutlich vergrößert werden, indem zusätzliche
Suche-Chips 801 benutzt werden. Eine leistungsfähige
Bewegungsschätzung erzeugt Videobilder höherer Qualität und
stark komprimierte Bitfolgen. Der Suche-Chip empfängt auf der
Grundlage der Bildstruktur die Suchfensterparameter von dem
Prozessor auf dem Weiterverarbeitungs/Rekonstruktions-Chip und
die Helligkeitsdaten entweder im Vollbild- oder Feldformat von
dem Intra-Chip.
Die Bezugsbilder werden im Vollbildformat in einem gespeichert.
Die Bewegungsschätzungseinheit führt eine Feldsuche auf dem CMB
und dem Bezugsbild durch. Zusammen mit einem Vollbildergebnis
für Vollbildstrukturierte Bilder werden vier Feldergebnisse
berechnet. Die Ergebnisse haben die Form absoluter
Differenzwerte und werden auf der Grundlage der
Bewegungscharakteristik vorhergehender Bilder systematisch
beeinflußt. Die beeinflußten absoluten Differenzwerte werden
zusammen mit Bewegungsvektoren an den R-Chip 901 gesendet.
Verarbeitungsablauf
Der I-Chip 601 enthält sowohl Vorverarbeitungs- als auch
Entropiecodierfunktionen. Die Vorverarbeitungsfunktionen werden
vor einer beliebigen Codierfunktion ausgeführt. Die
Entropiecodierung ist der letzte Abschnitt der Bildverarbeitung.
Ihr Blockschaltbild ist in Fig. 6 dargestellt.
Auf dem Intra-Chip 601 ist eine Leitrechner-Schnittstelle 611
installiert, die als Hauptsteuerkanal zwischen dem
Codiererchipsatz und dessen Umgebung dient. Diese Schnittstelle
ist ein generisches RAM-Protokoll mit 16 Datenbits und 8
Adreßbits. Die an dieser Schnittstelle definierten Register
enthalten Befehle, Konfigurationsparameter, Codierparameter,
Initialisierungsdaten, den elektronischen Briefkasten usw. Die
Leitrechnerbefehle enthalten Start Codieren, Stopp Codieren,
Abrufen des komprimierten Bildes aus dem Ausgabe-DRAM usw. Die
Konfigurationsparameter enthalten die Speichergröße, den
Speichertyp, die im Codierersystem installierte Chipanzahl usw.
Die Codierparameter können beim Einschalten gesetzt werden oder
an einer Bildgrenze modifiziert werden, um den Codierprozeß zu
leiten. Diese Parameter enthalten unter anderem das
Videoeingabeformat gegenüber dem Videoausgabeformat, die
Benutzer-Matrizentabellen, die Intra-VLC-Tabelle, das ZZ-
Abtastmuster, die Feld/Vollbild-Bildcodierung, die Anzahl der
Bilder pro Bildfolge, die Anzahl der Bilder pro GOP, die Anzahl
der B-Bilder, die Anzahl der Bezugsfelder und
benutzerspezifische Daten. Diese Schnittstelle wird ebenfalls
verwendet, um den Chipsatz zu initialisieren. Im
Codiererchipsatz gibt es zwei interne Prozessoren. Die Befehle
beider Prozessoren werden über diese Schnittstelle
heruntergeladen. Zusätzlich sind Puffer vorhanden, die einen
speziellen Inhalt verlangen, um ordnungsgemäß zu funktionieren,
und diese werden ebenfalls über diese Schnittstelle
initialisiert.
Der elektronische Briefkasten ist ein
Nachrichtenübertragungsmechanismus zwischen dem chip-internen
Prozessor und dem externen Prozessor. Wenn ein Befehl oder eine
neue Information über das Briefkastenregister mit dem korrekten
Prozessorcode an den chip-internen Prozessor gesendet wird, wird
der neue Befehl ausgeführt. Diese Register stellen eine gewisse
Flexibilität bereit. Die definierten Funktionen könnten während
Codierprozesses durch Leitrechner-Schreiboperationen deaktiviert
oder inaktiviert werden.
Auf der Schnittstelle wird weiterhin ein Stapelspeicher
installiert, um zu ermöglichen, daß Register während des
Codierprozesses verändert werden. Der Stapelspeicher besitzt
eine Tiefe von zwölf Einträgen. Die Leitrechner-
Schreiboperationen werden, wenn der Codierer mit der Codierung
eines Bildes beschäftigt ist, nur in diesen Stapelspeicher
geschrieben. Die in den Stapelspeicher geschriebenen
Informationen werden am Ende der Verarbeitung des aktuellen
Bildes verarbeitet. Der Codierer erscheint für den externen
Prozessor solange beschäftigt, bis der Stapelspeicher leer ist.
Dieses Entwurfsmerkmal verringert die Kommunikationszeit
zwischen der Bildverarbeitung und ermöglicht eine maximale
Codierzeit.
Bildelemente-Schnittstelle
Die Bildelemente-Schnittstelle ist eine 24-bit-Bildelemente-
Schnittstelle, die verwendet wird, um digitale Eingangssignale
im RGB-Format zu empfangen. Sie kann ebenfalls 16 oder 24 bit
breite YCbCr-Eingabedaten bearbeiten. Die
Farbkonvertierungsschaltung, die Szenenwechsel-Erkennungslogik
und die 3/2-Auszug-Inversionsfunktion sind ebenfalls auf dieser
Schnittstelle installiert.
Der Prozeß der Farbkonvertierung, eine Form der Datenreduktion,
kann Eingabedaten im 4:2:2 oder 4:2:0 Farbwert-Codeformat
umwandeln.
Jeder Ort innerhalb eines Bildes wird durch Helligkeits- und
Farbwert-Bildelementdaten dargestellt. Wie im MPEG2-Standard
spezifiziert, sind YCbCr-Daten das Eingabedatenformat für die
Komprimierung und das Ausgabedatenformat für die
Dekomprimierung. Für RGB-Daten muß die Eingabe zuerst in das
4:2:2-Format gewandelt werden, bevor ein Codierprozeß
durchgeführt werden kann. Wenn die Eingabedaten das 4:2:2 YCbCr-
Format besitzen, bedeutet dies, daß jeder Punkt eines Bildes
durch 8 Bits Helligkeitsdaten und 8 Bits alternativer Cb und Cr
Farbdaten dargestellt wird. Wenn die Eingabedaten das 4:2:0
YCbCr-Format besitzen, bedeutet dies, daß jeder Punkt eines
Bildes durch 8 Bits Helligkeitsdaten und horizontal und vertikal
untergetastete alternative Cb und Cr Farbdaten dargestellt wird.
Die unnötige redundante Information wird durch den Prozeß der
Farbkonvertierung und/oder die Formatdezimierung von 4:2:2 auf
4:2:0 in der Eingangsstufe entfernt, um einen
Komprimierungsschritt auszuführen und die durch den
verbleibenden Codierer fließende Datenmenge zu verringern. Dies
verringert die Leistungsanforderungen in den verbleibenden
Elementen.
Um einen weiten Bereich Anwendungen abzudecken, beschreibt der
MPEG2-Standard viele Codierwerkzeuge und Optionen für den
Komprimierungsprozeß. Das Abwägen zwischen Qualität/Leistungs
fähigkeit und Komplexität bleiben jedoch für eine gegebene
Anwendung dem Entwickler der Codierer überlassen. Viele der
Codieroptionen sind innerhalb eines Bildes anpaßbar, entweder
auf Bildebene oder auf Makroblockebene. Diese Flexibilität
gestattet eine verbesserte Steuerung der Bitgeschwindigkeit.
Dynamische und adaptive Veränderungen von Codieroptionen könnten
auf der Grundlage der vorliegenden Informationen auf zukünftige
Codierungen angewandt werden, oder sie könnten auch auf
Grundlage zukünftiger Informationen auf die aktuellen Daten
angewandt werden. Die Erkennung von Szenenwechseln, ein
Vorgriffsmechanismus, der Bildinformationen vor dem Codierprozeß
sammelt, stellt weitaus leistungsfähigere Steuermöglichkeiten
bereit. Die Erkennung von Szenenwechseln zeigt große
Veränderungen zwischen Bildern und ebenfalls
Komplexitätsänderungen an. Die Berechnungen zur Erkennung von
Szenenwechseln werden mit den Eingabedaten durchgeführt; für die
verbleibenden Funktionen ergeben sich keine zusätzlichen
Anforderung an den Datendurchsatz oder die Bandbreite. Da sich
die Reihenfolge der Bildeingabe von der Codierreihenfolge
unterscheiden kann, wird in der Szenenwechsel-Erkennungslogik
die Information von bis zu drei Bildern vorverarbeitet. Die
Szenenwechsel-Erkennungslogik kann verwendet werden, um die
Qualität des gerade verarbeiteten Bildes zu regulieren. Dieser
Umfang des Vorgreifens auf Informationen gestattet es dem
Codierer, die Codieroptionen sowohl am Beginn als auch in der
Mitte der Bildverarbeitung dynamisch zu verändern.
Wenn eine 3/2-Auszugsinversion (3/2 PDI) freigegeben wird,
enthalten die Eingabedaten redundante oder sich wiederholende
Felder. Um leistungsfähiger zu werden, müssen die redundanten
Daten vor der Codierung entfernt werden. Die Erkennung sich
wiederholender Felder erfordert die Sicherung von mindestens
einem Feld. Der Bedarf an chip-internem Speicherplatz für die
Erkennung sich wiederholender Felder macht es ökonomischer, die
Felddaten in externem Speicher aufzubewahren. Die Eingabedaten
werden zuerst im Vollbildspeicher-DRAM gespeichert und müssen
für die Erkennung sich wiederholender Felder und die
Bildcodierung abgerufen werden. Das Erkennungsschema beruht auf
einem 3/2-Muster. Mit einer leistungsfähigen 3/2-
Auszugsinversionslogik würden von jeweils 30 eingegebenen
Bildern nach Anwendung der 3/2-Auszugsinversion nur
fünfundzwanzig Bilder codiert. Die restliche Speicherbandbreite
könnte dann für den Abruf der sich wiederholenden Felddaten
benutzt werden. Um den Speicherverkehr zu minimieren, wird das
folgende Schema angewandt: Wenn die Eingabedaten zuerst ein
ungeradzahliges Feld enthalten, wird die Erkennung zuerst mit
den Daten des ungeradzahligen Feldes ausgeführt, und die
Datenerkennung in einem geradzahligen Feld wird ausgeführt,
nachdem ein wiederholtes ungeradzahliges Feld erkannt worden
ist. Wenn die Eingabedaten zuerst ein geradzahliges Feld
beinhalten, findet der umgekehrte Vorgang statt. Wenn ein
Datenbyte an der Bildelemente-Schnittstelle empfangen wird, wird
derselbe Byteplatz im vorhergehenden Feld gleicher Parität aus
dem Vollbildspeicher wiederhergestellt. Ein sich wiederholendes
Feld wird am Ende der Bildfeldeingabe erkannt. Wenn das Feld ein
sich wiederholendes Feld ist, wird dessen Speicherplatz für die
Eingabe des nächsten Feldes derselben Parität benutzt. Dies
beseitigt komplexe Speicherzugriffe während der Bildcodierung.
Vollbildspeicher-Schnittstelle
Die Vollbildspeicher-Schnittstelle ist in Fig. 7 dargestellt.
Am Ausgang der Bildelemente-Schnittstelle sind die Eingabedaten
soweit vorverarbeitet, um in dem an den Intra-Chip
angeschlossenen externen Vollbild-DRAM gespeichert zu werden.
Dieser Vollbildspeicher wird nur benutzt, um das eingegebene
Bild (die aktuellen Daten) zu speichern, bis es für die
Codierung bereit ist. Der Datenverkehr über diese Schnittstelle
ist etwa doppelt so groß wie die Übertragungsrate der
Eingabedaten. Es wird ein 32 bit breiter Datenbus verwendet, um
den DRAM zu unterstützen, z. B. einen 70 ns DRAM. Für die I- und
IP-Codierformate ist die Reihenfolge der Bildeingabe dieselbe
wie die Reihenfolge der Bildcodierung. Aus diesem Grund beginnt
die Codierung, wenn ein Makroblock Daten verfügbar ist. In
dieser Konfiguration wird der Vollbildspeicher in sechs Segmente
unterteilt, fünf für die Daten des Eingabebildes und eins für
die Verwendung durch den chip-internen Prozessor. Für jedes
Eingabebild wird ein Segment des Vollbildspeichers ausgewählt.
Die Daten innerhalb eines Bildes werden an vorgegebenen
Distanzen zur Anfangsadresse des ausgewählten Segmentes
sequentiell gespeichert. Jedes Segment hat die Größe eines
Viertels eines Bildes, mit Ausnahme des Segmentes für die
Verwendung durch den Prozessor, das kleiner sein kann. Für jedes
Eingabebild werden vier aufeinanderfolgende Segmente verwendet.
Die fünf Segmente werden rotierend benutzt. Die
Speicherabbildung ist in Fig. 7 dargestellt.
Wenn das erste Eingabebild empfangen wird, wird es in Segment
vier gespeichert. Da die Größe jedes Segmentes nur ein Viertel
eines Bildes beträgt, benutzt das erste Bild die Segmente 4, 3,
2 und 1. Das zweite Eingabebild wird in den Segmenten 0, 4, 3
und 2 gespeichert. Das dritte Bild wird in den Segmenten 1, 0,
4, und 3 gespeichert. Das vierte Bild wird in den Segmenten 2,
1, 0, und 4 gespeichert. Das fünfte Bild benutzt die Segmente 3,
2, 1, und 0. Dann wiederholt sich das Muster der
Segmentbenutzung. Dieses Schema minimiert die externen
Speicheranforderungen, für I- und IP-Konfigurationen werden 1
MByte DRAM benötigt. Für das IPB-Codierformat ist die
Reihenfolge der Bildeingabe von der Reihenfolge der
Bildcodierung verschieden, wie dies in Fig. 2 dargestellt ist.
Somit muß ein Eingabebild vollständig gespeichert werden, bis es
zur Verwendung bereit ist. In diesem Fall beträgt die
Speichergröße 2 MByte für NTSC und 4 MByte für PAL. Der
Vollbildspeicher wird in fünf Segmente unterteilt, vier
Eingabebilder und eins für die Verwendung durch den chip
internen Prozessor. Jedes Segment hat die gleiche Größe wie ein
Bild. Es wird auf ähnliche Weise benutzt wie bei den Nicht-IPB-
Formaten. Dieses Schema ermöglicht auf Grundlage des
Codierformates skalierbare Speicheranforderungen.
Der hauptsächliche Speicherverkehr im Vollbildspeicher besteht
aus dem Speichern der Eingabedaten, dem Datenabruf bei der 3/2-
Auszugsinversion und dem Abruf von Codierdaten. An der Voll
bildspeicher-Schnittstelle wird ein Prioritätsschema angewandt,
wobei die Eingabedaten die höchste Priorität aufweisen und der
Datenabruf für die Auszugsinversion die niedrigste Priorität
aufweist. Eine Speicheranforderung zum Speichern von
Eingabedaten wird ausgegeben, wenn 32 Bytes oder mehr Daten in
der Bildelemente-Schnittstelle eingegangen sind. Die Daten
werden kontinuierlich im DRAM gespeichert, jeweils 4 Bytes
gleichzeitig, bis weniger als 32 Datenbytes in der Bildelemente-
Schnittstelle stehen, wobei zu diesem Zeitpunkt weitere
anhängende Abrufe von Daten aus dem Speicher bedient werden. Der
Abruf von Codierdaten umfaßt einen Makroblock von 16 mal 16
Bytes. Dieser Speicherzugriff kann an einer beliebigen DRAM-
Zeilenadresse durch eine Speicheranforderung der Eingabedaten
unterbrochen werden. Die Unterbrechung des Speicherzugriffs
verhindert einen Datenüberlauf an der Bildelemente-
Schnittstelle.
Die Makroblockdaten werden vorabgerufen, um eine Blockierung der
Codiererpipeline zu verhindern. Wenn die Makroblockdaten
verfügbar sind, beginnt der Codierprozeß. Der Datenfluß der
Makroblockdaten hängt von dem verarbeiteten Bildtyp ab. Zum
Zweck der vorliegenden Beschreibung wird angenommen, daß eine
vorausschauende Bildverarbeitung durchgeführt wird. Dann werden
bei einem P-Bild die aktuellen Makroblockdaten für alle drei
Bauelemente gleichzeitig bereitgestellt. Die Datenbenutzung
innerhalb jedes Chips ist unterschiedlich, und der Zeitpunkt, zu
dem die Daten verwendet werden, ist ebenfalls unterschiedlich.
Der logische Fluß der Daten dieses Makroblockes ist, wenn sie
von allen empfangenden Bauelementen empfangen werden, vom S-Chip
801 zum R-Chip 901 und dann zurück zum I-Chip 501.
Verarbeitung im Suche-Chip
Suche-Eingabepuffer
Im Suche-Chip 801, der in Fig. 8 dargestellt ist, werden die
aktuellen Makroblockdaten hauptsächlich zur Bewegungsschätzung
benutzt. Abhängig vom durch den Benutzer ausgewählten Suchformat
werden die Makroblockdaten entweder 4 zu 1 oder 2 zu 1
heruntergetastet oder verbleiben 1 zu 1 im Eingabepuffer. Ein
einzelner Suche-Chip 801 stellt im 4 zu 1 Format den größten und
im 1 zu 1 Format den kleinsten Suchbereich bereit. Das
Heruntertasten wird sowohl im 4 zu 1 als auch im 2 zu 1 Format
in horizontaler Richtung durchgeführt. Diese Schema beseitigt
die Komplexität von Vollbild- und Feld-Suchen auf der Basis der
Bewegungsschätzung in denselben heruntergetasteten Daten. Die
heruntergetasteten Daten werden im Suchspeicher, dem externen
Speicher, der an den Suche-Chip angeschlossen ist, gespeichert,
wobei sie für den nachfolgenden Bildcodierprozeß als Bezugsdaten
verwendet werden. Die Eingabedaten werden in der
Bewegungsschätzung verwendet und stellen eine genauere Differenz
zwischen den Daten der beiden Bilder bereit. Gleichzeitig werden
die Daten des zuvor codierten Bezugsbildes zur
Bewegungsschätzung aus dem Suchspeicher abgerufen. Der Umfang
der abzurufenden Bezugsdaten für jeden zu verarbeitenden
Makroblock hängt vom Ort des Makroblockes und vom Suchbereich
ab.
Um Chipressourcen (Siliziumfläche) zu sparen, können die chip
internen Puffer für die Bezugsdaten in der
Bewegungsschätzungseinheit 20 von 128 Zeilen des Suchfensters
gleichzeitig enthalten. Die Bezugsdaten werden abgerufen, wenn
der Suchprozeß fortschreitet. Die Puffer für die Bezugsdaten
umfassen zwei gleichgroße Einheiten. Eine dieser Einheiten wird
für die Daten der ungeradzahligen Zeilen verwendet und die
andere für die Daten der geradzahligen Zeilen. Die beiden Puffer
sind separate Funktionseinheiten. Somit können die Suchprozesse
in den ungeradzahligen Daten und in den geradzahligen Daten
gleichzeitig stattfinden.
Die größte Herausforderung bei der Bewegungsschätzung sind die
Anforderungen an die Verarbeitungskapazität. Um die
Suchschaltung zu minimieren, werden Feldsuchen zusammen
ausgeführt, und die Ergebnisse der Feldsuchen werden kombiniert,
um Vollbild-Suchergebnisse zu bilden. Zum Beispiel seien CF1 die
ungeraden Zeilen der aktuellen Makroblockdaten, CF2 die geraden
Zeilen der aktuellen Makroblockdaten, Rf1 die ungeradzahligen
Zeilen der Bezugsdaten, und Rf2 seien die geradzahligen Zeilen
der Bezugsdaten.
Es werden vier Feldsuchen gleichzeitig ausgeführt, Cf1 gegen
Rf1, Cf1 gegen Rf2, Cf2 gegen Rf1 und Cf2 gegen Rf2. Die
Ergebnisse von Cf1 gegen Rf1 und von Cf2 gegen Rf2 sowie von Cf2
gegen Rf1 und von Cf1 gegen Rf2 werden kombiniert, um die
Vollbild-Suchergebnisse zu bilden. Dieses Schema läßt die die
Vollbild-Suchschaltung überflüssig werden.
Suche-Chip Ergebnis
Es werden fünf vollständige Bildelementeergebnisse für jeden
vollbildstrukturieren Makroblock erzeugt. Für jeden
feldstrukturieren Makroblock werden bis zu zwei vollständige
Bildelementeergebnisse erzeugt, eine beste Übereinstimmung für
das aktuelle ungeradzahlige Feld und eine beste Übereinstimmung
für das aktuelle geradzahlige Feld.
X-Chip-Schnittstelle
Die X-Chip-Schnittstelle 831 unterstützt die Kommunikation
zwischen dem Suche-Chip 901 und dem Weiterverarbeitungs-Chip
oder Rekonstruktions-Chip 801 sowie zwischen weiteren Suche-
Chips 901 innerhalb der Konfiguration. Für jeden Makroblock
werden bis zu fünf Suchergebnisse, ein Vollbild und vier Felder,
über diese Schnittstelle an den R-Chip weitergeleitet. Diese
Schnittstelle wird ebenfalls für Kommunikationen zwischen Suche-
Chip 901 und Suche-Chip 901 verwendet. Bei Multi-Suche-Chip-
Konfigurationen besitzt jeder Suche-Chip 901 eine Chipkennung.
Ein vordefiniertes Verdrahtungsschema an den Anschlußkontakten
des Suche-Chips 901 wird als Chipkennung oder Adresse verwendet.
Die Adresse 0 kennzeichnet den Suche-Chip 901, der die
Hauptkommunikation mit dem R-Chip 801 ausführt. Die
Codiererstruktur kann einen, zwei oder vier Suche-Chips 901
unterstützen. Adresse 3 kennzeichnet den letzten Suche-Chip in
der Kette. In einer Konfiguration mit vier Suche-Chips wird das
Suchfenster in vier Viertel unterteilt. Adresse 0 verwaltet das
obere linke Viertel, Adresse 1 verwaltet das obere rechte
Viertel, Adresse 2 verwaltet das untere linke Viertel und
Adresse 3 verwaltet das untere rechte Viertel. Suche-Chip 3 gibt
das Suchergebnis an Suche-Chip 2 weiter, wenn es verfügbar ist.
Ähnliches gilt für die Übergabe von Suche-Chip 2 auf 1 und von
Suche-Chip 1 auf 0. Das Ergebnis für die beste Übereinstimmung,
das von dem Suche-Chip mit der höheren Adresse erhalten wird,
wird mit dem Ergebnis des empfangenden Chips verglichen. Das
bessere der beiden Ergebnisse wird dann an den nächsten Suche-
Chip weitergeleitet. Schließlich wird die beste Übereinstimmung
von allen Suche-Chips durch den Suche-Chip 0 ausgewählt und an
den R-Chip zurückgegeben.
Verarbeitung im R-Chip
R-Eingabepuffer
Die Daten des aktuellen Makroblockes, die zuvor vom Intra-Chip
601 empfangen wurden, werden auf diesem Chip gepuffert und
innerhalb des Weiterverarbeitungsprozesses verwendet.
Im IPB-Modus bleibt die Verarbeitung im R-Chip 801 hinter der im
Suche-Chip 901 zurück. Um sicherzustellen, daß die Pipeline
ständig gefüllt ist, ist der Puffer groß genug, um die Daten von
zwei Makroblöcken zu fassen. Die Daten des nächsten aktuellen
Makroblockes werden abgerufen, wenn sowohl im Suche-
Eingabepuffer als auch im R-Eingabepuffer Platz ist.
R-Bewegungsschätzung
Die Bezugsdaten sind im bislang im externen Speicher, d. h. im
mit dem R-Chip, d. h. dem Weiterverarbeitungs-Chip oder
Rekonstruktions-Chip, verbundenen Rekonstruktionsspeicher
gespeichert worden. Die Bezugsdaten bestehen, wie es der Name
mit sich bringt, aus rekonstruierten Daten. Wenn diese Daten zur
Verfeinerung der Bewegung benutzt werden, erzeugen sie eine
Vorhersagedifferenz, die mit der übereinstimmt, die durch den
Decoder rekonstruiert wird. Dieses Schema minimiert den
Unterschied zwischen den Komprimierungs- und
Dekomprimierungsprozessen.
Der R-Chip 801 empfängt ebenfalls das Suchformat, das durch den
Benutzer ausgewählt worden ist. In Abhängigkeit von dem
Suchformat werden die vom Suche-Chip 901 empfangenen Ergebnisse
auf die Auflösung des Gesamtbildes umskaliert. Auf der Grundlage
des Suchergebnisses erfolgt eine Verfeinerung der Suche,
einschließlich der Ergebnisse aus dem 1 zu 1 (nicht
heruntergetasteten) Format. In der Konfiguration mit 3 (oder
mehr) Chips wird ein maximaler Verfeinerungs-Suchbereich von +/-
4horizontal und +/-1vertikal verwendet.
Eine weitere große Herausforderung bei der Bewegungsschätzung
ist die Speicherbandbreite. Die aus dem Rekonstruktionsspeicher
abgerufenen Bezugsdaten werden chip-intern gepuffert, bis die
Vollbild-Differenzdaten erzeugt worden sind. Dieses Schema
minimiert den externen Speicherverkehr. Jedes Suchergebnis wird
zuerst an einer Bildelementegrenze verfeinert. Bis zum nächsten
Verfeinerungsprozeß, der Halbbildelement-Verarbeitung, schließen
sich maximal drei Ergebnisse mit vollen Bildelementen an. Bis zu
acht Halbbildelement-Makroblöcke können zur weiteren
Halbbildelement-Verfeinerungs-Suche um jedes Ergebnis der
Vollbildelement-Verfeinerung gekennzeichnet werden. Alle
Ergebnisse der Voll- und Halbbildelement-Verfeinerungen werden
zu dem chip-internen Prozessor, das heißt dem R-Prozessor
übertragen.
IR-Chip-Schnittstelle
In Abhängigkeit vom Suchetyp bestimmt der R-Prozessor den
Makroblocktyp und den Bewegungsvektor für jeden Makroblock.
Auswählbare Suchetypen können die Bewegung von Nur-Vollbildern,
von Nur-Feldern, von Nur-Volle-Bildelementen, Nur-Halbe-
Bildelementen und die adaptive Vollbild/Feld-Bewegung enthalten.
Wenn die adaptive Vollbild/Feld-Bewegungsschätzung ausgewählt
ist, wird der am besten übereinstimmende Makroblock verwendet,
um den Codierprozeß fortzusetzen. Auf der Grundlage der besten
Übereinstimmung werden die übereinstimmenden Farbwertdaten aus
dem Rekonstruktionsspeicher wiederhergestellt. Es werden sowohl
die Helligkeits- als auch die Farbwert-Vollbild-Differenzdaten
erzeugt und in der Intra-Chip- 601 und R-Chip- 801 Schnittstelle
gepuffert. Die Helligkeitsdifferenzdaten werden zuerst in den
Intra-Chip 601 übertragen. Wenn die quantisierten
Helligkeitsdaten an den R-Chip 801 zurückgegeben werden, werden
die Farbwert-Differenzdaten zum Intra-Chip 601 übertragen.
Sowohl die Differenzdaten als auch die quantisierten Daten
teilen sich denselben bidirektionalen Datenbus zwischen dem
Intra-Chip 601 und dem R-Chip 801. Die Datenübertragungen werden
stufenweise durchgeführt, um Buskollisionen zu verhindern.
Zusätzlich zu den Helligkeits- und Farbwert-Differenzdaten
berechnet und überträgt der R-Chip entsprechende Bewegungsvektor
daten für jeden Nicht-Intra-Makroblock an den I-Chip. Diese
Daten werden durch den R-Prozessor gesendet, wenn sie vom I-Chip
angefordert werden.
Die quantisierten Daten werden zuerst an den inversen
Quantisierer 941, dann an die inverse DCT-Einheit 943 und dann
schließlich an die Bewegungskompensationseinheit 945
weitergeleitet. Die IDCT-Daten werden für die
Bewegungsnachstellung in der Bewegungskompensations- (MC)
Einheit 945 zu den aktuellen Makroblockdaten, des Makroblockes
der in der Makroblocksuche verwendet wurde, hinzugefügt. Die MC-
Einheit 945 erzeugt die rekonstruierten Daten. Sie werden
gepuffert und für das Speichern im Rekonstruktionsspeicher
vorbereitet und als Verfeinerungs-Bezugsdaten für die
nachfolgende Bildcodierung verwendet.
Beim IP-Codierformat werden die Suche-Verfeinerungsschaltungen
auf dem R-Chip 801 als kleiner Bewegungsschätzer verwendet. Das
Zentrum des Suchfensters ist der Ort des aktuellen Makroblockes.
Der R-Chip 801 kann Suchbereiche bis zu +/-8horizontal und +/-7vertikal
im IP-Modus unterstützen. Ähnlich wie beim IPB-
Codierformat werden die Bezugsdaten pro Makroblock einmal
abgerufen. Diese Daten werden chip-intern gepuffert, bis die
Vollbild-Differenzdaten erzeugt werden. Zuerst wird eine
Bewegungsschätzung auf Grundlage voller Bildelemente ausgeführt.
Dann wird eine Verfeinerungssuche mit den am besten
übereinstimmenden Volle-Bildelemente-Makroblockdaten ausgeführt.
Zwei Verfeinerungen werden durchgeführt: eine Suche mit doppelt
bereitgestellten Daten und eine Halbbildelemente-Suche.
Wenn Bewegungsschätzungssuchen mit doppelt bereitgestellten
Daten für Bilder in Vollbildstruktur ausgeführt werden, werden
die am besten übereinstimmenden Vollbildelemente-Makroblockdaten
in ungeradzahlige und geradzahlige Felddaten aufgespalten. Für
jedes Feld werden Daten der entgegengesetzten Parität, welche
eine Differenz von +/-1 besitzen, nach der Berechnung der
doppelt bereitzustellenden Bezugsdaten-Abrufadresse über
Bewegungsvektor-Skalieroperationen, wie sie im MPEG2-Standard
spezifiziert werden, aus dem externen Speicher abgerufen. Die
Felddaten werden mit den Daten ihrer entgegengesetzten Parität
interpoliert, um die Bezugsdaten zu bilden, die in der Suche mit
doppelt bereitgestellten Daten verwendet werden.
Die Halbbildelement-Verfeinerung wird über einen Prozeß
durchgeführt, der dem in der IPB-Codierung verwendeten ähnelt.
Alle Ergebnisse, einschließlich der Vollbildelement-Suche, der
Suche mit doppelt bereitgestellten Daten und der Halbbild
element-Suche werden durch den R-Prozessor gesammelt. Die
verbleibenden Prozesse ähnlichen denen im IPB-Modus.
Bezugsspeicher-Schnittstelle
In jeder Makroblockverarbeitung gibt es einen Abruf von
Bezugsdaten, einen Zugriff auf doppelt bereitzustellende Daten,
einen Abruf der am besten übereinstimmenden Farbwertdaten, ein
Speichern der rekonstruierten Helligkeitsdaten und ein Speichern
der rekonstruierten Farbwertdaten. Um die Anforderungen an die
Speicherbandbreite zu verringern, werden die Bezugsdaten nur
einmal pro Makroblock abgerufen. Um sicherzustellen, daß die
Pipeline einheitlich gefüllt ist, werden die Speicheroperationen
auf Grundlage des Platzes des Makroblockes im Bild in einer
speziellen Reihenfolge bearbeitet. Da die Bewegungsschätzung nur
mit den Helligkeitsdaten ausgeführt wird, werden zur
Verbesserung der Speicherlesegeschwindigkeit für eine spezielle
Operation die Helligkeits- und Farbwertdaten in
unterschiedlichen Bereichen des Rekonstruktionsspeichers
abgelegt.
Entropiecodierung im Intra-Chip
Intra-Prozessor
Der Intra-Prozessor 601 wird detailliert in Fig. 6 dargestellt.
Wenn die aktuellen Makroblockdaten im Vollbildspeicher verfügbar
gemacht werden, wird durch den I-Prozessor 601 der Energiegehalt
des Makroblockes berechnet, welcher verwendet wird, um für die
beste Geschwindigkeitssteuerung ein Quantisierungsniveau zu
bestimmen. Mit den Vollbild-Differenzdaten wird durch den I-
Prozessor eine Vollbild- oder Feld-DCT-Entscheidung getroffen,
wenn diese vom R-Chip 801 zurückgegeben werden. Der Intra-
Prozessor 601 besitzt die Eigenschaft, daß er dynamisch
unterteilt werden kann, was es ihm gestattet, als vier 1-Byte-
Einheiten oder als eine 4-Byte-Funktionseinheit zu arbeiten.
Sowohl die Quantisierungs- als auch die Feld/Vollbild-DCT-
Berechnungen werden im unterteilten Modus ausgeführt, was einen
vierfachen Leistungsgewinn bringt.
In Abhängigkeit vom Eingabebild und von der spezifizierten
Ausgabe-Bitgeschwindigkeit können Überlauf- oder Unterlauf-Bedin
gungen auftreten. Es liegt in der Verantwortlichkeit der
Geschwindigkeitssteuerung, das Auftreten beider Bedingungen zu
verhindern. Um einen Überlauf zu verhindern sind die Verwendung
einer reinen DCT und externe FIFO-Rückkopplungen installiert
worden. Auffülloperationen sind vorgesehen, um den Unterlauf zu
steuern oder sogar zu beseitigen.
Die Bildcodierzeit hängt vom Eingabeformat und dem Codierformat
ab. Die Bildgeschwindigkeit wird durch die Anwendung
spezifiziert. Der Bildabstand ist die Zeit, während derer der
Codierer bei der Bildcodierung nicht beschäftigt ist. Der
Bildabstand wird durch die Bildgeschwindigkeit und die
Bildcodierzeit bestimmt. Wenn Auffülloperationen erforderlich
sind, werden diese während des Bildabstandes durchgeführt. Dies
begrenzt die maximale Anzahl Bits, die der Codierer pro Abstand
auffüllen kann. Der Codierer verfolgt die Anzahl Bits, die pro
Bild erzeugt werden und die sich in einem Bild befinden. Wenn
die Anzahl der erzeugten Bits pro Bild kleiner ist als die im
Bild befindlichen Bits, wird das Auffüllen benutzt, um die
unbenutzten Bits aufzufüllen. Die unbenutzten Bits eines Bildes
können über mehrere Bildabstände aufgefüllt werden. Dieser
Mechanismus stellt sicher, daß die Bitfolge der Anwendung
entspricht, ohne die Leistungsfähigkeit herabzusetzen.
Quantisierer
In der Quantisierereinheit ist die Möglichkeit zum Abschneiden
der Koeffizienten integriert. Das Koeffizient-
Abschneideregister, das vom Mikrocode geschrieben wird, wird
verwendet, um die Position des letzten von null verschiedenen
Amplituden-Koeffizienten innerhalb eines Blockes zu speichern.
Wenn die Geschwindigkeitssteuerung eine dem Überlauf nahe
kommende Bedingung erkennt, kann der Code einen Wert in das
Koeffizient-Abschneideregister schreiben. Dieser Wert wird auf
der Grundlage der Nähe zum Überlauf berechnet. Alle
Koeffizienten hinter dem Platz, der im Koeffizient-
Abschneideregister spezifiziert wird, werden zu null gemacht.
Dieses Schema wird ebenfalls verwendet, um eine beschränkte
Bitfolge zu erzeugen. Eine beschränkte Bitfolge ist im MPEG2
Main Profile at Main Level Standard so beschrieben, daß alle
Makroblöcke innerhalb eines Sektors, mit Ausnahme von zwei
Makroblöcken, jeweils weniger als 4608 Bits enthalten müssen.
Der Codierer verfolgt die pro Makroblock erzeugten Bits und die
Anzahl der Makroblöcke innerhalb eines Sektors, die mehr als
4608 Bits besitzen. Wenn zwei Makroblöcke erkannt werden, die
mehr als 4608 Bits besitzen, wird das Koeffizient-
Abschneideregister für den Rest des Sektors auf 31 gesetzt. In
diesem Fall benutzt der Chip die 31 ersten Koeffizienten jedes
8 × 8 Blockes, um die Bitfolge zu bilden. Die Zahl der pro
Koeffizient verwendeten Bits hängt vom Wert des Koeffizienten
ab. Vierundzwanzig Bits werden verwendet, um einen maximalen
Wert zu codieren. Unter der Voraussetzung, daß alle 31
Koeffizienten die maximale Zahl enthalten, werden im 4:2:0
Format 4464 Bits erzeugt. Dieser Mechanismus stellt sicher, daß
die Ausgabebitfolge beschränkt ist und setzt ebenfalls einen
oberen Grenzwert für die Anzahl der erzeugten Bits, um einen
Überlauf zu verhindern.
Veränderliche-Längen-Codierer
Der Ausgabewert der Quantisierung wird vor der ZZ-
Abtastverarbeitung zur Rekonstruktion des Bildes auf den R-Chip
801 zurückgegeben. Dies beseitigt eine gewisse
Entwurfskomplexität, und auf dem R-Chip 801 ist keine inverse
ZZ-Funktion erforderlich. Das Abtastformat kann an der
Leitrechner-Schnittstelle ausgewählt werden. Der Mikrocode kann
das Abtastformat ebenfalls auf Grundlage des Bildformates
auswählen. Eine abwechselnde Abtastung wird für eine
Zeilensprung-Codierung verwendet und eine traditionelle
Abtastung für fortlaufende Bilder.
Auf die quantisierten Daten wird eine ZZ-Abtastung angewandt,
welche mittels der Huffman-Tabelle mit veränderlicher Länge
codiert wird. Die Daten veränderlicher Länge werden in einem Puf
fer gespeichert. Ein codiertes Blockmuster, wie es im MPEG2-
Standard definiert ist, wird verwendet, um anzuzeigen, welcher
Block im Makroblock von null verschiedene Daten enthält. Wenn
alle Blöcke codiert sind, werden den VLC-Daten Kopfzeilen
hinzugefügt.
Schnittstelle zum komprimierten Speichern
Die Kopfzeilen werden in einer flexiblen Art und Weise erzeugt.
Die Kopfzeilendefinitionen sind in einer programmierbaren
Tabelle gespeichert. Der Mikrocode besitzt ebenfalls die
Fähigkeit, den Inhalt der Kopfzeilentabelle zu verändern, wenn
im MPEG2-Standard Veränderungen auftreten. In Abhängigkeit von
den Anforderungen der Anwendung trifft der Mikrocode die
Auswahl, welche Kopfzeilen erzeugt werden soll. Die elementare
Folge ergibt sich aus den Koeffizientendaten zusammen mit den
Kopfzeilen.
Integriertes System
In einer Ausführungsform wird gemäß unserer Erfindung ein dem
MPEG2-Standard entsprechendes digitales Videocodierersystem
bereitgestellt, das ein I-Vollbild-Videocodierermodul 601 mit
(1) einer Leitrechner-Schnittstelle 611, (2) einer Bildelemente-
Schnittstelle 641 zum Empfangen von Bildelementedaten über einen
Bildelementebus 643, (3) einer Vollbildspeicher-Schnittstelle
651 zum Empfangen und Senden von Vollbilddaten, (4) einem
diskreten Kosinustransformations-Prozessor 671, (5) einer Quanti
sierungseinheit (673), (6) einem Veränderliche-Längen-Codierer
675, (7) einem FIFO-Puffer 677 und (8) einer Schnittstelle zum
komprimierten Speichern 679 besitzt, um eine I-Vollbilder
enthaltende Bitfolge zu erzeugen.
In einer weiteren Ausführungsform der skalierbaren Architektur
des dem MPEG2-Standard entsprechenden digitalen
Videocodierersystems enthält das I-Vollbild-Videocodierermodul
eine Schnittstelle (9) zu einem Bewegungsschätzungsmittel, und
das System enthält desweiteren einen zweiten Prozessor, d. h. ein
R-Prozessorelemente 901 mit (10) einer Bezugsspeicher-
Schnittstelle 911, (11) einem Bewegungsschätzungsmittel 903,
(12) einem inversen Quantisierungsmittel 941, (13) einem
inversen diskreten Kosinustransformationsmittel 943 und einem
Bewegungskompensationsmittel 945. Das System enthält ebenfalls
mindestens ein drittes Prozessorelement oder Suche-
Prozessorelement 801 mit (14) einer Suchspeicher-Schnittstelle
und (15) einem Bewegungsschätzungsmittel 801. Diese
Ausführungsform stellt eine I-P-B-Datenfolge bereit.
Der Codierer kann die Form eines einzelnen integrierten
Schaltkreischips oder einer Vielzahl integrierter
Schaltkreischips haben. Zum Beispiel können separate integrierte
Schaltkreischips für das I-Vollbild-Videocodierermodul, das
zweite Prozessorelement 901 und das dritte Prozessorelement 801
vorhanden sein. Es kann ebenfalls mehr als ein solches drittes
Prozessorelemente 801 vorhanden sein.
Gemäß einer alternativen Ausführungsform unserer Erfindung wird
ein digitales Videocodierersystem bereitgestellt, wobei das I-
Vollbild-Videocodierermodul 601 eine Schnittstelle (9) zu einem
Bewegungsschätzungsmittel enthält, und das System enthält
desweiteren nur ein zweites oder R-Prozessorelement mit (10)
einer Bezugsspeicher-Schnittstelle 911, (11) einem
Bewegungsschätzungsmittel 903, (12) einem inversen
Quantisierungsmittel 941, (13) einem inversen diskreten
Kosinustransformationsmittel 943 und einem
Bewegungskompensationsmittel 945. Diese Ausführungsform ist zur
Erzeugung einer I-P-Datenfolge nützlich.
Wenngleich die Erfindung unter Bezugnahme auf bestimmte
bevorzugte Ausführungsformen und Beispiele beschrieben worden
ist, ist nicht beabsichtigt, das Gebiet der Erfindung, das durch
die anhängenden Ansprüche definiert wird, einzuschränken.