DE202016008160U1 - Dynamic coding mode for reference motion vectors - Google Patents

Dynamic coding mode for reference motion vectors Download PDF

Info

Publication number
DE202016008160U1
DE202016008160U1 DE202016008160.9U DE202016008160U DE202016008160U1 DE 202016008160 U1 DE202016008160 U1 DE 202016008160U1 DE 202016008160 U DE202016008160 U DE 202016008160U DE 202016008160 U1 DE202016008160 U1 DE 202016008160U1
Authority
DE
Germany
Prior art keywords
motion vector
block
image
blocks
motion vectors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202016008160.9U
Other languages
German (de)
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
Priority claimed from US15/131,079 external-priority patent/US10397600B1/en
Priority claimed from US15/373,518 external-priority patent/US10462457B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of DE202016008160U1 publication Critical patent/DE202016008160U1/en
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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/172Methods 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 picture, frame or field
    • 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

Landscapes

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

Abstract

Vorrichtung zum Dekodieren eines Videostreams, umfassend: einen Prozessor; und Speicheranweisungen, die den Prozessor veranlassen, ein Verfahren auszuführen, das Verfahren umfassend: das Identifizieren, für einen aktuellen Block, eines Referenzbildes, das verwendet wird, um den aktuellen Block innerhalb eines aktuellen Bildes zu kodieren; das Erstellung einer Kandidatenliste für Referenz-Bewegungsvektoren für das Referenzbild unter Verwendung von Referenz-Blöcken, wobei die Referenz-Blöcke räumlich nebeneinander liegende Blöcke des aktuellen Bildes, einen gemeinsam genutzten Block innerhalb eines vorherigen Bildes und räumlich nebeneinander liegende Blöcke des gemeinsam genutzten Blocks innerhalb des vorherigen Bildes umfassen; das Ranking jedes Bewegungsvektors innerhalb der Kandidatenliste für Referenz-Bewegungsvektoren nach der Distanz des aktuellen Blocks zu einem Referenzblock, der den Bewegungsvektor bereitstellt, und durch einen Beliebtheitswert des Bewegungsvektors, der eine Nutzungsintensität des Bewegungsvektors durch die Referenzblöcke anzeigt; das Zuweisen der Bewegungsvektoren zu einer Vielzahl von Inter-Vorhersage-Modi basierend auf dem Ranking; das Auswählen eines Inter-Vorhersage-Modus zum Dekodieren des aktuellen Blocks; und das Dekodieren des aktuellen Blocks unter Verwendung des Inter-Vorhersage-Modus.Apparatus for decoding a video stream, comprising: a processor; and storage instructions that cause the processor to perform a method, the method comprising: identifying, for a current block, a reference image used to encode the current block within a current image; the creation of a candidate list for reference motion vectors for the reference image using reference blocks, wherein the reference blocks are spatially adjacent blocks of the current image, a shared block within a previous image, and spatially adjacent blocks of the shared block within the previous picture include; the ranking of each motion vector within the candidate list for reference motion vectors by the distance of the current block to a reference block providing the motion vector, and a popularity value of the motion vector indicating a usage intensity of the motion vector through the reference blocks; assigning the motion vectors to a plurality of inter-prediction modes based on the ranking; selecting an inter-prediction mode to decode the current block; and decoding the current block using the inter-prediction mode.

Description

HINTERGRUNDBACKGROUND

Digitale Videostreams können Videomaterial als eine Bildfolge oder als Einzelbilder darstellen. Digitale Videos können für eine Vielzahl von Anwendungen genutzt werden, darunter beispielsweise Videokonferenzen, hochauflösende Unterhaltungsprodukte, Werbevideos oder die gemeinsame Nutzung von selbst produzierten Videos. Ein digitaler Videostream kann eine große Menge Daten enthalten und erhebliche Teile der Rechen- und Kommunikationsressourcen eines Computergerätes bei der Verarbeitung, Übertragung oder Speicherung der Videodaten binden. Es liegen verschiedene Ansätze zur Reduzierung der Datenmengen in Videostreams als Vorschläge vor, darunter Kompression und andere Kodierungstechniken. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.Digital video streams can display video as a frame or as frames. Digital video can be used in a variety of applications, including video conferencing, high-definition entertainment, promotional video, and self-produced video sharing. A digital video stream may contain a large amount of data and bind significant portions of the computational and communications resources of a computing device when processing, transmitting or storing the video data. There are various approaches to reducing the amount of data in video streams as suggestions, including compression and other coding techniques. Be provided under protection and subject of the utility model are, according to the provisions of the utility model law, only devices as defined in the appended claims, but no method. Wherever in the description, if appropriate, reference is made to methods, these references are merely illustrative of the device or devices set forth in the appended claims.

KURZDARSTELLUNGSUMMARY

Diese Offenbarung bezieht sich im Allgemeinen auf die Kodierung und Dekodierung von Videodaten genauer gesagt auf die Videokodierung unter Verwendung von Referenz-Bewegungsvektoren.This disclosure generally relates to the encoding and decoding of video data, more particularly to video encoding using reference motion vectors.

Verfahren zum Dekodieren eines Videostreams gemäß einer Implementierung dieser Offenbarung, beinhaltend: das Identifizieren eines Referenzbildes für einen aktuellen Block, das für das Kodieren des aktuellen Blocks innerhalb eines aktuellen Bildes verwendet wird, das Erstellen einer Kandidatenliste der Referenz-Bewegungsvektoren für das Referenzbild, das die Referenz-Blöcke verwendet, das Ranking aller Bewegungsvektoren innerhalb der Kandidatenliste der Referenz-Bewegungsvektoren nach der Distanz von dem aktuellen Block zu einem Referenzblock, der den Bewegungsvektor bereitstellt, und nach einem Beliebtheitswert des Bewegungsvektors, der eine Nutzungsintensität des Bewegungsvektors durch die Referenzblöcke anzeigt, das Zuweisen der Bewegungsvektoren zu einer Vielzahl von Inter-Vorhersage-Modi basierend auf dem Ranking, die Auswahl eines Inter-Vorhersage-Modus zum Dekodieren des aktuellen Blocks und das Dekodieren des aktuellen Blocks unter Verwendung des Inter-Vorhersage-Modus. Die Referenz-Blöcke können räumlich nebeneinander liegende Blöcke des aktuellen Bildes, einen gemeinsam genutzten Block innerhalb eines vorherigen Bildes und räumlich nebeneinander liegende Blöcke des gemeinsam genutzten Blocks innerhalb des vorherigen Bildes, oder andere Referenz-Blöcke beinhalten.A method of decoding a video stream in accordance with an implementation of this disclosure, comprising: identifying a reference frame for a current block used to encode the current block within a current frame, creating a candidate list of the reference motion vectors for the reference frame containing the Using reference blocks, the ranking of all motion vectors within the candidate list of reference motion vectors by the distance from the current block to a reference block providing the motion vector and a popularity value of the motion vector indicating a usage intensity of the motion vector by the reference blocks Assigning the motion vectors to a plurality of inter-prediction modes based on the ranking, selecting an inter-prediction mode to decode the current block, and decoding the current block using the inter-prediction mode. The reference blocks may include spatially adjacent blocks of the current image, a shared block within a previous image, and spatially adjacent blocks of the shared block within the previous image, or other reference blocks.

Eine entsprechende Vorrichtung zum Dekodieren eines Videostreams ist auch bereitgestellt, zum Beispiel eine Vorrichtung zum Dekodieren eines Videostreams gemäß einer Implementierung dieser Offenbarung beinhaltet einen Prozessor und einen Speicher, der Speicher speichert Anweisungen, die den Prozessor veranlassen, das oben genannte Verfahren durchzuführen.A corresponding device for decoding a video stream is also provided, for example a device for decoding a video stream according to an implementation of this disclosure includes a processor and a memory, the memory stores instructions that cause the processor to perform the above-mentioned method.

Ein Verfahren zum Kodieren eines Videostreams gemäß einer Implementierung dieser Offenbarung beinhaltet die Identifikation von Bewegungsvektorkandidaten zum Kodieren eines aktuellen Blocks innerhalb eines aktuellen Bildes unter Verwendung von Referenz-Blöcken für jedes einer Vielzahl von Referenzbildern, das Ranking der Bewegungsvektorkandidaten innerhalb einer Kandidatenliste für Referenz-Bewegungsvektoren für ein Referenzbild nach der Distanz des aktuellen Blocks von einem entsprechenden Referenzblock, der einen entsprechenden Bewegungsvektorkandidaten bereitstellt, und nach einem Beliebtheitswert des Bewegungsvektors, der eine Nutzungsintensität des Bewegungsvektors durch die Referenzblöcke anzeigt, das Zuweisen der Bewegungsvektoren zu einer Vielzahl von Inter-Vorhersage-Modi basierend auf dem Ranking, die Auswahl eines Inter-Vorhersage-Modus zum Dekodieren des aktuellen Blocks und das Kodieren des aktuellen Blocks unter Verwendung des Inter-Vorhersage-Modus.A method of encoding a video stream in accordance with an implementation of this disclosure involves identifying motion vector candidates to encode a current block within a current frame using reference blocks for each of a plurality of reference frames, ranking the motion vector candidates within a candidate list for reference motion vectors a reference image based on the distance of the current block from a corresponding reference block providing a corresponding motion vector candidate, and upon a popularity value of the motion vector indicating usage intensity of the motion vector through the reference blocks, assigning the motion vectors to a plurality of inter-prediction modes on the ranking, selecting an inter-prediction mode for decoding the current block, and encoding the current block using the inter-prediction mode.

Eine entsprechende Vorrichtung zum Kodieren eines Videostreams ist auch bereitgestellt, zum Beispiel eine Vorrichtung, die einen Prozessor und einen Speicher beinhaltet, wobei der Speicher Anweisungen, die den Prozessor veranlassen, das oben genannte Verfahren durchzuführen, enthält. Ebenfalls bereitgestellt sind ein oder mehrere computerlesbare Medien, die einen Computerprogrammcode zum wirksamen Umsetzen der Kodier- und/oder Dekodier-Methoden bereitstellen und die hierin beschriebene Vorrichtung, wenn sie auf einem geeigneten Computergerät ausgeführt werden.A corresponding device for encoding a video stream is also provided, for example, a device including a processor and a memory, wherein the memory contains instructions that cause the processor to perform the above-mentioned method. Also provided are one or more computer-readable media providing computer program code for efficiently implementing the encoding and / or decoding methods and the apparatus described herein when executed on a suitable computing device.

Variationen in diesen und anderen Aspekten der Offenbarung werden nachfolgend ausführlicher beschrieben.Variations in these and other aspects of the disclosure are described in more detail below.

KURZBESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

Die herein enthaltene Beschreibung nimmt Bezug auf beigefügte Zeichnungen, die nachstehend beschrieben werden, wobei dieselben Bezugszahlen in den verschiedenen Ansichten denselben Elementen entsprechen.The description contained herein makes reference to accompanying drawings, which are described below, wherein the same reference numerals correspond to the same elements throughout the several views.

1 zeigt eine Prinzipskizze eines Videokodierungs- und Dekodierungssystems. 1 shows a schematic diagram of a video encoding and decoding system.

2 ist ein Blockdiagramm eines Beispiels eines Computergeräts mit dessen Hilfe eine Sende- oder Empfangsstation umgesetzt werden kann. 2 Figure 12 is a block diagram of an example of a computing device that can be used to implement a transmitting or receiving station.

3 ist ein Diagramm mit einem Beispiel für einen Videostream, der kodiert und danach dekodiert werden soll. 3 is a diagram with an example of a video stream to be encoded and then decoded.

4 ist ein Blockdiagramm eines Videokomprimierungssystems gemäß einem Aspekt der hierin enthaltenen Lehren. 4 FIG. 10 is a block diagram of a video compression system according to one aspect of the teachings herein. FIG.

5 ist ein Blockdiagramm eines Videodekomprimierungssystems entsprechend einem anderen Aspekt der hierin enthaltenen Lehre. 5 Figure 4 is a block diagram of a video decompression system according to another aspect of the teachings contained herein.

6 ist ein Flussdiagramm eines Prozesses zum Kodieren eines Videostreams unter Verwendung von Referenz-Bewegungsvektoren gemäß einer Implementierung dieser Offenbarung. 6 FIG. 10 is a flowchart of a process for encoding a video stream using reference motion vectors in accordance with an implementation of this disclosure.

7A und 7B sind Diagramme einer Sequenz von Bildern, die verwendet wird, um die Identifikation der Bewegungsvektorkandidaten innerhalb des Prozesses von 6 zu erklären. 7A and 7B are diagrams of a sequence of images used to identify the motion vector candidates within the process of 6 to explain.

8 ist ein Flussdiagramm eines Prozesses zum Dekodieren eines kodierten Videostreams unter Verwendung von Referenz-Bewegungsvektoren gemäß Implementierungen dieser Offenbarung. 8th FIG. 10 is a flowchart of a process for decoding a coded video stream using reference motion vectors in accordance with implementations of this disclosure.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Die Kompressionsmethoden zur Kodierung von Videostreams können die Aufteilung der einzelnen Bilder in Blöcke und die Erzeugung des Bitstreams der digitalen Videoausgabe mittels einer oder mehrerer Techniken zur Verminderung der Informationsmenge in der Ausgabe einschließen. Der empfangene Bitstream kann dekodiert werden, um die Blöcke und die Ausgangsbilder aus den beschränkten Informationen neu zu erstellen. Die Kodierung eines Videostreams, oder eines Teiles von diesem, wie ein Einzelbild oder Block kann die Verwendung von zeitlichen und räumlichen Ähnlichkeiten im Videostream zur Steigerung der Kodierleistung einschließen. So kann beispielsweise ein aktueller Block eines Videostreams auf der Basis eines zuvor kodierten Blocks im Videostream kodiert werden, indem Bewegungs- und Farbinformationen für den aktuellen Block aufgrund der Daten des zuvor kodierten Blocks vorausgesagt werden und die Differenz (Restwert) zwischen den vorausgesagten Werten und dem aktuellen Block festgestellt wird. Auf diese Art müssen nur der Restwert und die für seine Erzeugung verwendeten Parameter dem Bitstream hinzugefügt werden, anstatt des kompletten aktuellen Blocks. Diese Technik kann als Inter-Vorhersage bezeichnet werden.The compression methods for encoding video streams may include dividing the individual pictures into blocks and generating the bitstream of the digital video output by one or more techniques for reducing the amount of information in the output. The received bitstream may be decoded to recreate the blocks and the output pictures from the limited information. Encoding a video stream, or part of it, such as a frame or block, may involve the use of temporal and spatial similarities in the video stream to enhance the encoding performance. For example, a current block of a video stream based on a previously encoded block in the video stream may be encoded by predicting motion and color information for the current block based on the data of the previously encoded block and the difference (residual) between the predicted values and the current block is detected. In this way, only the residual value and the parameters used for its generation need to be added to the bitstream, rather than the entire current block. This technique can be called inter-prediction.

Einer der Parameter in der Inter-Vorhersage ist ein Bewegungsvektor, der die räumliche Verschiebung der zuvor kodierten Blöcke relativ zum aktuellen Block darstellt. Der Bewegungsvektor kann unter Verwendung einer Methode der Bewegungsschätzung, wie zum Beispiel einer Bewegungssuche identifiziert werden. In der Bewegungssuche kann ein Teil eines Referenzbildes in eine Folge von Positionen umgewandelt werden, die einen Vorhersageblock formen, der von einem Teil eines aktuellen Bildes abgezogen werden kann, um eine Reihe von Restwerten zu formen. Die der Position entsprechenden X- und Y-Umsetzungen, die der Position mit dem kleinsten Restwert entsprechen, können als Bewegungsvektor ausgewählt werden. Bits, die den Bewegungsvektor darstellen, können in dem kodierten Bitstream beinhaltet sein, um einem Dekodierer zu ermöglichen, den Vorhersageblock zu reproduzieren und den Teil des kodierten Video-Bitstreams, der mit dem Bewegungsvektor verbunden ist, zu dekodieren.One of the parameters in the inter prediction is a motion vector representing the spatial displacement of the previously encoded blocks relative to the current block. The motion vector may be identified using a method of motion estimation, such as a motion search. In motion search, a portion of a reference image may be converted to a sequence of positions that form a prediction block that may be subtracted from a portion of a current image to form a series of residuals. The X and Y translations corresponding to the position corresponding to the position with the smallest residual value can be selected as a motion vector. Bits representing the motion vector may be included in the encoded bitstream to enable a decoder to reproduce the prediction block and to decode the portion of the encoded video bitstream associated with the motion vector.

Für Videokompressionsschemata kann die Anzahl an Bits, die verwendet werden, um die Bewegungsvektoren zu kodieren, erheblich sein, vor allem für Videostreams, die mit einer niedrigeren Datenrate oder einem höheren Kompressionsverhältnis kodiert sind. Um die Kodierleistung zu verbessern, kann ein Bewegungsvektor differentiell unter Verwendung eines Referenz-Bewegungsvektors kodiert werden, d. h. nur die Differenz zwischen dem Bewegungsvektor und dem Referenz-Bewegungsvektor wird kodiert. In manchen Fällen kann der Referenz-Bewegungsvektor aus zuvor verwendeten Bewegungsvektoren im Videostream ausgewählt werden, zum Beispiel, der letzte Nicht-Null-Bewegungsvektor von benachbarten Blöcken. Die Auswahl eines zuvor verwendeten Bewegungsvektors für die Kodierung eines aktuellen Bewegungsvektors kann des Weiteren die Anzahl an Bits, die im kodierten Video-Bitstream beinhaltet sind, und damit den für Übertragung und Speicherung erforderlichen Bandbreiten-Bedarf reduzieren. Durch Bewegungsvektor-Referenziermethoden kann ein Codierungsblock von zuvor kodierten benachbarten Blöcken Bewegungsinformationen ableiten.For video compression schemes, the number of bits used to encode the motion vectors can be significant, especially for video streams encoded at a lower data rate or higher compression ratio. In order to improve the coding performance, a motion vector may be coded differentially using a reference motion vector, i. H. only the difference between the motion vector and the reference motion vector is coded. In some cases, the reference motion vector may be selected from previously used motion vectors in the video stream, for example, the last non-zero motion vector from adjacent blocks. The selection of a previously used motion vector for encoding a current motion vector may further reduce the number of bits included in the coded video bitstream, and thus the bandwidth requirements required for transmission and storage. By motion vector referencing methods, a coding block of previously coded adjacent blocks can derive motion information.

Die Kandidatenliste der Referenz-Bewegungsvektoren kann entsprechend der Distanz zwischen dem Referenzblock und dem aktuellen Block, der kodiert wird, konstruiert werden. Allerdings ignoriert ein Ranking ausschließlich nach der Blockdistanz, dass ein Bewegungsvektor von mehreren Blocks verwendet werden kann. Wie viele Pixel in einem Referenz-Bereich den Bewegungsvektor verwenden, kann darauf hinweisen, wie wahrscheinlich es ist, dass der Bewegungsvektor ein effektiver Bewegungsvektor für den aktuellen Block ist.The candidate list of reference motion vectors may be constructed according to the distance between the reference block and the current block being coded. However, a ranking based solely on the block distance ignores that a motion vector of multiple blocks can be used. How many pixels in a reference area use the motion vector can indicate how likely it is that the motion vector is an effective motion vector for the current block.

Wie erwähnt können benachbarte Blöcke verwendet werden, um eine Kandidatenliste für Referenz-Bewegungsvektoren zu konstruierten. Damit der Kodierer und Dekodierer dieselben Informationen verwenden, werden zuvor kodierte Blöcke verwendet. Im Falle der Kodierung in der Reihenfolge von Rasterscans sind die benachbarten Blöcke auf jene links und über dem aktuellen Block beschränkt, sofern diese verfügbar sind. Der gemeinsam genutzte Block vom vorherigen Bild (auch das letzte Bild genannt) kann auch berücksichtigt werden. Allerdings ist der gemeinsam genutzte Block ein Block, der im letzten Bild, das dieselbe Pixelposition wie der aktuelle Block hat, positioniert, daher werden potenziell nützliche Bewegungsinformationen von rechts und von unten des aktuellen Blocks noch immer weggelassen. As mentioned, adjacent blocks may be used to construct a candidate list for reference motion vectors. For the coder and decoder to use the same information, previously coded blocks are used. In the case of coding in the order of raster scans, the neighboring blocks are limited to those left and above the current block, if available. The shared block from the previous image (also called the last image) can also be considered. However, the shared block is a block positioned in the last frame that has the same pixel location as the current block, so potentially useful motion information from the right and bottom of the current block is still omitted.

Unabhängig davon, wie die Kandidatenliste der Referenz-Bewegungsvektoren aufgebaut ist, kann es eine fixe Anzahl an Bewegungsvektor-Referenziermethoden geben, zum Beispiel zwei. Die Verwendung einer fixen Anzahl an Referenzmodi ist möglicherweise ineffizient. Wenn zum Beispiel die Kandidatenliste der Referenz-Bewegungsvektoren weniger als die fixe Anzahl an Bewegungsvektoren enthält, kann ein Null-Bewegungsvektor nötig sein, um die Modi ohne Bewegungsvektor aufzufüllen. In anderen Fällen kann die Kandidatenliste der Referenz-Bewegungsvektoren mehr als die fixe Anzahl an Bewegungsvektoren enthalten. Die ausgelassenen Bewegungsvektoren können bessere Kandidaten sein, als die, die beibehalten wurden – das heißt, ein ausgelassener Bewegungsvektor kann zu einer besseren Rate und/oder weniger Verzerrung bei der Kodierung des aktuellen Blocks führen.Regardless of how the candidate list of reference motion vectors is constructed, there may be a fixed number of motion vector referencing methods, for example, two. Using a fixed number of reference modes may be inefficient. For example, if the candidate list of reference motion vectors contains less than the fixed number of motion vectors, a zero motion vector may be needed to populate the modes without a motion vector. In other cases, the candidate list of reference motion vectors may include more than the fixed number of motion vectors. The omitted motion vectors may be better candidates than those retained - that is, a dropped motion vector may result in a better rate and / or less distortion in the encoding of the current block.

In Implementierungen dieser Offenbarung kann die Kompressionsleistung durch Verwendung eines effizienten Ranking-Systems für Referenz-Bewegungsvektoren, gefolgt von einem dynamischen Bewegungsvektor-Referenziermodus der vollständig die verfügbare Kandidatenliste der Bewegungsvektoren wiedergibt, verbessert werden. Im Ranking-System können zum Beispiel Referenz-Bewegungsvektorkandidaten für Blöcke mit einem einzelnen Referenzbild nach beiden relativen Distanzen zwischen aktuellem Block und Abdeckungsbereich (z. B. Verwendung des Bewegungsvektors) gereiht werden. Für Blöcke mit zusammengesetzten (z. B. zwei) Referenzbildern, können die Bewegungsvektorkandidaten von Referenz-Blöcken, die dieselbe Referenzbildkombination verwenden, mit einer höheren Priorität gereiht werden. Darunter sind optional Kombinationen von Bewegungsvektoren benachbarter Blöcke mit einem einzelnen Referenzbild gereiht. Bei der Bestimmung der Bewegungsvektorkandidaten können Bewegungsinformationen, die Blöcken unten und rechts von dem gemeinsam genutzten Block zugeordnet sind, berücksichtigt werden, um diese Bewegungsrichtungen zu erfassen. Schließlich kann der dynamische Bewegungsvektor-Referenziermodus eine Reihe von Modi, die von der Größe der Kandidatenliste der Referenz-Bewegungsvektoren abhängt verwenden, sodass die Wahrscheinlichkeit, potenziell wertvolle Referenzinformationen zu verlieren, reduziert ist.In implementations of this disclosure, the compression performance can be improved by using an efficient ranking system for reference motion vectors, followed by a dynamic motion vector referencing mode that fully reflects the available candidate list of motion vectors. In the ranking system, for example, reference motion vector candidates for blocks with a single reference image may be ranked by both relative distances between the current block and coverage area (eg, use of the motion vector). For blocks having composite (eg, two) reference images, the motion vector candidates of reference blocks using the same reference image combination may be ranked with a higher priority. Underneath, optional combinations of motion vectors of adjacent blocks are ranked with a single reference image. In determining the motion vector candidates, motion information associated with blocks below and to the right of the shared block may be considered to capture those directions of motion. Finally, the dynamic motion vector referencing mode may use a number of modes that depend on the size of the candidate list of reference motion vectors, such that the likelihood of losing potentially valuable reference information is reduced.

Ein Referenz-Bewegungsvektor kann aus den Bewegungsvektorkandidaten basierend auf der Distanz zwischen dem Referenzblock und dem aktuellen Block und der Beliebtheit des Referenz-Bewegungsvektors ausgewählt werden. Die Distanz zwischen dem Referenzblock und dem aktuellen Block kann zum Beispiel auf der räumlichen Verschiebung zwischen den Pixeln in dem zuvor kodierten Block und den entsprechenden gemeinsam genutzten Pixeln im aktuellen Block, gemessen in Pixel, basieren. Die Beliebtheit des Bewegungsvektors kann zum Beispiel auf der Menge der zuvor kodierten Pixel, die den Bewegungsvektor verwenden, basieren. Je mehr zuvor kodierte Pixel den Bewegungsvektor verwenden, desto höher ist die Wahrscheinlichkeit des Bewegungsvektors. In einem Beispiel ist der Beliebtheitswert die Anzahl an zuvor kodierten Pixeln, die den Bewegungsvektor verwenden. In einem weiteren Beispiel ist der Beliebtheitswert ein Prozentwert der zuvor kodierten Pixel, innerhalb eines Bereichs, die den Bewegungsvektor verwenden.A reference motion vector may be selected from the motion vector candidates based on the distance between the reference block and the current block and the popularity of the reference motion vector. For example, the distance between the reference block and the current block may be based on the spatial displacement between the pixels in the previously coded block and the corresponding shared pixels in the current block, measured in pixels. For example, the popularity of the motion vector may be based on the set of previously encoded pixels using the motion vector. The more previously coded pixels use the motion vector, the higher the probability of the motion vector. In one example, the popularity value is the number of previously encoded pixels using the motion vector. In another example, the popularity value is a percentage of the previously encoded pixels, within a range, that use the motion vector.

Aufgrund der Nähe des aktuellen Blocks zu den Pixeln im Referenzblock, ist es in vielen Fällen wahrscheinlich, dass der aktuelle Block ähnliche Bewegungseigenschaften wie diese Pixel hat. Daher kann ein Bewegungsvektorkandidat, der in einem Referenzblock in der Nähe des aktuellen Blocks verwendet wird, dem aktuellen Bewegungsvektor des aktuellen Blocks sehr ähnlich sein. Zusätzlich kann ein Bewegungsvektorkandidat, der von den meisten Pixeln in einem Referenzblock in der Nähe des aktuellen Blocks verwendet wird, dem aktuellen Bewegungsvektor des aktuellen Blocks ähnlich sein. Aus diesem Grund kann der Bewegungsvektor des Bewegungsvektorkandidaten mit der größten Beliebtheit, der in einem in der Nähe befindlichen Referenzblock verwendet wird, ausgewählt werden als Referenz-Bewegungsvektor für den aktuellen Bewegungsvektor des aktuellen Blocks. Um den aktuellen Bewegungsvektor durch Kodierung des kleinen Unterschiedes in den Bewegungsvektoren zu kodieren, können weniger Bits verwendet werden, wodurch die Gesamtkodierungseffizienz verbessert wird. Andere Arten, um den gewählten Bewegungsvektor zu verwenden, werden in der Folge abgehandelt.Due to the proximity of the current block to the pixels in the reference block, in many cases it is likely that the current block has similar motion characteristics as these pixels. Therefore, a motion vector candidate used in a reference block near the current block may be very similar to the current motion vector of the current block. In addition, a motion vector candidate used by most pixels in a reference block near the current block may be similar to the current motion vector of the current block. For this reason, the motion vector of the most popular motion vector candidate used in a nearby reference block can be selected as the reference motion vector for the current motion vector of the current block. To encode the current motion vector by encoding the small difference in the motion vectors, fewer bits may be used, thereby improving overall encoding efficiency. Other ways to use the chosen motion vector are discussed below.

Die Bewegungsvektorkandidaten können auf räumlich-zeitlich benachbarte Bewegungsvektoren begrenzt werden. Das heißt, der Pool an Bewegungsvektorkandidaten kann von Bereichen, die den Bereichen des aktuellen Blocks benachbart sind, ausgewählt werden. In einigen Videokodierungsschemata, vor allem bei jenen, wo die Videobilder außerhalb der Reihenfolge kodiert sind, ist es wünschenswert, dass der Pool an Bewegungsvektorkandidaten Bewegungsinformationen von Videobildern in der fernen Vergangenheit oder Zukunft beinhaltet. Das Kodieren von Videobildern außerhalb der Reihenfolge kann zum Beispiel bei der Kodierung von sogenannten „alternativen Referenzbildern”, die zu den unmittelbar vor oder nach ihnen kodierten Bildern nicht zeitlich benachbart sind, erfolgen. Ein alternatives Referenzbild kann ein synthetisiertes Bild sein, das nicht im Eingangs-Videostream vorkommt, oder es ist ein doppeltes Bild eines Bildes im Eingangs-Videostream, das für die Vorhersage verwendet und im Allgemeinen nach dem Dekodieren nicht angezeigt wird. Solch ein Bild kann einem Videobild in der nicht angrenzenden Zukunft ähneln. Ein anderes Beispiel, bei dem außerhalb der Reihenfolge kodiert wird, ist bei der Verwendung eines sogenannten „goldenen Referenzbildes,” eines rekonstruierten Videobildes, das einem aktuellen Videobild benachbart sein kann und im Speicher für die Verwendung als Referenzbild gespeichert ist, bis es ersetzt wird, z. B. durch ein neues goldenes Referenzbild.The motion vector candidates can be limited to spatially-temporally adjacent motion vectors. That is, the pool of motion vector candidates may be of areas adjacent to the areas of the current block, to be selected. In some video coding schemes, especially those where the video images are encoded out of order, it is desirable for the pool of motion vector candidates to include motion information of video images in the distant past or future. The encoding of video images out of order may, for example, occur in the encoding of so-called "alternative reference images" which are not temporally adjacent to the images directly encoded immediately before or after them. An alternative reference image may be a synthesized image that does not appear in the input video stream, or it is a duplicate image of an image in the input video stream that is used for the prediction and is generally not displayed after decoding. Such an image may resemble a video image in the non-contiguous future. Another example, encoding out-of-order, using a so-called "golden reference image," is a reconstructed video image that may be adjacent to a current video image and stored in memory for use as a reference image until replaced, z. B. by a new golden reference picture.

Hierin können alternative Referenzbilder und goldene Referenzbilder (auch als alternative Bilder und golden Bilder bezeichnet) zusätzlich zu benachbarten Videobildern verwendet werden, um Bewegungsvektorkandidaten für einen Block eines Bildes von Videodaten abzuleiten. Nach der ersten Beschreibung einer Umgebung, in der die Offenbarung implementiert werden kann, sind herein andere Details beschrieben.Herein, alternative reference images and golden reference images (also referred to as alternate images and golden images) may be used in addition to adjacent video images to derive motion vector candidates for a block of an image of video data. After the first description of an environment in which the disclosure may be implemented, other details are described herein.

1 zeigt eine Prinzipskizze eines Videokodierungs- und Dekodierungssystems 100. Eine Sendestation 102 kann z. B. ein Computer sein, dessen Hardware der Beschreibung in 2 entspricht. Allerdings sind auch andere Implementierungen der Sendestation 102 möglich. So kann die Arbeit der Sendestation 102 auf mehrere Geräte verteilt sein. 1 shows a schematic diagram of a video encoding and decoding system 100 , A broadcasting station 102 can z. As a computer, the hardware of the description in 2 equivalent. However, other implementations of the transmitting station are also 102 possible. This is how the work of the transmitting station can do 102 be distributed over several devices.

Über ein Netz 104 können die Sendestation 102 und eine Empfangsstation 106 bei der Kodierung/Dekodierung des Videostreams miteinander verbunden sein. Genauer gesagt wird der Videostream in der Sendestation 102 kodiert und der kodierte Videostream kann in der Empfangsstation 106 dekodiert werden. Das Netz 104 kann zum Beispiel das Internet sein. Das Netz 104 kann auch ein lokales Netz (LAN), ein Weitverkehrsnetz (WAN), ein virtuelles privates Netz (VPN), ein Mobilfunknetzwerk oder ein anderes Medium zur Übertragung des Videostreams von der Sendestation 102 zur Empfangsstation 106 sein.About a network 104 can the broadcasting station 102 and a receiving station 106 be linked together during the encoding / decoding of the video stream. More specifically, the video stream is in the broadcast station 102 encoded and the encoded video stream can be in the receiving station 106 be decoded. The network 104 can be for example the internet. The network 104 Also, a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), a mobile network, or other medium may be used to transmit the video stream from the broadcast station 102 to the receiving station 106 be.

Die Empfangsstation 106 in einem Beispiel kann ein Computer sein, der eine interne Hardware-Konfiguration besitzt, entsprechend der Beschreibung in 2. Allerdings sind auch andere Implementierungen der Empfangsstation 106 möglich. So kann die Arbeit der Empfangsstation 106 auf mehrere Geräte verteilt sein.The receiving station 106 in one example, a computer having an internal hardware configuration as described in FIG 2 , However, other implementations of the receiving station are also 106 possible. So can the work of the receiving station 106 be distributed over several devices.

Auch andere Implementierungen des Kodierungs-/Dekodierungssystems 100 sind möglich. Z. B. kann eine Implementierung auf das Netz 104 verzichten. In einer anderen Implementierung kann ein Videostream kodiert und für die spätere Übertragung an die Empfangsstation 106, oder ein anderes, mit Speicher ausgestattetes Gerät gespeichert werden. In einer Implementierung erhält die Empfangsstation 106 den kodierten Videostream (z. B. über das Netz 104, einen Datenbus und/oder irgendeinen Kommunikationsweg) und speichert ihn für die spätere Dekodierung. In einer exemplarischen Implementierung wird ein Echtzeit-Transportprotokoll (RTP) für die Übertragung des kodierten Videos über das Netz 104 verwendet. In einer weiteren Ausführung kann ein anderes Transportprotokoll als RTP verwendet werden, z. B. ein Hypertext Transfer Protocol(HTTP)-basiertes Protokoll für das Streamen von Videos.Other implementations of the encoding / decoding system 100 are possible. For example, an implementation on the network 104 without. In another implementation, a video stream may be encoded and for later transmission to the receiving station 106 , or any other device equipped with memory. In one implementation, the receiving station receives 106 the encoded video stream (eg over the network 104 , a data bus and / or any communication path) and stores it for later decoding. In an exemplary implementation, a real-time transport protocol (RTP) is provided for transmission of the encoded video over the network 104 used. In another embodiment, another transport protocol may be used as RTP, e.g. For example, a Hypertext Transfer Protocol (HTTP) -based protocol for streaming video.

Wenn die Übertragungsstation 102 und/oder die Empfangsstation 106 zum Beispiel in einem Videokonferenzdienst verwendet werden, können beide die Möglichkeit, einen Videostream wie nachstehend beschrieben zu kodieren und zu dekodieren, enthalten. So könnte beispielsweise die Empfangsstation 106 ein Videokonferenzteilnehmer sein, der einen kodierten Videobitstream von einem Videokonferenzserver (z. B. der Sendestation 102) empfängt, um ihn zu dekodieren und anzusehen, und weiterhin seinen eigenen Videobitstream kodiert und an den Videokonferenzserver für die Dekodierung und zur Ansicht durch andere Teilnehmer übermittelt.If the transfer station 102 and / or the receiving station 106 For example, in a video conferencing service, both may include the ability to encode and decode a video stream as described below. For example, the receiving station 106 a videoconference participant who transmits a coded video bitstream from a videoconferencing server (eg, the broadcast station 102 ) to decode and view it, and further encodes its own video bitstream and transmits it to the videoconferencing server for decoding and viewing by other subscribers.

2 ist ein Blockdiagramm eines Beispiels eines Computergeräts 200, mit dessen Hilfe eine Sende- oder Empfangsstation umgesetzt werden kann. Das Computergerät 200 kann z. B. die Sendestation 102 und/oder die Empfangsstation 106 aus 1 implementieren. Das Computergerät 200 kann die Form eines Computersystems mit mehreren Computergeräten oder die Form eines einzelnen Computergerätes, z. B., eines mobilen Telefons, eines Tablet-Computers, eines Laptop-Computers, eines Notebook-Computers, eines Desktop-Computers und dergleichen annehmen. 2 Fig. 10 is a block diagram of an example of a computing device 200 , with the help of a transmitting or receiving station can be implemented. The computer device 200 can z. B. the transmitting station 102 and / or the receiving station 106 out 1 to implement. The computer device 200 may take the form of a computer system with multiple computing devices or the form of a single computing device, e.g. B., a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer and the like.

Eine CPU 202 im Computergerät 200 kann eine zentrale Prozessoreinheit sein. Alternativ kann CPU 202 jede andere Art von Gerät oder mehreren Geräten sein, die zum Manipulieren oder Verarbeiten von Informationen in der Lage sind, die aktuell existieren oder nachfolgend entwickelt werden. Obwohl die offenbarten Beispiele wie dargestellt, mit einem einzelnen Prozessor, z. B. CPU 202, praktiziert werden können, sind Vorteile bei Geschwindigkeit und Effizienz erreichbar, wenn mehr als ein Prozessor verwendet wird.A CPU 202 in the computer device 200 may be a central processing unit. Alternatively, CPU 202 any other type of device or devices that are capable of manipulating or processing information that currently exists or is subsequently developed. Although the disclosed examples are illustrated with a single processor, e.g. Eg CPU 202 to be practiced Speed and efficiency advantages can be achieved if more than one processor is used.

In einer Ausführung kann der Speicher 204 im Computergerät 200 ein Festwertspeicher (ROM) oder ein Arbeitsspeicher (RAM) sein. Jede andere Art von Speichergerät kann auch als Speicher 204 verwendet werden. Speicher 204 kann Code und Daten 206 beinhalten, auf die der Zugriff unter Verwendung eines Busses 212 durch die CPU 202 erfolgen kann. Der Speicher 204 kann ferner ein Betriebssystem 208 und Anwendungsprogramme 210 umfassen, unter den Anwendungsprogrammen 210 muss mindestens ein Programm sein, mit dem die CPU 202 die hier beschriebenen Verfahren ausführen kann. Zum Beispiel können zu den Anwendungsprogrammen 210 die Anwendungen 1 bis N gehören, die ihrerseits eine Anwendung zur Videokodierung enthalten, die das hier beschriebene Verfahren anwendet. Das Computergerät 200 kann auch einen zusätzlichen Speicher in Form eines sekundären Speichers 214 enthalten, der z. B. eine Speicherkarte sein kann, die in einem Mobilgerät verwendet wird. Weil die Videokommunikationssitzungen eine erhebliche Menge an Information enthalten können, können Sie ganz oder zum Teil im sekundären Speicher 214 gespeichert werden und wenn sie für die Verarbeitung gebraucht werden, in den Speicher 204 geladen werden.In one embodiment, the memory may be 204 in the computer device 200 a read-only memory (ROM) or a random access memory (RAM). Any other type of storage device can also be used as a memory 204 be used. Storage 204 can code and data 206 to access by using a bus 212 through the CPU 202 can be done. The memory 204 can also be an operating system 208 and application programs 210 include, among the application programs 210 must be at least one program with which the CPU 202 can perform the methods described here. For example, to the application programs 210 Applications 1 through N, which in turn contain a video encoding application employing the method described herein. The computer device 200 can also have additional memory in the form of a secondary memory 214 included, the z. B. may be a memory card used in a mobile device. Because the video communication sessions can contain a significant amount of information, you can use all or part of the secondary memory 214 stored and, if needed for processing, into memory 204 getting charged.

Das Computergerät 200 kann auch ein oder mehrere Ausgabegerät(e) haben, z. B. die Anzeige 218. Bei der Anzeige 218 kann es sich in einem Beispiel um eine berührungsempfindliche Anzeige handeln, die eine Anzeige mit einem berührungsempfindlichen Element kombiniert, das durch Berührungseingaben betätigt wird. Die Anzeige 218 kann über den Bus 212 mit der CPU 202 verbunden werden. Andere Ausgabemechanismen, die es einem Benutzer ermöglichen, das Computergerät 200 zu programmieren oder ansonsten zu benutzen, können zusätzlich zu oder als Alternative zur Anzeige 218 bereitgestellt werden. Falls die Ausgabevorrichtung eine Anzeige aufweist oder enthält, kann sie auf verschiedene Arten umgesetzt werden, u. a. auch durch eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT) oder eine Leuchtdiodenanzeige (LED), wie z. B. eine organische LED-Anzeige (OLED).The computer device 200 may also have one or more output device (s), eg. As the display 218 , At the display 218 For example, in one example, it may be a touch-sensitive display that combines a display with a touch-sensitive element that is actuated by touch inputs. The ad 218 can over the bus 212 with the CPU 202 get connected. Other output mechanisms that allow a user, the computing device 200 to program or otherwise use, in addition to or as an alternative to the display 218 to be provided. If the dispenser has or contains a display, it can be implemented in a variety of ways, including by a liquid crystal display (LCD), a cathode ray tube (CRT), or a light emitting diode (LED) display such as a digital display. B. an organic LED display (OLED).

Das Computergerät 200 kann auch eine Bildaufnahmevorrichtung 220 haben, oder in Verbindung dazu stehen, z. B. eine Kamera oder ein anderes existierendes oder noch zu entwickelndes Bilderfassungsgerät 220, das ein Bild erfassen kann, z. B. das Bild eines Benutzers bei der Bedienung des Computergeräts 200. Das Bilderfassungsgerät 220 kann so positioniert sein, dass es zum Benutzer, der das Computergerät 200 bedient, gerichtet ist. In einem Beispiel können die Position und die optische Achse des Bildsensorgerätes 220 so konfiguriert werden, dass das Blickfeld einen Bereich einschließt, der sich direkt neben der Anzeige 218 befindet und von dem aus die Anzeige 218 zu sehen ist.The computer device 200 may also be an image capture device 220 have, or in connection with, z. As a camera or other existing or still to be developed image acquisition device 220 that can capture an image, e.g. B. the image of a user in the operation of the computer device 200 , The image capture device 220 can be positioned to be the user of the computing device 200 operated, directed. In one example, the position and optical axis of the image sensor device 220 be configured so that the field of view encloses an area that is directly next to the display 218 is located and from which the display 218 you can see.

Das Computergerät 200 kann auch eine Tonaufnahmevorrichtung 222 haben, oder in Verbindung dazu stehen, wie z. B. ein Mikrofon oder eine andere existierende oder noch zu entwickelnde Vorrichtung für Tonaufnahmen, die Töne in der Nähe des Computergeräts 200 aufnehmen kann. Die Tonaufnahmevorrichtung 222 kann so positioniert werden, dass es auf den Benutzer gerichtet ist, der das Computergerät 200 betreibt und es kann so konfiguriert werden, dass es Töne empfängt, z. B. Sprache oder andere Äußerungen, die der Benutzer während der Betätigung des Computergerätes 200 verlauten lässt.The computer device 200 can also be a sound recording device 222 have, or are in connection with, such. As a microphone or other existing or yet to be developed device for sound recordings, the sounds in the vicinity of the computer device 200 can record. The sound recording device 222 can be positioned so that it is directed to the user who is the computing device 200 and it can be configured to receive sounds, e.g. As speech or other utterances, the user during the operation of the computer device 200 announced.

Obwohl 2 die CPU 202 und den Speicher 204 des Computergeräts 200 als in einer kompakten Einheit integriert dargestellt, können auch andere Konfigurationen verwendet werden. Die Operationen der CPU 202 können auf mehrere Geräte verteilt werden (dabei hat jedes Gerät einen oder mehrere Prozessor(en)), die direkt oder über ein lokales oder sonstiges Netzwerk miteinander verbunden sein können. Der Speicher 204 kann über mehrere Computer, wie z. B. als netzwerkbasierter Speicher oder Speicher in mehreren Computern, die die Vorgänge des Computergeräts 200 ausführen, verteilt sein. Obwohl hier als ein einzelner Bus dargestellt, kann Bus 212 des Computergeräts 200 aus mehreren Bussen zusammengesetzt sein. Weiterhin kann der sekundäre Speicher 214 direkt mit den anderen Komponenten des Computergeräts 200 verbunden werden, oder es kann darauf über ein Netzwerk zugegriffen werden, und er kann eine einzelne integrierte Einheit, wie z. B. eine Speicherkarte oder mehrere Einheiten, wie z. B. mehrere Speicherkarten umfassen. Das Computergerät 200 kann daher in einer großen Vielfalt von Konfigurationen implementiert werden.Even though 2 the CPU 202 and the memory 204 of the computer device 200 As shown integrated into a compact unit, other configurations may be used. The operations of the CPU 202 can be distributed to multiple devices (each device has one or more processors) that can be connected directly or through a local or other network. The memory 204 can be used over several computers, such as B. as network-based storage or storage in multiple computers, the operations of the computing device 200 execute, be distributed. Although shown here as a single bus, bus can 212 of the computer device 200 be composed of several buses. Furthermore, the secondary memory 214 directly with the other components of the computing device 200 can be accessed or accessed over a network, and can be a single integrated unit such as As a memory card or multiple units, such. B. include multiple memory cards. The computer device 200 Therefore, it can be implemented in a wide variety of configurations.

3 ist ein Diagramm mit einem Beispiel für einen Videostream 300, der kodiert und danach dekodiert werden soll. Der Videostream 300 beinhaltet eine Videosequenz 302. Auf der nächsten Stufe schließt die Videosequenz 302 eine Reihe von angrenzenden Bildern 304 ein. Während drei Einzelbilder als benachbarte Einzelbilder 304 dargestellt sind, kann die Videosequenz 302 eine beliebige Anzahl benachbarter Bilder 304 einschließen. Die angrenzenden Bilder 304 können weiter in einzelne Bilder unterteilt werden, z. B. ein Einzelbild 306. Auf der nächsten Stufe kann das Bild 306 in eine Reihe von Ebenen oder Segmenten 308 aufgeteilt werden. Die Segmente (oder Ebenen) 308 können Untergruppen von Frames sein, die z. B. eine Parallelverarbeitung ermöglichen. Die Segmente 308 können auch Untergruppen von Frames sein, die die Videodaten in unterschiedliche Farben aufteilen können. So kann beispielsweise der Frame 306 mit Farbvideodaten eine Helligkeitsebene und zwei Chrominanzebenen beinhalten. Die Segmente 308 können mit unterschiedlichen Auflösungen ausprobiert werden. 3 is a diagram with an example of a video stream 300 which is to be encoded and then decoded. The video stream 300 includes a video sequence 302 , At the next stage closes the video sequence 302 a series of adjacent pictures 304 one. While three frames as adjacent frames 304 are shown, the video sequence 302 any number of adjacent images 304 lock in. The adjacent pictures 304 can be further divided into individual images, z. B. a single image 306 , On the next level can the picture 306 into a number of levels or segments 308 be split. The segments (or levels) 308 may be subgroups of frames, e.g. B. allow parallel processing. The segments 308 can also be subgroups of frames that can split the video data into different colors. So can for example, the frame 306 with color video data, one brightness level and two chrominance levels. The segments 308 can be tried with different resolutions.

Unabhängig davon, ob das Bild 306 in Segmente 308 unterteilt ist oder nicht, kann das Bild 306 des Weiteren in Blöcke 310 unterteilt werden, die Daten enthalten können, die zum Beispiel, 16×16 Pixel in Bild 306 entsprechen. Die Blöcke 310 können auch so geordnet werden, dass sie Daten von einer oder mehreren Ebenen von Pixeldaten enthalten. Die Blöcke 310 können auch jede andere geeignete Größe haben, wie 4×4 Pixel, 8×8 Pixel, 16×8 Pixel, 8×16 Pixel, 16×16 Pixel oder größer. Falls nicht anders vermerkt, werden die Bezeichnungen Block und Makroblock hierin austauschbar genutzt.Regardless of whether the picture 306 in segments 308 is divided or not, the picture can be 306 further into blocks 310 which may contain data, for example, 16 × 16 pixels in image 306 correspond. The blocks 310 can also be ordered to contain data from one or more levels of pixel data. The blocks 310 may also be any other suitable size, such as 4 × 4 pixels, 8 × 8 pixels, 16 × 8 pixels, 8 × 16 pixels, 16 × 16 pixels or larger. Unless otherwise noted, the terms block and macroblock are used interchangeably herein.

4 ist ein Blockdiagramm eines Kodierers 400 gemäß einer Implementierung. Wie zuvor beschrieben, kann der Kodierer 400 in der Sendestation 102 umgesetzt werden, beispielsweise durch die Bereitstellung eines im Speicher 204 abgelegten Rechnerprogramms. Das Computerprogramm kann Maschinenbefehle enthalten, die bei Ausführung durch einen Prozessor, wie die CPU 202, die Sendestation 102 dazu veranlassen, Videodaten zu kodieren, wie in 4 und 6, unten gezeigt ist. Der Kodierer 400 kann auch in Form von spezialisierter Hardware umgesetzt werden, die beispielsweise Bestandteil der Sendestation 102 sein kann. Der Kodierer 400 erfüllt die verschiedenen Funktionen auf verschiedenen Stufen in einer Vorwärtsbewegung (anhand der durchgehenden Linien dargestellt) um aus der Eingabe des Videostreams 300 einen kodierten oder komprimierten Bitstream 420 zu produzieren: die Stufe der Inter-/Intra-Vorhersage 402, eine Umwandlungsstufe 404, eine Quantisierungsstufe 406 und eine Kodierungsstudie 408. Der Kodierer 400 kann einen Rekonstruktionspfad enthalten (durch gestrichelte Linien dargestellt), um ein Bild für die Kodierung von nachfolgenden Blöcken zu rekonstruieren. In 4 erfüllt der Kodierer 400 die verschiedenen Funktionen des Rekonstruktionspfades in folgenden Stufen: eine Dequantisierungsstufe 410, eine Stufe der inversen Transformation 412, eine Rekonstruktionsstufe 414 und eine Loop-Filter-Stufe 416. Andere strukturelle Abwandlungen des Kodierers 400 können ebenfalls für die Kodierung des Videostreams 300 zum Einsatz kommen. 4 is a block diagram of an encoder 400 according to an implementation. As previously described, the encoder 400 in the transmitting station 102 be implemented, for example, by providing one in memory 204 stored computer program. The computer program may include machine instructions that, when executed by a processor, such as the CPU 202 , the broadcasting station 102 to code video data, as in 4 and 6 shown below. The encoder 400 can also be implemented in the form of specialized hardware, for example, part of the transmitting station 102 can be. The encoder 400 Performs the various functions at different stages in a forward motion (shown by the solid lines) to from the input of the video stream 300 a coded or compressed bitstream 420 to produce: the level of inter / intra prediction 402 , a conversion stage 404 , a quantization level 406 and a coding study 408 , The encoder 400 may include a reconstruction path (represented by dashed lines) to reconstruct an image for encoding subsequent blocks. In 4 fulfilled the encoder 400 the various functions of the reconstruction path in the following stages: a dequantization stage 410 , a stage of inverse transformation 412 , a reconstruction level 414 and a loop filter stage 416 , Other structural variations of the encoder 400 can also be used for encoding the video stream 300 be used.

Wenn der Videostream 300 für die Kodierung bereitgestellt wird, kann jedes Bild 306 in Einheiten von Blöcken verarbeitet werden. Bei der Intra/Inter-Vorhersagestufe 402, kann jeder Block unter Verwendung der Intra-Bild-Vorhersage (auch genannt Intra-Vorhersage) oder Inter-Bild-Vorhersage (auch genannt Inter-Vorhersage) oder durch eine Kombination aus beidem kodiert werden. In jedem Fall kann ein Vorhersageblock geformt werden. Im Fall der Intra-Vorhersage kann ein Teil oder der gesamte Vorhersageblock aus zuvor kodierten und rekonstruierten Abtastwerten des aktuellen Bildes geformt werden. Im Fall der Inter-Vorhersage kann ein Teil oder der gesamte Vorhersageblock aus Abtastwerten in einer oder mehreren zuvor konstruierten Referenzbildfolgen, die unter Verwendung von Bewegungsvektoren bestimmt werden, geformt werden.When the video stream 300 provided for coding, any image can 306 be processed in units of blocks. At the intra / inter-prediction level 402 , each block may be encoded using intra-image prediction (also called intra-prediction) or inter-image prediction (also called inter-prediction) or a combination of both. In any case, a predictive block can be formed. In the case of intra prediction, a part or the entire prediction block may be formed from previously coded and reconstructed samples of the current image. In the case of inter-prediction, a part or the entire prediction block may be formed from samples in one or more previously constructed reference image sequences determined using motion vectors.

Danach, weiterhin mit Bezug auf 4 kann der Vorhersageblock vom aktuellen Block auf der Stufe der Intra-/Inter-Vorhersage 402 subtrahiert werden, um einen Restblock zu erzeugen (auch Restbestand genannt). In der Umwandlungsstufe 404 wird der Restbestand in einen Block von Umwandlungs-Koeffizienten transformiert, beispielsweise im Frequenzbereich, der blockbasierte Transformationen verwendet. Solche blockbasierte Transformationen beinhalten, zum Beispiel, die diskrete Kosinustransformation (DCT) und die asymmetrische diskrete Sinustransformation (ADST). Andere blockbasierte Transformationen sind möglich. Außerdem können Kombinationen von unterschiedlichen Transformationen auf einen einzelnen Restblock angewandt werden. In einem Beispiel der Anwendung einer Transformation wandelt das DCT den Restblock in die Frequenzdomain um, in der die Transformation-Koeffizientenwerte auf räumlicher Frequenz basieren. Der Koeffizient mit der niedrigsten Frequenz (DC) oben links auf der Matrix und der Koeffizient mit der höchsten Frequenz unten rechts auf der Matrix. Es sollte anerkannt werden, dass die Größe eines Vorhersageblocks und folglich des sich daraus ergebenden Restblocks sich von der Größe des Transformationsblocks unterscheiden kann. So kann beispielsweise der Vorhersageblock in kleinere Blöcke aufgespalten werden, auf die unterschiedliche Transformationen angewandt werden.After that, continue with reference to 4 The prediction block can be from the current block at the intra / inter prediction level 402 be subtracted to create a residual block (also called remnant stock). In the conversion stage 404 the remainder is transformed into a block of conversion coefficients, for example in the frequency domain using block-based transforms. Such block-based transformations include, for example, discrete cosine transform (DCT) and asymmetric discrete sine transform (ADST). Other block-based transformations are possible. In addition, combinations of different transformations can be applied to a single residual block. In one example of the application of a transform, the DCT converts the remainder block into the frequency domain in which the transform coefficient values are based on spatial frequency. The coefficient with the lowest frequency (DC) in the upper left of the matrix and the coefficient with the highest frequency in the lower right of the matrix. It should be appreciated that the size of a prediction block, and hence the resulting residual block, may differ from the size of the transformation block. For example, the prediction block can be split into smaller blocks, to which different transformations are applied.

Die Quantisierungsstufe 406 wandelt die Transformationskoeffizienten in diskrete Quantenwerte um, die als quantisierte Transformationskoeffizienten, die einen Quantisierungswert oder Quantisierungspegel verwenden, bezeichnet werden. Die Transformationskoeffizienten können zum Beispiel nach dem Quantisierungswert aufgeteilt und verkürzt werden. Die quantisierten Umwandlungs-Koeffizienten werden dann in der Kodierungsstufe 408 entropiekodiert. Die Entropiekodierung kann mit einer Reihe von Techniken, einschließlich Token und Binärbäumen durchgeführt werden. Die entropiecodierten Koeffizienten und anderen Informationen, die zum Dekodieren des Blocks verwendet werden, die die Art der verwendeten Vorhersage, Umwandlungsform, Bewegungsvektoren und Quantisierungswerte beinhalten können, werden an den komprimierten Bitstream 420 ausgegeben. Die Informationen, die benötigt werden, um den Block zu dekodieren, können innerhalb des komprimierten Bitstreams 420 in Block-, Bild-, Scheiben- und/oder Abschnittheader entropiekodiert werden. Der komprimierte Bitstream 420 kann auch als kodierter Videostream oder kodierter Video-Bitstream bezeichnet werden, und die Bezeichnungen werden hierein austauschbar benutzt.The quantization level 406 converts the transform coefficients into discrete quantum values, which are referred to as quantized transform coefficients using a quantization value or quantization level. The transform coefficients may be divided and shortened according to the quantization value, for example. The quantized conversion coefficients are then in the coding stage 408 entropy. The entropy coding can be performed by a variety of techniques, including tokens and binary trees. The entropy coded coefficients and other information used to decode the block, which may include the type of prediction used, conversion form, motion vectors, and quantization values, are applied to the compressed bitstream 420 output. The information needed to decode the block may be within the compressed bitstream 420 in block, image, slice and / or section headers be entropy-coded. The compressed bitstream 420 may also be referred to as a coded video stream or encoded video bitstream, and the terms are used interchangeably herein.

Der Rekonstruktionspfad in 4 (durch punktierte Linien dargestellt) kann verwendet werden, um den Kodierer 400 und den Dekodierer 500 (nachfolgend beschrieben) bei der Dekodierung des komprimierten Bitstreams 420 mit den gleichen Referenzbildern zu versorgen. Der Rekonstruktionspfad kann Funktionen ausführen, die denen im nachstehend erläuterten Dekodierungsprozess gleichen, darunter die Dequantisierung der quantisierten Umwandlungs-Koeffizienten in der Dequantisierungsstufe 410 zur Schaffung von dequantisierten Umwandlungs-Koeffizienten und deren anschließende inverse Transformation in der Stufe der inversen Transformation 412 zur Schaffung eines derivativen Restblocks (d. h. eines derivativen Restbestands). In der Rekonstruktionsstufe 414 kann der Vorhersageblock, der in der Stufe der Intra-/Inter-Vorhersage 402 vorhergesagt wurde, zum abgeleiteten Restblock hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Die Schleifenfilterstufe 416 kann auf den rekonstruierten Block angewendet werden, um Verzerrungen, wie zum Beispiel blockierende Artefakte, zu reduzieren.The reconstruction path in 4 (represented by dotted lines) can be used to encode the encoder 400 and the decoder 500 (described below) in the decoding of the compressed bitstream 420 with the same reference pictures. The reconstruction path may perform functions similar to those in the decoding process discussed below, including dequantization of the quantized conversion coefficients in the dequantization stage 410 for providing dequantized conversion coefficients and their subsequent inverse transformation in the inverse transformation stage 412 to create a derivative residual block (ie a derivative remainder). In the reconstruction stage 414 can be the prediction block, which in the stage of intra / inter prediction 402 was predicted to be added to the derived residual block to produce a reconstructed block. The loop filter stage 416 can be applied to the reconstructed block to reduce distortions such as blocking artifacts.

Andere Variationen des Kodierers 400 können verwendet werden, um den komprimierten Bitstream 420 zu kodieren. So kann beispielsweise ein nicht-transformbasierter Kodierer 400 das Restsignal direkt ohne die Transformationsstufe 404 für bestimmte Blocks oder Rahmen quantisieren. In einer anderen Implementierung kann ein Kodierer 400 die Quantisierungsstufe 406 und die Dequantisierungsstufe 410 in einer einzelnen Stufe kombiniert haben.Other variations of the encoder 400 can be used to get the compressed bitstream 420 to code. For example, a non-transform based encoder 400 the residual signal directly without the transformation stage 404 quantize for specific blocks or frames. In another implementation, a coder 400 the quantization level 406 and the dequantization stage 410 combined in a single stage.

5 ist ein Blockdiagramm eines Dekodierers 500 gemäß einer Implementierung. Der Dekodierer 500 kann Bestandteil der Sendestation 106 sein, beispielsweise durch die Bereitstellung eines im Speicher 204 abgelegten Computerprogramms. Das Computerprogramm kann Maschinenbefehle enthalten, die bei Ausführung durch einen Prozessor, wie die CPU 202, die Empfangsstation 106 dazu veranlassen, Videodaten zu dekodieren, wie in 5 und 8 unten gezeigt ist. Der Decoder 500 kann auch in Hardware implementiert werden, die z. B. in der Sendestation 102 oder in der Empfangsstation 106 eingeschlossen ist. 5 is a block diagram of a decoder 500 according to an implementation. The decoder 500 can be part of the transmitting station 106 be, for example, by providing one in memory 204 filed computer program. The computer program may include machine instructions that, when executed by a processor, such as the CPU 202 , the receiving station 106 to decode video data, as in 5 and 8th shown below. The decoder 500 can also be implemented in hardware, the z. B. in the transmitting station 102 or in the receiving station 106 is included.

Der Dekodierer 500 hat, ähnlich wie der Rekonstruktionspfad des zuvor beschriebenen Kodierers 400, in einem Beispiel die folgenden Stufen zur Ausführung der verschiedenen Funktionen bei der Erzeugung eines Ausgangsvideostreams 516 aus dem komprimierten Bitstream 420: eine Stufe der Entropiedekodierung 502, eine Dequantisierungsstufe 504, eine Stufe der inversen Transformation 506, eine Intra-/Inter-Vorhersagestufe 508, eine Rekonstruktionsstufe 510, eine Loop-Filter-Stufe 512 und eine Deblocking-Filterstufe 514. Andere strukturelle Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstream 420 zu dekodieren.The decoder 500 has, similar to the reconstruction path of the previously described encoder 400 in an example, the following stages for performing the various functions in generating an output video stream 516 from the compressed bitstream 420 : a level of entropy decoding 502 , a dequantization stage 504 , a stage of inverse transformation 506 , an intra / inter prediction stage 508 , a reconstruction level 510 , a loop filter stage 512 and a deblocking filter stage 514 , Other structural variations of the decoder 500 can be used to get the compressed bitstream 420 to decode.

Wenn der komprimierte Bitstream 420 für die Dekodierung dargestellt wird, können die Datenelemente in dem komprimierten Bitstream 420 durch die Entropiedekodierungsstufe 502 dekodiert werden, um einen Satz quantisierter Transformationskoeffizienten zu produzieren. In der Dequantisierungsstufe 504 werden die quantisierten Umwandlungs-Koeffizienten dequantisiert (z. B. durch Multiplizieren der quantisierten Umwandlungs-Koeffizienten mit dem Quantisierungswert) und in der Stufe der inversen Transformation 506 werden die dequantisierten Umwandlungs-Koeffizienten invers transformiert, um einen derivativen Restbestand zu erzeugen, der identisch mit dem aus der Stufe der inversen Transformation 412 des Dekodierers 400 stammenden Restbestand sein kann. Unter Verwendung von aus dem komprimierten Bitstream 420 dekodierten Headerinformationen kann der Dekodierer 500 in der Intra-/Inter-Vorhersagestufe 508 den gleichen Vorhersageblock erzeugen, wie der Kodierer 400, z. B. in der Intra-/Inter-Vorhersagestufe 402. In der Rekonstruktionsstufe 510 kann der Vorhersageblock zum abgeleiteten Restblock hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Die Schleifenfilterstufe 512 kann auf den rekonstruierten Block angewendet werden, um blockierende Artefakte zu reduzieren. Andere Filterverfahren können auf den rekonstruierten Block angewendet werden. In diesem Beispiel wird die Deblockierungsfiltereinheit 514 auf den rekonstruierten Block angewandt, um die Blockierungsverzerrung zu reduzieren und das Ergebnis wird als Ausgabevideostream 516 ausgegeben. Der Ausgangsvideostream 516 kann auch als dekodierter Videostream bezeichnet werden, und die Bezeichnungen werden hierein austauschbar benutzt.When the compressed bitstream 420 For the decoding, the data elements in the compressed bitstream may 420 through the entropy decoding stage 502 be decoded to produce a set of quantized transform coefficients. In the dequantization stage 504 For example, the quantized conversion coefficients are dequantized (eg, by multiplying the quantized conversion coefficients by the quantization value) and in the inverse transform stage 506 For example, the dequantized conversion coefficients are inversely transformed to produce a derivative residue that is identical to that from the inverse transformation stage 412 of the decoder 400 originating remainders may be. Using from the compressed bitstream 420 decoded header information may be the decoder 500 in the intra / inter prediction stage 508 generate the same prediction block as the encoder 400 , z. In the intra / inter prediction stage 402 , In the reconstruction stage 510 For example, the prediction block may be added to the derived residual block to produce a reconstructed block. The loop filter stage 512 can be applied to the reconstructed block to reduce blocking artifacts. Other filtering techniques can be applied to the reconstructed block. In this example, the deblocking filter unit becomes 514 applied to the reconstructed block to reduce the blocking distortion and the result is output as an output stream 516 output. The output video stream 516 can also be referred to as a decoded video stream, and the terms are used interchangeably herein.

Andere Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstream 420 zu dekodieren. So kann beispielsweise der Dekodierer 500 den Ausgangsvideostream 516 ohne die Deblockierungsfilterstufe 514 erzeugen.Other variations of the decoder 500 can be used to get the compressed bitstream 420 to decode. For example, the decoder 500 the output video stream 516 without the deblocking filter stage 514 produce.

Wie weiter oben erwähnt, kann ein Block durch Bewegungsvektor-Vorhersage des Kodiermodus eines dynamischen Referenz-Bewegungsvektors kodiert oder dekodiert werden. Eine Implementierung für die Verwendung des dynamischen Referenz-Bewegungsvektor Kodiermodus zum Kodieren und Dekodieren wird als Nächstes abgehandelt.As mentioned above, a block may be encoded or decoded by motion vector prediction of the coding mode of a reference dynamic motion vector. An implementation for using the dynamic reference motion vector encoding mode for encoding and decoding will be discussed next.

6 ist ein Flussdiagramm, das einen Prozess 600 zum Kodieren eines Videostreams unter Verwendung von Referenz-Bewegungsvektoren gemäß einer Implementierung dieser Offenbarung zeigt. Prozess 600 kann in einem Kodierer wie zum Beispiel Kodierer 400 implementiert werden und kann zum Beispiel als Softwareprogramm, das von Computergeräten wie zum Beispiel Übertragungsstation 102 oder Empfangsstation 106 ausgeführt wird, implementiert werden. Das Softwareprogramm kann computerlesbare Anweisungen enthalten, die in einem Speicher wie dem Speicher 204 oder 214 gespeichert werden, der bei Ausführung durch einen Prozessor wie durch die CPU 202, das Computergerät zur Ausführung des Prozesses 600 veranlasst. 6 is a flowchart that is a process 600 to encode a video stream using reference motion vectors according to an implementation of this disclosure. process 600 can be in an encoder like coder 400 can be implemented and used, for example, as a software program by computer devices such as a transfer station 102 or receiving station 106 is executed. The software program may contain computer readable instructions stored in a memory such as memory 204 or 214 stored when executed by a processor as by the CPU 202 , the computing device to execute the process 600 causes.

Der Prozess 600 kann unter Verwendung spezieller Hardware oder Firmware implementiert werden. Einige Computergeräte können mehrere Speicher, mehrere Prozessoren, oder beides haben. Die Schritte oder Tätigkeiten des Prozesses 600 können auf unterschiedliche Prozessoren, Speicher oder beides aufgeteilt werden. Die Verwendung der Begriffe „Prozessor” oder „Speicher” im Singular umfasst hier Computergeräte, die einen Prozessor oder einen Speicher haben, sowie Geräte, die mehrere Prozessoren oder Speicher haben, die jeweils jedes bei der Ausführung von einigen, aber nicht notwendigerweise allen aufgeführten Schritten verwendet werden können. Der Einfachheit halber wird der Prozess 600 als eine Reihe von Schritten oder Tätigkeiten dargestellt und beschrieben. Jedoch können die Lehren gemäß dieser Offenbarung in verschiedenen Reihenfolgen und/oder gleichzeitig auftreten. Außerdem können die Schritte gemäß dieser Offenbarung mit anderen Schritten auftreten, die hier nicht dargestellt und beschrieben werden. Darüber hinaus können nicht alle illustrierten Schritte oder Tätigkeiten erforderlich sein, um ein Verfahren in Übereinstimmung mit dem offenbarten Gegenstand zu implementieren.The process 600 can be implemented using special hardware or firmware. Some computing devices may have multiple memories, multiple processors, or both. The steps or activities of the process 600 can be split between different processors, memory or both. The use of the terms "processor" or "memory" in the singular here includes computer devices that have a processor or memory, as well as devices that have multiple processors or memory, each one in the execution of some, but not necessarily all, listed steps can be used. For the sake of simplicity, the process becomes 600 presented and described as a series of steps or activities. However, the teachings of this disclosure may occur in various orders and / or concurrently. Additionally, the steps according to this disclosure may occur with other steps that are not illustrated and described herein. Moreover, not all illustrated steps or actions may be required to implement a method in accordance with the disclosed subject matter.

Der Prozess 600 nimmt an, dass ein Stream mit Videodaten mit mehreren Bildern mit jeweils mehreren Blocks, unter Verwendung eines Videokodierers wie zum Beispiel der Kodierer 400, der auf einem Computergerät wie zum Beispiel der Übertragungsstation 102 arbeitet, ausgeführt wird. Die Videodaten oder der Stream können vom Computergerät in einer Reihe von Weisen, wie zum Beispiel durch Empfangen der Videodaten über ein Netzwerk, über ein Kabel oder durch Lesen der Videodaten von einem Primärspeicher oder einem anderen Speichergerät, einschließlich einer Festplatte oder entfernbaren Medien, wie zum Beispiel eine CompactFlash(CF)-Karte, Secure Digital(SD)-Karte, oder allen anderen Geräten, die in der Lage sind, Videodaten zu kommunizieren, empfangen werden. In einigen Ausführungen können Videodaten von einer Videokamera, die mit dem Computergerät, auf dem der Kodierer läuft, verbunden ist, empfangen werden. Mindestens einige der Blöcke innerhalb der Bilder sind kodiert unter Verwendung von Inter-Vorhersage wie weiter unten detaillierter beschrieben wird.The process 600 Suppose that a stream of video data has multiple images, each with multiple blocks, using a video encoder such as the encoder 400 on a computer device such as the transfer station 102 works, is executed. The video data or stream may be provided by the computing device in a number of ways, such as by receiving the video data over a network, via a cable, or by reading the video data from a primary storage or other storage device, including a hard disk or removable media, such as For example, a CompactFlash (CF) card, Secure Digital (SD) card, or any other device capable of communicating video data. In some embodiments, video data may be received by a video camera connected to the computing device on which the encoder is running. At least some of the blocks within the images are encoded using inter-prediction, as described in more detail below.

Bei 602 identifiziert der Prozess 600 Bewegungsvektorkandidaten von zuvor kodierten Blöcke im Videostream. Der Prozess 600 analysiert die Bewegungsaktivität von zuvor kodierten Blöcken, um eine Liste der gereihten Bewegungsvektorkandidaten unter Verwendung eines effizienten Ranking-Systems für Referenz-Bewegungsvektoren zu erstellen und bietet eine dynamische Bewegungs-Referenziermethode, die die verfügbare Kandidatenliste der Bewegungsvektoren vollständig wiedergibt, wodurch die Anzahl der Referenz-Bewegungsvektor-Modi dynamisch erweitert oder reduziert werden kann und die Effizienz der Entropie-Kodierung verbessert wird. Der Pool der Bewegungsvektorkandidaten kann dynamisch gemäß dem Zustand des benachbarten Referenzblocks, d. h. wie die Liste der Bewegungsvektorkandidaten erstellt ist, erweitert oder reduziert werden. Die zuvor kodierten Blöcke im Videostream können jeden Block, der unter Verwendung von Inter-Vorhersage vor dem aktuellen Block kodiert wurde, beinhalten wie zum Beispiel ein Block eines zuvor kodierten Bildes oder ein Block desselben Bildes wie der aktuelle Block, der vor dem aktuellen Block kodiert wurde. In einigen Kodier-/Dekodier(Codec)-Schemata, wie zum Beispiel jenen, bei denen in Raster-Scan-Reihenfolge kodiert wird, können die zuvor kodierten Blöcke zum Beispiel einen Block darüber, links oder darüber-links vom aktuellen Block in demselben Bild beinhalten. Die zuvor kodierten Blöcke können zum Beispiel auch einen Block vom unmittelbar vorherigen Bild (d. h. vom letzten Bild), einen Block vom goldenen Bild (beschrieben in Intra/Inter-Prädiktionsstufe 402), einen Block von einem beliebigen anderen Referenzbild oder einer beliebigen Kombination davon beinhalten. Wünschenswerterweise werden jedoch die Bewegungsvektorkandidaten von zuvor kodierten Blöcken, die in gewisser Weise dem aktuellen Block entsprechen entnommen, basierend auf der Theorie, dass solche Blöcke, wegen der Nähe ihrer Pixel zum aktuellen Block, wahrscheinlich ähnliche Bewegungseigenschaften haben wie der aktuelle Block.at 602 identifies the process 600 Motion vector candidates from previously encoded blocks in the video stream. The process 600 analyzes the motion activity of previously coded blocks to produce a list of the ranked motion vector candidates using an efficient ranking system for reference motion vectors, and provides a dynamic motion referencing method that fully replicates the available candidate list of motion vectors, thereby reducing the number of reference motion vectors. Motion vector modes can be dynamically expanded or reduced and the efficiency of entropy coding improved. The pool of motion vector candidates may be dynamically expanded or collapsed according to the state of the neighboring reference block, ie how the list of motion vector candidates is created. The previously encoded blocks in the video stream may include any block encoded using inter-prediction before the current block, such as a block of previously encoded picture or a block of the same picture as the current block encoding before the current block has been. For example, in some encoding / decoding (codec) schemes, such as those encoded in raster-scan order, the previously encoded blocks may be one block above, left or above left of the current block in the same picture include. For example, the previously coded blocks may also include a block from the immediately preceding picture (ie, from the last picture), a block from the golden picture (described in Intra / Inter prediction stage 402 ), a block from any other reference image, or any combination thereof. Desirably, however, the motion vector candidates are taken from previously encoded blocks that somewhat correspond to the current block based on the theory that such blocks, because of the proximity of their pixels to the current block, are likely to have similar motion characteristics as the current block.

Blöcke können von einem einzelnen Referenzbild oder von zusammengesetzten, wie zum Beispiel zwei Referenzbildern vorhergesagt werden. Für Blöcke mit einem einzelnen Referenzbild identifiziert der Prozess 600 Bewegungsvektorkandidaten von den nächsten räumlich benachbarten Blöcken, die mit dem Referenzbild verbunden sind. Die Bewegungsvektorkandidaten können die Bewegungsvektor Referenz-Blöcke innerhalb eines Referenz-Abdeckungsbereichs, wie zum Beispiel den/die Bewegungsvektor(en) eines Grenzbereichs (z. B. eines Blocks) über dem aktuellen Block, den/die Bewegungsvektor(en) eines Grenzbereichs (z. B. eines Blocks) links vom aktuellen Block, den Bewegungsvektor von einer Ecke oben rechts des aktuellen Blocks und den/die Bewegungsvektor(en) von einem gemeinsam genutzten Block im vorherigen Bild beinhalten. In bestimmten Implementierungen werden Bewegungsvektoren, die Blöcken unten und rechts vom gemeinsam genutzten Block zugeordnet sind, berücksichtigt.Blocks can be predicted from a single reference image or from composite, such as two reference images. For blocks with a single reference image, the process identifies 600 Motion vector candidates from the next spatially adjacent blocks connected to the reference image. The motion vector candidates may include the motion vector reference blocks within a reference coverage area, such as the motion vector (s) of a boundary area (eg, a block) above the current block, the motion vector (s) of a boundary area (e.g. B. a block) to the left of the current block, the Motion vector from a corner at the top right of the current block and containing the motion vector (s) from a shared block in the previous image. In certain implementations, motion vectors associated with blocks below and to the right of the shared block are taken into account.

Dieser erste Schritt bei der Konstruktion einer Kandidatenliste für Referenz-Bewegungsvektoren wird in Bezugnahme auf 7 beschrieben. Das heißt, 7 ist ein Diagramm einer Sequenz von Bildern, die verwendet werden, um die Identifikation von Bewegungsvektorkandidaten von 602 innerhalb des Prozess 600 von 6 zu erklären. Der aktuelle Block B, der kodiert wird, ist innerhalb des aktuellen Bildes N positioniert. Bild N – 1 ist das vorhergehende Bild, auch zeitlich benachbartes Bild genannt, das ein rekonstruiertes, in einem sogenannten letzten Referenzbildspeicher gespeichertes Bild sein kann, das für das Kodieren von Blöcken des Bildes N verfügbar ist. In diesem Fall ist Block R3 der gemeinsam genutzte Block zum aktuellen Block B und er ist an derselben Pixelposition (normalerweise gemessen vom Pixel links oben) positioniert und hat dieselbe Pixelgröße in der x- und y-Ebene (d. h. dieselben Pixelkoordinaten) innerhalb des Bildes N – 1 wie der aktuelle Block B innerhalb von Bild N. Anders ausgedrückt entspricht der Block R3 räumlich dem aktuellen Block B. In einem Einzelreferenzmodus, d. h. wenn der aktuelle Block B mit Inter-Vorhersage unter Verwendung eines einzelnen Referenzbildes vorhergesagt ist, ist der Puffer der Bewegungsvektorkandidaten mit dem Referenzbild verbunden. Im Hinblick auf den Referenzbildindex kann eine Suche nach Bewegungsvektoren, die mit demselben Referenzbild verbunden sind, durch die in 7 für die Einschließung in die Kandidatenliste dargestellten Referenz-Blöcke erfolgen.This first step in the construction of a candidate list for reference motion vectors will be referred to 7 described. This means, 7 Figure 12 is a diagram of a sequence of images used to identify motion vector candidates 602 within the process 600 from 6 to explain. The current block B being encoded is positioned within the current picture N. Image N-1 is the previous image, also called a temporally adjacent image, which may be a reconstructed image stored in a so-called last reference image memory, which is available for encoding blocks of the image N. In this case, block R3 is the shared block to the current block B and it is positioned at the same pixel position (normally measured from the top left pixel) and has the same pixel size in the x and y plane (ie the same pixel coordinates) within the image N In other words, the block R3 spatially corresponds to the current block B. In a single reference mode, ie, when the current block B is predicted using inter prediction using a single reference picture, the buffer is the Motion vector candidates associated with the reference image. With respect to the reference picture index, a search for motion vectors associated with the same reference picture may be performed by the 7 reference blocks for inclusion in the Candidate List.

Die Blöcke B und R3 haben eine beliebige Blockgröße. Die Blöcke B und R3 können zum Beispiel jeweils 32×32 Pixel umfassen. Wie weiter oben erwähnt, kann jedes Bild für die Kodierung in Blöcke aufgeteilt werden. Diese Blöcke können für Kodierzwecke weiter in kleinere Blöcke unterteilt werden. Aus diesem Grund kann jeder Block oder jeder benachbarte Bereich des aktuellen Blocks B in kleinere Blöcke, die durch unterschiedliche Bewegungsvektoren vorhergesagt werden, aufgeteilt sein. Daher kann die Suche nach Bewegungsvektoren dies durch Feststellen der Bewegungsinformationen für die kleinstmögliche Vorhersageblockgröße innerhalb eines Bildes berücksichtigen. Im dargestellten Beispiel erfolgt die Suche nach Bewegungsvektoren im aktuellen Bild unter Verwendung der Bewegungsinformationen einer Grenzregion der obersten Reihe, auch Block RO genannt, einer Grenzregion der linken Spalte, auch Block R1 genannt, und der Ecke oben rechts, auch Call Block R2. Die Blöcke RO und R1 sind Bereiche, deren Größe (Abmessungen) von der Größe des aktuellen Blocks B abhängt. In einigen Fällen haben die Blöcke RO und R1 dieselbe Größe wie der aktuelle Block B, aber sie können auch halb so groß sein wie der aktuelle Block B oder auf andere Weise von der Größe des aktuellen Blocks B abhängen. In jedem Fall kann jeder Pixel-Unterblock, z. B. der, der die kleinste Vorhersageblockgröße innerhalb der Blöcke R0 und R1 hat, nach Bewegungsvektorkandidaten durchsucht werden. Die kleinste Vorhersageblockgröße kann zum Beispiel 8×8 oder 4×4 betragen. Der Block R2 ist wünschenswerterweise die kleinste Vorhersageblockgröße, um die Suche zu minimieren und weil entferntere Blöcke wahrscheinlich weniger relevante Informationen liefern werden. Wäre der Block R2 die kleinste Vorhersageblockgröße, dann hätte der Block R2 nur einen Bewegungsvektor (oder zwei bei kombinierter Vorhersage). In einer Implementierung kann der Block R2 größer sein.The blocks B and R3 have an arbitrary block size. For example, blocks B and R3 may each comprise 32x32 pixels. As mentioned above, each image can be divided into blocks for encoding. These blocks can be further subdivided into smaller blocks for coding purposes. For this reason, each block or each adjacent portion of the current block B may be divided into smaller blocks that are predicted by different motion vectors. Therefore, the search for motion vectors may consider this by determining the motion information for the smallest possible prediction block size within an image. In the example shown, the search for motion vectors in the current image using the motion information of a border region of the top row, also called block RO, a border region of the left column, also called block R1, and the corner top right, also call block R2. The blocks RO and R1 are areas whose size (dimensions) depends on the size of the current block B. In some cases, the blocks RO and R1 are the same size as the current block B, but they can also be half the size of the current block B or otherwise depend on the size of the current block B. In any case, each pixel sub-block, e.g. For example, the one having the smallest prediction block size within blocks R0 and R1 will be searched for motion vector candidates. The smallest prediction block size may be, for example, 8x8 or 4x4. Block R2 is desirably the smallest predictive block size to minimize the search, and because more remote blocks will likely provide less relevant information. If block R2 were the smallest prediction block size, then block R2 would have only one motion vector (or two in combined prediction). In one implementation, block R2 may be larger.

Die Suche nach Bewegungsvektoren in dem letzten Bild erfolgt unter Verwendung von Bewegungsinformationen des gemeinsam genutzten Blocks R3 und der zusätzlichen Referenz-Blöcke R4, R5, R6 und R7, benachbart zur unteren Reihe (Blöcke R6, R7), der rechten Spalte (R4) oder beider (R5). Das heißt, sie sind alle proximal zu (z. B. in Kontakt mit) einer Ecke des gemeinsam genutzten Blocks. Wie erwähnt hat der gemeinsam genutzte Block R3 dieselbe Größe wie der aktuelle Block. In jedem Unterblock der kleinsten Vorhersageblockgröße innerhalb des gemeinsam genutzten Blocks R3, kann nach Bewegungsvektorkandidaten gescannt oder gesucht werden. Im dargestellten Beispiel haben die zusätzlichen Referenz-Blöcke R4, R5, R6 und R7 jeweils die kleinste Vorhersageblockgröße ungeachtet der Größe des aktuellen Blocks B, aber das ist nicht erforderlich.The search for motion vectors in the last frame is done using motion information of the shared block R3 and the additional reference blocks R4, R5, R6 and R7 adjacent to the bottom row (blocks R6, R7), the right column (R4) or both (R5). That is, they are all proximal to (eg, in contact with) a corner of the shared block. As mentioned, the shared block R3 has the same size as the current block. In each sub-block of the smallest prediction block size within the shared block R3, motion vector candidates may be scanned or searched for. In the illustrated example, the additional reference blocks R4, R5, R6, and R7 each have the smallest prediction block size regardless of the size of the current block B, but that is not required.

Zurükkehrend zu 6 können die Referenz-Bewegungsvektoren, sobald sie bei 602 erhalten wurden, nach der Distanz vom entsprechenden Referenzblock und seiner überlappenden Länge mit dem aktuellen Block bei 604 gereiht werden. Anders ausgedrückt kann der Prozess 600 für jeden Bewegungsvektorkandidaten eine Distanz zwischen dem zuvor kodierten Block, der dem Bewegungsvektorkandidaten zugeordnet ist, und dem aktuellen Block feststellen. Die Bewegungsvektoren von den nächsten Zeilen- und Spaltengrenzen und von der rechten oberen Ecke zum aktuellen Block sind in Kontakt mit dem aktuellen Block und können als relevanter betrachtet werden, daher sind sie höher eingestuft als die weiter entfernten. Die Distanz kann verwendet werden, um die Bewegungsvektoren in Kategorien zu gruppieren. Zum Beispiel, und mit Bezug auf 7 können alle Bewegungsvektoren der Unterblöcke der Referenz-Blöcke R0 und R1 und ein Bewegungsvektor des Referenzblocks R2, falls zutreffend, als Bewegungsvektorkandidaten der Kategorie 1 betrachtet werden, während die restlichen Bewegungsvektorkandidaten der Blöcke R3 bis R7 und aller anderen Unterblöcke der Referenz-Blöcke R0 und R1 als Bewegungsvektorkandidaten der Kategorie 2 gelten. In diesem Fall würden die Bewegungsvektorkandidaten der Kategorie 1 eine höhere Priorität annehmen als die Bewegungsvektorkandidaten der Kategorie 2. Die Distanz kann zusätzlich oder alternativ die Berechnung einer Distanz in gerader Linie zwischen den Zentren des aktuellen Blocks und jedem der Referenz-Blöcke und/oder Unterblöcke der Referenz-Blöcke beinhalten. Die Distanz zwischen dem Referenzblock und dem aktuellen Block kann auf der räumlichen Verschiebung zwischen den Pixeln in dem zuvor kodierten Block und den gemeinsam genutzten Pixeln im aktuellen Block, gemessen in Pixeln basierend. In diesen letzteren Beispielen kann ein gemeinsam genutzter Block höher gereiht sein als Referenz-Blöcke in einem aktuellen Bild (z. B. weil die Differenz/Verschiebung Null ist), selbst wenn Beliebtheitswerte berücksichtigt werden. Andere Wege der Gruppierung und/oder Ranking der Bewegungsvektoren basierend auf der Distanz sind möglich.Returning to 6 can reference the motion vectors as they come in 602 at the distance from the corresponding reference block and its overlapping length with the current block 604 be ranked. In other words, the process can 600 for each motion vector candidate, determine a distance between the previously coded block associated with the motion vector candidate and the current block. The motion vectors from the next row and column boundaries and from the upper right corner to the current block are in contact with the current block and may be considered more relevant, therefore they are ranked higher than the farther away. The distance can be used to group the motion vectors into categories. For example, and with reference to 7 For example, all the motion vectors of the subblocks of the reference blocks R0 and R1 and a motion vector of the reference block R2, if applicable, may be category 1 motion vector candidates while the remaining motion vector candidates of blocks R3 through R7 and all other sub-blocks of reference blocks R0 and R1 are considered category 2 motion vector candidates. In this case, the motion vector candidates of category 1 would take a higher priority than the motion vector candidates of category 2. The distance may additionally or alternatively calculate a distance in a straight line between the centers of the current block and each of the reference blocks and / or sub-blocks of the Include reference blocks. The distance between the reference block and the current block may be based on the spatial displacement between the pixels in the previously coded block and the shared pixels in the current block, measured in pixels. In these latter examples, a shared block may be ranked higher than reference blocks in a current picture (eg, because the difference / offset is zero), even if popularity values are taken into account. Other ways of grouping and / or ranking the motion vectors based on the distance are possible.

Wenn die Bewegungsvektoren nach Kategorie gruppiert sind, können innerhalb jeder Kategorie die Bewegungsvektoren gemäß der Pixelanzahl innerhalb des Suchbereichs (z. B. die zuvor kodierten Pixel von mindestens einigen der Referenz-Blöcke) die jeden Bewegungsvektor verwenden, gereiht werden. Der Prozess 600 kann zum Beispiel einen Beliebtheitswert basierend auf den zuvor kodierten Pixelwerten, die dem bestimmten Bewegungsvektorkandidaten bei 606 zugeordnet sind, feststellen. Je größer die Anzahl an zuvor kodierten Pixelwerten verbunden mit dem Bewegungsvektorkandidaten ist, desto größer ist der Beliebtheitswert des Bewegungsvektorkandidaten. Der Beliebtheitswert kann zum Beispiel eine Pixelanzahl oder ein Prozentwert der Gesamtpixelanzahl innerhalb aller oder einiger der Referenz-Blöcke sein.If the motion vectors are grouped by category, within each category, the motion vectors may be ranked according to the number of pixels within the search range (eg, the previously coded pixels of at least some of the reference blocks) using each motion vector. The process 600 For example, a popularity value may be based on the previously encoded pixel values associated with the particular motion vector candidate 606 are assigned, determine. The greater the number of previously encoded pixel values associated with the motion vector candidate, the greater the popularity value of the motion vector candidate. The popularity value may be, for example, a pixel number or a percentage of the total number of pixels within all or some of the reference blocks.

Dies kann mit Bezug auf das Beispiel von 7 unter der Annahme, dass der aktuelle Block B und der gemeinsam genutzte Block R3, jeweils 32×32 Pixel umfassen, der Referenzblock R0 und der Referenzblock R1 jeweils 32×16 und 16×32 Pixel umfassen und die Referenz-Blöcke R2 und R4–R7 beide 8×8 Pixel umfassen, was auch der kleinsten Vorhersageblockgröße entspricht, beschrieben werden. In diesem Fall könnten bis zu neun Bewegungsvektorkandidaten mit einem Referenzbild verbunden und Kategorie 1 zugeordnet sein, vier für die 8×8-Unterblöcke der Referenz-Blöcke R0 und R1, die dem aktuellen Block B benachbart sind und einer vom 8×8-Referenzblock R2. Es könnte bis zu achtundzwanzig Bewegungsvektoren verbunden mit dem Referenzbild geben, die Kategorie 2 zugeordnet sind, vier für die verbleibenden 8×8-Unterblöcke der Referenz-Blöcke R0 und R1, sechzehn vom gemeinsam genutzten Block R3 und einer von den zusätzlichen vier 8×8-Referenzblöcken R4–R7. In Wirklichkeit werden Bewegungsvektoren oft wiederverwendet. Jedem der einmaligen Bewegungsvektoren innerhalb einer Kategorie von all diesen identifizierten wird ein Beliebtheitswert entsprechend jeder der Gruppen von 8×8 Pixel (das heißt, 64 Pixel) unter Verwendung dieses Bewegungsvektors zugeschrieben. Beim Feststellen, ob ein Bewegungsvektor, der bei 602 identifiziert wurde, einmalig ist, muss der Bewegungsvektor nicht mit einem anderen identisch sein. Bereiche können verwendet werden, um eine Kandidatenliste für Bewegungsvektoren zu liefern, die ausreichend hilfreiche Variationen liefert. Das heißt, ein Bewegungsvektor kann innerhalb einer Kategorie ausgelassen werden, wenn er sich nicht genug von einem Bewegungsvektorkandidaten, der bereits in einer Kategorie vorhanden ist, zum Beispiel um 10% oder eine andere Variable, unterscheidet. In dieser Implementierung werden die Bewegungsvektoren nach Kategorien gereiht und dann innerhalb der Kategorien, aber das ist nicht erforderlich. Die Bewegungsvektorkanditaten können für das Ranking basierend auf dem Beliebtheitswert gruppiert werden.This can be done with reference to the example of 7 Assuming that the current block B and the shared block R3 each comprise 32 × 32 pixels, the reference block R0 and the reference block R1 each comprise 32 × 16 and 16 × 32 pixels and the reference blocks R2 and R4-R7 both 8x8 pixels, which also corresponds to the smallest prediction block size, will be described. In this case, up to nine motion vector candidates could be associated with a reference image and associated with category 1, four for the 8x8 subblocks of the reference blocks R0 and R1 adjacent to the current block B and one from the 8x8 reference block R2 , There could be up to twenty-eight motion vectors associated with the reference image associated with category 2, four for the remaining 8x8 sub-blocks of reference blocks R0 and R1, sixteen of shared block R3, and one of the additional four 8x8 Reference blocks R4-R7. In reality, motion vectors are often reused. Each of the unique motion vectors within a category of all those identified is assigned a popularity value corresponding to each of the 8 × 8 pixels (that is, 64 pixels) using this motion vector. When determining whether a motion vector at 602 is unique, the motion vector need not be identical to another. Areas may be used to provide a motion vector candidate list that provides sufficiently helpful variations. That is, a motion vector may be omitted within a category if it does not differ enough from a motion vector candidate already in a category, for example, 10% or some other variable. In this implementation, the motion vectors are ranked by category and then within the categories, but that is not required. The motion vector candidates can be grouped for ranking based on the popularity score.

Die Kandidatenliste der Referenz-Bewegungsvektoren kann wie beschrieben für jedes einmalige Referenzbild verbunden mit einem zuvor kodierten Block oder Unterblock konstruiert werden. Für jedes der oben beschriebenen Bilder können zum Beispiel drei Referenzbilder – ein letztes Bild, ein alternatives (oder alternativ oder alt) Referenzbild und ein goldenes Referenzbild – verfügbar sein. In diesem Fall können separate Kandidatenlisten für Referenz-Bewegungsvektoren unter Verwendung dieser zuvor kodierten Blöcke oder Unterblöcke, die Bewegungsvektoren besitzen, die auf das letzte Bild, das alternative Referenzbild und das goldene Referenzbild zeigen, erstellt werden. Das letzte Bild wird für jedes Bild aktualisiert und das alternative Referenzbild und das goldene Referenzbild können weniger oft aktualisiert werden.The candidate list of reference motion vectors may be constructed as described for each unique reference picture associated with a previously coded block or sub-block. For example, for each of the images described above, three reference images - a final image, an alternative (or alternative or old) reference image, and a golden reference image - may be available. In this case, separate candidate lists for reference motion vectors may be created using these previously coded blocks or sub-blocks having motion vectors pointing to the last picture, the alternative reference picture, and the golden reference picture. The last image is updated for each image and the alternate reference image and the golden reference image can be refreshed less often.

In einigen Implementierungen wird die Skalierung des Bewegungsvektors durchgeführt, wenn eine Kandidatenliste der Referenz-Bewegungsvektoren erstellt wird. Das Skalieren des Bewegungsvektors kann als Teil der Bestimmung eines Beliebtheitswerts bei 606 erfolgen, oder an anderen Stellen im Prozess 600. Beim Skalieren des Bewegungsvektors wird die Magnitude eines Bewegungsvektors an die zeitlichen Unterschiede zwischen Referenzbildern relativ zum beobachteten Bild innerhalb der Sequenz von Bildern im Videostream angepasst. Zum Beispiel, und mit Bezug auf 7 verwendet der Referenzblock R2 das letzte Bild, nämlich Bild N – 1, für die Inter-Vorhersage, während der Referenzblock R4 das letzte Bild, nämlich das Bild vor Bild N – 1 (oder Bild N – 2, nicht dargestellt), für die Inter-Vorhersage verwendet. Die zeitliche Differenz zwischen dem Bild, in dem jeder Block R2 und R4 positioniert ist (Bild N bzw. Bild N – 1) und das entsprechende Referenzbild (Bild N – 1 bzw. Bild N – 2) ist ein Bild, daher ist kein Skalieren angezeigt. Wenn im Gegensatz dazu die Referenz-Blöcke R2 und R4 beide das goldene Referenzbild verwenden, ist der zeitliche Unterschied zwischen Bild N und dem goldenen Referenzbild und zwischen dem Bild N – 1 und dem goldenen Referenzbild unterschiedlich, während das goldene Referenzbild unverändert ist. Ein Bewegungsvektorkandidat kann durch Vergrößerung der Magnitude des Bewegungsvektors verbunden mit dem kürzeren zeitlichen Unterschied oder dem Verkleinern der Magnitude des Bewegungsvektors verbunden mit dem längeren zeitlichen Unterschied generiert werden, sodass die Bewegungsvektoren eine gemeinsame Basis haben. Der für das Skalieren verwendete Faktor kann auf dem Verhältnis zwischen den zeitlichen Unterschieden basieren.In some implementations, the scaling of the motion vector is performed when a candidate list of the reference motion vectors is created. The scaling of the motion vector may be included as part of determining a popularity value 606 or elsewhere in the process 600 , When scaling the motion vector, the magnitude of a motion vector is adjusted to the temporal differences between reference images relative to the observed image within the sequence of images in the video stream. For example, and with reference to 7 For example, the reference block R2 uses the last frame, namely frame N-1, for the inter-prediction, while the reference frame R4 takes the last frame, namely the frame before frame N-1 (or frame N-2, not shown), for the inter-prediction Prediction used. The temporal difference between the picture, in each block R2 and R4 is positioned (image N or image N-1) and the corresponding reference image (image N-1 or image N-2) is an image, therefore no scaling is indicated. In contrast, when the reference blocks R2 and R4 both use the golden reference image, the time difference between image N and the golden reference image and between the image N-1 and the golden reference image is different while the golden reference image is unchanged. A motion vector candidate can be generated by increasing the magnitude of the motion vector associated with the shorter time difference or decreasing the magnitude of the motion vector associated with the longer time difference such that the motion vectors share a common ground. The factor used for scaling may be based on the relationship between the time differences.

Das Skalieren des Bewegungsvektors kann auch in Implementierungen verwendet werden, in denen nur eine Kandidatenliste für Referenz-Bewegungsvektoren für alle Referenzbilder erstellt wird und keine separaten Listen für jedes Referenzbild. Referenzbilder können entweder vor oder nach dem aktuellen Bild in der Videosequenz positioniert werden. In einigen Implementierungen wird das Skalieren der Bewegungsvektoren weggelassen.The scaling of the motion vector can also be used in implementations where only one candidate list for reference motion vectors is created for all reference images and no separate lists for each reference image. Reference pictures can be positioned either before or after the current picture in the video sequence. In some implementations, the scaling of the motion vectors is omitted.

Bislang wird die Erstellung von Kandidatenlisten für einen einzelnen Referenzmodus, bei dem nur ein Referenzbild (und daher normalerweise ein Bewegungsvektor mit dem einen Referenzbild verbunden ist) für Inter-Vorhersage verwendet. In einigen Fällen jedoch kann ein Block von zwei oder mehr Referenzbildern vorhergesagt werden, wenn die Pixelwerte Kombinationen der Pixelwerte von Vorhersage-Blöcken innerhalb jedes Bildes, das von den entsprechenden Bewegungsvektoren generiert wurde, sind. In Bezug auf einen zusammengesetzten Referenzmodus für die Vorhersage des aktuellen Blocks wird die Liste aufgebaut, indem zuerst nach benachbarten Blöcken, die dieselben zusammengesetzten Referenzbilder (d. h. dieselbe Kombination von Referenzbildern) für ihre Referenz-Bewegungsvektoren verwenden, gesucht wird. Bewegungsvektorkandidaten von benachbarten Referenz-Blöcken, die dieselbe Kombination von Referenzbildern haben wie die, die für den aktuellen Block betrachtet werden, wird eine höhere Priorität zugewiesen. Die Bewegungsvektoren können auch vom höchsten zum niedrigsten Beliebtheitswert gereiht werden. Wenn die resultierende Kandidatenliste eine Länge hat, die kürzer ist als eine definierte Anzahl, zum Beispiel zwei, kann die Liste an die Kombinationen von Referenz-Bewegungsvektoren einzelner Referenzbilder, die wie zuvor beschrieben identifiziert und gereiht werden, angefügt werden. Wenn zum Beispiel ein zusammengesetzter Referenzmodus, der das letzte Bild und das alternative Referenzbild verwendet, betrachtet wird, werden die Referenz-Blöcke nach Bewegungsvektoren, die sich entweder auf das letzte Bild oder das alternative Referenzbild beziehen, durchsucht und diese werden dann basierend auf dem Beliebtheitswert wie abgehandelt, gereiht.So far, creating candidate lists for a single reference mode in which only one reference image (and therefore normally a motion vector is associated with the one reference image) is used for inter-prediction. However, in some cases, a block of two or more reference images may be predicted if the pixel values are combinations of the pixel values of prediction blocks within each image generated by the respective motion vectors. With respect to a composite reference mode for the prediction of the current block, the list is constructed by first searching for adjacent blocks that use the same composite reference pictures (i.e., the same combination of reference pictures) for their reference motion vectors. Motion vector candidates from adjacent reference blocks having the same combination of reference pictures as those considered for the current block are assigned a higher priority. The motion vectors can also be ranked from highest to lowest popularity value. If the resulting candidate list has a length that is shorter than a defined number, for example two, the list may be appended to the combinations of reference motion vectors of individual reference pictures identified and ranked as described above. For example, if a composite reference mode using the last frame and the alternative reference frame is considered, the reference blocks are searched for motion vectors relating to either the last frame or the alternative reference frame, and these are then based on the popularity value as discussed, ranked.

Unter erneuter Bezugnahme auf 6 und wie bereits dargelegt, beinhaltet die Bestimmung des Beliebtheitswerts bei 608 das Ranking der Bewegungsvektoren unter Verwendung des Beliebtheitswerts. Sie kann auch die Zuweisung der Bewegungsvektoren zu Inter-Coding(oder Inter-Vorhersage)-Modi basierend auf dem Ranking beinhalten. Der populärste Bewegungsvektor kam für einen Inter-Vorhersage-Modus, der eine Differentialcodierung eines neuen Bewegungsvektors beinhaltet, ausgewählt werden. Dieser kann als NEWMV-Modus bezeichnet werden. Dann können die restlichen Bewegungsvektoren gemäß dem Ranking-Ergebnis anderen Bewegungsmodi der Referenz-Vektoren zugeordnet werden. In einigen Implementierungen ist ein REFMV-Modus ein dynamischer Kodierungsmodus für den Referenz-Bewegungsvektor, der mindestens zwei Modi, bei denen mindestens ein existierender Bewegungsvektor wiederverwendet wird, beinhaltet. In einem Beispiel sind diese beiden Inter-Vorhersage-Modi ein NEARESTMV-Modus und ein NEARMV-Modus. Der nächste Bewegungsvektor beim Ranking nach dem Vektor, der dem NEWMV-Modus zugeordnet ist (d. h. der Bewegungsvektor mit dem zweithöchsten Beliebtheitswert) wird dem NEARESTMV-Modus zugeordnet und der nächste Bewegungsvektor danach (d. h. der Bewegungsvektor mit dem dritthöchsten Beliebtheitswert) wird dem NEARMV-Modus zugeordnet. Wenn die Kandidatenliste der Referenz-Bewegungsvektoren für ein bestimmtes Referenzbild länger als zwei ist, kann die Anzahl an Referenz-Bewegungsvektormodi erweitert werden, um die restlichen Einträge in die Liste aufzunehmen. Ein anderer verfügbarer Inter-Vorhersage-Modus kann ein ZEROMV-Modus sein, das bedeutet, dass keine Bewegung existiert.Referring again to 6 and as already stated, includes the determination of the popularity value in 608 the ranking of the motion vectors using the popularity value. It may also include the assignment of the motion vectors to inter-coding (or inter-prediction) modes based on the ranking. The most popular motion vector was chosen for an inter-prediction mode involving differential encoding of a new motion vector. This can be called the NEWMV mode. Then the remaining motion vectors can be assigned according to the ranking result to other motion modes of the reference vectors. In some implementations, a REFMV mode is a dynamic encoding mode for the reference motion vector that includes at least two modes that reuse at least one existing motion vector. In one example, these two inter-prediction modes are a NEARESTMV mode and an NEARMV mode. The next motion vector in the ranking after the vector associated with the NEWMV mode (ie the motion vector with the second highest popularity value) is assigned the NEARESTMV mode and the next motion vector thereafter (ie the motion vector with the third highest popularity value) becomes the NEARMV mode assigned. If the candidate list of reference motion vectors for a particular reference image is longer than two, the number of reference motion vector modes may be extended to include the remaining entries in the list. Another available inter-prediction mode may be a ZEROMV mode, meaning that no motion exists.

Bei 608 wird ein Inter-Vorhersage-Modus für den aktuellen Block gewählt. Das kann das Testen aller Inter-Vorhersage-Modi und die Auswahl des Inter-Vorhersage-Modus, der zur effizientesten Kodierung des aktuellen Blocks führt, beinhalten. Der Prozess 600 kann zum Beispiel ein Teil einer Raten-Verzerrungsschleife sein, die verwendet wird, um den Inter-Vorhersage-Modus für den aktuell zu kodierenden Block auszuwählen. Als Teil der Raten-Verzerrungsschleife kann ein aktueller Bewegungsvektor für die Inter-Vorhersage des aktuellen Blocks durch eine Bewegungssuche gemäß einer beliebigen Anzahl an Bewegungssuchtechniken bestimmt werden. Für jedes Referenzbild kann eine Verwendung des Referenz-Bewegungsvektors die Verwendung des Referenz-Bewegungsvektors, der dem NEWMV-Modus zugeordnet ist, beinhalten, oder einen der anderen identifizierten Bewegungsvektorkandidaten als Startparameter für den Bewegungssuchalgorithmus, basierend auf der Überlegung, dass der aktuelle Bewegungsvektor wahrscheinlich in der Nähe der höher gereihten Bewegungsvektoren für das Referenzbild ist. Kombinationen von Referenzbildern in einem zusammengesetzten Vorhersage-Modus können ebenso unter Verwendung von Bewegungsvektoren von der Kandidatenliste gesucht werden, vor allem jene, die für jedes Referenzbild am höchsten bewertet sind.at 608 An inter-prediction mode is selected for the current block. This may include testing all inter-prediction modes and selecting the inter-prediction mode that results in the most efficient coding of the current block. The process 600 For example, it may be part of a rate warping loop used to select the inter-prediction mode for the block currently being coded. As part of the rate warping loop, a current motion vector for the inter prediction of the current block may be determined by a motion search according to any number of motion search techniques. For each reference image, use of the reference motion vector may include the use of the reference motion vector, the NEWMV mode , or one of the other identified motion vector candidates as start parameters for the motion search algorithm based on the consideration that the current motion vector is likely to be in the vicinity of the higher ranked motion vectors for the reference picture. Combinations of reference images in a composite prediction mode can also be searched for using motion vectors from the candidate list, especially those that are most highly rated for each reference image.

Bewegungssuchen können alternativ durchgeführt werden, ohne Verwendung von Bewegungsvektoren von der Kandidatenliste. Unabhängig davon, ob ein Referenz-Bewegungsvektor in der Bewegungssuche verwendet wird, können verschiedene Inter-Vorhersage-Modi getestet werden. In einer Implementierung, eine erschöpfende Bewegungssuche, die jede der verfügbaren Inter-Vorhersage-Modi unter Verwendung einzelner oder zusammengesetzter Modi versucht (d. h. unter Verwendung jedes der drei Referenzbilder und der Kombinationen von Referenzbildern). Für jeden vorgeschlagenen Bewegungsvektor und für jeden getesteten Inter-Vorhersage-Modus, werden die Bitkosten (auch als Rate bezeichnet) für das Kodieren des aktuellen Blocks unter Verwendung des Inter-Vorhersage-Modus, einschließlich der Bits, die nötig sind, um den Inter-Vorhersage-Modus anzuzeigen, das/die Referenzbild(er), das/die der Restwertblock vom aktuellen Block generiert hat, und, wenn nötig, ein oder mehrere Bewegungsvektor(en) oder Differenzial-Bewegungsvektor(en) und der resultierende Fehler in den Pixelwerten zwischen den Originalwerten und den rekonstruierten Werten (auch Verzerrung genannt) berechnet. Der Inter-Vorhersage-Modus und das/die Referenzbild(er), die zum niedrigsten Raten-Verzerrungs-Wert führen (auch Verhältnis genannt) kann als Inter-Vorhersage-Modus für den aktuellen Block bei 608 ausgewählt werden.Motion searches may alternatively be performed without using motion vectors from the candidate list. Regardless of whether a reference motion vector is used in the motion search, various inter-prediction modes can be tested. In one implementation, an exhaustive motion search that attempts each of the available inter-prediction modes using single or composite modes (ie, using each of the three reference images and the combinations of reference images). For each proposed motion vector and for each inter-prediction mode tested, the bit cost (also referred to as rate) for encoding the current block using the inter-prediction mode, including the bits necessary to obtain the inter-prediction mode. Predictive mode, the reference image (s) the residual block has generated from the current block, and, if necessary, one or more motion vector (s) or differential motion vector (s) and the resulting error in the pixel values between the original values and the reconstructed values (also called distortion). The inter-prediction mode and the reference image (s) leading to the lowest rate distortion value (also called ratio) may contribute as the inter-prediction mode for the current block 608 to be selected.

Eine erschöpfende Suche muss nicht durchgeführt werden. Verschiedene Techniken können verwendet werden, um den Rechenaufwand zu reduzieren. Die Inter-Vorhersage-Modi, die für benachbarte Blöcke in den Bildern verwendet werden, können zum Beispiel zuerst getestet werden und dann können nur bestimmte Inter-Vorhersage-Modi getestet werden, um zu sehen, ob das zu einem verbesserten Raten-Verzerrungs-Verhältnis führt. Außerdem gilt die Bewegungssuche für die Inter-Vorhersage. Die Raten-Verzerrungsschleife kann Tests für verschiedene Intra-Vorhersage-Modi beinhalten, oder es kann eine separate Raten-Verzerrungsschleife verwendet werden, um den effizientestes Intra-Vorhersage-Modus aus den verfügbaren Intra-Vorhersage-Modi auszuwählen. Dann werden der effizienteste Inter-Vorhersage-Modus und der effizienteste Intra-Vorhersage-Modus verglichen, um den Vorhersage-Modus für den Block auszuwählen.An exhaustive search does not have to be done. Various techniques can be used to reduce the computational burden. For example, the inter-prediction modes used for adjacent blocks in the images may be tested first, and then only certain inter-prediction modes can be tested to see if that results in an improved rate-distortion ratio leads. In addition, the motion search applies to the inter-prediction. The rate-distortion loop may include tests for various intra-prediction modes, or a separate rate-distortion loop may be used to select the most efficient intra-prediction mode from the available intra-prediction modes. Then the most efficient inter-prediction mode and the most efficient intra-prediction mode are compared to select the prediction mode for the block.

Unter der Annahme, dass der bei 608 gewählte Inter-Vorhersage-Modus besser ist als die verfügbaren Intra-Vorhersage-Modi, wird der aktuelle Block bei 610 unter Verwendung des Inter-Vorhersage-Modus kodiert. Wenn zum Beispiel der NEWMV-Modus verwendet wird, um den aktuellen Block zu kodieren, wird der vorhergesagte Block unter Verwendung des/der aktuellen Bewegungsvektors/en der Bewegungssuche und des/der gewählten Referenzbild(er) generiert. Dann wird der Restwert zwischen dem aktuellen Block und dem vorhergesagten Block wie in Bezugnahme auf 4 beschrieben, generiert und kodiert. Der/Die Bewegungsvektor(en), die dem NEWMV-Modus durch das Ranking zugeordnet sind, kann/können verwendet werden, um den/die aktuellen Bewegungsvektor(en) differentiell zu kodieren. Es kann zum Beispiel ein Differenzwert oder Restwert durch Subtrahieren eines Referenz-Bewegungsvektors von einem Bewegungsvektor verwendet werden, um den aktuellen Block zu kodieren. Der Differenzwert kann kodiert und in den Videostream eingeschlossen werden. Zusätzlich, können Bits, die das/die Referenzbild(er) angeben, sowie dass der NEWMV-Modus verwendet wurde, im Blockheader und/oder in einem Bild- oder Scheibenheader angegeben werden.Assuming that at 608 If the selected inter-prediction mode is better than the available intra-prediction modes, the current block is added 610 encoded using the inter-prediction mode. For example, if the NEWMV mode is used to encode the current block, the predicted block is generated using the current motion vector (s) of motion search and the selected reference image (s). Then, the residual value between the current block and the predicted block becomes as referenced 4 described, generated and coded. The motion vector (s) associated with the NEWMV mode through the ranking can be used to differentially encode the current motion vector (s). For example, a difference value or residual value may be used by subtracting a reference motion vector from a motion vector to encode the current block. The difference value can be encoded and included in the video stream. In addition, bits indicating the reference image (s), as well as using the NEWMV mode, may be indicated in the block header and / or in an image or slice header.

In einem anderen Beispiel mit einem einzelnen Referenzbild resultiert die Bewegungssuche darin, dass der Bewegungsvektor gleich ist oder innerhalb eines Wertebereichs über einen der Referenz-Bewegungsvektoren, die einem Referenz-Bewegungsvektormodus zugeordnet sind, liegt. In diesem Fall ist der REFMV Inter-Vorhersage-Modus angezeigt. Wenn der aus der Suche resultierende Bewegungsvektor gleich ist oder innerhalb eines Wertbereichs über dem Referenz-Bewegungsvektor, der dem NEARMV-Modus in diesem Beispiel zugeordnet ist, liegt, wird der vorhergesagte Block unter Verwendung des Referenz-Bewegungsvektors, der dem NEARMV-Modus und dem gewählten Referenzbild zugeordnet ist, generiert. Dann wird der Restwert zwischen dem aktuellen Block und dem vorhergesagten Block wie in Bezugnahme auf 4 beschrieben, generiert und kodiert. Zusätzlich können Bits, die das Referenzbild angeben, und dass der REFMV-Modus und vor allem der NEARMV-Modus verwendet wurden, im Blockheader und/oder in einem Bild- oder Scheibenheader angegeben werden.In another example, with a single reference image, the motion search results in the motion vector being equal or within a range of values over one of the reference motion vectors associated with a reference motion vector mode. In this case, the REFMV inter-prediction mode is displayed. If the motion vector resulting from the search is the same or within a range of values above the reference motion vector associated with the NEARMV mode in this example, the predicted block is determined using the reference motion vector corresponding to the NEARMV mode and assigned reference image generated. Then, the residual value between the current block and the predicted block becomes as referenced 4 described, generated and coded. In addition, bits indicating the reference image and using the REFMV mode, and especially the NEARMV mode, may be indicated in the block header and / or in an image or slice header.

Die restlichen Inter-Vorhersage-Modi können ebenso verwendet werden, um den aktuellen Block zu kodieren, wenn dies bei 608 gewählt wurde, oder um andere Blöcke der Bilder innerhalb einer Videosequenz zu kodieren. Der Prozess 600 von 6 kann wenn nötig wiederholt werden.The remaining inter-prediction modes can also be used to encode the current block, if so 608 or to encode other blocks of images within a video sequence. The process 600 from 6 can be repeated if necessary.

Wie erwähnt in Bezug auf die Tätigkeit des Kodierers 400 von 4 kann das Kodieren des aktuellen Blocks Entropie-Kodierung beinhalten. Die Entropie-Kodierung der Inter-Vorhersage-Modi kann geändert werden, um die neuen dynamischen Referenz-Bewegungsvektormodi zu berücksichtigen. Unter der Annahme von drei Inter-Vorhersage-Modi, die einem neuen Bewegungsvektor, einem Null-Bewegungsvektor und einem dynamischen Referenz-Bewegungsvektor-Modus, entsprechen, in diesem Beispiel der NEWMV-Modus, der ZEROMV-Modus bzw. der REFMV-Modus, startet die Entropie-Kodierung mit dem NEWMV-Modus. Das heißt, unter der Annahme, dass der aktuelle Block unter Verwendung des NEWMV-Modus kodiert wird, kann das Wahrscheinlichkeitsmodell abhängig von zwei Gegebenheiten ausgewählt werden: 1) Wie viele Referenz-Bewegungsvektoren gefunden werden; und 2) Wenn benachbarte Blöcke mit einem passenden Referenzbild gefunden werden, wie wahrscheinlich es ist, dass diese mit dem NEWMV-Modus kodiert werden sollen. As mentioned in relation to the activity of the encoder 400 from 4 For example, encoding the current block may involve entropy coding. The entropy coding of the inter-prediction modes can be changed to accommodate the new dynamic reference motion vector modes. Assuming three inter-prediction modes corresponding to a new motion vector, a zero motion vector, and a reference dynamic motion vector mode, in this example the NEWMV mode, the ZEROMV mode, and the REFMV mode, respectively; starts the entropy coding with the NEWMV mode. That is, assuming that the current block is encoded using the NEWMV mode, the probabilistic model may be selected depending on two circumstances: 1) how many reference motion vectors are found; and 2) If adjacent blocks with a matching reference image are found, it is likely that they should be encoded with the NEWMV mode.

Wenn der nächste Kodiermodus nicht der NEWMV-Modus ist, wird die Kodierung fortgesetzt, wenn der nächste Kodiermodus der ZEROMV-Modus ist. In diesem Fall kann das Wahrscheinlichkeitsmodell abhängig von zwei Gegebenheiten ausgewählt werden: 1) Wenn der gemeinsam genutzte Block im letzten (oder vorherigen) Bild unter Verwendung eines Null-Bewegungsvektors oder eines Bewegungsvektors nahe Null (d. h. weniger als ein ganzes Pixel in Zeilen- und Spaltenkomponenten); und 2) ob (und wenn möglich wie viele der) räumlich benachbarten Blöcke innerhalb des aktuellen Bildes Null-Bewegungsvektoren oder Bewegungsvektoren nahe Null verwenden.If the next coding mode is not the NEWMV mode, coding will continue if the next coding mode is the ZEROMV mode. In this case, the probabilistic model may be selected depending on two circumstances: 1) If the shared block in the last (or previous) image using a zero motion vector or a motion vector near zero (ie less than an entire pixel in row and column components ); and 2) whether (and if possible how many of) the spatially adjacent blocks within the current image use null motion vectors or near zero motion vectors.

Wenn stattdessen der nächste Kodiermodus nicht der ZEROMV-Modus ist (d. h. der dynamische Referenz-Bewegungsvektor-Modus, der vom REFMV-Modus identifiziert wird), wird zwischen den Referenz-Bewegungsvektoren wie oben abgehandelt, eine Entscheidung getroffen. Der zugeordnete Kontext ist, wie viele Referenz-Bewegungsvektoren in die Kandidatenliste eingeschlossen werden und, wenn zutreffend, ihre Gewichtungskoeffizienten, die für die zusammengesetzte Vorhersage verwendet werden.If, instead, the next coding mode is not the ZEROMV mode (i.e., the dynamic reference motion vector mode identified by the REFMV mode), a decision is made between the reference motion vectors as discussed above. The associated context is how many reference motion vectors are included in the candidate list and, if applicable, their weighting coefficients used for composite prediction.

8 ist ein Flussdiagramm eines Prozesses 800 zum Dekodieren eines kodierten Videostreams unter Verwendung von Referenz-Bewegungsvektoren gemäß Implementierungen dieser Offenbarung. Der Prozess 800 kann zum Beispiel als Softwareprogramm, das durch Computergeräte wie zum Beispiel die Übertragungsstation 102 oder die Empfangsstation 106 ausgeführt werden kann, implementiert werden. Das Softwareprogramm kann zum Beispiel maschinenlesbare Anweisungen, die in einem Speicher wie zum Beispiel Speicher 204 oder 214 gespeichert werden können, und die, wenn sie von einem Prozessor, wie zum Beispiel CPU 202 ausgeführt werden, das Computergerät veranlassen können, den Prozess 800 durchzuführen, beinhalten. Der Prozess 800 kann unter Verwendung spezieller Hardware oder Firmware implementiert werden. Wie zuvor erläutert, können einige Computergeräte mehrere Speicher oder Prozessoren haben und die im Prozess 800 beschriebenen Tätigkeiten können unter Verwendung mehrerer Prozessoren, Speicher, oder von beidem, verbreitet werden. 8th is a flowchart of a process 800 for decoding a coded video stream using reference motion vectors in accordance with implementations of this disclosure. The process 800 can be used, for example, as a software program by computer devices such as the transfer station 102 or the receiving station 106 can be implemented. The software program can, for example, machine-readable instructions stored in a memory such as memory 204 or 214 can be stored, and which, if used by a processor, such as CPU 202 computer device can initiate the process 800 perform. The process 800 can be implemented using special hardware or firmware. As discussed above, some computer devices may have multiple memories or processors and those in the process 800 activities described may be propagated using multiple processors, memory, or both.

Zur Vereinfachung der Erläuterung gilt, dass der Prozess 800 als eine Reihe von Schritten oder Tätigkeiten dargestellt und beschrieben wird. Die Schritte oder Tätigkeiten gemäß dieser Offenbarung können in verschiedenen Reihenfolgen und/oder gleichzeitig stattfinden. Zusätzlich können andere Schritte und Tätigkeiten, die hier nicht explizit dargestellt und beschrieben sind, auftreten. Darüber hinaus können nicht alle illustrierten Schritte oder Tätigkeiten erforderlich sein, um ein Verfahren in Übereinstimmung mit dem offenbarten Gegenstand zu implementieren.To simplify the explanation, that process 800 is presented and described as a series of steps or activities. The steps or activities according to this disclosure may take place in different orders and / or simultaneously. In addition, other steps and activities that are not explicitly illustrated and described herein may occur. Moreover, not all illustrated steps or actions may be required to implement a method in accordance with the disclosed subject matter.

Bei 802 stellt der Dekodierer fest, ob der aktuelle Block unter Verwendung einfacher oder zusammengesetzter Vorhersage kodiert wurde. Diese Information kann durch Lesen und Dekodieren von Bits eines kodierten Video-Bitstreams, die anzeigen, dass ein oder mehrere Bewegungsvektoren für das Kodieren des aktuellen Blocks verwendet wurden, kommuniziert werden. Der kodierte Bitstream (oder die kodierten Videodaten) können von einem Dekodierer eines Computergeräts in einer Reihe von Weisen, wie zum Beispiel durch Empfangen der Videodaten über ein Netzwerk, über ein Kabel, oder durch Lesen der Videodaten von einem Primärspeicher oder einem anderen Speichergerät, einschließlich einer Festplatte oder entfernbarer Medien, wie zum Beispiel einer DVD, einer CompactFlash(CF)-Karte, einer Secure Digital(SD)-Karte oder allen anderen Geräten, die in der Lage sind, Videodaten zu kommunizieren, empfangen werden. Diese Informationen können zum Beispiel in einem Header, der einem aktuellen Block zugeordnet ist, oder einem Bild-Header enthalten sein. In dieser Erklärung wird angenommen, dass der aktuelle Block mit Inter-Vorhersage vorhergesagt wird. Anderenfalls wird kein Referenzbild in Verbindung mit dem aktuellen Block in den Bitstream kodiert und der aktuelle Block war mit Intra-Vorhersage vorhergesagt.at 802 The decoder determines if the current block has been encoded using simple or compound prediction. This information may be communicated by reading and decoding bits of a coded video bit stream indicating that one or more motion vectors have been used to encode the current block. The encoded bitstream (or encoded video data) may be provided by a decoder of a computing device in a number of ways, such as by receiving the video data over a network, via a cable, or by reading the video data from a primary storage or other storage device, including a hard disk or removable media such as a DVD, a CompactFlash (CF) card, a Secure Digital (SD) card, or any other device capable of communicating video data. This information may be included, for example, in a header associated with a current block or an image header. In this explanation, it is assumed that the current block with inter-prediction is predicted. Otherwise, no reference image will be encoded into the bitstream in conjunction with the current block, and the current block was predicted with intra-prediction.

In Kenntnis des/der Referenzbildes/er, können die Bewegungsvektorkandidaten auf ähnliche Weise wie in Bezugnahme auf Prozess 600 von 6 beschrieben, gereiht werden. Das heißt, Kodierer und Dekodierer können Regeln für die Erzeugung von Kandidatenlisten für Referenz-Bewegungsvektoren gemeinsam benutzen, sodass der Dekodierer, wenn er Header-Informationen über den Inter-Vorhersage-Modus, der zum Kodieren des aktuellen Blocks (z. B. NEWMV, NEARESTMV, NEARMV, etc.) verwendet wurde, empfängt, den/dieselben Referenz-Bewegungsvektor(en), die vom Kodierer verwendet wurden, feststellen kann. Zuerst können die Bewegungsvektorkandidaten von den zuvor bei 804 kodierten Blöcken auf dieselbe Weise wie sie bei 602 im Prozess 600 identifiziert wurden, identifiziert werden. Während der Prozess 600 die Bewegungsvektorkandidaten unter Verwendung aller verfügbaren Referenzbilder und Kombinationen von Referenzbildern für das Ranking identifizieren kann, um den Inter-Vorhersage-Modus auszuwählen, muss der Prozess 800 nur die Bewegungsvektorkandidaten für das die Referenzbild(er) reihen, um den Block tatsächlich zu Kodieren.Knowing the reference image (s), the motion vector candidates may be processed in a manner similar to the process 600 from 6 described, be ranked. That is, encoders and decoders may share rules for generating candidate lists for reference motion vectors, so when the decoder receives header information about it Inter prediction mode used to encode the current block (eg NEWMV, NEARESTMV, NEARMV, etc.) receives the same reference motion vector (s) used by the encoder. First, the motion vector candidates from those at 804 coded blocks in the same way as they do 602 in process 600 were identified. During the process 600 To identify the motion vector candidates using all available reference images and combinations of reference images for ranking to select the inter-prediction mode, the process must 800 only the motion vector candidates for the reference image (s) line up to actually encode the block.

Nachdem die Bewegungsvektorkandidaten bei 804 identifiziert wurden, werden sie bei 806 und 808 gereiht. Genauer ausgedrückt wird beim Reihen der Bewegungsvektorkandidaten, für jeden Bewegungsvektorkandidaten bei 806 die Distanz zwischen dem zuvor kodierten Block, der die Herkunft des Bewegungsvektors ist, und dem aktuellen Block festgestellt. Dies umfasst dieselben Tätigkeiten wie jene, die oben in Bezug auf die Bestimmung bei 604 im Prozess 600 beschrieben wurden. Das Ergebnis dieser Tätigkeit ist eine Liste der Bewegungsvektorkandidaten, gruppiert nach der Distanz in einer Implementierung. Danach erfolgt die Feststellung eines entsprechenden Beliebtheitswerts für den Bewegungsvektorkandidaten von den zuvor bei 804 kodierten Blöcken auf die gleiche Weise, wie die Feststellung bei 606 im Prozess 600. Das Ergebnis dieser Tätigkeit ist eine gereihte Liste von Bewegungsvektorkandidaten für das einzelne Referenzbild oder die kombinierten Referenzbilder, die in der Vorhersage des aktuellen Blocks verwendet wurden. In einer Implementierung wird der am höchsten eingestufte (z. B. wahrscheinlichste) Bewegungsvektor einem NEWMV-Modus zugeordnet, und die nächsten beiden Bewegungsvektoren beim Ranking werden jeweils den Referenz-Bewegungsvektor-Modi NEARESTMV und NEARMV des dynamischen Referenz-Bewegungsvektor(REFMV)-Modus zugeordnet. Alle weiteren Referenz-Bewegungsvektoren werden in der nachfolgenden Sequenz zugeordnet.After the motion vector candidates join 804 they are identified 806 and 808 ranked. Specifically, at the row of motion vector candidates, for each motion vector candidate, join 806 the distance between the previously coded block, which is the origin of the motion vector, and the current block. This includes the same activities as those mentioned above in relation to the provision 604 in process 600 have been described. The result of this activity is a list of motion vector candidates, grouped by distance in an implementation. Thereafter, the determination of a corresponding popularity value for the motion vector candidate of the previously at 804 encoded blocks in the same way as the statement at 606 in process 600 , The result of this activity is a ranked list of motion vector candidates for the single reference image or combined reference images used in the prediction of the current block. In one implementation, the highest ranked (eg, most likely) motion vector is assigned a NEWMV mode, and the next two motion vectors in the ranking become the reference motion vector modes NEARESTMV and NEARMV of the dynamic reference motion vector (REFMV) mode, respectively assigned. All other reference motion vectors are assigned in the following sequence.

Bei 810 wird der Inter-Vorhersage-Modus, der für die Kodierung des aktuellen Blocks verwendet wurde, identifiziert. In einer Implementierung wird der Inter-Vorhersage-Modus durch Dekodierung der Bits, die im Bitstream, der im Inter-Vorhersage-Modus beinhaltet ist, identifiziert. Der Inter-Vorhersage-Modus kann zum Beispiel der neue Bewegungsvektor-Modus, der Null-Bewegungsvektor-Modus oder der dynamische Referenz-Bewegungsvektor-Modus sein. Wenn der Inter-Vorhersage-Modus der dynamische Referenz-Bewegungsvektor-Modus ist, kann der bestimmte verwendete Referenz-Bewegungsvektor-Modus auf die gleiche Weise bestimmt werden, z. B. von Bits, die im/in den Header(n) im Bitstream beinhaltet sind.at 810 the inter-prediction mode used to encode the current block is identified. In one implementation, the inter-prediction mode is identified by decoding the bits included in the bitstream included in the inter-prediction mode. The inter prediction mode may be, for example, the new motion vector mode, the zero motion vector mode, or the dynamic reference motion vector mode. If the inter-prediction mode is the reference dynamic motion vector mode, the particular reference motion vector mode used may be determined in the same manner, e.g. Of bits included in / in the header (s) in the bitstream.

Bei 812 wird der bei 810 identifizierte Inter-Vorhersage-Modus verwendet, um den aktuellen Block bei 812 zu dekodieren, wie zum Beispiel durch den Dekodierungsprozess, der in Bezugnahme auf 5 beschrieben ist. Wenn der Inter-Vorhersage-Modus zum Beispiel einen differenziell-kodierten Bewegungsvektor umfasst, kann der Referenz-Bewegungsvektor verwendet werden, um den Bewegungsvektor, der verwendet wurde, um den aktuellen Block vorherzusagen, zu dekodieren. Alternativ dazu kann der Inter-Vorhersage-Modus den Bewegungsvektor unter Bezugnahme auf die Liste angeben. Ungeachtet der Herkunft des einen oder mehreren Bewegungsvektors/en, wird der Vorhersageblock unter Verwendung des/der Bewegungsvektors/en generiert und zum Restwert für den aktuellen Block, der vom Bitstream dekodiert wurde, hinzugefügt.at 812 will be at 810 Identified inter-prediction mode used to construct the current block 812 to decode, such as by the decoding process, referring to 5 is described. For example, if the inter-prediction mode includes a differentially encoded motion vector, the reference motion vector may be used to decode the motion vector that was used to predict the current block. Alternatively, the inter-prediction mode may indicate the motion vector with reference to the list. Regardless of the origin of the one or more motion vectors, the predictive block is generated using the motion vector (s) and added to the residual value for the current block that was decoded by the bitstream.

Der Prozess 800 kann für jeden Block wiederholt werden, das heißt kodiert unter Verwendung der Inter-Vorhersage um einen rekonstruierten Block zu generieren. Das Bild wird unter Verwendung der rekonstruierten Blöcke und der unter Verwendung der Intra-Vorhersage rekonstruierten Blöcke rekonstruiert. Durch Dekodierung einer Vielzahl von Bildern kann ein Ausgabevideostream, wie zum Beispiel der Ausgabevideostream 516, dargestellt in 5, rekonstruiert werden.The process 800 can be repeated for each block, that is coded using the inter-prediction to generate a reconstructed block. The image is reconstructed using the reconstructed blocks and the blocks reconstructed using intra-prediction. By decoding a plurality of images, an output video stream, such as the output video stream 516 represented in 5 , to be reconstructed.

Die Verwendung der Syntax innerhalb des Bitstream für den REFMV-Modus deutet darauf hin, dass der effektive Bewegungsvektor von der Referenzierung der Kodierinformation benachbarter Blöcke kommt. Im Hinblick auf das Referenzbild wird eine Liste solcher möglicher Referenz-Bewegungsvektorkandidaten entsprechend ihrer relativen Distanz zum aktuellen Block und dem relativen Gebrauch gereiht. Diese Technik generalisiert den REFMV-Modus (zum Beispiel NEARESTMV und NEARMV) und verbessert die Effizienz der Entropie-Kodierung. Außerdem können die zusätzlichen Bewegungsvektorkandidaten zu weiteren Kompressionsgewinnen führen.The use of the syntax within the bitstream for the REFMV mode indicates that the effective motion vector comes from referencing the coding information of neighboring blocks. With regard to the reference image, a list of such possible reference motion vector candidates is ranked according to their relative distance to the current block and relative use. This technique generalizes the REFMV mode (for example, NEARESTMV and NEARMV) and improves the efficiency of entropy coding. In addition, the additional motion vector candidates may lead to further compression gains.

Die oben erläuterten Aspekte der Kodierung und Dekodierung veranschaulichen einige der Kodierungs-/Dekodierungstechniken. Jedoch sollte bedacht werden, dass die Verwendung der Begriffe Kodierung und Dekodierung in den Ansprüchen für Komprimierung, Dekomprimierung, Transformation oder jegliche andere Verarbeitung oder Änderung von Daten stehen kann.The coding and decoding aspects discussed above illustrate some of the encoding / decoding techniques. However, it should be kept in mind that the use of the terms coding and decoding in the claims may stand for compression, decompression, transformation or any other processing or modification of data.

Das Wort „Beispiel”, „Aspekt” oder „Implementierung” wie hierin verwendet, dient als ein Beispiel, eine Instanz oder eine Veranschaulichung. Jeder Aspekt oder Design hierin mit einem oder mehreren dieser Wörter beschrieben, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs auszulegen. Vielmehr soll die Verwendung des Wortes „Beispiel”, „Aspekt” oder „Implementierung” Konzepte konkret darstellen. Wie in dieser Anmeldung verwendet, ist der Begriff „oder” eher als ein integratives „oder” als ein exklusives „oder” zu verstehen. Das heißt, sofern nicht anders angegeben oder klar aus dem Kontext hervorgeht, „beinhaltet X A oder B” und ist als eine der natürlichen inklusiven Permutationen zu verstehen. Das heißt, wenn X A beinhaltet; beinhaltet X B; oder wenn X sowohl A als auch B beinhaltet, beinhaltet „X A oder B” unter Bezug auf ein beliebiges vorstehendes Beispiel. Zusätzlich sollten die in dieser Anmeldung und den anhängenden Ansprüchen verwendeten Artikel „ein” und „eine” im Allgemeinen als „ein/e oder mehrere” verstanden werden, sofern nichts Anderes angegeben oder klar aus dem Zusammenhang zu einer singulären Form abgeleitet werden kann. Darüber hinaus soll die Verwendung des Begriffs „Implementierung” oder „eine Implementierungen” nicht als dieselbe Ausführungsform, derselbe Aspekt oder dieselbe Implementierung angesehen werden, es sei denn, dies ist ausdrücklich so beschrieben.The word "example", "aspect" or "implementation" as used herein serves as an example, an instance or an illustration. Any aspect or design described herein with one or more of these words is not necessarily to be construed as preferred or advantageous over other aspects or designs. On the contrary, the use of the word "example", "aspect" or "implementation" should concretely represent concepts. As used in this application, the term "or" is to be understood as an inclusive "or" as an exclusive "or". That is, unless stated otherwise or clear from the context, "X includes A or B" and is to be understood as one of the natural inclusive permutations. That is, if X includes A; includes X B; or if X includes both A and B, includes "X A or B" with reference to any of the above examples. In addition, the articles "a" and "an" used in this application and the appending claims should generally be understood as "one or more", unless otherwise indicated or clearly deduced from the context of a singular form. Moreover, the use of the term "implementation" or "implementations" should not be construed as the same embodiment, the same aspect, or the same implementation, unless expressly so described.

Implementierungen von Übertragungsstation 102 und/oder Empfangsstation 106 (und die darauf einschließlich auf Enkoder 400 und Dekoder 500 gespeicherten und/oder ausgeführten Algorithmen, Verfahren, Anweisungen usw.) können in Hardware, Software oder einer beliebigen Kombination davon verwirklicht werden. Die Hardware kann beispielsweise Computer, Intellectual Property (IP) Kerne, anwendungsspezifische integrierte Schaltkreise (ASICs), programmierbare Logikarrays, optische Prozessoren, programmierbare Logiksteuerungen, Mikrocodes, Mikrocontroller, Server, Mikroprozessoren und digitale Signalprozessoren oder jede andere geeignete Schaltung beinhalten. In den Ansprüchen sollte der Begriff „Prozessor” als jede der vorgenannten Hardware entweder einzeln oder in Kombination verstanden werden. Die Begriffe „Signal” und „Daten” werden austauschbar verwendet. Weiterhin müssen Abschnitte von Übertragungsstation 102 und Empfangsstation 106 nicht notwendigerweise auf dieselbe Art implementiert werden.Implementations of Transfer Station 102 and / or receiving station 106 (and the ones on it including on encoders 400 and decoder 500 stored and / or executed algorithms, methods, instructions, etc.) may be implemented in hardware, software, or any combination thereof. The hardware may include, for example, computers, intellectual property (IP) cores, application specific integrated circuits (ASICs), programmable logic arrays, optical processors, programmable logic controllers, microcodes, microcontrollers, servers, microprocessors and digital signal processors, or any other suitable circuitry. In the claims, the term "processor" should be understood as any of the foregoing hardware either singly or in combination. The terms "signal" and "data" are used interchangeably. Continue to have sections of transfer station 102 and receiving station 106 not necessarily implemented in the same way.

Weiterhin können in einem Aspekt Übertragungsstation 102 oder Empfangsstation 106 unter Verwendung eines Universalcomputers oder Universalprozessors mit einem Computerprogramm, das, wenn es ausgeführt wird, jedes der jeweiligen Verfahren, Algorithmen und/oder Anweisungen ausführt, wie hierin beschrieben, implementiert werden. Zusätzlich oder alternativ kann beispielsweise ein spezieller Computer/Prozessor verwendet werden, der spezialisierte andere Hardware zur Durchführung eines der hierin beschriebenen Verfahren, Algorithmen oder Anweisungen beinhalten kann.Furthermore, in one aspect transfer station 102 or receiving station 106 using a general-purpose computer or processor with a computer program that, when executed, implements each of the respective methods, algorithms and / or instructions as described herein. Additionally or alternatively, for example, a particular computer / processor may be used which may include specialized other hardware for performing any of the methods, algorithms, or instructions described herein.

Die Übertragungsstation 102 und die Empfangsstation 106 können z. B. auf Computern in einem Videokonferenzsystem implementiert werden. Alternativ kann die Übertragungsstation 102 auf einem Server implementiert sein und die Empfangsstation 106 kann auf einem vom Server getrennten Gerät, wie beispielsweise einem Handkommunikationsgerät implementiert sein. In diesem Fall kann die Übertragungsstation 102 Inhalte unter Verwendung des Kodierers 400 in ein kodiertes Videosignal kodieren und das kodierte Videosignal an das Kommunikationsgerät übertragen. Im Gegenzug kann das Gerät dann das kodierte Videosignal unter Verwendung des Dekodierers 500 dekodieren. Alternativ kann das Kommunikationsgerät den Inhalt dekodieren, der lokal auf dem Kommunikationsgerät gespeichert ist, z. B. Inhalt, der nicht von der Sendestation 102 übertragen wurde. Andere Implementierungsschemata für die Übertragungsstation 102 und die Empfangsstation 106 sind verfügbar. So kann beispielsweise die Empfangsstation 106 auch ein allgemein ortsfester PC anstatt eines mobilen Kommunikationsgerätes sein und/oder das Gerät mit dem eingebetteten Kodierer 400 kann auch einen Dekodierer 500 enthalten.The transmission station 102 and the receiving station 106 can z. On computers in a videoconferencing system. Alternatively, the transfer station 102 be implemented on a server and the receiving station 106 can be implemented on a device separate from the server, such as a hand-held communication device. In this case, the transfer station 102 Content using the encoder 400 encode into an encoded video signal and transmit the encoded video signal to the communication device. In turn, the device can then encode the video signal using the decoder 500 decode. Alternatively, the communication device may decode the content stored locally on the communication device, e.g. B. Content that is not from the transmitting station 102 was transferred. Other implementation schemes for the transmission station 102 and the receiving station 106 are available. For example, the receiving station 106 also be a general stationary PC instead of a mobile communication device and / or the device with the embedded encoder 400 can also have a decoder 500 contain.

Weiterhin können alle oder ein Teil der Implementierungen der vorliegenden Offenbarung die Form eines Computerprogrammproduktes annehmen, auf das z. B. von einem materiellen, vom Computer zu nutzenden oder computerlesbaren Medium aus zugegriffen werden kann. Ein vom Computer zu nutzendes oder computerlesbares Medium kann jegliches Gerät sein, das z. B. das Programm für die Nutzung durch oder in Zusammenhang mit einem Prozessor greifbar enthalten, speichern, kommunizieren oder transportieren kann. Bei dem Medium kann es sich z. B. um ein elektronisches, magnetisches, optisches, elektromagnetisches oder ein Halbleitergerät handeln. Andere geeignete Medien sind ebenfalls vorhanden.Furthermore, all or part of the implementations of the present disclosure may take the form of a computer program product to which e.g. B. from a tangible, computer-to-use or computer-readable medium from. A computer-to-use or computer-readable medium may be any device that may be e.g. For example, the program may be tangibly contained, stored, communicated or transported for use by or in connection with a processor. The medium may be, for. B. be an electronic, magnetic, optical, electromagnetic or semiconductor device. Other suitable media are also available.

Die vorstehend beschriebenen Ausführungsformen, Implementierungen und Aspekte wurden beschrieben, um ein leichtes Verständnis der Anwendung zu ermöglichen und sind nicht einschränkend. Ganz im Gegenteil soll die Erfindung verschiedene Änderungen und ähnliche Arrangements umfassen, die im Umfang der beigefügten Ansprüche beinhaltet sind, und der Umfang soll im weitest möglichen Sinn ausgelegt werden, sodass er all jene Änderungen und entsprechende Strukturen umfasst, wie nach dem Gesetz zulässig sind.The above-described embodiments, implementations and aspects have been described in order to facilitate an easy understanding of the application and are not limiting. On the contrary, the invention is intended to cover various changes and similar arrangements included within the scope of the appended claims, and the scope should be construed in the broadest sense to encompass all such changes and structures as may be allowed by law.

Claims (9)

Vorrichtung zum Dekodieren eines Videostreams, umfassend: einen Prozessor; und Speicheranweisungen, die den Prozessor veranlassen, ein Verfahren auszuführen, das Verfahren umfassend: das Identifizieren, für einen aktuellen Block, eines Referenzbildes, das verwendet wird, um den aktuellen Block innerhalb eines aktuellen Bildes zu kodieren; das Erstellung einer Kandidatenliste für Referenz-Bewegungsvektoren für das Referenzbild unter Verwendung von Referenz-Blöcken, wobei die Referenz-Blöcke räumlich nebeneinander liegende Blöcke des aktuellen Bildes, einen gemeinsam genutzten Block innerhalb eines vorherigen Bildes und räumlich nebeneinander liegende Blöcke des gemeinsam genutzten Blocks innerhalb des vorherigen Bildes umfassen; das Ranking jedes Bewegungsvektors innerhalb der Kandidatenliste für Referenz-Bewegungsvektoren nach der Distanz des aktuellen Blocks zu einem Referenzblock, der den Bewegungsvektor bereitstellt, und durch einen Beliebtheitswert des Bewegungsvektors, der eine Nutzungsintensität des Bewegungsvektors durch die Referenzblöcke anzeigt; das Zuweisen der Bewegungsvektoren zu einer Vielzahl von Inter-Vorhersage-Modi basierend auf dem Ranking; das Auswählen eines Inter-Vorhersage-Modus zum Dekodieren des aktuellen Blocks; und das Dekodieren des aktuellen Blocks unter Verwendung des Inter-Vorhersage-Modus.Apparatus for decoding a video stream, comprising: a processor; and Memory instructions that cause the processor to perform a method, the method comprising: identifying, for a current block, a reference image that is used to encode the current block within a current image; the creation of a candidate list for reference motion vectors for the reference image using reference blocks, wherein the reference blocks are spatially adjacent blocks of the current image, a shared block within a previous image, and spatially adjacent blocks of the shared block within the previous picture include; the ranking of each motion vector within the candidate list for reference motion vectors by the distance of the current block to a reference block providing the motion vector, and a popularity value of the motion vector indicating a usage intensity of the motion vector through the reference blocks; assigning the motion vectors to a plurality of inter-prediction modes based on the ranking; selecting an inter-prediction mode to decode the current block; and decoding the current block using the inter-prediction mode. Vorrichtung nach Anspruch 1, wobei die Anweisungen zum Dekodieren des aktuellen Blocks Anweisungen zum Dekodieren des aktuellen Blocks unter Verwendung eines Bewegungsvektors, der dem Inter-Vorhersage-Modus zur Inter-Vorhersage des aktuellen Blocks zugeordnet ist, umfasst.The apparatus of claim 1, wherein the instructions for decoding the current block include instructions for decoding the current block using a motion vector associated with the inter-prediction mode for inter-prediction of the current block. Vorrichtung nach Anspruch 1 oder 2, wobei der Beliebtheitswert einen Prozentsatz einer Gesamtanzahl von zuvor kodierten Pixeln innerhalb des Referenzblocks unter Verwendung eines Bewegungsvektors innerhalb der Kandidatenliste für Referenz-Bewegungsvektoren umfasst.The apparatus of claim 1 or 2, wherein the popularity value comprises a percentage of a total number of previously encoded pixels within the reference block using a motion vector within the reference motion vector candidate list. Vorrichtung nach irgendeinem der Ansprüche 1 bis 3, wobei das Referenzbild ein erstes Referenzbild von mindestens zwei verfügbaren Referenzbildern ist, und die Anweisungen zum Erstellen einer Kandidatenliste für Referenz-Bewegungsvektoren für das Referenzbild Anweisungen zum Erstellen einer einzelnen Bewegungsvektor Kandidatenliste für die mindestens zwei verfügbaren Referenzbilder umfassen.The apparatus of any one of claims 1 to 3, wherein the reference image is a first reference image of at least two available reference images, and the instructions for creating a candidate list for reference motion vectors for the reference image comprise instructions to create a single motion vector candidate list for the at least two available reference images , Vorrichtung nach Anspruch 4, wobei die Anweisungen des Weiteren Anweisungen umfassen für: das Bestimmen eines ersten zeitlichen Unterschieds zwischen dem aktuellen Bild und dem ersten Referenzbild; das Bestimmen eines zweiten zeitlichen Unterschieds zwischen dem aktuellen Bild und dem zweiten Referenzbild der zumindest zwei verfügbaren Referenzbilder; das Einschließen eines ersten Bewegungsvektors verbunden mit dem ersten Referenzbild in der Kandidatenliste für die Referenz-Bewegungsvektoren; und das Vergrößern, in Reaktion darauf, dass der erste zeitliche Unterschied länger ist als der zweite zeitliche Unterschied, der Magnitude eines zweiten Bewegungsvektors, der dem zweiten Referenzbild zugeordnet ist, zur Einbeziehung in die Kandidatenliste der Referenz-Bewegungsvektoren; und das Verkleinern, in Reaktion darauf, dass der erste zeitliche Unterschied kürzer ist als der zweite zeitliche Unterschied, der Magnitude eines zweiten Bewegungsvektors, der dem zweiten Referenzbild zugeordnet ist, zur Einbeziehung in die Kandidatenliste der Referenz-Bewegungsvektoren.The apparatus of claim 4, wherein the instructions further include instructions for: determining a first time difference between the current image and the first reference image; determining a second time difference between the current image and the second reference image of the at least two available reference images; including a first motion vector associated with the first reference picture in the candidate motion vector candidate list; and increasing, in response to the first time difference being longer than the second time difference, the magnitude of a second motion vector associated with the second reference picture, for inclusion in the candidate list of reference motion vectors; and decreasing, in response to the first temporal difference being shorter than the second temporal difference, the magnitude of a second motion vector associated with the second reference image, for inclusion in the candidate list of reference motion vectors. Vorrichtung nach irgendeinem der Ansprüche 1 bis 5, wobei die Referenz-Blöcke räumlich nebeneinander liegende Blöcke des aktuellen Bildes, einen gemeinsam genutzten Block innerhalb eines vorherigen Bildes und räumlich nebeneinander liegende Blöcke des gemeinsam genutzten Blocks innerhalb des vorherigen Bildes beinhalten.Apparatus according to any one of claims 1 to 5, wherein the reference blocks include spatially adjacent blocks of the current picture, a shared block within a previous picture and spatially adjacent blocks of the shared block within the previous picture. Vorrichtung nach Anspruch 6, wobei die räumlich nebeneinander liegenden Blöcke des gemeinsam genutzten Blocks innerhalb des vorherigen Bildes jeweils eine kleinste verfügbare Vorhersageblockgröße umfassen und in Kontakt mit einer entsprechenden Ecke des gemeinsam genutzten Blocks sind.The apparatus of claim 6, wherein the spatially adjacent blocks of the shared block within the previous frame each comprise a smallest available prediction block size and are in contact with a corresponding corner of the shared block. Vorrichtung nach irgendeinem der Ansprüche 1 bis 7, wobei die Anweisungen des Weiteren Anweisungen für das Berechnen des Beliebtheitswertes für jeden Bewegungsvektor innerhalb der Kandidatenliste der Referenz-Bewegungsvektoren sing umfasst.The apparatus of any one of claims 1 to 7, wherein the instructions further comprise instructions for calculating the popularity value for each motion vector within the candidate list of reference motion vectors sing. Vorrichtung nach irgendeinem der Ansprüche 1 bis 8, wobei die Anweisungen zum Erzeugen der Kandidatenliste für Referenz-Bewegungsvektoren Anweisungen umfasst zum: Suchen nach einem Referenzbildindex des Referenzbildes für Bewegungsvektoren, die für die Inter-Vorhersage der Referenz-Blöcke verwendet werden; und Beinhalten beliebiger Bewegungsvektoren, die für die Inter-Vorhersage der Referenz-Blöcke, die den Referenzbildindex in der Kandidatenliste der Referenz-Bewegungsvektoren haben, verwendet werden.Apparatus according to any one of claims 1 to 8, wherein the instructions for generating the candidate list for reference motion vectors comprises instructions for: Searching for a reference picture index of the reference picture for motion vectors used for inter-prediction of the reference blocks; and Include any motion vectors used for inter-prediction of the reference blocks having the reference picture index in the candidate list of reference motion vectors.
DE202016008160.9U 2016-01-29 2016-12-23 Dynamic coding mode for reference motion vectors Active DE202016008160U1 (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201662288553P 2016-01-29 2016-01-29
US62/288,553 2016-01-29
US15/131,079 2016-04-18
US15/131,079 US10397600B1 (en) 2016-01-29 2016-04-18 Dynamic reference motion vector coding mode
US201662330491P 2016-05-02 2016-05-02
US62/330,491 2016-05-02
US15/373,518 US10462457B2 (en) 2016-01-29 2016-12-09 Dynamic reference motion vector coding mode
US15/373,518 2016-12-09

Publications (1)

Publication Number Publication Date
DE202016008160U1 true DE202016008160U1 (en) 2017-04-25

Family

ID=57794393

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016008160.9U Active DE202016008160U1 (en) 2016-01-29 2016-12-23 Dynamic coding mode for reference motion vectors
DE102016125593.9A Active DE102016125593B4 (en) 2016-01-29 2016-12-23 Dynamic reference motion vector encoding mode

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE102016125593.9A Active DE102016125593B4 (en) 2016-01-29 2016-12-23 Dynamic reference motion vector encoding mode

Country Status (2)

Country Link
DE (2) DE202016008160U1 (en)
GB (1) GB2547754B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12058309B2 (en) 2018-07-08 2024-08-06 Mellanox Technologies, Ltd. Application accelerator
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953152B1 (en) 2004-06-28 2011-05-31 Google Inc. Video compression and encoding method
WO2011095260A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Managing predicted motion vector candidates
US9510009B2 (en) 2010-05-20 2016-11-29 Thomson Licensing Methods and apparatus for adaptive motion vector candidate ordering for video encoding and decoding
US20130208795A1 (en) * 2012-02-09 2013-08-15 Google Inc. Encoding motion vectors for video compression
JP6135250B2 (en) 2013-03-29 2017-05-31 株式会社Jvcケンウッド Image coding apparatus, image coding method, and image coding program

Also Published As

Publication number Publication date
GB2547754B (en) 2020-08-26
DE102016125593A1 (en) 2017-08-03
GB2547754A (en) 2017-08-30
GB201621809D0 (en) 2017-02-01
DE102016125593B4 (en) 2022-10-27

Similar Documents

Publication Publication Date Title
DE102016125117B4 (en) Motion vector coding with dynamic reference motion vectors
DE102016125379B4 (en) Motion vector breakdown of the last frame
DE102016125094A1 (en) Selection of the reference motion vector via reference frame Buffer Tracking
DE202016008175U1 (en) Adaptive directed intra-prediction with block size
DE102016125125B4 (en) Tile copying for video compression
DE202016008164U1 (en) Intelligent sorting of recursive block partitioning for advanced intra-prediction in video coding
DE202016008155U1 (en) Hybrid prediction modes for encoding videos
DE202016008178U1 (en) Motion vector prediction using a previous frame residual
DE112017003212T5 (en) Method and system for video coding with context decoding and reconstruction workaround
DE112015003805T5 (en) MOTION COMPENSATED PARTITIONING
DE102016124909A1 (en) Motion vector prediction by scaling
DE112022004563T5 (en) HYBRID, NEURAL NETWORK-BASED, END-TO-END IMAGE AND VIDEO CODING METHODS
DE102016125086A1 (en) Adaptive directional loop filter
DE102016015996B3 (en) Adaptive tile data size encoding for video and image compression
DE102016125456A1 (en) Kodierinterpolationsfilter
DE112015005159B4 (en) CODING IN ALTERNATE BLOCK LIMITED DECISION MODE
US20220094950A1 (en) Inter-Prediction Mode-Dependent Transforms For Video Coding
DE102016125593B4 (en) Dynamic reference motion vector encoding mode
DE202016008368U1 (en) Adaptive overlap block prediction in variable block video encoding
DE102011002325A1 (en) Video sequence compression device for e.g. video coder of digital camera, has processing element connected with horizontal and vertical cache memory units for receiving data and performing compression process of video sequence
DE102015103827A9 (en) Error tracking and error mitigation for video compression based on motion compensation
DE102016125449A1 (en) Estimate motion in a super-wide area to encode a video
DE102022126701A1 (en) LOW FREQUENCY NON-SEPARABLE TRANSFORMATION AND MULTIPLE TRANSFORM SELECTION DEADLOCK PREVENTION
DE19702728A1 (en) Construction method for picture coded in two directions from two reference pictures

Legal Events

Date Code Title Description
R207 Utility model specification
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: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years