DE102011100936B4 - Techniken zum Speichern und Abrufen von Pixeldaten - Google Patents

Techniken zum Speichern und Abrufen von Pixeldaten Download PDF

Info

Publication number
DE102011100936B4
DE102011100936B4 DE102011100936.5A DE102011100936A DE102011100936B4 DE 102011100936 B4 DE102011100936 B4 DE 102011100936B4 DE 102011100936 A DE102011100936 A DE 102011100936A DE 102011100936 B4 DE102011100936 B4 DE 102011100936B4
Authority
DE
Germany
Prior art keywords
image data
memory
data
requested
compressed
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.)
Active
Application number
DE102011100936.5A
Other languages
English (en)
Other versions
DE102011100936A1 (de
DE102011100936A9 (de
Inventor
Vinay Thomas
Michael Coulter
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102011100936A1 publication Critical patent/DE102011100936A1/de
Publication of DE102011100936A9 publication Critical patent/DE102011100936A9/de
Application granted granted Critical
Publication of DE102011100936B4 publication Critical patent/DE102011100936B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/92Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
    • H04N5/926Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback by pulse code modulation
    • H04N5/9261Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback by pulse code modulation involving data reduction
    • H04N5/9264Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback by pulse code modulation involving data reduction using transform coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/79Processing of colour television signals in connection with recording
    • H04N9/87Regeneration of colour television signals
    • H04N9/877Regeneration of colour television signals by assembling picture element blocks in an intermediate memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Computerimplementiertes Verfahren (500, 600), umfassend:
Ausführen (502, 602) von Golomb-Komprimierung bei Bilddaten;
Speichern (504, 604) von Golomb-komprimierten Bilddaten in Speicher in entweder ersten oder zweiten Konfigurationen, basierend darauf, ob die Bilddaten zur Speicherung von einem Videodecodierer (102) oder einem Videocodierer (302) angefragt werden;
Anfragen von Abruf (506, 606) von Bilddaten von dem Speicher, wobei der Abruf darauf basiert, ob die Bilddaten von einem Videodecodierer oder -codierer angefragt werden;
Ausführen von Golomb-Dekomprimierung bei abgerufenen Bilddaten; und
selektiv Übertragen der dekomprimierten Bilddaten an einen Videodecodierer oder -codierer in Antwort darauf, dass die dekomprimierten Bilddaten Bilddaten beinhalten, die von einem Videodecodierer oder -codierer angefragt worden sind,
wobei die komprimierten Bilddaten in der ersten Konfiguration in den Speicher geschrieben werden, wobei Reihen- und Spaltenadressen reversiert sind, in Antwort darauf, dass die Bilddaten von einem Videodecodierer (102) bereitgestellt werden, und
wobei die komprimierten Bilddaten in der zweiten Konfiguration in den Speicher in durchgängigen Speicheradressen geschrieben werden, in Antwort darauf, dass die Bilddaten von einem Videocodierer (302) bereitgestellt werden.

Description

  • Technisches Gebiet
  • Der hierin offenbarte Gegenstand betrifft im Allgemeinen Techniken zum Speichern und Abrufen von Pixeldaten.
  • Stand der Technik
  • Einige Videocodierer und -decodierer, die in SoC-(systems on chip)-Geräten integriert sind, schreiben Videodaten in einen Speicher, und fragen Videodaten vom Speicher zur Bewegungsvektorgeneration und Bewegungskompensierung ab. Bewegungsvektorgeneration und Bewegungskompensierung sind bei der Videocodierung und -decodierung wohlbekannte Techniken. Das Schreiben in und Lesen aus externem Speicher kann wesentliche Mengen an Leistung verbrauchen. Da Videoframegröße bei Benutzerelektronikgeräten ansteigt, ist es wünschenswert, die Anzahl an Leseoperationen aus Speicher und Schreiboperationen in Speicher zu verringern. Verringern der Anzahl an Lese- und Schreibzugriffen von Speicher kann Energieverbrauch verringern und potentiell Speicher zur Verwendung von Geräten neben Videocodierern und -decodierern freigeben.
  • WO 01/26 056 A1 offenbart ein Verfahren zum Speichern eines Datenblocks, der aus N Zeilen und M Spalten besteht, mit dem Schritt des Transponierens des Datenblocks um 90 °, um dadurch einen transponierten Datenblock zu erzeugen, der aus M Zeilen und N Spalten besteht, und der Schritt des Speicherns des transponierten Datenblocks. Der transponierte Datenblock wird vorzugsweise unter Verwendung eines oder mehrerer Abrufbefehle abgerufen, wobei die Anzahl der Abrufbefehle zum Abrufen des transponierten Datenblocks geringer ist als die Anzahl Abrufbefehle, die zum Abrufen der gleichen Daten erforderlich sind, wenn sie in ihrer ursprünglichen Form gespeichert werden , wodurch die Speicherbandbreite verringert wird. In einer gegenwärtig in Betracht gezogenen Implementierung ist der Datenblock ein Referenzmakroblock von decodierten MPEG-Videodaten, der bei Bewegungskompensationsoperationen verwendet wird, und jeder der Abrufbefehle ist ein AxB-Abrufbefehl, wobei A die Anzahl von Spalten von Daten und B darstellt stellt die Anzahl von Zeilen von Daten dar, die als Antwort darauf geholt werden sollen, und wobei ferner A> B ist.
  • US 6 272 180 B1 offenbart ein Verfahren und Vorrichtungen zum Komprimieren und Dekomprimieren von Referenzframes in einem Videodecodierer stellen einen Ansatz mit geringer Komplexität dar, um Referenzrahmenspeicher zu sparen. Gleichzeitig bietet dieser Ansatz eine PSNR- und Drift-Reduktions-Performance, die vergleichbar ist mit Konkurrenzverfahren mit relativ hoher Komplexität, wodurch typische Kompressionsraten von 2: 1 bis 8: 1 mit guter Leistung verwendet werden können. In einer bevorzugten Ausführungsform sind Bezugsrahmen blockiert, und jeder Block ist Haar-Wavelet-transformiert. Die Teilbänder der Wavelet-Transformation mit ähnlichen erwarteten Run-Length-Statistiken auf Bit-Ebene werden zusammen gruppiert, und jede Gruppe wird unter Verwendung von Golomb-Rice-Codes mit einem Parameter-Lookup-Adaptionsverfahren codiert eingebettet. Der eingebettete Code wird in einem komprimierten Bildspeicher gespeichert, der blockweise indiziert wird, um später retrahiert und dekomprimiert zu werden, wenn der Referenzblock vom Videodecoder benötigt wird.
  • Die vorliegende Erfindung bezieht sich auf ein Verfahren gemäß Anspruch 1, eine Vorrichtung gemäß Anspruch 7 und ein System gemäß Anspruch 13.
  • Figurenliste
  • Erfindungsgemäße Ausführungsformen werden exemplarisch und in keiner Weise einschränkend in den Zeichnungen veranschaulicht, bei denen gleiche Bezugsnummern zum Verweis auf ähnliche Elemente verwendet werden.
    • 1 stellt ein Beispiel eines Videodecodierungssystems dar.
    • 2A zeigt mehrere Beispiele, in denen Pixel in Bursts entlang Reihen von Speicherorten aus Speicher gelesen werden.
    • 2B stellt eine Art und Weise dar, in der komprimierte Daten in Speicher gespeichert werden und von dort abgerufen werden, wenn komprimierte Daten so gespeichert werden, dass Spalten- und Reihenadressen reversiert sind.
    • 3 stellt ein Beispiel eines Videocodierungssystems gemäß einer Ausführungsform dar.
    • 4A stellt eine Art und Weise zum herkömmlichen Schreiben und Lesen von Makroblöcken dar.
    • 4B stellt eine Art und Weise zum unrollierten Schreiben und Lesen von Makroblöcken dar.
    • 5 stellt einen Beispielprozess dar, der von einem Videodecodierungssystem verwendet wird, um Makroblöcke zu speichern und abzurufen.
    • 6 stellt einen Beispielprozess dar, der von einem Videocodierungssystem verwendet wird.
    • 7 stellt ein System gemäß einer Ausführungsform dar.
  • Ausführliche Beschreibung
  • Verweise in dieser Beschreibung auf „eine Ausführungsform“ bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristikum, das in Verbindung mit der Ausführungsform beschrieben wird, zumindest in einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit beziehen sich die Verwendungen des Ausdrucks „bei einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise immer auf die gleiche Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Charakteristika in einer oder mehr Ausführungsformen kombiniert werden.
  • Verschiedene Ausführungsformen verringern potentiell die Anzahl an Schreib- und Leseoperationen, die verwendet werden, um Referenzbilder zu schreiben bzw. zu lesen. Einige Ausführungsformen versuchen, die Referenzbilder verlustfrei zu komprimieren, und komprimierte Referenzbilder in Speicher zu speichern, damit sie entweder von einem Videocodierer oder einem Videodecodierer verwendet werden können. Für Bilder, die angefragt werden, von einem Videodecodierer gespeichert zu werden, wird ein umgedrehtes Adressschema verwendet, wobei Spaltenadressen zu Reihenadressen gemacht werden, und umgekehrt. Die komprimierten Bilder werden in Speicher gemäß dem umgedrehten Speicheradressschema gespeichert.
  • Um das Referenzbild, das in der umgedrehten Konfiguration gespeichert ist, von Speicher abzurufen, können eine oder mehr Reihen von Referenzbilddaten gelesen und dekomprimiert werden. Dekomprimierte Referenzbilddaten können in Speicher gespeichert werden. Wenn komprimierte Referenzbilddaten in Spalten gespeichert werden, aber in Reihen gelesen werden, können Teile von mehreren Reihen von Referenzbildern abgerufen werden. Teile von mehreren Reihen von Referenzbildern können in einem Speicher gespeichert werden, und für den Videodecodierer erneut zusammengesetzt werden. In einigen Fällen, wenn ein bestimmtes Pixel von einem Referenzbild von dem Videodecodierer angefragt wird, finden Lesezugriffe von Teilen von mehreren Reihen von Referenzbildern statt, bis das/die angefragte/n Pixel identifiziert ist/sind. Daten mit einer oder mehr Burstgrößen können abgerufen werden, um ein angefragtes Pixel abzurufen. Wenn zusätzlichen Datenpixel gelesen worden sind, können die zusätzlichen Datenpixel in Speicher für potentiell späteren Gebrauch gespeichert werden.
  • Für Bilder, die angefragt werden, dass sie von einem Videocodierer gespeichert werden, werden komprimierte Daten unrolliert gespeichert, wobei die komprimierten Daten an durchgängigen adressierbaren Speicherorten gespeichert werden. In einigen Fällen fragen Videocodierer ganze Makroblöcke von Daten an. Dementsprechend, wenn ein Videocodierer Abrufen eines Referenzmakroblocks anfragt, werden ganze komprimierte Makroblöcke von Daten angefragt, dass sie von durchgängigen Speicherorten in einem oder mehr Lesebursts abgerufen werden.
  • 1 zeigt ein Blockdiagramm eines Systems, in dem ein Videodecodierungssystem Makroblöcke in Speicher schreibt und Makroblöcke von Speicher abruft. Videodecodierer 102 soll Videodecodierung bei empfangenen Frames ausführen. Videodecodierer 102 kann jeden Videodecodierungsstandard anwenden, um Makroblöcke zu decodieren, wie u. a. MPEG-2 (ISO/IEC 13818-1 (2000)), MPEG-4, Teil 10 (ISO/IEC 14496-10 (2009)), sowie neu entstehende Videodecodierungsstandards, wie z. B. ITU-T H.265. Decodierte Makroblöcke können als eine Referenz beim Decodieren eines anderen Makroblocks verwendet werden.
  • Golomb-Codierer 104 soll Makroblöcke von Videodecodierer 102 empfangen. Golomb-Codierer 104 soll Golomb-Komprimierung von Makroblöcken ausführen. Golomb-Codierung wird beschrieben in Golomb, S.W., „Run-length Encodings,“ IEEE Transactions on Information Theory, IT (1966). Golomb-Codierung nähert sich den
    Komprimierungsleistungsfähigkeiten von Huffman-Codes an, in dem Maß, wie die Framegröße zunimmt. Komprimieren von decodierten Bildern vor dem Speichern in Speicher kann potentiell die Anzahl an Schreiboperationen von decodierten Bildern in Speicher verringern. In einigen Fällen können 4-Symbol-Golomb-Codierungen und -Decodierungen pro Taktzyklus stattfinden. Im Gegensatz dazu können andere verlustfreie Komprimierungsschemata Komprimierung eines Symbols pro multiplen Taktzyklus erzielen.
  • Techniken zur Ausführung von Golomb-Codierung sind beschrieben in U.S.-Patentanmeldung US 2011 / 0 317 759 A1 mit dem Titel „System, Verfahren und Computerprogrammartikel für Parameterabschätzung für verlustfreie Videokomprimierung“, Erfinder Thomas und Coulter, eingereicht am 25. Juni 2010 (Aktenzeichen des Anwalts P34530). In einigen Fällen kann eine starke Korrelation zwischen benachbarten Frames auftreten. Bei verschiedenen Ausführungsformen, bei Golomb-Codierung, wird ein Histogramm der Symbole des vorherigen Frames generiert, um die Anzahl an Bits in dem derzeitigen Frame nach verlustfreier Komprimierung vorherzusagen, wobei ein spezifischer Codierungsparameter angenommen wird. Iterieren durch alle der möglichen Codierungsparameter auf dem vorherigen Framehistrogramm kann einen optimalen Codierungsparameter ergeben, mit dem der derzeitige Frame komprimiert werden kann. Verwenden des vorherigen Frames als einen Prädiktor kann in hoher Komprimierungseffizienz resultieren. Ein Beispielprozess eines Golomb-Rice-Komprimierungsschemas ist wie folgt:
    1. 1. Generieren eines Histogramms der vorherigen Framesymbole, basierend auf einem gewählten Codierungsparameter, d. h. M=0 für Golomb. Ein Symbol ist der Fehlerwert Pixel(n) - Pixel(n-1).
    2. 2. Sortieren des Histogramms in absteigender Reihenfolge.
    3. 3. Zuteilen eines Golomb-Codes zu jeder Bin. Eine Bin in einem Histogramm ist jedes getrennte Symbol oder Symbolbereich, für den eine Zählung aufrechterhalten bleibt. Beispielsweise kann bei Pixeln, die Werte von 0 - 255 aufweisen, 0 eine erste Bin sein, 1 kann die nächste Bin sein, usw. Bei einem anderen Beispiel kann es mehrere Bins geben, wobei jede Bin einen Bereich von Pixelwerten abdeckt. Jede dieser Bins weist eine zugeteilte Zählung der Anzahl an Zeiten auf, wie oft die Werte innerhalb des Bereichs einer jeden Bin aufgetreten sind.
    4. 4. Multiplizieren der Anzahl an Einträgen in einer Bin mit dem jeweiligen zugeteilten Golomb-Code für jede Bin.
    5. 5. Die Summe dieser Produkte gibt eine Abschätzung der Anzahl an Bits, die erforderlich sind, um den derzeitigen Frame für ein spezifisches Codierungsparameter zu codieren.
    6. 6. Wiederholen von Items 1-5 für jeden Codierungsparameter und Auswählen des Codierungsparameters, der die geringste Anzahl an Gesamtbits ergibt. Beispielsweise kann es bei einem 8 Bit Pixelbeispiel unter Verwendung von Golomb-Codierung 8 Codierungsparameter geben, aus denen ausgewählt werden kann, d. h. M=0 bis M=7.
  • Golomb-Codierer 104 komprimiert jede Reihe eines Makroblocks und fragt das Schreiben der komprimierten Reihen in Speicher in einer umgedrehten Formation an. In einigen Fällen fragt Golomb-Codierer 104 an, dass die ganz links befindliche komprimierte Spalte eines jeden umgedrehten Makroblocks bei einer bekannten Adresse gespeichert wird, und sodann im Anschluss die verbliebenen komprimierten Spalten gespeichert werden. Im Anschluss daran ist Leseblock 110 in der Lage, willkürlich auf den Anfang eines jeden Makroblocks zuzugreifen, indem er willkürlich auf die ganz links befindliche komprimierte Spalte zugreift. Leseblock 110 liest den Rest eines jeden komprimierten Makroblocks nach der ersten komprimierten Spalte. In einigen Fällen fragt Golomb-Codierer 104 an, dass eine ganz links befindliche komprimierte Spalte eines jeden umgedrehten Makroblocks bei jeder 128. Spalte von Speicher gespeichert werden soll. Dadurch wird ermöglicht, dass willkürlich auf den Anfang eines jeden achten komprimierten Makroblocks zugegriffen werden kann. Andere Arten des Speicherns von Makroblöcken sind zulässig, vorausgesetzt, dass auf den Anfang einiger Makroblöcke willkürlich zugegriffen werden kann.
  • Golomb-Codierer 104 soll verlustfreie komprimierte Bilder an Schreibmusterblock 106 bereitstellen. Schreibmusterblock 106 soll Golombkomprimierte Makroblöcke in Speicher 108 auf eine Art und Weise schreiben, die unter Bezugnahme auf 2B beschrieben ist. Bei einigen Ausführungsformen soll Schreibmusterblock 106 komprimierte Bilder in Speicher 108 schreiben, indem er Reihen von Pixeln als Spalten von Pixeln anstatt als Reihen schreibt. Mit anderen Worten können Reihen- und Spaltenspeicheradressen reversiert werden, sodass Reihenadressen als Spaltenadressen verwendet werden, und umgekehrt. Speicher 108 kann ein Speicher vom Typ DDR (double data rate) sein, obwohl andere Typen von externem Speicher mit einer Minimumleseburstgröße verwendet werden können. In einigen Fällen ist Speicher 108 innerhalb der gleichen integrierten Schaltung wie Videodecodierer 102 gebildet. In anderen Fällen ist Speicher 108 Teil einer getrennten integrierten Schaltung von Videodecodierer 102.
  • In einigen Fällen kann das Schreiben von komprimierten Bildern unter Verwendung des umgedrehten Adressschemas weniger Schreiboperationen als das Schreiben von komprimierten Bildern über Reihen verwenden. Für einige Speicher, wie z. B. DDR, finden Schreiboperationen in 32 Byte Erhöhungen statt. Das Schreiben von komprimierten Makroblöcken in umgedrehter Konfiguration kann Füllinhalt verringern, der in Speicher geschrieben wird.
  • Ein Beispiel von Komprimierung und Speicherung von decodierten Makroblöcken ist wie folgt. Bei einigen Implementierungen können acht (8) decodierte Makroblöcke unter Verwendung von Golomb-Codierung gepuffert und komprimiert werden. Infolge der Komprimierung sind sechszehn (16) Datenreihen verfügbar. Jede Datenreihe kann verdoppelt werden, sodass die Anzahl an Reihen zweiunddreißig (32) ausmacht. Beispielsweise kann jede Datenreihe erneut geschrieben werden, sodass jede Reihe zwei Datenreihen beinhaltet, und die Anzahl an Spalten wird verringert. Beispielsweise kann eine 128 Byte Leitung, die zu 64 Bytes komprimiert wurde, als 2 Reihen von 32 Bytes gesichert werden. Anschließend werden die Daten im Speicher gespeichert, indem Reihen- und Spaltenadressen reversiert werden.
  • Leseblock 110 soll komprimierte Makroblöcke aus Speicher 108 lesen. Videodecodierer 102 kann Leseblock 110 anfragen, einen bestimmten Makroblock oder bestimmtes Pixel von Speicher 108 auszulesen. Komprimierte Makroblöcke werden auf eine Art und Weise gespeichert, die unter Bezugnahme auf 2B beschrieben ist. Komprimierte Makroblöcke sind mit reversierten Reihen- und Spaltenadressen gespeichert, allerdings können Abrufe von Speicher über Reihen stattfinden. Bei einigen Ausführungsformen liest Leseblock 110 komprimierte Makroblöcke aus Speicher 108 aus, unter Verwendung von Lesebursts über Reihen, und stellt Teile einer jeden Spalte an Golomb-Decodierer 112 bereit. Leseblock 110 ist in der Lage, direkt auf jede Spaltenposition innerhalb einer Reihe zuzugreifen. Für jeden Leseburst nach dem ersten Leseburst ruft Leseblock 110 erneut die zuletzt direkt zugreifbare Spaltenposition für eine Reihe auf, und berechnet die Adresse dahingehend, dass sie zu dem zuletzt direkt zugreifbaren Ort geht und von dort aus startet. Auf ein Pixel, auf das zugegriffen werden soll, wird zugegriffen, indem auf zumindest eine Spalte von komprimierten Daten zugegriffen wird, die das Pixel beinhalten, auf das zugegriffen werden soll.
  • Das Schreiben von Makroblöcken in einer umgedrehten Konfiguration kann potentiell eine Anzahl an Leseoperationen verringern, wenn die Makroblöcke darauffolgend von Speicher abgerufen werden. Wenn komprimierte Datenspalten eine ähnliche Länge aufweisen, werden Lesebursts mit Füllern, d. h. nichtkomprimierten Daten, verringert. Abgerufene Teile von Makroblöcken werden in einem Cache gespeichert, und diese abgerufenen Teile können als Makroblöcke rekonstruiert oder für späteren Gebrauch gespeichert werden.
  • In Fällen, in denen ein oder mehr komprimierte Makroblöcke im Wesentlichen länger ist als die anderen komprimierten Makroblöcke, kann das Schema von 2A verwendet werden. In einigen Fällen erkennt Golomb-Codierer 104, dass ein komprimierter Makroblock mehr Lese- und Schreibineffizienz verursacht, als wenn er unkomprimiert gespeichert worden wäre, und in solch einem Fall kann Golomb-Codierer 104 anfragen, den Makroblock unkomprimiert in Speicher zu speichern.
  • Golomb-Decodierer 112 soll Golomb-Decodierung bei jeden abgerufenen komprimierten Daten von Speicher 108 ausführen. Golomb-Decodierung wird beschrieben in Golomb, S.W., „Run-length Encodings,“ IEEE Transactions on Information Theory, IT (1966). Golomb-Decodierer 112 soll decodierte Pixel an Speicher 114 bereitstellen. Geeignete Techniken zur Ausführung von Golomb-Decodierung sind beschrieben in U.S.-Patentanmeldung Seriennummer 12/823,637, mit dem Titel „System, Verfahren und Computerprogrammartikel für Parameterabschätzung für verlustfreie Videokomprimierung“, Erfinder Thomas und Coulter, eingereicht am 25. Juni 2010 (Aktenzeichen des Anwalts P34530).
  • Speicher 114 speichert Golomb-decodierte Teile von Makroblöcken. Bei einigen Ausführungsformen ist Speicher 114 als ein Cache implementiert, obwohl andere Typen von Speicher verwendet werden können, um Teile von Makroblöcken zu speichern. Videodecodierer 102 kann ein oder mehr Pixel in einem Makroblock von Speicher 108 anfragen. Rekonstruktionslogik 115 bestimmt, ob Speicher 114 den Makroblock oder Pixel speichert, der/das von Videodecodierer 102 angefragt wurde. Der/das angefragte Makroblock oder Pixel kann als ein Referenzmakroblock oder -pixel bei Videodecodierung verwendet werden. Rekonstruktionslogik 115 fragt Leseblock 110 an, eine nächste Reihe von Speicher 108 zu lesen, bis das angefragte Pixel abgerufen ist. In einigen Fällen ruft ein einzelner DDR-Burstlesezugriff 16 Reihen von Speicher 108 ab, angefangen bei der zuletzt direkt zugreifbaren Spalte oder dem zuletzt zugegriffenen Ort für diesen Satz an Reihen. Ein 32 Byte Leseburst kann sich in 32 Reihen übersetzen, die zu 16 Reihen gemacht werden können, indem jede Leitung verdoppelt wird.
  • Das Folgende ist ein Beispiel einer Art und Weise zum Abrufen von Pixeln von einem Speicher, wenn die Pixel von einem Decodierer verwendet werden. Daten sind in umgedrehtem Format gespeichert, wobei Spalten- und Reihenadressen reversiert sind. Sechszehn (16) Datenreihen werden abgefragt. Wenn die angefragten Pixel nicht in Speicher gespeichert sind, finden zusätzliche Reihenlesezugriffe statt, angefangen bei der zuletzt direkt zugreifbaren Spalte, oder angefangen nach dem vormals zugegriffenen Ort eines Satzes an abgerufenen Reihen. Die Lesedaten werden Golomb-dekomprimiert. Wenn die angefragte Anzahl an Pixelspalten in dem neuesten Abruf beinhaltet ist, sodass die angefragten Pixel in dem neuesten Abruf beinhaltet sind, dann werden keine zusätzlichen Lesezugriffe ausgeführt. Außerdem, wenn die angefragten Pixel in dem neuesten Abruf beinhaltet sind, dann wird die zuletzt zugegriffene Adresse für jede Reihe gespeichert, sodass darauffolgende Abrufe keine vormals gelesenen Daten lesen.
  • 2A zeigt mehrere Beispiele, in denen Pixel in Bursts entlang Reihen von Speicherorten aus Speicher gelesen werden. Bei diesem Beispiel werden Blöcke entlang von Reihen gespeichert. Feste Streifen stellen Blöcke dar, die als komprimierte Daten gespeichert sind. Jeder Makroblock ist C Pixel mal B Pixel. Eine Minimumgröße eines jeden Leseburst ist als ein Rechteck gezeigt. In einigen Fällen ist der Minimumleseburst 32 Byte. Wenn mehr als ein Leseburst verwendet wird, um komprimierte Daten eines Blocks festzuhalten, sind einige der Daten, die in dem zweiten Leseburst gelesen werden, nicht Teil der komprimierten Daten. Dementsprechend können Daten, die nicht Teil der komprimierten Daten sind, als verschwendete Bandbreite erachtet werden.
  • 2B stellt eine Art und Weise dar, in der komprimierte Daten in Speicher gespeichert werden und von dort abgerufen werden, wenn komprimierte Daten so gespeichert werden, dass Spalten- und Reihenadressen reversiert sind. Eine feste Leitung stellt eine Leitung von komprimierten Pixeln in einem Makroblock dar. In einigen Fällen kann auf Anfänge einer jeden Spalte von komprimierten Daten zugegriffen werden, im Gegensatz zu der Mitte oder dem Ende der Spalte. Lesebursts finden statt über eine Reihe von Speicheradressen, mit zunehmenden Spaltenspeicheradressen. Da jeder komprimierte Makroblock in einer Spalte gespeichert wird, wird ein Teil von zumindest einer Spalte von gespeicherten komprimierten Daten in jedem Leseburst abgerufen. Teile einer jeden Spalte eines komprimierten Makroblocks können dekomprimiert, gespeichert und später erneut zusammengesetzt werden, in Form eines unkomprimierten Makroblocks.
  • 2B stellt ebenfalls einen Vergleich zwischen abgerufenen Daten dar, die nicht Teil von komprimierten Daten sind, wenn Daten in Reihen gespeichert und abgerufen werden (2A), im Gegensatz zu Spalten ( 2B). Im Vergleich dazu werden komprimierte Daten unter Verwendung von weniger Lesebursts abgerufen, wenn Daten unter Verwendung von Techniken von 2B gespeichert und abgerufen werden, im Gegensatz zu den Techniken von 2A.
  • 3 stellt ein Beispiel eines Videocodierungssystems gemäß einer Ausführungsform dar. Videocodierer 302 soll Videocodierung bei Blöcken eines Bildes ausführen. Jegliche Videocodierungsstandards können verwendet werden, wie u. a. MPEG-2 (ISO/IEC 13818-1 (2000)), MPEG-4, Teil 10 (ISO/IEC 14496-10 (2009)), sowie neu entstehende Videodecodierungsstandards, wie z. B. ITU-T H.265. Videocodierer 302 soll codierte Makroblöcke an Golomb-Codierer 304 bereitstellen. Golomb-Codierer 304 soll Golomb-Codierung bei codierten Makroblöcken ausführen. Golomb-Codierer 304 kann ähnliche Techniken wie Golomb-Codierer 104 verwenden, um Golomb-Komprimierung auszuführen. Golomb-Codierer 304 soll komprimierte YUV-Rohdaten ausgeben.
  • Schreibmusterblock 306 soll Golomb-codierte Makroblöcke in Speicher 308 auf eine Art und Weise schreiben, die unter Bezugnahme auf 4B beschrieben ist. Bei einigen Ausführungsformen soll Schreibmusterblock 306 komprimierte Daten in Speicher 308 an durchgängige adressierbare Speicherorte schreiben. In einigen Fällen ist Speicher 308 innerhalb der gleichen integrierten Schaltung wie Videocodierer 302 gebildet. In anderen Fällen ist Speicher 308 Teil einer getrennten integrierten Schaltung von Videocodierer 302.
  • Lesemusterblock 310 soll codierte Daten von Speicher 308 auslesen, indem er Lesezugriffe auf durchgängige Speicherorte anfragt, bis ein Makroblock gelesen wird, der von Videocodierer 302 angefragt wird. Golomb-Decodierer 312 soll Golomb-Decodierung bei den komprimierten YUV-Daten unter Verwendung ähnlicher Techniken anwenden, die unter Bezugnahme auf Golomb-Decodierer 112 beschrieben sind. Golomb-Decodierer 312 soll Makroblöcke an Videocodierer 302 bereitstellen.
  • 4A stellt eine Art und Weise zum herkömmlichen Schreiben von Makroblöcken dar. Herkömmlicherweise werden Pixel eines Makroblocks Zig-Zag-artig in Speicher geschrieben und daraus gelesen. Für einen Makroblock, der C mal R Pixel bemessen ist, werden Pixel gelesen, beginnend bei einem Zugriffspunkt über eine Reihe des Makroblocks und sodann über eine Reihe des nächsten Makroblocks.
  • 4B stellt eine Art und Weise zum unrollierten Schreiben von Makroblöcken dar. In diesem Beispiel werden C mal R Pixel eines Makroblocks in Speicher an durchgängigen adressierbaren Speicherorten gespeichert und von dort abgerufen, im Gegensatz zu in einer Makroblockstruktur von 4A. Mehrere Lesebursts können verwendet werden, um den komprimierten Makroblock zu lesen, der von Videocodierer 302 angefragt wurde. 4B stellt dar, dass komprimierte Makroblöcke sich unter Umständen nicht über Daten eines gesamten Leseburst erstrecken können. Dementsprechend können einige abgerufene Daten unter Umständen keine nützlichen Daten beinhalten. Lesemusterblock 310 ruft das oberste linke Pixel des komprimierten Makroblocks ab, und fährt sodann mit dem Lesen fort, bis der gesamte komprimierte Makroblock abgerufen wurde. Golomb-Codierer 104 kann Speichern des Anfangs eines jeden Makroblocks an Orten anfragen, auf die direkt von Lesemusterblock 310 zugegriffen werden kann.
  • Für eine umgedrehte Konfiguration, wenn irgendeine komprimierte Leitung wesentlich länger ist, als andere komprimierte Leitungen, dann gibt es potentiell einen überflüssigen Rest, wenn der Teil der komprimierten Leitung gelesen wird, da Daten, die in einem Leseburst gelesen werden, um das Endstück einer Leitung abzurufen, meist unnütze Daten beinhalten. Im Gegensatz dazu, bei der unrollierten Konfiguration, während dem Bereitstellen von willkürlichem Reihenzugriff, gibt es keine verschwendete Bandbreite in keinem Lesezugriff, außer potentiell in dem letzten Lesezugriff, wo Füllmaterial gelesen werden kann. Lesebursts von 32 Bytes durchgängiger Pixel fahren fort, bis Abruf eines gesamten gewünschten Makroblocks stattfindet. Für einen 16×16 unrollierten Makroblock, der nicht komprimiert ist, werden 16 Spalten und 2 Reihen in einem einzelnen Leseburst gelesen.
  • 5 stellt einen Beispielprozess dar, der von einem Videodecodierungssystem verwendet wird, um Makroblöcke zu speichern und abzurufen.
  • Block 502 beinhaltet Golomb-komprimierende Makroblöcke.
  • Block 504 beinhaltet das Schreiben Golomb-komprimierter Makroblöcke in adressierbare Speicherorte unter Verwendung von Spaltenadressen als Reihenadressen, und umgekehrt. Beispielsweise können Techniken, die unter Bezugnahme auf 2B beschrieben werden, zum Speichern von Makroblöcken in Speicher verwendet werden.
  • Block 506 beinhaltet das Abrufen von Golomb-komprimierten Makroblöcken von Speicher und Golomb-Dekomprimieren der Makroblöcke. Auf Teile von Speicher kann unter Verwendung von Lesebursts über die gleiche Reihenspeicheradresse zugegriffen werden, und die mehrere Spalten umfassen. Da Makroblöcke in Spalten gespeichert werden, allerdings über Reihen abgerufen werden, können Teile von mehreren Makroblöcken in einem einzelnen Leseburst abgerufen werden. Die Teile können Golomb-decodiert und gespeichert werden, sodass Makroblöcke aus den Teilen erneut zusammengesetzt werden können. Anschließend ist ein Pixel oder Makroblock für den Videodecodierer verfügbar.
  • 6 stellt einen Beispielprozess dar, der von einem Videocodierungssystem verwendet wird.
  • Block 602 beinhaltet das Anwenden von Golomb-Komprimierung bei Makroblöcken, die gemäß einem Videostandard codiert worden sind.
  • Block 604 beinhaltet das Speichern von Golomb-komprimierten Makroblöcken in Speicher an konsekutiven Speicherorten. Beispielsweise werden Makroblöcke in Speicher an durchgängigen adressierbaren Speicherorten gespeichert.
  • Block 606 beinhaltet das Abrufen von gespeicherten Golomb-komprimierten Makroblöcken von Speicher von konsekutiven adressierbaren Speicherorten. Ein oder mehr Lesebursts können stattfinden, um Golombkomprimierte Makroblöcke von Speicher abzurufen.
  • 7 stellt ein System gemäß einer Ausführungsform dar. System 700 kann Host-System 702 und Display 722 beinhalten. Computersystem 700 kann in einem Handheld-PC, Mobiltelefon, einer Set-Top-Box oder jedem EDV-Gerät implementiert sein. Host-System 702 kann Chipsatz 705, Prozessor 710, Host-Speicher 712, Speicher 714, Grafik-Subsystem 715 und Funkgerät 720 beinhalten. Chipsatz 705 kann Interkommunikation zwischen Prozessor 710, Host-Speicher 712, Speicher 714, Grafik-Subsystem 715 und Funkgerät 720 bereitstellen. Beispielsweise kann Chipsatz 705 einen Speicheradapter (nicht dargestellt) beinhalten, der imstande ist, Interkommunikation mit Speicher 714 bereitzustellen. Beispielsweise kann der Speicheradapter imstande sein, mit Speicher 714 gemäß irgendeinem der folgenden Protokolle zu kommunizieren: Small Computer Systems Interface (SCSI), Fibre Channel (FC) und/oder Serial Advanced Technology Attachment (S-ATA).
  • Bei verschiedenen Ausführungsformen findet das Speichern und Abrufen von decodiertem oder codiertem Video in/von Speicher gemäß hierin beschriebener Techniken statt.
  • Prozessor 710 kann als CISC-(Complex Instruction Set Computer)- oder RISC-(Reduced Instruction Set Computer)-Prozessor, Mehrkernprozessor oder jeder andere Mikroprozessor oder Hauptprozessor implementiert sein.
  • Host-Speicher 712 kann als ein flüchtiges Speichergerät implementiert sein, wie z. B., aber nicht beschränkt auf, einen Direktzugriffsspeicher (Random Access Memory, RAM), dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) oder statischen RAM (Static RAM, SRAM). Speicher 714 kann als ein Permanentspeichergerät implementiert sein, u. a. ein magnetisches Diskettenlaufwerk, optisches Diskettenlaufwerk, Bandlaufwerk, ein internes Speichergerät, ein angeschlossenes Speichergerät, Flash-Memory, batteriegepufferter SDRAM (synchroner DRAM, synchronous DRAM), und/oder ein Speichergerät, auf das über ein Netzwerk zugegriffen werden kann.
  • Grafik-Subsystem 715 kann eine Verarbeitung von Bildern, wie z. B. Standbildern oder Videos, zur Anzeige durchführen. Eine analoge oder digitale Schnittstelle kann verwendet werden, um Grafik-Subsystem 715 und Display 722 kommunikativ zu koppeln. Beispielsweise kann die Schnittstelle irgendeine einer High-Definition Multimediaschnittstelle, ein DisplayPort, eine drahtlose HDMI und/oder drahtlose HD konforme Techniken sein. Grafik-Subsystem 715 könnte in Prozessor 710 oder Chipsatz 705 integriert sein. Grafik-Subsystem 715 kann eine eigenständige Karte sein, die kommunikativ mit Chipsatz 705 gekoppelt ist.
  • Funkgerät 720 kann ein oder mehr Funkgeräte beinhalten, die imstande sind, Signale gemäß anwendbaren Drahtlosstandards zu übertragen und zu empfangen, wie z. B., aber nicht beschränkt auf, irgendeine Version von IEEE 802.11 und IEEE 802.16.
  • Obwohl nicht dargestellt, kann System 700 Zugriff auf Eingabegeräte beinhalten, wie z. B. ein Sensorbildschirm, Maus und Kamera.
  • Die hierin beschriebenen Grafik- und/oder Videoverarbeitungs-Techniken können in verschiedenen Hardware-Architekturen implementiert werden. Beispielsweise kann Grafik- und/oder Videofunktionalität innerhalb eines Chipsatzes integriert sein. Alternativ kann ein separater Grafik- und/oder Videoprozessor verwendet werden. Als noch eine weitere Ausführungsform können die Grafik- und/oder Videofunktionen durch einen Universalprozessor, einschließlich ein Mehrkernprozessor, implementiert werden. Bei einer weiteren Ausführungsform können die Funktionen in einem Unterhaltungselektronikgerät implementiert sein.
  • Ausführungsformen der vorliegenden Erfindung können als irgendeine Form oder eine Kombination der Folgenden implementiert sein: ein oder mehr Mikrochips oder integrierte Schaltungen, die mittels eines Motherboards verbunden sind, fest verdrahtete Logik, von einem Speichergerät gespeicherte und von einem Mikroprozessor ausgeführte Software, Firmware, ein anwendungsspezifischer integrierter Schaltkreis (application specific integrated circuit, ASIC) und/oder ein Field Programmable Gate Array (FPGA). Der Begriff „Logik“ kann beispielsweise Software oder Hardware und/oder Kombinationen von Software und Hardware beinhalten.
  • Ausführungsformen der vorliegenden Erfindung können beispielsweise als ein Computerprogramm-Produkt bereitgestellt sein, das ein oder mehr maschinenlesbare Medien mit darauf gespeicherten maschinenausführbaren Befehlen beinhalten kann, die, wenn sie von einer oder mehr Maschinen, wie z. B. einem Computer, einem Netzwerk von Computern oder anderen elektronischen Geräten ausgeführt werden, dazu führen können, dass die eine oder die mehreren Maschinen Operationen in Übereinstimmung mit Ausführungsformen der vorliegenden Erfindung ausführen. Ein maschinenlesbares Medium kann beinhalten, ist aber nicht beschränkt auf, Disketten, optische Disks, CD-ROMs (Compact Disc-Read Only Memories), magnetooptische Disks, ROMs (Read Only Memories), RAMs (Random Access Memories), EPROMs (Erasable Programmable Read Only Memories), EEPROMs (Electrically Erasable Programmable Read Only Memories), magnetische oder optische Karten, Flash-Memory oder andere Art von Medien / maschinenlesbares Medium, das zum Speichern maschinenausführbarer Befehle geeignet ist.
  • Die Zeichnungen und die vorstehende Beschreibung gaben Beispiele der vorliegenden Erfindung. Obwohl sie als eine Anzahl ganz verschiedener funktionaler Objekte dargestellt sind, ist es für Fachleute selbstverständlich, dass ein oder mehr solcher Elemente sehr wohl zu einzelnen funktionalen Elementen kombiniert werden können. Alternativ können bestimmte Elemente in mehrere funktionale Elemente geteilt werden. Elemente aus einer Ausführungsform können einer weiteren Ausführungsform hinzugefügt werden. Beispielsweise können hierin beschriebene Reihenfolgen von Prozessen verändert werden und sind nicht auf die hierin beschriebene Art und Weise beschränkt. Außerdem müssen die Handlungen eines jeden Ablaufdiagramms weder in der gezeigten Reihenfolge implementiert sein, noch müssen alle Vorgänge unbedingt ausgeführt werden. Ebenfalls können diejenigen Vorgänge, die nicht von anderen Vorgängen abhängen, parallel mit den anderen Vorgängen ausgeführt werden. Der Umfang der vorliegenden Erfindung ist jedoch keineswegs durch diese spezifischen Beispiele beschränkt. Zahlreiche Variationen, entweder ausdrücklich in der Beschreibung gegeben oder nicht, wie z. B. Unterschiede in Struktur, Abmessung und Verwendung von Material, sind möglich. Der erfindungsgemäße Umfang ist zumindest so breit, wie von den folgenden Ansprüchen gegeben.

Claims (15)

  1. Computerimplementiertes Verfahren (500, 600), umfassend: Ausführen (502, 602) von Golomb-Komprimierung bei Bilddaten; Speichern (504, 604) von Golomb-komprimierten Bilddaten in Speicher in entweder ersten oder zweiten Konfigurationen, basierend darauf, ob die Bilddaten zur Speicherung von einem Videodecodierer (102) oder einem Videocodierer (302) angefragt werden; Anfragen von Abruf (506, 606) von Bilddaten von dem Speicher, wobei der Abruf darauf basiert, ob die Bilddaten von einem Videodecodierer oder -codierer angefragt werden; Ausführen von Golomb-Dekomprimierung bei abgerufenen Bilddaten; und selektiv Übertragen der dekomprimierten Bilddaten an einen Videodecodierer oder -codierer in Antwort darauf, dass die dekomprimierten Bilddaten Bilddaten beinhalten, die von einem Videodecodierer oder -codierer angefragt worden sind, wobei die komprimierten Bilddaten in der ersten Konfiguration in den Speicher geschrieben werden, wobei Reihen- und Spaltenadressen reversiert sind, in Antwort darauf, dass die Bilddaten von einem Videodecodierer (102) bereitgestellt werden, und wobei die komprimierten Bilddaten in der zweiten Konfiguration in den Speicher in durchgängigen Speicheradressen geschrieben werden, in Antwort darauf, dass die Bilddaten von einem Videocodierer (302) bereitgestellt werden.
  2. Verfahren (500, 600) nach Anspruch 1, weiter umfassend: in Antwort auf Anfrage von einem Videodecodierer (102) nach einem Pixel, Bestimmen, ob die abgerufenen Daten das angefragte Pixel beinhalten und Anfragen eines anderen Datenlesezugriffs von dem Speicher in Antwort darauf, dass die abgerufenen Daten das angefragte Pixel nicht beinhalten.
  3. Verfahren (500, 600) nach Anspruch 2, weiter umfassend: Ausführen von Golomb-Dekomprimierung bei abgerufenen Bilddaten von dem anderen Datenlesezugriff; Speichern von dekomprimierten abgerufenen Daten in einem zweiten Speicher; und Bereitstellen von gespeicherten dekomprimierten abgerufenen Daten an einen Videodecodierer (102).
  4. Verfahren (500, 600) nach Anspruch 1, wobei das Anfragen von Abruf von Bilddaten von dem Speicher das Anfragen von Abruf von Bilddaten durch Lesen einer oder mehr Datenreihen in Antwort darauf, dass die Bilddaten von einem Videodecodierer (102) angefragt worden sind, umfasst, wobei jede abgerufene Reihe Teile von mehreren gespeicherten komprimierten Bilddaten beinhaltet.
  5. Verfahren (500, 600) nach Anspruch 1, wobei das Anfragen von Abruf von Bilddaten von dem Speicher das Anfragen von Abruf von Bilddaten von konsekutiven Speicherorten in Antwort darauf, dass die Bilddaten von einem Videocodierer (302) angefragt worden sind, umfasst.
  6. Verfahren (500, 600) nach Anspruch 1, wobei: die Bilddaten einen Makroblock umfassen, Ausführen von Golomb-Komprimierung bei Bilddaten das Ausführen von Golomb-Komprimierung bei jeder Reihe des Makroblocks umfasst, wenn die komprimierten Bilddaten in einer ersten Konfiguration gespeichert werden, wird jede komprimierte Reihe des Makroblocks in einer Spalte gespeichert, und wenn die komprimierten Bilddaten in einer zweiten Konfiguration gespeichert werden, werden komprimierte Reihen des Makroblocks an konsekutiven Orten gespeichert.
  7. Vorrichtung (100, 300), umfassend: eine Bildquelle (102, 302), um Bilddaten bereitzustellen; Golomb-Komprimierungslogik (104, 304), um Golomb-Komprimierung bei den Bilddaten anzuwenden; einen Speicher (108, 308); und Schreiblogik (106, 306), um die komprimierten Bilddaten in den Speicher zu schreiben, wobei eine Art und Weise, auf die die Schreiblogik die komprimierten Daten in den Speicher schreiben soll, teilweise darauf basiert, ob die Bilddaten von einem Videocodierer (302) oder einem Videodecodierer (102) sind, wobei die Schreiblogik die komprimierten Bilddaten in den Speicher schreiben soll, wobei Reihen- und Spaltenadressen reversiert sind, in Antwort darauf, dass die Bilddaten von einem Videodecodierer bereitgestellt werden, und wobei die Schreiblogik die komprimierten Bilddaten in den Speicher in durchgängigen Speicheradressen schreiben soll, in Antwort darauf, dass die Bilddaten von einem Videocodierer bereitgestellt werden.
  8. Vorrichtung (100, 300) nach Anspruch 7, wobei die Bildquelle entweder den Videocodierer (302) oder den Videodecodierer (102) umfasst.
  9. Vorrichtung (100, 300) nach Anspruch 7, weiter umfassend: Leselogik (110, 310), um gespeicherte Bilddaten von dem Speicher abzurufen, wobei die Leselogik gespeicherte Bilddaten auf eine Art und Weise abrufen soll, die teilweise darauf basiert, ob die Bilddaten von einem Videodecodierer (102) oder -codierer (302) angefragt werden und einen Golomb-Decodierer (112, 312), um Golomb-Decodierung bei den abgerufenen gespeicherten Bilddaten anzuwenden.
  10. Vorrichtung (100, 300) nach Anspruch 9, weiter umfassend: einen zweiten Speicher (114), um decodierte abgerufene gespeicherte Bilddaten zu speichern, und um decodierte abgerufene Daten an den Videodecodierer bereitzustellen, in Antwort darauf, dass die decodierten Bilddaten Bilddaten beinhalten, die von dem Videodecodierer angefragt worden sind und Rekonstruktionslogik (115), um zu bestimmen, ob der zweite Speicher angefragte Bilddaten beinhaltet, wobei die Leselogik einen anderen Datenlesezugriff von dem Speicher anfragen soll, in Antwort darauf, dass die abgerufenen Daten die angefragten Bilddaten nicht beinhalten.
  11. Vorrichtung nach Anspruch 9, wobei die Leselogik (110, 310) zumindest eine Reihe von adressierbaren Speicherorten lesen soll, in Antwort darauf, dass die Daten von dem Videodecodierer (102) angefragt worden sind.
  12. Vorrichtung (100, 300) nach Anspruch 9, wobei die Leselogik (110, 310) konsekutive adressierbare Speicherorte lesen soll, in Antwort darauf, dass die Daten von dem Videocodierer (302) angefragt worden sind.
  13. System (702), umfassend: ein Display-Gerät (722); eine Funkschnittstelle (720); und ein Videoverarbeitungssystem (715), das kommunikativ mit dem Display-Gerät und der Funkschnittstelle gekoppelt ist, wobei das Videoverarbeitungssystem umfasst: entweder einen Videocodierer (302) oder einen Videodecodierer (102), um Bilddaten bereitzustellen, Golomb-Komprimierungslogik, um Golomb-Komprimierung bei den Bilddaten anzuwenden, einen Speicher (108, 308), Schreiblogik (106, 306), um die komprimierten Bilddaten in den Speicher zu schreiben, wobei eine Art und Weise, auf die die Schreiblogik die komprimierten Daten in den Speicher schreiben soll, teilweise darauf basiert, ob die Bilddaten von einem Videocodierer oder einem Videodecodierer sind, Leselogik (110, 310), um gespeicherte Bilddaten von dem Speicher abzurufen, wobei die Leselogik gespeicherte Bilddaten auf eine Art und Weise abrufen soll, die teilweise darauf basiert, ob die Bilddaten von einem Videodecodierer oder -codierer angefragt werden, einen Golomb-Decodierer (112, 312), um Golomb-Decodierung bei den abgerufenen gespeicherten Bilddaten anzuwenden, einen zweiten Speicher (114), um decodierte abgerufene gespeicherte Bilddaten zu speichern, und um decodierte abgerufene gespeicherte Bilddaten an entweder den Videocodierer oder - decodierer bereitzustellen, in Antwort darauf, dass die decodierten Bilddaten Bilddaten beinhalten, die von dem Videocodierer oder - decodierer angefragt worden sind, und Rekonstruktionslogik (115), um zu bestimmen, ob der zweite Speicher angefragte Bilddaten beinhaltet, wobei die Leselogik einen anderen Datenlesezugriff von dem Speicher anfragen soll, in Antwort darauf, dass die abgerufenen Daten die angefragten Bilddaten nicht beinhalten, wobei die Schreiblogik die komprimierten Bilddaten in den Speicher schreiben soll, wobei Reihen- und Spaltenadressen reversiert sind, in Antwort darauf, dass die Bilddaten von einem Videodecodierer (102) bereitgestellt werden, und wobei die Schreiblogik die komprimierten Bilddaten in den Speicher in durchgängigen Speicheradressen schreiben soll, in Antwort darauf, dass die Bilddaten von einem Videocodierer (302) bereitgestellt werden.
  14. System (702) nach Anspruch 13, wobei die Leselogik (110, 310) zumindest eine Reihe von adressierbaren Speicherorten lesen soll, in Antwort darauf, dass die Daten von einem Videodecodierer angefragt worden sind.
  15. System (702) nach Anspruch 13, wobei die Leselogik konsekutive adressierbare Speicherorte lesen soll, in Antwort darauf, dass die Daten von einem Videocodierer angefragt worden sind.
DE102011100936.5A 2010-05-24 2011-05-09 Techniken zum Speichern und Abrufen von Pixeldaten Active DE102011100936B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/785,946 2010-05-24
US12/785,946 US8971413B2 (en) 2010-05-24 2010-05-24 Techniques for storing and retrieving pixel data

Publications (3)

Publication Number Publication Date
DE102011100936A1 DE102011100936A1 (de) 2011-12-01
DE102011100936A9 DE102011100936A9 (de) 2012-08-02
DE102011100936B4 true DE102011100936B4 (de) 2018-10-31

Family

ID=44279333

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102011100936.5A Active DE102011100936B4 (de) 2010-05-24 2011-05-09 Techniken zum Speichern und Abrufen von Pixeldaten

Country Status (5)

Country Link
US (1) US8971413B2 (de)
CN (1) CN102263946B (de)
DE (1) DE102011100936B4 (de)
GB (1) GB2480747B (de)
WO (1) WO2011149751A2 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8971413B2 (en) 2010-05-24 2015-03-03 Intel Corporation Techniques for storing and retrieving pixel data
US9319880B2 (en) * 2010-09-15 2016-04-19 Intel Corporation Reformatting data to decrease bandwidth between a video encoder and a buffer
CN104956671B (zh) * 2012-12-18 2018-06-01 英特尔公司 视频帧重建
US8879858B1 (en) 2013-10-01 2014-11-04 Gopro, Inc. Multi-channel bit packing engine
US11036827B1 (en) * 2017-10-17 2021-06-15 Xilinx, Inc. Software-defined buffer/transposer for general matrix multiplication in a programmable IC
CN108961147B (zh) * 2018-06-11 2022-12-13 北京集创北方科技股份有限公司 一种数据处理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561464A (en) * 1995-03-20 1996-10-01 Daewoo Electronics Co., Ltd. Method and apparatus for encoding a video signal employing transform and classified vector quantization techniques
WO2001026056A1 (en) 1999-10-01 2001-04-12 Koninklijke Philips Electronics N.V. Storing and retrieving data
US6272180B1 (en) 1997-11-21 2001-08-07 Sharp Laboratories Of America, Inc. Compression and decompression of reference frames in a video decoder
WO2011162964A2 (en) * 2010-06-25 2011-12-29 Intel Corporation System and method and computer program product for parameter estimation for lossless video compression

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT8368002A0 (it) * 1983-09-29 1983-09-29 Sip Codificatore decodificatore dedicato alla trasmissione e o ricezione di immagini televisive su canale numerico a bassa velocita
GB9201856D0 (en) 1992-01-29 1992-03-18 British Telecomm Method of forming a template
US5978509A (en) * 1996-10-23 1999-11-02 Texas Instruments Incorporated Low power video decoder system with block-based motion compensation
KR100239349B1 (ko) * 1996-12-20 2000-01-15 구자홍 역이산 코사인 변환기의 데이타 포멧 변환 회로
JPH10207868A (ja) 1997-01-21 1998-08-07 Sharp Corp 2次元配列転置回路
US6304607B1 (en) 1997-03-18 2001-10-16 Texas Instruments Incorporated Error resilient video coding using reversible variable length codes (RVLCS)
JP2000115782A (ja) 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
JP2000115770A (ja) 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法
IL129203A (en) 1999-03-28 2002-07-25 Univ Ramot System and method for compressing figures
KR100618972B1 (ko) 1999-08-02 2006-09-01 삼성전자주식회사 가변장 코딩 방법 및 장치
US6882750B2 (en) 2000-05-02 2005-04-19 Zaxel Systems, Inc. Fast loss less image compression system based on neighborhood comparisons
US8374237B2 (en) 2001-03-02 2013-02-12 Dolby Laboratories Licensing Corporation High precision encoding and decoding of video images
US6650784B2 (en) 2001-07-02 2003-11-18 Qualcomm, Incorporated Lossless intraframe encoding using Golomb-Rice
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US20050185568A1 (en) * 2004-02-23 2005-08-25 Davidson Robert J. Storage device
US20050229061A1 (en) 2004-04-01 2005-10-13 Sung-Ho Kang Method of efficiently compressing and decompressing test data using input reduction
US20070110151A1 (en) * 2005-11-14 2007-05-17 Ess Technology, Inc. System and method for video frame buffer compression
US7626518B2 (en) * 2006-06-08 2009-12-01 Via Technologies, Inc. Decoding systems and methods in computational core of programmable graphics processing unit
CN101627634B (zh) * 2006-10-16 2014-01-01 诺基亚公司 用于将可并行解码片用于多视点视频编码的系统和方法
TWI330473B (en) 2006-11-24 2010-09-11 Primax Electronics Ltd Huffman decoding method
US8031937B2 (en) * 2007-04-04 2011-10-04 Telefonaktiebolaget Lm Ericsson (Publ) Frame buffer compression and decompression method for graphics rendering
US20090254694A1 (en) 2008-04-02 2009-10-08 Zikbit Ltd. Memory device with integrated parallel processing
US7786907B2 (en) 2008-10-06 2010-08-31 Donald Martin Monro Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems
US8134885B2 (en) * 2009-11-24 2012-03-13 Bae Systems Information And Electronic Systems Integration Inc. High-speed compression architecture for memory
US8971413B2 (en) 2010-05-24 2015-03-03 Intel Corporation Techniques for storing and retrieving pixel data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561464A (en) * 1995-03-20 1996-10-01 Daewoo Electronics Co., Ltd. Method and apparatus for encoding a video signal employing transform and classified vector quantization techniques
US6272180B1 (en) 1997-11-21 2001-08-07 Sharp Laboratories Of America, Inc. Compression and decompression of reference frames in a video decoder
WO2001026056A1 (en) 1999-10-01 2001-04-12 Koninklijke Philips Electronics N.V. Storing and retrieving data
WO2011162964A2 (en) * 2010-06-25 2011-12-29 Intel Corporation System and method and computer program product for parameter estimation for lossless video compression
US20110317759A1 (en) 2010-06-25 2011-12-29 Thomas Vinay S System, method, and computer program product for parameter estimation for lossless video compression

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ISO/IEC 13818-1
ISO/IEC 14496-10

Also Published As

Publication number Publication date
DE102011100936A1 (de) 2011-12-01
CN102263946A (zh) 2011-11-30
US20110286528A1 (en) 2011-11-24
GB2480747A (en) 2011-11-30
WO2011149751A2 (en) 2011-12-01
DE102011100936A9 (de) 2012-08-02
GB2480747B (en) 2014-09-17
WO2011149751A3 (en) 2012-04-19
GB201108465D0 (en) 2011-07-06
CN102263946B (zh) 2014-05-07
US8971413B2 (en) 2015-03-03

Similar Documents

Publication Publication Date Title
US10075711B2 (en) Flexible data organization for images
DE102011100936B4 (de) Techniken zum Speichern und Abrufen von Pixeldaten
US6546143B1 (en) Efficient wavelet-based compression of large images
EP0687111B1 (de) Verfahren zur Codierung/Decodierung eines Datenstroms
US20140086309A1 (en) Method and device for encoding and decoding an image
DE112006002148T5 (de) Austauschpuffer zur Videoverarbeitung
US10440360B2 (en) Video processing system
KR20210094054A (ko) 데이터 어레이들의 비트 평면 인코딩
DE112014000643T5 (de) Bilddatencodierung für Zugriff nach Raster und nach Makroblock
CN103888777A (zh) 运动图像压缩解压缩装置
DE112008003626T5 (de) Kodierung mit geringer Komplexität in Datenkomprimierungssystemen
US20110249959A1 (en) Video storing method and device based on variable bit allocation and related video encoding and decoding apparatuses
US20220398686A1 (en) Methods of and apparatus for storing data in memory in graphics processing systems
DE19860652B4 (de) Videodecoder für hohe Bildqualität
DE60319742T2 (de) Lauflängencodierung eines quantisierten digitalen bildes
US10728555B1 (en) Embedded codec (EBC) circuitry for position dependent entropy coding of residual level data
DE602004011213T2 (de) Intraframe-komprimierung und dekomprimierung von videosignalen mit fester bitrate
DE102011002325A1 (de) Einrichtung mit vertikalem und/oder horizontalem Cachespeicher und in einem Kodierer und/oder Dekodierer verwendete Verfahren
US10523970B2 (en) Keyframe-based video codec designed for GPU decoding
US6681051B1 (en) Arrangement for transforming picture data
Yang et al. An effective dictionary-based display frame compressor
CN107241601B (zh) 图像数据传输方法、装置及终端
US10547874B2 (en) Video processing apparatus and video processing circuits thereof
Nguyen et al. 71% Reducing the memory bandwidth requirement for a multi-standard video codec by lossless compression of video using a combination of 2D-DPCM and Variable Length Coding
CN101583042A (zh) 在视频解码中降低储存装置读写频宽的系统及方法

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04N0007300000

Ipc: H04N0019600000

Effective date: 20131205

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final