DE112015005159T5 - Kodierung im alternierenden blockbeschränkten entscheidungsmodus - Google Patents

Kodierung im alternierenden blockbeschränkten entscheidungsmodus Download PDF

Info

Publication number
DE112015005159T5
DE112015005159T5 DE112015005159.7T DE112015005159T DE112015005159T5 DE 112015005159 T5 DE112015005159 T5 DE 112015005159T5 DE 112015005159 T DE112015005159 T DE 112015005159T DE 112015005159 T5 DE112015005159 T5 DE 112015005159T5
Authority
DE
Germany
Prior art keywords
block
encoding
immediately adjacent
coded
current
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.)
Granted
Application number
DE112015005159.7T
Other languages
English (en)
Other versions
DE112015005159B4 (de
Inventor
Jingning Han
Yaowu Xu
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 DE112015005159T5 publication Critical patent/DE112015005159T5/de
Application granted granted Critical
Publication of DE112015005159B4 publication Critical patent/DE112015005159B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

Beschrieben ist ein Verfahren und eine Vorrichtung zur Videokodierung unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus. Eine Videokodierung unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus kann das Identifizieren eines aktuellen Blocks eines aktuellen Frames eines Eingabevideostreams, das Erzeugen eines kodierten Blocks durch Kodieren des aktuellen Blocks unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus, wobei die Kodierung im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass ein zuvor kodierter, unmittelbarer angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, und das Einschließen des kodierten Blocks in einem Ausgabe-Bitstream umfassen.

Description

  • HINTERGRUND
  • Die Digitalvideotechnik kann beispielsweise für Remote-Geschäftsbesprechungen per Videokonferenz, hochauflösende Videounterhaltung, Videowerbung oder Teilen der von Benutzern erzeugten Videos verwendet werden. Aufgrund der großen Datenmenge von Videodaten ist für Übertragung und Speicherung eine Hochleistungskomprimierung erforderlich.
  • ZUSAMMENFASSUNG
  • Die vorliegende Offenbarung betrifft das Kodieren und Dekodieren von Videostream-Daten zur Übertragung und Speicherung und insbesondere Aspekte von Systemen, Verfahren und Vorrichtungen zum Kodieren und Dekodieren unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus.
  • Ein Aspekt ist ein Verfahren zur Videokodierung unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus. Videokodierung unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus kann das Identifizieren eines aktuellen Blocks eines aktuellen Frames eines Eingabevideostreams, das Erzeugen eines kodierten Blocks durch Kodieren des aktuellen Blocks mit einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus, wobei die Kodierung im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung, dass ein zuvor kodierter, unmittelbarer angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, umfasst, das Einschließen des kodierten Blocks in einem Ausgabe-Bitstream und das Übertragen oder Speichern des Ausgabe-Bitstreams umfassen.
  • In einigen Ausführungen kann eine Videokodierung unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus das Identifizieren eines aktuellen Blocks eines aktuellen Frames eines Eingabevideostreams und das Erzeugen eines kodierten Blocks durch Kodieren des aktuellen Blocks mit einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus, wobei die Kodierung im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass ein erster zuvor kodierter, unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block und ein zweiter zuvor kodierter, unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, umfassen. In einigen Ausführungen kann eine Videokodierung unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus das Einschließen des kodierten Blocks in einem Ausgabe-Bitstream und das Übertragen oder Speichern des Ausgabe-Bitstreams umfassen.
  • In einigen Ausführungen umfasst eine Videokodierung unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus das Identifizieren eines aktuellen Blocks eines aktuellen Frames eines Eingabe-Videostreams und das Erzeugen eines kodierten Blocks durch Kodieren des aktuellen Blocks unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus durch einen Prozessor als Reaktion auf einem nicht-flüchtigen computerlesbaren Medium gespeicherte Anweisungen. Das Verwenden einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus kann ebenfalls das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung, dass ein erster zuvor kodierter, unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, umfassen, wobei der erste zuvor kodierte, unmittelbar angrenzende Block ein zuvor kodierter Block räumlich unmittelbar links vom aktuellen Block im aktuellen Frame ist, ein zweiter zuvor kodierter, unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, wobei der zweite zuvor kodierte, unmittelbar angrenzende Block ein zuvor kodierter Block räumlich unmittelbar oberhalb vom aktuellen Block im aktuellen Frame ist, und ein dritter zuvor kodierter, unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, wobei der dritte zuvor kodierte, unmittelbar angrenzende Block räumlich mit dem aktuellen Block übereinstimmt und der dritte zuvor kodierte, unmittelbar angrenzende Block von einem zeitlich unmittelbar angrenzenden, zuvor kodierten Frame stammt. Des Weiteren können ein Kodieren des aktuellen Blocks unter Verwendung eines auf Basis des ersten zuvor kodierten, unmittelbar angrenzenden Blocks und des zweiten zuvor kodierten, unmittelbar angrenzenden Blocks identifizierten Vorhersagefilters und ein Kodieren des aktuellen Blocks unter Verwendung eines auf Basis des ersten zuvor kodierten, unmittelbar angrenzenden Blocks, des zweiten zuvor kodierten, unmittelbar angrenzenden Blocks und des dritten zuvor kodierten, unmittelbar angrenzenden Blocks anhand eines Kodierblockgrößenbereichs identifizierten Blocks enthalten sein. In einigen Ausführungen ist der kodierte Block in einem Ausgabe-Bitstream enthalten und es kann ein Übertragen oder Speichern des Ausgabe-Bitstreams erfolgen.
  • Variationen dieser und anderer Aspekte sind nachfolgend ausführlich beschrieben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Beschreibung nimmt Bezug auf die beigefügten Zeichnungen, in denen sich gleiche Bezugsnumern auf gleiche Teile in den verschiedenen Ansichten beziehen, und wobei:
  • 1 ein Diagramm eines Computergeräts gemäß den Ausführungen der vorliegenden Offenbarung ist;
  • 2 ein Diagramm eines Computer- und Kommunikationssystems gemäß den Ausführungen der vorliegenden Offenbarung ist;
  • 3 zeigt ein Diagramm eines Videostreams zur Nutzung bei Kodierung und Dekodierung gemäß den Ausführungen der vorliegenden Offenbarung ist;
  • 4 ein Diagramm eines Encoders gemäß den Ausführungen der vorliegenden Offenbarung ist;
  • 5 ein Diagramm eines Decoders gemäß den Ausführungen der vorliegenden Offenbarung ist;
  • 6 ein Blockdiagramm einer Darstellung eines Teils eines Frames gemäß den Ausführungen der vorliegenden Offenbarung ist;
  • 7 ein Diagramm eines Beispiels einer Darstellung von Frames unter Verwendung einer Videokodierung im räumlich und zeitlich alternierenden blockbeschränkten Modus gemäß den Ausführungen der vorliegenden Offenbarung ist; und
  • 8 ein Diagramm eines Beispiels eines Verfahrens zur Videokodierung im räumlich und zeitlich alternierenden blockbeschränkten Modus gemäß den Ausführungen der vorliegenden Offenbarung ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Digitalvideostreams können Videos unter Verwendung einer Sequenz von Frames oder Bildern darstellen. Jeder Frame kann eine Zahl von Blöcken umfassen, die Informationen zur Angabe von Pixelattributen wie Farbwerte oder Helligkeit umfassen können. Das Übertragen und Speichern von Videos kann erhebliche Computer- oder Kommunikationsressourcen in Anspruch nehmen. Zum Verringern der Datenmenge in Videostreams können Komprimierungs- und andere Kodierungstechniken verwendet werden. Auf diese Weise können hochauflösende Videos über Kommunikationskanäle mit begrenzter Bandbreite übertragen werden.
  • Das Kodieren eines Videostreams oder eines Teiles von diesem wie eines Frames oder Blocks kann das Verwenden von zeitlichen und räumlichen Ähnlichkeiten im Videostream zum Steigern der Kodierleistung umfassen. Beispielsweise kann das Videokodieren das Vorhersagen von Pixelwerten auf der Basis von zeitlichen und räumlichen Ähnlichkeiten zwischen Pixeln umfassen. Ein blockbasiertes Kodieren umfasst das Unterteilen eines Frames in ein Gitter oder eine Matrix von Blöcken und das Kodieren von jedem Block als eine Einheit. Das Kodieren umfasst das Bewerten von vielen potentiellen Kodierungsmodi wie Intra-Kodierungs- und Inter-Kodierungsmodi zum Identifizieren des optimalen Kodierungsmodus, der gegebenenfalls der Kodierungsmodus sein kann, der eine Fehlermetrik, etwa eine Rate-Distortion-Metrik, minimiert. Das Bewerten von mehreren potentiellen Kodierungsmodi beansprucht erhebliche Ressourcen, erhöht die Komplexität und lässt Inter-Block-Kodierungsmodus-Korrelationen gegebenenfalls unberücksichtigt.
  • Eine Kodierung im alternierenden blockbeschränkten Entscheidungsmodus verwendet eine Inter-Block-Kodierungsmodus-Korrelation zum Verringern der Komplexität und Erhöhen der Kodierleistung. Beispielsweise umfasst eine Kodierung im alternierenden blockbeschränkten Entscheidungsmodus das Alternieren auf einer Blockbasis zwischen einer unbeschränkten Kodierungsmodus-Suche und einer beschränkten kontextadaptiven Kodierungsmodus-Suche. Ein aktueller Block von einem aktuellen Frame basiert auf einem oder mehreren räumlich und zeitlich angrenzenden Blöcken. Das Identifizieren eines Vorhersagefilters zum Erzeugen eines bewegungskompensierten Vorhersageblocks zum Kodieren des aktuellen Blocks kann ebenso erfolgen wie das Identifizieren eines Kodierungsblockgrößenbereichs zum Kodieren des aktuellen Blocks.
  • 1 ist ein Diagramm eines Computergeräts 100 gemäß den Ausführungen der vorliegenden Offenbarung. Ein Computergerät 100 kann eine Kommunikationsschnittstelle 110, eine Kommunikationseinheit 120, eine Benutzerschnittstelle 130, einen Prozessor 140, einen Speicher 150, Anweisungen 160, eine Stromversorgung 170 oder eine beliebige Kombination hiervon umfassen. Wie hierin verwendet umfasst der Begriff „Computergerät” eine beliebige Einheit oder Kombination von Einheiten, die ein beliebiges Verfahren oder einen Teil bzw. Teile von diesem wie vorliegend offenbart ausführen kann.
  • Computergerät 100 kann ein ortsfestes Computergerät wie ein Personalcomputer (PC), ein Server, eine Workstation, ein Minicomputer oder ein Mainframe-Computer oder ein mobiles Computergerät wie ein Mobiltelefon, ein Personal Digital Assistant (PDA), ein Laptop oder ein Tablet-PC sein. Obgleich als eine einzelne Einheit dargestellt, können ein oder mehrere Elemente des Kommunikationsgeräts 100 in einer beliebigen Zahl von separaten physischen Einheiten integriert sein. Beispielsweise können Benutzerschnittstelle 130 und Prozessor 140 in einer ersten physischen Einheit integriert sein und der Speicher 150 kann in einer zweiten physischen Einheit integriert sein.
  • Die Kommunikationsschnittstelle 110 kann eine Drahtlosantenne wie dargestellt, ein verdrahteter Kommunikationsanschluss wie ein Ethernet-Anschluss, ein Infrarotanschluss, ein serieller Anschluss oder eine beliebige andere verdrahtete oder drahtlose Einheit, die zum Bilden einer Schnittstelle mit einem verdrahteten oder drahtlosen elektronischen Kommunikationsmedium 180 fähig ist, sein.
  • Kommunikationseinheit 120 kann zum Übertragen oder Empfangen von Signalen über ein verdrahtetes oder drahtloses Medium 180 konfiguriert sein. Beispielsweise ist die Kommunikationseinheit 120 wie dargestellt operativ mit einer zum Kommunizieren über Drahtlossignale konfigurierten Antenne verbunden. Obgleich dies nicht explizit in 1 dargestellt ist, kann die Kommunikationseinheit 120 zum Übertragen, Empfangen oder beidem über ein beliebiges verdrahtetes oder drahtloses Kommunikationsmedium wie Funkfrequenz, Ultraviolettstrahlung, sichtbares Licht, Glasfaseroptik, Drahtleitung oder eine Kombination hiervon konfiguriert sein. Obgleich 1 eine einzelne Kommunikationseinheit 120 und eine einzelne Kommunikationsschnittstelle 110 zeigt, kann eine beliebige Zahl von Kommunikationseinheiten und eine beliebige Zahl von Kommunikationsschnittstellen verwendet werden.
  • Die Benutzerschnittstelle 130 kann eine beliebige Einheit umfassen, die eine Schnittstelle zu einem Benutzer bilden kann, wie eine virtuelle oder physische Tastatur, ein Touchpad, eine Anzeige, einen Touchscreen, einen Lautsprecher, ein Mikrofon, eine Videokamera, einen Sensor oder eine beliebige Kombination hiervon. Die Benutzerschnittstelle 130 kann operativ wie dargestellt mit dem Prozessor oder mit einem beliebigen anderen Element des Kommunikationsgeräts 100, wie der Stromversorgung 170, gekoppelt sein. Obgleich sie als eine einzelne Einheit dargestellt ist, kann die Benutzerschnittstelle 130 eine oder mehrere physische Einheiten umfassen. Beispielsweise kann die Benutzerschnittstelle 130 eine Audioschnittstelle zum Durchführen einer Audiokommunikation mit einem Benutzer und einen Touchscreen zum Durchführen einer optischen und berührungsbasierten Kommunikation mit dem Benutzer umfassen. Obgleich sie als separate Einheiten dargestellt sind, können Kommunikationsschnittstelle 110, Kommunikationseinheit 120 und Benutzerschnittstelle 130 oder Teile hiervon als eine kombinierte Einheit konfiguriert sein. Beispielsweise können Kommunikationsschnittstelle 110. Kommunikationseinheit 120 und Benutzerschnittstelle 130 als ein Kommunikationsanschluss, der eine Schnittstelle mit einem externen Touchscreen-Gerät bilden kann, ausgeführt sein.
  • Prozessor 140 kann beliebige Geräte oder Systeme beinhalten, die ein Signal oder andere Informationen handhaben oder verarbeiten können, die bereits bestehen oder nachfolgend erzeugt werden, umfassend optische Prozessoren, Quantenprozessoren, Molekularprozessoren oder eine Kombination hiervon. Beispielsweise kann der Prozessor 140 einen Universalprozessor, einen Spezialprozessor, einen herkömmlichen Prozessor, einen Digitalsignalprozessor (DSP), eine Vielzahl von Mikroprozessoren, einen oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Core, einen Controller, einen Mikrocontroller, einen anwendungsspezifischen integrierten Schaltkreis (Application Specific Integrated Circuit, ASIC), einen Field Programmable Gate Array (FPGA), eine programmierbare logische Schaltung, einen programmierbaren logischen Controller, Mikrocode, Firmware, eine beliebige Art von integriertem Schaltkreis, einen Zustandsautomaten oder eine Kombination hiervon umfassen. Wie hierin verwendet umfasst der Begriff „Prozessor” einen einzelnen Prozessor oder mehrere Prozessoren. Der Prozessor 140 kann operativ mit einer Kommunikationsschnittstelle 110, einer Kommunikationseinheit 120, einer Benutzerschnittstelle 130, einem Speicher 150, Anweisungen 160, einer Stromversorgung 170 oder einer beliebigen Kombination hiervon gekoppelt sein.
  • Speicher 150 kann ein beliebiges nicht-flüchtiges für einen Computer verwendbares oder computerlesbares Medium wie ein beliebiges greifbares Gerät umfassen, die beispielsweise Anweisungen 160 oder beliebige damit verknüpfte Informationen zur Verwendung vom oder in Verbindung mit dem Prozessor 140 enthalten, speichern, kommunizieren oder befördern kann. Das nicht-flüchtige für einen Computer verwendbare oder computerlesbare Medium kann beispielsweise ein Solid-State-Drive, eine Speicherkarte, Wechselmedien, ein Festspeicher (Read Only Memory, ROM), ein Arbeitsspeicher (Random Access Memory, RAM), eine beliebige Art von Speicherplatte umfassend eine Festplatte, eine Diskette, eine optische Speicherplatte, eine magnetische oder optische Karte, oder eine beliebige Art von nicht-flüchtigen Medien, die zum Speichern von elektronischen Informationen sind, oder eine Kombination hiervon sein. Speicher 150 kann beispielsweise über einen Speicherbus (nicht explizit dargestellt) mit dem Prozessor 140 verbunden sein.
  • Die Anweisungen 160 können Anweisungen zum Durchführen jedweden Verfahrens oder eines beliebigen Teils oder von beliebigen Teilen hiervon wie hierin offenbart umfassen. Die Anweisungen 160 können als Hardware, als Software oder in einer beliebigen Kombination hiervon ausgeführt sein. Beispielsweise können die Anweisungen 160 als im Speicher 150 gespeicherte Informationen, wie ein Computerprogramm, das vom Prozessor 140 zum Durchführen eines der entsprechenden Verfahren, Algorithmen, Aspekte oder Kombinationen hiervon ausgeführt werden kann, wie hierin beschrieben ausgeführt sein. Die Anweisungen 160 oder ein Teil hiervon können als ein Spezialprozessor oder -schaltkreis ausgeführt sein, die Spezialhardware zum Ausführen eines der Verfahren, Algorithmen, Aspekte oder Kombinationen hiervon wie hierin beschrieben umfassen können. Teile der Anweisungen 160 können über mehrere Prozessoren auf dem gleichen Gerät oder verschiedenen Maschinen oder über ein Netzwerk wie ein lokales Netzwerk, ein Fernnetz, das Internet oder eine Kombination hiervon verteilt sein.
  • Die Stromversorgung 170 kann ein beliebiges geeignetes Gerät zum Versorgen der Kommunikationsvorrichtung 110 mit Strom sein. Beispielsweise kann die Stromversorgung 170 eine verdrahtete Stromversorgung, eine oder mehrere Trockenbatterien wie Nickel-Cadmium-(NiCd-), Nickel-Zink-(NiZn-), Nickel-Metallhydrid-(NiMH-), Lithium-Ionen-(Li-Ionen-)Batterien, Solarzellen, Brennstoffzellen oder ein beliebiges anderes Gerät, welches das Kommunikationsgerät 110 mit Strom versorgen kann, umfassen. Kommunikationsschnittstelle 110, Kommunikationseinheit 120, Benutzerschnittstelle 130, Prozessor 140, Anweisungen 160, Speicher 150 oder eine beliebige Kombination hiervon können operativ mit der Stromversorgung 170 gekoppelt sein.
  • Obgleich als separate Elemente dargestellt, können Kommunikationsschnittstelle 110, Kommunikationseinheit 120, Benutzerschnittstelle 130, Prozessor 140, Anweisungen 160, Stromversorgung 170, Speicher 150 oder eine beliebige Kombination hiervon in einer oder mehreren elektronischen Einheiten, Schaltkreisen oder Chips integriert sein.
  • 2 zeigt ein Diagramm eines Computer- und Kommunikationssystems 200 gemäß den Ausführungen der vorliegenden Offenbarung. Das Computer- und Kommunikationssystem 200 kann ein oder mehrere Computer- und Kommunikationsgeräte 100A/100B/100C, einen oder mehrere Zugriffspunkte 210A/210B, ein oder mehrere Netzwerke 220 oder eine Kombination hiervon umfassen. Beispielsweise kann das Computer- und Kommunikationssystem 200 ein Mehrfachzugriffssystem sein, das Kommunikation wie Sprache, Daten, Video, Nachrichten, Übertragung oder eine Kombination hiervon zu einer oder mehreren verdrahteten oder drahtlosen Kommunikationsgeräten, wie etwa den Computer- und Kommunikationsgeräten 100A/100B/100C, bereitstellt. Obgleich 2 zur Vereinfachung drei Computer- und Kommunikationsgeräte 100A/100B/100C, zwei Zugriffspunkte 210A/210B und ein Netzwerk 220 darstellt, kann eine beliebige Zahl von Computer- und Kommunikationsgeräten, Zugriffspunkten und Netzwerken verwendet werden.
  • Das Computer- und Kommunikationsgerät 100A/100B/100C kann beispielsweise ein Computergerät, wie etwa das in 1 dargestellte Computergerät 100 sein. Beispielsweise sind wie dargestellt die Computer- und Kommunikationsgeräte 100A/100B Benutzergeräte, wie etwa eine mobile Computervorrichtung, ein Laptop, ein Thin Client oder ein Smartphone, und ist das Computer- und Kommunikationgerät 100C ein Server, wie etwa ein Mainframe oder ein Cluster. Obgleich die Computer- und Kommunikationsgeräte 100A/100B als Benutzergeräte beschrieben sind und Computer- und Kommunikationsgerät 100C als ein Server beschrieben ist, kann ein beliebiges Computer- und Kommunikationsgerät einige oder alle Funktionen eines Servers, einige oder alle 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 zum Durchführen von verdrahteter oder drahtloser Kommunikation konfiguriert sein. Beispielsweise kann ein Computer- und Kommunikationsgerät 100A/100B/100C zum Übertragen oder Empfangen von Signalen verdrahteter oder drahtloser Kommunikation konfiguriert sein und kann eine Benutzereinrichtung, eine Mobilstation, eine ortsfeste oder mobile Teilnehmereinheit, ein Mobiltelefon, einen Personalcomputer, einen Tablet-Computer, einen Server. Unterhaltungselektronik oder eine beliebige ähnliche Vorrichtung umfassen. Obgleich jedes Computer- und Kommunikationsgerät 100A/100B/100C als eine einzelne Einheit dargestellt ist, kann ein Computer- und Kommunikationsgerät eine beliebige Zahl von miteinander verbundenen Elementen umfassen.
  • Jeder Zugriffspunkt 210A/210B kann eine beliebige Art von zur Kommunikation mit einem Computer- und Kommunikationsgerät 100A/100B/100C, einem Netzwerk 220 oder beidem über verdrahtete oder drahtlose Kommunikationsverbindungen 180A/180B/180C konfiguriertem Gerät sein. Beispielsweise kann ein Zugriffspunkt 210A/210B eine Basisstation, eine Basissenderempfängerstation (Base Transceiver Station, BTS), einen Node-B, einen Enhanced Node-B (eNode-B), einen Home Node-B (HNode-B), einen drahtlosen Router, einen verdrahteten Router, ein Hub, ein Relais, einen Switch oder ein beliebiges ähnliches verdrahtetes oder drahtloses Gerät umfassen. Jeder Zugriffspunkt 210A/210B ist zwar als eine einzelne Einheit dargestellt; ein Zugriffspunkt kann aber eine beliebige Zahl von miteinander verbundenen Elementen umfassen.
  • Netzwerk 220 kann eine beliebige Art von Netzwerk sein, das zum Bereitstellen von Diensten wie Sprache, Daten, Anwendungen, Voice over Internet Protocol (VoIP) oder einem beliebigen anderen Kommunikationsprotokoll oder einer Kombination von Kommunikationsprotokollen über eine verdrahtete oder drahtlose Kommunikationsverbindung konfiguriert ist. Beispielsweise kann Netzwerk 220 ein lokales Netzwerk (Local Area Network, LAN), ein Fernnetz (Wide Area Network, WAN), ein virtuelles privates Netzwerk (VPN), ein Mobiltelefonnetz, das Internet oder ein beliebiges anderes Mittel zur elektronischen Kommunikation sein. Netzwerk 220 kann ein Kommunikationsprotokoll wie das Transmission-Control-Protokoll (TCP), das User-Datagram-Protokoll (UDP), das Internetprotokoll (IP), das Real-Time-Transport-Protokoll (RTP) das Hyper-Text-Transport-Protokoll (HTTP) oder eine Kombination hiervon umfassen.
  • Die Computer- und Kommunikationsgeräte 100A/100B/100C können miteinander über das Netzwerk 220 unter Verwendung einer oder mehrerer verdrahteten oder drahtlosen Kommunikationsverbindungen oder über eine Kombination von verdrahteten und drahtlosen Kommunikationsverbindungen kommunizieren. Beispielsweise kommunizieren die Computer- und Kommunikationsgeräte 100A/100B über drahtlose Kommunikationsverbindungen 180A/180B und das Computer- und Kommunikationsgerät 100C kommuniziert über eine verdrahtete Kommunikationsverbindung 180C. Beliebige der Computer- und Kommunikationsgeräte 100A/100B/100C können unter Verwendung beliebiger verdrahteter oder drahtloser Kommunikationsverbindungen kommunizieren. Beispielsweise kann ein erstes Computer- und Kommunikationsgerät 100A über einen ersten Zugriffspunkt 210A unter Verwendung einer ersten Art von Kommunikationsverbindung kommunizieren, kann ein zweites Computer- und Kommunikationsgerät 100B über einen zweiten Zugriffspunkt 210B unter Verwendung einer zweiten Art von Kommunikationsverbindung kommunizieren und kann ein drittes Computer- und Kommunikationsgerät 100C über einen dritten Zugriffspunkt (nicht dargestellt) unter Verwendung einer dritten Art von Kommunikationsverbindung kommunizieren. Ähnlich dazu können die Zugriffspunkte 210A/210B mit dem Netzwerk 220 über eine oder mehrere Arten von verdrahteten oder drahtlosen Kommunikationsverbindungen 230A/230B kommunizieren. Obgleich 2 die Computer- und Kommunikationsgeräte 100A/100B/100C in Kommunikation über ein Netzwerk 220 zeigt, können die Computer- und Kommunikationsgeräte 100A/100B/100C miteinander über eine beliebige Zahl von Kommunikationsverbindungen wie eine direkte verdrahtete oder drahtlose Kommunikationsverbindung kommunizieren.
  • Es sind ebenfalls weitere Ausführungen des Computer- und Kommunikationssystems 200 möglich. Beispielsweise kann das Netzwerk 220 ein Ad-hoc-Netzwerk sein und es kann auf einen oder mehrere Zugriffspunkte 210A/210B verzichtet werden. Das Computer- und Kommunikationssystem 200 kann Geräte. Einheiten oder Elemente umfassen, die nicht in 2 dargestellt sind. Beispielsweise kann das Computer- und Kommunikationssystem 200 viel mehr Kommunikationsgeräte, Netzwerke und Zugriffspunkte umfassen.
  • 3 zeigt ein Diagramm eines Videostreams 300 zur Kodierung und Dekodierung gemäß den Ausführungen der vorliegenden Offenbarung. Videostream 300, etwa ein von einer Videokamera erfasster Videostream oder ein von einem Computergerät erzeugter Videostream, kann eine Videosequenz 310 umfassen. Videosequenz 310 kann eine Sequenz von angrenzenden Frames 320 umfassen. Obgleich drei angrenzende Frames 320 dargestellt sind, kann die Videosequenz 310 eine beliebige Zahl von angrenzenden Frames 320 umfassen. Jeder Frame 330 von angrenzenden Frames 320 kann ein einzelnes Bild vom Videostream darstellen. Ein Frame 330 kann Blöcke 340 umfassen. Obgleich dies in 3 nicht dargestellt ist, kann ein Block 340 Pixel umfassen. Beispielsweise kann ein Block eine 16×16-Gruppe von Pixeln, eine 8×8-Gruppe von Pixeln, eine 8×16-Gruppe von Pixeln oder eine beliebige andere Gruppe von Pixeln umfassen. Wenn hierin nicht anders angegeben, kann der Begriff „Block” einen Superblock, einen Makroblock, ein Segment, einen Slice oder einen beliebigen anderen Teil eines Frames umfassen. Ein Frame, ein Block, ein Pixel oder eine Kombination hiervon kann Anzeigeinformationen wie Leuchtdichteninformationen, Farbwertinformationen oder beliebige andere Informationen, die zum Speichern, Ändern, Kommunizieren oder Anzeigen des Videostreams oder eines Teils hiervon verwendet werden können, umfassen.
  • 4 zeigt ein Blockdiagramm eines Encoders 400 gemäß den Ausführungen der vorliegenden Offenbarung. Encoder 400 kann in einem Gerät wie dem in 1 dargestellten Computergerät 100 oder den in 2 dargestellten Kommunikationsgeräten 100A/100B/100C als beispielsweise ein in einer Datenspeichereinheit, wie dem in 1 dargestellten Speicher 150, gespeichertes Computersoftwareprogramm ausgeführt sein. Das Computersoftwareprogramm kann Maschinenanweisungen umfassen, die von einem Prozessor, wie dem in 1 dargestellten Prozessor 160, ausgeführt werden können und kann das Gerät zum Kodieren von Videodaten wie hierin beschrieben veranlassen. Encoder 400 kann als Spezialhardware ausgeführt sein, die beispielsweise im Computergerät 100 enthalten ist.
  • Encoder 400 kann einen Eingabe-Videostream 402, wie den in 3 dargestellten Videostream 300, kodieren, um einen kodierten (komprimierten) Bitstream 404 zu erzeugen. Wie dargestellt umfasst der Encoder 400 einen Vorwärtspfad zum Erzeugen des komprimierten Bitstreams 404. Der Vorwärtspfad kann eine Intra/Inter-Vorhersageeinheit 410, eine Transformationseinheit 420, eine Quantisierungseinheit 430, eine Entropiekodierungseinheit 440 oder eine beliebige Kombination hiervon umfassen. In einigen Ausführungen umfasst der Encoder 400 einen Rekonstruktionspfad (dargestellt durch durchbrochene Verbindungslinien) zum Rekonstruieren eines Frames für das Kodieren von weiteren Blöcken. Der Rekonstruktionspfad von 4 umfasst eine Dequantisierungseinheit 450, eine Rücktransformationseinheit 460, eine Rekonstruktionseinheit 470, eine Schleifenfilterungseinheit 480 oder eine Kombination hiervon. Andere strukturelle Variationen des Encoders 400 können zum Kodieren des Videostreams 402 verwendet werden.
  • Für das Kodieren des Videostreams 402 kann jeder Frame im Videostream 402 in Einheiten von Blöcken verarbeitet werden. Somit kann ein aktueller Block von den Blöcken in einem Frame identifiziert werden und der aktuelle Block kann kodiert werden.
  • An der Intra/Inter-Vorhersageeinheit 410 kann der aktuelle Block unter Verwendung einer Intra-Frame-Vorhersage, die in einem einzelnen Frame erfolgen kann, oder einer Inter-Frame-Vorhersage, die von Frame zu Frame erfolgen kann, kodiert werden. Die Intra-Vorhersage kann das Erzeugen eines Vorhersageblocks von Stichproben im aktuellen Frame, die zuvor kodiert und rekonstruiert wurden, umfassen. Die Inter-Vorhersage kann das Erzeugen eines Vorhersageblocks von Stichproben in einem oder mehreren zuvor konstruierten Referenzframes umfassen. Das Erzeugen eines Vorhersageblocks für einen aktuellen Block in einem aktuellen Frame kann das Durchführen einer Bewegungsschätzung zum Erzeugen eines Bewegungsvektors zur Angabe eines entsprechenden Referenzblocks im Referenzframe umfassen.
  • Die Intra/Inter-Vorhersageeinheit 410 kann den Vorhersageblock vom aktuellen Block (Rohblock) abziehen, um einen Restblock zu erzeugen. Transformationseinheit 420 kann eine blockbasierte Transformation durchführen, die das Transformieren des Restblocks in Transformationskoeffizienten beispielsweise im Frequenzbereich umfasst. Beispiele für blockbasierte Transformationen umfassen die Karhunen-Loève-Transformation (KLT), die diskrete Kosinustransformation (Discrete Cosine Transform, DCT) und die Singulärwert-Dekompositionstransformation (Singular Value Decomposition Transform, SVD). In einem Beispiel umfasst die DCT das Transformieren eines Blocks in den Frequenzbereich, was zu Transformationskoeffizientenwerten mit dem Koeffizienten mit der niedrigsten Frequenz (das heißt DC-Koeffizienten) oben links in der Matrix und dem Koeffizienten mit der höchsten Frequenz unten rechts in der Matrix führt.
  • Die Quantisierungseinheit 430 kann die Transformationskoeffizienten in diskrete Quantenwerte umwandeln, die als quantisierte Transformationskoeffizienten oder Quantisierungsstufen bezeichnet werden. Die quantisierten Transformationskoeffizienten können von der Entropiekodierungseinheit 440 entropiekodiert werden, um entropiekodierte Koeffizienten zu erzeugen. Die Entropiekodierung verwendet eine Wahrscheinlichkeitsverteilungsmetrik. Die entropiekodierten Koeffizienten und die zum Dekodieren des Blocks verwendeten Informationen, welche die verwendete Art der Vorhersage. Bewegungsvektoren und Quantisiererwerte umfassen können, können zum komprimierten Bitstream 404 ausgegeben werden. Der komprimierte Bitstream 404 kann unter Verwendung verschiedener Techniken wie Lauflängencodierung (Run-Length-Encoding, RLE) und Null-Lauflängencodierung formatiert werden.
  • Der Rekonstruktionspfad kann zum Erhalten der Referenzframe-Synchronisierung zwischen Encoder 400 und einem entsprechenden Decoder, wie dem in 5 dargestellten Decoder 500, verwendet werden. Der Rekonstruktionspfad kann dem nachfolgend erläuterten Dekodierungsprozess ähneln und kann das Dequantisieren der quantisierten Transformationskoeffizienten an der Dequantisierungseinheit 450 und das Rücktransformieren der dequantisierten Transformationskoeffizienten an der Rücktransformationseinheit 460 zum Erzeugen eines derivativen Restblocks umfassen. Die Rekonstruktionseinheit 470 kann den von der Intra/Inter-Vorhersageeinheit 410 erzeugten Vorhersageblock zum derivativen Restblock hinzufügen, um einen rekonstruierten Block zu erzeugen. Die Schleifenfilterungseinheit 480 kann auf den rekonstruierten Block angewendet werden, um Verzerrungen wie Blockartefakte zu verringern.
  • Andere Variationen des Encoders 400 können zum Kodieren des komprimierten Bitstreams 404 verwendet werden. Beispielsweise kann ein nicht auf Transformation basierter Encoder 400 den Restblock direkt ohne die Transformationseinheit 420 quantisieren. In einigen Ausführungen können Quantisierungseinheit 430 und Dequantisierungseinheit 450 zu einer einzigen Einheit kombiniert sein.
  • 5 ist ein Blockdiagramm eines Decoders 500 gemäß den Ausführungen der vorliegenden Offenbarung. Decoder 500 kann in einem Gerät, wie dem in 1 dargestellten Computergerät 100 oder den in 2 dargestellten Kommunikationsgeräten 100A/100B/100C, als beispielsweise ein in einer Datenspeichereinheit, wie dem in 1 dargestellten Speicher 150, gespeichertes Computersoftwareprogramm ausgeführt sein. Das Computersoftwareprogramm kann Maschinenanweisungen umfassen, die von einem Prozessor, wie dem in 1 dargestellten Prozessor 160, ausgeführt werden können und kann das Gerät zum Dekodieren von Videodaten wie hierin beschrieben veranlassen. Decoder 500 kann als Spezialhardware ausgeführt sein, die beispielsweise im Computergerät 100 enthalten ist.
  • Decoder 500 kann einen komprimierten Bitstream 502, wie den in 4 dargestellten komprimierten Bitstream 404, empfangen und kann den komprimierten Bitstream 502 dekodieren, um einen Ausgabe-Videostream 504 zu erzeugen. Decoder 500 wie dargestellt umfasst eine Entropiedekodierungseinheit 510, eine Dequantisierungseinheit 520, eine Rücktransformationseinheit 530, eine Intra/Inter-Vorhersageeinheit 540, eine Rekonstruktionseinheit 550, eine Schleifenfilterungseinheit 560, eine Entblockungsfilterungseinheit 570 oder eine beliebige Kombination hiervon. Andere strukturelle Variationen des Decoders 500 können mm Dekodieren des komprimierten Bitstreams 502 verwendet werden.
  • Die Entropiedekodierungseinheit 510 kann Datenelemente im komprimierten Bitstream 502 unter Verwendung von beispielsweise kontextadaptiver binärarithmetischer Dekodierung dekodieren, um eine Menge von quantisierten Transformationskoeffizienten zu erzeugen. Die Dequantisierungseinheit 520 kann die quantisierten Transformationskoeffizienten dequantisieren, und die Rücktransformationseinheit 530 kann die dequantisierten Transformationskoeffizienten rücktransformieren, um einen derivativen Restblock zu erzeugen, der dem von der in 4 dargestellten Rücktransformationseinheit 460 erzeugten derivativen Restblock entsprechen kann. Unter Verwendung dekodierter Headerinformationen vom komprimierten Bitstream 502 kann die Intra/Inter-Vorhersageeinheit 540 einen Vorhersageblock erzeugen, der dem im Encoder 400 erzeugten Vorhersageblock entspricht. An der Rekonstruktionseinheit 550 kann der Vorhersageblock zum derivativen Restblock hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Die Schleifenfilterungseinheit 560 kann auf den rekonstruierten Block angewendet werden, um Blockartefakte zu verringern. Die Entblockungsfilterungseinheit 570 kann auf den rekonstruierten Block angewendet werden, um Blockverzerrungen zu verringern, und das Ergebnis kann als Ausgabe-Videostream 504 ausgegeben werden.
  • Andere Variationen des Decoders 500 können zum Dekodieren des komprimierten Bitstreams 502 verwendet werden. Beispielsweise kann der Decoder 500 einen Ausgabe-Videostream 504 ohne Entblockungsfilterungseinheit 570 erzeugen.
  • s6 zeigt ein Blockdiagramm einer Darstellung eines Teils 600 eines Frames, wie des in 3 dargestellten Frames 330, gemäß den Ausführungen der vorliegenden Offenbarung. Wie dargestellt umfasst Teil 600 vier 64×64-Blöcke 610 in zwei Zeilen und zwei Spalten in einer Matrix oder auf einer kartesischen Ebene. In einigen Ausführungen kann ein 64×64-Block eine Maximalkodierungseinheit sein, N = 64. Jeder 64×64-Block kann vier 32×32-Blöcke 620 umfassen. Jeder 32×32-Block kann vier 16×16-Blöcke 630 umfassen. Jeder 16×16-Block kann vier 8×8-Blöcke 640 umfassen. Jeder 8×8-Block 640 kann vier 4×4-Blöcke 650 umfassen. Jeder 4×4-Block 650 kann 16 Pixel umfassen, die in vier Zeilen und vier Spalten in jedem entsprechenden Block auf der kartesischen Ebene oder in der Matrix dargestellt sind. Die Pixel können Informationen zur Darstellung eines im Frame erfassten Bildes wie Leuchtdichteninformationen, Farbinformationen und Positionsinformationen umfassen. In einigen Ausführungen kann ein Block, wie ein 16×16-Pixel-Block wie dargestellt, einen Leuchtdichtenblock 660, der Leuchtdichtenpixel 662 umfasst, und zwei Farbwertblöcke 670/680, wie einen U- oder Cb-Farbwertblock 670 und einen V- oder Cr-Farbwertblock 680, umfassen. Die Farbwertblöcke 670/680 umfassen Farbwertpixel 690. Beispielsweise umfasst der Leuchtdichtenblock 660 16×16-Leuchtdichtenpixel 662, und jeder Farbwertblock 670/680 umfasst 8×8-Farbwertpixel 690 wie dargestellt. Obgleich eine Anordnung von Blöcken dargestellt ist, kann eine beliebige Anordnung verwendet werden. Beispielsweise können, obwohl 6 N×N Blöcke darstellt, N×M Blöcke in einigen Ausführungen verwendet werden. Beispielsweise können Blöcke mit 32×64, 64×32. 16×32 oder 32×16 Pixeln oder mit einer beliebigen anderen Größe verwendet werden. Somit können N×2N Blöcke, 2N×N Blöcke oder eine Kombination hiervon verwendet werden.
  • Gemäß den vorliegenden Lehren umfasst eine Videokodierung eine geordnete Kodierung auf Blockebene. Eine geordnete Kodierung auf Blockebene umfasst das Kodieren von Blöcken eines Frames in einer Reihenfolge, wie einer Rasterscan-Reihenfolge, wobei Blöcke identifiziert und verarbeitet werden können, beginnend mit einem Block in der linken oberen Ecke des Frames, oder eines Teils des Frames, und fortfahrend entlang der Zeilen von links nach rechts und von der obersten Zeile bis zur untersten Zeile, wobei jeweils jeder Block für die Verarbeitung identifiziert wird. Beispielsweise kann der 64×64-Block in der obersten Zeile und linken Spalte eines Frames der erste kodierte Block sein, und der 64×64-Block unmittelbar rechts vom ersten Block kann der zweite kodierte Block sein. Die zweite Zeile von oben kann die zweite kodierte Zeile sein, so dass der 64×64-Block in der linken Spalte der zweiten Zeile nach dem 64×64-Block in der Spalte ganz rechts der ersten Zeile kodiert werden kann.
  • Eine Viererbaum-Kodierung, die das Kodieren von kleineren Blockeinheiten in einem Block in Rasterscan-Reihenfolge umfassen, kann enthalten sein. Beispielsweise kann der in der linken unteren Ecke des in 6 dargestellten Teils des Frames gezeigte 64×64-Block unter Verwendung einer Viererbaum-Kodierung kodiert werden, wobei der linke obere 32×32-Block kodiert, anschließend der rechte obere 32×32-Block kodiert, anschließend der linke untere 32×32-Block kodiert und anschließend der rechte untere 32×32-Block kodiert wird. Jeder 32×32-Block kann unter Verwendung einer Viererbaum-Kodierung kodiert werden, wobei der linke obere 16×16-Block kodiert, anschließend der rechte obere 16×16-Block kodiert, anschließend der linke untere 16×16-Block kodiert und anschließend der rechte untere 16×16-Block kodiert wird. Jeder 16×16-Block kann unter Verwendung einer Viererbaum-Kodierung kodiert werden, wobei der linke obere 8×8-Block kodiert, anschließend der rechte obere 8×8-Block kodiert, anschließend der linke untere 8×8-Block kodiert und anschließend der rechte untere 8×8-Block kodiert wird. Jeder 8×8-Block kann unter Verwendung einer Viererbaum-Kodierung kodiert werden, wobei der linke obere 4×4-Block kodiert, anschließend der rechte obere 4×4-Block kodiert, anschließend der linke untere 4×4-Block kodiert und anschließend der rechte untere 4×4-Block kodiert wird. In einigen Ausführungen können 8×8-Blöcke für einen 16×16-Block weggelassen werden, und der 16×16-Block kann unter Verwendung einer Viererbaum-Kodierung kodiert werden, wobei der linke obere 4×4-Block kodiert wird und anschließend die anderen 4×4-Blöcke im 16×16-Block in Rasterscan-Reihenfolge kodiert werden.
  • Die in einem ursprünglichen oder eingegebenen Frame enthaltenen Informationen können beispielsweise durch Weglassen von einigen Informationen im ursprünglichen Frame aus einem entsprechenden kodierten Frame komprimiert werden. Beispielsweise kann das Kodieren das Verringern der spektralen Redundanz, das Verringern der räumlichen Redundanz, das Verringern der zeitlichen Redundanz oder eine Kombination hiervon umfassen.
  • In einigen Ausführungsformen kann das Verringern der spektralen Redundanz das Verwenden eines Farbmodells auf der Basis einer Leuchtdichtenkomponente (Y) und zwei Farbwertkomponenten (U und V oder Cb und Cr), die als YUV- oder YCbCr-Farbmodell oder -Farbraum bezeichnet werden können, umfassen. Das Verwenden des YUV-Farbmodells kann das Verwenden einer relativ großen Menge von Informationen zum Darstellen der Leuchtdichtenkomponente eines Teils eines Frames und das Verwenden einer relativ kleinen Menge von Informationen zum Darstellen von jeder entsprechenden Farbwertkomponente für den Teil des Frames umfassen. Beispielsweise kann ein Teil eines Frames durch eine hochauflösende Leuchtdichtenkomponente, die einen 16×16-Block von Pixeln umfassen kann, und durch zwei niedrigauflösende Farbwertkomponenten, von denen jede den Teil des Frames als einen 8×8-Block von Pixeln darstellt, dargestellt werden. Ein Pixel gibt einen Wert an, beispielsweise einen Wert im Bereich von 0 bis 255, und kann beispielsweise unter Verwendung von acht Bits gespeichert oder übertragen werden. Obgleich die vorliegende Offenbarung in Bezug auf das YUV-Farbmodell beschrieben ist, kann ein beliebiges Farbmodell verwendet werden.
  • Das Verringern der räumlichen Redundanz kann ebenfalls das Transformieren eines Blocks in den Frequenzbereich beispielsweise unter Verwendung einer diskreten Kosinustransformation (Discrete Cosine Transform, DCT) umfassen. Beispielsweise kann eine Einheit eines Encoders wie die in 4 dargestellte Transformationseinheit 420 eine DCT unter Verwendung von Transformationskoeffizientenwerten auf der Basis der räumlichen Frequenz durchführen.
  • Das Verringern der zeitlichen Redundanz kann Ähnlichkeiten zwischen Frames zum Kodieren eines Frames unter Verwendung einer relativ kleinen Menge von Daten auf der Basis von einem oder mehreren Referenzframes, die zuvor kodierte, dekodierte und rekonstruierte Frames des Videostreams sind, verwenden. Beispielsweise kann ein Block oder Pixel eines aktuellen Frames einem räumlich entsprechenden Block oder Pixel eines Referenzframes ähneln. In einigen Ausführungen kann ein Block oder Pixel eines aktuellen Frames einem Block oder Pixel eines Referenzframes an einer anderen räumlichen Position ähneln. Anschließend werden Bewegungsinformationen zur Angabe der räumlichen Differenz oder der Verschiebung zwischen der Position des Blocks oder Pixels im aktuellen Frame und der entsprechenden Position des Blocks oder Pixels im Referenzframe erzeugt.
  • Das Verringern der zeitlichen Redundanz kann ebenfalls das Identifizieren eines Blocks oder Pixels in einem Referenzframe oder einem Teil des Referenzframes, der einem aktuellen Block oder Pixel eines aktuellen Frames entspricht, umfassen. Beispielsweise wird ein Referenzframe oder ein Teil eines Referenzframes, der im Speicher gespeichert sein kann, nach dem besten Block oder Pixel zur Verwendung für das Kodieren eines aktuellen Blocks oder Pixels des aktuellen Frames durchsucht. Die Suche kann den Block des Referenzframes identifizieren, bei dem die Differenz in Pixelwerten zwischen dem Referenzblock und dem aktuellen Block minimiert ist, und kann als Bewegungssuche bezeichnet werden. Der durchsuchte Teil des Referenzframes kann beschränkt sein. In einem Beispiel umfasst der durchsuchte Teil des Referenzframes, der als der Suchbereich bezeichnet werden kann, eine beschränkte Zahl von Zeilen des Referenzframes. In jedem Fall kann das Identifizieren des Referenzblocks das Berechnen einer Kostenfunktion, wie einer Summe von absoluten Differenzen (SAD), zwischen den Pixeln der Blöcke im Suchbereich und den Pixeln des aktuellen Blocks umfassen.
  • Die räumliche Differenz zwischen der Position des Referenzblocks im Referenzframe und des aktuellen Blocks im aktuellen Frame kann als ein Bewegungsvektor dargestellt werden. Die Differenz in Pixelwerten zwischen dem Referenzblock und dem aktuellen Block wird allgemein als Differentialdaten, Restdaten oder als ein Restblock bezeichnet. Das Erzeugen von Bewegungsvektoren wird ebenfalls als Bewegungsschätzung bezeichnet. Genauer gesagt kann ein Pixel eines aktuellen Blocks auf der Basis der Position unter Verwendung von kartesischen Koordinaten als fx,y angegeben werden. Auf ähnliche Weise kann ein Pixel des Suchbereichs des Referenzframes auf der Basis der Position unter Verwendung von kartesischen Koordinaten als rx,y angegeben werden. Der Bewegungsvektor (MV) für den aktuellen Block wird anschließend auf der Basis beispielsweise einer SAD zwischen den Pixeln des aktuellen Frames und den entsprechenden Pixeln des Referenzframes bestimmt.
  • Obgleich hierin der Übersichtlichkeit halber bewegungskompensierte Partitionierung in Bezug auf die Matrixdarstellung oder kartesische Darstellung eines Frames beschrieben ist, kann ein Frame in einer beliebigen Datenstruktur gespeichert, übertragen, verarbeitet, oder jedwede Kombination davon, werden, so dass Pixelwerte wirksam für einen Frame oder ein Bild vorhergesagt werden können. Beispielsweise kann ein Frame in einer zweidimensionalen Datenstruktur, wie einer Matrix wie dargestellt, oder in einer eindimensionalen Datenstruktur wie einem Vektor-Array gespeichert, übertragen, verarbeitet, oder jedwede Kombination davon, werden. Eine Darstellung des Frames, wie eine zweidimensionale Darstellung wie abgebildet, kann einer physischen Position in einem Rendering des Frames als ein Bild entsprechen. Beispielsweise kann eine Position in der linken oberen Ecke eines Blocks in der linken oberen Ecke des Frames einer physischen Position in der linken oberen Ecke eines Renderings des Frames als ein Bild entsprechen.
  • Der in einem Block erfasste Inhalt kann zwei oder mehr Bereiche umfassen, die verschiedene räumliche und zeitliche Merkmale aufweisen. Beispielsweise kann ein Frame mehrere Objekte erfassen, die sich in verschiedene Richtungen und mit verschiedenen Geschwindigkeiten bewegen, und ein Block kann einen Rand oder eine Objektbegrenzung umfassen. In einigen Ausführungen kann die Leistung der blockbasierten Kodierung durch Partitionierung von Blöcken, die mehrere Bereiche mit verschiedenen Merkmalen umfassen, in eine oder mehrere Partitionen, die rechteckige, inklusive quadratische, Partitionen sein können, entsprechend dem verschiedenen Inhalt, und Kodieren der Partitionen statt Kodieren jeder Mindestkodiereinheit verbessert werden.
  • In einigen Ausführungen kann das Videokodieren unter Verwendung einer Partitionierung das Auswählen eines Partitionierungsschemas aus mehreren potentiellen Partitionierungsschemata umfassen. Beispielsweise können die potentiellen Partitionierungsschemata für eine 64x-64-Kodiereinheit rechteckige Größenpartitionen in Größen von 4×4 Pixeln bis 64×64 Pixeln, wie 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 Pixeln, umfassen. In einigen Ausführungen kann das Videokodieren unter Verwendung einer Partitionierung ein vollständiges Durchsuchen einer Partition umfassen, welches das Auswählen eines Partitionierungsschemas durch Kodieren der Kodiereinheit unter Verwendung jedes verfügbaren potentiellen Partitionierungsschemas und Auswählens des besten Schemas, etwa des Schemas, das den kleinsten Rate-Distortion-Fehler erzeugt, umfassen kann. Beim Verwenden einer Partitionierung, wie Offline-Two-Pass-Kodieren, können Informationen in Bezug auf die Bewegung zwischen Frames in einem ersten Kodierungsdurchgang erzeugt werden und zum Auswählen eines Partitionierungsschemas in einem zweiten Kodierungsdurchgang verwendet werden. Techniken wie das Offline-Two-Pass-Kodieren und das Bewerten des Rate-Distortion-Fehlers oder andere ähnliche Metriken für jedes potentielle Partitionierungsschema können zeitraubend sein und mehr als die Hälfte der Kodierungszeit in Anspruch nehmen. In Ausführungen, die Videokonferenzen oder andere Inhalte umfassen, die einen statischen Hintergrund umfassen, kann ein Partitionierungsschema auf Basis der Differenz zwischen vorhergehenden und aktuellen Quellframes gewählt werden. In einigen Ausführungen kann das Kodieren eines Videoframes unter Verwendung bewegungskompensierter Partitionierung ein Partitionierungsschema effizienter identifizieren als das vollständige Durchsuchen einer Partition, das Offline-Two-Pass-Kodieren oder die Partitionierung auf der Basis von Differenzen zwischen Frames.
  • In einigen Ausführungen umfasst das Kodieren eines Videoframes unter Verwendung bewegungskompensierter Partitionierung das Identifizieren eines Partitionierungsschemas zum Kodieren eines aktuellen Blocks, wie Block 610. Das Identifizieren eines Partitionierungsschemas kann das Bestimmen umfassen, ob der Block als einzelne Partition der maximalen Kodiereinheitengröße, die 64×64 betragen kann wie dargestellt, kodiert wird oder der Block in mehrere Partitionen unterteilt wird, die den Unterblöcken entsprechen, wie die 32×32-Blöcke 620, die 16×16-Blöcke 630 oder die 8×8-Blöcke 640 wie dargestellt, und kann das Bestimmen umfassen, ob in eine oder mehrere kleinere Partitionen partitioniert wird. Beispielsweise kann 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 eine 8×8-Partition kodiert werden kann. Das Identifizieren des Partitionierungsschemas kann das Verwenden eines Partitionierungsentscheidungsbaums umfassen.
  • In einigen Ausführungen umfasst das Videokodieren für einen aktuellen Block das Identifizieren eines optimalen Kodierungsmodus aus mehreren potentiellen Kodierungsmodi, was Flexibilität im Umgang mit Videosignalen mit verschiedenen statistischen Eigenschaften ermöglicht und die Komprimierungsleistung verbessert. Beispielsweise bewertet ein Videokodierer jeden potentiellen Kodierungsmodus zum Identifizieren des optimalen Kodierungsmodus, der beispielsweise der Kodierungsmodus sein kann, der eine Fehlermetrik, wie Rate-Distortion-Kosten, für den aktuellen Block minimiert. Die Komplexität der Suche nach den potentiellen Kodierungsmodi kann durch Beschränken der Menge von verfügbaren potentiellen Kodierungsmodi auf der Basis von Ähnlichkeiten zwischen dem aktuellen Block und einem entsprechenden Vorhersageblock verringert werden. In einigen Ausführungen wird die Komplexität der Suche nach jedem potentiellen Kodierungsmodus durch Durchführen einer gezielten Verfeinerungsmodus-Suche verringert. Beispielsweise können Metriken für eine beschränkte Menge von potentiellen Blockgrößen wie 16×16, 8×8 und 4×4 erzeugt werden, und die mit jeder Blockgröße verknüpfte Fehlermetrik kann in absteigender Reihenfolge angeordnet sein. Zusätzliche potentielle Blockgrößen wie die Blockgrößen 4×8 und 8×4 können bewertet werden.
  • In einigen Ausführungen umfasst die Kodierung im alternierenden blockbeschränkten Entscheidungsmodus ein Alternieren zwischen einem unbeschränkten Entscheidungsmodus, wobei die Menge von potentiellen Kodierungsmodi vollständig durchsucht wird, und einem beschränkten Modus, wobei die Menge der zu durchsuchenden potentiellen Kodierungsmodi beschränkt ist. Das Alternieren kann räumlich, zeitlich oder sowohl räumlich als auch zeitlich erfolgen. Das räumliche Alternieren kann ein Alternieren zwischen beschränktem und unbeschränktem Modus zwischen unmittelbar aneinander angrenzenden, benachbarten Blöcken umfassen. Das räumliche Alternieren kann vertikal, horizontal oder auf beide Weisen erfolgen. Beispielsweise kann das Alternieren in einem Schachbrettmuster dargestellt sein. Das zeitliche Alternieren kann ein Alternieren zwischen beschränktem und unbeschränktem Modus zwischen unmittelbar aneinander angrenzenden Frames umfassen.
  • 7 ist ein Diagramm eines Beispiels einer Darstellung von Frames, die Videokodierung im räumlich und zeitlich alternierenden blockbeschränkten Modus, gemäß den Ausführungen der vorliegenden Offenbarung, verwenden. Wie erwähnt kann die Videokodierung im alternierenden blockbeschränkten Modus das Alternieren zwischen dem Kodieren von Blöcken in einem unbeschränkten Kodierungsmodus und dem Kodieren von Blöcken in einem beschränkten Kodierungsmodus umfassen. Beispielsweise sind Blöcke im unbeschränkten Kodierungsmodus schwarz und Blöcke im beschränkten Kodierungsmodus weiß dargestellt. Die Videokodierung im alternierenden blockbeschränkten Modus kann eine Videokodierung im räumlich alternierenden blockbeschränkten Modus, eine Videokodierung im zeitlich alternierenden blockbeschränkten Modus oder eine Kombination hiervon umfassen. In einigen Ausführungen kann die Videokodierung im alternierenden blockbeschränkten Modus die Kodierung eines aktuellen Videoframes umfassen. Beispielsweise zeigt 7 einen Teil eines aktuellen Frames 710. Obgleich in 7 ein 8×8-Teil eines aktuellen Frames 710 dargestellt ist, kann ein Frame eine beliebige Zahl von Blöcken umfassen und jeder Block kann eine beliebige Zahl von Pixeln umfassen.
  • Die Videokodierung im räumlich alternierenden blockbeschränkten Modus umfasst das Bestimmen eines Kodierungsmodus fair einen aktuellen Block auf der Basis eines Kodierungsmodus von einem oder mehreren räumlich angrenzenden zuvor kodierten Blöcken. Beispielsweise umfasst, wie in 7 dargestellt, der aktuelle Frame 710 einen aktuellen Block 712, einen ersten benachbarten Block 714 und einen zweiten benachbarten Block 716. Ein Kodierungsmodus für den aktuellen Block 712 kann auf der Basis eines Kodierungsmodus der räumlich unmittelbar angrenzenden Blöcke 714/716 identifiziert werden. Beispielsweise befindet sich wie dargestellt der erste benachbarte Block 714 unmittelbar oberhalb vom aktuellen Block 712, und der zweite benachbarte Block 716 befindet sich unmittelbar links vom aktuellen Block 712.
  • Die Videokodierung im zeitlich alternierenden blockbeschränkten Modus kann das Bestimmen eines Kodierungsmodus für einen aktuellen Block auf der Basis eines Kodierungsmodus von einem oder mehreren räumlich angrenzenden zuvor kodierten Blöcken und einem oder mehreren zeitlich angrenzenden, räumlich übereinstimmenden zuvor kodierten Blöcken umfassen. Beispielsweise umfasst, wie in 7 dargestellt, ein Referenzframe 720 einen Referenzblock 722. Der Referenzframe 720 kann räumlich angrenzend zum aktuellen Frame 710 sein, und ein Referenzblock 722 im Referenzframe 720 kann räumlich übereinstimmend mit dem aktuellen Block 712 sein.
  • 8 ist ein Diagramm eines Beispiels eines Verfahrens zur Videokodierung im räumlich und zeitlich alternierenden blockbeschränkten Modus gemäß den Ausführungen der vorliegenden Offenbarung. Ein Encoder, wie der in 4 dargestellte Encoder 400, kann einen Eingabe-Videostream, wie den in 4 dargestellten Eingabe-Videostream 402, empfangen, kann den Eingabe-Videostream, wie bei der in 4 dargestellten Kodierung, kodieren und kann einen kodierten Videostream, wie den in 4 dargestellten komprimierten Bitstream 404, ausgeben. In einigen Ausführungen umfasst das Kodieren des Videostreams eine Videokodierung im räumlich und zeitlich alternierenden blockbeschränkten Modus 800. Wie im Beispiel von 8 dargestellt, umfasst die Videokodierung im räumlich und zeitlich alternierenden blockbeschränkten Modus 800 das Identifizieren eines aktuellen Blocks bei 810, das Bestimmen von benachbarten Kodierungsmodi bei 820 und das beschränkte oder unbeschränkte Kodieren bei 830.
  • Ein aktueller Block wird bei 810 identifiziert. In einigen Ausführungen umfasst ein aktueller Frame des Eingabe- oder Quell-Videostreams mehrere N×N-Blöcke, etwa 16×16-Blöcke, und ein Block vom aktuellen Frame wird als der aktuelle Block identifiziert. Beispielsweise wird ein Frame wie der in 7 dargestellte Frame 710 als der aktuelle Frame identifiziert, und ein Block wie der in 7 dargestellte Block 712 wird als der aktuelle Block identifiziert. Jeder Block vom Quellframe kann Block für Block kodiert werden. In einigen Ausführungen umfasst die blockbasierte Kodierung das Kodieren eines Blocks unter Verwendung einer hierarchischen Kodierung, wie der Viererbaum-Kodierung. In einem Beispiel ist der aktuelle Block ein 64×64-Block und das Kodieren des aktuellen Blocks umfasst das Kodieren von einem oder mehreren Unterblöcken, wie einer oder mehrere der in 6 dargestellten Blöcke 610650.
  • Benachbarte Kodierungsmodi werden bei 820 identifiziert oder bestimmt. In einigen Ausführungen umfasst dies das Identifizieren des zum Kodieren der benachbarten Blöcke verwendeten Kodierungsmodus, das Identifizieren des für die benachbarten Blöcke verwendeten Kodierungsentscheidungsmodus oder beides. Ein Kodierer, wie der in 4 dargestellte Encoder 400, kann bestimmen, ob die zum aktuellen Block benachbarten Blöcke, die zuvor kodierte Blöcke sein können, im beschränkten Entscheidungsmodus oder im unbeschränkten Entscheidungsmodus kodierte Blöcke sind. Der Kodierer kann einen Bit oder ein Kennzeichen speichern, das angibt, ob der zuvor kodierte Block im beschränkten Entscheidungsmodus oder im unbeschränkten Entscheidungsmodus kodiert wurde, und das Identifizieren oder Bestimmen der benachbarten Kodierungsmodi kann das Auswerten des Kennzeichens umfassen.
  • Die Kodierung im beschränkten oder unbeschränkten Entscheidungsmodus wird bei 830 durchgeführt. In einigen Ausführungen umfasst das Durchführen einer Kodierung im beschränkten oder unbeschränkten Entscheidungsmodus das Bestimmen auf Basis des Kodierungsentscheidungsmodus für die benachbarten Blöcke, ob eine Kodierung im beschränkten Entscheidungsmodus oder eine Kodierung im unbeschränkten Entscheidungsmodus durchgeführt wird. Beispielsweise können der Block unmittelbar oberhalb vom aktuellen Block im aktuellen Frame, der Block unmittelbar links vom aktuellen Block im aktuellen Frame oder beide im unbeschränkten Entscheidungsmodus kodierte Blöcke sein, und der aktuelle Block kann unter Verwendung einer Kodierung im beschränkten Entscheidungsmodus kodiert werden. In einem weiteren Beispiel können der Block unmittelbar oberhalb vom aktuellen Block im aktuellen Frame, der Block unmittelbar links vom aktuellen Block im aktuellen Frame oder beide im beschränkten Entscheidungsmodus kodierte Blöcke sein, und der aktuelle Block kann unter Verwendung einer Kodierung im unbeschränkten Entscheidungsmodus kodiert werden.
  • Die Kodierung im unbeschränkten Entscheidungsmodus kann das Erzeugen eines bewegungskompensierten Referenzblocks durch Identifizieren eines Referenzblocks von einem Referenzframe und Filter des Referenzblocks unter Verwendung eines aus einer Menge von potentiellen Raumfiltern ausgewählten Raumfilters umfassen. Der ausgewählte Raumfilter kann unter Verwendung einer Vollsuche, etwa einer Suche im Rate-Distortion-Optimierungsmodus, identifiziert werden. Eine Vollsuche kann das Anwenden von jedem potentiellen Raumfilter aus der Menge von potentiellen Raumfiltern auf den Referenzblock zum Erzeugen einer Menge von potentiellen bewegungskompensierten Referenzblöcken, das Bestimmen eines Rests für jeden potentiellen bewegungskompensierten Referenzblock und das Auswählen des mit dem Rest verknüpften Raumfilters mit dem geringsten Vorhersagefehler umfassen. In einigen Ausführungen umfasst das Kodieren im unbeschränkten Entscheidungsmodus eine partielle Vollsuche. Beispielsweise kann eine Suche im Rate-Distortion-Optimierungsmodus beendet werden, sodass die Auswertung von einer oder mehreren potentiellen Sucharten auf der Basis von Metriken, die auf Ähnlichkeiten zwischen dem aktuellen Block und dem Vorhersageblock hinweisen, weggelassen wird.
  • Ein oder mehrere Referenzblöcke können im unbeschränkten Entscheidungsmodus nicht verfügbar sein, sodass die Kodierung das Verwenden von verfügbaren Referenzblöcken umfasst. Beispielsweise kann der aktuelle Block der linke obere Block des Frames sein, so dass ein Referenzblock oberhalb vom aktuellen Block im aktuellen Frame und ein Referenzblock links vom aktuellen Block im aktuellen Frame nicht verfügbar sind. In solch einem Fall kann eine Kodierung im unbeschränkten Entscheidungsmodus den Vorhersagemodus von einem beigeordneten Block aus dem vorhergehenden Frame verwenden. In einem weiteren Beispiel kann der aktuelle Block ein Block von der Spalte ganz links sein, so dass ein Referenzblock links vom aktuellen Block im aktuellen Frame nicht verfügbar ist. In diesem Fall kann eine Kodierung im unbeschränkten Entscheidungsmodus den Vorhersagemodus von einem Referenzblock oberhalb vom aktuellen Block im aktuellen Frame und den Vorhersagemodus von einem beigeordneten Block aus dem vorhergehenden Frame verwenden. In einem weiteren Beispiel kann der aktuelle Block ein Block von der obersten Zeile des aktuellen Frames sein, sodass ein Referenzblock oberhalb vom aktuellen Block im aktuellen Frame nicht verfügbar ist. In diesem Fall kann eine Kodierung im unbeschränkten Entscheidungsmodus den Vorhersagemodus von einem Referenzblock links vom aktuellen Block im aktuellen Frame und den Vorhersagemodus von einem beigeordneten Block aus dem vorhergehenden Frame verwenden.
  • Die Kodierung im beschränkten Entscheidungsmodus kann ebenfalls das Identifizieren eines Vohersagefilters, der ein Raumfilter sein kann, auf Basis der für das Kodieren der benachbarten Blöcke verwendeten Vorhersagefilter umfassen. Beispielsweise umfasst die Kodierung im beschränkten Entscheidungsmodus das Bestimmen, ob die für das Kodieren der benachbarten Blöcke verwendeten Vorhersagefilter übereinstimmen. Der ausgewählte Vorhersagefiltertyp kann mit den benachbarten Blöcken übereinstimmen. Wenn beispielsweise die Menge von potentiellen Raumfiltern N Filtertypen umfasst, kann der benachbarte Block oberhalb vom aktuellen Block unter Verwendung des Nten Filtertyps kodiert werden, kann der benachbarte Block links vom aktuellen Block unter Verwendung des Nten Filtertyps kodiert werden, kann die Filtersuche weggelassen werden und kann der aktuelle Block unter Verwendung des Nten Filtertyps kodiert werden. In anderen Ausführungen unterscheiden sich die benachbarten Filtertypen und der Filter wird unter Verwendung einer Vollsuche oder einer Suche in einer verringerten Kandidatenmenge ausgewählt. Wenn beispielsweise die Menge von potentiellen Raumfiltern N Filtertypen umfasst, kann der benachbarte Block oberhalb vom aktuellen Block unter Verwendung des ersten Filtertyps kodiert werden, kann der benachbarte Block links vom aktuellen Block unter Verwendung des zweiten Filtertyps kodiert werden, und eine Suche einer verringerten Kandidatenmenge umfasst das Suchen unter Verwendung des ersten Filtertyps und des zweiten Filtertyps. In einigen Situationen umfasst die Suche einer verringerten Kandidatenmenge das Suchen von einem oder mehreren ähnlichen Filtertypen. Beispielsweise umfasst die Menge von potentiellen Raumfiltern N Filtertypen, wird der benachbarte Block oberhalb vom aktuellen Block unter Verwendung des ersten Filtertyps kodiert, wird der benachbarte Block links vom aktuellen Block unter Verwendung des zweiten Filtertyps kodiert, umfasst die Kandidatenmenge einen dritten Filtertyp, der dem ersten Filtertyp und dem zweiten Filtertyp ähnelt, und umfasst eine Suche einer verringerten Kandidatenmenge das Suchen unter Verwendung des ersten Filtertyps, des zweiten Filtertyps und des dritten Filtertyps.
  • Die Kodierung im unbeschränkten Entscheidungsmodus kann eine Rate-Distortion-Optimierungssuche umfassen. Beispielsweise umfasst die Rate-Distortion-Optimierungssuche eine Blockgrößensuche zum Identifizieren einer Menge von Unterblöcken zum Kodieren als verschiedene Einheiten im aktuellen Block. In einigen Ausführungen umfasst eine Blockgrößensuche das Auswerten einer Menge von potentiellen Blockgrößen zum Identifizieren einer Menge von Unterblöcken im aktuellen Block, die jeweils als eine verschiedene Einheit kodiert werden können. Beispielsweise kann der aktuelle Block ein 64×64-Block, wie der in 6 dargestellte 64×64-Block 610, und eine Menge von potentiellen Blockgrößen, wie die quadratischen Blöcke 620650 oder rechteckige Blöcke, sein. Beispielsweise kann nach Blöcken mit den Maßen 4×4, 4×8, 8×4, 8×8, 8×16, 16×8, 16×16, 16×32, 32×16, 32×z32, 32×64, 64×32 und 64×64 gesucht werden. Eine gezielte Blockgrößensuche im Verfeinerungsmodus auf Basis der benachbarten Blockgrößen kann ebenfalls enthalten sein. Beispielsweise kann der Block oberhalb vom aktuellen eine 8×16-Partitionsgröße verwenden, kann der Block links vom aktuellen Block eine 16×16-Partitionsgröße verwenden, und kann die Kodierung im unbeschränkten Entscheidungsmodus das Suchen nach Einheiten mit ähnlicher Größe, wie die Partitionsgrößen 8×8, 16×8, 8×16 und 16×16, umfassen.
  • In einigen Ausführungen umfasst die Kodierung im beschränkten Entscheidungsmodus eine kontextbezogene Rate-Distortion-Optimierungssuche, die das Identifizieren einer minimalen Kodierungsblockgröße und einer maximalen Kodierungsblockgröße aus dem benachbarten Block räumlich oberhalb vom aktuellen Block im aktuellen Frame, dem benachbarten Block räumlich links vom aktuellen Block im aktuellen Frame und dem benachbarten, räumlich mit dem aktuellen Block in einem zeitlich angrenzenden zuvor kodierten Frame übereinstimmenden Block umfasst. Eine kontextbezogene Rate-Distortion-Optimierungssuche kann das Suchen einer verringerten Menge von potentiellen Blockgrößen umfassen. Beispielsweise kann das Suchen potentielle Blockgrößen, die kleiner als die minimale Kodierungsblockgröße von den benachbarten Blöcken sind, und potentielle Blockgrößen, die größer als die maximale Kodierungsblockgröße von den benachbarten Blöcken sind, weglassen.
  • Es sind andere Ausführungen der Diagramme der Videokodierung im alternierenden blockbeschränkten Modus wie in 7 und 8 dargestellt verfügbar. Zusätzliche Elemente der Videokodierung im alternierenden blockbeschränkten Modus können hinzugefügt werden, bestimmte Elemente können kombiniert werden und/oder bestimmte Elemente können entfernt werden.
  • Die Bezeichnungen „Beispiel” oder „beispielhaft” werden hierin verwendet, um „dient als Beispiel oder zur Veranschaulichung” auszudrücken. Jeglicher Aspekt oder Entwurf, der hierin als „Beispiel” oder „beispielhaft” beschrieben ist, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Entwürfen aufzufassen. Die Verwendung der Begriffe „Beispiel” oder „beispielhaft” soll vielmehr Konzepte auf eine konkrete Weise darstellen. Wie in der vorliegenden Anmeldung verwendet, soll der Begriff „oder” ein einschließendes „oder” und kein ausschließendes „oder” bezeichnen. Das heißt „X umfasst A oder B” soll eine beliebige der natürlichen einschließenden Vertauschungen bedeuten, es sei denn es ist abweichend angegeben oder geht aus dem Kontext hervor. Das heißt: Wenn X A umfasst, X B umfasst oder X sowohl A als auch B umfasst, gilt „X umfasst A oder B” in einem beliebigen der vorhergehenden Fälle. Zusätzlich dazu sind die Artikel „ein” und „eine” in ihrer in der vorliegenden Anmeldung und den beigefügten Ansprüchen verwendeten Form im Allgemeinen so auszulegen, dass sie „ein(e) oder mehrere” bedeuten, sofern nichts Anderslautendes, wie etwa, dass damit eine Einzahl gemeint ist, durch den Kontext vorgegeben oder anhand desselben erkennbar ist.
  • Ferner soll die durchgängige Verwendung des Begriffs „eine Ausführungsform” oder „eine Ausführung” nicht die gleiche Ausführungsform oder Ausführung bedeuten, es sei denn dies ist so beschrieben. Wie hierin verwendet umfassen die Begriffe „bestimmen” und „identifizieren” oder Variationen hiervon das Auswählen, Feststellen, Berechnen, Nachschlagen, Empfangen, Bestimmen, Ermitteln, Erhalten oder anderweitige Identifizieren oder Bestimmen auf eine beliebige Weise unter Verwendung eines oder mehrerer der in 1 dargestellten Geräte.
  • Des Weiteren können zur Vereinfachung der Erläuterung Elemente der hierin offenbarten Verfahren in verschiedenen Reihenfolgen und/oder gleichzeitig auftreten, auch wenn die vorliegenden Figuren und Beschreibungen Reihenfolgen oder Abfolgen von Schritten oder Stufen umfassen können. Ferner können Elemente der hierin offenbarten Verfahren mit anderen hierin nicht explizit dargestellten und beschriebenen Elementen auftreten. Des Weiteren müssen nicht alle Elemente der hierin beschriebenen Verfahren erforderlich sein, um ein Verfahren gemäß dem offenbarten Gegenstand auszuführen.
  • Die Ausführungen der Sendestation 100A und/oder der Empfangsstation 100B (und die darauf gespeicherten und/oder dadurch ausgeführten Algorithmen, Verfahren, Anweisungen usw.) können als Hardware, Software oder eine beliebige Kombination hiervon umgesetzt sein. Die Hardware kann beispielsweise Computer, Intellectual-Property-(IP-)Cores, anwendungsspezifische integrierte Schaltkreise (Application-Specific Integrated Circuits, ASICs), programmierbare logische Schaltungen, optische Prozessoren, programmierbare logische Controller, Mikrocode, Mikrocontroller, Server, Mikroprozessoren, Digitalsignalprozessoren oder beliebige andere geeignete Schaltungen umfassen. In den Ansprüchen ist der Begriff „Prozessor” als jedwede der vorhergehenden Hardware einzeln oder in Kombination umfassend zu verstehen. Die Begriffe „Signal” und „Daten” werden austauschbar verwendet. Des Weiteren müssen Teile der Sendestation 100A und Empfangsstation 100E nicht notwendigerweise in der gleichen Weise ausgeführt sein.
  • Des Weiteren kann in einer Ausführung beispielsweise die Sendestation 100A oder die Empfangsstation 100E unter Verwendung eines Universalcomputers oder Universalprozessors mit einem Computerprogramm ausgeführt sein, das beim Ausführen beliebige der entsprechenden Verfahren, Algorithmen und/oder Anweisungen wie hierin beschrieben ausführt. Zusätzlich oder alternativ kann beispielsweise ein Spezialcomputer/-prozessor verwendet werden, der Spezialhardware zum Ausführen beliebiger der Verfahren, Algorithmen oder Anweisungen, wie hierin beschrieben, umfassen kann.
  • Sendestation 100A und die Empfangsstation 100B können beispielsweise auf Computer in einem Echtzeit-Videosystem ausgeführt sein. Alternativ kann die Sendestation 100A auf einem Server ausgeführt sein, und die Empfangsstation 100B kann auf einem Gerät getrennt vom Server, etwa als eine tragbare Kommunikationsvorrichtung, ausgeführt sein. In diesem Fall kann die Sendestation 100A Inhalte unter Verwendung eines Encoders 400 in ein kodiertes Videosignal kodieren und das kodierte Videosignal an das Kommunikationsgerät senden. Das Kommunikationsgerät kann wiederum das kodierte Videosignal unter Verwendung eines Decoders 500 dekodieren. Alternativ kann das Kommunikationsgerät lokal auf dem Kommunikationsgerät gespeicherten Inhalt, beispielsweise Inhalt, der von der Sendestation 100A nicht gesendet wurde, dekodieren. Es stehen andere geeignete Ausführungsarten für die Sendestation 100A und die Empfangsstation 100B zur Verfügung. Beispielsweise kann die Empfangsstation 100B ein im Allgemeinen ortsfester Personalcomputer statt eines tragbaren Kommunikationsgeräts sein, und/oder ein Gerät umfassend einen Encoder 400 kann ebenfalls einen Decoder 500 umfassen.
  • Des Weiteren können alle oder ein Teil der Ausführungen die Form eines Computerprogrammprodukts aufweisen, auf das beispielsweise von einem greifbaren für einen Computer verwendbaren oder computerlesbaren Medium zugegriffen werden kann. Ein für einen Computer verwendbares oder computerlesbares Medium kann ein beliebiges Gerät sein, das beispielsweise greifbar das Programm zur Verwendung durch oder in Verbindung mit einem beliebigen Prozessor enthalten, speichern, kommunizieren oder befördern kann. Das Medium kann beispielsweise ein elektronisches, magnetisches, optisches, elektromagnetisches Gerät oder ein Halbleitergerät sein. Andere geeignete Medien sind ebenfalls verfügbar.
  • Die zuvor beschriebenen Ausführungen wurden beschrieben, um ein einfaches Verstehen der Anmeldung zu ermöglichen, und sind nicht einschränkend zu verstehen. Die Anmeldung deckt im Gegenteil verschiedene Modifizierungen und äquivalente Anordnungen ab, die der Umfang der beigefügten Ansprüche umfasst, wobei der Umfang möglichst breit auszulegen ist, so dass er alle Modifizierungen und äquivalente Strukturen wie gesetzlich zugelassen umfasst.

Claims (18)

  1. Verfahren, Folgendes umfassend: Identifizieren eines aktuellen Blocks eines aktuellen Frames eines Eingabe-Videostreams; Erzeugen eines kodierten Blocks durch Kodieren des aktuellen Blocks unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus durch einen Prozessor als Reaktion auf einem nicht-flüchtigen computerlesbaren Medium gespeicherte Anweisungen, wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass ein zuvor kodierter unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist; und Einschließen des kodierten Blocks in einem Ausgabe-Bitstream.
  2. Verfahren nach Anspruch 1, wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im unbeschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass der zuvor kodierte unmittelbar angrenzende Block ein im beschränkten Entscheidungsmodus kodierter Block ist.
  3. Verfahren nach Anspruch 1, wobei der zuvor kodierte unmittelbar angrenzende Block ein zuvor kodierter Block räumlich unmittelbar links vom aktuellen Block im aktuellen Frame ist oder ein zuvor kodierter Block räumlich unmittelbar oberhalb vom aktuellen Block im aktuellen Frame ist.
  4. Verfahren nach Anspruch 1, wobei der zuvor kodierte unmittelbar angrenzende Block ein erster zuvor kodierter unmittelbar angrenzender Block ist, und wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass ein zweiter zuvor kodierter unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist.
  5. Verfahren nach Anspruch 4, wobei der zweite zuvor kodierte unmittelbar angrenzende Block ein zuvor kodierter Block räumlich unmittelbar oberhalb vom aktuellen Block im aktuellen Frame ist, und der erste zuvor kodierte unmittelbar angrenzende Block ein zuvor kodierter Block unmittelbar links vom aktuellen Block im aktuellen Frame ist.
  6. Verfahren nach Anspruch 4, wobei das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block Folgendes umfasst: Identifizieren eines zum Kodieren des ersten zuvor kodierten unmittelbar angrenzenden Blocks verwendeten ersten Vorhersagefilters; Identifizieren eines zum Kodieren des zweiten zuvor kodierten unmittelbar angrenzenden Blocks verwendeten zweiten Vorhersagefilters; unter der Bedingung, dass der erste Vorhersagefilter mit dem zweiten Vorhersagefilter übereinstimmt, Kodieren des aktuellen Blocks unter Verwendung des ersten Vorhersagefilters; und unter der Bedingung, dass sich der erste Vorhersagefilter vom zweiten Vorhersagefilter unterscheidet, Identifizieren eines ausgewählten Vorhersagefilters aus einer Menge von potentiellen Vorhersagefiltern und das Kodieren des aktuellen Blocks unter Verwendung des ausgewählten Vorhersagefilters.
  7. Verfahren nach Anspruch 4, wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass ein dritter zuvor kodierter unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, wobei der dritte zuvor kodierte unmittelbar angrenzende Block räumlich mit dem aktuellen Block übereinstimmt und der dritte zuvor kodierte unmittelbar angrenzende Block von einem zeitlich unmittelbar angrenzenden zuvor kodierten Frame stammt.
  8. Verfahren nach Anspruch 7, wobei das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block Folgendes umfasst: Identifizieren einer minimalen Kodierungsblockgröße, wobei die minimale Kodierungsblockgröße die kleinste Kodierungsblockgröße aus dem ersten zuvor kodierten unmittelbar angrenzenden Block, dem zweiten zuvor kodierten unmittelbar angrenzenden Block und dem dritten zuvor kodierten unmittelbar angrenzenden Block ist; Identifizieren einer maximalen Kodierungsblockgröße, wobei die maximale Kodierungsblockgröße die größte Kodierungsblockgröße aus dem ersten zuvor kodierten unmittelbar angrenzenden Block, dem zweiten zuvor kodierten unmittelbar angrenzenden Block und dem dritten zuvor kodierten unmittelbar angrenzenden Block ist; und Kodieren des aktuellen Blocks unter Verwendung der minimalen Kodierungsblockgröße als eine untere Grenze für die Kodierungsblockgröße und der maximalen Kodierungsblockgröße als eine obere Grenze für die Kodierungsblockgröße.
  9. Verfahren, Folgendes umfassend: Identifizieren eines aktuellen Blocks eines aktuellen Frames eines Eingabe-Videostreams; Erzeugen eines kodierten Blocks durch Kodieren des aktuellen Blocks unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus durch einen Prozessor als Reaktion auf einem nicht-flüchtigen computerlesbaren Medium gespeicherte Anweisungen, wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass ein erster zuvor kodierter unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist und ein zweiter zuvor kodierter unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist. Einschließen des kodierten Blocks in einem Ausgabe-Bitstream.
  10. Verfahren nach Anspruch 9, wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im unbeschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass der erste zuvor kodierte unmittelbar angrenzende Block ein im beschränkten Entscheidungsmodus kodierter Block ist und der zweite zuvor kodierte unmittelbar angrenzende Block ein im beschränkten Entscheidungsmodus kodierter Block ist.
  11. Verfahren nach Anspruch 9, wobei der erste zuvor kodierte unmittelbar angrenzende Block ein zuvor kodierter Block räumlich unmittelbar links vom aktuellen Block im aktuellen Frame ist und der zweite zuvor kodierte unmittelbar angrenzende Block ein zuvor kodierter Block unmittelbar oberhalb vom aktuellen Block im aktuellen Frame ist.
  12. Verfahren nach Anspruch 9, wobei das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block Folgendes umfasst: Identifizieren eines zum Kodieren des ersten zuvor kodierten unmittelbar angrenzenden Blocks verwendeten ersten Vorhersagefilters; Identifizieren eines zum Kodieren des zweiten zuvor kodierten unmittelbar angrenzenden Blocks verwendeten zweiten Vorhersagefilters; unter der Bedingung, dass der erste Vorhersagefilter mit dem zweiten Vorhersagefilter übereinstimmt, Kodieren des aktuellen Blocks unter Verwendung des ersten Vorhersagefilters; und unter der Bedingung, dass sich der erste Vorhersagefilter vom zweiten Vorhersagefilter unterscheidet, Identifizieren eines ausgewählten Vorhersagefilters aus einer Menge von potentiellen Vorhersagefiltern und das Kodieren des aktuellen Blocks unter Verwendung des ausgewählten Vorhersagefilters.
  13. Verfahren nach Anspruch 9, wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung umfasst, dass ein dritter zuvor kodierter unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, wobei der dritte zuvor kodierte unmittelbar angrenzende Block räumlich mit dem aktuellen Block übereinstimmt und der dritte zuvor kodierte unmittelbar angrenzende Block von einem zeitlich unmittelbar angrenzenden zuvor kodierten Frame stammt.
  14. Verfahren nach Anspruch 13, wobei das Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block Folgendes umfasst: Identifizieren einer minimalen Kodierungsblockgröße, wobei die minimale Kodierungsblockgröße die kleinste Kodierungsblockgröße aus dem ersten zuvor kodierten unmittelbar angrenzenden Block, dem zweiten zuvor kodierten unmittelbar angrenzenden Block und dem dritten zuvor kodierten unmittelbar angrenzenden Block ist; Identifizieren einer maximalen Kodierungsblockgröße, wobei die maximale Kodierungsblockgröße die größte Kodierungsblockgröße aus dem ersten zuvor kodierten unmittelbar angrenzenden Block, dem zweiten zuvor kodierten unmittelbar angrenzenden Block und dem dritten zuvor kodierten unmittelbar angrenzenden Block ist; und Kodieren des aktuellen Blocks unter Verwendung der minimalen Kodierungsblockgröße als eine untere Grenze für die Kodierungsblockgröße und der maximalen Kodierungsblockgröße als eine obere Grenze für die Kodierungsblockgröße.
  15. Verfahren, Folgendes umfassend: Identifizieren eines aktuellen Blocks eines aktuellen Frames eines Eingabe-Videostreams; Erzeugen eines kodierten Blocks durch Kodieren des aktuellen Blocks unter Verwendung einer Kodierung im alternierenden blockbeschränkten Entscheidungsmodus durch einen Prozessor als Reaktion auf einem nicht-flüchtigen computerlesbaren Medium gespeicherte Anweisungen, wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus Folgendes umfasst. Kodieren des aktuellen Blocks als ein im beschränkten Entscheidungsmodus kodierter Block unter der Bedingung, dass ein erster zuvor kodierter, unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, wobei der erste zuvor kodierte, unmittelbar angrenzende Block ein zuvor kodierter Block räumlich unmittelbar links vom aktuellen Block im aktuellen Frame ist, ein zweiter zuvor kodierter, unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, wobei der zweite zuvor kodierte, unmittelbar angrenzende Block ein zuvor kodierter Block räumlich unmittelbar oberhalb vom aktuellen Block im aktuellen Frame ist, und ein dritter zuvor kodierter, unmittelbar angrenzender Block ein im unbeschränkten Entscheidungsmodus kodierter Block ist, wobei der dritte zuvor kodierte, unmittelbar angrenzende Block räumlich mit dem aktuellen Block übereinstimmt und der dritte zuvor kodierte, unmittelbar angrenzende Block von einem zeitlich unmittelbar angrenzenden, zuvor kodierten Frame stammt; Kodieren des aktuellen Blocks unter Verwendung eines auf der Basis des ersten zuvor kodierten unmittelbar angrenzenden Blocks und des zweiten zuvor kodierten unmittelbar angrenzenden Blocks identifizierten Vorhersagefilters; und Kodieren des aktuellen Blocks unter Verwendung eines auf Basis des ersten zuvor kodierten unmittelbar angrenzenden Blocks, des zweiten zuvor kodierten unmittelbar angrenzenden Blocks und des dritten zuvor kodierten unmittelbar angrenzenden Blocks mit einem Kodierungsblockgrößenbereich identifizierten Blocks; und Einschließen des kodierten Blocks in einem Ausgabe-Bitstream.
  16. Verfahren nach Anspruch 15, wobei das Kodieren im alternierenden blockbeschränkten Entscheidungsmodus das Kodieren des aktuellen Blocks als ein im unbeschränkten Entscheidungsmodus kodierter Block umfasst unter der Bedingung, dass: der erste zuvor kodierte unmittelbar angrenzende Block ein im beschränkten Entscheidungsmodus kodierter Block ist, der zweite zuvor kodierte unmittelbar angrenzende Block ein im beschränkten Entscheidungsmodus kodierter Block ist, und der dritte zuvor kodierte unmittelbar angrenzende Block ein im beschränkten Entscheidungsmodus kodierter Block ist.
  17. Verfahren nach Anspruch 15, wobei das Kodieren des aktuellen Blocks unter Verwendung des Vorhersagefilters Folgendes umfasst: Identifizieren eines zum Kodieren des ersten zuvor kodierten unmittelbar angrenzenden Blocks verwendeten ersten potentiellen Vorhersagefilters; Identifizieren eines zum Kodieren des zweiten zuvor kodierten unmittelbar angrenzenden Blocks verwendeten zweiten potentiellen Vorhersagefilters; unter der Bedingung, dass der erste potentielle Vorhersagefilter mit dem zweiten potentiellen Vorhersagefilter übereinstimmt, Auswählen des ersten potentiellen Vorhersagefilters als der Vorhersagefilter; und unter der Bedingung, dass sich der erste potentielle Vorhersagefilter vom zweiten potentiellen Vorhersagefilter unterscheidet, Auswählen des Vorhersagefilters aus einer Menge von verfügbaren Vorhersagefiltern.
  18. Verfahren nach Anspruch 15, wobei das Kodieren des aktuellen Blocks unter Verwendung des Kodierungsblockgrößenbereichs Folgendes umfasst: Identifizieren einer minimalen Kodierungsblockgröße, wobei die minimale Kodierungsblockgröße die kleinste Kodierungsblockgröße aus dem ersten zuvor kodierten unmittelbar angrenzenden Block, dem zweiten zuvor kodierten unmittelbar angrenzenden Block und dem dritten zuvor kodierten unmittelbar angrenzenden Block ist; Identifizieren einer maximalen Kodierungsblockgröße, wobei die maximale Kodierungsblockgröße die größte Kodierungsblockgröße aus dem ersten zuvor kodierten unmittelbar angrenzenden Block, zweiten zuvor kodierten unmittelbar angrenzenden Block und dritten zuvor kodierten unmittelbar angrenzenden Block ist; und Auswählen der minimalen Kodierungsblockgröße als eine untere Grenze des Kodierungsblockgrößenbereichs und der maximalen Kodierungsblockgröße als eine obere Grenze des Kodierungsblockgrößenbereichs.
DE112015005159.7T 2014-11-13 2015-11-06 Kodierung im alternierenden blockbeschränkten entscheidungsmodus Active DE112015005159B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/540,083 US10142647B2 (en) 2014-11-13 2014-11-13 Alternating block constrained decision mode coding
US14/540,083 2014-11-13
PCT/US2015/059547 WO2016077179A1 (en) 2014-11-13 2015-11-06 Alternating block constrained decision mode coding

Publications (2)

Publication Number Publication Date
DE112015005159T5 true DE112015005159T5 (de) 2017-08-03
DE112015005159B4 DE112015005159B4 (de) 2023-09-14

Family

ID=54704082

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015005159.7T Active DE112015005159B4 (de) 2014-11-13 2015-11-06 Kodierung im alternierenden blockbeschränkten entscheidungsmodus

Country Status (6)

Country Link
US (1) US10142647B2 (de)
EP (1) EP3219103B1 (de)
CN (1) CN107079156B (de)
DE (1) DE112015005159B4 (de)
GB (1) GB2546882B (de)
WO (1) WO2016077179A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9806775B2 (en) * 2015-09-01 2017-10-31 Qualcomm Incorporated Multi-user multiple-input-multiple-output groupings of stations
US9860761B2 (en) * 2015-09-01 2018-01-02 Qualcomm Incorporated Multi-user multiple-input-multiple-output grouping metrics
CN110546956B (zh) * 2017-06-30 2021-12-28 华为技术有限公司 一种帧间预测的方法及装置
CN113396588A (zh) * 2019-02-01 2021-09-14 北京字节跳动网络技术有限公司 不同视频处理模式之间的协调

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5050230A (en) 1989-11-29 1991-09-17 Eastman Kodak Company Hybrid residual-based hierarchical storage and display method for high resolution digital images in a multiuse environment
US5617541A (en) 1994-12-21 1997-04-01 International Computer Science Institute System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets
US6847684B1 (en) 2000-06-01 2005-01-25 Hewlett-Packard Development Company, L.P. Zero-block encoding
US6778553B1 (en) 2000-11-10 2004-08-17 Microsoft Corp. System and method for media streaming
WO2004043074A1 (en) 2002-11-04 2004-05-21 Tandberg Telecom As Inter-network and inter-protocol video conference privacy method, apparatus and computer program product
EP1642463A1 (de) 2003-06-30 2006-04-05 Koninklijke Philips Electronics N.V. Videokodierung in einem überkompletten waveletbereich
WO2005055612A1 (en) 2003-12-02 2005-06-16 Sungkyunkwan University Method and apparatus for video encoding
US7881386B2 (en) * 2004-03-11 2011-02-01 Qualcomm Incorporated Methods and apparatus for performing fast mode decisions in video codecs
US7689051B2 (en) 2004-04-15 2010-03-30 Microsoft Corporation Predictive lossless coding of images and video
CN100588257C (zh) 2004-06-23 2010-02-03 新加坡科技研究局 采用栅格运动估计和补偿的可扩展视频编码
KR100679011B1 (ko) 2004-07-15 2007-02-05 삼성전자주식회사 기초 계층을 이용하는 스케일러블 비디오 코딩 방법 및 장치
KR100703749B1 (ko) 2005-01-27 2007-04-05 삼성전자주식회사 잔차 재 추정을 이용한 다 계층 비디오 코딩 및 디코딩방법, 이를 위한 장치
US20060193386A1 (en) 2005-02-25 2006-08-31 Chia-Wen Lin Method for fast mode decision of variable block size coding
WO2006096612A2 (en) 2005-03-04 2006-09-14 The Trustees Of Columbia University In The City Of New York System and method for motion estimation and mode decision for low-complexity h.264 decoder
EP1711018A1 (de) 2005-04-08 2006-10-11 Thomson Licensing Verfahren und Vorrichtung zur Kodierung und Dekodierung von Videobildern.
US20060256868A1 (en) 2005-05-16 2006-11-16 Ensequence, Inc. Methods and systems for repositioning mpeg image content without recoding
US8774272B1 (en) * 2005-07-15 2014-07-08 Geo Semiconductor Inc. Video quality by controlling inter frame encoding according to frame position in GOP
KR100746011B1 (ko) 2005-08-24 2007-08-06 삼성전자주식회사 잔차 예측의 성능 개선 방법, 상기 방법을 이용한 비디오인코더 및 비디오 디코더
US8467448B2 (en) 2006-11-15 2013-06-18 Motorola Mobility Llc Apparatus and method for fast intra/inter macro-block mode decision for video encoding
CN101159875B (zh) 2007-10-15 2011-10-05 浙江大学 二重预测视频编解码方法和装置
EP2345256B1 (de) 2008-10-07 2018-03-14 Euclid Discoveries, LLC Auf merkmalen basierende videokomprimierung
US8666181B2 (en) 2008-12-10 2014-03-04 Nvidia Corporation Adaptive multiple engine image motion detection system and method
RU2555226C2 (ru) 2009-06-16 2015-07-10 Конинклейке Филипс Электроникс Н.В. Кодирование сигнала в масштабируемый поток битов и декодирование такого потока битов
JP5416277B2 (ja) 2009-07-10 2014-02-12 サムスン エレクトロニクス カンパニー リミテッド 階層的映像符号化における空間予測方法及び装置
US20110249743A1 (en) 2010-04-09 2011-10-13 Jie Zhao Super-block for high performance video coding
CN102340659B (zh) * 2010-07-23 2013-09-04 联合信源数字音视频技术(北京)有限公司 一种基于avs的并行的模式决策装置和方法
EP2700230A4 (de) * 2011-04-21 2014-08-06 Mediatek Inc Verfahren und vorrichtung für verbesserte in-loop-filterung
US9338458B2 (en) 2011-08-24 2016-05-10 Mediatek Inc. Video decoding apparatus and method for selectively bypassing processing of residual values and/or buffering of processed residual values
US9185404B2 (en) * 2011-10-07 2015-11-10 Qualcomm Incorporated Performing transform dependent de-blocking filtering
US20140044162A1 (en) * 2012-08-08 2014-02-13 Qualcomm Incorporated Adaptive inference mode information derivation in scalable video coding
US9510019B2 (en) 2012-08-09 2016-11-29 Google Inc. Two-step quantization and coding method and apparatus

Also Published As

Publication number Publication date
CN107079156B (zh) 2020-01-31
EP3219103A1 (de) 2017-09-20
GB2546882B (en) 2021-09-29
US10142647B2 (en) 2018-11-27
DE112015005159B4 (de) 2023-09-14
CN107079156A (zh) 2017-08-18
GB2546882A (en) 2017-08-02
EP3219103B1 (de) 2020-09-02
GB201621452D0 (en) 2017-02-01
WO2016077179A1 (en) 2016-05-19
US20160142726A1 (en) 2016-05-19

Similar Documents

Publication Publication Date Title
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE102016125125B4 (de) Tile-Copying für Videokompression
DE112015003805T5 (de) Bewegungskompensierte partitionierung
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
US11496740B2 (en) Efficient context handling in arithmetic coding
DE202016008192U1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE112015005159B4 (de) Kodierung im alternierenden blockbeschränkten entscheidungsmodus
US20170237939A1 (en) Loop filtering for multiform transform partitioning
DE102016125456A1 (de) Kodierinterpolationsfilter
DE202016008164U1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE102016125535A1 (de) Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße
EP3198555B1 (de) Rauschunterdrückung im frequenzbereich
DE202016008368U1 (de) Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgrösse
JP6959367B2 (ja) デュアルデブロッキングフィルタ閾値
DE102016125593B4 (de) Dynamischer Kodiermodus für Referenz-Bewegungsvektoren
JP7550892B2 (ja) 暗黙的モデルを伴うインターイントラ予測

Legal Events

Date Code Title Description
R012 Request for examination validly filed
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
R020 Patent grant now final