DE102016124917B4 - Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression - Google Patents

Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression Download PDF

Info

Publication number
DE102016124917B4
DE102016124917B4 DE102016124917.3A DE102016124917A DE102016124917B4 DE 102016124917 B4 DE102016124917 B4 DE 102016124917B4 DE 102016124917 A DE102016124917 A DE 102016124917A DE 102016124917 B4 DE102016124917 B4 DE 102016124917B4
Authority
DE
Germany
Prior art keywords
space
value
tile
bitstream
content
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
DE102016124917.3A
Other languages
English (en)
Other versions
DE102016124917A1 (de
Inventor
Yunqing Wang
Jingning Han
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE102016124917A1 publication Critical patent/DE102016124917A1/de
Application granted granted Critical
Publication of DE102016124917B4 publication Critical patent/DE102016124917B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • 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
    • H04N19/426Methods 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 using memory downsizing methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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
    • 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/436Methods 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 using parallelised computational arrangements

Landscapes

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

Abstract

Verfahren (900) zum Codieren eines Videosignals (350) in einen Bitstrom (488; 600; 700; 750), das Videoeinzelbilder (354) umfasst, wobei das Verfahren Folgendes umfasst:das Schätzen (920) eines Raumbedarfs zum Codieren einer Kachel (602, 604, 606; 701, 702, 704, 706; 752, 754, 756) eines Videoeinzelbildes der Videoeinzelbilder;das Schreiben (930) eines ersten Wertes in einen ersten Wertraum des Bitstroms, wobei der erste Wert eine Größe eines zweiten Wertraums beschreibt;das Definieren (930) des zweiten Wertraumes in dem Bitstrom, wobei die Größe des zweiten Wertraums auf dem geschätzten Raumbedarf basiert;das Schreiben (940) codierter Kachelinhaltsdaten in einen Inhaltsraum des Bitstroms;das Ermitteln (950) einer Größe des Inhaltsraumes nach dem Schreiben der codierten Kachelinhaltsdaten in den Inhaltsraum; unddas Schreiben (960) eines zweiten Wertes in den zweiten Wertraum des Bitstroms, wobei der zweite Wert die ermittelte Größe des Inhaltsraumes beschreibt.

Description

  • HINTERGRUND
  • Digitale Videoströme stellen typischerweise ein Video unter Verwendung einer Folge von Einzelbildern oder Standbildern dar. Jedes Einzelbild kann eine Anzahl von Blöcken beinhalten, die wiederum Informationen beinhalten können, die den Wert der Farbe, der Helligkeit oder anderer Attribute für Pixel beschreiben. Die Datenmenge in einem typischen Videostrom ist groß, und die Übertragung und Speicherung von Videos können signifikante Computer- oder Kommunikationsressourcen verwenden. Verschiedene Ansätze wurden vorgeschlagen, um die Datenmenge in Videoströmen zu verringern, einschließlich Komprimierung und andere Kodierungstechniken.
  • Bei einigen Videokompressionsverfahren kann ein Videoeinzelbild in Abschnitte unterteilt werden, die als Kacheln bezeichnet werden. Eine Kachel kann quadratisch oder rechteckig sein und beinhaltet mehrere Pixelblöcke. Durch Unterteilen eines Einzelbildes in Kacheln können die Kacheln parallel codiert und/oder decodiert werden. Kacheln ermöglichen auch die Dekodierung nur eines Teils des Bildes, indem nur bestimmte Kacheln decodiert werden, während andere Kacheln nicht decodiert werden. Bei aktuellen Videocodierer-Decodiererimplementierungen ist die Anzahl von Kacheln pro Einzelbild klein, beispielsweise 4 bis 8 Kacheln.
  • Bei Videokomprimierungsverfahren, die eine Kachelcodierung implementieren, beinhaltet der Teil des Videobitstroms, der einer bestimmten Kachel entspricht, einen Kacheldaten-Header und die Kachelinhaltsdaten. Der Kacheldaten-Header speichert einen Kacheldatengrößen (TDS) Wert, der den Decoder darüber informiert, wo die Kachelinhaltsdaten für die Kachel beginnen und stoppen. So kann zum Beispiel der TDS-Wert die Anzahl von Bits beschreiben, die verwendet werden, um die Kachelinhaltsdaten zu codieren. Die Kachelinhaltsdaten sind die codierten Daten, die dem Bild innerhalb der Kachel entsprechen. Somit ermöglicht der TDS-Wert dem Decodierer, die Kachelinhaltsdaten zu lokalisieren und die Kachelinhaltsdaten zu decodieren, um die Kachel zu rekonstruieren.
  • In „Joint collaborative team on video coding“, (JCT-VC) von ITU-T SG16 WP3 und ISO/IEC JTC1/SC29/WG11, 5. Veranstaltung: Genf, 16-23 März 2011 (JCTVC-E412), Misra und Segall offenbaren „Tiles for parallel decoding“ [Kacheln zur parallele Dekodierung]. In „IEEE Journal of selected topics in signal processing“, Bd 7, 2013, Nr 6, S. 969-977 - ISSN 1932-4553, Misra et al offenbaren „An overview of tiles in HEVC“ [Einen Überblick über Kacheln in HEVC]. In „2012 Picture Coding Symposium“ - PCS 2012 - proceedings, Mai 7-9, 2012, S. 389-392 - ISBN 978-1-4577-2048-2, Fuldseth et al offenbaren „Tiles for managing computational complexity of video encoding and decoding“ [Kacheln zur Verwaltung der Berechnungskomplexität von Videokodierung und -dekodierung].
  • ZUSAMMENFASSUNG
  • Ein Aspekt der offenbarten Ausführungsformen ist ein Verfahren gemäß Anspruch 1.
  • Ein weiterer Aspekt der offenbarten Ausführungsformen ist eine Vorrichtung gemäß Anspruch 11.
  • Figurenliste
  • Die Beschreibung hierin bezieht sich auf die begleitenden Zeichnungen, in denen gleiche Bezugszeichen gleiche Teile in den verschiedenen Ansichten bezeichnen.
    • 1 ist eine schematische Darstellung eines Videokodier- und Dekodiersystems.
    • 2 ein Blockdiagramm eines Beispiels eines Computergeräts ist, das eine Sendestation oder eine Empfangsstation realisieren kann.
    • 3 ist ein Diagramm eines zu kodierenden und anschließend zu dekodierenden Videostroms.
    • 4 ein Blockdiagramm eines Videokompressionssystems gemäß einem Aspekt dieser Offenbarung.
    • 5 ein Blockdiagramm eines Videodekompressionssystems gemäß einem Aspekt dieser Offenbarung.
    • 6 ist eine Veranschaulichung, die einen Bitstrom mit Kodierung mit fester Länge des Kacheldatenraums zeigt.
    • 7A ist eine Veranschaulichung, die einen Bitstrom mit adaptiver Kachel-Datenraumkodierung gemäß einem ersten Beispiel zeigt.
    • 7B ist eine Veranschaulichung, die einen Bitstrom mit adaptiver Kachel-Datenraumkodierung gemäß einem zweiten Beispiel zeigt.
    • 8 ist ein Blockdiagramm, das ein System für eine adaptive Kachel-Datenraumkodierung zeigt.
    • 9 ist ein Flussdiagramm, das einen adaptiven Kachel-Datenraum-Kodierprozess gemäß einem ersten Beispiel zeigt.
    • 10 ist ein Flussdiagramm, das einen adaptiven Kachel-Datenraum-Kodierprozess gemäß einem zweiten Beispiel zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Kachelkodierung führt für jede Kachel zusätzliche Bit-Kosten ein, die gleich der Anzahl der Bits ist, die für den Kachel-Datenkopf ausgegeben wurden. Obwohl diese Bitkosten in gegenwärtigen Implementierungen, die eine kleine Anzahl von Kacheln verwenden, unwesentlich sind, können die zusätzlichen Bitkosten signifikant sein, wenn die Anzahl der Kacheln erhöht wird. Zukünftige Kachelkodierungsanwendungen erhöhen die Verwendung der Kachelkodierung und führen zu einer starken Zunahme der Anzahl von Kacheln, die pro Einzelbild codiert sind. So können beispielsweise Anwendungen der virtuellen Realität stark davon profitieren, dass sie nur einen Teil eines Einzelbildes decodieren können, und Einzelbilder in Virtual-Reality-Anwendungen können mehr als eine Million Kacheln (z. B. ein Gitter von 1024 Kacheln bis 1024 Kacheln) beinhalten.
  • Bei aktuellen Implementierungen wird eine feste Anzahl von Bits für die Codierung des TDS-Werts in dem Kachel-Daten-Header vorgesehen. Eine feste Anzahl von Bits wird verwendet, da der Kachel-Header in dem Bitstrom vor den Kachelinhaltsdaten erscheint. Da die Kachelinhaltsdaten nicht zu dem Zeitpunkt codiert worden sind, zu dem Raum in dem Bitstrom für den Kachel-Daten-Header zugewiesen ist, ist die Größe der Kachelinhaltsdaten nicht bekannt. Nachdem die Kachelinhaltsdaten codiert und in den Bitstrom geschrieben worden sind, ist ihre Größe dann bekannt und kann in den Raum geschrieben werden, der zuvor für den TDS-Wert in dem Kachel-Daten-Header reserviert war.
  • Da die Anzahl der Bits, die für die Codierung des TDS-Werts in dem Kachel-Daten-Header reserviert sind, festgelegt ist, basiert die für den Kachel-Daten-Header gewählte Länge auf einer größten erwarteten Länge für den TDS-Wert, beispielsweise wenn die Kachelgröße groß ist und die Inhaltsdaten schlecht komprimiert sind, was zu einer großen Größe für die Kachelinhaltsdaten führt. Wenn die Kachelinhaltsdaten klein sind, kann das Ergebnis sein, dass die Anzahl von Bits, die zum Speichern des TDS-Werts in dem Kachel-Daten-Header reserviert sind, viel größer ist als die Anzahl von Bits, die tatsächlich zum Speichern des TDS-Werts verwendet wird.
  • Um die mit der Kachelcodierung verbundenen Overhead-Kosten zu senken und eine bessere Komprimierungsleistung zu erzielen, speichern die Verfahren und Systeme hierin effizient den TDS-Wert für jede Kachel. Dies kann durch adaptives Zuordnen der Anzahl von Bits, die zum Speichern des TDS-Werts für jede Kachel reserviert sind, durch Schätzen eines Raumbedarfs für die Kodierung der Kachel erfolgen. Die Größe des Raumes, der in dem Kachel-Daten-Header für den TDS-Wert reserviert ist, wird als ein erster Wert geschrieben, der hierin als ein erster Größenwert oder ein TDS_Bits-Wert bezeichnet werden kann. Der erste Größenwert beschreibt die Größe des Raumes, der in dem Kachel-Daten-Header für den TDS-Wert reserviert ist. Nachdem die codierten Kachelinhaltsdaten in den Bitstrom geschrieben worden sind, wird der TDS-Wert, der die Größe der codierten Kachelinhaltsdaten beschreibt, in den Bitstromraum geschrieben, der vorher in dem Kachel-Daten-Header für den TDS-Wert reserviert war. Der TDSWert kann hier auch als Headerwert oder als zweiter Größenwert bezeichnet werden. Somit können die hierin beschriebenen Verfahren und Systeme beispielsweise einen ersten Größenwert in einem ersten Wertraum eines Bitstroms, der einen geschätzten Platzbedarf beschreibt, schreiben, wobei ein Headerbereich des Bitstroms mit einer Größe, die dem Größenwert entspricht, das Schreiben des codierten Inhalts in den Bitstrom und das Schreiben eines zweiten Größenwertes, der eine Größe des codierten Inhalts in dem Header-Raum beschreibt.
  • 1 ist eine schematische Darstellung eines Videocodierungs- und Decodierungssystems 100, in dem die hierin beschriebenen Systeme und Verfahren implementiert werden können. Eine Sendestation 112 kann zum Beispiel ein Computer mit einer internen Hardwarekonfiguration sein, wie sie in 2 beschrieben wurden. Jedoch sind auch andere geeignete Implementierungen der Sendestation 112 möglich. So kann beispielsweise die Verarbeitung der Sendestation 112 auf mehrere Geräte verteilt sein.
  • Ein Netzwerk 128 kann die Sendestation 112 und eine Empfangsstation 130 zum Kodieren und Dekodieren eines Videostroms verbinden. Insbesondere kann der Videostrom in der Sendestation 112 kodiert werden und der kodierte Videostrom kann in der Empfangsstation 130 dekodiert werden. Das Netzwerk 128 kann zum Beispiel das Internet sein. Das Netzwerk 128 kann auch ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), ein virtuelles privates Netzwerk (VPN), ein Mobilfunknetz oder jedes andere beliebige Mittel zum Übertragen des Videostroms von der Sendestation 112 zu der in diesem Beispiel genannten Empfangsstation 130 sein.
  • Eine Empfangsstation 130 kann in einem Beispiel ein Computer mit einer internen Hardwarekonfiguration sein, wie sie in 2 beschrieben ist. Es sind jedoch auch andere geeignete Implementierungen der Empfangsstation 130 möglich. So kann beispielsweise die Verarbeitung der Empfangsstation 130 auf mehrere Geräte verteilt sein.
  • Es sind andere Implementierungen des Videocodierungs- und Decodierungssystem 100 möglich. So kann beispielsweise eine Implementierung das Netzwerk 128 weglassen. Bei einer anderen Implementierung kann ein Videostrom kodiert und dann zur Übertragung zu einem späteren Zeitpunkt an die Empfangsstation 130 oder an jedes andere Gerät mit einem Speicher gespeichert werden. Bei einer Implementierung empfängt die Empfangsstation 130 (z. B. über das Netzwerk 128 einen Computerbus und/oder einem Kommunikationspfad) den kodierten Videostrom und speichert den Videostrom für eine spätere Dekodierung. Bei einer exemplarischen Implementierung wird ein Echtzeit-Transportprotokoll (RTP) für die Übertragung des kodierten Videos über das Netzwerk 128 verwendet. Bei einer anderen Implementierung kann ein anderes Transportprotokoll als RTP verwendet werden, z. B. ein Hypertext Transfer Protocol(HTTP)-basiertes Video-Streaming-Protokoll.
  • Wie hierin weiter erläutert wird, sind die Sendestation 112 und die Empfangsstation 130 Beispiele von Vorrichtungen, die in das Videocodierungs- und Decodierungssystem 100 aufgenommen werden können. Weitere Vorrichtungen können beinhaltet sein, wie beispielsweise ein Server, der Übertragungen von der Sendestation 112 zur Empfangsstation 130 weiterleitet.
  • 2 ein Blockdiagramm eines Beispiels einer Rechenvorrichtung 200, die eine Sendestation oder eine Empfangsstation realisieren kann. So kann beispielsweise das Computergerät 200 eine oder beide der Sendestationen 112 und der Empfangsstation 130 von 1 implementieren. Das Computergerät 200 kann in Form eines Computersystems mit mehreren Computergeräten oder in Form eines einzigen Computergeräts, beispielsweise einem Mobiltelefon, einem Tablet-Computer, einem Laptop-Computer, einem Notebook-Computer, einem Desktop-Computer und dergleichen beinhaltet sein.
  • Eine CPU 224 in der Rechenvorrichtung 200 kann eine zentrale Verarbeitungseinheit sein. Alternativ kann die CPU 224 jede andere Art von Gerät oder mehrere Geräte sein, die in der Lage sind, Informationen zu manipulieren oder zu verarbeiten, die jetzt bestehen oder in Zukunft entwickelt werden. Obwohl die offenbarten Implementierungen mit einem einzigen Prozessor, wie z. B. der CPU 224, ausgeführt werden können, können Vorteile bei der Geschwindigkeit und Effizienz unter Verwendung von mehr als einem Prozessor erreicht werden.
  • Ein Speicher 226 in der Rechenvorrichtung 200 kann in einer Implementierung eine Festwertspeichereinrichtung (ROM) oder eine Vorrichtung mit wahlfreiem Zugriff (RAM) sein. Jede andere geeignete Speichervorrichtung kann als Speicher 226 verwendet werden. Der Speicher 226 kann Code und Daten 227 beinhalten, auf die durch die CPU 224 unter Verwendung eines Busses 230 zugegriffen wird. Der Speicher 226 kann ferner ein Betriebssystem 232 und Anwendungsprogramme 234 beinhalten, wobei die Anwendungsprogramme 234 mindestens ein Programm beinhalten, das der CPU 224 ermöglicht, die hierin beschriebenen Verfahren durchzuführen. So können beispielsweise die Anwendungsprogramme 234 Anwendungen 1 bis N beinhalten, die ferner eine Anwendung beinhalten, die ein hier beschriebenes Verfahren ausführt. Das Computergerät 200 kann auch einen Sekundärspeicher 236 beinhalten, der beispielsweise eine Speicherkarte sein kann, die einer mobilen Rechenvorrichtung verwendet wird. Da die Videokommunikationskonferenzen eine beträchtliche Menge an Informationen beinhalten können, können sie ganz oder teilweise in dem Sekundärspeicher 236 gespeichert und in den Speicher 226 geladen werden, wie dies für die Verarbeitung erforderlich ist.
  • Das Computergerät 200 kann auch eine oder mehrere Ausgabegeräte beinhalten, wie beispielsweise eine Anzeige 228. Das Display 228 kann in einem Beispiel ein berührungsempfindliches Display sein, das eine Anzeige mit einem berührungsempfindlichen Element kombiniert, das betätigbar ist, um Berührungseingaben zu erfassen. Das Display 228 kann über den Bus 230 mit der CPU 224 gekoppelt sein. Andere Ausgabegeräte, die es einem Benutzer erlauben das Computergerät 200 zu programmieren oder anderweitig zu verwenden, können zusätzlich oder alternativ zum Display 228 vorgesehen sein. Wenn das Ausgabegerät ein Display ist oder beinhaltet, kann das Display auf verschiedene Arten implementiert werden, einschließlich durch eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhren-(CRT) oder eine Leuchtdiodenanzeige (LED), wie beispielsweise eine organische LED (OLED) Anzeige.
  • Das Computergerät 200 kann auch in Verbindung mit einem Bildaufnahmegerät 238, beispielsweise einer Kamera, oder jedem anderen Bildaufnahmegerät 238, das gegenwärtig vorhanden ist oder nachfolgend entwickelt wird, welches ein Bild, beispielsweise das Bild eines BenutzerComputergeräts 200, erfasst. Das Bildaufnahmegerät 238 kann so positioniert sein, dass es auf das Benutzer-Computergerät 200 gerichtet ist. In einem Beispiel können die Position und die optische Achse des Bildaufnahmegeräts 238 so konfiguriert sein, dass das Sichtfeld einen Bereich umfasst, der direkt an das Display 228 angrenzt und von dem das Display 228 sichtbar ist.
  • Das Computergerät 200 kann auch in Verbindung mit einem Audioaufnahmegerät 240, beispielsweise einem Mikrofon, oder jedem anderen Audioaufnahmegerät, das gegenwärtig vorhanden ist oder nachfolgend entwickelt wird, welches Töne nahe der Rechenvorrichtung 200 erfassen kann, beinhaltet sein. Das Audioaufnahmegerät 240 kann so positioniert sein, dass es auf den Benutzer, der das Computergerät 200 betreibt, gerichtet ist und so konfiguriert sein, dass es vom Benutzer erzeugte Töne, beispielsweise Sprach- oder andere Äußerungen, empfängt, während der Benutzer das Computergerät 200 bedient.
  • Obwohl in 2 die CPU 224 und den Speicher 226 des Computergeräts 200 wie in einer einzigen Einheit integriert dargestellt ist, können andere Konfigurationen verwendet werden. Die Operationen der CPU 224 können auf mehrere Maschinen (jede Maschine mit einem oder mehreren der Prozessoren) verteilt werden, die direkt oder über einen lokalen Bereich oder ein anderes Netzwerk gekoppelt werden können. Der Speicher 226 kann über mehrere Maschinen, wie beispielsweise einen netzwerkbasierten Speicher oder Speicher in mehreren Maschinen verteilt werden, die die Operationen des Computergeräts 200 ausführen. Obwohl hier als ein einzelner Bus dargestellt, kann der Bus 230 des Computergeräts 200 aus mehreren Bussen bestehen. Ferner kann der Sekundärspeicher 236 direkt mit den anderen Komponenten des Computergeräts 200 gekoppelt sein oder über ein Netzwerk zugänglich sein und kann eine einzelne integrierte Einheit, wie beispielsweise eine Speicherkarte oder mehrere Einheiten, wie mehrere Speicherkarten, umfassen. Das Computergerät 200 kann somit in einer Vielzahl von Konfigurationen implementiert werden.
  • 3 ist ein Diagramm eines Beispiels eines zu kodierenden und anschließend zu dekodierenden Videos 350. Das Video 350 beinhaltet eine Videosequenz 352. Auf der nächsten Ebene beinhaltet die Videosequenz 352 eine Anzahl von benachbarten Einzelbildern 354. Während drei Einzelbilder als benachbarte Einzelbilder 354 dargestellt sind, kann die Videosequenz 352 eine beliebige Anzahl von benachbarten Einzelbildern 354 beinhalten. Die benachbarten Einzelbilder 354 können dann weiter in einzelne Einzelbilder, z. B. ein Einzelbild 356, unterteilt werden. Auf der nächsten Ebene kann das Einzelbild 356 in eine Reihe von Blöcken 358 unterteilt werden, die Daten beinhalten können, die zum Beispiel 16 × 16 Pixel im Einzelbild 356 entsprechen. Die Blöcke können auch in den Ebenen der Daten angeordnet sein. So kann beispielsweise ein entsprechender Block in jeder Ebene Luminanz- und Chrominanzdaten für die Pixel des Blocks beinhalten. Die Blöcke 58 können auch von jeder anderen geeigneten Größe sein, wie etwa 16 × 8 Pixelgruppen oder 8 × 16 Pixelgruppen und können je nach Anwendung weiter in kleinere Blöcke unterteilt werden. Wenn nicht anders angegeben, werden die hierin verwendeten Begriffe Block und Makroblock austauschbar verwendet.
  • 4 ein Blockdiagramm eines Kodierers 470 gemäß einem Aspekt dieser Offenbarung. Der Kodierer 470 kann, wie vorstehend beschrieben, in der Sendestation 112 implementiert werden, wie beispielsweise durch Bereitstellen eines Computersoftwareprogramms, das zum Beispiel im Speicher 226 gespeichert ist. Das Computersoftwareprogramm kann Maschinenbefehle beinhalten, die, wenn sie durch einen Prozessor wie beispielsweise die CPU 224, ausgeführt werden, die Sendestation 112 veranlassen, Videodaten zu kodieren, auf die Weise wie in 4 beschrieben. Der Kodierer 470 kann auch als spezielle Hardware implementiert sein, die beispielsweise in der Sendestation 112 beinhaltet ist. Der Kodierer 470 weist die folgenden Schritte auf, um die verschiedenen Funktionen in einem Vorwärtspfad auszuführen (durch die durchgezogenen Verbindungslinien dargestellt), um einen kodierten oder komprimierten Bitstrom 488 unter Verwendung des Videos 350 als Eingabe zu erzeugen: eine IntralInter-Vorhersagestufe 472, eine Transformationsstufe 474, eine Quantisierungsstufe 476 und eine Entropiecodierungsstufe 478. Der Kodierer 470 kann auch einen Rekonstruktionspfad (durch gestrichelte Linien dargestellt) beinhalten, um eine Bildfolge für die Kodierung von zukünftigen Blöcken zu rekonstruieren. Wie in 4 dargestellt, weist der Kodierer 470 die folgenden Schritte auf, um die verschiedenen Funktionen im Rekonstruktionspfad auszuführen: eine Dequantisierungsstufe 480, eine inverse Transformationsstufe 482, eine Rekonstruktionsstufe 484 und eine Schleifenfilterstufe 486. Andere strukturelle Variationen des Kodierers 470 können verwendet werden, um das Video 350 zu kodieren.
  • Wenn das Video 350 zur Codierung präsentiert wird, kann jedes Einzelbild 356 innerhalb des Videos 350 in Einheiten der Blöcke 358 verarbeitet werden. In der IntralInter-Vorhersagestufe 472 kann jeder Block unter Verwendung entweder einer Intraframe-Vorhersage (Vorhersage unter Verwendung von Blöcken innerhalb eines einzelnen Einzelbildes) oder einer Interframe-Vorhersage Vorhersage unter Verwendung von Blöcken aus einem anderen Einzelbild) kodiert werden. In jedem Fall kann ein Vorhersageblock gebildet werden. Im Falle einer Intra-Vorhersage kann ein Vorhersageblock von Abtastwerten in der aktuellen Bildfolge, die zuvor kodiert und rekonstruiert wurden, gebildet werden. Im Falle einer InterVorhersage kann ein Vorhersageblock von Abtastwerten in einem oder mehreren zuvor konstruierten Referenzeinzelbildern gebildet werden.
  • Als nächstes bezugnehmend auf 4, kann der Vorhersageblock vom aktuellen Block an der IntralInter-Vorhersagestufe 472 subtrahiert werden, um einen Restblock (auch Residuum genannt) zu erzeugen. Die Transformationsstufe 474 transformiert den Rest in die Transformationskoeffizienten, zum Beispiel in den Frequenzbereich. Beispiele für blockbasierte Transformationen sind die Kaihunen-LoèveTransformation (KLT), die diskrete Kosinustransformation (DCT) und die Singularwertzerlegungstransformation (SVD). In einem Beispiel transformiert das DCT den Block in den Frequenzbereich. Im Fall von DCT basieren die Transformationskoeffizientenwerten auf der räumlichen Frequenz, wobei der niedrigste Frequenzkoeffizient (DC) am oberen linken Rand der Matrix und dem höchsten Frequenzkoeffizienten am unteren rechten Rand der Matrix liegen.
  • Die Quantisierungseinheit 476 transformiert die Transformationskoeffizienten unter Verwendung eines Quantisiererwerts oder eines Quantisierungspegels in diskrete Quantenwerte, die als quantisierte Transformationskoeffizienten bezeichnet werden. Die quantisierten Transformationskoeffizienten werden dann durch die Entropiecodierungsstufe 478 entropiecodiert. Die entropiecodierten Koeffizienten werden zusammen mit anderen Informationen, die zum Dekodieren des Blocks verwendet werden, die zum Beispiel die Art der verwendeten Vorhersage, Bewegungsvektoren und Quantisiererwerte beinhalten können, an den komprimierten Bitstrom 488 ausgegeben. Der komprimierte Bitstrom 488 kann unter Verwendung verschiedener Techniken, wie beispielsweise der variablen Längenkodierung (VLC) oder der arithmetischen Kodierung, formatiert werden. Der komprimierte Bitstrom 488 kann auch als ein kodierter Videostrom bezeichnet werden, und die und die Begriffe werden hierin austauschbar verwendet.
  • Der Rekonstruktionspfad in 4 (dargestellt durch die punktierten Verbindungslinien) kann verwendet werden, um sicherzustellen, dass sowohl der Kodierer 470 als auch ein Dekodierer 500 (nachfolgend beschrieben) dieselben Referenzeinzelbilder verwenden, um den komprimierten Bitstrom 488 zu dekodieren. Der Rekonstruktionspfad führt Funktionen aus, die ähnlich zu Funktionen sind, die während des Dekodierungsprozesses stattfinden, die nachfolgend ausführlicher erläutert werden, einschließlich der Dequantisierung der quantisierten Transformationskoeffizienten in der Dequantisierungsstufe 480 und der inversen Transformation der dequantisierten Transformationskoeffizienten an der inversen Transformationsstufe 482, um einen derivativen Restblock (auch als Derivatrest bezeichnet) zu erzeugen. In der Rekonstruktionsstufe 484 kann der Vorhersageblock, der bei der IntralInter-Vorhersagestufe 472 vorhergesagt wurde, dem Derivatrest hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Die Schleifenfiltereinheit 486 kann auf den rekonstruierten Block angewendet werden, um Verzerrungen, wie zum Beispiel blockierende Artefakte, zu reduzieren.
  • Andere Variationen des Kodierers 470 können verwendet werden, um den komprimierten Bitstrom 488 zu kodieren. So kann beispielsweise ein nicht-transformbasierter Kodierer 470 den Restblock direkt ohne die Transformationseinheit 474 quantisieren. Bei einer anderen Implementierung kann ein Kodierer 470 eine Quantisierungsstufe 476 und eine Dequantisierungsstufe 480 in einer einzigen Stufe kombinieren.
  • 5 ein Blockdiagramm eines Dekodierers 500 gemäß einer Implementierung. Der Dekodierer 500 kann in der Empfangsstation 130 implementiert werden, indem beispielsweise ein in dem Speicher 226 gespeichertes Computersoftwareprogramm bereitgestellt wird. Das Computersoftwareprogramm kann Maschinenbefehle beinhalten, die, wenn sie durch einen Prozessor wie beispielsweise die CPU 224, ausgeführt werden, die Empfangsstation 130 veranlassen, Videodaten zu kodieren, auf die Weise wie in 5 beschrieben. Der Dekodierer 500 kann auch in Hardware implementiert sein, die beispielsweise in der Sendestation 112 oder der Empfangsstation 130 beinhaltet ist.
  • Der Dekodierer 500, ähnlich dem Rekonstruktionspfad des Kodierers 470, der vorstehend erläutert wurde, beinhaltet in einem Beispiel die folgenden Schritte, um verschiedene Funktionen auszuführen, um einen Ausgangsvideostrom 516 aus dem komprimierten Bitstrom 488 zu erzeugen: eine Entropiedekodierungsstufe 502, eine Dequantisierungsstufe 504, eine inverse Transformationsstufe 506, eine IntralInter-Vorhersagestufe 508, eine Rekonstruktionsstufe 510, die eine Schleifenfilterstufe 512 und/oder eine Deblockierung und eine Einzelbildpufferstufe 514 beinhalten können. Andere strukturelle Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstrom 488 zu dekodieren.
  • Wenn der komprimierte Bitstrom 488 zum Dekodieren dargestellt ist, können die Datenelemente innerhalb des komprimierten Bitstroms 488 durch die Entropie-Dekodierungsstufe 502 (unter Verwendung beispielsweise der arithmetischen Codierung) dekodiert werden, um einen Satz quantisierter Transformationskoeffizienten zu erzeugen. Die Dequantisierungsstufe 504 dequantisiert die quantisierten Transformationskoeffizienten und die inverse Transformationsstufe 506 invertiert die dequantisierten Transformationskoeffizienten, um einen derivaten Rest zu erzeugen, der mit dem identisch sein kann, der durch die inverse Transformationsstufe 482 in dem Kodierer 470 erzeugt wird. Unter Verwendung von Headerinformationen, die vom komprimierten Bitstrom 488, wie beispielsweise den Modus und Bewegungsvektoren dekodiert wurden, kann der Dekodierer 500 die IntralInter-Vorhersagestufe 508 verwenden, um denselben Vorhersageblock zu erzeugen, wie er in dem Kodierer 470 erzeugt wurde, z. B. an der IntralInter-Vorhersagestufe 472. An der Rekonstruktionseinheit 510 kann der Vorhersageblock zum Derivatrest hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Die Filterstufe 512 kann auf den rekonstruierten Block angewendet werden, um blockierende Artefakte zu reduzieren. Die Information kann dann in einem Einzelbildpuffer in der Einzelbildpufferstufe 514 für eine nachfolgende Verwendung bei der Decodierung oder Ausgabe gehalten werden. Eine Nachverarbeitungsstufe kann auf den rekonstruierten Block angewandt werden, um das Bild weiter zu verfeinern. Das Ergebnis des von dem Dekodierer 500 ausgeführten Prozesses wird als Ausgabevideostrom 516 ausgegeben. Der Ausgabevideostrom 516 kann auch als ein dekodierter Videostrom bezeichnet werden, und die Begriffe werden hierin austauschbar verwendet.
  • Andere Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstrom 488 zu dekodieren. So kann beispielsweise der Dekodierer 500 den Ausgangsvideostrom 516 ohne Nachverarbeitung erzeugen.
  • 6 zeigt einen Teil eines Bitstroms 600 mit einer festen Länge der Kacheldatenraumkodierung. Ein komprimiertes Bild oder ein Videoeinzelbild besteht aus einer Reihe von Kacheln, und somit beinhaltet der Bitstrom 600 eine Vielzahl von Kacheln, wie beispielsweise eine aktuelle Kachel 602, eine vorherige Kachel 604 und eine nachfolgende Kachel 606. Jede der aktuellen Kacheln 602, der vorherigen Kachel 604 und der anschließenden Kachel 606 beinhaltet einen Kacheldaten-Header 610 und einen Inhaltsraum 620.
  • Um eine Kachel wie die aktuelle Kachel 602, die vorherige Kachel 604 oder die nachfolgende Kachel 606 zu dekodieren, befindet sich der Inhaltsraum 620 für die Kachel zunächst in dem Bitstrom 600. Aus diesem Grund ist der Kachel-Daten-Header 610 vor dem Inhaltsraum 620 im Bitstrom angeordnet. Der Kachel-Daten-Header 610 ist oder beinhaltet einen festen Längen-Headerraum es Bitstroms 600, der reserviert ist, bevor kodierte Kachelinhaltsdaten auf den Bitstrom in einem Inhaltsraum 620 des Bitstroms 600 geschrieben werden. Der Kachel-Daten-Header 610 ist eine feste Länge, da die tatsächliche Größe des Inhaltsraums 620 nur dann bekannt sein kann, nachdem die Kachelinhaltsdaten tatsächlich codiert und in den Inhaltsraum 620 geschrieben worden sind. Der Kachel-Daten-Header 610 wird dem Bitstrom 600 zugeordnet und reserviert, bevor die codierten Kachelinhaltsdaten in den Bitstrom geschrieben werden. Als Beispiel können in dem Bitstrom für den Kachel-Daten-Header vier Bytes reserviert sein. Nachdem die codierten Kachelinhaltsdaten in den Inhaltsraum 620 geschrieben worden sind, wird die Größe des Inhaltsraums 620 (z. B. die Länge des Inhaltsraums 620 in Bits) als der TDS-Wert verwendet, der in dem Kachel-Daten-Header 610 gespeichert ist.
  • 7A zeigt einen Teil eines Bitstroms 700 mit adaptiver Kachel-Datenraumkodierung gemäß einem ersten Beispiel. Ein komprimiertes Bild oder Videobild besteht aus einer Reihe von Kacheln. Somit beinhaltet der Bitstrom 700 einen ersten Datenraum in Form eines Rahmenpegel-(oder Bildpegel-)Datenraums, wie beispielsweise eines Einzelbild-Headers 701 und einer Vielzahl von Kacheln, wie beispielsweise einer aktuellen Kachel 702, einer vorherigen Kachel 704 und einer nachfolgenden Kachel 706. Der Einzelbild-Header 701 kann Daten beinhalten, die für einige oder alle der Kacheln gelten. Jede der aktuellen Kacheln 702, der vorherigen Kachel 704 und die nachfolgende Kachel 706 beinhaltet einen Kachel-DatenHeader 710, der nur Daten beinhaltet, die nur für die jeweilige Kachel relevant sind, und einen Inhaltsraum 720. der die Bildinformation für die Kachel beinhaltet.
  • Um eine Kachel wie die aktuelle Kachel 702, die vorherige Kachel 704 oder die nachfolgende Kachel 706 zu dekodieren, befindet sich der Inhaltsraum 720 für die Kachel zunächst in dem Bitstrom 700. Aus diesem Grund sind der Einzelbild-Header 701 und der Kachel-Daten-Header 710 vor dem Inhaltsraum 720 im Bitstrom angeordnet.
  • Ein erster Wert, der als ein erster Größenwert oder ein TDS_Bits-Wert bezeichnet werden kann, wird unkomprimiert oder komprimiert unter Verwendung einer Entropiecodierung codiert und in den ersten Wertraum des Bitstroms geschrieben. In diesem Beispiel befindet sich der erste Wertraum innerhalb des raumbezogenen Datenraums, nämlich in dem Einzelbild-Header 701, der im Bitstrom vor den Kacheldaten angeordnet ist. In dem speziellen Fall, dass für jede Kachel in einem Bild oder einem Videobild ein fester erster Wert verwendet wird, kann der erste Wert nur einmal für das gesamte Bild oder das gesamte Einzelbild in den ersten Wertraum des Bitstroms geschrieben werden. Ein zweiter Wert, der als zweiter Größenwert oder als TDS-Wert bezeichnet werden kann, wird in einen zweiten Werteraum geschrieben. In diesem Beispiel ist der zweite Wertraum ganz oder teilweise der KachelDaten-Header 710.
  • Der erste Wert beschreibt die Anzahl der vom zweiten Werteraum verwendeten Bits. Wenn zum Beispiel der erste Wert gleich sechzehn ist (oder den Wert 16 darstellt, indem er ein Symbol ist, das sechzehn darstellt), bedeutet dies, dass der zweite Wertraum sechzehn Bits lang ist. Bei dieser Implementierung wird der erste Wert auf der Einzelbildebene gespeichert und gilt für alle Einzelbilder was bedeutet, dass die Anzahl der Bits, die für den zweiten Wertraum jeder Kachel auf der Kachel-Ebene verwendet werden, dieselbe ist.
  • Der zweite Wert, der in dem zweiten Wertebereich gespeichert ist, wie beispielsweise in dem Kachel-Daten-Header 710, beschreibt die Anzahl von Bits, die von dem Inhaltsraum 720 für die jeweilige Kachel verwendet wird. Wenn zum Beispiel der zweite Wert, der in dem Kachel-DatenHeader 710 gespeichert ist, gleich 65.535 ist (oder den Wert 65.535 darstellt, beispielsweise durch ein Symbol, das interpretiert werden kann, um 65.355 zu deuten), welche in einer Bitlänge von sechzehn Bits ausgedrückt werden kann, bedeutet dies, dass der Inhaltsraum 720 65535 Bits lang ist. Wie hier erläutert wird, kann die exakte erforderliche Länge des Kachel-Daten-Headers 710 zum Zeitpunkt des Zuordnen des Kachel-Daten-Headers 710 nicht bekannt sein. Stattdessen werden Bits in dem Bitstrom 700 auf Basis eines geschätzten Raumbedarfs zum Codieren der Kachel reserviert, und der zweite Wert wird in den Kachel-Daten-Header 710 geschrieben, nachdem die kodierten Kachelinhaltdaten in den Inhaltsraum 720 geschrieben worden sind.
  • Der erste Wert und der zweite Wert werden dazu verwendet, den Inhaltsraum 720 zu lokalisieren, wenn der Bitstrom decodiert wird. Beim Decodieren einer Kachel, wie der aktuellen Kachel 702, wird der erste Wert aus dem Bitstrom gelesen, bevor die aktuelle Kachel 702 decodiert wird. Der erste Wert informiert den Decodierer über die Länge des Kachel-Daten-Headers 710, der dem Decoder erlaubt, den zweiten Wert aus dem Kachel-Daten-Headers 710 zu lesen. Der zweite Wert informiert den Decodierer über die Länge des Inhaltsraums 720, der dem Decoder erlaubt, den codierten Inhalt aus dem Inhaltsraum 720 zu lesen.
  • 7B zeigt einen Teil eines Bitstroms 750 mit adaptiver Kachel-Datenraumkodierung gemäß einem zweiten Beispiel. Der Bitstrom 700 weist mehrere Kacheln auf, wie beispielsweise eine aktuelle Kachel 752, eine vorherige Kachel 754, und eine nachfolgende Kachel 756. Jede der aktuellen Kacheln 752, der vorherigen Kachel 754 und die nachfolgende Kachel 756 beinhaltet einen Kachel-Daten-Header 760, der nur Daten beinhaltet, die nur für die jeweilige Kachel relevant sind, und einen Inhaltsraum 770, der die Bildinformation für die Kachel beinhaltet.
  • Um eine Kachel wie die aktuelle Kachel 752, die vorherige Kachel 754 oder die nachfolgende Kachel 756 zu dekodieren, befindet sich der Inhaltsraum 770 für die Kachel zunächst in dem Bitstrom 750. Aus diesem Grund ist der Kachel-Daten-Header 760 vor dem Inhaltsraum 770 im Bitstrom angeordnet.
  • In diesem Beispiel befinden sich sowohl der erste Wertraum als auch der zweite Wertraum in dem Kachel-Daten-Header 760, und der erste Wert, d. h. er erste Größenwert oder der TDS_Bits-Wert, wird separat für jede Kachel gespeichert und kann auf einer Kachel für Kachel-Basis ermittelt werden. Der erste Wert für jede Kachel wird unkomprimiert oder komprimiert unter Verwendung einer Entropiecodierung codiert und in den ersten Wertraum des Bitstroms geschrieben, wie beispielsweise in einen ersten Headerraum 762 der aktuellen Kachel 752. In diesem Beispiel befindet sich der erste Wertraum innerhalb des Kachelebenen-Datenraums. Der zweite Wert, d. h. der zweite Größenwert oder der TDS-Wert, wird in den zweiten Werteraum geschrieben, der in diesem Beispiel ein zweiter Headerraum 764 des Kachel-Daten-Header 760 ist.
  • 8 ist ein Blockdiagramm, das ein System 800 für eine adaptive Kachel-Datenraumkodierung zeigt. In dem System 800 wird ein Eingangssignal 810 empfangen und als Eingang an einen Codierer 820 und einen Schätzer 830 geliefert. Das Eingangssignal 810 kann beispielsweise ein Videosignal oder ein Standbildsignal sein. Die Beschreibung hierin wird unter Bezugnahme auf ein Eingangssignal in Form eines Videosignals durchgeführt, sofern nicht anders angegeben.
  • Der Codierer 820 ist betreibbar, um Teile des Eingangssignals 810 zu komprimieren und eine komprimierte Version des Inhalts aus dem Eingangssignal 810 auszugeben, das in einen Bitstrom geschrieben werden kann, wie beispielsweise in den Bitstrom 700. Der Codierer 820 kann in der in Bezug auf den Codierer 470 beschriebenen Art und Weise implementiert werden.
  • Der Schätzer 830 ist betreibbar, um einen Raumbedarf zum Codieren eines Teils des Eingangssignals 810 abzuschätzen. Der Schätzer 830 kann zuvor gespeicherte Information, wie beispielsweise die Kodierungsstatistiken 840, verwenden, um die Raumanforderung zum Kodieren des Teils des Eingangssignals zu schätzen. Die Kodierungsstatistiken 840 können beispielsweise statistische Daten sein, die einen früheren Inhalt aus einem Videosignal, wie beispielsweise dem Eingangssignal, beschreiben. Die Informationen können dem Schätzer 830 über den Codierer 820 zur Verfügung gestellt werden, der als die Kodierungsstatistiken 840 hinzugefügt und gespeichert werden soll.
  • Bei Implementierungen, in denen der Anteil des Eingangssignals 810 eine Kachel eines Videosignals ist, kann der geschätzte Raumbedarf teilweise auf einer Kachelgröße des aktuellen Teils des Eingangssignals 810 (beispielsweise die Kachelgrößen im aktuellen Einzelbild oder der Kachelgröße der nächsten zu codierenden Kachel) basieren. Der geschätzte Raumbedarf nimmt mit zunehmender Kachelgröße zu.
  • Der geschätzte Raumbedarf kann teilweise basierend auf einer Komplexität des aktuellen Teils des Eingangssignals 810 geschätzt werden. Die Komplexität kann als Grundlage für den geschätzten Raumbedarf verwendet werden, da Bilder mit niedriger Komplexität dazu neigen, in einem viel größeren Ausmaß komprimiert zu werden als Bilder mit hoher Komplexität. Die Komplexität kann für einen Teil eines Bildes (z. B. einen Teil eines Videobildes), eines einzelnen Bildes (z. B. eines Videobildes) oder mehreren Bildern (z. B. eine Folge von Videobildern) analysiert werden. Ein einzelnes Maß an Videokomplexität oder zwei oder mehr Messungen der Videokomplexität können kombiniert werden. Die Maßnahmen der Videokomplexität kann beispielsweise durch eine numerische Bewertung ausgedrückt werden und (falls erforderlich) als durchschnittlicher oder gewichteter Durchschnitt kombiniert werden. Bei einigen Implementierungen werden Maßnahmen der Videokomplexität, wie numerische Bewertungen, als Grundlage für die Klassifizierung des Videos in eine Kategorie (z. B. niedrige, mittlere oder hohe Komplexität) durch Schwellwertbildung oder ähnliche Maßnahmen verwendet. Somit kann die Komplexität für einen Teil des Eingangssignals 810, wie beispielsweise ein Videobild, als eine ausgewählte Komplexitäts-Klassifikation aus einer Vielzahl von vorbestimmten Komplexitäts-Klassifikationen ausgedrückt werden.
  • Zahlreiche bekannte Maßnahmen der Komplexität können verwendet werden. Als ein Beispiel kann der Bewegungsbetrag in einer Reihe von Videoeinzelbildern in Form von einem oder beiden der Teilbereiche der Videoeinzelbilder, in denen die Bewegung vorhanden ist, und die Geschwindigkeit der Bewegung (z. B. die Bewegungslänge der Vektoren) gemessen werden. Somit kann die Komplexität für das Eingangssignal 810, wie z. B. ein Videoeinzelbild, teilweise basierend auf einem Bewegungsbetrag in einer vorherigen Folge von Videoeinzelbildern aus dem Eingangssignal oder als ein Bewegungsbetrag in dem Videoeinzelbild relativ zu vorherigen Videoeinzelbildern in der Sequenz ermittelt werden. Als weiteres Beispiel kann die Menge an Details in einem Bild oder in einer Reihe von Bildern gemessen werden, wobei niedrigere Detailbilder weniger Komplexität und höhere Detailbilder mehr Komplexität entsprechen.
  • Die zur Bestimmung der Komplexität (z. B. Bewegung und/oder Detail) verwendeten Daten können aus den Kodierungsstatistiken 840 erhalten werden. Die Kodierungsstatistiken 840, die nach dem Codieren eines früheren Inhalts aus dem Eingangssignal 810 vorher gespeichert worden sein können. Somit können die Kodierungsstatistiken 840 statistische Daten beinhalten, die einen früheren Inhalt aus dem Eingangssignal 810 beschreiben, das vor dem Abschätzen eines Platzbedarfs zum Codieren der Kachel des Videoeinzelbildes gespeichert wurde.
  • Die Kodierungsstatistiken 840 können beispielsweise Daten beinhalten, die die Anzahl von Bits beschreiben, die zum Codieren von Abschnitten des Eingangssignals 810 für mehrere Komplexitätsniveaus erforderlich sind. Bei einer Implementierung sind die in den Kodierungsstatistiken gespeicherten Daten unabhängig von der Größe des Teils des zu codierenden Eingangssignals. Die Kodierungsstatistiken 840 in diesem Beispiel können Statistiken beinhalten, die basierend auf der Größe des Teils des zu codierenden Eingangssignals skaliert werden können, um die Anzahl von Bits zu ermitteln, die erforderlich sind, um das Eingangssignal zu codieren. So können zum Beispiel die Kodierungsstatistiken 840 die Anzahl von Bits ausdrücken, die erforderlich sind, um einen Teil eines Eingangssignals 810 mit mittlerer Komplexität auf einer Basis pro Pixel auszudrücken. Somit wird, wenn der Teil des Eingangssignals 810 eine Kachel von einem Videoeinzelbild ist, der Schätzer die Komplexität der Kachel die Größe der Kachel in Pixeln und die Anzahl von Bits, die zum Codieren der Kachel erforderlich sind ermitteln, basierend auf den Kodierungsstatistiken 840, die die Kodierung von vorherigen Kacheln derselben Komplexität beschreiben, die durch die Größe der Kachel in Pixeln skaliert ist. Bei einer alternativen Implementierung drücken die Kodierungsstatistiken 840 die Anzahl von Bits aus, die erforderlich ist, um einen Teil des Eingangssignals 810 einer bestimmten Größe (wie z. B. einer Kachelgröße) für einen gegebenen Komplexitätsgrad zu codieren.
  • Bei einer Implementierung, wenn der Codierer 820 einen Teil des Eingangssignals 810 wie eine Kachel kodiert, meldet er die Anzahl der Bits, die bei der Kodierung für den Schätzer 830 verwendet werden und dieser Wert wird in den Kodierungsstatistiken zur Verwendung bei der Schätzung der Anzahl von Bits gespeichert, die zum Codieren von weiteren Teilen gleicher Größe des Eingangssignals 810 erforderlich sind.
  • Die Ausgabe des Schätzers 830 ist der geschätzte Raumbedarf, der eine Schätzung der Anzahl von Bits ist, die erforderlich ist, um den Teil des Eingangssignals 810 zu codieren, der gerade codiert wird.
  • Das System 800 beinhaltet einen Bitstromschreiber 850. Der Bitstromschreiber 850 empfängt eine komprimierte Version des Inhalts aus dem Eingangssignal 810 von dem Bitstromschreiber 850. Der Bitstromschreiber 850 empfängt den geschätzten Raumbedarf vom Schätzer 830. Der Bitstromschreiber 850 verwendet die komprimierte Version des Inhalts und den geschätzten Raumbedarf zum Schreiben des Bitstroms 700. Der Bitstromschreiber 850 kann auch Informationen an den Schätzer 830 zurückgeben, um als Teil der Kodierungsstatistiken 840 gespeichert zu werden.
  • 9 ist ein Flussdiagramm, das einen Prozess 900 zur adaptiven Kachel-Datenraumkodierung gemäß einem ersten Beispiel zeigt. Das Verfahren 900 wird mit Bezug auf den Bitstrom 700 erläutert, kann jedoch auf den Bitstrom 750 angewendet werden. Der Prozess 900 kann, wie in Bezug auf das System 800 beschrieben, implementiert sein, beispielsweise in Form eines Softwareprogramms, das durch Rechenvorrichtungen, wie beispielsweise die Sendestation 112 oder die Empfangsstation 130, ausgeführt wird. Das Softwareprogramm kann maschinenlesbare Anweisungen beinhalten, die in einem Speicher, wie beispielsweise dem Speicher 226 gespeichert sind, der, wenn er von einem Prozessor wie der CPU 224 ausgeführt wird, das Computergerät veranlasst, den Prozess 900 auszuführen. Der Prozess 900 kann auch unter Verwendung von Hardware implementiert werden. Wie vorstehend erläutert, können einige Computergeräte mehrere Speicher und mehrere Prozessoren aufweisen und die Schritte des Prozesses 900 können in diesen Fällen unter Verwendung verschiedener Prozessoren und Speicher verteilt werden. Die Verwendung der Begriffe „Prozessor“ und „Speicher“ in der Singularform umfassen Computergeräte, die nur einen Prozessor oder einen Speicher aufweisen sowie Vorrichtungen mit mehreren Prozessoren oder Speichern, die jeweils in der Ausführung einiger, aber nicht notwendigerweise aller genannten Schritte verwendet werden können.
  • Die Operation 910 beinhaltet das Erhalten der Kodierungsstatistiken 840, die die Kodierung eines vorherigen Inhalts aus dem Eingangssignal 810 beschreiben. Das Erhalten der Codierungsstatistiken 840 kann beispielsweise durch Messen der Codierungsstatistiken 840, Zugreifen auf gespeicherte Kopien der Codierungsstatistiken 840 oder Empfangen einer Übertragung, die die Codierungsstatistiken 840 beinhaltet, durchgeführt werden. Das Erhalten von Kodierungsstatistiken kann wie in Bezug auf den beschriebenen Schätzer 830 und die Kodierungsstatistik 840 durchgeführt werden.
  • Bei Operation 920 werden die Kodierungsstatistiken verwendet, um den geschätzten Raumbedarf zu ermitteln, wie in Bezug auf den Schätzer 830 beschrieben.
  • Bei 930 schreibt der Bitstromschreiber 850 den ersten Wert in den ersten Wertraum und definiert den zweiten Wertraum, wie beispielsweise den Kachel-Daten-Header 710. Der erste Wert (TDS_Bits) beschreibt die Größe des Headerraums und der erste Wert basiert auf dem geschätzten Raumbedarf. Der Bitstromschreiber 850 verwendet beispielsweise die geschätzte Raumanforderung um zu ermitteln, wie viele Bits benötigt werden, um die Länge des Inhaltsraums 720 in den zweiten Wertraum zu schreiben. Dies kann durch Multiplizieren des geschätzten Raumbedarfs mit einem Faktor k (beispielsweise 1,3) zur Berücksichtigung der Variabilität und Zählen der Anzahl von Bits, die erforderlich ist, um diesen Wert als Binärzahl auszudrücken, durchgeführt werden. Der resultierende Wert ist die Anzahl der Bits, die für den Header-Speicher reserviert werden, und dieser Wert wird im ersten Wertebereich des Bitstroms als der erste Wert (TDS_Bits) gespeichert. Der erste Wert kann als ein tatsächlicher Wert oder ein repräsentativer Wert gespeichert werden, wie beispielsweise ein Deltawert, der mit einem Referenzwert kombiniert werden kann, wie beispielsweise einem Mittelwert für ein Einzelbild oder eine Reihe von Einzelbildern. Nach dem Schreiben des ersten Wertes in den Bitstrom im ersten Werteraum können die Kacheln dann kodiert werden. Zu Beginn jeder Kachel schreitet der Bitstromschreiber um eine Anzahl von Bits vor, die gleich dem Wert des ersten Wertes (TDS_Bits) sind. um den zweiten Wertraum, wie beispielsweise den Kacheldaten-Header 710 im Bitstrom 700 zum Schreiben der Länge des Inhaltsraums 720 als zweiten Wert (der TDS-Wert) zu einem späteren Zeitpunkt zu reservieren.
  • Bei Operation 940 empfängt der Bitstromschreiber 850 den codierten Inhalt von dem Codierer 820 und schreibt den codierten Inhalt zum Inhaltsraum 720.
  • Bei Operation 950 wird eine Ermittlung durchgeführt, ob die Länge des zweiten Speicherraums, der zuvor für die Speicherung des zweiten Wertes reserviert war, ausreichend ist. Bei einer Implementierung wird die Anzahl von Bits, die zum Schreiben des kodierten Inhalts in den Inhaltsraum 720 verwendet wird (d. h. die Länge des Inhaltsraums 720), in einer Form ausgedrückt, die zur Speicherung als der zweite Wert geeignet ist (z. B. ein Delta-Wert, der als Binärzahl ausgedrückt wird). Dieser Wert wird mit der Anzahl der Bits verglichen, die für den zweiten Werteraum reserviert waren. Wenn die Anzahl der Bits, die für den zweiten Wertraum reserviert sind, nicht ausreicht, um die Länge des Inhaltsraums 720 zu speichern, kehrt der Prozess zur Operation 930 zurück, wobei die tatsächliche Länge des kodierten Inhalts anstelle des geschätzten Raumbedarfs verwendet wird. Wenn also ein Raumbedarf für den zweiten Wert zum Schreiben des zweiten Wertes größer als die Größe des zweiten Wertraums, wird der zweite Wertraum neu definiert, sodass er eine korrigierte Größe auf der Grundlage des Raumbedarfs aufweist, der erste Wert wird umgeschrieben, um die korrigierte Größe zu beschreiben, und der codierte Inhalt wird in den Bitstrom umgeschrieben.
  • Wenn bei der Operation 950 die Anzahl der Bits, die für den zweiten Werteraum reserviert sind, ausreicht, um den zweiten Wert zu beschränken, der die Länge des Inhaltsraums 720 beschreibt, geht der Prozess zu Operation 960 über. Bei Operation 960 wechselt der Bitstromschreiber 850 die Position, um zum Ausgangspunkt des zweiten Wertraums zurückzukehren, und schreibt den zweiten Wert, der die Länge des Inhaltsraums 720 in dem zweiten Wertraum beschreibt, um zu ermöglichen, dass der Inhaltsraum 720 lokalisiert wird und auf den Bitstrom 700 zugegriffen wird. Der zweite Wert kann als ein tatsächlicher Wert oder ein repräsentativer Wert gespeichert werden, wie beispielsweise ein Deltawert, der mit einem Referenzwert kombiniert werden kann, wie beispielsweise einem Mittelwert für ein Einzelbild oder eine Reihe von Einzelbildern. Bei einigen Implementierungen ist der zweite Wert unkomprimiert. Bei anderen Implementierungen wird der zweite Wert komprimiert, beispielsweise durch Entropiecodierung. Der Prozess endet dann mit Bezug auf den aktuellen Teil des Eingangssignals 810 und kann für andere Teile des Eingangssignals 810 wiederholt werden.
  • 10 ist ein Flussdiagramm, das einen Prozess 1000 zur adaptiven Kachel-Datenraumkodierung gemäß einem zweiten Beispiel zeigt. Das Verfahren 900 wird mit Bezug auf den Bitstrom 700 erläutert, kann jedoch auf den Bitstrom 750 angewendet werden.
  • Während das Verfahren 900 für Echtzeitanwendungen gut geeignet ist, kann das Verfahren 1000 bessere Ergebnisse für NichtEchtzeitanwendungen erzeugen. Anstatt einen geschätzten Raumbedarf wie im Prozess 900 zu verwenden, führt der Prozess 1000 zwei Codieroperationen aus, um zuerst die Länge des codierten Inhalts zu bestimmen und anschließend den Kachel-Header und den codierten Inhalt an den Kachel-Daten-Header 710 und den Inhaltsraum zu schreiben 720.
  • Der Prozess 1000 kann, wie in Bezug auf das System 800 beschrieben, implementiert sein, beispielsweise in Form eines Softwareprogramms, das durch Rechenvorrichtungen, wie beispielsweise die Sendestation 112 oder die Empfangsstation 130, ausgeführt wird. Das Softwareprogramm kann maschinenlesbare Anweisungen beinhalten, die in einem Speicher, wie beispielsweise dem Speicher 226 gespeichert sind, der, wenn er von einem Prozessor wie der CPU 224 ausgeführt wird, das Computergerät veranlasst, den Prozess 1000 auszuführen. Der Prozess 1000 kann auch unter Verwendung von Hardware implementiert werden. Wie vorstehend erläutert, können einige Computergeräte mehrere Speicher und mehrere Prozessoren aufweisen und die Schritte des Prozesses 1000 können in diesen Fällen unter Verwendung verschiedener Prozessoren und Speicher verteilt werden. Die Verwendung der Begriffe „Prozessor“ und „Speicher“ in der Singularform umfassen Computergeräte, die nur einen Prozessor oder einen Speicher aufweisen sowie Vorrichtungen mit mehreren Prozessoren oder Speichern, die jeweils in der Ausführung einiger, aber nicht notwendigerweise aller genannten Schritte verwendet werden können.
  • Bei Operation 1010 wird eine erste Codieroperation ausgeführt, wie in Bezug auf den Codierer 820 beschrieben, um einen codierten Inhalt von einem Abschnitt des Eingangssignals 810 zu definieren. Bei Operation 1020 wird die Länge des codierten Inhalts gespeichert.
  • Bei Operation 1030 ist der Kachel-Daten-Header 710 definiert. Dies beinhaltet beispielsweise die Ermittlung der Anzahl von Bits, die erforderlich sind, um die Länge des codierten Inhalts zu codieren und diesen Wert als einen ersten Wert in den Bitstrom zu schreiben. Die Länge des codierten Inhalts wird dann als der zweite Wert in den Kachel-Daten-Header 710 geschrieben. Bei dieser Implementierung stellt der erste Wert die tatsächliche Länge des Kachel-Daten-Header 710, der erforderlich ist, dar, um den zweiten Wert zu speichern, und ist keine Schätzung. Dementsprechend gibt es keine unnötigen Bits, die dem Kachel-Daten-Header 710 zugeordnet sind, wie dies auftreten kann, wenn ein geschätzter Wert verwendet wird.
  • Bei Operation 1040 wird ein zweiter Codiervorgang durchgeführt, wie in Bezug auf den Codierer 820 beschrieben, und der resultierende codierte Inhalt wird in den Bitstrom 700 geschrieben, wie in Bezug auf den Bitstromschreiber 850 beschrieben.
  • Die vorstehend beschriebenen Aspekte der Kodierung und Dekodierung veranschaulichen einige Beispiele von Kodier- und Dekodierungstechniken. Es versteht sich jedoch, dass die Kodierung und Dekodierung, wie diese in den Ansprüchen verwendet werden, Komprimierung, Dekomprimierung, Transformation oder jede andere Verarbeitung oder Änderung von Daten bedeuten kann.
  • Das Wort „Beispiel“ oder „Aspekt“ wie hierin verwendet, dient als ein Beispiel, eine Instanz oder eine Veranschaulichung. Jeder Aspekt oder Design hierin als „Beispiel“ oder „Aspekt“ beschrieben, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs auszulegen. Vielmehr soll die Verwendung des Wortes „Beispiel“ oder „Aspekt“ Konzepte konkret darstellen. Wie in dieser Anmeldung verwendet, ist der Begriff „oder“ eher als ein integratives „oder“ als ein exklusives „oder“ zu verstehen. Das heißt, sofern nicht anders angegeben oder klar aus dem Kontext hervorgeht, „beinhaltet X A oder B“ und ist als eine der natürlichen inklusiven Permutationen zu verstehen. Das heißt, wenn X A beinhaltet; beinhaltet X B; oder wenn X sowohl A als auch B beinhaltet, beinhaltet „X A oder B“ unter Bezug auf ein beliebiges vorstehendes Beispiel. Zusätzlich sollten die in dieser Anmeldung und den anhängenden Ansprüchen verwendeten Artikel „ein“ und „eine“ im Allgemeinen als „ein‟ oder „eine“ verstanden werden, sofern nichts Anderes angegeben oder klar aus dem Zusammenhang zu einer singulären Form abgeleitet werden kann. Darüber hinaus soll die Verwendung des Begriffs „eine Implementierung“ oder „eine Implementierung“ nicht bestimmungsgemäß als dieselbe Ausführungsform oder Implementierung angesehen werden, es sei denn, dies ist ausdrücklich so beschrieben.
  • Implementationen der Sendestation 112 und/oder der Empfangsstation 130 (und die Algorithmen, Verfahren, Anweisungen usw. die darauf gespeichert sind und/oder hierdurch ausgeführt werden, einschließlich derer durch den Kodierer 470 und den Dekodierer 500) können in Hardware, Software oder einer beliebigen Kombination davon realisiert werden. Die Hardware kann beispielsweise Computer, Intellectual Property (IP) Kerne, anwendungsspezifische integrierte Schaltkreise (ASICs), programmierbare Logikarrays, optische Prozessoren, programmierbare Logiksteuerungen, Mikrocodes, Mikrocontroller, Server, Mikroprozessoren und digitale Signalprozessoren oder jede andere geeignete Schaltung beinhalten. In den Ansprüchen sollte der Begriff „Prozessor“ als jede der vorgenannten Hardware entweder einzeln oder in Kombination verstanden werden. Die Begriffe „Signal“ und „Daten“ werden austauschbar verwendet. Ferner müssen Teile der Sendestation 112 und der Empfangsstation 130 nicht notwendigerweise in der gleichen Weise implementiert werden.
  • Ferner können in einem Aspekt die Sendestation 112 oder die Empfangsstation 130 unter Verwendung eines Allzweckcomputers oder eines Allzweck-Prozessors mit einem Computerprogramm implementiert werden, das, wenn es ausgeführt wird, jedes der hierin beschriebenen Verfahren, Algorithmen und/oder Anweisungen ausführt. Zusätzlich oder alternativ kann beispielsweise ein spezieller Computer/Prozessor verwendet werden, der spezialisierte Hardware zur Durchführung eines der hierin beschriebenen Verfahren, Algorithmen oder Anweisungen beinhalten kann.
  • Die Sendestation 112 und die Empfangsstation 130 können beispielsweise auf Computer beliebigen Typs implementiert sein. So kann beispielsweise die Sendestation 112 ein Personalcomputer sein, der eine Videoerfassungsvorrichtung zum Erhalten des zu codierenden Rohvideos beinhaltet und die Empfangsstation 130 kann Personalcomputer sein, der eine Videoanzeigevorrichtung zum Anzeigen von decodiertem Video aufweist. Alternativ kann die Sendestation 112 auf einem Server als eine Sendestation implementiert sein, und die Empfangsstation 130 kann auf einem vom Server getrennten Gerät, wie beispielsweise einem Handkommunikationsgerät implementiert sein. In diesem Fall kann die Sendestation 112 Inhalte unter Verwendung eine Kodierers 470 in ein kodiertes Videosignal kodieren und das kodierte Videosignal an das Kommunikationsgerät übertragen. Im Gegenzug kann die Kommunikationsvorrichtung dann das kodierte Videosignal unter Verwendung des Dekodierers 500 dekodieren. Alternativ kann die Kommunikationsvorrichtung einen lokal auf der Kommunikationsvorrichtung gespeicherten Inhalt dekodieren, beispielsweise einen Inhalt, der nicht von der Sendestation 112 übertragen wurde. Andere geeignete Implementierungsschemata für die Sendestation 112 und die Empfangsstation 130 sind verfügbar. Als ein Beispiel kann die Empfangsstation 130 ein im Allgemeinen stationärer Personalcomputer und nicht eine tragbare Kommunikationsvorrichtung sein. Als ein weiteres Beispiel kann eine Vorrichtung, die den Codierer 470 beinhaltet, auch den Decodierer 500 beinhalten.
  • Ferner können alle oder ein Teil der Implementierungen der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das zum Beispiel von einem greifbaren computerverwendbaren oder computerlesbaren Medium zugänglich ist. Ein computerverwendbares oder computerlesbares Medium kann jedes Gerät sein, das zum Beispiel das Programm zur Verwendung durch oder in Verbindung mit einem beliebigen Prozessor fassbar beinhalten, speichern, kommunizieren oder transportieren kann. Das Medium kann beispielsweise ein elektronisches, magnetisches, optisches, elektromagnetisches oder eine Halbleitervorrichtung sein. Es sind auch andere geeignete Medien verfügbar.
  • Die vorstehend beschriebenen Ausführungsformen, Implementierungen und Aspekte wurden beschrieben, um ein leichtes Verständnis der vorliegenden Erfindung zu ermöglichen und die vorliegende Erfindung nicht zu beschränken. Im Gegenteil soll die Erfindung verschiedene Modifikationen und äquivalente Anordnungen beinhalten, die in den Schutzumfang der beigefügten Ansprüche fallen, wobei dem Umfang die breiteste Auslegung zugestanden werden soll, um alle Modifikationen und äquivalenten Strukturen, die nach dem Gesetz zulässig sind, zu umfassen.

Claims (20)

  1. Verfahren (900) zum Codieren eines Videosignals (350) in einen Bitstrom (488; 600; 700; 750), das Videoeinzelbilder (354) umfasst, wobei das Verfahren Folgendes umfasst: das Schätzen (920) eines Raumbedarfs zum Codieren einer Kachel (602, 604, 606; 701, 702, 704, 706; 752, 754, 756) eines Videoeinzelbildes der Videoeinzelbilder; das Schreiben (930) eines ersten Wertes in einen ersten Wertraum des Bitstroms, wobei der erste Wert eine Größe eines zweiten Wertraums beschreibt; das Definieren (930) des zweiten Wertraumes in dem Bitstrom, wobei die Größe des zweiten Wertraums auf dem geschätzten Raumbedarf basiert; das Schreiben (940) codierter Kachelinhaltsdaten in einen Inhaltsraum des Bitstroms; das Ermitteln (950) einer Größe des Inhaltsraumes nach dem Schreiben der codierten Kachelinhaltsdaten in den Inhaltsraum; und das Schreiben (960) eines zweiten Wertes in den zweiten Wertraum des Bitstroms, wobei der zweite Wert die ermittelte Größe des Inhaltsraumes beschreibt.
  2. Verfahren (900) nach Anspruch 1, wobei der Raumbedarf teilweise basierend auf einer Kachelgröße für die Kachel des Videoeinzelbildes geschätzt wird.
  3. Verfahren (900) nach Anspruch 1, wobei der Raumbedarf teilweise basierend auf einer Komplexität für das Videoeinzelbild geschätzt wird.
  4. Verfahren (900) nach Anspruch 3, des Weiteren umfassend: das Ermitteln der Komplexität für das Videoeinzelbild.
  5. Verfahren (900) nach Anspruch 4, wobei die Komplexität für das Videoeinzelbild teilweise basierend auf der Bewegung in dem Videoeinzelbild ermittelt wird.
  6. Verfahren (900) nach Anspruch 4, wobei die Komplexität für das Videoeinzelbild einer ausgewählten Komplexitätsklassifikation aus einer Vielzahl von vorbestimmten Komplexitätsklassifikationen entspricht.
  7. Verfahren (900) nach einem der Ansprüche 1-6, des Weiteren umfassend: das Speichern von statistischen Daten vor dem Abschätzen des Raumbedarfs zum Codieren der Kachel des Videoeinzelbildes, die einen vorherigen Inhalt aus dem Videosignal beschreiben.
  8. Verfahren (900) nach einem der Ansprüche 1-7, des Weiteren umfassend: das Ermitteln, ob ein Raumbedarf zum Schreiben des zweiten Wertes größer als die Größe des zweiten Wertraums ist, bevor der zweite Wert in den zweiten Wertraum des Bitstroms geschrieben wird, wobei, wenn der Raumbedarf zum Schreiben des zweiten Wertes größer als die Größe des zweiten Wertraums ist, der zweite Wertraum so neu definiert wird, dass der zweite Wertraum eine korrigierte Größe auf der Grundlage des Raumbedarfs aufweist, wird der erste Wert umgeschrieben, um die korrigierte Größe zu beschreiben, und der kodierte Inhalt wird in den Bitstrom umgeschrieben.
  9. Verfahren (900) nach einem der Ansprüche 1-8, wobei der erste Wertraum innerhalb eines Einzelbildebenen-Datenraums liegt und im Bitstrom vor dem zweiten Wertraum angeordnet ist.
  10. Verfahren (900) nach Anspruch 9, wobei der zweite Wertraum ein Kachelebenen-Datenraum ist.
  11. Vorrichtung (200) zum Codieren eines Videosignals mit Videoeinzelbildern in einen Bitstrom, wobei die Vorrichtung umfasst: einen Speicher (236); und einen Prozessor (224), der konfiguriert ist, um Anweisungen auszuführen, die in dem Speicher (236) gespeichert sind zum: Schätzen (920) eines Raumbedarfs zum Codieren einer Kachel (602, 604, 606; 701, 702, 704, 706; 752, 754, 756) eines Videoeinzelbildes der Videoeinzelbilder; Schreiben (930) eines ersten Wertes in einen ersten Wertraum des Bitstroms, wobei der erste Wert eine Größe eines zweiten Wertraums beschreibt; Definieren (930) des zweiten Wertraumes in dem Bitstrom, wobei die Größe des zweiten Wertraums auf dem geschätzten Raumbedarf basiert; Schreiben (940) codierter Kachelinhaltsdaten in einen Inhaltsraum des Bitstroms; Ermitteln (950) einer Größe des Inhaltsraumes nach dem Schreiben der codierten Kachelinhaltsdaten in den Inhaltsraum; und Schreiben (960) eines zweiten Wertes in den zweiten Wertraum des Bitstroms, wobei der zweite Wert die ermittelte Größe des Inhaltsraumes beschreibt.
  12. Vorrichtung (200) nach Anspruch 11, wobei der Raumbedarf teilweise basierend auf einer Kachelgröße für die Kachel des Videoeinzelbildes geschätzt wird.
  13. Vorrichtung (200) nach Anspruch 12, wobei der Raumbedarf teilweise basierend auf einer Komplexität für das Videoeinzelbild geschätzt wird.
  14. Vorrichtung (200) nach Anspruch 13, wobei der Prozessor ferner konfiguriert ist, Anweisungen auszuführen, die in dem Speicher gespeichert sind, zum: Ermitteln der Komplexität für das Videoeinzelbild.
  15. Vorrichtung (200) nach Anspruch 14, wobei die Komplexität für das Videoeinzelbild teilweise basierend auf der Bewegung in dem Videoeinzelbild ermittelt wird.
  16. Vorrichtung (200) nach Anspruch 14, wobei die Komplexität für das Videoeinzelbild einer ausgewählten Komplexitätsklassifikation aus einer Vielzahl von vorbestimmten Komplexitätsklassifikationen entspricht.
  17. Vorrichtung (200) nach einem der Ansprüche 11-16, wobei der Prozessor ferner konfiguriert ist, Anweisungen auszuführen, die in dem Speicher gespeichert sind, zum: Speichern von statistischen Daten vor dem Abschätzen des Raumbedarfs zum Codieren der Kachel des Videoeinzelbildes, die einen vorherigen Inhalt aus dem Videosignal beschreiben.
  18. Vorrichtung (200) nach einem der Ansprüche 11-17, wobei der Prozessor ferner konfiguriert ist, Anweisungen auszuführen, die in dem Speicher gespeichert sind, zum: Ermitteln, ob ein Raumbedarf zum Schreiben des zweiten Wertes größer als die Größe des zweiten Wertraums ist, bevor der zweite Wert in den zweiten Wertraum des Bitstroms geschrieben wird, wobei, wenn der Raumbedarf zum Schreiben des zweiten Wertes größer als die Größe des zweiten Wertraums ist, der zweite Wertraum so neu definiert wird, dass der zweite Wertraum eine korrigierte Größe auf der Grundlage des Raumbedarfs aufweist, wird der erste Wert umgeschrieben, um die korrigierte Größe zu beschreiben, und der kodierte Inhalt wird in den Bitstrom umgeschrieben.
  19. Vorrichtung (200) nach einem der Ansprüche 11-18, wobei der erste Wertraum innerhalb des Einzelbildebenen-Datenraums liegt und im Bitstrom vor dem zweiten Wertraum angeordnet ist.
  20. Vorrichtung (200) nach Anspruch 19, wobei der zweite Wertraum im Bitstrom nach dem ersten Wertraum angeordnet ist.
DE102016124917.3A 2016-01-11 2016-12-20 Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression Active DE102016124917B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/992,407 2016-01-11
US14/992,407 US9794574B2 (en) 2016-01-11 2016-01-11 Adaptive tile data size coding for video and image compression

Publications (2)

Publication Number Publication Date
DE102016124917A1 DE102016124917A1 (de) 2017-07-13
DE102016124917B4 true DE102016124917B4 (de) 2022-03-03

Family

ID=57794369

Family Applications (3)

Application Number Title Priority Date Filing Date
DE102016124917.3A Active DE102016124917B4 (de) 2016-01-11 2016-12-20 Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression
DE202016008202.8U Active DE202016008202U1 (de) 2016-01-11 2016-12-20 Anpassungsfähige Kachel-Daten-Größenkodierung für Video- und Bildkompression
DE102016015996.0A Active DE102016015996B3 (de) 2016-01-11 2016-12-20 Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE202016008202.8U Active DE202016008202U1 (de) 2016-01-11 2016-12-20 Anpassungsfähige Kachel-Daten-Größenkodierung für Video- und Bildkompression
DE102016015996.0A Active DE102016015996B3 (de) 2016-01-11 2016-12-20 Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression

Country Status (5)

Country Link
US (2) US9794574B2 (de)
CN (2) CN107018416B (de)
DE (3) DE102016124917B4 (de)
GB (2) GB2546885B (de)
WO (1) WO2017123389A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10602192B2 (en) * 2016-02-04 2020-03-24 Mediatek Inc. Methods and apparatuses for performing entropy encoding and entropy decoding with size determination of at least one bitstream portion
CN110651482B (zh) * 2017-03-30 2022-02-22 联发科技股份有限公司 发信isobmff的球面区域信息的方法和装置
US10595048B1 (en) * 2018-09-13 2020-03-17 Tencent America LLC Method and device using high layer syntax architecture for coding and decoding
US11875495B2 (en) * 2020-08-10 2024-01-16 Tencent America LLC Methods of video quality assessment using parametric and pixel level models

Family Cites Families (183)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CH522330A (de) 1971-06-03 1972-06-15 Ibm Verfahren und Einrichtung zur Codierung und Decodierung von Videosignalen
US4729127A (en) 1981-10-20 1988-03-01 The United States Of America As Represented By The Secretary Of The Army Method and system for compression and reconstruction of cultural data for use in a digital moving map display
US4719642A (en) 1985-02-27 1988-01-12 Scientific Atlanta, Inc. Error detection and concealment using predicted signal values
US4736446A (en) 1985-03-29 1988-04-05 Quad-Tech Inc. Cutoff control system
GB2189106B (en) 1986-04-14 1990-02-14 Philips Electronic Associated Image display
US4891748A (en) 1986-05-30 1990-01-02 Mann Ralph V System and method for teaching physical skills
US4797729A (en) 1988-02-05 1989-01-10 Eastman Kodak Company System incorporating an error tolerant picture compression algorithm
JPH03129987A (ja) 1989-10-14 1991-06-03 Sony Corp 映像信号符号化装置及び映像信号符号化方法
US5136371A (en) 1990-03-15 1992-08-04 Thomson Consumer Electronics, Inc. Digital image coding using random scanning
US5091782A (en) 1990-04-09 1992-02-25 General Instrument Corporation Apparatus and method for adaptively compressing successive blocks of digital video
US5083214A (en) 1990-05-02 1992-01-21 Eastman Kodak Company Apparatus and methods for extracting data from a scanned bit-mapped data strip
US5068724A (en) 1990-06-15 1991-11-26 General Instrument Corporation Adaptive motion compensation for digital television
GB9015986D0 (en) 1990-07-20 1990-09-05 Philips Electronic Associated Image display
US5164819A (en) 1991-04-03 1992-11-17 Music John D Method and system for coding and compressing color video signals
US5313306A (en) 1991-05-13 1994-05-17 Telerobotics International, Inc. Omniview motionless camera endoscopy system
US5341440A (en) 1991-07-12 1994-08-23 Earl Joseph G Method and apparatus for increasing information compressibility
JP2586260B2 (ja) 1991-10-22 1997-02-26 三菱電機株式会社 適応的ブロッキング画像符号化装置
US6208805B1 (en) 1992-02-07 2001-03-27 Max Abecassis Inhibiting a control function from interfering with a playing of a video
US5434678A (en) 1993-01-11 1995-07-18 Abecassis; Max Seamless transmission of non-sequential video segments
US5225832A (en) 1992-02-13 1993-07-06 Industrial Technology Research Institute High speed variable length decoder
US5506621A (en) 1992-08-21 1996-04-09 Canon Kabushiki Kaisha Image processing method and apparatus
AU6099594A (en) 1993-02-03 1994-08-29 Qualcomm Incorporated Interframe video encoding and decoding system
US5381145A (en) 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
US6181822B1 (en) 1993-05-12 2001-01-30 The Duck Corporation Data compression apparatus and method
US6327304B1 (en) 1993-05-12 2001-12-04 The Duck Corporation Apparatus and method to digitally compress video signals
US5432870A (en) 1993-06-30 1995-07-11 Ricoh Corporation Method and apparatus for compressing and decompressing images of documents
US5452006A (en) 1993-10-25 1995-09-19 Lsi Logic Corporation Two-part synchronization scheme for digital video decoders
US5999641A (en) 1993-11-18 1999-12-07 The Duck Corporation System for manipulating digitized image objects in three dimensions
US5576765A (en) 1994-03-17 1996-11-19 International Business Machines, Corporation Video decoder
JPH07288819A (ja) 1994-04-19 1995-10-31 Sony Corp 動きベクトル検出装置
KR0134483B1 (ko) 1994-06-14 1998-05-15 배순훈 디코더에 있어서 어드레스 보정 회로(address correction circuit of the decoder)
JP3474005B2 (ja) 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US5561477A (en) 1994-10-26 1996-10-01 Thomson Consumer Electronics, Inc. System for coding a video signal in the presence of an image intensity gradient
JPH08275160A (ja) 1995-03-27 1996-10-18 Internatl Business Mach Corp <Ibm> 離散余弦変換方法
US5818969A (en) 1995-05-12 1998-10-06 Intel Corporation Intelligent start for motion estimation search
US5930493A (en) 1995-06-07 1999-07-27 International Business Machines Corporation Multimedia server system and method for communicating multimedia information
US5734744A (en) 1995-06-07 1998-03-31 Pixar Method and apparatus for compression and decompression of color data
MY121607A (en) 1995-07-10 2006-02-28 Hyundai Curitel Inc Grid moving method of object image and apparatus using the same and compaction/motion estimation method using the same and apparatus thereof
US5659539A (en) 1995-07-14 1997-08-19 Oracle Corporation Method and apparatus for frame accurate access of digital audio-visual information
US6119154A (en) 1995-07-14 2000-09-12 Oracle Corporation Method and apparatus for non-sequential access to an in-progress video feed
US5774593A (en) 1995-07-24 1998-06-30 University Of Washington Automatic scene decomposition and optimization of MPEG compressed video
US5794179A (en) 1995-07-27 1998-08-11 Victor Company Of Japan, Ltd. Method and apparatus for performing bit-allocation coding for an acoustic signal of frequency region and time region correction for an acoustic signal and method and apparatus for decoding a decoded acoustic signal
US5793647A (en) 1995-08-15 1998-08-11 Diffracto, Ltd. System and method for graphical image data acquistion, storage, and retrieval
WO1997017797A2 (en) 1995-10-25 1997-05-15 Sarnoff Corporation Apparatus and method for quadtree based variable block size motion estimation
US5929940A (en) 1995-10-25 1999-07-27 U.S. Philips Corporation Method and device for estimating motion between images, system for encoding segmented images
US6160846A (en) 1995-10-25 2000-12-12 Sarnoff Corporation Apparatus and method for optimizing the rate control in a coding system
US6041145A (en) 1995-11-02 2000-03-21 Matsushita Electric Industrial Co., Ltd. Device and method for smoothing picture signal, device and method for encoding picture and device and method for decoding picture
GB2308262B (en) 1995-12-16 1999-08-04 Paul Gordon Wilkins Method for analysing the content of a video signal
US5748247A (en) 1996-04-08 1998-05-05 Tektronix, Inc. Refinement of block motion vectors to achieve a dense motion field
JP3228874B2 (ja) 1996-06-05 2001-11-12 松下電器産業株式会社 圧縮ディジタルビデオビットストリーム分割方法及び装置、並びにその復号方法及び装置
US5828370A (en) 1996-07-01 1998-10-27 Thompson Consumer Electronics Inc. Video delivery system and method for displaying indexing slider bar on the subscriber video screen
JP3510433B2 (ja) 1996-11-26 2004-03-29 シャープ株式会社 画像処理装置
US6594315B1 (en) 1996-12-18 2003-07-15 Thomson Licensing S.A. Formatting of recompressed data in an MPEG decoder
US6496537B1 (en) 1996-12-18 2002-12-17 Thomson Licensing S.A. Video decoder with interleaved data processing
US5963203A (en) 1997-07-03 1999-10-05 Obvious Technology, Inc. Interactive video icon with designated viewing position
US6014706A (en) 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
US6188799B1 (en) 1997-02-07 2001-02-13 Matsushita Electric Industrial Co., Ltd. Method and apparatus for removing noise in still and moving pictures
JP3095140B2 (ja) 1997-03-10 2000-10-03 三星電子株式会社 ブロック化効果の低減のための一次元信号適応フィルター及びフィルタリング方法
JP3351705B2 (ja) 1997-04-25 2002-12-03 日本ビクター株式会社 動き補償符号化装置、動き補償符号化方法、及び記録媒体への記録方法
US6125229A (en) 1997-06-02 2000-09-26 Philips Electronics North America Corporation Visual indexing system
US6112234A (en) 1997-07-01 2000-08-29 Leiper; Thomas W. Method for transfer of radiographic images
US6108383A (en) 1997-07-15 2000-08-22 On2.Com, Inc. Method and apparatus for compression and decompression of video images
KR100244290B1 (ko) 1997-09-09 2000-02-01 구자홍 저속 전송에서의 동영상을 위한 디블록킹 필터링 방법
JP3213584B2 (ja) 1997-09-19 2001-10-02 シャープ株式会社 画像符号化装置及び画像復号装置
US6292837B1 (en) 1997-10-30 2001-09-18 Daniel Miller Apparatus and method for non-sequential image data transmission and display
US6366704B1 (en) 1997-12-01 2002-04-02 Sharp Laboratories Of America, Inc. Method and apparatus for a delay-adaptive rate control scheme for the frame layer
US6181742B1 (en) 1998-01-26 2001-01-30 International Business Machines Corporation Single pass target allocation for video encoding
JP4427827B2 (ja) 1998-07-15 2010-03-10 ソニー株式会社 データ処理方法、データ処理装置及び記録媒体
DE19835845A1 (de) 1998-08-07 2000-02-10 Siemens Ag Verfahren und Anordnung zur Bewegungsschätzung in einem digitalisierten Bild mit Bildpunkten
US6697061B1 (en) 1999-01-21 2004-02-24 Hewlett-Packard Development Company, L.P. Image compression featuring selective re-use of prior compression data
US6529638B1 (en) 1999-02-01 2003-03-04 Sharp Laboratories Of America, Inc. Block boundary artifact reduction for block-based image compression
US6400763B1 (en) 1999-02-18 2002-06-04 Hewlett-Packard Company Compression system which re-uses prior motion vectors
JP2000270328A (ja) 1999-03-17 2000-09-29 Mitsubishi Electric Corp 動きベクトル検出装置
US6735249B1 (en) 1999-08-11 2004-05-11 Nokia Corporation Apparatus, and associated method, for forming a compressed motion vector field utilizing predictive motion coding
US7227589B1 (en) 1999-12-22 2007-06-05 Intel Corporation Method and apparatus for video decoding on a multiprocessor system
JP2003518882A (ja) 1999-12-28 2003-06-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Snrスケーラブルビデオ符号化方法及び対応する復号化方法
US6522784B1 (en) 2000-04-11 2003-02-18 International Business Machines Corporation Enhanced compression of gray-level images
EP1152621A1 (de) 2000-05-05 2001-11-07 STMicroelectronics S.r.l. Verfahren und System zur Bewegungsschätzung
US6876703B2 (en) 2000-05-11 2005-04-05 Ub Video Inc. Method and apparatus for video coding
US6707952B1 (en) 2000-05-30 2004-03-16 Sharp Laboratories Of America, Inc. Method for removing ringing artifacts from locations near dominant edges of an image reconstructed after compression
US7079579B2 (en) 2000-07-13 2006-07-18 Samsung Electronics Co., Ltd. Block matching processor and method for block matching motion estimation in video compression
US20050210145A1 (en) 2000-07-24 2005-09-22 Vivcom, Inc. Delivering and processing multimedia bookmark
US6765964B1 (en) 2000-12-06 2004-07-20 Realnetworks, Inc. System and method for intracoding video data
EP1360841A1 (de) 2001-02-06 2003-11-12 Koninklijke Philips Electronics N.V. Vorverarbeitungsverfahren, das auf texturen beliebig geformter objekte angewandt wird
US20030023982A1 (en) 2001-05-18 2003-01-30 Tsu-Chang Lee Scalable video encoding/storage/distribution/decoding for symmetrical multiple video processors
US6987866B2 (en) 2001-06-05 2006-01-17 Micron Technology, Inc. Multi-modal motion estimation for video sequences
US7801215B2 (en) 2001-07-24 2010-09-21 Sasken Communication Technologies Limited Motion estimation technique for digital video encoding applications
US7027654B1 (en) 2001-08-16 2006-04-11 On2 Technologies Video compression system
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US8401084B2 (en) 2002-04-01 2013-03-19 Broadcom Corporation System and method for multi-row decoding of video with dependent rows
US7170937B2 (en) 2002-05-01 2007-01-30 Texas Instruments Incorporated Complexity-scalable intra-frame prediction technique
US7469012B2 (en) 2002-05-14 2008-12-23 Broadcom Corporation System and method for transcoding entropy-coded bitstreams
US7305036B2 (en) 2002-05-14 2007-12-04 Broadcom Corporation System and method for entropy code preprocessing
US7813431B2 (en) 2002-05-20 2010-10-12 Broadcom Corporation System, method, and apparatus for decoding flexibility ordered macroblocks
US7236524B2 (en) 2002-05-28 2007-06-26 Sharp Laboratories Of America, Inc. Methods and systems for image intra-prediction mode communication
KR100504471B1 (ko) 2002-08-08 2005-08-03 엘지전자 주식회사 비디오 디코딩 시스템
AU2002951574A0 (en) 2002-09-20 2002-10-03 Unisearch Limited Method of signalling motion information for efficient scalable video compression
AU2003279015A1 (en) 2002-09-27 2004-04-19 Videosoft, Inc. Real-time video coding/decoding
US7170934B2 (en) 2002-12-20 2007-01-30 Lsi Logic Corporation Method and/or apparatus for motion estimation using a hierarchical search followed by a computation split for different block sizes
EP1579311A2 (de) 2002-12-20 2005-09-28 Koninklijke Philips Electronics N.V. Segmentbasierte bewegungsbestimmung
FR2852180B1 (fr) * 2003-03-07 2005-08-26 Thales Sa Procede et systeme de protection de donnees avec en-tete dans un systeme de transmission
US8824553B2 (en) 2003-05-12 2014-09-02 Google Inc. Video compression method
US7327786B2 (en) 2003-06-02 2008-02-05 Lsi Logic Corporation Method for improving rate-distortion performance of a video compression system through parallel coefficient cancellation in the transform
ITMI20031128A1 (it) 2003-06-05 2004-12-06 St Microelectronics Srl Metodo ed apparato per decodificare immagini digitali
US20050050002A1 (en) 2003-07-11 2005-03-03 Benjamin Slotznick Apparatus and method of presenting textual material to enhance readability for people who have difficulty distinguishing left from right
US7330509B2 (en) 2003-09-12 2008-02-12 International Business Machines Corporation Method for video transcoding with adaptive frame rate control
TWI236278B (en) 2003-11-13 2005-07-11 Mediatek Inc Video bit stream decoding system and method used in a video decoding apparatus
US7362809B2 (en) 2003-12-10 2008-04-22 Lsi Logic Corporation Computational reduction in motion estimation based on lower bound of cost function
KR20050072526A (ko) 2004-01-06 2005-07-12 삼성전자주식회사 예측 부호화 장치, 예측 부호화 방법 및 상기 예측 부호화방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한기록매체
US7599435B2 (en) 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
JP4217174B2 (ja) 2004-02-13 2009-01-28 パナソニック株式会社 動画符号化装置および動画符号化方法
US7991053B2 (en) 2004-05-04 2011-08-02 Qualcomm Incorporated Method and apparatus to enable acquisition of media in streaming applications
KR20050112445A (ko) 2004-05-25 2005-11-30 경희대학교 산학협력단 예측 부호화/복호화 장치, 예측 부호화/복호화 방법 및 그방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한기록매체
US7953152B1 (en) 2004-06-28 2011-05-31 Google Inc. Video compression and encoding method
DE602005020218D1 (de) 2004-07-29 2010-05-12 St Microelectronics Pvt Ltd Videodekoder mit Parallelprozessoren für die Dekodierung von Makroblocks
US7558428B2 (en) 2004-09-13 2009-07-07 Microsoft Corporation Accelerated video encoding using a graphics processing unit
US7830964B2 (en) 2004-11-24 2010-11-09 Lsi Corporation Method and/or apparatus for parsing compressed video bitstreams
US7630565B2 (en) 2004-11-30 2009-12-08 Lsi Corporation Parallel video encoder with whole picture deblocking and/or whole picture compressed as a single slice
WO2006063146A2 (en) 2004-12-08 2006-06-15 Encomia, L.P. Creating a markup language document having empty fields, and assistance links
US20060126726A1 (en) 2004-12-10 2006-06-15 Lin Teng C Digital signal processing structure for decoding multiple video standards
US7430238B2 (en) 2004-12-10 2008-09-30 Micronas Usa, Inc. Shared pipeline architecture for motion vector prediction and residual decoding
JP4064973B2 (ja) 2005-03-23 2008-03-19 株式会社東芝 ビデオエンコーダ及びこれを用いた携帯無線端末装置
US20060256858A1 (en) 2005-05-16 2006-11-16 Douglas Chin Method and system for rate control in a video encoder
EP1732329A1 (de) 2005-06-06 2006-12-13 STMicroelectronics S.r.l. Verfahren und Vorrichtung zur Bewegtbildercodierung
US20070025441A1 (en) 2005-07-28 2007-02-01 Nokia Corporation Method, module, device and system for rate control provision for video encoders capable of variable bit rate encoding
JP4716949B2 (ja) * 2005-09-02 2011-07-06 株式会社リコー 画像処理装置および画像処理方法
KR100727972B1 (ko) 2005-09-06 2007-06-14 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
CA2623297C (en) 2005-09-20 2011-11-01 Mitsubishi Electric Corporation Image encoding method and image decoding method, image encoder and image decoder, and image encoded bit stream and recording medium
US20070086528A1 (en) 2005-10-18 2007-04-19 Mauchly J W Video encoder with multiple processors
US7852940B2 (en) 2005-10-20 2010-12-14 Qualcomm Incorporated Scalable motion estimation for video encoding
FR2894740A1 (fr) 2005-12-12 2007-06-15 Thomson Licensing Sa Dispositif de codage, procede de codage, systeme de decodage procede de decodage de donnees video
US7952643B2 (en) 2006-03-30 2011-05-31 Intel Corporation Pipelining techniques for deinterlacing video information
US8019002B2 (en) 2006-06-08 2011-09-13 Qualcomm Incorporated Parallel batch decoding of video blocks
WO2008020470A1 (en) 2006-08-15 2008-02-21 Fujitsu Limited Decoding method and device
US9055306B2 (en) 2006-08-31 2015-06-09 Ati Technologies Ulc Parallel decoding method and system for highly compressed data
US7912302B2 (en) 2006-09-21 2011-03-22 Analog Devices, Inc. Multiprocessor decoder system and method
US20080152014A1 (en) 2006-12-21 2008-06-26 On Demand Microelectronics Method and apparatus for encoding and decoding of video streams
US20080159407A1 (en) 2006-12-28 2008-07-03 Yang Nick Y Mechanism for a parallel processing in-loop deblock filter
US8594137B2 (en) 2007-02-20 2013-11-26 Teradici Corporation Apparatus and methods for image decoding
US8594180B2 (en) 2007-02-21 2013-11-26 Qualcomm Incorporated 3D video encoding
US8416857B2 (en) 2007-03-29 2013-04-09 James Au Parallel or pipelined macroblock processing
US8331663B2 (en) * 2007-06-28 2012-12-11 Qualcomm Incorporated Efficient image compression scheme to minimize storage and bus bandwidth requirements
US8265144B2 (en) 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US8098733B2 (en) 2008-03-10 2012-01-17 Neomagic Corp. Multi-directional motion estimation using parallel processors and pre-computed search-strategy offset tables
US9055301B2 (en) 2008-03-18 2015-06-09 Texas Instruments Incorporated Changing motion estimation precision to maintain encoding within desired time
US20090249178A1 (en) 2008-04-01 2009-10-01 Ambrosino Timothy J Document linking
WO2009150801A1 (ja) 2008-06-10 2009-12-17 パナソニック株式会社 復号化装置、復号化方法及び受信装置
US8311111B2 (en) 2008-09-11 2012-11-13 Google Inc. System and method for decoding using parallel processing
US8175161B1 (en) 2008-09-12 2012-05-08 Arecont Vision, Llc. System and method for motion estimation
US8855191B2 (en) 2008-11-24 2014-10-07 Broadcast International, Inc. Parallelization of high-performance video encoding on a single-chip multiprocessor
WO2010063184A1 (en) 2008-12-03 2010-06-10 Mediatek Inc. Method for performing parallel cabac processing with ordered entropy slices, and associated apparatus
SG173007A1 (en) 2009-01-15 2011-08-29 Agency Science Tech & Res Image encoding methods, image decoding methods, image encoding apparatuses, and image decoding apparatuses
KR100958177B1 (ko) 2009-01-22 2010-05-14 주식회사 코아로직 영상의 부호화 방법 및 장치
US8311115B2 (en) 2009-01-29 2012-11-13 Microsoft Corporation Video encoding using previously calculated motion information
TWI463861B (zh) 2009-03-17 2014-12-01 Mstar Semiconductor Inc 消除蚊狀雜訊裝置及方法
US8520734B1 (en) 2009-07-31 2013-08-27 Teradici Corporation Method and system for remotely communicating a computer rendered image sequence
JP2011041037A (ja) 2009-08-12 2011-02-24 Sony Corp 画像処理装置および方法
US8503534B2 (en) 2010-04-22 2013-08-06 Maxim Integrated Products, Inc. Multi-bus architecture for a video codec
KR101081317B1 (ko) 2010-07-12 2011-11-08 전북대학교산학협력단 릴레이 기반의 df 협력 무선 네트워크에서 분산형 μιμο 채널 프리코딩 및 디코딩 방법
US9185406B2 (en) 2010-09-16 2015-11-10 Panasonic Intellectual Property Management Co., Ltd. Image decoding device, image coding device, methods thereof, programs thereof, integrated circuits thereof, and transcoding device
US8837601B2 (en) 2010-12-10 2014-09-16 Netflix, Inc. Parallel video encoding based on complexity analysis
US9060174B2 (en) * 2010-12-28 2015-06-16 Fish Dive, Inc. Method and system for selectively breaking prediction in video coding
US9215473B2 (en) * 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
US8331703B2 (en) 2011-02-18 2012-12-11 Arm Limited Parallel image encoding
US20120230399A1 (en) 2011-03-10 2012-09-13 Christopher Andrew Segall Video decoder parallelization including a bitstream signal
US8767817B1 (en) 2011-04-07 2014-07-01 Google Inc. Apparatus and method for coding using parameterized equation
US8767824B2 (en) 2011-07-11 2014-07-01 Sharp Kabushiki Kaisha Video decoder parallelization for tiles
US20130034150A1 (en) 2011-08-05 2013-02-07 Texas Instruments Incorporated Systems and methods for multimedia data encoding and decoding
US8872895B2 (en) 2011-09-30 2014-10-28 Deutsche Telekom Ag Real-time video coding using graphics rendering contexts
US9100657B1 (en) 2011-12-07 2015-08-04 Google Inc. Encoding time management in parallel real-time video encoding
US9100509B1 (en) 2012-02-07 2015-08-04 Google Inc. Dynamic bit allocation in parallel video encoding
US20130259137A1 (en) 2012-03-30 2013-10-03 Google Inc. System and Method for Multi-Core Hardware Video Encoding And Decoding
US20150043645A1 (en) 2012-06-20 2015-02-12 Google Inc. Video stream partitioning to allow efficient concurrent hardware decoding
JP6080405B2 (ja) 2012-06-29 2017-02-15 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP6214235B2 (ja) * 2012-07-02 2017-10-18 キヤノン株式会社 ファイル生成方法、ファイル生成装置、及びプログラム
KR101812615B1 (ko) * 2012-09-28 2017-12-27 노키아 테크놀로지스 오와이 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
CN102905150B (zh) * 2012-10-22 2015-04-08 北京航空航天大学 一种新的多视点视频分形编码压缩与解压缩方法
CN104838654B (zh) * 2012-12-06 2018-11-06 索尼公司 解码装置、解码方法以及程序
JP2014165868A (ja) * 2013-02-27 2014-09-08 Canon Inc 画像処理装置及びその制御方法
CN104113759B (zh) * 2013-04-17 2018-03-23 展讯通信(上海)有限公司 视频系统、视频帧缓存再压缩/解压缩方法与装置
US9736488B2 (en) 2013-11-27 2017-08-15 Nxp Usa, Inc. Decoding for high efficiency video transcoding
EP3078023B1 (de) * 2013-12-02 2019-12-25 Dolby International AB Verfahren zur bitratensignalisierung und bitstromformat zur umsetzung des verfahrens
US10750198B2 (en) 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FULDSETH, Arild [et al.]: Tiles for managing computational complexity of video encoding and decoding. In: 2012 Picture Coding Symposium – PCS 2012 – proceedings, May 7-9, 2012, S. 389-392. – ISBN 978-1-4577-2048-2
MISRA, Kiran ; SEGALL, Andrew: Tiles for parallel decoding. In: Joint collaborative team on video coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 5th meeting: Geneva, 16-23 March, 2011 (JCTVC-E412).
MISRA, Kiran [et al.]: An overview of tiles in HEVC. In: IEEE Journal of selected topics in signal processing, Vol. 7, 2013, No. 6, S. 969-977. – ISSN 1932-4553

Also Published As

Publication number Publication date
GB2579753B (en) 2020-10-14
GB202004527D0 (en) 2020-05-13
US20180007366A1 (en) 2018-01-04
CN111432213B (zh) 2022-05-27
CN111432213A (zh) 2020-07-17
GB2546885A (en) 2017-08-02
GB2546885B (en) 2020-05-13
US9794574B2 (en) 2017-10-17
GB2579753A (en) 2020-07-01
DE202016008202U1 (de) 2017-04-27
CN107018416B (zh) 2020-03-03
DE102016124917A1 (de) 2017-07-13
WO2017123389A1 (en) 2017-07-20
US10021398B2 (en) 2018-07-10
GB201621548D0 (en) 2017-02-01
DE102016015996B3 (de) 2022-10-27
CN107018416A (zh) 2017-08-04
US20170201752A1 (en) 2017-07-13

Similar Documents

Publication Publication Date Title
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE102016125379B4 (de) Bewegungsvektoraufteilung des letzten Frames
DE202016008192U1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
DE102016125353A1 (de) Kodierratensteuerung von echtzeitvideos unter verwendung einer dynamischen auflösungsumschaltung
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE102016125125B4 (de) Tile-Copying für Videokompression
DE102019218837A1 (de) VERFAHREN UND SYSTE M ZUR NEURONALNETZ WERK-SCHLEIFENFILTERUNG ZUR VlDEOCODIERUNG
DE102016124917B4 (de) Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE202016008164U1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE102016125086A1 (de) Adaptiver direktionaler Schleifenfilter
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE102019209067A1 (de) Adaptive in-loop filtering for video coding
DE112017003212T5 (de) Verfahren und System zur Videocodierung mit Kontextdecodierung und Rekonstruktionsumgehung
DE112015003805T5 (de) Bewegungskompensierte partitionierung
DE102019215911A1 (de) Adaptive inhaltsquantisierung zur videocodierung
DE202016008194U1 (de) Bewegungsvektorvorhersage durch Skalierung
CN115002487A (zh) 空间自适应量化感知去块滤波器
DE102016125456A1 (de) Kodierinterpolationsfilter
DE112015004399T5 (de) Frequenzbereichsentstörung
DE112015005159B4 (de) Kodierung im alternierenden blockbeschränkten entscheidungsmodus
DE60100026T2 (de) Verfahren und Vorrichtung für fast verlustfreie verkettete Blocktransformkodierung
DE102016125593B4 (de) Dynamischer Kodiermodus für Referenz-Bewegungsvektoren
DE102011002325A1 (de) Einrichtung mit vertikalem und/oder horizontalem Cachespeicher und in einem Kodierer und/oder Dekodierer verwendete Verfahren
DE102004029086B4 (de) Verfahren zum Entblocken und Umcodieren eines Medienstroms

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R138 Derivation of utility model

Ref document number: 202016008202

Country of ref document: DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102016015996

Country of ref document: DE

R020 Patent grant now final