DE4441294C2 - Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und Filminformation - Google Patents

Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und Filminformation

Info

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
Application number
DE4441294A
Other languages
English (en)
Other versions
DE4441294A1 (de
Inventor
Thomas Dr Komarek
Christian Kroenke
Manfred Oberwestberg
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sci Worx GmbH
Original Assignee
SICAN GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SICAN GmbH filed Critical SICAN GmbH
Priority to DE4441294A priority Critical patent/DE4441294C2/de
Priority to EP95118023A priority patent/EP0714212A3/de
Priority to US08/561,108 priority patent/US5844609A/en
Publication of DE4441294A1 publication Critical patent/DE4441294A1/de
Application granted granted Critical
Publication of DE4441294C2 publication Critical patent/DE4441294C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/423Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods 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.
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
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.
Erfindung
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.
Zeichnungen
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
globales Blockschaltbild
In Fig. 3 ist das Blockschaltbiid der Systemarchitektur des Cores (300) dargestellt. Die Einzelmodule können wie folgt beschrieben werden:
System Control (301)
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.
Decoding (302)
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.
Central Processing Module (303)
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.
Memory Interface (307)
Das Memory Interface steuert den Zugriff auf das externe RAM.
internal 64 × 12 RAM (304)
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.
internal 64 × 8 RAM (305)
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.
internal 64 × 16 RAM (306)
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.
Q-Matrix
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.
externes RAM
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.
Concurrent Processing Schema
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.
I-Picture
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.
P,B-Picture
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.
DE4441294A 1994-11-21 1994-11-21 Decoder und Verfahren zur Decodierung von codierter Bild-, Video- und Filminformation Expired - Fee Related DE4441294C2 (de)

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)

* Cited by examiner, † Cited by third party
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

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