DE102016125125B4 - Tile-Copying für Videokompression - Google Patents

Tile-Copying für Videokompression Download PDF

Info

Publication number
DE102016125125B4
DE102016125125B4 DE102016125125.9A DE102016125125A DE102016125125B4 DE 102016125125 B4 DE102016125125 B4 DE 102016125125B4 DE 102016125125 A DE102016125125 A DE 102016125125A DE 102016125125 B4 DE102016125125 B4 DE 102016125125B4
Authority
DE
Germany
Prior art keywords
tile
encoded
frame
current
header
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
DE102016125125.9A
Other languages
English (en)
Other versions
DE102016125125A1 (de
Inventor
Yunqing Wang
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 DE102016125125A1 publication Critical patent/DE102016125125A1/de
Application granted granted Critical
Publication of DE102016125125B4 publication Critical patent/DE102016125125B4/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/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/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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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/176Methods 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 block, e.g. a macroblock
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks

Landscapes

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

Abstract

Verfahren, umfassend:das Kodieren eines Einzelbildes (330) aus einem Eingangsvideostrom (300) durch einen Prozessor (140) als Reaktion auf Anweisungen, die auf einem nichtflüchtigen computerlesbaren Medium (150) gespeichert sind, durch:das Identifizieren (1200) von Kacheln (1120; 1130; 1140; 1320; 1330; 1340) aus Einzelbildern, wobei eine Kachel eine Vielzahl von Blöcken (710; 810; 910; 1010) beinhaltet;das Erzeugen (1210) einer ersten kodierten Kachel durch Kodieren einer ersten Kachel aus den Kacheln (1120; 1130; 1140; 1320; 1330; 1340);das Einschließen (1220) der ersten kodierten Kachel in einem Ausgangsbitstrom (1100; 1300), wobei der Ausgangsbitstrom (1100; 1300) einen Kachel-Header (1122; 1132; 1142; 1322; 1332; 1342) und einen Kachelkörper (1124; 1134; 1144; 1328; 1348) für die erste kodierte Kachel beinhaltet;das Erzeugen (1230) einer zweiten kodierten Kachel durch Kodieren einer zweiten Kachel aus den Kacheln (1120; 1130; 1140; 1320; 1330; 1340);das Ermitteln (1240), ob eine Differenz zwischen dem kodierten Kachelinhalt der ersten kodierten Kachel und dem kodierten Kachelinhalt der zweiten kodierten Kachel innerhalb eines Schwellenwerts liegt;unter einer Bedingung, dass die Differenz innerhalb des Schwellenwerts liegt:das Identifizieren (1260) eines Offsets, das eine Differenz zwischen einer räumlichen Position der ersten Kachel im Einzelbild (330) und der zweiten Kachel im Einzelbild (330) anzeigt,das Einschließen (1270) des Offsets im Ausgangsbitstrom (1100; 1300), unddas Auslassen (1280) des kodierten Kachelinhalts der zweiten kodierten Kachel aus dem Ausgangsbitstrom (1100; 1300); unddas Senden oder das Speichern (1290) des Ausgangsbitstroms (1100; 1300).

Description

  • HINTERGRUND
  • Ein Digital-Video kann zum Beispiel für Telebusiness per Videokonferenz, High-Definition-Video-Entertainment, Videowerbung oder für die gemeinsame Nutzung von nutzergenerierten Videos verwendet werden. Aufgrund der großen Datenmenge, die Videodaten beinhalten, wird zur Übertragung und Speicherung eine Hochleistungskompression benötigt. Folglich wäre es vorteilhaft, ein hochauflösendes Video bereitzustellen, das über Kommunikationskanäle mit einer begrenzten Bandbreite übertragen wird, wie beispielsweise eine Videokodierung unter Verwendung eines Tile-Copying.
  • Budagavi, Madhukar; Kwon, Do-Kyoung: „AHG8: Video coding using intra motion compensation,“ JCTVC-M0350, 9. April 2013, beschreibt, dass ein CU-Level-Flag verwendet wird, um zu signalisieren, ob Intra-Motion-Kompensation verwendet wird oder nicht. Wenn Intra-Motion verwendet wird, wird ein Bewegungsvektor übertragen. Wenn keine Intra-Motion-Kompensation verwendet wird, wird die normale HEVC-Vorhersage durchgeführt.
  • ZUSAMMENFASSUNG
  • Diese Offenbarung bezieht sich auf das Kodieren und Dekodieren von Videostromdaten zum Übertragen oder Speichern. Hierin offenbart sind Aspekte der Systeme, Verfahren und Vorrichtungen zum Kodieren und Dekodieren unter Verwendung des Tile-Copying.
  • In einem ersten Aspekt wird ein Verfahren gemäß Ansprüchen 1 bis 9 offenbart.
  • In einem weiteren Aspekt wird ein Verfahren gemäß Ansprüchen 10 bis 14 offenbart.
  • In einem weiteren Aspekt wird eine Vorrichtung gemäß Anspruch 15 offenbart. In einem weiteren Aspekt wird eine Vorrichtung gemäß Anspruch 16 offenbart.
  • Variationen in diesen und anderen Aspekten werden nachfolgend ausführlicher beschrieben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Beschreibung hierin bezieht sich auf die begleitenden Zeichnungen, in denen sich gleiche Bezugszeichen auf gleiche Teile beziehen, wenn nicht anders angegeben.
    • 1 ist ein Diagramm eines Computergeräts gemäß den Implementierungen dieser Offenbarung.
    • 2 ist ein Diagramm eines Computer- und Kommunikationssystems gemäß den Implementierungen dieser Offenbarung.
    • 3 ist ein Diagramm eines Videostroms zur Verwendung bei der Kodierung und Dekodierung gemäß den Implementierungen dieser Offenbarung.
    • 4 ist ein Blockdiagramm eines Kodierers gemäß den Implementierungen dieser Offenbarung.
    • 5 ist ein Blockdiagramm eines Dekodierers gemäß den Implementierungen dieser Offenbarung.
    • 6 ist ein Blockdiagramm einer Darstellung eines Teils einer Bildfolge gemäß den Implementierungen dieser Offenbarung.
    • 7 ist ein Diagramm einer exemplarischen Einzelbildkachel gemäß den Implementierungen dieser Offenbarung.
    • 8 ist ein Diagramm eines exemplarischen säulengekachelten Einzelbildes gemäß den Implementierungen dieser Offenbarung.
    • 9 ist ein Diagramm eines exemplarischen reihengekachelten Einzelbildes gemäß den Implementierungen dieser Offenbarung.
    • 10 ist ein Diagramm eines exemplarischen zeilen- und säulengekachelten Einzelbildes gemäß den Implementierungen dieser Offenbarung.
    • 11 ist ein Diagramm einer exemplarischen Ausgangs-Bitstromstruktur, die Kachelinformationen einer Ausgangs-Bitstromstruktur beinhaltet, die Kachelinformationen gemäß Implementierungen dieser Offenbarung beinhaltet.
    • 12 ist ein Blockdiagramm der Kodierung unter Verwendung eines Tile-Copying gemäß Implementierungen dieser Offenbarung;
    • 13 ist ein Blockdiagramm einer exemplarischen Ausgangs-Bitstromstruktur, die Kachelinformationen beinhaltet, die unter Verwendung eines Kachelkopierens gemäß Implementierungen dieser Offenbarung kodiert sind.
    • 14 ist ein Blockdiagramm der Kodierung unter Verwendung eines Kachelkopierens gemäß Implementierungen dieser Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Videokomprimierungsschemata können das Brechen jedes Bildes oder Einzelbildes in kleinere Abschnitte, wie beispielsweise Blöcke, und Erzeugen eines Ausgangsbitstroms unter Verwendung von Techniken beinhalten, um die für jeden Block in der Ausgabe beinhaltete Information zu begrenzen. Ein kodierter Bitstrom kann dekodiert werden, um die Blöcke und die Quellbilder aus den begrenzten Informationen wiederherzustellen. Die für jeden Block in der Ausgabe beinhaltete Information kann durch Reduzieren der räumlichen Redundanz. Reduzieren der zeitlichen Redundanz oder einer Kombination davon begrenzt werden. Jedoch können die Vorteile der Kodierung durch die Verfügbarkeit von Ressourcen begrenzt, und der Verlust oder die Beschädigung einiger Daten kann die Kodierung anderer Daten beeinflussen. So können beispielsweise Kodierungstechniken, wie beispielsweise eine Partitionierung. die Dekodierungszeit durch Parallelität reduzieren; jedoch können Partitionen davon abhängig sein, dass Beschädigung oder Verlust einer Partition die Dekodierung anderer Partitionen beeinflussen können.
  • Gemäß den hierin beschriebenen Lehren kann Kodieren das Kodieren und Dekodieren unter Verwendung von Kacheln beinhalten, um die Fehlerbelastbarkeit und Parallelität zu verbessern und die Ressourcenausnutzung und Latenz zu verringern. Das Kodieren und Dekodieren unter Verwendung von Kacheln kann eine Säulen-Kachel eines Einzelbildes beinhalten, sodass jede Kachel Kachelbreiten-durch-Einzelbildhöhe-Blöcke beinhaltet, wobei das Einzelbild so gekachelt ist, dass jede Kachel eine Einzelbildbreite durch Kachelhöhe-Blöcke beinhaltet, oder ein Einzelbild und eine Säulen-Kachelbildung des Einzelbildes, sodass jede Kachel Kachelbreiten durch Kachelhöhe-Blöcke beinhaltet. Säulen-Kacheln können die Fehlerresilienz und Parallelität verbessern und weniger Ressourcen nutzen. Jede Säulen-Kachel kann unabhängig von anderen Kacheln kodiert werden. Row-tiling kann die Fehlerbelastbarkeit durch Unabhängigkeit verbessern und die Latenz verringern. Row-Tiles können unabhängig von anderen Kacheln codiert sein oder können Abhängigkeiten beinhalten. In einigen Implementierungen, wie großflächigen Kachel-Kodierungen, kann jedoch die Kachel-Kodierung keinen Vorteil von Zwischen-Kachel-Redundanzen ausnutzen.
  • Die Kachel-Kodierung kann eine Kachel-Vervielfältigung beinhalten, um die Kodiereffizienz zu verbessern, indem die Zwischenkachel-Redundanz reduziert wird. Implementierungen der Kachel-Vervielfältigung können das Bewerten von kandidatenkodierten Kacheln, wie beispielsweise zuvor kodierte Kacheln in der Nähe einer aktuellen Kachel, beinhalten um zu ermitteln, ob der kodierte Inhalt eines Kandidaten-Kacheln identisch ist oder innerhalb eines Schwellenwerts der Ähnlichkeit, verglichen mit der kodierten aktuellen Kachel, liegt. Eine Kandidaten-Kachel, die identisch oder innerhalb eines Schwellenwerts der Ähnlichkeit im Vergleich zu der kodierten aktuellen Kachel ist, kann als Referenzkachel identifiziert werden, und die aktuelle Kachel kann als Kopierkachel identifiziert werden, wobei der kodierte Inhalt der aktuellen Kachel aus dem Ausgang weggelassen wird und eine Kennung der Referenzkachel in dem Ausgang als die aktuelle Kachel beinhaltet ist.
  • 1 ist ein Diagramm eines Computergeräts 100 gemäß den Implementierungen dieser Offenbarung. In 1 beinhaltet das Computergerät 100 eine Kommunikationsschnittstelle 110, eine Kommunikationseinheit 120, eine Benutzeroberfläche (UI) 130, einen Prozessor 140, einen Speicher 150, Anweisungen 160, eine Stromquelle 170. Der Begriff „Computergerät“, wie hierin verwendet, beinhaltet jede Einheit oder Kombination von Einheiten, die in der Lage sind, ein beliebiges Verfahren oder einen beliebigen Teil oder Teile davon durchzuführen, die hierin offenbart sind.
  • Das Computergerät 100 kann ein stationäres Computergerät sein, wie beispielsweise ein Personal Computer (PC), ein Server, ein Arbeitsplatz, ein Minicomputer oder ein Großrechner; oder ein mobiles Computergerät, wie beispielsweise ein Mobiltelefon, ein Personal Digital Assistant (PDA), ein Laptop oder ein Tablet-PC. Obwohl als eine einzelne Einheit dargestellt, kann ein beliebiges oder mehrere Elemente des Computergeräts 100 in jede Anzahl von getrennten physikalischen Einheiten integriert werden. So kann beispielsweise der UI 130 und der Prozessor 140 in einer ersten physikalischen Einheit integriert sein und der Speicher 150 kann in einer zweiten physikalischen Einheit integriert sein.
  • Die Kommunikationsschnittstelle 110 kann eine drahtlose Kommunikationsschnittstelle sein, wie beispielsweise ein Ethernet-Port, eine Infrarotschnittstelle, eine serielle Schnittstelle oder jede andere drahtlose oder drahtgebundene Einheit, die in der Lage ist, mit einem drahtgebundenen oder drahtlosen elektronischen Kommunikationsmedium 180 zu kommunizieren.
  • Die Kommunikationseinheit 120 kann so konfiguriert sein, dass sie Signale über das drahtgebundene oder drahtlose Medium 180 sendet oder empfängt. Wie dargestellt, ist die Kommunikationseinheit 120 beispielsweise funktionsfähig mit einer Antenne verbunden, die konfiguriert ist, um über drahtlose Signale zu kommunizieren. Obwohl nicht explizit gezeigt in 1, kann die Kommunikationseinheit 120 so konfiguriert sein, dass sie über jedes drahtgebundene oder drahtlose Kommunikationsmedium, wie beispielsweise Hochfrequenz (Radiofrequenz), Ultraviolett (UV), sichtbares Licht, Faseroptik, Drahtleitung oder eine Kombination davon, senden oder empfangen kann. Obwohl 1 eine einzelne Kommunikationseinheit 120 und eine einzelne Kommunikationsschnittstelle 110 darstellt, kann eine beliebige Anzahl von Kommunikationseinheiten und eine beliebige Anzahl von Kommunikationsschnittstellen verwendet werden.
  • Der UI 130 kann jede Einheit beinhalten, die in der Lage ist, sich mit einem Benutzer zu verbinden, wie beispielsweise einem virtuellen oder physischen Tastenfeld, einem Touchpad, einem Display, einem Touch-Display, einem Lautsprecher, einem Mikrofon, einer Videokamera, einem Sensor oder einer beliebigen Kombination davon. Der UI 130 kann funktionsfähig mit dem Prozessor gekoppelt sein, wie gezeigt, oder mit einem beliebigen anderen Element des Computergeräts 100, wie beispielsweise der Energiequelle 170. Obwohl als eine einzelne Einheit dargestellt, kann der UI 130 eine oder mehrere physikalische Einheiten beinhalten. So kann beispielsweise der UI 130 eine Audioschnittstelle zum Durchführen einer Audiokommunikation mit einem Benutzer und eine Berührungsanzeige zum Ausführen einer visuellen und berührungsbasierten Kommunikation mit dem Benutzer beinhalten. Obwohl als getrennte Einheiten dargestellt, können die Kommunikationsschnittstelle 110, die Kommunikationseinheit 120 und der UI 130 oder Teile davon als eine kombinierte Einheit konfiguriert sein. Die Kommunikationsschnittstelle 110, die Kommunikationseinheit 120 und der UI 130 können beispielsweise als ein Kommunikationsanschluss implementiert sein, der mit einem externen Touchscreen-Gerät verbunden werden kann.
  • Der Prozessor 140 kann ein beliebiges Gerät oder System beinhalten, das in der Lage ist. ein Signal oder andere bestehende oder künftige entwickelte Informationen zu manipulieren oder zu verarbeiten, einschließlich optischer Prozessoren, Quantenprozessoren, molekularer Prozessoren oder einer Kombination davon. So kann der Prozessor 140 beispielsweise einen Spezialprozessor, einen digitalen Signalprozessor (DSP), mehrere Mikroprozessoren, einen oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern, einen Controller, einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein programmierbares Logikarray, eine programmierbare Logiksteuerung, Mikrocode, Firmware, jede Art von integrierter Schaltung (IC), eine Zustandsmaschine oder eine Kombination davon beinhalten. Wie hierin verwendet, umfasst der Begriff „Prozessor“ einen einzelnen Prozessor oder mehrere Prozessoren. Der Prozessor kann operativ mit der Kommunikationsschnittstelle 110, der Kommunikationseinheit 120, der UI 130, dem Speicher 150, den Anweisungen 160, der Stromquelle 170 oder einer beliebigen Kombination davon gekoppelt sein.
  • Der Speicher 150 kann ein beliebiges nichtflüchtiges computerverwendbares oder computerlesbares Medium beinhalten, wie beispielsweise ein beliebiges greifbares Gerät zur Verwendung durch oder in Verbindung mit dem Prozessor 140, der zum Beispiel Anweisungen 160 oder beliebige damit verbundene Informationen enthalten, speichern, kommunizieren oder transportieren kann. Das nichtflüchtige computerverwendbare oder computerlesbare Medium kann beispielsweise ein Festkörperlaufwerk, eine Speicherkarte, ein entfernbares Medium, ein Nur-Lese-Speicher (ROM), ein Speicher mit wahlfreiem Zugriff (RAM), jede Art von Laufwerk mit einer Festplatte, Diskette, eine optische Diskette, eine magnetische oder optische Karte, eine anwendungsspezifische integrierte Schaltung (ASICs) oder jede Art von nicht nichtflüchtigen Medien sein, die zum Speichern elektronischer Informationen oder einer beliebigen Kombination davon geeignet sind. Der Speicher 150 kann beispielsweise in einem Beispiel mit dem Prozessor 140 über einen Speicherbus verbunden sein (nicht explizit gezeigt).
  • Die Anweisungen 160 können Richtungen zum Durchführen eines beliebigen Verfahrens oder eines beliebigen Teils oder Teile davon beinhalten, die hierin offenbart sind. Die Anweisungen 160 können in Hardware, Software oder einer beliebigen Kombination davon realisiert sein. So können beispielsweise die Anweisungen 160 als in dem Speicher 150 gespeicherte Informationen implementiert werden, wie beispielsweise ein Computerprogramm, das durch den Prozessor 140 ausgeführt werden kann, um jedes der beliebigen Verfahren, Algorithmen, Aspekte oder Kombinationen davon auszuführen, wie hierin beschrieben. Die Anweisungen 160 oder ein Teil davon können als ein Spezialprozessor oder eine Schaltungsanordnung implementiert sein, die spezialisierte Hardware zum Ausführen irgendeines der Verfahren, Algorithmen, Aspekte oder Kombinationen davon, wie hier beschrieben, beinhalten können. Teile der Anweisungen 160 können über mehrere Prozessoren auf derselben Maschine oder auf verschiedenen Maschinen oder über ein Netzwerk, wie beispielsweise ein lokales Netzwerk, ein Weitverkehrsnetz, das Internet oder einer Kombination davon verteilt werden.
  • Die Stromquelle 170 ist eine beliebige geeignete Vorrichtung zum Versorgen der Kommunikationsschnittstelle 110. So kann beispielsweise die Stromquelle 170 eine verdrahtete Stromquelle beinhalten; eine oder mehrere Trockenzellenbatterien, wie Nickel-Cadmium (NiCd), Nickel-Zink (NiZn), Nickel-Metall-Hydrid (NiMH), Lithium-Ionen (Li-Ionen); Solarzellen; Brennstoffzellen; oder jedes andere Gerät das in der Lage ist, die Kommunikationsschnittstelle 110 mit Strom zu versorgen. Die Kommunikationsschnittstelle 110, die Kommunikationseinheit 120, die UI 130, der Prozessor 140, die Anweisungen 160, der Speicher 150 oder eine beliebige Kombination davon können mit der Stromquelle 170 funktionsfähig gekoppelt sein.
  • Obwohl als getrennte Elemente dargestellt, können die Kommunikationsschnittstelle 110, die Kommunikationseinheit 120, die UI 130, der Prozessor 140, die Anweisungen 160, die Energiequelle 170, der Speicher 150 oder eine beliebige Kombination davon in einer oder mehreren elektronischen Einheiten, Schaltungen oder Chips integriert sein.
  • 2 ist ein Diagramm eines Computer- und Kommunikationssystems 200 gemäß den Implementierungen dieser Offenbarung. Das Computer- und Kommunikationssystem 200 kann eine oder mehrere Computer- und Kommunikationsgeräte 100A /100B /100C, einen oder mehrere Zugriffspunkte 210A /210B, ein oder mehrere Netzwerke 220 oder eine Kombination davon beinhalten. So kann beispielsweise das Computer- und Kommunikationssystem 200 ein Mehrfachzugriffssystem sein, das Kommunikation, wie beispielsweise Sprache, Daten, Video, Nachrichtenübermittlung, Rundfunk oder eine Kombination davon, mit einem oder mehreren drahtgebundenen oder drahtlosen Kommunikationsgeräten, wie beispielsweise die Computer und Kommunikationsgeräte 100A /100B /100C zur Verfügung stellt. Obwohl der Einfachheit halber in 2 drei Computer- und Kommunikationsgeräte 100A /100B /100C dargestellt sind, können zur Vereinfachung zwei Zugangspunkte 210A /210B und ein Netzwerk 220 jede beliebige Anzahl von Computer- und Kommunikationsgeräten, Zugangspunkten und Netzwerken verwendet werden.
  • Die Computer- und Kommunikationsgeräte 100A/ 100B /100C ist beispielsweise ein Computergerät, wie zum Beispiel das dargestellte Computergerät 100 in 1 veranschaulicht. Wie dargestellt, können die Computer- und Kommunikationsgeräte 100A /100B Benutzergeräte sein, wie beispielsweise ein mobiles Computergerät, ein Laptop, ein Thin Client oder ein Smartphone, und das Computer- und Kommunikationsgerät 100C kann ein Server sein, wie beispielsweise ein Großrechner oder ein Cluster. Obwohl die Computer- und Kommunikationsgeräte 100A /100B als Benutzergeräte beschrieben sind und das Computer- und Kommunikationsgerät 100C als ein Server beschrieben ist, kann jedes Computer- und Kommunikationsgerät einige oder alle Funktionen eines Servers, einige oder alle der Funktionen eines Benutzergeräts oder einige oder alle Funktionen eines Servers und eines Benutzergeräts ausführen.
  • Jedes Computer- und Kommunikationsgerät 100A /100B /100C kann konfiguriert sein, um eine drahtgebundene oder drahtlose Kommunikation auszuführen. So kann beispielsweise das Computer- und Kommunikationsgerät 100A /100B /100C so konfiguriert sein, um drahtgebundene oder drahtlose Kommunikationssignale zu senden oder zu empfangen und kann ein Benutzergerät (UE), eine Mobilstation, eine feste oder mobile Teilnehmereinheit, ein Mobiltelefon, einen Personalcomputer, einen Tablet-Computer, einen Server, eine Unterhaltungselektronik oder ein ähnliches Gerät beinhalten. Obwohl jedes Computer- und Kommunikationsgerät 100A /100B /100C als einzelne Einheit dargestellt ist, kann ein Computer- und Kommunikationsgerät jede Anzahl von miteinander verbundenen Elementen beinhalten.
  • Jeder Zugriffspunkt 210A /210B ist eine beliebige Art von Gerät, das konfiguriert ist, um mit einem Computer- und Kommunikationsgerät 100A /100B /100C, einem Netzwerk 220 oder beiden über drahtgebundene oder drahtlose Kommunikationsverbindungen 180A /180B /180C zu kommunizieren. So kann beispielsweise ein Zugriffspunkt 210A /21 0B eine Basisstation, eine Basisendempfangerstation (BTS), einen Knoten-B, einen erweiterten Knoten-B (eNode-B), einen Heimatknoten-B (HNode-B), einen WLAN-Router, einen Kabel-Router, einen Hub, ein Relais, einen Schalter oder ein beliebiges ähnliches drahtgebundenes oder drahtloses Gerät beinhalten. Obwohl jeder Zugriffspunk 210A /210B als einzelne Einheit dargestellt ist, kann ein Zugriffspunkt jede Anzahl von miteinander verbundenen Elementen beinhalten.
  • Das Netzwerk 220 ist jede Art von Netzwerk, das konfiguriert ist, um Dienste, wie Sprache, Daten, Anwendungen, Voice over Internet Protocol (VoIP) oder ein anderes beliebiges Kommunikationsprotokoll oder eine Kombination von Kommunikationsprotokollen, über eine drahtgebundene oder drahtlose Kommunikationsverbindung bereitzustellen. So kann beispielsweise das Netzwerk 220 ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), ein virtuelles lokales Netzwerk (VPN), ein Mobiltelefon oder Mobilfunknetz, das Internet oder jedes andere elektronische Kommunikationsmittel sein. Das Netzwerk kann ein Kommunikationsprotokoll, wie beispielsweise das Übertragungssteuerungsprotokoll (TCP), das Benutzer-Datagramm-Protokoll (UDP), das Internetprotokoll (IP), das Real-Time Transport Protocol (RTP), das Hypertext-Transportprotokoll (HTTP) oder eine Kombination davon sein.
  • Die Computer- und Kommunikationsgeräte 100A /100B /100C können miteinander über das Netzwerk 220 unter Verwendung einer oder mehrerer drahtgebundener oder drahtloser Kommunikationsverbindungen oder über eine Kombination von drahtgebundenen und drahtlosen Kommunikationsverbindungen kommunizieren. Wie dargestellt, können zum Beispiel die Computer- und Kommunikationsgeräte 100A /100B über drahtlose Kommunikationsverbindungen 180A /180B kommunizieren und das Computer- und Kommunikationsgerät 100C kann über eine drahtgebundene Kommunikationsverbindung 180C kommunizieren. Jedes der Computer- und Kommunikationsgeräte 100A /100B /100C kann unter Verwendung einer beliebigen drahtgebundenen oder drahtlosen Kommunikationsverbindung oder Verbindung kommunizieren. So kann beispielsweise das erste Computer- und Kommunikationsgerät 100A über den ersten Zugriffspunkt 210A unter Verwendung eines ersten Typs von Kommunikationsverbindung kommunizieren, das zweite Computer- und Kommunikationsgerät 100B über den zweiten Zugriffspunkt 210B unter Verwendung eines zweiten Typs von Kommunikationsverbindung und das dritte Computer- und Kommunikationsgerät 100C über einen dritten Zugriffspunkt (nicht dargestellt) unter Verwendung eines dritten Typs von Kommunikationsverbindung. In ähnlicher Weise können die Zugriffspunkte 210A /210B mit dem Netzwerk 220 über einen oder mehrere Typen von verdrahteten oder drahtlosen Kommunikationsverbindungen 230A /230B kommunizieren. Obwohl 2 die Computer- und Kommunikationsgeräte 100A /100B /100C in Kommunikation über das Netzwerk 220 darstellt, können die Computer- und Kommunikationsgeräte 100A /100B /100C über jede beliebige Anzahl von Kommunikationsverbindungen, wie beispielsweise eine direkte drahtgebundene oder drahtlose Kommunikationsverbindung, miteinander kommunizieren.
  • Es sind andere Implementierungen des Computer- und Kommunikationsgeräts 200 sind möglich. So kann beispielsweise das Netzwerk 220 ein Ad-hoc-Netzwerk sein. Das Netzwerk 220 kann einen oder mehrere der Zugriffspunkte 210A /210B weglassen. Das Computer- und Kommunikationsgerät 200 kann Geräte, Einheiten oder Elemente beinhalten, nicht in 2 veranschaulicht. Das Computer- und Kommunikationsgerät 200 kann zum Beispiel viele weitere Kommunikationsgeräte, Netzwerke und Zugriffspunkte beinhalten.
  • 3 ist ein Diagramm eines Videostroms 300 zur Verwendung bei der Kodierung und Dekodierung gemäß den Implementierungen dieser Offenbarung. Der Videostrom 300, wie beispielsweise ein Videostrom, der durch eine Videokamera oder einen Videostrom aufgenommen wird, der durch ein Computergerät erzeugt wird, beinhaltet eine Videosequenz 310. Die Videosequenz 310 beinhaltet eine Folge von benachbarten Einzelbildern 320. Obwohl drei nebeneinanderliegende Einzelbilder 320 dargestellt sind, kann die Videosequenz 310 eine beliebige Anzahl von nebeneinanderliegenden Einzelbildern 320 beinhalten. Jedes Einzelbild 330 von nebeneinanderliegenden Einzelbildern 320 kann ein einzelnes Bild aus dem Videostrom darstellen. Jedes Einzelbild 330 beinhaltet Blöcke 340. Obwohl nicht in 3 dargestellt, kann der Block Pixel beinhalten. Der Block kann beispielsweise eine 16×16 Gruppe von Pixeln, eine 8×8 Gruppe von Pixeln, eine 8×16 Gruppe von Pixeln oder jede andere Gruppe von Pixeln beinhalten. Sofern hierin nicht anders angegeben, kann der Begriff „Block“ einen Superblock, einen Makroblock, ein Segment, eine Scheibe oder jedes andere Teil eines Einzelbildes beinhalten. Ein Einzelbild, ein Block, ein Pixel oder eine Kombination davon beinhaltet eine Anzeigeinformation, wie zum Beispiel eine Leuchtdichteinformation, eine Chrominanzinformation oder eine andere Information, die verwendet werden kann, um den Videostrom oder einen Teil davon zu speichern, zu modifizieren, zu kommunizieren oder darzustellen.
  • 4 ein Blockdiagramm eines Kodierers 400 gemäß den Implementierungen dieser Offenbarung ist. Der Kodierer 400 kann in einem Gerät, zum Beispiel einem Computergerät 100 wie in 1 dargestellt, oder in Computer- und Kommunikationsgeräte 100A /100B /100C implementiert sein, wie in 2 dargestellt, beispielsweise ein in einer Datenspeichereinheit gespeichertes Computersoftwareprogramm, zum Beispiel dem Speicher 150, wie in 1 veranschaulicht. Das Computersoftwareprogramm kann Maschinenanweisungen beinhalten, die durch einen Prozessor, wie zum Beispiel dem Prozessor 140 ausgeführt werden können, wie in 1 dargestellt, und kann bewirken, dass das Gerät Videodaten kodiert, wie hierin beschrieben. Der Kodierer 400 kann als spezielle Hardware beinhaltet sein, beispielsweise im Computergerät 100.
  • Der Kodierer 400 kann einen Eingangsvideostrom 402, wie beispielsweise einen Videostrom 300, der in 3 dargestellt ist, kodieren, um einen kodierten (komprimierten) Bitstrom 404 zu erzeugen. Der Kodierer 400 beinhaltet einen Vorwärtspfad zum Erzeugen des komprimierten Bitstroms 404. Der Vorwärtspfad beinhaltet eine Intra/Inter-Vorhersageeinheit 410, eine Transformationseinheit 420, eine Quantisierungseinheit 430 und eine Entropiecodierungseinheit 440. Der Kodierer 400 kann einen Rekonstruktionspfad (durch gestrichelte Linien dargestellt) beinhalten, um eine Bildfolge für die Kodierung von weiteren Blöcken zu rekonstruieren. Wie in 4 gezeigt, beinhaltet der Rekonstruktionspfad eine Dequantisierungseinheit 450, eine inverse Transformationseinheit 460, eine Rekonstruktionseinheit 470 und eine Schleifenfältereinheit 480. Andere strukturelle Variationen des Kodierers 400 können verwendet werden, um den Videostrom 402 zu kodieren.
  • Zum Kodieren des Videostroms 402 kann jedes Einzelbild innerhalb des Videostroms 402 in Einheiten von Blöcken verarbeitet werden. Somit kann aus den Blöcken in einer Bildfolge ein aktueller Block identifiziert werden, und der aktuelle Block kann kodiert werden.
  • Bei der Intra/Inter-Vorhersageeinheit 410 kann der aktuelle Block unter Verwendung entweder einer Intraframe-Vorhersage kodiert werden, die innerhalb einer einzelnen Bildfolge sein kann oder eine Interframe-Vorhersage, die von Bildfolge zu Bildfolge sein kann. Die Intra-Vorhersage kann das Erzeugen eines Vorhersageblocks von Abtastwerten in der aktuellen Bildfolge, die zuvor kodiert und rekonstruiert wurden, beinhalten. Die Inter-Vorhersage kann das Erzeugen eines Vorhersageblocks von Abtastwerten in einer oder mehreren zuvor konstruierten Referenzbildfolgen beinhalten. Das Erzeugen eines Vorhersageblocks für einen aktuellen Block in einer aktuellen Bildfolge kann das Durchführen einer Bewegungsschätzung beinhalten, um einen Bewegungsvektor zu erzeugen, der einen geeigneten Referenzblock in der Referenzbildfolge anzeigt.
  • Die Intra/Inter-Vorhersageeinheit 410 erzeugt eine Differenz zwischen den Vorhersage- und Stromblöcken, um einen Restblock zu erzeugen. So kann beispielsweise die Intra/Inter-Vorhersageeinheit 410 den Vorhersageblock vom aktuellen Block (Rohblock) subtrahieren, um einen Restblock zu erzeugen. Die Transformationseinheit 420 führt eine blockbasierte Transformation durch, die das Transformieren des Restblocks in Transformationskoeffizienten in beispielsweise dem Frequenzbereich beinhalten kann. Beispiele für blockbasierte Transformationen sind die Karhunen-Loève-Transformation (KLT), die diskrete Kosinustransformation (DCT) und die Singularwertzerlegungstransformation (SVD). In einem Beispiel umfasst das DCT das Transformieren eines Blocks in den Frequenzbereich. Das DCT führt zu Transformationskoeffizientenwerten auf der Basis der räumlichen Frequenz mit dem niedrigsten Frequenzkoeffizienten (d. h. dem Gleichstromkoeffizienten) am oberen linken Rand der Matrix und dem höchsten Frequenzkoeffizienten an dem untersten Bereich, Rechts der Matrix.
  • Die Quantisierungseinheit 430 wandelt die Transformationskoeffizienten in diskrete Quantenwerte um, die als quantisierte Transformationskoeffizienten oder Quantisierungspegel bezeichnet werden können. Die quantisierten Transformationskoeffizienten werden durch die Entropiecodierungseinheit 440 entropycodiert, um entropiecodierte Koeffizienten zu erzeugen. Entropiecodierung kann die Verwendung einer Wahrscheinlichkeitsverteilungsmetrik einschließen. Die entropiecodierten Koeffizienten und Informationen, die zum Dekodieren des Blocks verwendet werden, welche die Art der verwendeten Vorhersage, Bewegungsvektoren und Quantisiererwerte beinhalten können, werden an den komprimierten Bitstrom 404 ausgegeben. Der komprimierte Bitstrom 404 kann unter Verwendung verschiedener Techniken, wie Lauflängencodierung (RLE) und Nulllaufcodierung formatiert werden.
  • Der Rekonstruktionspfad kann verwendet werden, um die Referenzbildsynchronisation zwischen dem Kodierer 400 und einem entsprechenden Dekodierer aufrechtzuerhalten, wie beispielsweise der Dekodierer 500, wie in 5 veranschaulicht. Der Rekonstruktionspfad kann ähnlich dem nachstehend erläuterten Dekodierungsprozess sein und beinhaltet das Dequantisieren der quantisierten Transformationskoeffizienten an der Dequantisierungseinheit 450 und die inverse Transformation der dequantisierten Transformationskoeffizienten an der inversen Transformationseinheit 460, um einen derivativen Restblock zu erzeugen. Die Rekonstruktionseinheit 470 addiert den von der Intra/Inter-Vorhersageeinheit 410 erzeugten Vorhersageblock zum abgeleiteten Restblock, um einen rekonstruierten Block zu erzeugen. Die Schleifenfiltereinheit 480 kann auf den rekonstruierten Block angewendet werden, um Verzerrungen, wie zum Beispiel blockierende Artefakte, zu reduzieren.
  • Andere Variationen des Kodierers 400 können verwendet werden, um den komprimierten Bitstrom 404 zu kodieren. So kann beispielsweise nicht-transformbasierter Kodierer 400 den Restblock direkt ohne die Transformationseinheit 420 quantisieren. Die Quantisierungseinheit 430 und die Dequantisierungseinheit 450 können in einer einzigen Einheit kombiniert sein.
  • 5 ein Blockdiagramm eines Dekodierers 500 gemäß den Implementierungen dieser Offenbarung ist. Der Kodierer 500 kann in einem Gerät, zum Beispiel einem Computergerät 100 wie in 1 dargestellt, oder in Computer- und Kommunikationsgeräte 100A /100B /100C implementiert sein, wie in 2 dargestellt, beispielsweise ein in einer Datenspeichereinheit gespeichertes Computersoftwareprogramm, zum Beispiel dem Speicher 150, wie in 1 veranschaulicht. Das Computersoftwareprogramm kann Maschinenanweisungen beinhalten, die durch einen Prozessor, wie zum Beispiel Prozessor 140 ausgeführt werden können, wie in 1 dargestellt, und kann bewirken, dass das Gerät Videodaten kodiert, wie hierin beschrieben. Der Kodierer 500 kann als spezielle Hardware implementiert sein, beispielsweise im Computergerät 100.
  • Der Dekodierer 500 empfängt einen komprimierten Bitstrom 502, beispielsweise den komprimierten Bitstrom 404, wie in 4 dargestellt, und dekodiert den komprimierten Bitstrom 502, um einen Ausgangsvideostrom 504 zu erzeugen. Wie gezeigt, beinhaltet der Dekodierer 500 eine Entropie-Dekodiereinheit 510, eine Dequantisierungseinheit 520, eine Invers-Transformationseinheit 530, eine Intra/Inter-Vorhersageeinheit 540, eine Rekonstruktionseinheit 550, eine Schleifenfiltereinheit 560 und eine Entblockierungsfiltereinheit 570. Andere strukturelle Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstrom 502 zu dekodieren.
  • Die Entropie-Dekodiereinheit 510 dekodiert Datenelemente innerhalb des komprimierten Bitstroms 502, beispielsweise unter Verwendung einer Kontext-adaptiven binär-arithmetischen Dekodierung, um einen Satz von quantisierten Transformationskoeffizienten zu erzeugen. Die Dequantisierungseinheit 520 dequantisiert die quantisierten Transformationskoeffizienten und die inverse Transformationseinheit 530 invertiert die dequantisierten Transformationskoeffizienten, um einen abgeleiteten Restblock zu erzeugen, der dem von der inversen Transformationseinheit 460 entspricht, wie in 4 veranschaulicht. Unter Verwendung von Headerinformationen, die von dem komprimierten Bitstrom 502 dekodiert wurden, erzeugt die Intra/Inter-Vorhersageeinheit 540 einen Vorhersageblock, der dem im Kodierer 400 erzeugten Vorhersageblock entspricht. Bei der Rekonstruktionseinheit 550 wird der Vorhersageblock dem abgeleiteten Restblock hinzugefügt, um einen rekonstruierten Block zu erzeugen. Die Schleifenfiltereinheit 560 kann auf den rekonstruierten Block angewendet werden, um blockierende Artefakte zu reduzieren. Die Entblockierungsfiltereinheit 570 kann auf den rekonstruierten Block angewendet werden, um die Blockierverzerrung zu reduzieren. Das Ergebnis wird als der Ausgangsvideostrom 504 ausgegeben.
  • Andere Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstrom 502 zu dekodieren. So kann beispielsweise der Dekodierer 500 den Ausgangsvideostrom 504 ohne die Deblockierungsfiltereinheit 570 erzeugen. Wenn der Dekodierer 400 die Quantisierungseinheit 430 und die Dequantisierungseinheit 450 weglässt, kann auch die Dequantisierungseinheit 520 weggelassen werden.
  • 6 ist ein Blockdiagramm einer Darstellung eines Abschnitts 600 eines Einzelbildes, beispielsweise das Einzelbild 330, wie in 3 dargestellt, gemäß den Implementierungen dieser Offenbarung. Wie gezeigt, beinhaltet der Abschnitt 600 des Einzelbildes vier 64×64 Blöcke 610 in zwei Reihen und zwei Spalten in einer Matrix- oder kartesischen Ebene. In einigen Implementierungen kann ein 64×64 Block eine maximale Kodierungseinheit sein, N = 64. Jeder 64×64 Block kann vier 32×32 Blöcke 620 beinhalten. Jeder 32×32 Block kann vier 16×16 Blöcke 630 beinhalten. Jeder 16×16 Block kann vier 8×8 Blöcke 640 beinhalten. Jeder 8×8 Block 640 kann vier 4×4 Blöcke 650 beinhalten. Jeder 4×4 Block 650 kann 16 Pixel beinhalten, die in vier Reihen und vier Spalten in jedem entsprechenden Block in der kartesischen Ebene oder Matrix dargestellt sind. Die Pixel können Informationen beinhalten, die ein in der Bildfolge aufgenommenes Bild darstellen, wie beispielsweise eine Luminanzinformation, Farbinformation und Ortsinformation. Ein Block, wie beispielsweise ein 16×16-Pixelblock, wie gezeigt, kann einen Luminanzblock 660 beinhalten, der Luminanzpixel 662 beinhaltet; und zwei Chrominanzblöcke 670 /680, wie beispielsweise einen U- oder Cb-Chrominanzblock 670 und einen V- oder Cr-Chrominanzblock 680. Die Chrominanzblöcke 670 /680 beinhalten Chrominanzpixel 690. Der Luminanzblock 660 beinhaltet beispielsweise 16×16 Luminanzpixel 662 und jeder Chrominanzblock 670 /680 beinhaltet 8×8 Chrominanzpixel 690, wie dargestellt. Obwohl eine Anordnung von Blöcken dargestellt ist, kann jede Anordnung verwendet werden. Obwohl 6 N×N-Blöcke zeigt, können in einigen Implementierungen N×M-Blöcke verwendet werden, wobei N # M ist. So können beispielsweise 32×64- Blöcke, 64×32-Blöcke, 16×32-Blöcke, 32×16 Blöcke oder beliebige andere Blöcke verwendet werden. In einigen Implementierungen können N×2NBlöcke, 2N×N Blöcke oder eine Kombination davon verwendet werden.
  • Die Videocodierung kann eine geordnete Blockebenenkodierung beinhalten. Die bestellte Blockcodierung beinhaltet Kodierungsblöcke eines Einzelbildes in einer Reihenfolge. In der Rasterabtastreihenfolge werden beispielsweise Blöcke identifiziert und verarbeitet, beginnend mit einem Block in der oberen linken Ecke des Einzelbildes oder eines Teils des Einzelbildes und fortlaufend entlang der Reihen von links nach rechts und von der oberen Reihe zur unteren Reihe, wobei jeder Block für die Verarbeitung identifiziert wird. Der 64×64 Block in der obersten Reihe und der linken Spalte eines Einzelbildes kann der erste blockkodierte Block sein und der Block 64×64 unmittelbar rechts vom ersten Block kann der zweite blockkodierte Block sein. Die zweite Reihe von oben kann die zweite kodierte Reihe sein, sodass der 64×64 Block in der linken Spalte der zweiten Reihe nach dem 64×64 Block in der rechten Spalte der ersten Reihe kodiert werden kann.
  • Das Kodieren eines Blocks kann die Verwendung einer Quadtree-Kodierung beinhalten, welche das Kodieren von kleineren Blockeinheiten innerhalb eines Blocks in der Raster-Scan-Reihenfolge beinhaltet. So kann beispielsweise der 64×64-Block, der in der unteren linken Ecke des Teils des Einzelbildes in 6 dargestellt, unter Verwendung einer Quadtree-Kodierung kodiert werden, wobei der linke obere Block 32×32 kodiert wird, dann wird der obere rechte Block 32×32 kodiert, dann wird der 32×32 Block unten links kodiert, und dann wird der untere rechte 32×32 Block kodiert. Jeder Block 32×32 kann unter Verwendung einer Quadtree-Kodierung kodiert werden, wobei der linke obere Block 16×16 kodiert wird, dann wird der obere rechte Block 16×16 kodiert, dann ist der 16×16 Block unten links kodiert, und dann wird der untere rechte 16×16 Block kodiert. Jeder Block 16×16 kann unter Verwendung einer Quadtree-Kodierung kodiert werden, wobei der linke obere Block 8×8 kodiert wird, dann wird der obere rechte Block 8×8 kodiert, dann ist der 8×8 Block unten links kodiert, und dann wird der untere rechte 8×8 Block kodiert. Jeder Block 8×8 kann unter Verwendung einer Quadtree-Kodierung kodiert werden, wobei der linke obere Block 4×4 kodiert wird, dann wird der obere rechte Block 4×4 kodiert, dann ist der 4×4 Block unten links kodiert, und dann wird der untere rechte 4×4 Block kodiert. In einigen Implementierungen können 8×8 Blöcke für einen 16×16 Block ausgelassen werden und der 16×16 Block kann unter Verwendung einer Quadtree-Kodierung kodiert werden, wobei der obere linke 4×4 Block kodiert wird, dann die anderen 4×4 Blöcke in der 16×16 Block-in-Raster-Scan- Reihenfolge.
  • Die Videocodierung kann das Komprimieren der in einem Original- oder Input-Einzelbild beinhalteten Informationen beinhalten, indem beispielsweise ein Teil der Information in dem Original-Einzelbild aus einem entsprechenden kodierten Einzelbild ausgelassen wird. Die Komprimierung kann durch das Reduzieren der spektralen Redundanz, das Reduzieren der räumlichen Redundanz, das Reduzieren der zeitlichen Redundanz oder eine Kombination davon erreicht werden.
  • Die Reduzierung der spektralen Redundanz die Verwendung eines Farbmodells auf Basis einer Luminanzkomponente (Y), einer zweier Chrominanzkomponente (U und V oder Cb und Cr) beinhalten, das als YUV- oder YCbCr-Farbmodell oder Farbraum bezeichnet wird. Das Verwenden des YUV-Farbmodells kann das Verwenden einer relativ großen Menge an Informationen beinhalten, um die Luminanzkomponente eines Teils eines Einzelbildes darzustellen und Verwenden einer relativ kleinen Menge an Informationen um jede entsprechende Chrominanzkomponente für den Teil des Einzelbildes darzustellen. Ein Abschnitt eines Einzelbildes kann zum Beispiel durch eine hochauflösende Luminanzkomponente, die einen 16×16 Block von Pixeln beinhalten kann, und durch zwei Chrominanzkomponenten niedrigerer Auflösung dargestellt werden, von denen jeder den Abschnitt des Einzelbildes als einen 8×8 Block von Pixeln darstellt. Ein Pixel gibt einen Wert an, beispielsweise einen Wert im Bereich von 0 bis 255. Ein Pixel kann unter Verwendung von beispielsweise acht Bits gespeichert oder übertragen werden. Obwohl diese Offenbarung unter Bezugnahme auf das YUV-Farbmodell beschrieben wird, kann jedes Farbmodell verwendet werden.
  • Eine Reduzierung der räumlichen Redundanz kann zusätzlich oder alternativ die Transformation eines Blocks in den Frequenzbereich unter Verwendung beispielsweise einer diskreten Kosinustransformation (DCT) beinhalten. Eine Kodiereinheit, wie zum Beispiel die Transformationseinheit 420, wie in 4 dargestellt, kann unter Verwendung von Transformationskoeffizientenwerten ein DCT basierend auf der räumlichen Frequenz durchführen.
  • Das Reduzieren der zeitlichen Redundanz kann das Verwenden von Ähnlichkeiten zwischen Einzelbildern beinhalten, um ein Einzelbild unter Verwendung einer relativ kleinen Datenmenge basierend auf einem oder mehreren Referenz-Einzelbildern, die zuvor kodierte, dekodierte und rekonstruierte Einzelbilder des Videostroms sein können, zu kodieren. So kann beispielsweise ein Block oder Pixel eines aktuellen Einzelbildes einem räumlich korrespondierenden Block oder Pixel an einer anderen räumlichen Stelle ähnlich sein. Im letzteren Fall kann die Reduzierung der zeitlichen Redundanz das Erzeugen von Bewegungsinformationen beinhalten, die die räumliche Differenz oder Übersetzung zwischen der Blockposistion oder des Pixels in dem aktuellen Einzelbild und der entsprechenden Blockposition oder des Pixels im Einzelbild anzeigen.
  • Das Reduzieren der zeitlichen Redundanz kann das Identifizieren eines Blocks oder Pixels in einem Referenzeinzelbild oder einen Teil des Referenzeinzelbilds beinhalten, der einem aktuellen Block oder Pixel eines aktuellen Einzelbildes entspricht. So kann beispielsweise ein Referenz-Einzelbild oder ein Teil eines Referenz-Einzelbildes im Speicher gespeichert werden. Ein Referenzeinzelbild kann nach dem besten Block oder Pixel gesucht werden, der zum Kodieren eines aktuellen Blocks oder Pixels des aktuellen Einzelbildes zu verwenden ist. Die Suche identifiziert beispielsweise den Block des Referenzbildes, für den die Differenz der Pixelwerte zwischen dem Referenzbild und dem aktuellen Block minimiert wird. Die Suche kann als Bewegungssuche bezeichnet werden. Der Teil des gesuchten Referenz-Einzelbildes (d. h. der Suchbereich) kann begrenzt sein. So kann beispielsweise der Suchbereich eine begrenzte Anzahl von Zeilen des Referenz-Einzelbildes beinhalten. Das Identifizieren des Referenzblocks kann das Berechnen einer Kostenfunktion, beispielsweise eine Summe der absoluten Differenzen (SAD) zwischen den Pixeln der Blöcke im Suchbereich und den Pixeln des aktuellen Blocks beinhalten.
  • Die räumliche Differenz zwischen dem Standort des Referenzblocks im Referenzeinzelbild und dem aktuellen Block im aktuellen Einzelbild, falls vorhanden, kann als ein Bewegungsvektor dargestellt werden. Die Differenz der Pixelwerte zwischen dem Referenzblock und dem aktuellen Block wird als Differenzdaten, Restdaten oder als Restblock bezeichnet. Die Erzeugung von Bewegungsvektoren kann als Bewegungsschätzung bezeichnet werden. Ein Pixel eines aktuellen Blocks kann basierend auf der Position unter Verwendung von kartesischen Koordinaten als fx,y angezeigt werden. In ähnlicher Weise kann ein Pixel des Suchbereichs des Referenzeinzelbildes basierend auf der Position unter Verwendung von kartesischen Koordinaten als rx,y dargestellt werden. Ein Bewegungsvektor (MV) für den aktuellen Block kann beispielsweise basierend auf einem SAD zwischen den Pixeln des aktuellen Einzelbildes und den entsprechenden Pixeln des Referenzeinzelbildes ermittelt werden.
  • Obwohl die Entfernung des Frequenzbereichs hierin unter Bezugnahme auf die Matrix oder die kartesische Darstellung eines Einzelbildes zur Veranschaulichung beschrieben ist, kann ein Einzelbild in jeder beliebigen Datenstruktur gespeichert, übertragen, verarbeitet oder eine beliebige Kombination davon sein, sodass Pixelwerte effizient für ein Einzelbild oder ein Bild dargestellt werden können. So kann beispielsweise ein Einzelbild in einer zweidimensionalen Datenstruktur sein, wie zum Beispiel einer dargestellten Matrix, oder in einer eindimensionalen Datenstruktur, wie zum Beispiel einem Vektorarray oder eine beliebige Kombination davon, gespeichert, übertragen und/oder verarbeitet werden. Eine Darstellung des Einzelbildes, wie beispielsweise eine dargestellte zweidimensionale Darstellung, kann einem physischen Standort in einer Wiedergabe des Einzelbildes als ein Bild entsprechen. Ein Standort in der linken oberen Ecke eines Blocks in der linken oberen Ecke des Einzelbildes entspricht beispielsweise einem physikalischen Standort in der linken oberen Ecke einer Wiedergabe des Einzelbildes als ein Bild.
  • Die Block-basierte Kodierungseffizienz kann durch Partitionieren von Blöcken in eine oder mehrere Partitionen verbessert werden. Die Partitionen können rechteckig sein, einschließlich quadratischer Partitionen. Videocodierung unter Verwendung von Partitionierung kann das Auswählen eines Partitionierungsschemas aus mehreren Kandidatenpartitionierungsschemata beinhalten. So können beispielsweise Kandidaten-Partitionierungsschemata für eine 64×64-Kodierungseinheit rechteckige Partitionsgrößen Größen im Bereich von 4×4 bis 64×64, wie beispielsweise 4×4, 4×8, 8×4, 8×8, 8×16, 16×8, 16×16, 16×32, 32×16, 32×32, 32×64, 64×32 oder 64×64 beinhalten. Die Videocodierung unter Verwendung von Partitionierung kann eine vollständige Partitionssuche beinhalten, die das Auswählen eines Partitionierungsschemas durch Kodieren der Kodierungseinheit unter Verwendung jedes verfügbaren Kandidaten-Partitionierungsschemas und Auswählen des besten Schemas, wie dem Schema, das den geringsten Raten-Verzerrungsfehler erzeugt.
  • Das Codieren eines Videoeinzelbildes kann das Identifizieren eines Partitionierungsschemas zum Codieren eines aktuellen Blocks, wie beispielsweise Block 610, beinhalten. Das Identifizieren eines Partitionierungsschemas beinhaltet das Ermitteln, ob der Block als eine einzelne Partition der maximalen Kodierungseinheitsgröße kodiert werden kann, der, wie gezeigt, 64×64 sein kann, oder die Partitionierung des Blocks in mehrere Partitionen, die den Unterblöcken entsprechen können, wie die 32×32-Blöcke 620, die 16×16-Blöcke 630 oder die 8×8-Blöcke 640, wie gezeigt. Das Identifizieren eines Partitionierungsschemas kann das Ermitteln beinhalten, ob es in eine oder mehrere kleinere Partitionen partitioniert werden soll. So kann zum Beispiel ein 64×64-Block in vier 32×32-Partitionen partitioniert werden. Drei der vier 32×32 Partitionen können als 32×32 Partitionen kodiert werden und die vierte 32×32 Partition kann weiter in vier 16×16 Partitionen partitioniert werden. Drei der vier 16×16 Partitionen können als 16×16 Partitionen kodiert werden und die vierte 16×16 Partition kann weiter in vier 8×8 Partitionen partitioniert werden, von denen jede als 8×8-Partition kodiert sein kann. Das Identifizieren des Partitionierungsschemas kann die Verwendung eines Partitionierungsentscheidungsbaums beinhalten.
  • Die Videocodierung für einen aktuellen Block kann das Identifizieren eines optimalen Kodierungsmodus aus mehreren Kandidaten-Kodierungsmodi beinhalten, was für Flexibilität bei der Handhabung von Videosignalen mit verschiedenen statistischen Eigenschaften sorgt und oft die Kompressionseffizienz verbessert. So kann beispielsweise ein Videocodierer jeden Kandidatencodierungsmodus bewerten, um den optimalen Kodierungsmodus zu identifizieren. Der optimale Kodierungsmodus kann der Kodierungsmodus sein, der eine Fehlermetrik wie beispielsweise Ratenverzerrungskosten für den aktuellen Block minimiert. Die Komplexität der Suche der Kandidatencodierungsmodi kann reduziert werden, indem der Satz von verfügbaren Kandidatencodierungsmodi auf Basis von Ähnlichkeiten zwischen dem aktuellen Block und einem entsprechenden Vorhersageblock begrenzt wird. Die Komplexität der Suche nach jedem einzelnen Kandidatencodierungsmodus kann durch Ausführen einer gerichteten Verfeinerungsmodus-Suche reduziert werden. So können beispielsweise Fehlermetriken für einen begrenzten Satz von Kandidatenblockgrößen, wie beispielsweise 16×16, 8×8 und 4×4, erzeugt werden, wobei die Fehlermetriken in absteigender Reihenfolge organisiert werden können und zusätzliche Kandidatenblockgrößen, wie beispielsweise 4×8 und 8×4 Blockgrößen, ausgewertet werden.
  • 7 ist ein Diagramm einer exemplarischen Einzelbildkachel gemäß den Implementierungen dieser Offenbarung. Ein Einzelbild 700, wie zum Beispiel das Einzelbild 330, wie in 3 dargestellt, beinhaltet Blöcke 710. So kann beispielsweise das Einzelbild 700 eine zweidimensionale 8×8 Matrix von Blöcken 710 wie gezeigt, eine 16×16-Matrix von Blöcken, eine 64×64 Matrix von Blöcken oder jede andere Matrix oder Konfiguration von Blöcken beinhalten, die ein Bild einer Videosequenz darstellen können. Wie gezeigt, ist das Einzelbild 700 als eine Matrix mit Reihen Spalten von Blöcken 710 angeordnet. Die Anzahl oder die Kardinalität von Blöcken in einer Reihe wird hierin als Einzelbildbreite bezeichnet. Die Anzahl oder die Kardinalität von Blöcken in einer Reihe wird hierin als Einzelbildhöhe bezeichnet. So weist beispielsweise das Einzelbild 700, dargestellt in 7, eine Einzelbildbreite von acht auf, die eine Kardinalität von acht horizontal benachbarten Blöcken pro Einzelbildreihe und eine Einzelbildhöhe von acht anzeigt und eine Einzelbildhöhe von acht, was eine Kardinalität von acht vertikal benachbarten Blöcken pro Einzelbildspalte anzeigt.
  • Obwohl nicht dargestellt in 7, kann der Block 710 Pixel beinhalten. Der Block kann beispielsweise eine 16×16 Gruppe von Pixeln, eine 8×8 Gruppe von Pixeln, eine 8×16 Gruppe von Pixeln oder jede andere Gruppe von Pixeln beinhalten. Der Block 710 kann als Matrix mit Reihen und Spalten von Pixeln angeordnet sein. Die Anzahl oder die Kardinalität von Pixeln in einer Reihe wird hierin als Blockbreite bezeichnet. Die Anzahl oder die Kardinalität von Pixeln in einer Reihe wird hierin als Blockhöhe bezeichnet.
  • Tiling beinhaltet die Organisation eines Einzelbildes in Teilbereichen oder Kacheln. So kann beispielsweise ein Einzelbild säulengekachelt sein, wie in 8 gezeigt, reihengekachelt, wie in 9 gezeigt, oder es kann unter Verwendung einer Kombination eines Säulen-Tiling und Reihen-Tiling organisiert werden, wie in 10 veranschaulicht.
  • Tiling kann die Fehlerresistenz für die Speicherung oder Übertragung einer Videosequenz verbessern. So kann zum Beispiel jede Kachel unabhängig voneinander kodiert und dekodiert werden. Eine verlorene oder beschädigte Kachel, wie z. B. eine Kachel, die während der Übertragung über eine verlustbehaftete Netzwerkverbindung, beispielsweise über eine UDP-Netzwerkverbindung, teilweise oder vollständig verloren oder beschädigt ist, bewirkt keine Dekodierung anderer Kacheln.
  • Das Tiling kann die Parallelität zur Kodierung und Dekodierung einer Videosequenz verbessern. So kann zum Beispiel jede Kachel unabhängig voneinander kodiert und dekodiert werden. Mehrere Kacheln können parallel unter Verwendung von beispielsweise mehreren Prozessoren, mehreren Kodierern, mehreren Kernen oder einer Kombination davon kodiert oder dekodiert werden. Die Parallelverarbeitung erhöht die Kodier- oder Dekodiergeschwindigkeit.
  • Tiling kann die Hardware-Auslastung reduzieren. Ein Videoeinzelbild kann blockweise decodiert werden und temporäre Speicherpuffer der Blockhöhe durch Einzelbildbreite verwenden, um dekodierte Ergebnisse zu Puffern. So kann beispielsweise ein Videoeinzelbild 16000 Pixel breit sein und eine Blockgröße von 64×64 Pixel aufweisen, wobei jeder Pixel ein Byte des Speichers verwendet, sodass das Dekodieren des Einzelbildes 64 × 16000 Bytes oder 1 MB eines temporären Speichers verwendet, um die Blöcke für die Rekonstruktion zu speichern. Im Gegensatz dazu ist ein säulengekacheltes Einzelbild, das eine maximale Kachelbriete aufweisen kann, unabhängig von anderen Kacheln kodiert. Das Dekodieren kann die Verwendung der Blockhöhe durch Kachelbreite beinhalten, um dekodierte Ergebnisse zu Puffern. In einer Kachel, die 4000 Pixel breit ist, verwendet ein Dekodieren einer Kachel beispielsweise 64 × 4000 Bytes oder 256 kB temporären Speicher (Puffer). Die Verwendung weniger Speicherpuffer-Ressourcen reduziert die Hardwarekosten.
  • Tiling kann die Latenz reduzieren. Dies kann auftreten, wenn eine oder mehrere kodierte Kacheln in einem Einzelbild gleichzeitig mit der Kodierung von anderen Kacheln in dem Einzelbild übertragen oder gespeichert werden. So kann in einem Beispiel ein Videostrom kodiert und für Echtzeitkommunikationen über ein Übertragungsmedium mit einer Übertragungsrate mit begrenzter Bandbreite bei 25 fps und einer Übertragungszeit von 40 ms pro Bild übertragen werden. Das Übertragen einer oder mehrerer kodierter Kacheln gleichzeitig mit der Kodierung anderer Kacheln in einem Einzelbild verringert die Latenzzeit um (n_rows-1) × 40 ms/n_rows. So wird beispielsweise für zwei Reihen (n_rows = 2) die Latenzzeit um 20 ms reduziert, und für vier Reihen (n_rows = 4) wird die Latenzzeit um 30 ms reduziert.
  • 8 ist ein Diagramm eines exemplarischen säulengekachelten Einzelbildes 800 gemäß den Implementierungen dieser Offenbarung. Das säulengekachelte Einzelbild 800 ist ähnlich zu dem Abschnitt 600 des in 6 gezeigten Einzelbildes, mit der Ausnahme, dass das säulengekachelte Einzelbild 800 Säulenkacheln 820 /830 beinhalten. Die Anzahl oder die Kardinalität der Blöcke 810 in einer Reihe einer Säulenkachel wird hierin als Kachelbreite bezeichnet. Die Anzahl oder die Kardinalität der Blöcke 810 in einer Spalte einer Säulenkachel wird hierin als Einzelbildhöhe bezeichnet. So können beispielsweise die Säulenkacheln 820 /830, dargestellt in 8, jeweils eine Kachelbreite von vier aufweisen, was eine Kardinalität von vier horizontal benachbarten Blöcken 810 pro Kachelreihe und eine Einzelbildhöhe von acht anzeigt, was eine was eine Kardinalität von acht vertikal benachbarten Blöcken 810 pro Kachelsäule anzeigt.
  • 9 ist ein Diagramm eines exemplarischen reihengekachelten Einzelbildes 900 gemäß den Implementierungen dieser Offenbarung. Das reihengekachelte Einzelbild 900 ist ähnlich zu dem Abschnitt 600 des in 6 gezeigten Einzelbildes, mit der Ausnahme, dass das reihengekachelte Einzelbild 900 Reihenkacheln 920 /930 beinhaltet. Die Anzahl oder die Kardinalität der Blöcke 910 in einer Spalte einer Reihenkachel wird hierin als Kachelhöhe bezeichnet. Die Anzahl oder die Kardinalität der Blöcke 910 in einer Reihe einer Reihenkachel wird hierin als Einzelbildbreite bezeichnet. So können beispielsweise die Reihenkacheln 920/930, dargestellt in 9, jeweils eine Kachelbreite von vier aufweisen, was eine Kardinalität von vier vertikal benachbarten Blöcken 910 pro Kachelsäule und eine Einzelbildbreite von acht anzeigt, was eine Kardinalität von acht horizontal benachbarten Blöcken 910 pro Kachelzeile anzeigt.
  • 10 ist ein Diagramm eines exemplarischen zeilen- und säulengekachelten Einzelbildes 1000 gemäß den Implementierungen dieser Offenbarung. Das reihen- und säulengekachelte Einzelbild 1000 ist ähnlich zu dem Abschnitt 600 des in 6 gezeigten Einzelbildes, mit der Ausnahme, dass das reihen- und säulengekachelte Einzelbild 1000 Reihen- und Säulenkacheln 1020 /1030 beinhaltet. Die Anzahl oder die Kardinalität der Blöcke 1010 in einer Spalte einer Reihen- und Säulenkachel wird hierin als Kachelhöhe bezeichnet. Die Anzahl oder die Kardinalität der Blöcke 1010 in einer Reihe einer Reihen- und Säulenkachel wird hierin als Kachelbreite bezeichnet. So können beispielsweise die Reihen- und Säulenkacheln 1020/1030, dargestellt in 10, jeweils eine Kachelhöhe von vier aufweisen, was eine Kardinalität von vier vertikal benachbarten Blöcken 1010 pro Kachelsäule und eine Kachelbreite von zwei, was eine Kardinalität von zwei horizontal benachbarten Blöcken 1010 pro Kachelzeile anzeigt.
  • 11 ist ein Diagramm einer exemplarischen Ausgangs-Bitstromstruktur, die Kachelinformationen gemäß Implementierungen dieser Offenbarung beinhaltet. In diesem Beispiel beinhaltet ein Ausgangsbitstrom kodierte Videodaten, die in einem Ausgangsbitstrom 1100 organisiert sind. So beinhaltet beispielsweise der Ausgangsbitstrom 1100, wie gezeigt, Informationen, die ein Einzelbild 1110 oder eine Folge von Einzelbildern darstellen.
  • Wie gezeigt, beinhalten die Informationen, die ein Einzelbild 1110 darstellen, einen Einzelbild-Header 1112 und einen Einzelbildkörper 1114. Ein Einzelbildkörper 1114 beinhaltet Informationen, die die Kacheln 1120 /1130/1140 darstellen. Die Informationen, die eine Kachel 1120 /1130 /1140 darstellen, beinhalten einen Kachel-Header 1122 /1132 /1142 und einen Kachelkörper 1124/1134/1144. So beinhalten beispielsweise die Kachelinformationen, die links für die Kachel 1120 gezeigt sind, einen Kachel-Header 1122 und einen Kachelkörper 1124; die Kachelinformationen beinhalten, die in der Mitte für die Kachel 1130 gezeigt ist, einen Kachel-Header 1132 und einen Kachelkörper 1134; und die Kachelinformationen, die auf der rechten Seite für die Kachel 1140 gezeigt sind, beinhalten einen Kachel-Header 1142 und einen Kachelkörper 1144.
  • Ein Kachelkörper 1124/1134/1144 beinhaltet Videoinhalte, die komprimierter Videoinhalt sein können, entsprechend der Kachel. Ein Kachel-Header 1122 /1132 /1134 beinhaltet entsprechende Kachelsteuerparameter, wie z. B. eine Kachelinhaltsdatengröße (TDS). Eine Kachelinhaltsdatengröße gibt eine Größe, wie beispielsweise eine Größe des entsprechenden Kachelkörpers. Die Größe einer kodierten Kachel kann die Summe der Größe des Kachel-Headers und der Kachelinhaltsdatengröße sein.
  • Ein Dekodierer kann einen Standort einer Kachel in einem Bitstrom, zumindest teilweise auf Informationen identifizieren, die in dem Kachel-Header angegeben sind. Ein Dekodierer dekodiert beispielsweise den Bitstrom, der von einem gegenwärtigen Standort im Bitstrom ausgeht, der dem Anfang eines Kachel-Headers entsprechen kann, wie beispielsweise der Kachel-Header 1122 für die gezeigt Kachel 1120 in 11. Der Kachel-Header 1122 gibt eine Kachelinhaltsdatengröße des entsprechenden Kachelkörpers 1124 an. Der Dekodierer kann den Bitstrom-Standort des Beginns der nächsten oder nachfolgenden Kachel 1130 als eine Summe des Bitstrom-Standorts des Anfangs der aktuellen Kachel, der Größe des Kachelkopfes und der Kachelinhaltsdatengröße ermitteln.
  • So kann beispielsweise ein Kachel-Header 1122 /1132 /1142 eine definierte Größe HS, beispielsweise acht Bits (HS = 8) aufweisen und der Kachel-Header beginnt an einer identifizierten Stelle oder Position N im Bitstrom, wie beispielsweise der Position oder dem Bit-Speicher 100 (N = 100). Der Kachel-Header kann in dem Bitstrom an den acht Bits von der Bitstromstelle N, wie beispielsweise der Bitstromposition 100, zu der Bitstromposition N + 7 (N + HS - 1), wie beispielsweise der Bitstromposition 107, beinhaltet sein. Der Kachel-Header gibt eine Kachelinhaltsdatengröße an, beispielsweise zehn Bits (TDS = 10). Der Kachelkörper kann in den Bitstrom an den zehn Bits von der Bitstromposition nach dem Kachelanfangsblock, N + HS, wie beispielsweise dem Bitstromort 108, zu dem Bitstromort N + HS + TDS - 1, wie beispielsweise dem Bitstromort 117, und eine nachfolgende Kachel kann in dem Bitstrom beinhaltet sein, der an der nachfolgenden Stelle N + HS + TDS beginnt, wie beispielsweise der Bitstromort 118.
  • Der Ausgang, wie er in 11 gezeigt ist, kann einen kodierten Inhalt für eine Kachel beinhalten, die in Bezug auf den kodierten Inhalt einer zuvor im Ausgangsbitstrom beinhalteten Kachel redundant ist. In einem Beispiel kann der kodierte Inhalt für eine erste Kachel, wie beispielsweise die dargestellte Kachel 1120 in 11, dem Ausgangsbitstrom in dem Abschnitt des Ausgangsbitstroms, der dem Kachelkörper für die erste Kachel entspricht, wie der Kachelkörper 1124, enthalten sein. Der kodierte Inhalt für eine nachfolgende Kachel in Abtastreihenfolge und räumlich benachbart zu der ersten Kachel im Einzelbild kann mit dem kodierten Inhalt identisch sein, der in dem Ausgangsbitstrom für die erste Kachel beinhaltet ist, und kann in dem Ausgangsbitstrom in dem Abschnitt des Ausgangsbitstroms, der dem Kachelkörper für die zweite Kachel entspricht, wie der Kachelkörper 1134, enthalten sein.
  • 12 ist ein Blockdiagramm der Kodierung unter Verwendung eines Kachelkopierens gemäß Implementierungen dieser Offenbarung. In einigen Implementierungen kann eine Kodierung unter Verwendung eines Kachel-Kopierens in einem Kodierer implementiert sein, wie beispielsweise dem Kodierer 400, gezeigt in 4. Wie gezeigt, beinhaltet die Kodierung unter Verwendung eines Kachel-Kopierens das Identifizieren von Kacheln bei 1200, das Kodieren einer ersten Kachel bei 1210, das Ausgeben der ersten kodierten Kachel bei 1220, das Erzeugen einer zweiten kodierten Kachel bei 1230, das Ermitteln, ob die zweite kodierte Kachel zu einer vorher kodierten Kachel bei 1240 passt, Ausgeben der zweiten kodierten Kachel bei 1250, Identifizieren eines Referenzkachel-Offsets bei 1260, Ausgeben der Referenzkachel-Verschiebung bei 1270, Auslassen der zweiten kodierten Kachel von der Ausgabe bei 1280 und Übertragen oder Speichern der Ausgabe bei 1290.
  • Obwohl nicht separat dargestellt in 12, kann in einigen Ausführungsformen ein aktuelles Einzelbild einer Eingangsvideosequenz bei 1200 identifiziert werden. Identifizieren eines gegenwärtigen Einzelbildes, wie beispielsweise des Einzelbildes 330 gezeigt in 3, zum Kodieren der Eingangsvideosequenz ein Identifizieren eines Eingangsvideostroms, wie der Videostrom 300, der in 3 gezeigt ist.
  • Kacheln werden bei 1200 identifiziert. So können zum Beispiel eine oder mehrere Kacheln aus einem gegenwärtigen Einzelbild der Eingangsvideosequenz identifiziert werden, wie in den 7-10 dargestellt. Eine kleine Anzahl von Kacheln, wie beispielsweise vier oder acht Kacheln, kann für das Einzelbild identifiziert werden. Eine große Anzahl von Kacheln, wie beispielsweise 1024 × 1024 Kacheln, kann für das Einzelbild identifiziert werden. Obwohl die 7-10 Beispiele unter Verwendung einer kleinen Anzahl von zeilengekachelten, spaltengefüllten oder zeilen- und spaltengekachelten, rechteckigen Kacheln zeigen, kann die Videocodierung unter Verwendung von Tile-Copying unter Verwendung anderer Zahlen, Anordnungen, Größen oder Formen von Kacheln implementiert werden. So kann beispielsweise Videocodierung unter Verwendung von Tile-Copying unter Verwendung von quadratischen Kacheln, wie beispielsweise Kacheln, einschließlich 64×64 Pixel, implementiert werden. Die Pixel können in einem oder mehreren Blöcken oder in beliebig geformten Kacheln vorliegen.
  • Die Kacheln beginnen bei 1210 zu kodieren. Es werden zum Beispiel eine oder mehrere Kacheln aus den Kacheln, die von dem aktuellen Einzelbild bei 1200 identifiziert wurden, kodiert, um bei 1210 entropiecodierte Kacheln zu erzeugen. Die Kacheln können in einer Abtastreihenfolge, wie zum Beispiel einer Rasterabtastordnung, kodiert werden. Zur Vereinfachung und Klarheit wird das Tile-Copying hierin unter Bezugnahme auf das Kodieren von Kacheln in der Raster-Scan-Reihenfolge beschrieben; Jedoch kann das Kodieren von Kacheln unter Verwendung einer beliebigen Scanreihenfolge implementiert werden.
  • Die Erzeugung einer ersten kodierten Kachel bei 1210 kann beispielsweise eine Vorhersagekodierung durch eine Vorhersagekodierungseinheit, wie beispielsweise die Intra- /Inter-Vorhersageeinheit 410, wie in 4 gezeigt, eine Transformationskodierung durch eine Transformationscodierungseinheit, wie zum Beispiel die Transformationseinheit 420, wie in 4 gezeigt, Quantisierung durch eine Quantisierungseinheit, wie die Quantisierungseinheit 430, gezeigt in 4, Entropiecodierung durch eine Entropiecodierungseinheit, beispielsweise die Entropiecodierungseinheit 440, wie in 4 gezeigt, oder eine Kombination davon beinhalten.
  • Die Vorhersagekodierung einer Kachel kann das Erzeugen von Bewegungsinformationen, wie beispielsweise einen oder mehrere Bewegungsvektoren, die eine Bewegung zwischen der Kachel oder einem Teil davon, wie etwa einem Block, in dem aktuellen Einzelbild und einem entsprechenden Abschnitt eines Referenzrahmens darstellen, und einen entsprechenden Teil eines Referenzeinzelbildes und Erzeugen eines Restes als Differenz zwischen dem Teil des gegenwärtigen Einzelbildes, welcher der Kachel oder dem Teil davon entspricht, und dem entsprechenden Teil des Referenzeinzelbildes. Die Bewegungsinformation und die Restinformation oder die transformierte und quantisierte Information, die der Restinformation entspricht, können entropiecodiert werden, um einen entropiecodierten Inhalt für die Kachel zu erzeugen.
  • Kodierte Kacheln können bei 1220 ausgegeben werden. Eine erste kodierte Kachel ist beispielsweise in einem Ausgangsbitstrom bei 1220 beinhaltet. Das Ausgeben von kodierten Kacheln bei 1220 kann das Bestimmen einer Kachelinhaltsdatengröße beinhalten. Die Kachelinhaltsdatengröße kann eine Summe einer Größe, z. B. einer Anzahl von Bits, der entropiecodierten Bewegungsinformation und der entropiecodierten Restinformation sein. Die Kachelinhaltsdatengröße für eine Kachel kann eine Summe aus einer Größe von entropiecodierter Bewegungsinformation, entropiecodierter Restinformation und entsprechenden Kodierungsparametern oder Informationen, wie beispielsweise Informationen, die in Blockheadern für Blöcke beinhaltet sind, die in der Kachel beinhaltet sind, umfassen.
  • Das Ausgeben von codierten Kacheln bei 1220 kann das Erzeugen eines Kachel-Headers, das Ermitteln einer Anfangsposition in dem Ausgangsbitstrom für die Kachel und Einbinden der Bits, die den Kachel-Header darstellen, die im Ausgangsbitstrom, der am Anfangspunkt beginnt, beinhalten. In einigen Implementierungen einschließlich der Bits, die den Kachel-Header in dem Ausgabebitstrom darstellen, beinhalten einschließlich die Kachelinhaltsdatengröße in dem Header-Abschnitt des Ausgabe-Bitstroms, wie bei 1122 /1132 /1142 in 11 gezeigt ist. So kann beispielsweise der Kachel-Header 1122 für die Kachel 1120, die in 11 links dargestellt ist, Kachelinhaltsdatengrößeninformationen beinhalten, die eine Größe des entsprechenden Kachelkörpers 1124 anzeigen.
  • Das Ausgeben von kodierten Kacheln bei 1220 kann den Kachelinhalt einschließen, der die entropiecodierte Bewegungsinformation und die entropiecodierte Restinformation in dem Kachelkörperabschnitt der Kachelinformation in dem Ausgabebitstrom beinhalten kann. Der Kachelkörper 1124 für die Kachel 1120, die in 11 links dargestellt ist, beinhaltet beispielsweise den kodierten Kachelinhalt für die Kachel.
  • Eine aktuelle oder zweite kodierte Kachel wird bei 1230 erzeugt. Die Erzeugung einer aktuellen kodierten Kachel bei 1230 kann das Identifizieren einer aktuellen Kachel im Einzelbild und das Kodieren der aktuellen Kachel, ähnlich der bei 1210 gezeigten Kachelkodierung beinhalten, um eine aktuelle entropiekodierte Kachel zu erzeugen. Die aktuelle Kachel kann räumlich nahe einem oder mehreren zuvor kodierten Kacheln des Einzelbildes sein, wie beispielsweise die bei 1210 kodierten und bei 1220 ausgegebenen Kacheln in Abtastreihenfolge. Beispielsweise kann die Abtastreihenfolge eine Raster-Abtastreihenfolge sein, und die aktuelle Kachel kann unterhalb einer vorher kodierten Kachel, rechts von einer zuvor kodierten Kachel oder beiden liegen. Das Erzeugen der aktuellen kodierten Kachel bei 1230 kann das Ermitteln einer Kachelinhaltsdatengröße für die aktuelle kodierte Kachel beinhalten. Die Kachelinhaltsdatengröße kann auf dem entropiecodierten Inhalt der aktuellen kodierten Kachel basieren.
  • Ob die aktuelle kodierte Kachel einer zuvor kodierten Kachel entspricht, wird bei 1240 ermittelt. Das Ermitteln, ob die aktuelle kodierte Kachel, die bei 1230 erzeugt wird, einer zuvor kodierten Kachel entspricht, wie beispielsweise eine bei 1210 kodierte Kachel, kann die Identifizierung von Kandidatenkacheln, die in der Abtastreihenfolge benachbart sind, an der Position des aktuellen Einzelbildes, das durch die aktuelle kodierte Zeit dargestellt wird, beinhalten. Die zuvor kodierten Kacheln können räumlich nahe angeordnet sein, wie beispielsweise unmittelbar benachbart zu der Position in dem aktuellen Einzelbild in der Abtastreihenfolge. So kann beispielsweise die Abtastreihenfolge eine Rasterabtastreihenfolge sein, und vorher kodierte Kacheln unmittelbar oben, oben-links, oben-rechts und links der aktuellen Kachel als Kandidaten-Kacheln identifiziert werden.
  • Ermitteln, ob die aktuelle kodierte Kachel einer vorher kodierten Kachel bei 1240 entspricht, kann das Ermitteln einer Differenz zwischen dem entropiecodierten Inhalt für die aktuelle codierte Kachel und dem entropiecodierten Inhalt für jeweilige Kandidatenkachel beinhalten. Die Differenz zwischen dem entropiecodierten Inhalt für die aktuelle kodierte Kachel und dem entropiecodierten Inhalt für eine Kandidatenkachel kann innerhalb eines Schwellenwerts liegen und die Kandidatenkachel wird als Referenzkachel für die aktuelle kodierte Kachel identifiziert. Der Schwellenwert kann Null sein. So kann zum Beispiel der entropiecodierte Inhalt einer Kandidatenkachel, die als Referenzkachel für die aktuelle kodierte Kachel identifiziert ist, identisch mit dem entropiecodierten Inhalt der aktuellen kodierten Kachel sein.
  • Ermitteln, ob die aktuelle kodierte Kachel einer vorher kodierten Kachel bei 1240 entspricht, kann die Bewertung jeder Kandidatenkachel beinhalten, um zu ermitteln, ob die jeweilige Kachel als Referenzkachel identifiziert werden kann. Die Kandidatenkacheln können bewertet werden, bis jede Kandidatenkachel ausgewertet wird oder bis eine Kandidatenkachel als Referenzkachel identifiziert wird. Die Kandidatenkacheln können in einer Reihenfolge ausgewertet werden, die eine definierte Reihenfolge, wie beispielsweise links, oben, oben links, oben rechts oder eine bestimmte Reihenfolge, wie beispielsweise eine auf Bewegungsinformation basierende Reihenfolge sein kann, da gemeinsame Bewegungsvektoren zwischen zwei Kacheln wahrscheinlich bedeuten, dass der Kachelinhalt ähnlich ist. So können zum Beispiel Bewegungsinformationen für die aktuelle die Kandidatenkacheln oder beides eine Ähnlichkeit der Bewegung anzeigen, die von oben-rechts nach links abnimmt, und eine entsprechende Kandidaten-Kachelauswertungsreihenfolge, wie oben-rechts, oben, oben links, links, ermittelt werden.
  • Eine aktuelle (z. B. zweite) kodierte Kachel wird bei 1250 ausgegeben. So kann zum Beispiel das Ermitteln, ob die aktuelle kodierte Kachel einer zuvor kodierten Kachel bei 1240 entspricht, nicht eine Referenzkachel identifizieren, die eine Differenz zwischen der aktuellen kodierten Kachel und jeder entsprechenden Kandidatenkachel anzeigt, und die aktuell kodierte Kachel ist dann in dem Ausgangsbitstrom beinhaltet, der ähnlich sein kann, um die erste kodierte Kachel in dem Ausgangsbitstrom bei 1220 einzuschließen. Zum Beispiel einschließlich der aktuellen codierten Kachel in dem Ausgangsbitstrom bei 1250, einschließlich der Kachelinhaltsdatengröße in einem Abschnitt des Ausgangsbitstroms, der einem Kachel-Header für die aktuelle Kachel entspricht und den Inhalt beinhaltet, die den entropiecodierten Inhalt für die aktuelle kodierte Kachel in einem Abschnitt des Ausgangsbitstroms beinhalten kann. der dem Kachelkörper für die aktuelle Kachel entspricht.
  • Obwohl nicht separat dargestellt in 12, kann das Ausgeben des aktuellen codierten Kachelinhalts bei 1250 das Erzeugen einer Kachelkopiermoduskennung, wie beispielsweise eines Bits oder einer Markierung, beinhalten, was darauf hinweist, dass der kodierte Inhalt für den aktuellen kodierten Block in dem Ausgangsbitstrom einschließlich der Kachelkopiermoduskennung und der Kachelinhaltsdatengröße in einem Header für die aktuelle Kachel enthalten ist und den Inhalt für die aktuelle Kachel in dem Ausgabe-Bitstrom beinhaltet. In einem Beispiel gibt ein Kachelkopiermoduskennwert von null an, dass der kodierte Inhalt für den aktuellen kodierten Block in dem Ausgangsbitstrom beinhaltet ist.
  • Ein Referenzkachel-Offset wird bei 1260 identifiziert. So wird zum Beispiel eine Referenzkachel bei 1240 identifiziert, und ein Referenzkachel-Offset wird bei 1260 identifiziert. Das Identifizieren eines Referenzkachel-Offsets kann das Identifizieren einer Kandidatenkachelen Differenz zwischen einer Position im aktuellen Einzelbild der Kachel, die als aktuell kodierte Kachel kodiert ist, und eine Position im aktuellen Einzelbild der Kachel, die als Referenzkachel kodiert ist, beinhalten. Das Referenzkachel-Offset kann als ein Zeilenversatz und ein Spaltenversatz ausgedrückt werden, wie beispielsweise der absolute Zeilen- und Spaltenabstand zwischen der aktuellen Kachel und der Referenzkachel. So entspricht beispielsweise die bei 1230 erzeugte aktuelle kodierte Kachel der dritten Spalte und der vierten Zeile des aktuellen Einzelbildes, das der bei 1240 identifizierten Referenzkachel der zweiten Spalte und der dritten Zeile des aktuellen Einzelbildes entspricht. In diesem Beispiel ist das Referenzkachel-Offset als (1, 1) ausgedrückt.
  • Das Referenzkachel-Offset ist in dem Ausgangsbitstrom bei 1270 beinhaltet. Obwohl nicht separat dargestellt in 12, kann das Ausgeben des Referenzkachel-Offsets bei 1270 ein Erzeugen eines Kachel-Headers für die aktuelle Kachel einschließlich des Referenzkachel-Offsets in dem Kachel-Header für die aktuelle Kachel beinhalten und den Kachel-Header fair die aktuelle Kachel in dem Ausgangsbitstrom beinhalten. Obwohl nicht separat dargestellt in 12, kann das Ausgeben des Referenzkachel-Offsets bei 1270 ein Erzeugen einer Kachelkopiermodus-Kennung, wie beispielsweise eines Bits oder einer Markierung beinhalten, was darauf hinweist, dass die Kachel eine Kopierkachel ist. Das Bit oder Flag zeigt an, dass der kodierte Inhalt für den aktuellen Block, der bei 1230 erzeugt wird, aus dem Ausgangsbitstrom weggelassen wird. Die Verarbeitung bei 1270 kann auch die Kachelkopiermodus-Kennung in einem Header für die aktuelle Kachel beinhalten und den Header für die aktuelle Kachel in dem Ausgabebitstrom beinhalten. Eine Kachelkopiermodus-Kennung von eins zeigt beispielsweise an, dass die Kachel eine Kopierkachel ist.
  • Der bei 1230 erzeugte kodierte Inhalt für die aktuelle (z. B. zweite) kodierte Kachel wird bei 1280 aus der Ausgabe weggelassen. So kann zum Beispiel der Ausgabebitstrom in Reaktion auf die aktuelle Kachel als Kopierkachel bezeichnet werden, einen Kachel-Header für die aktuelle Kachel beinhalten und einen Kachelkörper für die aktuelle Kachel auslassen.
  • Eine Kandidatenkachel kann eine Kopierkachel sein, und das Ermitteln, ob die aktuelle Kachel und die Kandidatenkachel bei 1240 übereinstimmen, kann das Identifizieren der Referenzkachel für die Kandidatenkachel und dann das Vergleichen des kodierten Inhalts der Referenzkachel mit dem kodierten Inhalt der aktuellen Kachel beinhalten. Wenn eine Kachel Übereinstimmung ermittelt wird, wird die aktuelle Kachel als Kopierkachel bezeichnet, und die Offset-Informationen, die der Referenzkachel zugeordnet sind, werden bei 1260 für die aktuelle Kachel identifiziert und sind in dem Header für die aktuelle Kachel bei 1270 beinhaltet. Das Ergebnis sind zwei Kopierkacheln mit einer gemeinsamen Referenzkachel.
  • Der Ausgang (d. h. der Ausgangsbitstrom) wird bei 1290 gesendet oder gespeichert. So kann beispielsweise die Ausgabe zu einer anderen Vorrichtung übertragen werden, wie zum Beispiel dem gezeigten Dekodierer 500 aus 5, über ein drahtgebundenes oder drahtloses Kommunikationssystem, wie das in 2.
  • 13 ist ein Blockdiagramm einer exemplarischen Ausgangsbitstromstruktur, die Kachelinformationen beinhaltet, die unter Verwendung eines Tile-Copying gemäß Implementierungen dieser Offenbarung kodiert sind. Ein Ausgangsbitstrom kann kodierte Videodaten beinhalten, die in einem Ausgangsbitstrom 1300 organisiert sind. So beinhaltet beispielsweise der Ausgangsbitstrom 1300, wie gezeigt, Informationen, die ein Einzelbild 1310 oder eine Folge von Einzelbildern darstellen.
  • Die Information, die ein Einzelbild 1310 darstellt, beinhaltet einen Einzelbild-Header 1312 und einen Einzelbildkörper 1314. Ein Einzelbildkörper 1314 beinhaltet Informationen, die die Kacheln 1320 /1330 /1340 darstellen. Die Informationen, die eine Kachel 1320 /1330 /1340 darstellen, beinhalten einen Kachel-Header 1322 /1332 /1342 und einen Kachelkörper 1328 /1348. So beinhalten beispielsweise die Kachelinformationen, die links für die Kachel 1320 gezeigt sind, einen Kachel-Header 1322 und einen Kachelkörper 1328; die Kachelinformationen beinhalten, die in der Mitte für die Kachel 1330 gezeigt ist, einen Kachel-Header 1332; und die Kachelinformationen, die auf der rechten Seite für die Kachel 1340 gezeigt sind, beinhalten einen Kachel-Header 1342 und einen Kachelkörper 1348.
  • Die Kachelinfomationen für eine Kachel, wie beispielsweise die Kachel 1320 auf der linken Seite oder die Kachel 1340 auf der rechten Seite, kann ähnlich der Kachelinformation für eine Kachel sein, wie in 11 gezeigt, außer, dass der Header 1322 /1342 eine Kachelkopiermoduskennung 1324 /1344 beinhaltet, die in dem Bitstrom vor der Kachelinhalt-Datengrößeninformation 1326 /1346 beinhaltet sein können und die als das erste Bit des Kachel-Headers in diesem Beispiel beinhaltet ist. Die Kachelkopiermoduskennung 1324 /1344 für die Kachel 1320 auf der linken Seite und die Kachel 1340 auf der rechten Seite ist mit einem Wert von Null dargestellt, der anzeigt, dass der kodierte Inhalt für die jeweiligen Kacheln in dem entsprechenden Kachelkörperabschnitt 1328 /1348 für die jeweilige Kachel 1320 /1340 in dem kodierten Ausgabe-Bitstrom 1300, wie gezeigt, beinhaltet ist.
  • Die Kachelinformation für eine Kopierkachel, wie beispielsweise die Kachel 1330 in der Mitte, wie in 13 dargestellt, kann einen Kachel-Header 1332 beinhalten und ein Kachelkörper, wie dargestellt, kann ausgelassen werden. Der Kachel-Header 1332 für die Kopiermoduskachel 1330 beinhaltet eine Kachelkopiermoduskennung 1334, die einen Wert aufweisen kann, der anzeigt, dass die Kachel eine Kopiermoduskachel ist. Der Wert kann ein Wert von eins sein. Der Wert kann als das erste Bit des Kachel-Header beinhaltet sein, wie gezeigt. Der Kachel-Header 1332 für die Kopiermodus-Kachel 1330 lässt eine Kachelinhaltsdatengröße aus und beinhaltet ein Referenzkachel-Offset 1335. Das Referenzkachel-Offset 1335 beinhaltet in diesem Beispiel ein Referenzkachel-Zeilenoffset 1336 und ein Referenzkachel-Spaltenoffset 1338, aber beide sind nicht erforderlich.
  • 14 ist ein Blockdiagramm der Kodierung unter Verwendung eines Tile-Copying 1400 gemäß Implementierungen dieser Offenbarung. Das Kodieren kann unter Verwendung des Tile-Copying 1400 in einem Dekodierer implementiert sein, wie beispielsweise dem Dekodierer 500, wie in 5 gezeigt. Wie in dem Beispiel von 14 gezeigt, beinhaltet das Dekodieren unter Verwendung des Tile-Copying 1400 das Empfangen eines kodierten Videobitstroms bei 1410, das Dekodieren eines Einzelbildes aus dem kodierten Videobitstrom bei 1420, das Dekodieren einer Kachel des Einzelbildes bei 1430, das Dekodieren eines Kachel-Headers bei 1440, das ermitteln, ob ein Kachelkopiermodus-Flag auf einen Wert von null oder eins bei 1450 gesetzt ist, Erzeugen einer dekodierten Kachel aus dem Kachelkörper bei 1460, Dekodieren eines Offsets im Kachel-Header bei 1470, Lokalisieren einer Referenzkachel basierend auf dem Offset bei 1480, Erzeugen einer dekodierten Kachel unter Verwendung des Referenzkachelinhalts bei 1490 und Ausgeben oder Speichern der dekodierten Kachel bei 1495.
  • Ein kodierter Videobitstrom wird bei 1410 empfangen. So kann beispielsweise ein kodierter Videobitstrom, wie beispielsweise der Bitstrom 1300, ausgeben, wie in 13 gezeigt, von einer anderen Vorrichtung, wie dem Kodierer 400 empfangen werden, wie in 4 gezeigt. Es kann über ein drahtgebundenes oder drahtloses Kommunikationssystem empfangen werden, wie beispielsweise das drahtlose Netzwerk in 2 gezeigt. Der am Dekodierer empfangene kodierte Videobitstrom kann durch Entropiecodierung dekomprimiert werden. Der empfangene kodierte Videobitstrom kann unter Verwendung eines Tile-Copying kopiert worden sein, wie in 12 gezeigt.
  • Ein aktuelles Einzelbild aus dem kodierten Videobitstrom wird bei 1420 dekodiert. So kann zum Beispiel der codierte Videobitstrom Videodaten aus einer Folge von Einzelbildern beinhalten, einschließlich Videodaten eines einzelnen Einzelbildes, wie beispielsweise des Einzelbildes 1310, wie in 13 gezeigt. Die Dekodierung kann auf Frame-by-frame-Basis erfolgen.
  • Eine aktuelle oder erste Kachel des aktuellen Einzelbildes wird bei 1430 dekodiert. So kann beispielsweise das aktuelle Einzelbild in mehrere Kacheln unterteilt werden, wie beispielsweise die Kacheln 1320 /1330/1340, wie in 13 gezeigt, wobei die aktuelle Kachel dekodiert wird.
  • Ein Header für die aktuelle Kachel wird bei 1440 dekodiert. So kann beispielsweise die aktuelle Kachel eine Information beinhalten, die einen Kachel-Header darstellt, wie beispielsweise den Kachel-Header 1322 /1332 /1342, wie in 13 gezeigt. Das Dekodieren der Bits des aktuellen Kachel-Headers kann Informationen bereitstellen. die eine Größe des entsprechenden Kachelkörpers anzeigen. In einigen Implementierungen können die dekodierten Tile-Header-Bits auch eine Tile-Copy-Moduskennung beinhalten, wie beispielsweise ein Bit oder ein Flag. So kann beispielsweise der aktuelle Kachel-Header die Kachelkopiermodus-Kennung 1324 /1334 beinhalten, wie in 13 gezeigt.
  • Es wird ermittelt, ob die aktuelle Kachel bei 1450 eine Kopierkachel ist. So wird zum Beispiel ermittelt, dass die aktuelle Kachel keine Kopierkachel ist, wenn die entschlüsselte Kachelkopiermodus-Kennung einen Wert Null aufweist. In diesem Fall kann die Dekodierung des Kachelinhalts auf herkömmliche Weise erfolgen, indem der Kachelkörper, der der aktuellen Kachel entspricht, bei 1460 dekodiert wird. Als ein anderes Beispiel kann ermittelt werden, dass die aktuelle Kachel eine Kopierkachel ist, wenn die dekodierte Kachelkopiermodus-Kennung einen Wert eins aufweist.
  • Ein Referenzkachel-Offset wird aus dem aktuellen Kachel-Header bei 1470 dekodiert. So kann beispielsweise unter der Bedingung, dass die Kachelkopiermodus-Kennung einen Wert von Eins aufweist, der aktuelle Kachel-Header Offset-Informationen beinhalten, die eine räumliche Differenz zwischen einer Position im aktuellen Einzelbild der aktuell kodierten Kachel und einer Position im aktuellen Einzelbild der Kachel, die als Referenzkachel kodiert ist. identifiziert. Das Referenzkachel-Offset kann als ein Zeilenversatz und ein Spaltenversatz ausgedrückt werden, wie beispielsweise der absolute Zeilen- und Spaltenabstand zwischen der aktuellen Kachel und der Referenzkachel. So kann beispielsweise die bei 1430 erzeugte aktuelle kodierte Kachel der dritten Spalte und der vierten Zeile des aktuellen Einzelbildes entsprechen, die Referenzkachel kann der zweiten Spalte und der dritten Zeile des aktuellen Einzelbildes entsprechen. In diesem Fall ist das dekodierte Referenzkachel-Offset als (1, 1) ausgedrückt. Der Dekodierer kann die aktuelle Kachel als Kopierkachel identifizieren, indem die dekodierte Offset-Information nur in dem Kachel-Header und ohne Abhängigkeit von der Dekodierung einer Kachelkopiermodus-Kennung extrahiert wird.
  • Das Dekodieren des Referenzkachel-Offsets bei 1470 kann das Lesen des Headers der aktuellen Kachel aus dem dekodierten Bitstrom ohne Verwendung einer Entropiecodierung beinhalten. So kann beispielsweise Kachel-Header ohne Kompression der Entropiecodierung kodiert werden, und daher erfordert das Dekodieren des Headers aus dem empfangenen kodierten Bitstrom keine Entropiecodierung.
  • Das Dekodieren des Referenzkachel-Offsets bei 1470 kann das Dekodieren des Headers der aktuellen Kachel unter Verwendung einer Entropiecodierung beinhalten. So kann beispielsweise Kachel-Header unter Verwendung einer Entropiecodierung kodiert werden, und daher beinhaltet das Dekodieren des Headers aus dem empfangenen kodierten Bitstrom eine Entropiecodierung.
  • Der Kachelinhalt, der der aktuellen Kachel entspricht kann gefunden werden, indem die Referenzkachel bei 1480 basierend auf der dekodierten Referenzkachel-Offset-Information lokalisiert wird. So kann beispielsweise das dekodierte Referenzkachel-Offset anzeigen, dass die Position der Referenzkachel innerhalb des aktuellen Einzelbildes einer Zeile oberhalb und eine Spalte nach links in Bezug auf die Position der aktuellen Kachel innerhalb des aktuellen Einzelbildes ist. Der Kachelinhalt, der der aktuellen Kachel entspricht wird dann durch das Lesen der entschlüsselten Referenzkachel an der bestimmten Position gefunden.
  • Eine dekodierte aktuelle Kachel wird unter Verwendung des Kachelinhalts erzeugt, der bei der entsprechenden Referenzkachel bei 1490 gefunden wird. Da beispielsweise die aktuelle Kachel eine Kopierkachel ist und der Kachelinhalt für die aktuelle Kachel aus dem kodierten Bitstrom während der Kodierung weggelassen wurde, kann der Kachelinhalt der Referenzkachel, der bei 1480 lokalisiert ist, dekodiert werden, um die dekodierte aktuelle Kachel zu erzeugen.
  • Die dekodierte aktuelle Kachel wird an ein anderes Gerät ausgegeben oder im Speicher für die zukünftige Ausgabe an ein anderes Gerät bei 1495 gespeichert. So kann zum Beispiel die dekodierte Kachel, die bei 1460 /1490 erzeugt wird, zum weiteren Dekodieren auf einem Blockpegel und einem Pixelpegel ausgegeben werden, um das Videobild zu reproduzieren.
  • Die Wörter „Beispiel“ oder „Aspekt“ wie hierin verwendet, dienen als ein Beispiel einer Instanz oder einer Veranschaulichung. Jeder Aspekt oder Design, das hierin als „Beispiel“ oder „Aspekt“ beschrieben wird, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs auszulegen. Vielmehr soll die Verwendung der Wörter „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 nicht etwas anderes angegeben oder klar aus dem Zusammenhang zu einer singulären Form abgeleitet werden kann. Darüber hinaus soll die Verwendung des Begriffs „eine Ausführungsform“ oder „mehrere Ausführungsformen“ oder „eine Implementierung“ oder „eine Implementierung“ nicht im Ganzen als dieselbe Ausführungsform oder Implementierung angesehen werden, es sei denn, dies ist ausdrücklich so beschrieben. Wie hierin verwendet, beinhalten die Begriffe „ermitteln“ und „identifizieren“ oder beliebige Variationen davon, das Auswählen, Ermitteln, Berechnen, Nachschlagen, Empfangen, Bestimmen, Festlegen, Erhalten oder anderweitiges Identifizieren oder Bestimmen in irgendeiner Weise unter Verwendung einer oder mehrerer der in 1 gezeigten Vorrichtungen.
  • Weiterhin können zur Vereinfachung der Erläuterung, obwohl die Figuren und Beschreibungen hierin Sequenzen oder eine Reihe von Schritten oder Stufen beinhalten, können Elemente der hierin offenbarten Verfahren in verschiedenen Reihenfolgen und/oder gleichzeitig auftreten. Zusätzlich können Elemente der hierin offenbarten Verfahren mit anderen Elementen auftreten, die hier nicht explizit dargestellt und beschrieben sind. Darüber hinaus können nicht alle Elemente der hierin beschriebenen Verfahren erforderlich ein Verfahren in Übereinstimmung mit dem offenbarten Gegenstand zu implementieren.
  • Die Implementierungen der Sendestation 100A und/oder Empfangsstation 100B (und der darauf gespeicherten und/oder ausgeführten Algorithmen, Methoden, Anweisungen usw.) können in Hardware, Software oder einer beliebigen Kombination davon implementiert 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 100A und der Empfangsstation 100B nicht notwendigerweise in der gleichen Weise implementiert werden.
  • Ferner kann in einer Implementierung beispielsweise die Übertragungsstation 100A oder die Empfangsstation 100B unter Verwendung eines Computerprogramms implementiert werden, das bei der Ausführung eines jeden der hierin beschriebenen Verfahren, Algorithmen und/oder Befehle 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 100A und die Empfangsstation 100B können beispielsweise auf Computer in einem Echtzeit-Videosystem implementiert sein. Alternativ kann die Sendestation 100A auf einem Server implementiert sein, und die Empfangsstation 100B kann auf einer von dem Server getrennten Vorrichtung implementiert sein, wie beispielsweise einem Handkommunikationsgerät. In diesem Fall kann die Sendestation 100A Inhalte unter Verwendung eines Kodierers 400 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 Kommunikationseinrichtung gespeicherten Inhalt dekodieren, beispielsweise einen Inhalt, der nicht von der Sendestation 100A gesendet wurde. Eine andere geeignete Übertragungsstation 100A und Empfangsstation 100B - Implementierungsschemata ist verfügbar. So kann beispielsweise die Empfangsstation 100B ein allgemein stationärer Personalcomputer und nicht ein mobiles Kommunikationsgerät sein, und/oder ein Gerät, das einen Kodierer 400 beinhaltet, kann auch einen Dekodierer 500 beinhalten.
  • Ferner können alle oder ein Teil der Implementierungen die Form eines Computerprogrammprodukts annehmen, das beispielsweise 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 Implementierungen wurden beschrieben, um ein einfaches Verständnis der Anwendung zu ermöglichen und sind nicht einschränkend. Im Gegenteil, deckt die Anmeldung verschiedene Modifikationen und äquivalente Anordnungen, die in den Schutzumfang der beigefügten Ansprüche fallen ab, 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 (16)

  1. Verfahren, umfassend: das Kodieren eines Einzelbildes (330) aus einem Eingangsvideostrom (300) durch einen Prozessor (140) als Reaktion auf Anweisungen, die auf einem nichtflüchtigen computerlesbaren Medium (150) gespeichert sind, durch: das Identifizieren (1200) von Kacheln (1120; 1130; 1140; 1320; 1330; 1340) aus Einzelbildern, wobei eine Kachel eine Vielzahl von Blöcken (710; 810; 910; 1010) beinhaltet; das Erzeugen (1210) einer ersten kodierten Kachel durch Kodieren einer ersten Kachel aus den Kacheln (1120; 1130; 1140; 1320; 1330; 1340); das Einschließen (1220) der ersten kodierten Kachel in einem Ausgangsbitstrom (1100; 1300), wobei der Ausgangsbitstrom (1100; 1300) einen Kachel-Header (1122; 1132; 1142; 1322; 1332; 1342) und einen Kachelkörper (1124; 1134; 1144; 1328; 1348) für die erste kodierte Kachel beinhaltet; das Erzeugen (1230) einer zweiten kodierten Kachel durch Kodieren einer zweiten Kachel aus den Kacheln (1120; 1130; 1140; 1320; 1330; 1340); das Ermitteln (1240), ob eine Differenz zwischen dem kodierten Kachelinhalt der ersten kodierten Kachel und dem kodierten Kachelinhalt der zweiten kodierten Kachel innerhalb eines Schwellenwerts liegt; unter einer Bedingung, dass die Differenz innerhalb des Schwellenwerts liegt: das Identifizieren (1260) eines Offsets, das eine Differenz zwischen einer räumlichen Position der ersten Kachel im Einzelbild (330) und der zweiten Kachel im Einzelbild (330) anzeigt, das Einschließen (1270) des Offsets im Ausgangsbitstrom (1100; 1300), und das Auslassen (1280) des kodierten Kachelinhalts der zweiten kodierten Kachel aus dem Ausgangsbitstrom (1100; 1300); und das Senden oder das Speichern (1290) des Ausgangsbitstroms (1100; 1300).
  2. Verfahren nach Anspruch 1, wobei das Offset Folgendes umfasst: das Definieren eines Headers für die zweite kodierte Kachel; und das Einschließen des Offsets innerhalb des Headers (1122; 1132; 1142; 1322; 1332; 1342) der zweiten kodierten Kachel.
  3. Verfahren nach Anspruch 1 oder 2, wobei das Kodieren der ersten Kachel und das Kodieren der zweiten Kachel Kodierungsbewegungsinformationen und Reste jeder Kachel umfasst und das Weglassen der zweiten kodierten Kachel das Weglassen der Bewegungsinformation und der Reste der zweiten Kachel umfasst.
  4. Verfahren nach Anspruch 1, 2 oder 3, wobei das Einschließen des Offsets in dem Ausgangsbitstrom (1100; 1300) Folgendes umfasst: das Kodieren ohne Verwenden der Entropiecodierung.
  5. Verfahren nach einem der Ansprüche 1-4, wobei das Einschließen des Offsets im Ausgangsbitstrom (1100; 1300) Folgendes umfasst: das Einschließen räumlicher Offset-Informationen, die sich auf die erste Kachel beziehen, innerhalb eines Headers (1122; 1132; 1142; 1322; 1332; 1342) der zweiten Kachel, die in den Ausgabebitstrom geschrieben ist.
  6. Verfahren nach irgendeinem der Ansprüche 1-5, des Weiteren umfassend: das Identifizieren von zuvor codierten Kacheln, die räumlich nahe an einer aktuellen Kachel sind, als Kandidatenkacheln; und das Auswählen der ersten codierten Kachel aus den Kandidatenkacheln.
  7. Verfahren nach Anspruch 6, wobei die Kandidatenkacheln Kacheln beinhalten, die sich oberhalb der aktuellen Kachel im Einzelbild (330) befinden oder im Einzelbild (330) links von der aktuellen Kachel.
  8. Verfahren nach Anspruch 6, wobei die Kandidatenkacheln unmittelbar benachbart neben der aktuellen Kachel liegen.
  9. Verfahren nach irgendeinem der Ansprüche 1-8, des Weiteren umfassend: das Erzeugen einer Kachelkopiermodus-Kennung, die anzeigt, ob die zweite kodierte Kachel in dem Ausgangsbitstrom (1100; 1300) eine Kopierkachel ist, wobei bei einer Bedingung, dass die zweite kodierte Kachel eine Kopierkachel ist, der kodierte Kachelinhalt für die zweite kodierte Kachel aus dem Ausgangsbitstrom (1100; 1300) weggelassen wird und ein Kachel-Header (1122; 1132; 1142; 1322; 1332; 1342) für die zweite kodierte Kachel die Kachelkopiermodus-Kennung und das Offset zum Lokalisieren einer Referenzkachel mit dem kodierten Kachelinhalt für die zweite kodierte Kachel beinhaltet.
  10. Verfahren, umfassend: das Dekodieren eines Einzelbildes aus einem empfangenen kodierten Videobitstrom durch einen Prozessor (140) als Reaktion auf Anweisungen, die auf einem nichtflüchtigen computerlesbaren Medium (150) gespeichert sind, wobei das Dekodieren des Einzelbildes Folgendes beinhaltet: das Dekodieren eines Offsets, das eine Differenz zwischen einer räumlichen Position einer aktuellen Kachel im Einzelbild und einer Referenzkachel im Einzelbild anzeigt, aus dem kodierten Videobitstrom, wobei die Referenzkachel im kodierten Videobitstrom einen Kachel-Header (1122; 1132; 1142; 1322; 1332; 1342) und einen Kachelkörper (1124; 1134; 1144; 1328; 1348) beinhaltet, und wobei jede Kachel eine Vielzahl von kodierten Blöcken (710; 810; 910; 1010) beinhaltet, das Identifizieren einer kodierten Information aus dem kodierten Videobitstrom, die die Referenzkachel darstellt, basierend auf dem Offset, und das Erzeugen einer dekodierten Kachel entsprechend der aktuellen Kachel durch Dekodieren der kodierten Information, die die Referenzkachel darstellt, wobei der kodierte Videobitstrom die kodierte Information, die die aktuelle Kachel darstellt, auslässt; und das Ausgeben oder Speichern der dekodierten Kachel.
  11. Verfahren nach Anspruch 10, wobei das Dekodieren des Offsets Folgendes umfasst: das Erfassen eines Headers (1122; 1132; 1142; 1322; 1332; 1342) für die aktuelle Kachel in dem kodierten Videobitstrom; und das Extrahieren des Offsets aus dem Header für die aktuelle Kachel.
  12. Verfahren nach Anspruch 10 oder 11, wobei das Erzeugen von dekodierten Kacheln Folgendes umfasst: das Erfassen eines Headers (1122; 1132; 1142; 1322; 1332; 1342) für die aktuelle Kachel in dem kodierten Videobitstrom; und das Dekodieren einer Kachelkopiermodus-Kennung vom Header (1122; 1132; 1142; 1322; 1332; 1342) für die aktuelle Kachel, der anzeigt, dass die aktuelle Kachel als Kopierkachel kodiert wurde, wobei kodierte Informationen basierend auf Inhaltsdaten, die der Referenzkachel ähnlich sind, weggelassen wurden.
  13. Verfahren nach Anspruch 10, 11 oder 12, wobei das Dekodieren des Offsets Folgendes umfasst: das Lesen eines Headers (1122; 1132; 1142; 1322; 1332; 1342) für die aktuelle Kachel aus dem dekodierten Videobitstrom ohne Verwendung einer Entropiedecodierung, wobei das Offset im Header (1122; 1132; 1142; 1322; 1332; 1342) für die aktuelle Kachel angeordnet ist.
  14. Verfahren nach Anspruch 10, 11 oder 12, wobei das Dekodieren des Offsets Folgendes umfasst: das Dekodieren eines Headers (1122; 1132; 1142; 1322; 1332; 1342) für die aktuelle Kachel in dem kodierten Videobitstrom unter Verwendung einer Entropiedecodierung; und das Extrahieren des Offsets aus dem Header für die aktuelle Kachel.
  15. Vorrichtung, die konfiguriert ist, um die Schritte nach einem der Ansprüche 1-14 durchzuführen.
  16. Vorrichtung umfassend: einen Prozessor; und einen nichtflüchtigen Speicher, der Anweisungen speichert, die den Prozessor veranlassen, die Schritte nach einem der Ansprüche 1-14 durchzuführen.
DE102016125125.9A 2016-01-25 2016-12-21 Tile-Copying für Videokompression Active DE102016125125B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/005,545 US10542258B2 (en) 2016-01-25 2016-01-25 Tile copying for video compression
US15/005,545 2016-01-25

Publications (2)

Publication Number Publication Date
DE102016125125A1 DE102016125125A1 (de) 2017-07-27
DE102016125125B4 true DE102016125125B4 (de) 2024-06-06

Family

ID=57797010

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016008199.4U Active DE202016008199U1 (de) 2016-01-25 2016-12-21 Tile-Copying für Videokomression
DE102016125125.9A Active DE102016125125B4 (de) 2016-01-25 2016-12-21 Tile-Copying für Videokompression

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202016008199.4U Active DE202016008199U1 (de) 2016-01-25 2016-12-21 Tile-Copying für Videokomression

Country Status (5)

Country Link
US (1) US10542258B2 (de)
CN (1) CN107027033B (de)
DE (2) DE202016008199U1 (de)
GB (1) GB2546888B (de)
WO (1) WO2017131903A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015014773A1 (en) 2013-07-29 2015-02-05 Koninklijke Kpn N.V. Providing tile video streams to a client
WO2015197818A1 (en) 2014-06-27 2015-12-30 Koninklijke Kpn N.V. Hevc-tiled video streaming
US10715843B2 (en) * 2015-08-20 2020-07-14 Koninklijke Kpn N.V. Forming one or more tile streams on the basis of one or more video streams
EP3360330B1 (de) 2015-10-08 2021-03-24 Koninklijke KPN N.V. Verbesserung einer interessenregion in videorahmen eines videostroms
GB2570743B (en) * 2018-06-29 2021-06-23 Imagination Tech Ltd Tile assignment to processing cores within a graphics processing unit
CN112789862B (zh) * 2018-10-02 2024-07-23 瑞典爱立信有限公司 使用图块上进行的循环以信号传送的图片图块属性
CN118200565A (zh) * 2018-12-07 2024-06-14 松下电器(美国)知识产权公司 编码装置、解码装置和非暂时性的计算机可读介质
CN112236998A (zh) 2019-01-02 2021-01-15 株式会社 Xris 用于对视频信号进行编码/解码的方法及其装置
US11523185B2 (en) 2019-06-19 2022-12-06 Koninklijke Kpn N.V. Rendering video stream in sub-area of visible display area

Family Cites Families (177)

* 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 三菱電機株式会社 適応的ブロッキング画像符号化装置
US5434678A (en) 1993-01-11 1995-07-18 Abecassis; Max Seamless transmission of non-sequential video segments
US6208805B1 (en) 1992-02-07 2001-03-27 Max Abecassis Inhibiting a control function from interfering with a playing of a video
US5225832A (en) 1992-02-13 1993-07-06 Industrial Technology Research Institute High speed variable length decoder
DE69329983T2 (de) 1992-08-21 2001-08-02 Canon K.K., Tokio/Tokyo Bildverarbeitungsverfahren und -vorrichtung
WO1994018799A1 (en) 1993-02-03 1994-08-18 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
US6327304B1 (en) 1993-05-12 2001-12-04 The Duck Corporation Apparatus and method to digitally compress video signals
US6181822B1 (en) 1993-05-12 2001-01-30 The Duck Corporation Data compression apparatus and method
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
US5734744A (en) 1995-06-07 1998-03-31 Pixar Method and apparatus for compression and decompression of color data
US5930493A (en) 1995-06-07 1999-07-27 International Business Machines Corporation Multimedia server system and method for communicating multimedia information
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
US6119154A (en) 1995-07-14 2000-09-12 Oracle Corporation Method and apparatus for non-sequential access to an in-progress video feed
US5659539A (en) 1995-07-14 1997-08-19 Oracle Corporation Method and apparatus for frame accurate access of digital audio-visual information
US5774593A (en) 1995-07-24 1998-06-30 University Of Washington Automatic scene decomposition and optimization of MPEG compressed video
DE69629986T2 (de) 1995-07-27 2004-07-15 Victor Company of Japan, Ltd., Yokohama Verfahren und Gerät zum Kodieren digitaler akustischer Signale
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 シャープ株式会社 画像処理装置
US6496537B1 (en) 1996-12-18 2002-12-17 Thomson Licensing S.A. Video decoder with interleaved data processing
US6594315B1 (en) 1996-12-18 2003-07-15 Thomson Licensing S.A. Formatting of recompressed data in an MPEG decoder
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 구자홍 저속 전송에서의 동영상을 위한 디블록킹 필터링 방법
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
EP1161839A1 (de) 1999-12-28 2001-12-12 Koninklijke Philips Electronics N.V. Videokodierung mit skalierbarem signal-rauschabstand
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
WO2002063883A1 (en) 2001-02-06 2002-08-15 Koninklijke Philips Electronics N.V. Preprocessing method applied to textures of arbitrarily shaped objects
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
US7305036B2 (en) 2002-05-14 2007-12-04 Broadcom Corporation System and method for entropy code preprocessing
US7469012B2 (en) 2002-05-14 2008-12-23 Broadcom Corporation System and method for transcoding entropy-coded bitstreams
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
WO2004030369A1 (en) 2002-09-27 2004-04-08 Videosoft, Inc. Real-time video coding/decoding
US7012963B2 (en) * 2002-11-14 2006-03-14 Opentv, Inc. Positioning of images in a data stream
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
JP2006512029A (ja) 2002-12-20 2006-04-06 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ セグメントベース動き推定
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
EP1839133A4 (de) 2004-12-08 2010-03-24 Encomia L P Verfahren und system zur einbettung von benutzerhilfe in dokumente unter verwendung von markup-sprachen
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
KR100727972B1 (ko) 2005-09-06 2007-06-14 삼성전자주식회사 영상의 인트라 예측 부호화, 복호화 방법 및 장치
CN101867820B (zh) 2005-09-20 2013-05-29 三菱电机株式会社 图像解码装置以及图像解码方法
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
JP4879269B2 (ja) 2006-08-15 2012-02-22 富士通株式会社 復号化方法及び装置
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
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
JP5230735B2 (ja) 2008-06-10 2013-07-10 パナソニック株式会社 復号化装置、復号化方法及び受信装置
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
CN101836454B (zh) 2008-12-03 2012-08-22 联发科技股份有限公司 对有序熵切片执行平行cabac码处理的方法及装置
US20120014451A1 (en) 2009-01-15 2012-01-19 Wei Siong Lee 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 협력 무선 네트워크에서 분산형 μιμο 채널 프리코딩 및 디코딩 방법
WO2012035728A1 (ja) 2010-09-16 2012-03-22 パナソニック株式会社 画像復号装置、画像符号化装置、それらの方法、プログラム、集積回路およびトランスコード装置
US20120075346A1 (en) 2010-09-29 2012-03-29 Microsoft Corporation Low Complexity Method For Motion Compensation Of DWT Based Systems
US8837601B2 (en) 2010-12-10 2014-09-16 Netflix, Inc. Parallel video encoding based on complexity analysis
US8331703B2 (en) 2011-02-18 2012-12-11 Arm Limited Parallel image encoding
US8767817B1 (en) 2011-04-07 2014-07-01 Google Inc. Apparatus and method for coding using parameterized equation
WO2013003819A1 (en) * 2011-06-30 2013-01-03 Huawei Technologies Co., Ltd. Encoding of prediction residuals for lossless video coding
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
US20130272428A1 (en) * 2012-04-16 2013-10-17 Sharp Laboratories Of America, Inc. Video decoder for copy slices
US20150043645A1 (en) 2012-06-20 2015-02-12 Google Inc. Video stream partitioning to allow efficient concurrent hardware decoding
BR112015017192B1 (pt) 2013-01-18 2023-11-07 Canon Kabushiki Kaisha Método e dispositivo para encapsular dados de mídia programada particionados, meio de armazenamento e meio de gravação
US10904551B2 (en) * 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
AU2013228045A1 (en) * 2013-09-13 2015-04-02 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
CN104683805B (zh) * 2013-11-30 2019-09-17 同济大学 图像编码、解码方法及装置
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US20150264383A1 (en) * 2014-03-14 2015-09-17 Mitsubishi Electric Research Laboratories, Inc. Block Copy Modes for Image and Video Coding
US11330297B2 (en) * 2014-08-19 2022-05-10 Qualcomm Incorporated Methods incorporating extensions to copy-above mode for palette mode coding
US10638140B2 (en) * 2015-05-29 2020-04-28 Qualcomm Incorporated Slice level intra block copy and other video coding improvements

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BUDAGAVI, Madhukar ; KWON, Do-Kyoung: AHG8: Video coding using intra motion compensation. JCTVC-M0350. 09.04.2013. URL: http://phenix.int-evry.fr/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC-M0350-v1.zip [abgerufen am 13.08.2020]

Also Published As

Publication number Publication date
DE202016008199U1 (de) 2017-04-27
US10542258B2 (en) 2020-01-21
GB2546888B (en) 2019-09-25
CN107027033A (zh) 2017-08-08
WO2017131903A1 (en) 2017-08-03
CN107027033B (zh) 2020-10-16
GB201621799D0 (en) 2017-02-01
US20170214920A1 (en) 2017-07-27
DE102016125125A1 (de) 2017-07-27
GB2546888A (en) 2017-08-02

Similar Documents

Publication Publication Date Title
DE102016125125B4 (de) Tile-Copying für Videokompression
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE102016125379B4 (de) Bewegungsvektoraufteilung des letzten Frames
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE112015003805T5 (de) Bewegungskompensierte partitionierung
DE202016008192U1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
US10412415B2 (en) Method and apparatus for decoding/encoding video signal using transform derived from graph template
DE102016125591A1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE102016125535A1 (de) Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße
DE102016125604A1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE102016125456A1 (de) Kodierinterpolationsfilter
US11153588B2 (en) Dual deblocking filter thresholds
DE112015004399T5 (de) Frequenzbereichsentstörung
DE112015005159B4 (de) Kodierung im alternierenden blockbeschränkten entscheidungsmodus
DE112020002032B4 (de) Bilddecodierverfahren und Bilddecodiervorrichtung
DE102016015996B3 (de) Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression
DE102016125539A1 (de) Adaptive überlappungsblockprädiktion bei videokodierung mit variabler blockgrösse
US10893274B2 (en) Method for processing video signal on basis of arbitrary partition transform
DE102016125593B4 (de) Dynamischer Kodiermodus für Referenz-Bewegungsvektoren

Legal Events

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

Ref document number: 202016008199

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