DE4441294C2 - Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und Filminformation - Google Patents
Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und FilminformationInfo
- Publication number
- DE4441294C2 DE4441294C2 DE4441294A DE4441294A DE4441294C2 DE 4441294 C2 DE4441294 C2 DE 4441294C2 DE 4441294 A DE4441294 A DE 4441294A DE 4441294 A DE4441294 A DE 4441294A DE 4441294 C2 DE4441294 C2 DE 4441294C2
- Authority
- DE
- Germany
- Prior art keywords
- arithmetic unit
- signal processing
- idct
- decoding
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- Discrete Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Description
Die Übertragung von Videosignalen verlangt im Gegensatz zur Sprach- und
Musikübertragung infolge der wesentlich größeren Datenmengen auch
entsprechend komplexere Algorithmen, um die zu übertragende Datenmenge auf
ein sinnvolles Niveau zu senken. Die Standardisierung der entsprechenden
Verfahren wird von der International Standards Organisation (ISO) durchgeführt.
Der MPEG-Standard (Motion Picture Experts Group) beschreibt Algorithmen zur
Kompression von Bewegtbildern. Er basiert auf Algorithmen wie Quantisation (Q),
Discret-Cosinus-Transform (DCT), Motion-Compensation (MC) Variable-Length-
Coding (VLC) und Run-Length-Coding (RLC). Der Standard definiert einen
Datenstrom, in dem die Bildinformation entsprechend einer spezifizierten Syntax
codiert wird. Dafür wird ein hierarchisches Layer-Modell verwendet, das sich
folgendermaßen gliedert (siehe Fig. 1):
- - Sequence Layer: oberster Level des Videodatenstroms
- - GOP Layer: eine Sequence ist in eine oder mehrere GOPs (Group of Picture) unterteilt; eine GOP setzt sich aus einer Gruppe von Einzelbildern zusammen
- - Picture Layer: beschreibt ein Einzelbild
- - Slice Layer: ein Bild wird in ein oder mehrere Srices variabler Länge unterteilt
- - Macroblock Layer: ein Block mit 16 × 16 Luminanz Pels und den korrespondierenden unterabgetasteten Chrominanz Pels
- Block Layer: ein 8 × 8 Pel Block
Der MPEG1 Standard wurde für Datenraten von 1,5 Mbps konzipiert. Ferner wurden Bildauflösungen von ca. 350 × 250 Pixel und Bildwiederholfrequenzen von 25 bis 30 Hz angenommen.
Der MPEG1 Standard wurde für Datenraten von 1,5 Mbps konzipiert. Ferner wurden Bildauflösungen von ca. 350 × 250 Pixel und Bildwiederholfrequenzen von 25 bis 30 Hz angenommen.
Ein MPEG1 Decoder hat die Aufgabe, entsprechend den im Standard
spezifizierten Decodierungs- und Dekompressionsalgorithmen aus einem
eingangsseitig ankommenden MPEG1 Datenstrom am Ausgang wieder Bilddaten
in einem vorher festgelegten Formart zu erzeugen.
Der unterste Layerin der Hierarchie des MPEG Datenstroms ist der Block
Layer. Er beschreibt einen Block von 8 × 8 Pels. Die verschiedenen Prozesse im
Dekompression Flow des Standards sind blockorientiert, d. h. sie werden immer
auf einen Block von 8 × 8 Pels angewendet. Folgende Prozesse lassen sich
unterscheiden:
- - DECODING: Decodierungsprozeß; aus dem Datenstrom werden alle Parameter und die blockorientierten Bildinformationen decodiert
- - IQ: inverse Quantisierung der Pels eines Blocks
- - IDCT: Anwendung der 2D-IDCT auf die Pels eines Blocks
- - FR: Frame Reconstruction; Kompensation der Bewegungs schätzung
- - BRC: Block-to-Raster-Conversion; Umwandlung der Bilddaten vom blockorientierten MPEG Format zum zeilenorientierten Bildformat
Fig. 2 zeigt schematisch den Flow im MPEG1 Standard. Aus dem
eingangsseitig anliegenden Datenstrom werden mit Hilfe des
Decodierungsprozesses (200) die komprimierten Pel-Blöcke erzeugt, aus denen
das Bild aufgebaut ist. Die Art der Weiterverarbeitung des Blockes hängt von
seinem Typ ab. Der Typ gibt an, mit welchen der zur Verfügung stehenden
Algorithmen dieser Block komprimiert wurde. Ist der Block
bewegungskompensiert und vom Typ "skipped" oder "no coded_blockpattern"
wird direkt der FR Prozeß (203) ausgeführt, da keine Differenzen übertragen
wurden. Ist dies nicht der Fall, werden die Pels zunächst inverse quantisiert (201)
und dann mittels der 2D-IDCT (202) wieder in den Zeitbereich transformiert. Ist
der Block vom Typ "intra", d. h. nicht bewegungskompensiert, so folgt als nächstes
der BRC Prozeß (204). Falls Blöcke bewegungskompensiert sind, wird der FR
Prozeß ausgeführt. Je nach Bildtyp ("motion_forward", "motion_backward")
benötigt der FR Prozeß einen Pel Block von den Referenz Bildern im externen
RAM für die Kompensation. Der dann folgende BRC Prozeß schreibt den
dekomprimierten Block zeilenorientiert in den externen Speicher.
In dem europäischen Patent EP 572 262 A2 wird ein Videodecoder
offenbart, bei dem ein zentraler Prozessor (CPU) zur Decodierung verwendet
wird. Dies erfordert eine relativ große Chipfläche, wobei der
Implementationsbedarf nicht optimiert werden kann.
In dem europäischen Patent EP 592 351 A2 wird ein Videodecoder
beschrieben, bei dem die IQ und IDCT in vier Phasen durchgeführt wird. Der
Decoder erfordert nachteilig einen erhöhten Implementierungsbedarf, da das
Rechenwerk für IQ und IDCT vierfach ausgeführt werden muß.
In dem europäischen Patent EP 255 931 A2 wird ein Verfahren zur
Übertragung von Videosignalen beschrieben. Das Verfahren ist auf die
Durchführung einer zweidimensionalen IDCT beschränkt. Die IDCT wird in zwei
eindimensionale IDCT′s aufgeteilt. Die Berechnungen jeder IDCT werden in
jeweils einem Multiplizierer durchgeführt, was eine relativ große Chipfläche
erfordert.
In "Ein neues Konzept zur Video-Codierung für das ISDN-Bildtelefon", Th.
Kummerow, Bosch Techn. Berichte, 8 (1986/87/89) 6, S. 310-320, wird ein Decoder -
beschrieben, der mehrere Prozessorelementschaltkreise hat, die jeweils aus zwei
Recheneinheiten (ALU), einem Multiplizierer, einem Begrenzer und einer
Kontrolleinheit bestehen. Jeder Prozessorelementschaltkreis greift auf einen
Biidspeicher und auf drei Registerbänke zu. Die zur Decodierung erforderliche
Taktrate wird dadurch erreicht, daß Biidverarbeitungsprozesse für verschiedene
Operatoren synchron in vier parallelen Prozessorelementschaltkreisen ausgeführt
werden. Der beschriebene Decoder erfordert daher zur Implementierung von vier
Prozessorelementschaltkreisen mit vier Multiplizierern eine nicht unbeachtliche
Chipfläche.
Das Problem bei der Entwicklung von Decodern zur Bilddatenverarbeitung
besteht darin, die Biidsignalverarbeitungs-Prozesse mit einer möglichst geringen
Anzahl von Rechenwerken, insbesondere Multiplizierern, auszuführen, wobei die
Rechenwerke durch Verschachtelung der Prozesse optimal ausgenutzt werden.
Dabei muß die Taktrate für die Bildsignalverarbeitung ausreichend hoch sein.
Aufgabe der Erfindung war es daher, einen Decoder mit möglichst geringer
Chipfläche und ein entsprechendes optimiertes Verfahren zur Decodierung
anzugeben. Hierzu sollte die erforderliche Anzahl Multiplizierer möglichst gering
sein.
Die Aufgabe wird durch den Decoder nach Anspruch 1 und das Verfahren
zur Decodierung nach Anspruch 5 gelöst.
Durch die Verbindung von Concurrent Processing und Resource Sharing
Techniken wurde eine optimale Implementierung in Hinblick auf Hardwareauf
wand und Performance realisiert. Dabei sind die Prozesse derart miteinander ver
schachtelt, daß
- a) die Decodierung, die Frame Reconstruction (FR), die Block to Raster- Conversion (BRC) und die Color-Space-Conversion (CSC) nicht zur gleichen Zeit ausgeführt werden;
- b) die Frame Reconstruction (FR) und die inverse Quantisierung (IQ) zur gleichen Zeit, parallel zueinander ausgeführt werden;
- c) die inverse diskrete Cosinustransformation (IDCT) und die Color-Space- Conversion (CSC) nicht zur gleichen Zeit ausgeführt werden;
- d) das Rechenwerk zur Decodierung (302) und das Signalverarbeitungs- Rechenwerk (303) während der Ausführung der inversen Quantisierung (IQ) nicht zur gleichen Zeit auf den ersten internen Speicher (304) zugreifen;
- e) der Decodierungsprozeß und die inverse diskrete Cosinustransformation (IDCT) zur gleichen Zeit, parallel zueinander ausgeführt werden, wobei linear auf den Speicher zugegriffen wird und für jede Adresse die jeweiligen Daten zuerst für die inverse diskrete Cosinustransformation (IDCT) gelesen werden und nachher neue Daten auf diese Adresse von dem Rechenwerk zur Decodierung geschrieben werden;
- f) die Inverse diskrete Cosinustransformation (IDCT) und die Frame Recon struction (FR) nicht zur gleichen Zeit ausgeführt werden;
- g) der Prozeß zur Block to Raster-Conversion (BRC) und zur inversen diskreten Cosinustransformation (IDCT) zur gleichen Zeit, parallel zueinander ausge führt werden, wobei linear auf den Speicher zugegriffen wird und für jede Adresse die jeweiligen Daten zuerst für die Block to Raster-Conversion (BRC) gelesen werden und nachher neue Daten auf diese Adresse durch das Signalverarbeitungs-Rechenwerk (303) bei der Ausführung der inversen diskreten Cosinustransformation (IDCT) geschrieben werden.
Die Erfindung löst sich von den üblichen zentral gesteuerten Prozessor
systemen und lehrt die Verwendung eines Signalverarbeitungs-Rechenwerks
(303) mit arithmetischen Einheiten und einem Multiplizierer, die miteinander zur
Ausführung der Prozesse IQ, IDCT, FR und optional CRC verschaltet sind. Das
Signalverarbeitungs- Rechenwerk (303) weist Prozeßkontrollmittel für die
Steuerung des Ablaufs der Bildsignalverarbeitungs-Prozesse auf, wobei die digita
len Bildsignalverarbeitungs-Prozesse unabhängig voneinander ausgeführt werden
und durch eine Steuereinheit (301) gestartet werden. Die Steuereinheit (301)
sendet Startsignale zur Koordination der digitalen Bildsignalverarbeitungs-Pro
zesse an das Signaiverarbeitungs-Rechenwerk (303), um die spezifischen Pro
zesse zu starten. Der Decoder hat genau ein Signalverarbeitungs-Rechenwerk
(303), das genau einen Multiplizierer und weitere Elementen aufweist, die keine
Multiplizierer sind.
Es ist nunmehr möglich, verschiedene Prozesse parallel in nur einem
Rechenwerk auszuführen. Lediglich auf den Multiplizierer wird seriell zugegriffen.
Durch drei voneinander unabhängige Speicherelemente, die eine direkte Verbin
dung mit einem Bildspeicher haben, wird der Prozessorelementschaltkreis nicht
mehr mit Datenübertragungsaufgaben vom Bildspeicher in die Registerbänke
belastet.
Die Erfindung ist desweiteren anhand der Zeichnungen erläutert. Es zeigen:
Fig. 1 schematische Darstellung des MPEG1 Layer Modells
Fig. 2 schematische Darstellung des Dekompressionsablaufs bei MPEG1
Fig. 3 Systemarchitektur des MPEG1 Decoder Core
Fig. 4 mögliche Lage eines Referenz Blocks im Referenzbild beim FR Prozeß
Fig. 5 Speicherorganisation zum Abspeichern eines Referenzbildes
Fig. 6 Activity Diagram für I-Picture
Fig. 7 Activity Diagram für P, B-Picture
Fig. 8 Activity Diagram für P, B-Picture bei bestimmten Macroblocktypen
In Fig. 3 ist das Blockschaltbiid der Systemarchitektur des Cores (300)
dargestellt. Die Einzelmodule können wie folgt beschrieben werden:
Der Dekomprimierungsprozeß arbeitet blockorientiert. Entsprechend dem
Concurrent Processing Schema steuert (301) den Ablauf des
Dekomprimierungsprozesses. Die Prozesse werden über Start-Signale und
Steuercodes in den beiden Verarbeitungsmodulen (302, 303) gestartet und nach
der Verarbeitung eines Pel-Blocks wird dies über ein Ready-Signal dem System
Control Modul signalisiert. Der Datenaustausch zwischen den
Verarbeitungseinheiten erfolgt über interne RAMs, die als Datenpuffer dienen.
Neben dem Dekomprimierungsablauf sind auch Fehlerbehandlungsroutinen
integriert. Über Control-Signale erfolgt die Synchronisation mit dem externen
System.
Das Decoding-Modul realisiert den Decoding Prozeß vom Sequence bis zum
Block Layer. Das Modul enthält den Stream-Parser, den Variable-Length-
Decoder, den Run-Length-Decoder, sowie eine Motion-Vector-Reconstruction-
Unit. Alle erforderlichen Parameter werden gespeichert. Das Modul benötigt
Speicherzugriffe zum externen RAM, da unter anderem VLC-Tabellen im
Speicher abgelegt sind.
Das Central-Processing-Module ist eine Art arithmetischer Prozessor, der
die Prozesse mit hoher Rechenleistung ausführt. Dabei handelt es sich um die
Prozesse IQ, IDCT, FR und optional Color-Space-Conversion (CSC). Die CSC
wandelt das im MPEG Standard verwendete Pixelformat YCrCb in das RGB-
Format um. Der IQ und FR Prozeß können parallel ausgeführt werden.
Die Echtzeitanforderungen können bereits mit einem Multiplizierer und drei
Addierern als arithmetische Einheiten realisiert werden.
Das Memory Interface steuert den Zugriff auf das externe RAM.
Das RAM wird von 4 verschiedenen Prozessen als Speicher genutzt.
Während des Decoding Prozesses werden die decodierten Frequenzkoeffizienten
eines Blocks in ZigZag-Adressierung ins RAM geschrieben. Nach dem Decoding
arbeitet der IQ Prozeß auf dem RAM, und speichert das Zwischen- und
Endergebnis ab. Danach liest der IDCT-Prozeß das RAM wieder aus.
Falls der CSC Prozeß ebenfalls implementiert ist, nutzt er das RAM als
Input-Buffer.
Dieses RAM wird vom IQ Prozeß und optional wieder vom CSC Prozeß als
Input-Buffer genutzt. Für den IQ Prozeß wird in dem RAM die Q-Matrix
gespeichert.
Dieses RAM wird von 3 verschiedenen Prozessen als Speicher für einen
Block genutzt. Während der IDCT wird das Zwischen- und Endergebnis im RAM
gespeichert. Danach folgt der FR Prozeß, falls erforderlich, und nutzt das RAM in
der gleichen Form. Anschließend werden die Pels mittels des BRC Prozesses ins
externe RAM geschrieben.
Alle internen RAMs sind "dual port" RAMs.
Bei der Q-Matrix handelt es sich um ein Array von 8 × 8
Quantisierungsfaktoren der Größe 8 Bit. Damit läßt sich jeder
Frequenzkomponente eines Pel-Blocks während der Quantisierung ein eigener
Quantisierungsfaktor zuordnen. Während der inversen Quantisierung werden die
Faktoren benötigt, um die Quantisierung wieder aufzuheben. Es werden zwei
Arten von Q-Matritzen unterschieden, eine für "intra" und eine für "non intra"
codierte Blöcke. Für jede der beiden Matritzen sind im Standard Default-Faktoren
festgelegt. Es können aber auch neue Q-Matritzen im Sequence Layer übertragen
werden.
Falls Q-Matritzen im Sequence Layer übertragen werden, werden sie im externen
RAM gespeichert. Dort werden bei der Initialisierung auch die Default- Faktoren
abgelegt. Werden keine Q-Matritzen übertragen, werden die Standardmatrizen
genutzt.
Der Macroblock Typ gibt an, ob die Blöcke im Macroblock "intra" oder "non intra"
codiert sind. In Abhängigkeit vom Typ wird daher zu Beginn der Macroblock
Decodierung die entsprechende Q-Matrix in das 64 × 8 RAM geladen. Durch dieses
dynamische Nachladen der Q-Matrix ist lediglich ein 64 × 8 Bit RAM für die
Speicherung der Q-Matritzen erforderlich.
Im externen RAM werden unter anderem die Referenz-Bilder abgelegt. Die
Referenz-Bilder, wobei es sich um I- und P-Pictures handelt, werden beim FR-
Prozeß für die bewegungskompensierende Interpolation benötigt. Abhängig vom
Blocktyp müssen dazu 1 bis 2 Referenz-Blöcke aus dem Speicher gelesen
werden.
Die Lage dieser Blöcke relativ zum interpolierten Block hängt von einem
Bewegungsvektor ab. Dieser ist nur in seiner Länge durch den "motion vector
range" begrenzt. Die Referenz-Blöcke sind demnach nicht an Blockgrenzen
gebunden, sondern ihre Lage ist beliebig. Fig. 4 stellt diesen Zusammenhang dar.
Dabei ist 400 ein Teil eines Referenz Bildes und 401 ein beliebiger Referenz
Block, der zur Interpolation gelesen werden muß.
Die Referenz-Bilder müssen so im Speicher abgelegt werden, daß die freie
Speicherbandbreite möglichst effektiv genutzt wird. Das bedeutet, daß beim
Schreiben und Lesen des Speichers möglichst wenig Page-Breaks auftreten. Der
Aufbau eines Bildes im MPEG1 Datenstrom ist Macroblock orientiert, d. h. das Bild
wird von links oben nach rechts unten Macroblockzeile für Macroblockzeile
decodiert. Würde man das Bild auch in dieser Form Macroblock für Macroblock im
Speicher ablegen, so kann beim Lesen eines Referenz Blocks eine große Anzahl
von Page-Breaks auftreten, insbesondere bei einer Lage des Referenz Blocks wie
in Fig. 4 dargestellt.
Daher ist es sinnvoll, daß Referenz Bild Zeile für Zeile abzuspeichern. Das
bedeutet, daß auf die Blöcke nach der Dekompression direkt der BRC Prozeß
ausgeführt wird. Der BRC Prozeß sorgt dafür, daß die Zeilen des Blocks so im
externen RAM gespeichert werden, daß das Bild Zeile für Zeile in einem linearen
Adressraum abgelegt ist. In Fig. 5 ist die Lage eines Bildes im Speicher
dargestellt. Der Speicher wird in drei Sektoren eingeteilt. Die Sektoren haben
einen linearen Adressraum. In einem Sektor werden die Luminanz Werte (500)
und in den beiden anderen die Chrominanz Werte Cr (501) und Cb (502)
abgespeichert. Die Grenzen der Sektoren (503 . . 506) liegen auf Page-Grenzen.
Innerhalb der Sektoren werden die jeweiligen Pels Zeile für Zeile gespeichert.
Diese Speicheranordnung hat zwei Vorteile. Zum einen wird der BRC
Prozeß direkt nach der Dekompression ausgeführt und die Bilder liegen
zeilenorientiert im Speicher vor. Zum anderen wird die Zahl der Page-Breaks
minimiert und damit die effektiv nutzbare Speicherbandbreite erhöht.
Die bei der Dekompression auf die Blöcke angewendeten Prozesse
brauchen unterschiedliche Ausführungszeiten. Dabei können auch
Zeitunterschiede bei gleichen Prozessen auftreten. Die Unterschiede sind bedingt
durch den Aufbau und die Form des gerade decodierten MPEG Datenstroms,
sowie durch unterschiedliche Speicherzugriffszeiten.
Die Variationen in den Prozeßzeiten führt zu einer asynchronen Organisation
des Dekomprimierungsablaufs. Das System muß in der Lage sein, die
unterschiedlichen Prozeßzeiten im Mittel wieder auszugleichen. Falls Prozesse
also weniger als die mittlere Prozeßzeit benötigen muß diese Zeit dazu verwendet
werden, Prozesse mit längeren Prozeßzeiten auszugleichen. Durch diese
Flexibilität ist man in der Lage, eine sehr effiziente Implementierung des Decoders
zu realisieren.
Durch Concurrent Processing wird ein optimaler Prozeß-Schedule
implementiert. Der Prozeß-Schedule berücksichtigt dabei gleichzeitig die
Möglichkeiten des Resource-Sharing von Untermodulen für die unterschiedlichen
Prozesse. Dadurch wurde eine in Bezug auf Hardwareaufwand und Performance
optimale Implementierung erreicht.
Für den Prozeß-Schedule gelten folgende Regeln:
- - DECODING, FR, BRC und CSC brauchen Zugriffe auf das externe RAM und können nicht zur gleichen Zeit ausgeführt werden
- - FR und IQ können parallel auf 303 laufen
- - IDCT und CSC können nur allein auf 303 ausgeführt werden
- - DECODING und IQ können nicht gemeinsam das 64 × 12 RAM (304) nutzen
- - DECODING und IDCT können das 64 × 12 RAM (304) gemeinsam nutzen wenn sichergestellt ist, das der Schreibvorgang von DECODING den Lesevorgang von IDCT nicht einholen kann; beide Zugriffe erfolgen linear und starten bei Adresse 0
- - IDCT und FR können nicht gemeinsame auf das 64 × 16 RAM (306) zugreifen
- - BRC und IDCT können das 64 × 16 RAM (304) gemeinsam nutzen wenn sichergestellt ist, das der Schreibvorgang von IDCT den Lesevorgang von BRC nicht einholen kann; beide Zugriffe erfolgen linear und starten bei Adresse 0.
Basierend auf dem Blockdiagramm von Fig. 3 wird das Concurrent
Processing Schema anhand von Activity Diagrammen erläutert. Die Activity
Diagrams beschreiben den Prozeß-Schedule und die Startzeiten der
verschiedenen Prozesse. Der Prozeßtyp ist an der linken Seite des Diagramms
aufgelistet. Jeder Prozeß hat eine Zeitachse, auf der die aktive Zeit des Prozesse
anhand eines Balkens dargestellt ist. Die Zahl über den Balken gibt an, welcher
Block des gerade dekomprimierten Macroblocks durch den Prozeß bearbeitet wird
(siehe Fig. 1 für die Zuordnung der Blocknummern).
Der CSC Prozeß ist in die Diagramme integriert. Falls die Konvertierung
nicht erforderlich ist, kann der Prozeß weggelassen werden.
Fig. 6 zeigt das Activity Diagram zur Dekompression von I-Pictures. Die
Initphase und der normale Run sind dargestellt.
In I-Pictures werden alle Blöcke übertragen. Bei einem I-Picture ist keine
Bewegungskompensation erforderlich und folglich wird der FR Prozeß nicht
benötigt.
Die Dekompression eines Bildes startet mit dem DECODING Prozeß. Die
verschiedenen Layer werden decodiert und die erforderlichen Parameter
abgespeichert. Beim Start des Macroblock Layer Decoding signalisiert 302 dem
System Control Modul (301) durch ein Ready-Signal, daß der nächste Prozeß
starten kann. In diesem speziellen Fall wird der Prozeß in 302 nicht gestoppt. Er
läuft weiter und versucht, alle "macroblock_stuffing" und "macroblock_escape" zu
decodieren. Dies ist möglich, weil die Decodierung dieser Codewörter keinen
Speicherzugriff benötigt. Wenn alle "macroblock_stuffing" und
"macroblock_escape decodiert sind, wird ein weiteres Ready-Signal generiert.
Der Grund für diese Vorgehensweise liegt darin, daß "macroblock_stuffings"
redundante Informationen sind. Sie können in den Datenstrom eingesetzt werden,
um eine konstante Datenrate zu sichern. Die Zahl der "macroblock_stuffings" ist
dabei nicht begrenzt. Durch diese Vorgehensweise kann ein anderer Prozeß
parallel zur Decodierung der beiden Codewörter gestartet werden.
Nach dem ersten Ready-Signal von 302 wird der CSC Prozeß gestartet. Der
CSC Prozeß arbeitet nicht auf Block sondern auf Macroblockebene. Die Pels
werden konvertiert und zum Output-Interface geschrieben. Der Prozeß wird mit
303 ausgeführt. Die Luminanz-Pels werden aus dem externen RAM in 305
eingelesen und die Chrominanz-Pels in das 304. Sie werden im Verlauf des
Prozesse immer wieder dynamisch nachgeladen. Nach Beendigung des CSC
Prozesses und wenn der Decoding Prozeß sein zweites Ready-Signal generiert
hat, wird der Decoding Prozeß erneut gestartet und stoppt wieder sobald das
"coded_block_pattern" Codewort decodiert ist. Dann startet der MATRIX_LOAD
Prozeß. Dieser Prozeß lädt in Abhängigkeit vom Macroblock Typ die benötigte Q-
Matrix aus dem externen RAM in 305. Danach wird wieder der Decoding Prozeß
in 302 gestartet und der erste decodierte Block in das 64 × 12 RAM (304)
geschrieben. Der Decoding Prozeß schreibt in das RAM in ZigZag-Ordnung.
Dann startet der IQ Prozeß auf 303. Die Ergebnisse werden in 304 gespeichert.
Als nächstes wird dann die 2D-IDCT auf 303 gestartet. Der Prozeß ist in zwei 1D-
IDCTs separiert. Sie werden nacheinander gestartet. Die Ergebnisse werden in
306 gespeichert. Die erste 1D-IDCT verarbeitet die Blockspalten, die zweite die
Blockzeilen. Nachdem die erste 1D-IDCT fertig ist, kann in 302 die Decodierung
des zweiten Blocks des Macroblocks gestartet werden (Block Nummer 1). Die
Pels werden wieder ins freie 304 geschrieben. Wenn die zweite 1D-IDCT fertig ist
stehen die Ergebnisse in 306 (Marke: ).
Zu diesem Zeitpunkt ist der erste Block dekomprimiert. Als nächstes wird der
BRC Prozeß gestartet, der den Block über 307 ins externe RAM schreibt. I-
Pictures sind Referenzbilder und werden im externen RAM gespeichert. Wenn
BRC auf Block0 gestartet wird, wird zur gleichen Zeit auch IQ auf Block1
gestartet. Der Prozeß -Schedule geht dann entsprechend dem Diagramm weiter,
bis der nächste Macroblock decodiert wird. An dieser Stelle stoppt der Decoding
Prozeß wieder, um danach "macroblock_stuffings" und "macroblock_escapes" zu
decodieren während der CSC Prozeß läuft.
An diesem Punkt kann die aktuelle Q-Matrix in 305 vom CSC Prozeß
überschrieben werden, da die Matrix in Abhängigkeit vom Macroblocktyp durch
MATRIX_LOAD neu geladen wird. Desweiteren kann 304 vom CSC benutzt
werden, weil die erste 1D-IDCT, die Daten aus dem RAM benötigt, beendet ist.
Dieser Prozeß-Schedule wird wiederholt, bis das Bild decodiert ist.
Fig. 7 und Fig. 8 zeigen die Activity Diagramme für P, B-Pictures. Diese
Bildtypen sind bewegungskompensiert. Deshalb ist der FR Prozeß bei diesen
Bildern aktiv. Die Bilder können durch eine Anzahl unterschiedlicher
Macroblocktypen beschrieben werden. Für P-Pictures lassen sich folgende Typen
unterscheiden: - intra coded
- - forward motion compensated
- - verschiedene coded_block_pattern (cbp) Kombinationen
- - skipped Macroblocks oder cbp = 0
B-Pictures können zusätzlich noch "backward motion compensated" sein.
Falls ein Macroblock "forward motion compensated" und "backward motion
compensated" ist, benötigt FR die doppelte Prozeßzeit, da die Interpolation mit
zwei Referenzblöcken erfolgen muß. Alle unterschiedlichen Macroblocktypen
benötigen unterschiedliche Prozeß-Schedules.
Fig. 7 zeigt die Initphase und den normal Run. Zu Beginn ist der Prozeß-
Schedule wie bei I-Pictures (bis zu Marke siehe I-Picture Beschreibung). Ist ein
Macroblock "intra coded" ist der folgende Prozeß-Schedule bis zum nächstem
Macroblock identisch mit dem vom I-Picture. Ist der Macroblock
bewegungskompensiert, startet der FR Prozeß von Block0 zusammen mit dem IQ
Prozeß von Block1 auf 303. Die Prozeßzeit vom IQ ist fest, und die Prozeßzeit
von FR ist variable.
Wenn FR früher als IQ fertig ist, kann der BRC Prozeß von Block0 gestartet
werden. Die erste 1D-IDCT von Block1 kann nach Beendigung von IQ auf 303
gestartet werden. Der Decoding Prozeß von Block2 kann gestartet werden,
nachdem ein spezielles Ready-Signal von der 1D-IDCT generiert wurde.
Wenn IQ früher als FR fertig ist, müssen alle Prozesse auf FR warten. Erst
wenn FR beendet ist, kann BRC auf Block0 und 1D-IDCT auf Block1 gestartet
werden. Wenn BRC fertig ist, kann der Decoding Prozeß von Block2 gestartet
werden.
Wenn die erste 1D-IDCT fertig ist, kann die zweite gestartet werden. Wenn der
Decoding Prozeß von Block2 und die 1D-IDCT von Block1 beendet sind startet
der Prozeß-Schedule von neuem.
Die Activity Diagramme in Fig. 8 zeigen zwei spezielle Fälle. Das obere
Diagramm zeigt den Prozeß-Schedule für einen speziellen Wert von "cbp". Wenn
ein Block ohne Differenzwerte komprimiert wurde (coded_block_pattern(i) = 0),
dann muß der IQ und IDCT Prozeß auf diese Blöcke nicht angewendet werden.
Das andere Diagramm zeigt den Prozeß-Schedule, wenn "cbp" gleich null ist
oder ein "skipped" Macroblock vorliegt.
Claims (12)
1. Decoder für codierte Bild-, Video- und Filminformation mit
- a) einem Rechenwerk zur Decodierung (302) eines Datenstroms und zur Block to Raster-Conversion (BRC),
- b) einem Signalverarbeitungs-Rechenwerk (303) zur Durchführung von den digitalen Bildsignalverarbeitungs-Prozessen Inverse Quantisierung (IQ), inverse diskrete Cosinustransformation (IDCT), Frame Reconstruction (FR) und optional Color-Space-Conversion (CSC),
- c) internem Speicher (304-306) mit voneinander unabhängigem Zugriff,
- d) einem Speicherinterface (307) für den Zugriff auf externen Speicher, und
- e) einer Steuereinheit (301) zur Steuerung des Rechenwerks zur Decodie rung (302) und des Signalverarbeitungs-Rechenwerkes (303),
wobei das Rechenwerk zur Decodierung (302), das Signalverarbeitungs-
Rechenwerk (303) und der interne Speicher (304-306) mit dem Speicher-
Interface (307) verbunden sind,
dadurch gekennzeichnet, daß
- 1. das Signalverarbeitungs-Rechenwerk (303) arithmetische Einheiten und einen Multiplizierer umfaßt, die miteinander zur Ausführung der Pro zesse IQ, IDCT, FR und optional CRC verschaltet sind, das Signalver arbeitungs-Rechenwerk (303) aber kein programmgesteuerter zentraler Mikroprozessor (CPU) ist,
- 2. das Signalverarbeitungs-Rechenwerk (303) Prozeßkontrollmittel für die Steuerung des Ablaufs der Bildsignalverarbeitungs-Prozesse aufweist, wobei die digitalen Bildsignalverarbeitungs-Prozesse unabhängig von einander ausgeführt werden und durch die Steuereinheit (301) gestartet werden,
- 3. die Steuereinheit (301) Startsignale zur Koordination der digitalen Bild signalverarbeitungs-Prozesse an das Signalverbeitungs-Rechenwerk (303) sendet, um die spezifischen Prozesse zu starten, und
- 4. der Decoder genau ein Signalverarbeitungs-Rechenwerk (303) hat, das genau einen Multiplizierer und weitere Elementen aufweist, die keine Multiplizierer sind,
wobei
- a) Decodierung, Frame Reconstruction (FR), Block to Raster-Conversion (BRC) und Color-Space-Conversion (CSC) nicht zur gleichen Zeit ausgeführt werden;
- b) Frame Reconstruction (FR) und inverse Quantisierung (IQ) zur gleichen Zeit, parallel zueinander ausgeführt werden;
- c) Inverse diskrete Cosinustransformation (IDCT) und Color-Space- Conversion (CSC) nicht zur gleichen Zeit ausgeführt werden;
- d) das Rechenwerk zur Decodierung (302) und das Signalverarbeitungs- Rechenwerk (303) während der Ausführung der inversen Quantisierung (IQ) nicht zur gleichen Zeit auf den ersten internen Speicher (304) zugreifen;
- e) der Decodierungsprozeß und die inverse diskrete Cosinustransformation (IDCT) zur gleichen Zeit, parallel zueinander ausgeführt werden, wobei linear auf den Speicher zugegriffen wird und für jede Adresse die jewei ligen Daten zuerst für die inverse diskrete Cosinustransformation (IDCT) gelesen werden und nachher neue Daten auf diese Adresse von dem Rechenwerk zur Decodierung geschrieben werden;
- f) Inverse diskrete Cosinustransformation (IDCT) und Frame Recon struction (FR) nicht zur gleichen Zeit ausgeführt werden;
- g) der Prozeß zur Block to Raster-Conversion (BRC) und inversen diskre ten Cosinustransformation (IDCT) zur gleichen Zeit, parallel zueinander ausgeführt werden, wobei linear auf den Speicher zugegriffen wird und für jede Adresse die jeweiligen Daten zuerst für die Block to Raster- Conversion (BRC) gelesen werden und nachher neue Daten auf diese Adresse durch das Signalverarbeitungs-Rechenwerk (303) bei der Aus führung der inversen diskreten Cosinustransformation (IDCT) geschrie ben werden.
2. Decoder nach Anspruch 1, wobei der interne Speicher (304-305) einen
ersten Speicher der Größe 64 × 12 bit, einen zweiten Speicher der Größe
64 × 8 bit und einen dritten Speicher der Größe 64 × 16 bit umfaßt.
3. Decoder nach Anspruch 1, wobei die Steuereinheit (301), das Rechenwerk
zur Decodierung (302), das Signalverarbeitungs-Rechenwerk (303) und das
Speicherinterface (307) Statussignale generieren, die den Systemstatus,
Prozeßfehler und Signalfehler kennzeichnen, gekennzeichnet durch Mittel
zur Codierung und Decodierung der generierten Statussignale, um die
Signale in codierter Form an Steuer- und Rechenwerke zu übertragen.
4. Decoder nach einem der vorhergehenden Ansprüche, wobei der Decoder
monolithisch integriert ist.
5. Verfahren zur Decodierung von Datenströmen mit codierte Bild-, Video- und
Filminformation in einem Decoder mit internem Speicher (304-306), einem
Rechenwerk zur Decodierung (302) und Block to Raster-Conversion (BRC),
einem Signalverarbeitungs-Rechenwerk (303) zur Durchführung von den
digitalen Bildsignalverarbeitungs-Prozessen inverse Quantisierung (IQ),
inverse diskrete Cosinustransformation (IDCT), Frame Reconstruction (FR)
und optional Color-Space-Conversion (CSC), dadurch gekennzeichnet,
daß die Bildsignalverarbeitungs-Prozesse in genau einem Signalverarbei
tungs-Rechenwerk (303) mit arithmetische Einheiten und einem Multiplizie
rer, die miteinander zur Ausführung der Prozesse IQ, IDCT, FR and optional
CRC verschaltet sind, ausgeführt werden, wobei das Signalverarbeitungs-
Rechenwerk (303) aber kein programmgesteuerter zentraler Mikroprozessor
(CPU) ist, und die
- a) Decodierung, Frame Reconstruction (FR), Block to Raster-Conversion (BRC) und Color-Space-Conversion (CSC) nicht zur gleichen Zeit ausgeführt werden;
- b) Frame Reconstruction (FR) und inverse Quantisierung (IQ) zur gleichen Zeit, parallel zueinander ausgeführt werden;
- c) Inverse diskrete Cosinustransformation (IDCT) und Color-Space- Conversion (CSC) nicht zur gleichen Zeit ausgeführt werden;
- d) das Rechenwerk zur Decodierung (302) und das Signalverarbeitungs- Rechenwerk (303) während der Ausführung der inversen Quantisierung (IQ) nicht zur gleichen Zeit auf den ersten internen Speicher (304) zugreifen;
- e) der Decodierungsprozeß und die inverse diskrete Cosinustransformation (IDCT) zur gleichen Zeit, parallel zueinander ausgeführt werden, wobei linear auf den Speicher zugegriffen wird und für jede Adresse die jewei ligen Daten zuerst für die inverse diskrete Cosinustransformation (IDCT) gelesen werden und nachher neue Daten auf diese Adresse von dem Rechenwerk zur Decodierung geschrieben werden;
- f) Inverse diskrete Cosinustransformation (IDCT) und Frame Recon struction (FR) nicht zur gleichen Zeit ausgeführt werden;
- g) der Prozeß zur Block to Raster-Conversion (BRC) und inversen diskre ten Cosinustransformation (IDCT) zur gleichen Zeit, parallel zueinander ausgeführt werden, wobei linear auf den Speicher zugegriffen wird und für jede Adresse die jeweiligen Daten zuerst für die Block to Raster- Conversion (BRC) gelesen werden und nachher neue Daten auf diese Adresse durch das Signalverarbeitungs-Rechenwerk (303) bei der Aus führung der inversen diskreten Cosinustransformation (IDCT) geschrie ben werden.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß die Prozesse
auf den internen Speicher abwechselnd zugreifen und die berechneten
Daten unter den Prozessen über die internen Speicher ausgetauscht
werden.
7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, daß Status
signale generiert werden, die den Systemstatus, Prozeßfehler und Signal
fehler bei der Decodierung kennzeichnen, und die generierten Statussignale
codiert bzw. decodiert werden, um die Signale in codierter Form an Steuer-
und Rechenwerke zu übertragen.
8. Verfahren nach einem der Ansprüche 5 bis 7, dadurch gekennzeichnet,
daß mindestens zwei vollständige Bilder, zwei Quantisierungsmatrizen und
optional eine Festwertmatrix in einem externen Speicher abgelegt und Teile
der Daten dynamisch über eine Schnittstelle in den internen Speicher gela
den werden.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß jede Bild
komponente in einem separaten Sektor des externen Speichers abgelegt
und die Bildelemente zeilenweise organisiert werden.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß die Sektor
grenzen mit den Pagegrenzen des Speichers übereinstimmen.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE4441294A DE4441294C2 (de) | 1994-11-21 | 1994-11-21 | Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und Filminformation |
EP95118023A EP0714212A3 (de) | 1994-11-21 | 1995-11-16 | Bilddekodierer mit konkurrierender Verarbeitung und Verteilung von Verarbeitungseinheiten |
US08/561,108 US5844609A (en) | 1994-11-21 | 1995-11-21 | Decoder and method for decoding of coded picture-, video- and film information |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE4441294A DE4441294C2 (de) | 1994-11-21 | 1994-11-21 | Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und Filminformation |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4441294A1 DE4441294A1 (de) | 1996-05-30 |
DE4441294C2 true DE4441294C2 (de) | 1997-01-09 |
Family
ID=6533705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4441294A Expired - Fee Related DE4441294C2 (de) | 1994-11-21 | 1994-11-21 | Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und Filminformation |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE4441294C2 (de) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3626916A1 (de) * | 1986-08-08 | 1988-02-11 | Thomson Brandt Gmbh | Verfahren zur uebertragung eines videosignales |
US5870497A (en) * | 1991-03-15 | 1999-02-09 | C-Cube Microsystems | Decoder for compressed video signals |
-
1994
- 1994-11-21 DE DE4441294A patent/DE4441294C2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE4441294A1 (de) | 1996-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69830802T2 (de) | Zuweisung von rechenleistung in einem informationsstrom-dekoder | |
DE19819198B4 (de) | Reversible DCT für verlustfreie/verlustbehaftete Kompression | |
DE19521973C2 (de) | Bilddecodiervorrichtung | |
DE69737852T2 (de) | Durch verbessertes speicher- und auslesesystem verschiedene arten von durch bildspeicherspezifischen hardwarespezifikationen verursachte verzögerungsfaktoren überwindender bilddekoder und bildspeicher | |
DE69838729T2 (de) | Verfahren und vorrichtung zur verringerung des benötigten speicherplatzes zur speicherung von referenzbildern in einem videodekoder | |
DE19709391A1 (de) | MPEG-Codier- und Decodiersystem für Multimediaanwendungen | |
EP2109993B1 (de) | Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes | |
EP0309669A2 (de) | Verfahren zur szenenmodellgestützten Bilddatenreduktion für digitale Fernsehsignale | |
DE69627920T2 (de) | Speichersteuerungsanordnung und Bilddekodierer damit | |
DE60029828T2 (de) | Verfahren und vorrichtung zur dekodierung von videosignalen mittels eines multiprozessorsystems | |
DE4408522C2 (de) | Vorrichtung zur Bilddatenverarbeitung und Verfahren zur Verarbeitung von Bilddaten | |
WO1998034196A1 (de) | Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes | |
DE69433537T2 (de) | Vorrichtung zur Dekodierung von Bewegtbilddaten | |
DE69629442T2 (de) | Verfahren und Einrichtung zur Kodierung digitaler Videosignale | |
EP0956703B1 (de) | Verfahren und anordnung zur codierung und decodierung eines digitalisierten bildes | |
DE19935604A1 (de) | Verfahren und Vorrichtung zum decodieren eines Bewegungsbildes | |
DE69636139T2 (de) | Hierarchische Kodierungs- Dekodierungs-Vorrictung mit Speichervorrichtung für ein digitales Bildsignal | |
DE4441294C2 (de) | Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und Filminformation | |
DE69628269T2 (de) | Konversionsverfahren einer Ausgangsdatenfolge in Invers-DCT und Schaltung davon | |
DE3545106C2 (de) | ||
EP0336510B1 (de) | Prädiktiver Standbildcodierer | |
DE69909880T2 (de) | Dekodierung eines komprimierten digitalen Bildsignals | |
EP0752788A2 (de) | Videocoder und -decoder | |
EP0929975B1 (de) | Verfahren und anordnung zur vektorquantisierung und zur inversen vektorquantisierung eines digitalisierten bildes | |
DE19860652A1 (de) | Videodecoder für hohe Bildqualität |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: SICAN GMBH, 30419 HANNOVER, DE |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: SCI-WORX GMBH, 30419 HANNOVER, DE |
|
8339 | Ceased/non-payment of the annual fee |