Entropy coding of motion vector differences.
Abstract
A decoder for decoding a video from a data stream into which horizontal and vertical components of motion vector differences are coded using binarizations of the horizontal and vertical components is described, the binarizations equaling a truncated unary code of the horizontal and vertical components, respectively, within a first interval of the domain of the horizontal and vertical components below a cutoff value, and a combination of a prefix in form of the truncated unary code for the cutoff value and a suffix in form of a Exp-Golomb code of the horizontal and vertical components, respectively, within a second interval of the domain of the horizontal and vertical components inclusive and above the cutoff value, wherein the cutoff value is two and the Exp-Golomb code has order one. An entropy decoder is configured to, for the horizontal and vertical components of the motion vector differences, derive the truncated unary code from the data stream using context- adaptive binary entropy decoding with exactly one context per bin position of the truncated unary code, which is common for the horizontal and vertical components of the motion vector differences, and the Exp-Golomb code using a constant equi-probability bypass mode to obtain the binarizations of the motion vector differences. A desymbolizer is configured to debinarize the binarizations of the motion vector difference syntax elements to obtain integer values of the horizontal and vertical components of the motion vector differences; A reconstructor is configured to reconstruct the video based on the integer values of the horizontal and vertical components of the motion vector differences.

Term
5.7 yearsleft in the term
Expires 18 June 2032.
- Priority
- Filed
- Granted
- Today
- Expires
32 claims: 16 independent, 16 dependent
- 1REIVINDICACIONES 1. Decodificador para decodificar un video a partir del flujo de datos en el cual los componentes horizontales y verticales de diferencias de vector de movimiento son 5 codificados usando binarizaciones de los componentes horizontales y verticales, las binarizaciones igualando un código unario truncado de los componentes horizontales y verticales, respectivamente, dentro de un primer intervalo del dominio de los componentes horizontales y verticales bajo un valor de corte, y una combinación de un prefijo en forma de un código unario truncado para el valor de 10 corte y un sufijo en forma de un código Exp-Golomb de los componentes horizontales y verticales, respectivamente, dentro de un segundo intervalo del dominio de los componentes horizontales y verticales inclusive sobre el valor de corte, CARACTERIZADO porque el valor de corte es dos y el código Exp-Golomb tiene orden uno, comprendiendo 15 - un decodificador de entropía configurado para los componentes horizontales y verticales de las diferencias del vector de movimiento, deriva el código unario truncado del flujo de datos usando decodificación de entropía binaria de contexto adaptativo decodificando con exactamente un contexto por posición de bin del código unario truncado, el cual es común para los componentes horizontales y verticales de las diferencias del vector de movimiento, y el código Exp-Golomb usando un modo de derivación de equi-probabilidad 141 constante para obtener las binarizaciones de las diferencias del vector de movimiento;- un des-simbolizador configurado para debinarizar las binarizaciones de los elementos de sintaxis de la diferencia del vector de movimiento para obtener 5 valores enteros de los componentes horizontales y verticales de las diferencias de vector de movimiento;- un reconstructor configurado para reconstruir el video basado en los valores enteros de los componentes horizontales y verticales de las diferencias del vector de movimiento. 10
- 2Decodificador de acuerdo a la reivindicación 1, CARACTERIZADO porque el decodificador de entropía (409) es configurado para derivar el código unario truncado (806) del flujo de datos (401) usando decodificación binaria aritmética o decodificación binaria PIPE.
- 3Decodificador de acuerdo a la reivindicación 1 ó 2, CARACTERIZADO porque el 15 decodificador de entropía (409) es configurado para usar diferentes contextos para las dos posiciones de bins del código unario truncado (806).
- 4Decodificador de acuerdo a cualquiera de las reivindicaciones 1 a 3, CARACTERIZADO porque el decodificador de entropía (409) es configurado para realizar una actualización del estado de probabilidad, para un bin derivado 20 actualmente de un código unario truncado (806), en transición desde un estado de probabilidad actual asociado con el contexto seleccionado para el bin actualmente derivado, a un nuevo estado de probabilidad dependiendo en el bin actualmente derivado. ñf 142 ί i;ν ΙΜ Es'STi nz ;LA ρ;f;·
- 5Decodificador de acuerdo a cualquiera de las reivindicaciones 1 a 4, CARACTERIZADO porque el decodificador de entropía (409) es configurado para decodificar aritmética binaria un bin actualmente a ser derivado de un código unario truncado (806) cuantificando un valor de ancho de intervalo de probabilidad actual 5 representando un intervalo de probabilidad actual para obtener un índice de intervalo de probabilidad y realizar una subdivisión de intervalo indexando una entrada de tabla entre entradas de tablas usando el índice de intervalo de probabilidad y un índice de estado de probabilidad dependiendo en un estado de probabilidad actual asociado con el contexto seleccionado para el bin actualmente a 10 ser derivado, para obtener una subdivisión del intervalo de probabilidad actual en dos intervalos parciales.
- 6Decodificador de acuerdo a la reivindicación 5, CARACTERIZADO porque el decodificador de entropía (409) es configurado para usar una representación de 8 bits para el valor de ancho de intervalo de probabilidad actual y para tomar 2 ó 3 15 bits más significativos de las representación de 8 bits cuantificando el valor de ancho de intervalo de probabilidad actual.
- 7Decodificador de acuerdo a la reivindicación 5 ó 6, CARACTERIZADO porque el decodificador de entropía (409) es configurado para seleccionar entre los dos intervalos parciales basados en un valor de estado offset desde un interior del 20 intervalo de probabilidad actual, actualizar el valor del ancho del intervalo de probabilidad y el valor de estado de offset, e inferir un valor del bin actualmente a ser derivado, usando el intervalo parcial seleccionado, y realizar una renormalización del valor de ancho del intervalo de probabilidad actualizado y el 143 valor de estado de offset incluyendo una continuación de lectura de bits desde el flujo de datos (401).
- 8Decodificador de acuerdo a cualquiera de las reivindicaciones 5 a 7, CARACTERIZADO porque el decodificador de entropía (409) es configurado en el 5 modo de derivación de equi-probabilidad constante, decodificación binaria aritmética un bin del código de Exp-Golomb reduciendo a la mitad el valor del ancho del intervalo de probabilidad actual para obtener una subdivisión del intervalo de probabilidad actual en dos intervalos parciales.
- 9Decodificador de acuerdo a cualquiera de las reivindicaciones 1 a 8,
- 1010 CARACTERIZADO porque el decodificador de entropía (409) es configurado para cada diferencia de vector de movimiento, derivar el código unario truncado de los componentes horizontales y verticales de la respectiva diferencia del vector de movimiento del flujo de datos, antes del código de Exp-Golomb de los componentes horizontales y verticales de la respectiva diferencia del vector de movimiento. 15 10. Decodificador de acuerdo a cualquiera de las reivindicaciones 1 a 9, CARACTERIZADO porque el reconstructor es configurado para predecir espacial y/o temporalmente los componentes horizontales y verticales de vectores de movimiento de manera de obtener predictores para los componentes horizontales y verticales de los vectores de movimientos y reconstruir los componentes 20 horizontales y verticales de los vectores de movimiento refinando los predictores 826 usando los componentes horizontales y verticales de las diferencias del vector de movimiento. 144
- 11Decodificador de acuerdo a cualquiera de las reivindicaciones 1 a 10, CARACTERIZADO porque el reconstructor es configurado para predecir componentes horizontales y verticales de vectores de movimiento en diferentes formas de manera de obtener una lista ordenada de predictores para los componentes horizontales y verticales de vectores de movimiento, obtener un índice de lista del flujo de datos y reconstruir los componentes horizontales y verticales de vectores de movimiento refinando el predictor al cual el predictor de la lista a la cual el índice de lista apunta usando los componentes horizontales y verticales de las diferencias del vector de movimiento.
- 12Decodificador de acuerdo a las reivindicaciones 10 u 11, CARACTERIZADO porque el reconstructor es configurado para reconstruir el video usando la predicción compensado por movimiento por uso de los componentes horizontales y verticales de vectores de movimiento.
- 13Decodificador de acuerdo a la reivindicación 12, CARACTERIZADO porque el reconstructor es configurado para reconstruir el video usando la predicción compensada por movimiento aplicando los componentes horizontales y verticales de vectores de movimiento en una granularidad espacial definida por una subdivisión de las imágenes de los videos en bloques, donde el reconstructor usa elementos de sintaxis de fusión presente en el flujo de datos de manera de agrupar los bloques en grupos de fusión y aplica los valores enteros de los componentes horizontales y verticales de las diferencias del vector de movimiento por el debinarizador, en unidades de grupos de fusión. 145
- 14Decodificador de acuerdo a la reivindicación 13, CARACTERIZADO porque el reconstructor es configurado para derivar la subdivisión de las imágenes del video en bloques a partir de una porción del flujo de datos excluyendo los elementos de sintaxis de fusión.
- 15Decodificador de acuerdo a la reivindicación 13 ó 14, CARACTERIZADO porque el reconstructor es configurado para adoptar los componentes horizontales y verticales de un vector de movimiento predeterminado para todos los bloques de un grupo fusionado asociado, o refínar el mismo por los componentes horizontales y verticales de las diferencias de vector de movimiento asociado con los bloques del grupo fusionado. kTjtodificador para codificar un video en un flujo de datos, CARACTERIZADO porque comprende:- un constructor configurado para codificar de manera predictiva el video por predicción de movimiento compensado usando vectores de movimiento y codificando de manera predictiva los vectores de movimiento prediciendo los vectores de movimiento y estableciendo valores enteros de componentes horizontales y verticales de diferencias de vector de movimiento para representar un error de predicción de los vectores de movimientos predichos;- un simbolizador configurado para binarizar los valores enteros para obtener binarizaciones de los componentes horizontales y verticales de las diferencias de vector de movimiento, las binarizaciones igualando un código unario truncado de los componentes horizontales y verticales, respectivamente, dentro de un primer intervalo del dominio de los componentes horizontales y verticales bajo 146 un valor de corte, y una combinación de un prefijo en forma de un código unario truncado para el valor de corte y un sufijo en forma de un código Exp-Golomb de los componentes horizontales y verticales, respectivamente, dentro de un segundo intervalo del dominio de los componentes horizontales y verticales inclusive y sobre el valor de corte, donde el valor de corte es dos y el código Exp-Golomb tiene orden uno;y - un codificador de entropía configurado para los componentes horizontales y verticales de las diferencias de vector de movimiento, codificar el código unario truncado en el flujo de datos usando codificación de entropía binaria de contexto adaptativo con exactamente un contexto por posición de bin del código unario truncado, el cual es común para los componentes horizontales y verticales de las diferencias de vector de movimiento, y el código Exp-Golomb usando un modo de derivación de equi-probabilidad constante.
- 1617. Codificador de acuerdo a la reivindicación 16, CARACTERIZADO porque el codificador de entropía es configurado para codificar el código unario truncado en el flujo de datos usando codificación aritmética binaria o codificación binaria PIPE.
- 1718. Codificador de acuerdo a la reivindicación 16 o 17, CARACTERIZADO porque el codificador de entropía es configurado para usar diferentes contextos para las dos posiciones de bin del código unario truncado.
- 1819. Codificador de acuerdo a cualquiera de las reivindicaciones 16 a 18, CARACTERIZADO porque el codificador de entropía es configurado para realizar una actualización del estado de probabilidad, para un el bin actualmente codificado fuera del código unario truncado mediante transición del estado de probabilidad 147 actual asociado con el contexto seleccionado para el bin codificado actualmente, a un nuevo estado de probabilidad dependiendo en el bin actualmente derivado.
- 1920. Codificador de acuerdo a cualquiera de las reivindicaciones 16 a 19, CARACTERIZADO porque el codificador de entropía es configurado para codificar un binario aritmético un bin actualmente a ser codificado fuera del código unario truncado cuantificando un valor de ancho de intervalo de probabilidad actual representando un intervalo de probabilidad actual para obtener un índice de intervalo de probabilidad y realizando una subdivisión de intervalo indexando una entrada de tabla entre entradas de tablas usando el índice de intervalo de probabilidad y un índice de estado de probabilidad dependiendo de un estado de probabilidad actual asociado con el contexto seleccionado para el bin actualmente a ser derivado, para obtener una subdivisión del intervalo de probabilidad actual en dos intervalos parciales.
- 2021. Codificador de acuerdo a la reivindicación 20, CARACTERIZADO porque el codificador de entropía es configurado para usar una representación de 8 bits para el valor de ancho de intervalo de probabilidad actual y para tomar 2 ó 3 bits más representativos de las representación de 8 bits cuantificando el valor de ancho de intervalo de probabilidad actual.
- 2122. Codificador de acuerdo a la reivindicación 20 ó 21, CARACTERIZADO porque el codificador de entropía es configurado para seleccionar entre los dos intervalos parciales basados en el valor entero del bin actualmente a ser codificado, actualizar el valor de ancho de intervalo de probabilidad y un offset de intervalo de probabilidad usando el intervalo parcial seleccionado y realizar una renormalización Τ £ I ίν:ίΝΕϊ.·;υ r. DE LA > íAt, 148 V del valor de ancho de intervalo de probabilidad y el offset de intervalo de probabilidad incluyendo una continuación de escritura de bits al flujo de datos.
- 2223. Codificador de acuerdo a cualquiera de las reivindicaciones 20 a 21, CARACTERIZADO porque el codificador de entropía es configurado para 5 codificar binario aritmético un bin fuera del código Exp-Golomb reduciendo a la mitad el valor del ancho del intervalo de probabilidad para obtener una subdivisión del intervalo de probabilidad actual en dos intervalos parciales.
- 2324. Codificador de acuerdo a cualquiera de las reivindicaciones 16 a 23, CARACTERIZADO porque el codificador de entropía es configurado para cada 10 diferencia de vector de movimiento, codificar un código unario truncado de los componentes horizontales y verticales de la respectiva diferencia de vector de movimiento en el flujo de datos, antes del código Exp-Golomb de los componentes horizontales y verticales de la respectiva diferencia de vector de movimiento.
- 2425. Codificador de acuerdo a cualquiera de las reivindicaciones 16 a 24, 15 CARACTERIZADO porque el constructor es configurado para predecir espacial y/o temporalmente los componentes horizontales y verticales de los vectores de movimiento de manera de obtener predictores para los componentes horizontales y verticales de vectores de movimiento y determinar los componentes horizontales y verticales de las diferencias de vector de movimiento de manera de refinar los 20 predictores hacia los componentes horizontales y verticales de vectores de movimiento.
- 2526. Codificador de acuerdo a cualquiera de las reivindicaciones 16 a 25, CARACTERIZADO porque el constructor es configurado para predecir los 149 componentes horizontales y verticales de los vectores de movimiento en diferentes formas de manera de obtener una lista ordenada de predictores para los componentes horizontales y verticales de vectores de movimiento, determinar un índice de lista e insertar información revelando la misma en el flujo de datos y 5 determinar los componentes horizontales y verticales de las diferencias de vector de movimiento de manera de refinar el predictor al cual un predictor de la lista a la cual el índice de lista apunta hacia los componentes horizontales y verticales de vectores de movimiento.
- 2627. Codificador de acuerdo a cualquiera de las reivindicaciones 16 a 26, 10 CARACTERIZADO porque el constructor es configurado para codificar el video usando la predicción compensada por movimiento aplicando los componentes horizontales y verticales de vectores de movimiento en una granularidad espacial definida por una subdivisión de imágenes de video en bloques, donde el constructor determina, e inserta en el flujo de datos, fusionando elementos de sintaxis de 15 manera de agrupar los bloques de grupos de fusión y aplicar los valores enteros de los componentes horizontales y verticales de las diferencias de vector de movimiento sujeto a binarización por el debinarizador, en unidades grupos de fusión.
- 2728. Codificador de acuerdo a la reivindicación 27, CARACTERIZADO porque el 20 constructor es configurado para codificar la subdivisión de las imágenes de video en bloques en una porción del flujo de datos excluyendo los elementos de sintaxis fusionados. 150 D¿ LA Γί\€'Ρ1£·>.·'.^ζ industrial
- 2829. Codificador de acuerdo a la reivindicación 27 ó 28, CARACTERIZADO porque el constructor es configurado para adoptar los componentes horizontales y verticales de un vector de movimiento predeterminado para todos los bloques de un grupo de fusión asociado, o refinar el mismo por los componentes horizontales y verticales de 5 las diferencias de vector de movimiento asociado con los bloques del grupo de fusión.
- 2930. Método para decodificar un video a partir del flujo de datos en los cuales los componentes horizontales y verticales de las diferencias de vector de movimiento son codificados usando binarizaciones de los componentes horizontales y verticales, 10 las binarizaciones igualando un código unario truncado de los componentes horizontales y verticales respectivamente, dentro de un primer intervalo del dominio de componentes horizontales y verticales bajo un valor de corte, y una combinación de un prefijo en forma de un código unario truncado para el valor de corte y un sufijo en forma de un código Exp-Golomb de los componentes horizontales y 15 verticales, respectivamente, dentro de un segundo intervalo del dominio de componentes horizontales y verticales inclusive, y sobre el valor de corte, CARACTERIZADO porque el valor de corte es dos y el código Exp-Golomb tiene orden uno, comprendiendo - para los componentes horizontales y verticales de las diferencias de vector de 20 movimiento, derivando el código unario truncado del flujo de datos usando decodificación de entropía binaria de contexto adaptativo con exactamente un contexto por posición de bin del código unario truncado, el cual es común para los componentes horizontales y verticales de las diferencias de vector de 151 movimiento, y el código Exp-Golomb usando un modo de derivación de equiprobabilidad constante para obtener las binarizaciones de diferencias de vector de movimiento;- debinarizando las binarizaciones de los elementos de sintaxis de diferencia de vector de movimiento para obtener valores enteros de los componentes horizontales y verticales de las diferencias de vector de movimiento;- reconstruyendo el video basado en los valores enteros de los componentes horizontales y verticales de las diferencias de vector de movimiento.
- 3031. Método para codificar un video en un flujo de datos, CARACTERIZADO porque comprende:- codificar de manera predictiva el video por predicción de movimiento compensado usando vectores de movimiento y codificar de manera predictiva los vectores de movimiento prediciendo los vectores de movimiento y estableciendo valores enteros de componentes horizontales y verticales de diferencias de vector de movimiento para representar un error de predicción de los vectores de movimiento predichos;- binarizando los valores enteros para obtener binarizaciones de los componentes horizontales y verticales de las diferencias de vector de movimiento, las binarizaciones igualando un código unario truncado de los componentes, respectivamente, dentro de un primer intervalo del dominio de los componentes horizontales y verticales bajo un valor de corte, y una combinación de un prefijo en forma de un código unario truncado para el valor de corte y un sufijo en forma de un código Exp-Golomb de los componentes horizontales y verticales, ΐ 152 respectivamente, dentro de un segundo intervalo del dominio de los componentes horizontales y verticales inclusive y sobre el valor de corte, donde el valor de corte es dos y el código Exp-Golomb tiene orden uno;y - para los componentes horizontales y verticales de las diferencias de vector de movimiento, codificando el código unario truncado en el flujo de datos usando la codificación de entropía binaria de contexto adaptativo con exactamente un contexto por posición de bin del código unario truncado, el cual es común para los componentes horizontales y verticales de las diferencias de vector de movimiento, y el código Exp-Golomb usando el modo de derivación de equiprobabilidad constante.
- 3132. Un medio de almacenamiento legible por computadora para decodificar un video a partir del flujo de datos, que comprende el método de la reivindicación 30.
- 3233. Un medio de almacenamiento legible por computadora para codificar un video en un flujo de datos, que comprende el método de la reivindicación 31. 153
Independent claims32
895 paragraphs in 40 sections, as filed
(54) Title: ENTROPY CODING FOR VECTOR MOVEMENT DIFFERENCES.
(54) Title: ENTROPY CODING OF MOTION VECTOR DIFFERENCES.
(57) Summary
A decoder is described for decoding a video from the data stream in which the horizontal and vertical components of motion vector differences are encoded using binarizations of the horizontal and vertical components, the binarizations equating a truncated unary code of the horizontal components. and vertical, respectively, within a first interval of the domain of the horizontal and vertical components under a cut-off value, and a combination of a prefix in the form of a truncated unary code for the cutoff value and a suffix in the form of an Exp-Golomb code of the horizontal and vertical components, respectively, within a second range of the domain of the horizontal components and verticals inclusive and above the cutoff value, where the cutoff value is two and the Exp-Golomb code has order one. An entropy decoder is configured, for the horizontal and vertical components of motion vector differences, to derive the truncated unary code from the data stream using adaptive context binary entropy decoding with exactly one context per bin position of the truncated unary code. , which is common for the horizontal and vertical components of motion vector differences, and the Exp-Golomb code using a constant equi-probability derivation mode to obtain the binarizations of the motion vector differences. A de-symbolizer is configured to debinarize the binarizations of the motion vector difference syntax elements to obtain integer values of the horizontal and vertical components of the motion vector differences. A reconstructor is configured to reconstruct the video based on the integer values of the horizontal and vertical components of the motion vector differences.
(57) Abstract
A decoder for decoding a video from a data stream into which horizontal and vertical components of motion vector differences are coded using binarizations of the horizontal and vertical components is described, the binarizations equaling a truncated unary code of the horizontal and vertical components, respectively, within a first interval of the domain of the horizontal and vertical components below a cutoff valué, and a combination of a prefix in form of the truncated unary code for the cutoff valué and a suffix in form of a Exp-Golomb code of the horizontal and vertical components, respectively, within a second interval of the domain of the horizontal and vertical components inclusive and above the cutoff valué, where the cutoff valué is two and the Exp-Golomb code has order one. An entropy decoder is configured to, for the horizontal and vertical components of the motion vector differences, derive the truncated unary code from the data stream using context- adaptive binary entropy decoding with exactly one context per bin position of the truncated unary code, which is common for the horizontal and vertical components of the motion vector differences, and the Exp-Golomb code using a constant equi-probability bypass mode to obtain the binarizations of the motion vector differences. A desymbolizer is configured to debinarize the binarizations of the motion vector difference syntax elements to obtain integer values of the horizontal and vertical components of the motion vector differences; A reconstructor is configured to reconstruct the video based on the integer valúes of the horizontal and vertical components of the motion vector differences.
Institute
Mexican Property
Industrial
<img file="MX336735B_D0001.tif" />
PATENT TITLE NO. 336735 _SE
-H HIIARH DI LOSOSIA.
i, '-, 9 i
M
P
I
Owner (s): FRAUNHOFER-GESELLSCHAFT ZUR FÓRDERUNG DER ANGEWANDTEN
FORSCHUNG EV
Address: Hansastrasse 27C, 80686, Munich, GERMANY
Denomination: ENTROPY CODING FOR MOTION VECTOR DIFFERENCES
Classification: lnt.CI.8: H03M7 / 42; H04N19 / 61
Inventor (s): VALERI GEORGE; BENJAMIN BROSS; HEINER KIRCHHOFFER; DETLEV
MARPE; TUNG NGUYEN; MATTHIAS PREIS.S; MISCHA SIEKMANN; JAN
<img file="MX336735B_D0002.tif" />
industrial.
ogables, entities subscribe to this Industrial Property (Diano 2 (> 1/2004, 06/16/2005, 25, it has been published by I 1/2006, OI I and lll di e based on Id Federación (DOF ) 27/067 .ey of / 05/1999,
V gence: Twenty and the f Msha of Venciftiient
The latent reference is organized based on<sup>1</sup>
Or conformity with the i c <tada from the d <achos.
) 23 of laftey of the Profxgdai de preseifljaclón of the solftjfu lll and 7 ° bis 2 of _____ 25/10/1996, 12/26/1997,
5 / 2009,06 / 01/2010, 06/18/2010, 06/28/2010, 27 »lfcÓÍ2 and 04/09/2012); articles 1®, 3 * action V
WgWIIWWaWWWIIWW'MIMIIMIWiWWWWWWWtatW ^ el
07/01/2002, 07/15/2004, 07/28/2004 and 09/07/2007); Articles 1, 3, 4, 5, section V, Section a), 16 sections 1 and lll and 30 of the Organic Statute of the Mexican Institute of Industrial Property (DOF 12/27/1990, amended on 10/10/2002 , 07/29/2004, 08/04/2004 and 09/13/2007); 1, 3 and 5 Clause a) of the Agreement that delegates powers to the Deputy Directors General, Coordinator, Divisional Directors, Head of the Regional Offices. Divisional Deputy Directors, Departmental Coordinators and other subordinates of the Mexican Institute of Industrial Property. (DOF 12/15/1999, amended on 02/04/2000, 07/29/2004, 08/04/2004 and 09/13/2007).
<img file="MX336735B_D0003.tif" />
Issue Date: January 29, 2016
THE DIVISIONAL DIRECTOR OF PATENTS n
NAHANNY CANAL REYES
<img file="MX336735B_D0004.tif" />
Sand! No. 550, Floor 1,
Co!. Pueblo Santa María Tepepan, Xochimilco Delegation,
CP 16020. Mexico City Tel. (55) 53 34 07 00 www.iffípi.QOb.iTix
<img file="MX336735B_D0005.tif" />
MX / 2016/9412. IMPIf?
ENTROPY CODING FOR DIFFERENCES-D ^ W ^ SSÍSeV ^ '...... γ --------------' INSf5'rk.?, ¿
3Y33S
MOVEMENT
DESCRIPTIVE MEMORY
FIELD OF THE INVENTION
The present invention relates to an entropy encoding concept for encoding video data.
Many video codes are known in the art. Generally, these codes reduce the amount of data necessary in order to represent the content of the video, that is, they compress the data. In the context of video encoding, it is known that compression of video data is advantageously achieved by sequentially applying different encoding techniques: motion compensation prediction is used in order to predict image content. The motion vectors determined in the motion compensation prediction as well as the prediction residual are subject to entropy coding losses. In order to further reduce the amount of data, the motion vectors are also subject to prediction so that simply motion vector differences representing the remainder of the motion vector prediction has to be encoded by entropy. In H.264, for example, the procedure described above is applied in order to transmit the information in motion vector differences. In particular, motion vector differences are binarized into bin strings corresponding to a combination of a truncated unary code and, of a certain cutoff value in an exponential Golomb code. While the exponential Golomb code bins are easily coded using an equi-probability derivation mode with a fixed probability of 0.5,
<img file="MX336735B_D0006.tif" />
ί ti -. 'ST.i -> ν - ca; · Ό
¿.Λ l ,. INüVSTiÜAL several contexts are provided for the first bins. The cutoff value is chosen to be nine. Consequently, a large number of contexts are provided to encode motion vector differences.
Providing a large number of contexts, however, not only increases the complexity of coding, but can also negatively affect coding efficiency: if a context is visited infrequently, probability adaptation, i.e. adaptation of the Probability estimation associated with the respective context during the entropy coding cause, fails to be carried out effectively. Consequently, improperly applied probability estimates estimate the actual statistics of the symbol. Also, if multiple contexts are provided for a certain bin of the binarization, the selection may need to inspect values of neighboring bins / syntax elements the necessity of which may hinder the execution of the decoding process. On the other hand, if a very low number of contexts are provided, the highly variable real symbol statistics bins are grouped together within a context and consequently the probability estimate associated with that context fails to effectively code the bins associated with the same.
There is an ongoing need to increase the efficiency of motion vector difference entropy encoding.
Accordingly, it is an object of the present invention to provide such a coding concept.
A basic finding of the present invention is that the entropy coding efficiency of motion vector differences can also be increased by reducing the cutoff value up to which the truncated unary code is used with τ «,
JL j
IIíSTf
FROM THE ustr 'iÑ'dustrial S¿S «B¡Ha ^ in order to binarize the motion vector differences, up to two so that there are only two bin positions of the truncated unary code, and if an order of one is used to the exponential Golomb code for the binarization of motion vector differences from the cutoff value in and if, additionally, exactly a context is provided for the two bin positions of the truncated unary code, respectively, so context selection based on bins or neighboring image block syntax element values is not necessary and a very fine classification of the bins at these bin positions in contexts is avoided so that probability matching works properly , and if the same contexts are used for horizontal and vertical components further reducing the negative effects of a very fine context subdivision.
Furthermore, the aforementioned configuration with respect to entropy coding of motion vector differences has been found to be especially valuable when combined with advanced motion vector prediction methods and reducing the required number of motion differences. motion vectors to be transmitted. For example, multiple motion vector predictors can be provided in order to obtain an ordered list of motion vector predictors, and an index in this list of motion vector predictors can be used to determine the actual predictor of the vector. of motion the prediction residual which is represented by the motion vector difference in question. Although the information in the list index used must be derivable from the data stream on the decoding side, the overall prediction quality of the motion vectors increases and consequently the magnitude of the differences in
<img file="MX336735B_D0007.tif" />
Motion vectors is further reduced so that, the coding efficiency is further increased and the reduction in cutoff value and common use of context for vertical and horizontal components of motion vector differences conforms to such improved prediction of motion vector. Furthermore, fusion can be used in order to reduce the number of motion vector differences to be transmitted within the data stream: for this purpose, information fusion can be transmitted within the data stream by signaling to the decoding blocks of a subdivision of blocks that are grouped into a group of blocks. Motion vector differences can then be transmitted within the data stream in units of these merged groups rather than individual blocks, thereby reducing the number of motion vector differences that have to be transmitted.
Since this grouping of blocks reduces the interrelationship between neighboring motion vector differences, the above-mentioned omission of providing multiple contexts for a bin position avoids the entropy coding scheme from very fine classification in contexts depending on the neighboring motion vector differences. Rather, the concept of fusion already exploits the inter-correlation between motion vector differences of neighboring blocks, and consequently, a context for the position of a bin - the same for vertical and horizontal components - is sufficient.
Preferred embodiments of the present application are described below with respect to the Figures among which:
Figure 1 shows a block diagram of an encoder according to one embodiment;
MEXICAN INSTITUTE OF THE INDUSTRIAL PFCOP'WAb
Figures 2a-2c schematically show different sub-divisions of a sample as a block image;
Figure 3 shows a block diagram of a decoder according to an embodiment;
Figure 4 shows a block diagram of an encoder according to an embodiment in more detail;
Figure 5 shows a block diagram of a decoder according to an embodiment in more detail;
Figure 6 schematically illustrates a transformation of a block from a spatial domain to a spectral domain, the resulting transformed block and its re-transformation;
Figure 7 shows a block diagram of an encoder according to one embodiment;
Figure 8 shows a block diagram of a decoder suitable for decoding bit streams generated by the encoder of Figure 8, according to one embodiment;
Figure 9 shows a schematic diagram illustrating a data packet with multiplexed partial bit streams according to one embodiment;
Figure 10 shows a schematic diagram illustrating a data packet with alternative segmentation using fixed size segments according to a further embodiment.
Figure 11 shows a backup decoder mode change according to one embodiment;
<img file="MX336735B_D0008.tif" />
Figure 12 shows a backup decoder mode change according to a further embodiment;
Figure 13 shows an encoder matching the decoder of Figure 11 according to one embodiment;
Figure 14 shows an encoder matching the decoder of Figure 12 according to one embodiment;
Figure 15 shows a plot of pStateCtx and fullCtxState / 256 ** E **.
Figure 16 shows a decoder according to an embodiment of the present invention; Figure 17 shows an encoder according to an embodiment of the present invention;
Figure 18 schematically shows a motion vector difference binarization according to an embodiment of the present invention;
Figure 19 schematically illustrates a fusion concept according to one embodiment; and
Figure 20 schematically illustrates a motion vector prediction scheme according to one embodiment.
It should be noted that during the description of the figures, elements occurring in several of these Figures are indicated with the same reference sign in each of these Figures and a repeated description of these elements in terms of functionality is avoided in order to avoid unnecessary repetitions. However, the functionalities and descriptions provided regarding one figure will apply to other Figures unless explicitly stated otherwise.
<img file="MX336735B_D0009.tif" />
<img file="MX336735B_D0010.tif" />
INSTITUTO MEXJC / .NO DELA INDUSTRIAL PROPERTY
Next, firstly, embodiments of a general concept of video encoding are described, with respect to Figures 1 to 10. Figures 1 to 6 refer to a part of the video codec operating at the syntax level. The following Figures 8 to 10 refer to embodiments for the part of the code related to the conversion of the syntax element stream to the data stream and vice versa. Then, the specific aspects and embodiments of the present invention are described in the form of possible implementations of the general concept representatively outlined with respect to Figures 1 to 10.
Figure 1 shows an example for an encoder 10 in which aspects of the present application can be implemented.
The encoder encodes a set of information samples 20 in a data stream. The set of information samples can represent information samples corresponding to, for example, brightness value, color values, luminance values, chroma values, or the like. However, the information samples may also be depth values in the event that the sample set 20 is a depth map generated by, for example, a light sensor time or the like.
Encoder 10 is a block based encoder. That is, encoder 10 encodes sample set 20 in data stream 30 in block units 40. Coding in block units 40 does not necessarily mean that encoder 10 encodes these blocks 40 completely independent of each other. Rather, the encoder
10 you can use pre-coded block reconstructions to extrapolate or intra-predict remaining blocks, and you can use block granularity to set coding parameters, that is, to set how each sample set corresponds to a respective block is coded.
<img file="MX336735B_D0011.tif" />
Furthermore, encoder 10 is a transform encoder. That is, encoder 10 encodes blocks 40 using a transformer in order to transfer the information samples within each block 40 of the spatial domain into the spectral domain. A two-dimensional transformation like a FFT DCT or the like can be used. Preferably blocks 40 are quadratic or rectangular in shape.
The subdivision of sample assembly 20 into blocks 40 shown in Figure 1 is for illustration purposes only. Figure 1 shows the whole of sample 20 being subdivided into a regular two-dimensional arrangement of quadratic or rectangular blocks 40 that abut each other in a manner that does not overlap. The size of the blocks 40 can be predetermined. That is, encoder 10 may not transfer block size information 40 within data stream 30 next to decoding. For example, the decoder can expect the default block size.
However, several alternatives are possible. For example, blocks can overlap each other. Overlap may, however, be restricted to such an extent that each block has a portion not overlapped by any neighboring Moque, or so that each sample of the blocks overlaps by, at most, one block between neighboring blocks arranged in juxtaposition. to the current block along a predetermined direction. The latter would mean that the left-hand and right-hand neighboring blocks can overlap the current block so as to cover the current block but cannot overlap each other, and the same applies to the neighbors in the vertical and diagonal direction.
<img file="MX336735B_D0012.tif" />
MEXICAN INSTITUTE OF PROPERTY
INDUSTRIAL
As a further alternative, the subdivision of sample set 20 into blocks 40 can be adapted to the content of sample set 20 by encoder 10 with the information of the subdivision in the used sub-division being transferred to the decoder side by bit streams. 30.
Figures 2a to 2c show different examples for a subdivision of a sample set 20 into blocks 40. Figure 2a shows a quadtree based subdivision of a sample set 20 into blocks 40 of different sizes, with representative blocks being indicated in 40a, 40b, 40c and 40d with increased size. According to the subdivision of Figure 2a, sample set 20 is first divided into a regular three-block two-dimensional arrangement 40d which, in turn, has individual subdivision information associated therewith according to which a certain Tree block can be subdivided according to a quadtree structure or not. The tree block to the left of block 40d is exemplary subdivided into smaller blocks according to a quadtree structure. Encoder 10 can perform a two-dimensional transformation for each of the blocks shown with solid and broken lines in Figure 2a. In other words, encoder 10 can transform set 20 into units of the block subdivision.
Instead of a quadtree-based sub-division, a more general multi-tree-based subdivision can be used and the number of child nodes per hierarchy level may differ between different hierarchy levels.
Figure 2b shows another example for a subdivision. According to Figure
2b, sample assembly 20 is first divided into macroblocks 40b arranged in a regular two-dimensional arrangement in a non-overlapping bearing manner.
<img file="MX336735B_D0013.tif" />
mutually where each macro-block 40b has associated subdivision information according to which a macro-block is not subdivided, or, if subdivided, subdivided in a regular two-dimensional manner into uniformly dimensioned sub-blocks in order to achieve different granularities sub-division for different macro-blocks. The result is a subdivision of sample set 20 into differently dimensioned blocks 40 with representatives of different sizes being indicated at 40a, 40b, and 40a '. As in Figure 2a, encoder 10 performs a two-dimensional transformation on each of the blocks shown in Figure 2b with solid and broken lines. Figure 2c will be discussed later.
Figure 3 shows a decoder 50 being able to decode the data stream 30 generated by the encoder 10 to reconstruct a reconstructed version 60 of the sample set. Decoder 50 extracts the transform coefficient block for each of the blocks 40 from the data stream 30 and rebuilds the reconstructed version 60 by performing an inverse transform on each of the transform coefficient blocks.
Encoder 10 and decoder 50 can be configured to perform entropy encoding / decoding in order to insert the information into the transform coefficient blocks at, and extract this information from the data stream, respectively. Details in this regard according to different embodiments are described below. It should be noted that data stream 30 does not necessarily comprise information in the transform coefficient blocks for all blocks 40 of sample set 20. Rather, as sub-sets of blocks 40 they can be encoded into bit streams 30 of another way. For example, the encoder
<img file="MX336735B_D0014.tif" />
You may decide to refrain from inserting a transform coefficient block for a certain block block 40 by inserting into the bitstreams 30 alternative encoding parameters that allow decoder 50 to predict or populate the respective block in reconstructed version 60. For example, the encoder 10 may perform a texture analysis to locate blocks within a sample set 20 that can be filled on the decoder side by the decoder as a texture synthesis and indicate this within the streams. bit.
As discussed with respect to the following Figures, the transform coefficient blocks do not necessarily represent a spectral domain representation of the original information samples from a respective block 40 of the sample set 20. Rather, such a transform coefficient block it can represent a spectral domain representation of a prediction residual of the respective block 40. Figure 4 shows an embodiment for said encoder. The encoder of Figure 4 comprises a transformation stage 100, an entropy encoder 102, a reverse transformation stage 104, a predictor 106 and a subtractor 108 as well as an adder 110. The subtractor 108, transformation stage 100 and entropy encoder 102 is serially connected in the order mentioned between input 112 and output 114 of the encoder of Figure 4. Inverse transformation stage 104, adder 110 and predictor 106 are connected in the order mentioned between the output of transformation stage 100 and the inverse input of subtractor 108, with the output of predictor 106 also being connected to an additional output of the adder 110.
The Figure 4 encoder is a transformation based block predictive encoder. That is, the blocks of a sample set 20 that enters the input
<img file="MX336735B_D0015.tif" />
112 they are predicted from previously encoded and reconstructed portions of the same sample set 20 or other previously encoded and reconstructed sample sets that may precede or succeed the current sample set 20 at presentation time. Prediction is done by predictor 106. The subtractor 108 subtracts the prediction from said original block and transformation step 100 performs a two-dimensional transformation on the prediction residuals. The two-dimensional transformation itself or a subsequent internal measurement transformation step 100 can result in a quantification of the transformation coefficients within the transformation coefficient blocks. The quantized transform coefficient blocks are lossless encoded by, for example, entropy encoding within entropy encoder 102 with the resulting data stream being an output at output 114. Inverse transformation step 104 reconstructs the quantized residual and adder 110, in turn, combines the reconstructed residual with the corresponding prediction, in order to obtain reconstructed information samples based on which predictor 106 can predict the currently encoded prediction blocks aforementioned. Predictor 106 can use different prediction modes such as intra prediction modes and inter prediction modes in order to predict blocks and the prediction parameters are forwarded to entropy encoder 102 for insertion into the data stream. For each prediction inter20 prediction block, the respective motion data is inserted into the bitstreams by the entropy encoder 114 in order to allow the decoding side to redo the prediction. Motion data for an image prediction block may involve a syntax portion including the syntax element representing a
<img file="MX336735B_D0016.tif" />
f INSTITb'O Γ-Ό L DE Ln. . I AD. . . »> '· INUuaiftiAL differs from a motion vector by encoding the motion vector differently for the current prediction block from a derived motion vector predictor, for example, by means of a prescribed method from the Motion vectors of already encoded neighboring prediction blocks.
That is, according to the embodiment of Figure 4, the transform coefficient blocks represent a spectral representation of a residual of the sample set rather than actual information samples thereof. That is, in accordance with the embodiment of Figure 4, a sequence of syntax elements can enter entropy encoder 102 to be entropy encoded in data stream 114. The sequence of syntax elements can comprise motion vector difference syntax elements for inter-prediction blocks and map-related syntax elements indicating the important positions of significant transform coefficient levels as well as defining syntax elements significant transform coefficient levels, for transform blocks.
It should be noted that there are several alternatives for the realization of Figure 4, some of them being described within the introductory portion of the specification, the description of which is incorporated in the description of Figure 4 herein.
Figure 5 shows a decoder capable of decoding the data stream generated by the encoder of Figure 4. The decoder of Figure 5 comprises an entropy decoder 150, a reverse transformation stage 152, an adder 154 and a predictor 156. The decoder entropy 150, inverse transformation stage 152 and adder 154 are connected serially between an input 158 and an output 160 of the decoder of Figure 5 in the mentioned order. An additional output from the decoder * '/ ?. Ό Τ. . »· _ ..Χ ί λΡΡ '___<sup>i¡</sup>-33 '· 33333' \ 33333 of entropy 150 is connected to the predictor 156, which in turn is connected between the output of the adder 154 and an additional input thereof. The entropy decoder 150 extracts, from the data stream entering the decoder of Figure 5 at input 158, the transform coefficient blocks where an inverse transform is applied to the transform coefficient blocks in step 152 in order to get the residual signal. The residual signal is combined with a prediction from predictor 156 in adder 154 to obtain a reconstructed block of the reconstructed version of the sample set at output 160. Based on the reconstructed versions, predictor 156 generates the predictions of the Reconstructing the predictions made by predictor 160 on the encoder side. In order to obtain the same predictions as those used on the encoder side, predictor 156 uses the prediction parameters that entropy decoder 150 also obtains from the data stream at input 158. It should be noted that the aforementioned embodiments, the spatial granularity at which the prediction and transformation of the residual are performed do not have to be equal to each other. This is shown in Figure 2C. This figure shows a subdivision for the prediction granularity blocks with solid lines and residual granularity with dashed lines. As you can see, the subdivisions can be selected by the encoder independent of each other. To be more precise, the data flow syntax can allow a definition of the residual subdivision independent of the prediction subdivision. Alternatively, the residual subdivision may be an extension of the prediction subdivision such that each residual block is equal to or a proper subset of a prediction block. This is shown in Figure 2a and Figure 2b, for example, where again the prediction granularity is: IMrlfi t Π «3Τ1ϊ · υΤ0λ \ Ν ': >>?
Γ. DELA i-'iR.T'irL '-. ID ► INDUSTRIAL * - «1- ^ · sample with solid lines and residual granularity with dashed lines. This is in
Figure 2a-2c, all blocks having a reference signal associated with it would be residual blocks for which a two-dimensional transformation will be performed while the blocks of larger continuous lines encompassing blocks of dashed lines 40a, for example, would be blocks of prediction for which a prediction parameter adjustment is made individually.
The above embodiments have in common that a block of (residual or original) samples is to be transformed on the encoder side into a transform coefficient block which, in turn, is to be conversely transformed into a reconstructed block of samples on the decoder side. This is illustrated in Figure 6. Figure 6 shows a sample block 200. In the case of Figure 6, this block 200 is exemplary quadratic and 4x4 samples in size 202. Samples 202 are regularly arranged along the horizontal x direction and vertical y direction. By means of the aforementioned two-dimensional transformation T, block 200 is transformed into the spectral domain, namely into a block 204 of transformation coefficients 206, the transformation block 204 being the same size as block 200. That is, transformation block 204 has as many transformation coefficients 206 as blocks 200 have the samples, both horizontally and vertically. However, since the transformation T is a spectral transformation, the positions of the transformation coefficients 206 within transformation block 204 do not correspond to spatial positions but to spectral components of the content of block 200. In particular, the horizontal axis of transformer block 204 corresponds to an axis along which the spectral frequency in the horizontal direction increases monotonously while the axis
to. m .f
MEXICAN INSTITUTE the prop; fo. \ £ 5 INDUSTRIAL
<img file="MX336735B_D0017.tif" />
vertical corresponds to an axis along which the spatial frequency in the vertical direction increases monotonously where the transformation coefficient of the DC component is positioned in a corner - here exemplaryly the upper left corner - of block 204 so that in the lower right corner, the transformation coefficient 206 corresponding to the highest frequency is positioned in the horizontal and vertical directions. Neglecting the spatial direction, the spatial frequency to which certain transformation coefficients 206 belong, generally increases from the upper left corner to the lower right corner. By an inverse transformation ΤΙ, transformation block 204 is retransferred from the spectral domain to the spatial domain, so as to obtain a copy 208 of block 200 again. In case no quantification / loss has been entered during the transformation, the reconstruction will be perfect.
As already noted, it can be seen from Figure 6 that larger block sizes of block 200 increase the spectral resolution of the resulting spectral representation 204. On the other hand, quantization noise tends to spread throughout block 208 and therefore, abrupt and well-located objects within blocks 200 tend to lead to deviations of the re-transformed block from the original block 200 due to quantization noise. The main advantage of using larger blocks is, however, that the ratio of significant coefficients, i.e. non-zero (quantized) transformation coefficients, i.e., levels, on the one hand, and the number of insignificant transformation coefficients, on the other hand, can decrease within larger blocks compared to smaller blocks thus allowing better encoding efficiency. In other words, frequently, the significant levels of transformation coefficients, is
ÍKSTTOTO MEXICANO KÍí ** · *** - / ' <sup>1</sup>
1> E LA ESAJk'IcDAD V. '· INDUSTRIAL · <sup>J</sup> that is, the transformation coefficients not quantized to zero are sparsely distributed in transformation block 204. Because of this, according to the embodiments described in more detail below, the positions of the significant levels of transformation coefficient are signaled within of the data flow by means of an importance map. Separately, the values of the significant transformation coefficient, that is, the levels of the transformation coefficient in case the transformation coefficients are quantified, are transmitted within the data flow.
All of the encoders and decoders described above are therefore configured to deal with certain syntax element syntaxes. That is, the aforementioned syntax elements such as transform coefficient levels, syntax elements in relation to the transformation block importance map, motion data syntax elements in relation to inter-prediction blocks, and so on they are assumed to be arranged sequentially within the data stream in a prescribed manner. Such a prescribed way can be represented in the form of a pseudo code as is done, for example, in the
Standard H.264 or other video code.
In other words, the above description, mainly dealing with the conversion of media data, here exemplary video data, to a sequence of syntax elements according to a predefined syntax structure prescribing certain types of syntax elements, their semantics and the order between them. The entropy encoder and entropy decoder of Figures 4 and 5, can be configured to operate, and can be structured, as indicated below. Some are responsible for carrying out the
ΙΝ
Γ · 'DI LA' λ> - $ 5 '- Λ, <-TG ^ <sup>J 4;</sup>3lU..A conversion between syntax element sequence and data stream, i.e. symbol or bit stream.
An entropy encoder according to one embodiment is illustrated in Figure 7. The encoder losslessly converts a stream of syntax elements 301 to a set of two or more partial bit streams 312.
In a preferred embodiment of the invention, each syntax element 301 is associated with a category from a set of one or more categories, ie a type of syntax element. As an example, categories can specify the type of the syntax element. In the context of hybrid video encoding, a separate category can be associated with macro block encoding modes, block encoding modes, reference image indices, motion vector differences, subdivision flags, encoded block flags, quantification parameters, levels of transformation coefficient, etc. In other application areas such as audio, speech, text, document, or general data encoding, different categorizations of syntax elements are possible.
In general, each syntax element can take a value from a countable infinite or finite value set, where the set of possible syntax element values can differ for different categories of syntax elements. For example, there are binary syntax elements as well as integer values.
To reduce the complexity of the encoding and decoding algorithm and to allow a general encoding and decoding design for different syntax elements and categories of syntax elements, syntax elements 301 are converted to ordered sets of binary decisions and these binary decisions are ; «« J
<img file="MX336735B_D0018.tif" />
then processed by simple binary encoding algorithms. Therefore, binarizer 302 bijectively plots the value of each syntax element 301 into a sequence of (or string or word) of bins 303. The sequence of bins 303 represents a set of binary ordered decisions. Each bin 303 or binary decision can take a value from a set of two values, eg one of the values 0 and 1. The binarization scheme may be different for different categories of syntax elements. The binarization scheme for a particular category of syntax elements may depend on the set of possible syntax element values and / or other properties of the syntax element for the particular category.
Table 1 illustrates three example binarization schemes for infinite accounting sets. Binarization schemes for countable infinite sets can also be applied to finite sets of syntax element values. In particular for large finite sets of syntax element values, inefficiency (resulting from unused sequences of bins) may be negligible, but the universality of such binarization schemes provides an advantage in terms terms of complexity and memory requirements. For small finite sets of syntax element values, it is often preferable (in terms of coding efficiency) to adapt the binarization scheme to the number of possible symbol values.
Table 2 illustrates three example binarization schemes for finite sets of 8 values. Finite-set binarization schemes can be derived from countable infinite-set universal binarization schemes by modifying some bin sequences in a way that finite sets of bin sequences represent code without redundancy (and potentially rearranging the sequences of
<img file="MX336735B_D0019.tif" />
INSTÍTUTO HSXtCAMO DE LA FROríELVU?
INDUSTRIAL
<img file="MX336735B_D0020.tif" />
bin). As an example, the truncated unary binarization scheme in Table 2 was created by modifying the bin sequence for syntax element 7 of the universal unary binarization (see Table 1). The truncated and rearranged binarization Exp-Golomb of order 0 in Table 2 was created by modifying the bin sequence for syntax element 7 of the universal order Exp-Golomb binarization 0 (see Table 1) and rearranging the bin sequences (the sequence of truncated bin for symbol 7 was assigned to symbol 1). For finite sets of syntax elements, it is also possible to use unsystematic / non-universal binarization schemes, as exemplified in the last column of Table 2.
Table 1: Examples of binarization for countable infinite sets (or large finite sets)
<td>Value</td><td>Binarization</td><td>Exp-Golomb binarization</td><td>Exp-Golomb binarization</td>
<td>symbol</td><td>nail</td><td>order 0</td><td>order 1</td>
<td> 0</td><td> 1</td><td> 1</td><td> 10</td>
<td> 1</td><td> 01</td><td> 010</td><td> 11</td>
<td> 2</td><td> 001</td><td> 011</td><td> 0100</td>
<td> 3</td><td> 0001</td><td> 0010 0</td><td> 0101</td>
<td> 4</td><td> 0000 1</td><td> 00101</td><td> 0110</td>
<td> 5</td><td> 0000 01</td><td> 0011 0</td><td> 0111</td>
<td> 6</td><td> 0000 001</td><td> 0011 1</td><td> 0010 00</td>
<td> 7</td><td> 0000 0001</td><td> 0001 000</td><td> 0010 01</td>
<td></td><td></td><td></td><td></td>
<img file="MX336735B_D0021.tif" />
Table 2: Examples of binarization for finite sets. __
<td>Value symbol</td><td>Binarization truncated</td><td>Binarization Exp-Golomb order 0 truncated and rearranged</td><td>Binarization systematic</td><td>not</td>
<td> 0</td><td> 1</td><td> 1</td><td> 000</td><td></td>
<td> 1</td><td> 01</td><td> 000</td><td> 001</td><td></td>
<td> 2</td><td> 001</td><td> 010</td><td> 01</td><td></td>
<td> 3</td><td> 0001</td><td> 011</td><td> 1000</td><td></td>
<td> 4</td><td> 0000 1</td><td> 0010 0</td><td> 1001</td><td></td>
<td> 5</td><td> 0000 01</td><td> 0010 1</td><td> 1010</td><td></td>
<td> 6</td><td> 0000 001</td><td> 0011 0</td><td> 1011 0</td><td></td>
<td> 7</td><td> 0000 000</td><td> 0011 1</td><td> 1011 1</td><td></td>
Each bin 303 of the sequence of bins created by binarizer 302 is fed into the allocator of parameter 304 in sequential order. The parameter mapper assigns a set of one or more parameters to each bin 303 and exits the bin with the associated set of parameters 305. The parameter set is determined in exactly the same way in the encoder and decoder. The parameter set can consist of one or more of the following parameters:
In particular, the parameter mapper 304 can be configured to assign to
<img file="MX336735B_D0022.tif" />
$ · Τ
TCTU i ov; Vda1>
'.S.1A1- - a current bin 303 a context model. For example, the assigned Sf 'dF parameter 304 may select one of the available context indexes for the current asset 303. The available set of contexts for a current bin 303 may depend on the type of the bin, which in turn can be defined by the type / category of syntax element 301, whose binarization is the current bin 303, and a position of the current bin 303 within the last binarization. Context selection among the available context set may depend on previous bins and the syntax elements associated with the last one. Each of these contexts has a probability model associated with it, that is, a measure for an estimate of the probability for one of two possible bin values for the current bin. The probability model may in particular be a measure for an estimate of the probability for the most probable or least probable value of the bin for the current bin, with a probability model being further defined by an identifier specifying an estimate for which of the two Possible Bin Values represents the most likely or least likely bin value for the current bin 303. If only one context is available for the current bin, the context selection can be left out. As will be described in more detail below, the parameter mapper 304 can also perform an adaptation of the probability model in order to adapt the probability models associated with the various contexts to the current bin statistics of the respective bins belonging to the respective contexts.
As will be described in more detail below, parameter mapper 304 may operate differently depending on a high efficiency (HE) mode or low complexity (LC) mode being activated. In both modes, the probability model associates y Μ ρ I
INDUSTRIAL ----— the current bin 303 to any of the 310 bin encoders as detailed below, but the mode of operation of the parameter mapper 304 tends to be less complex in the LC mode with, however, the efficiency of increased encoding in high-efficiency mode due to parameter allocator 304 making the association of individual bins 303 to individual encoders 310 more accurately matched to bin statistics, optimizing therefore the entropy with respect to the LC mode.
Each bin with an associated set of parameters 305 that is the output of parameter mapper 304 is supplied in a bin 306 buffer selector. The bin 306 buffer selector potentially modifies the value of input bin 305 based on the value of output bin and associated parameters 305 and supplies output bin 307 - with a potentially modified value - in one of two or more bin 308 buffers. The buffer of bin 308 to which the output bin 307 is sent is determined based on the value of the input bin
305 and / or the value of the associated parameters 305.
In a preferred embodiment of the invention, the bin buffer selector 306 does not modify the value of the bin, that is, the output bin 307 always has the same value as the input bin 305. In a preferred embodiment of the invention, The bin 306 buffer selector determines the output value of bin 307 based on the input value of bin 305 and the associated measurement for an estimate of the probability for one of the possible bin values for the current bin. In a preferred embodiment of the invention, the output value of bin 307 is set equal to the input value of bin 305 if the measurement for the probability for one of the two possible bin values for the current bin is less than (or less of or equal to) at a particular threshold; if the measurement for probability for one of the two possible
Ϊ τιτυτο and> Vi. '
FROM THE PTC '. - O
IÑDüSiiúzX bin values for the current bin is greater than or equal to (or greater than) a particular threshold, the output value of bin 307 is modified (i.e. set contrary to the input value of the bin). In a further preferred embodiment of the invention, the bin output value
307 is set equal to the input value of bin 305 if the measurement for the probability for one of the two possible bin values for the current bin is greater than (or greater than or equal to) a particular threshold; If the measurement for the probability for one of the two possible bin values for the current bin is less than or equal to (or less than) a particular threshold, the output value of bin 307 is modified (i.e. set to opposite of the bin input value). In a preferred embodiment of the invention, the threshold value corresponds to a value of 0.5 for the estimated probability for both possible values of bins.
In a further preferred embodiment of the invention, the bin 306 buffer selector determines the output value of bin 307 based on the input value of bin 305 and the associated identifier by specifying an estimate for which of the two possible bin values it represents the least likely or most likely bin value for the current bin. In a preferred embodiment of the invention, the output value of bin 307 is set equal to the input value of bin 305 if the identifier specifies that the first of the two possible bin values represents the least likely (or most likely) bin value. ) for the current bin, and the output value of bin 307 is modified (i.e. set to the opposite of the bin input value) if the identifier specifies that the second of the two possible bin values represents the least likely (or most likely) bin value for the current bin.
INSTí '.' I; TO?,! £ X! CANO
K £ LA ¡> ROPKD.U>
<img file="MX336735B_D0023.tif" />
OS / Íí, SF *
INDUSTRIAL
In a preferred embodiment of the invention, the bin buffer selector 306 determines the buffer of bin 308 to which the output bin 307 is sent based on the associated measurement for an estimate of the probability for one of the possible bin values for the current bin. In a preferred embodiment of the invention, the set of possible values for the measurement for an estimate of the probability for one of the two possible bin values is finite and the bin buffer selector 306 contains a table that associates exactly one buffer of bin 308 with each possible value for the estimate of the probability for one of the two possible values of the bin, where the different values for measuring an estimate of the probability for one of the two possible bin values can be associated with the same bin buffer 308. In a preferred embodiment of the invention, the range of possible values for measurement for an estimate of probability for one of the two possible bin values is divided into a number of intervals, the bin buffer selector 306 determines the index of interval for the current measurement for an estimate of the probability for one of the two possible bin values, and the bin 306 buffer selector contains a table that associates exactly one bin 308 buffer with every possible value for the interval index, where different values for the interval index can be associated with the same bin 308 buffer. In a preferred embodiment of the invention, input bins 305 with opposite measurements for an estimate of probability for one of the two possible bin values (opposite measurement are those representing probability estimates P and 1-P) are supplied to the same buffer as bin 308. In a preferred embodiment of the invention, associating the measurement for a probability estimate for one of the two possible bin values for the current bin with a particular bin buffer is adapted over time, eg, with the end
In order to ensure that the created partial bitstreams have bit rates ahead, the interval index will also be called the PIPE index, niitílIiraTqiie the PIPE · index 'along with a refinement index and a flag indicating the bin values more Probables index the current probability model, that is, the probability estimate.
In a further embodiment of the invention, the buffer buffer selector for bin 306 determines the buffer buffer for bin 308 to which output bin 307 is sent based on the associated measurement for an estimate of the probability for the least likely or most bin value. probable for the current bin. In a preferred embodiment of the invention, the set of possible values for measurement for a probability estimate for the most likely or least likely bin value is finite, and the bin buffer selector 306 contains a table that exactly associates a buffer of bin 308 with each possible value of the probability estimate for the least likely or most likely bin value, where the different values for the measurement for an estimate of the probability for the least likely or most likely bin value can be associated with the same bin buffer 308. In a preferred embodiment of the invention, the range of possible values for the measurement of an estimate of the probability for the least probable or most probable bin value is divided into a number of intervals, the bin buffer selector 306 determines the index of interval for the current measurement for an estimate of the probability for the least probable or most probable bin value, and the bin 306 buffer selector contains a table that associates exactly one bin 308 buffer with every possible value for the interval index, where different values for the interval index can be associated with the same bin 308 buffer. a preferred embodiment of the invention, the association of the measurement for a '-> Vm <sup>w</sup>.s2éP> '55
Dr. -: ¡· '... / ”” \ iD estimated probability for the least likely or most prtibáblfe'parabfhirí current bin value with a particular bin buffer adapts over time, eg with the fandensure that the created partial bitstreams have similar bit rates.
Each of the two bin 308 buffers connects to exactly one bin 310 encoder, and each bin encoder is connected to only one bin 308 buffer. Each bin 310 encoder reads bins from the associated bin buffer 308 and converts a sequence of bins 309 in a word code 311, representing a sequence of bits. Bin 308 buffers represent FIFO buffers; the bins that are later supplied (in sequential order) in a bin buffer 308 are not encoded before the bins that are previously supplied (in sequential order) in the bin buffer. Codewords 311 that are the output of a particular bin encoder 310 are written to a particular partial bitstream 312. The general encoding algorithm converts syntax elements 301 to two or more partial bitstreams 312, where the number of partial bits equals the number of bin buffers and bin encoders. In a preferred embodiment of the invention, a bin encoder 310 converts a variable number of bins 309 into a code word 311 of a variable number of bits. An advantage of the above-described embodiments of the invention is that the encoding of bins can be done in parallel (eg, for different groups of probability measurements), which reduces the processing time for various implementations.
Another advantage of embodiments of the invention is that the bin encoding, which is done by the bin encoders 310, can be specifically designed for different sets of parameters 305. In particular, the bin encoding and encoding can be optimized (in terms of coding efficiency and / or complexity) for different
<img file="MX336735B_D0024.tif" />
MEXICAN INSTITUTE OF PROPERTY 1 · INDUSTRIAL estimated probability groups. On the one hand, this allows a reduction of the encoding / decoding complexity, and on the other hand, it allows an improvement of the coding efficiency. In a preferred embodiment of the invention, the bin 310 encoders implement different encoding algorithms (i.e., assigning the bin sequences in codewords) for different sets of measurements for an estimate of the probability for one of the two possible values of bins 305 for the current bin. In a preferred embodiment of the invention, the bin encoders 310 implement different encoding algorithms for different groups of measurements for an estimate of the probability for the least probable or most probable value of the bin for the current bin.
In a preferred embodiment of the invention, the bin encoders 310 - or one or more of the bin encoders - represent the entropy encoders that directly assign the input bin sequences 309 into codewords 310. Such assignments can be implemented efficiently and do not require a complex arithmetic coding engine. The reverse codeword allocation in the binary sequences (as is done in the decoder) should be unique in order to ensure perfect decoding of the input sequence, but the allocation of 309 binary sequence in the words of Code 310 does not necessarily have to be unique, that is, it is possible that a particular sequence of bins can be assigned in more than one sequence of code words. In a preferred embodiment of the invention, input bin sequence allocation 309 in codewords 310 is bijective. In a preferred embodiment of the invention, the bin encoders 310 - or one or more of the bin encoders - represent entropy encoders that map directly
MEXICAN INSTITUTE D2 THE Industrial Psychophilia
<img file="MX336735B_D0025.tif" />
Variable length sequences of input bins 309 in variable length codewords 310. In a preferred embodiment of the invention, the exit code words represent codes without redundancy such as general Huffman codes or canonical Huffman codes.
Two examples for bijective allocation of bin sequences for codes without redundancy are illustrated in Table 3. In a preferred embodiment of the invention, the exit code words represent redundant codes suitable for error detection and error recovery. In a preferred embodiment of the invention, the exit code words represent suitable encryption codes to encrypt the syntax elements.
Table 3: Examples for assignments between sequence of bins and codewords.
<td>Bins sequence (bin order is from</td><td>Code words (bit order is from</td>
<td>left to right)</td><td>left to right)</td>
<td> 0000 0000</td><td> 1</td>
<td> 0000 0001</td><td> 0000</td>
<td> 0000 001</td><td> 0001</td>
<td> 0000 01</td><td> 0010</td>
<td> 0000 1</td><td> 0011</td>
<td> 0001</td><td> 0100</td>
<td> 001</td><td> 0101</td>
<img file="MX336735B_D0026.tif" />
<img file="MX336735B_D0027.tif" />
<td> 01</td><td> 0110</td><td></td>
<td> 1</td><td> 0111</td><td></td>
<td> 5</td><td>Bins sequence (bin order is from left to right)</td><td>Code words (bit order is from left to right)</td>
<td></td><td> 000</td><td> 10</td>
<td></td><td> 01</td><td> 11</td>
<td></td><td> 001</td><td> 010</td>
<td> 10</td><td> 11</td><td> 011</td>
<td></td><td> 1000 0</td><td> 0001</td>
<td></td><td> 1001</td><td> 0010</td>
<td></td><td> 1010</td><td> 0011</td>
<td></td><td> 1000 1</td><td> 0000 0</td>
<td> 15</td><td> 1011</td><td> 0000 1</td>
In a preferred embodiment of the invention, the bin encoders 310 - or one or more of the bin encoders - represent entropy encoders that assign
0 directly variable length sequences of input bins 309 in fixed length codewords 310. In a preferred embodiment of the invention, the binary encoders 310 - or one or more of the binary encoders - represent entropy encoders that
<img file="MX336735B_D0028.tif" />
MEXICAN INSTITUTE
D £ THE PROPERTY
INDUSTRIAL directly map the fixed-length sequences of input bins 309 into variable-length codewords 310.
The decoder according to an embodiment of the invention is illustrated in Figure 8. The decoder basically performs the inverse operations of the encoder, so that (previously encoded) the sequence of syntax elements 327 is decoded from a set of two or plus partial 324 bit streams. The decoder includes two different stream processes: A stream for data requests, which represents the encoder's data stream, and a data stream, which represents the inverse of the encoder's data stream. In the illustration in Figure 8, the dashed arrows represent the requested data flow, while the solid arrows represent the data flow. The decoder building blocks basically represent the encoder building blocks, but implement the inverse operations.
Decoding a syntax element is triggered by a request for a new decoded syntax element 313 that is sent to binarizer 314. In a preferred embodiment of the invention, each request for a new decoded syntax element 313 is associated with a category of a set of one or more categories. The category that is associated with a request for a syntax element is the same as the category that was associated with the corresponding syntax element during encoding.
Binarizer 314 assigns the request for a syntax element 313 in one or more requests for a bin that are sent to the allocator of parameter 316. As a final response to a request for a bin that is sent to the allocator of parameter 316 by binarizer 314 , the binarizer 314 receives a decoded bin 326 from the
<img file="MX336735B_D0029.tif" />
έ HJ! I »χ '. : ί,. ·· .. ·: ·. } V
MUPííoailda »ς»
INDUSTRIAL bin buffer 318. The binarizer 314 compares the sequence received Ȇe decoded bins
326 with the bin sequences of a particular binarization scheme for the requested syntax element, and if the received sequence of decoded bins 326 matches the binarization of a syntax element, the binarizer empties its bin buffer and sends the syntax element decoded as a final response to the request for a new decoded symbol. If the already received sequence of decoded bins does not match any of the binary sequences for the binarization scheme for the requested syntax element, the binarizer sends another request for a bin to the parameter mapper until the sequence of decoded bins matches one of the binary sequences in the binarization scheme for the requested syntax element. For each request for a syntax element, the decoder uses the same binarization scheme that was used to encode the corresponding syntax element. The binarization scheme may be different for different categories of syntax elements. The binarization scheme for a particular syntax element category may depend on a set of possible syntax element values and / or other syntax element properties for the particular category.
Parameter dispatcher 316 assigns a set of one or more parameters for each request for my bin and sends the request for a bin with the associated set of parameters to the bin buffer selector. The set of parameters that are assigned to a bin requested by the parameter mapper is the same as that assigned to the corresponding bin during encoding. The parameter set may consist of one or more of the parameters that are mentioned in the encoder description of Figure 7.
<img file="MX336735B_D0030.tif" />
In a preferred embodiment of the invention, the parameter mapper 316 associates each request for a bin with the same parameters as they did with the mapper 304, i.e. a context and its associated measurements for a probability estimate for one of the two possible bin values for the current requested bin, as a measurement for a probability estimate for the least likely or most likely bin value for the current requested bin, and an identifier specifying an estimate for which of the possible bin values represents the least likely or most likely bin value for the current requested bin.
Parameter mapper 316 can determine one or more of the mentioned probability measurements (measurement for an estimate of probability for one of two possible bin values for the current requested bin, measurement for an estimate of probability for the value of least likely or most likely bin for the current requested bin, identifier specifying an estimate for which of the two possible bin values represents the least likely or most likely bin value for the current requested bin) based on a set of one or more already decoded symbols. Determining the probability measurements for a particular request for a bin replicates the process in the encoder for the corresponding bin. Decoded symbols that are used to determine probability measurements may include one or more already decoded symbols of the same symbol category, one or more already decoded symbols of the same symbol category that correspond to data sets (such as blocks or groups samples) from neighboring spatial and / or temporal locations (relative to the dataset with the current request for a syntax element), or one or more already decoded symbols from different symbol categories corresponding to ~ '¡λ Λ' <sup>s</sup> ri
INSi
DE Í.A FROPILr-, AD INDUSTRIAL data sets of the same and / or neighboring spatial and / or temporal location (relative to the data sets associated with the current request for a syntax element.
Each request for a bin with an associated set of parameters 317 that is the output of parameter mapper 316 is supplied in a bin buffer selector 318.
Based on the associated set of parameters 317, the bin buffer selector 318 sends a request for a bin 319 to one of two or more buffers of bin 320 and receives a decoded bin 325 from the selected bin buffer 320. The input bin decoded 325 is potentially modified and decoded output bin 326 - with a potentially modified value - is sent to binarizer 314 as a final response to the request for a bin with an associated set of parameters 317.
The bin buffer 320 to which a request for a bin is sent is selected in the same way as the bin buffer to which the output bin of the bin buffer selector on the encoder side was sent.
In a preferred embodiment of the invention, the bin buffer selector 318 15 determines the buffer buffer 320 to which the request for bin 319 is sent based on the associated measurement for an estimate of the probability for one of the two possible values of bin for the current requested bin. In a preferred embodiment of the invention, the set of possible values for the measurement for an estimate of the probability for one of the two possible bin values is finite and the bin buffer selector 318 contains a table that associates exactly one buffer of bin 320 with each possible value of the probability estimate for one of the possible bin values, where different values for the measurement for an estimate of the probability for one of the possible bin values can be associated with the same bin buffer 320. In a preferred embodiment of the
<img file="MX336735B_D0031.tif" />
invention, the range of possible values for the measurement for an estimate of the probability for one of the two possible bin values is divided into a number of intervals, the bin buffer selector 318 determines the interval index for the current measurement for a measure of the probability for one of the two possible bin values, and the bin buffer selector 318 contains a table that associates exactly one bin buffer 320 with each possible value for the interval index, where different values for the interval index can be associated with the same bin buffer 320. In a preferred embodiment of the invention, requests for bins 317 with opposite measurements for an estimate of the probability for one of the two possible values of bin (opposite measurements are those representing probability estimates P and 1-P) are sent for the same bin 320 buffer. In a preferred embodiment of the invention, the association of the measurement for an estimate of the probability for one of the two possible bin values for the current bin request with a particular bin buffer is adapted over time.
In a preferred embodiment of the invention, the bin buffer selector 318 determines the buffer buffer 320 to which the request for a bin 319 is sent based on the associated measurement for an estimate of the probability for a less likely bin value or most likely for the current bin requested. In a preferred embodiment of the invention, the set of possible values for measuring a probability estimate for the least likely or most likely bin value is finite and the bin buffer selector 318 contains a table that exactly associates a buffer of bin 320 with each possible value of the probability estimate for one of the two possible least probable or most probable bin values, where different values for the measurement for an estimate of the probability for the least likely or most probable bin value can be associated with the li'.uua * λχλ * - - same bin buffer 320. In a preferred embodiment of the invention, the range of values ——..... ί <sup>1</sup> possible for measurement for an estimate of the probability for the least likely or most likely bin value divided into a number of intervals, the bin buffer selector 318 determines the interval index for the current measurement for an estimate of the probability for the least likely or most likely bin value, and the bin buffer selector 318 contains a table that associates exactly a bin buffer 320 with every possible value for the interval index, where different values for the interval index may be associated with the same bin buffer 320. In a preferred embodiment of the invention, associating the measurement for an estimate of the probability for the least likely or most likely bin value for the current bin request with a particular bin buffer is adapted over time.
After receiving a decoded bin 325 from a selected bin buffer 320, bin buffer selector 318 potentially modifies input bin 325 and sends output bin 326 - with a potentially modified value - to binarizer 314. The assignment of the input / output bin of bin buffer selector 318 is the inverse of the bin buffer selector input / output bin allocation on the encoder side.
In a preferred embodiment of the invention, the bin buffer selector 318 does not modify the value of the bin, that is, the output bin 326 always has the same value as the input bin 325. In a preferred embodiment of the invention, the bin buffer selector
318 determines the value of the output bin 326 based on the value of the input bin 325 and the measurement for an estimate of the probability for one of the two possible bin values for the current requested bin that is associated with the request for a bin 317 In a preferred embodiment of the invention, the value of the output bin 326 is set equal to the value of the
<img file="MX336735B_D0032.tif" />
<img file="MX336735B_D0033.tif" />
input bin 325 if the measurement for the probability for one of the two possible bin values for the current bin request is less than (or less than or equal to) a particular threshold; If the measurement for the probability for one of the two possible bin values for the current bin request is greater than or equal to (or greater than) a particular threshold, the value of output bin 326 is modified (i.e. is set to the opposite of the input bin value). In a preferred embodiment of the invention, the value of the output bin 326 is set equal to the value of the input bin 325 if the measurement for the probability for one of the two possible bin values for the current bin request is greater than ( or greater than or equal to) a particular threshold; If the measurement for the probability for one of the two possible bin values for the current bin request is less than or equal to (or less than) a particular threshold, the output bin value 326 is modified (i.e. is set to the opposite of the input bin value.) In a preferred embodiment of the invention, the threshold value corresponds to a value of 0.5 for the estimated probability for both possible bin values.
In a preferred embodiment of the invention, the bin buffer selector 318 determines the value of the output bin 326 based on the value of the input bin 325 and the identifier, specifying an estimate for which of the two possible bin values represent the least likely or most likely bin value for the current bin request, which is associated with the request for a bin 317. In the preferred embodiment of the invention, the output bin value 326 is set equal to the input bin value 325 if the identifier specifies that the first of the two possible bin values represents the least likely (or most likely) bin value. ) for the current bin request, and the output bin value 326 is modified (i.e. set to the opposite of the input bin value)
<img file="MX336735B_D0034.tif" />
<img file="MX336735B_D0035.tif" />
D ¿p? .O? 'E:; - ad
INDUSTRIAL if the identifier specifies that the second of the two possible bin values represents the least likely (or most likely) bin value for the current bin request.
As described above, the bin buffer selector sends a request for bin 319 to one of the two or more bin 320 buffers. Bin 20 buffers represent FIFO buffers, which are supplied with decoded binary 321 sequences from the connected bin decoders. In response to a request for a bin
319 which is sent to a bin buffer 320 by bin buffer selector 318, the bin buffer
320 removes the bin from its contents which is first supplied to the bin 320 buffer and is sent by the bin 318 buffer selector. Bins that are sent before to the bin 320 buffer are removed before and sent to the bin 318 buffer selector.
Each of the two or more bin 320 buffers is connected to exactly one bin 322 decoder, and each bin decoder is connected to only one bin 320 buffer. Each bin 322 decoder reads the 323 codewords, which represents sequences of bits, from a separate partial bit stream 324. The bin decoder converts a codeword 323 into a sequence of bins 321 that is sent to the connected bin buffer 320. The general decoding algorithm converts two or more partial 324 bit streams to a number of decoded syntax elements, where the number of partial bit streams equals the number of buffers for bins and the decoders for bin and syntax element decoding. it is triggered by requests for new syntax elements. In a preferred embodiment of the invention, a bin decoder 322 converts code words 323 of a variable number of bits into a sequence of a variable number of bins 321. An advantage of embodiments of the invention is that decoding of bins from two or more partial bit streams can be done in parallel »S» and and
I YEAR
Say DJ. í (eg, for different groups of probability measurements), which reduces processing time for various implementations.
Another advantage of embodiments of the invention is that the bin decoding, which is done by the bin decoders 322, can be specifically designed for different sets of parameters 317. In particular, the encoding and decoding of bins can be optimized (in terms of efficiency and / or complexity of coding) for different groups of estimated probabilities. On the one hand, this allows a reduction of the coding / decoding complexity with respect to the state-of-the-art entropy coding algorithms with similar coding efficiency. On the other hand, this allows an improvement in coding efficiency with respect to state-of-the-art entropy coding algorithms with similar coding / decoding complexity. In a preferred embodiment of the invention, the decoders of bins 322 implement different decoding algorithms (i.e. allocation of sequences of bins in codewords) for different groups of measurements for an estimate of the probability for one of the two possible values. of bin 317 for the current request for bins. In a preferred embodiment of the invention, the bin decoders 322 implement different decoding algorithms for different groups of measurements for an estimate of the probability for the least likely or most likely value of the bin for the current requested bin.
Bin 322 decoders reverse assign the corresponding bin encoders on the encoder side.
In a preferred embodiment of the invention, the bin 322 decoders - or one or more of the bin decoders - represent entropy decoders that assign
<img file="MX336735B_D0036.tif" />
<img file="MX336735B_D0037.tif" />
directly code words 323 in sequences of bins 321. Such assignments can be implemented efficiently and do not require a complex arithmetic coding engine. The codeword assignment in binary sequences must be unique. In a preferred embodiment of the invention, the allocation of code words 323 in sequences of bins 321 is bijective. In a preferred embodiment of the invention, the decoders of bins 310 - or one or more of the decoders of bins - represent entropy decoders that directly assign code words of variable length 323 in sequences of bins of variable length 321. In one embodiment Preferred of the invention, the input code words represent non-redundant codes such as general Huffman codes or canonical Huffman codes. Two examples for bijective allocation of non-redundant codes to sequence bins are illustrated in the Table
3.
In a preferred embodiment of the invention, the 322 bin decoders - or one or more of the bin decoders - represent entropy decoders that directly assign fixed-length codewords 323 into variable length 321 bit sequences. In a preferred embodiment of the invention, the bin decoders 322 - or one or more of the bin decoders - represent entropy decoders that directly assign variable length code words 323 in fixed length bin sequences 321.
Therefore, Figures 7 and 8 showed an embodiment for an encoder to encode a sequence of symbols 3 and a decoder to reconstruct the same. The encoder comprises an allocator 304 configured to assign a number of parameters 305 to each symbol in the symbol sequence. The allocation is based on
I
INSTI
PI
I. V JÍ. AA ίτυτο mexion OF THE? Κ0?) 'ΕΓ ·?.
INDUSTRIAL
<img file="MX336735B_D0038.tif" />
information contained within previous symbols of the sequence of symbols such as the category of syntax element 1 to the representation — such as binarization — to which the current symbol belongs and which, according to the syntax structure of syntax elements 1, currently expected, in turn, is deductible from the history of previous syntax elements 1 and symbols 3. Furthermore, the encoder comprises a number of entropy encoders 10, each of which is configured to convert the symbols 3 sent to the respective entropy encoder into a respective bit stream 312, and a selector 306 configured to send each symbol 3 to one. selected from a number of entropy encoders 10, the selection depending on the number of parameters 305 assigned to the respective symbol 3. The allocator 304 could be thought of as integrated into the selector 206 in order to produce a respective selector 502.
The decoder for reconstructing a sequence of symbols comprises a number of entropy decoders 322, each of which is configured to convert a respective bit stream 323 to symbols 321; an allocator 316 configured to assign a number of parameters 317 to each symbol 315 of a symbol sequence to be reconstructed based on information contained within previously reconstructed symbols of the symbol sequence (see 326 and 327 in Figure 8); and a selector 318 configured to retrieve each symbol from the sequence of symbols to be reconstructed from one selected from the countless number of entropy decoders 322, the selection depending on a number of parameters defined to the respective symbol. The allocator 316 can be configured so that the number of parameters assigned to each symbol comprises, or is, a measurement for an estimate of a probability of
<img file="MX336735B_D0039.tif" />
MEXICAN INSTITUTE OF THE ID
INDUSTRIAL distribution between the possible symbol values can assume a respective one. Again, the allocator 316 and selector 318 can be thought of as an integrated in a block, a selector 402. The sequence of symbols to be reconstructed can be from a binary alphabet and an allocator 316 can be configured so that the estimate of the probability distribution consists of a measurement for an estimate of a probability of a bin value less likely or more likely of the two possible bin values of the binary alphabet and an identifier specifying an estimate for which of the two possible bin values represent the least likely or most likely bin value. Mapper 316 may further be configured to internally assign a context to each symbol in symbol sequence 315 to be reconstructed based on the information contained within previously reconstructed symbols in the symbol sequence to be reconstructed with each context having an estimate of probability distribution associated with it, and to adapt the probability distribution estimate for each context to an actual symbol statistic based on previously reconstructed symbol symbol values to which the respective context is assigned. The context can take into account a spatial relationship or proximity of positions to which the syntax elements belong, such as in a video or image encoding, or even in tables in the case of financial applications. Then, the measurement for the probability distribution estimate for each symbol can be determined based on the probability distribution estimate associated with the context assigned to the respective symbol as quantifying, or using as an index in a respective table, the estimate of probability distribution associated with the context assigned with the respective symbol (in the following embodiments indexed by a PIPE index together with an index of
ΙΝ3ΓΪ3 h'Z? ΛΛΙ ·;<sup>Τ</sup>7) and. <·
OF THE ΓίΜΖ) ·. \ ΪΤ> ζ 'O, d' ΆΙ
INDJSTÜUL refinement) to one of a number of representatives of probability distribution estimates (by cutting the refinement index) in order to obtain the measurement for the probability distribution estimate (the PIPE index by indexing the partial bitstream 312 ). The selector can be configured so that a bijective association is defined between the number of entropy encoders and the number of representatives of probability distribution estimates. Selector 18 can be configured to change a quantization assignment from a range of probability distribution estimates to the number of representatives of probability distribution estimates in a predetermined manner depending on previously reconstructed symbols of the symbol sequence, in time. That is, selector 318 can change the sizes of the quantization step, that is, the ranges of assigned probability distributions at the individual probability indices bijectively associated with the individual entropy decoders. Countless entropy decoders 322, in turn, can be configured to adapt their way of converting symbols to bit streams in response to a change in quantization mapping. For example, each entropy decoder 322 can be optimized to, that is, have an optimal compression ratio for, a certain probability distribution estimate within the respective quantization range of the probability distribution estimate, and you can change your codeword / symbol sequence assignment to adapt the position of this certain probability distribution estimate within the respective quantization interval of the probability distribution estimate in the event of a change of the latter so as to be optimized. The selector can be configured to change the quantization assignment so that
<img file="MX336735B_D0040.tif" />
the rates at which symbols are retrieved from countless entropy decoders become less scattered. As for the binarizer 314, it should be noted that it can be left out if the syntax elements are already binary. Furthermore, depending on the type of decoder 322, the existence of buffers 320 is not necessary. Furthermore, buffers can be integrated within decoders.
Finite sequence termination of syntax elements.
In a preferred embodiment of the invention, encoding and decoding is done for a finite set of syntax elements. Frequently a certain amount of data such as still image, a frame or field of a video sequence, a part of an image, a part of a frame or a field of a video sequence, or a set of successive samples of audio, etc. . is coded. For finite sets of syntax elements, in general, the partial bit streams that are created on the encoder side must be terminated, i.e. it must be ensured that all syntax elements can be decoded from the bit streams transmitted or stored partials. After the last bin is inserted into the corresponding bin buffer 308, the encoder in bin 310 has to ensure that a complete codeword is written to partial bitstream 312. If the bin encoder 310 represents an entropy encoder that implements direct mapping of bin sequences into codewords, the bin sequence that is stored in the bin buffer after writing the last bin to the bin buffer may not represent a bin sequence that is associated with a codeword (that is, it can represent a prefix of two or more bin sequences that are associated with codewords). In such case, any of the code words associated with a bin sequence containing the bin sequence in the buffer of
<img file="MX336735B_D0041.tif" />
bin as prefix must be written to the partial bitstream (the bin buffer must be thrown).
This can be done by inserting bins with a particular or arbitrary value into the bin buffer until a codeword is written. In a preferred embodiment of the invention, the bin encoder selects one of the codewords with minimum length (in addition to the property that the associated bin sequence must contain the bin sequence in the bin buffer as a prefix). On the decoder side, the bin 322 decoder can decode more bins than required for the last codeword in a partial bitstream; these bins are not requested by the bin 318 buffer selector and are discarded and ignored. Decoding the finite set of symbols is controlled by requests for decoded syntax elements; if no additional syntax elements are required for a quantity of data, the decoding is finished.
Transmission and multiplexing of partial bit streams.
The partial bitstreams 312 that are created by the encoder can be transmitted separately, or can be multiplexed into a single bitstream, or the codewords of the partial bitstreams can be interleaved into a single bitstream.
In one embodiment of the invention, each partial bitstream for a quantity of data is written to a data packet. The amount of data can be an arbitrary set of syntax elements such as a still image, a field or frame of a video sequence, a part of a still image, a part of a field or mark of a video sequence, or a audio sample frame etc.
In another preferred embodiment of the invention, two or more of the partial bitstreams for an amount of data or all of the partial bitstreams for an amount
ΙΌ ιν. · Ϊι · data is multiplexed into a data packet. The structure of a data packet containing multiplexed partial bit streams is illustrated in Figure 9.
Data packet 400 consists of a header and a division for the data of each partial bitstream (for the considered amount of data). The data packet header 400 contains indications for dividing the (remainder) of the data packet into bitstream data segments 402. In addition to the indications for division, the header may contain additional information. In a preferred embodiment of the invention, the indications for dividing the data packet are the locations of the beginning of the data segments in units of bits or bytes or multiples of bits or multiples of bytes. In a preferred embodiment of the invention, the locations of the beginning of the data segments are encoded as absolute values in the header of the data packet, either with respect to the start of the data packet or with respect to the end of the header or with from the beginning of the previous data packet. In still a preferred embodiment of the invention, the locations of the start of the data segments are differentially encoded, i.e. only the difference between the actual start of a data segment and a prediction for the start of the data segment is encoded. The prediction can be derived based on information already known or transmitted as the total size of the data packet, the size of the header, the number of data segments in the data packet, the location of the beginning of the previous data segments. In a preferred embodiment of the invention, the location of the beginning of the first data packet is not encoded, but is inferred based on the size of the header of the data packet. On the decoder side, the transmitted split indications are used to derive the beginning of the data segments. The
<img file="MX336735B_D0042.tif" />
¡K-.L data segments are then used as partial bit streams and the data contained in the data segments are supplied in the corresponding bit decoders in sequential order.
There are several alternatives to multiplex the partial bit streams in a data packet. An alternative, which can reduce the required lateral information, particularly for cases in which the sizes of the partial bit streams are very similar, is illustrated in Figure 10. The payload of the data packet, that is, the packet of data 410 without its header 411, it is segmented 412 in a predefined manner. As an example, the payload of the data packet can be divided into segments of the same size. Then each segment is associated with a partial bitstream or with the first part of a partial bitstream 413. If the partial bitstream is greater than the associated data segment, the remaining 414 is placed in the unused space at end of other data segments. This can be done in a way that the remaining part of a bit stream is inserted in reverse order (starting from the end of the data segment), which reduces lateral information. The association of the remainder of the partial bitstreams to the data segments and, when more than one remainder is added to a data segment, the starting point for one or more of the residues must be designated within the bit stream For example, in the header of the data package.
Variable-length codeword interleaving
For some applications, the above-described multiplexing of partial bit streams (for a number of syntax elements) in a data packet may have the following disadvantages: On the one hand, for small data packets, the number of bits for the lateral information that is required to signal division can be returned
I μ Ρ τ ¿ss · ** instituto a.ío :: c> no V „- = <¿A
OSLA ΓΑΟΗΕΟΑΟ Ρ '- I', ¿9
INOOS1 ai / Á significant with respect to the actual data in the partial bit streams, which ultimately reduces the coding efficiency. On the other hand, multiplexing may not be suitable for applications that require low delay (eg, for video conferencing applications). With the described multiplexing, the encoder cannot start transmitting a data packet before the partial bitstreams have been fully created, since the locations of the beginning of the splits are not previously known. Also, in general, the decoder has to wait until it receives the start of the last data segment before it can start decoding a data packet. For applications such as video conferencing systems, these delays can add up to an additional overall system delay of multiple video images (particularly for bit rates that are close to the transmission bit rate and for encoders / decoders that require almost the interval time between two images to encode / decode an image), which is critical for such applications. In order to overcome the disadvantages for certain applications, the encoder of a preferred embodiment of the invention can be configured in such a way that the code words that are generated by two or more bin encoders are interleaved in a single bitstream. The bitstream with the interleaved codewords can be sent directly to the decoder (neglecting a small buffer delay, see below).
On the decoder side, the two or more bin decoders read the codewords directly from the bin stream in the decoding order; decoding can be started with the first bit received. Furthermore, no lateral information is required to signal the multiplexing (or interleaving) of partial bit streams. An additional way to reduce decoder complexity can be achieved when
<img file="MX336735B_D0043.tif" />
bin 322 decoders do not read the variable length codewords from a global bit buffer, but instead they always read fixed bit length sequences from the global bit buffer and add these fixed length sequences to a bit buffer local, where each bin 322 decoder is connected with a separate local bit buffer. Variable length codewords are then read from the local bit buffer. Therefore, the analysis of the variable length codewords can be done in parallel, only access to fixed-length bitstreams has to be done in a synchronized manner, but such access of fixed-length bitstreams is generally very fast, so overall decoding complexity may be reduced for some architectures. The fixed number of bins that are sent to a particular local bit buffer may be different for different local bit buffers and may also vary in time, depending on certain parameters such as events in the binary decoder, bins buffer, or bit buffer. However, the number of bits that are read by a particular access does not depend on the actual bits that are read during the particular access, which is the important difference in reading variable length codewords. Reading of fixed-length bitstreams is triggered by certain events in the bin buffers, bin decoders, or local bit buffers. As an example, it is possible to request the reading of a new fixed-length sequence when the number of bits that are present in a connected bit buffer falls below a predefined threshold, where different threshold values can be used for different bit buffers. In the encoder, it has to be ensured that the fixed-length binary sequences are inserted in the same order in the bit stream, in which they are read from the bit stream on the decoder side. It is also possible to combine this interleaving of
<img file="MX336735B_D0044.tif" />
fixed length sequences with low delay control similar to those explained above. Next, a preferred embodiment for interleaving of fixed-length bit sequences is described. For further details regarding the latest interleaving schemes, reference is made to WO2011 / 128268Al.
After describing embodiments according to which pre-encoding is used to compress video data, it is described as a further embodiment for implementing embodiments of the present invention that makes the implementation especially effective in terms of a good trade-off between compression rate per one side and table of consultation and general computer expenses on the other hand. In particular, the following embodiments allow the use of computationally less complex variable length codes in order to entropy encode the bitstreams individually, and effectively cover portions of the probability estimate. In the embodiments described below, the symbols are binary in nature and the VLC codes presented below effectively cover the probability estimate represented by, for example, Rlps, extending within [0; 0.5j.
In particular, the embodiments outlined below describe possible implementations for the individual entropy encoders 310 and decoders 322 in Figures 7 through 17, respectively. They are suitable for encoding bins, that is, binary symbols, as they occur in image or video compression applications. Accordingly, these embodiments are also applicable to image or video encoding where such binary symbols are separated into one or more streams of bins 307 to be encoded and bitstreams 324 to be decoded, respectively, where each bin stream can be considered as a realization of a Bemoulli process. The
<img file="MX336735B_D0045.tif" />
Embodiments described below use one or more of the various so-called variable-to-variable codes explained below (v2v-codes) to encode the bin streams. A ν-2-ν code can be considered as two prefix-free codes with the same number of code words. A primary code, and a secondary prefix free.
Each code word in the prefix-free primary code is associated with a code word in the prefix-free secondary code. According to the embodiments outlined below, at least some of the 310 encoders and 322 decoders operate as follows: To encode a particular sequence of bins 307, each time a prefix-free primary codeword is read from the buffer 308, the corresponding code word of the prefix-free child code is written to bit stream 312. The same procedure is used to decode a 324 bit stream, but with prefix-free primary and secondary codes swapped. That is, to decode a 324 bit stream, each time a codeword of the prefix-free secondary code is read from the respective 324 bitstream, the corresponding codeword of the prefix-free primary code is written to the buffer 320.
Advantageously, the codes described below do not need look-up tables.
The codes can be implemented in the form of finite state machines. The v2-v codes presented here can be generated by simple building rules so there is no need to save large tables for codewords. Instead, a simple algorithm can be used to carry out encoding and decoding. Three construction rules are described below where two of them can be parameterized. They cover different or even disjoint parts of the aforementioned probability range and are therefore specifically advantageous if used together,
<img file="MX336735B_D0046.tif" />
INDUSTRIAL PROPERTY as the three parallel codes (each for different encoder / decoder 11 and 22), or two of them. With the construction rules described below, it is possible to design a set of codes ν-2-ν, so that for Bemoulli processes with arbitrary probability p, one of the codes performs well in terms of excess code length .
As indicated above, encoding and decoding of streams 312 and 324 respectively, can be performed independently for each stream or in an interleaved manner. This, however, is not specific to the presented classes of ν-2-ν codes and therefore only the encoding and decoding of a particular codeword is described for each of the three construction rules below. However, it is emphasized that all of the above embodiments relating to interleaving solutions are also combinable with the currently described codes or encoders and decoders 310 and 322, respectively.
Building rule 1: “Join us PIPE bin codes” or 310 v 322 encoders / decoders.
The unary bin PIPE codes (PIPE - probability interval partitioning entropy) are a special version of the so-called “pipe bin” codes, that is, codes suitable for the encoding of any individual bitstream 12 and 24, each transfer of a binary symbol statistic belonging to a certain probability sub-interval of the aforementioned probability range [0; 0.5]. The construction of pipe bin codes is described first. A pipe bin code can be constructed from any prefix free code with at least three code words. To form a v2v code, use the prefix free code as primary and secondary code, but with two
1 »» Ι'4ΙΒΜ »Βν« Λ ·
1 '\ tNSTlTL <\ ^ Γδίβ
Dw LA
INDuíhúaL “l · 'II1UUJKU.UJ code words of the free secondary code of the prefix exchanged. This means that except for two code words, the bins are written to the bit stream without change. With this technique, only a free prefix code needs to be stored together with the information, whose two code words are interchanged and therefore memory consumption is reduced. Please note, it only makes sense to exchange codewords of different length since otherwise the bit stream would be the same length as the bin stream (careless effects that can occur at the end of the bin stream).
Due to this construction rule , an exceptional property of pipe bin codes is, that if the prefix-free primary and secondary code are swapped (while the codeword assignment is retained), the resulting v2v code is identical. to the original v2v code. Therefore, the encoding algorithm and decoding algorithm are identical for pipe-bin codes.
A unary pipe bin code is built from a special prefix-free code. This special prefix-free code is constructed as follows: First, a prefix-free code consisting of n codewords is generated starting with "01", "001", "0001", ... until n words of code, n is the parameter for the unary pipe bin code. From the longest code word, trailing 1 is removed. This corresponds to a truncated unary code (but without the code word "0"). Then, the unary code words n-1 are generated starting with "10", "110", "1110", ... until the code words n-1 are produced. From the longest codewords, trailing 0 is removed. The union set of these two prefix free codes is used
τ.
INSTITUTE D-as input to generate unary pipe bin code. The two cocligous words that are exchanged are one single consisting of Os and one single consistent íe ls.
Example for n = 4
<td></td><td>No.</td><td>Primary</td><td>Secondary</td>
<td> 5</td><td> 1</td><td> 0000</td><td>lll</td>
<td></td><td> 2</td><td> 0001</td><td> 0001</td>
<td></td><td> 3</td><td> 001</td><td> 001</td>
<td></td><td> 4</td><td> 01</td><td> 01</td>
<td></td><td> 5</td><td> 10</td><td> 10</td>
<td> 10</td><td> 6</td><td> 110</td><td> 110</td>
<td></td><td> 7</td><td>lll</td><td> 0000</td>
Building rule 2: Codes “unary to Rice” and co- / decoders unary to Rice 10 and 22:
Rice unary codes use a truncated unary code as the primary code.
That is, the unary code words are generated starting with the code words "1", "01", "001", up to 2 and starting with the longest code word, trailing 1 is eliminated, n is the parameter from unary code to Rice. The prefix free secondary code is constructed from the code words of the prefix free primary code as follows. To the primary code word consisting only of Os, the code word "1" is assigned. All other codewords consist of the concatenation of the codeword "0" with the n-bit binary representation of the number of Os of the corresponding codeword of the prefix-free primary code.
tmdt irSTiTJ? <·· MDGCANO '
D2 .A! -. 'OP'EDAD »>.
INDUSTRIAL --¿ • a ^^ Kir ^ atO
Example for n = 3:
<td></td><td>No.</td><td>Primary</td><td>Secondary</td>
<td></td><td> 1</td><td> 1</td><td> 0000</td>
<td></td><td> 2</td><td> 01</td><td> 0001</td>
<td> 5</td><td> 3</td><td> 001</td><td> 0010</td>
<td></td><td> 4</td><td> 0001</td><td> 0011</td>
<td></td><td> 5</td><td> 00001</td><td> 0100</td>
<td></td><td> 6</td><td> 000001</td><td> 0101</td>
<td></td><td> 7</td><td> 0000001</td><td> 0110</td>
<td> 10</td><td> 8</td><td> 00000001</td><td> 0111</td>
<td></td><td> 9</td><td> 00000000</td><td> 1</td>
<td></td><td colspan="3">Note, that this is identical to assigning a code i</td>
<td></td><td>the parameter Rice 2<sup>n</sup>.</td><td></td><td></td>
<td> 15</td><td colspan="2">Building rule 3: Code</td><td>"Three bin"</td>
<td></td><td colspan="2">The three bin code is given as:</td><td></td>
<td></td><td>No.</td><td>Primary</td><td>Secondary</td>
<td></td><td> 1</td><td> 000</td><td> 0</td>
<td> 20</td><td> 2</td><td> 001</td><td> 100</td>
<td></td><td> 3</td><td> 010</td><td> 101</td>
<td></td><td> 4</td><td> 100</td><td> 110</td>
<td></td><td> 5</td><td> 110</td><td> 11100</td>
<td> 6</td><td> 101</td><td> 11101</td>
<td> 7</td><td> 011</td><td> 11110</td>
<td> 8</td><td> 111</td><td> 11111</td>
<img file="MX336735B_D0047.tif" />
l. \ ^ - Λ
It has the property that the primary code (symbol sequences) is of fixed length (always three bins) and the code words are ordered by ascending numbers of ls.
An efficient implementation of the three-bin code is described below. An encoder and decoder for the three-bin code can be implemented without storing tables as follows.
In the encoder (any of 10), three bins are read from the bin stream (i.e.
7). If these three bins contain exactly 1, the code word "1" is written to the bitstream followed by two bins consisting of the binary representation of the position of 1 (starting from the right with 00). If all three bins contain exactly 0, the code word "111" is written to the bitstream followed by two bins consisting of the binary representation of the position of 0 (starting from the right with 00). The remaining codewords "000" and "111" are assigned to "0" and "11111", respectively.
In the decoder (any of 22), a bin or bit is read from the respective bit stream 24. If it equals “0”, the code word “000” is decoded to the bin stream 21. If it equals “1 ", Two more bins are read from bitstream 24. If these two bits do not equal" 11 ", they are interpreted as the binary representation of a number and two Os and a 1 is decoded to the bitstream so that the position of 1 is determined by the
<img file="MX336735B_D0048.tif" />
number. If the two bits equal "11", two more bits are read and interpreted as a binary representation of a number. If this number is less than 3, two ls and a 0 are decoded and the number determines the position of 0. If it equals 3, "111" is decoded to the bin stream.
An efficient implementation of the unary pipe bin codes is described below. An encoder and decoder for unary pipe bin codes can be efficiently implemented using a counter. Due to the pipe bin code structure, the encoding and decoding of the pipe bin codes is easy to implement:
In the encoder (any one of 10), if the first bin of a codeword equals "0", the bins are processed until it occurs with a "1" or until n Os are read (including the first "0" of the code word). If a "1" occurred, the read bins are written to the bit stream without change. Otherwise (that is, n Os were read), n-1 ls are written to the bitstream. If the first bin of the codeword equals "1", the bins are processed until "0" occurs or until n-1 ls is read (including the first "1" of the codeword). If "0" occurs, the read bins are written to the bit stream without change. Otherwise (that is, n-1 ls were read), n Os are written to the bitstream.
In the decoder (any of 322), the same algorithm is used as for the encoder, since this is the same for pipe bin codes as described above.
An efficient implementation of Rice unary codes is described below.
An encoder and decoder for Rice unary codes can be efficiently implemented using a counter as described below.
C £ LA INSTITUTE
INDUSTRIAL
<img file="MX336735B_D0049.tif" />
In the encoder (any of 310), the bins are read from the bin stream (is
Τ Ά -Τ .η, .L iNSirnnO mezic; not
DE LÁ •• RO'ir.DAO V «. · - INDUSTRl / d. - °<sup>5</sup> say 7) until 1 occurs or until 2 Os are read. The number of Os is numbered. If the counted number equals 2<sup>n</sup>, the code word "1" is written to the bit stream. Otherwise, "0" is written, followed by the binary representation of the counted number, written with n bits.
In the encoder (any of 322), one bit is read. If it equals “1”, 2 Os are decoded to the bin stream. If it equals "0", n more bits are read and interpreted as a binary representation of a number. This Os number is decoded to the bin stream, followed by a "1".
In other words, the newly described embodiments describe an encoder for encoding a symbol sequence 303, comprising an allocator 316 configured to assign a number of parameters 305 for each symbol in the symbol sequence based on the information contained within the above symbols of the sequence of symbols; countless entropy encoders 310 each of which is configured to convert symbols 307 sent to the respective entropy encoder 310 into a respective bit stream 312; and a selector 6 configured to send each symbol 303 to one selected from the countless number of entropy encoders 10, the selection depending on the number of parameters 305 assigned to the respective symbol 303. According to the just outlined embodiments, at least a first subset of entropy encoders can be a variable length encoder configured to assign variable length symbol sequences within symbol stream 307 to variable length codewords to be inserted into bit streams 312, respectively, with each of the entropy encoders 310 of the first subset
<img file="MX336735B_D0050.tif" />
<img file="MX336735B_D0051.tif" />
using a bijective allocation rule according to which codewords of a prefix-free primary code with (2n-l)> 3 codewords are assigned to codewords of a prefix-free secondary code that is identical to the code of Primary prefix so that all but two of the code words in the prefix-free primary code are mapped to identical code words in the prefix-free secondary code while the two codewords in the Prefix-free primary and secondary codes have different lengths and are assigned one over the other in an interchangeable manner, where entropy encoders can use different ns to cover different parts of an interval of the aforementioned probability interval. The first prefix free code can be constructed so that the code words of the first prefix free code (a, b)<sub>2</sub>, (a, a, b)<sub>3</sub>, ..., (a, ..., a, b)<sub>n</sub>, (a, ... a)<sub>n</sub>, (b, a)<sub>2</sub>, (b, b, a)<sub>3</sub>, ..., φ, ..., b, a)<sub>n</sub>_i, (b, ..., b) „_ i, and the two codewords assigned to each other interchangeably are (a, ..., a), and 0?, ... b)<sub>n</sub>-i with b / aya, b ε {0,1}. However, the alternatives are feasible.
In other words, each of a first subset of entropy encoders can be configured, by converting the symbols sent to the respective entropy encoder into the respective bit stream, examining a first symbol sent to the respective entropy encoder, to determine as to if (1) the first symbol equals ε {0,1}, in which case the respective entropy encoder is configured to examine the following symbols sent to the respective entropy encoder to determine as to whether (1.1) b with b 7 a and b ε {0.1} occurs within the next n-1 symbols following the first symbol, in which case the respective entropy encoder is configured to write a word of code to the respective bit stream, which equals the
Λ Ά
MkTúCSKO 'Kí INSTITUTE<sup>&</sup>‘<sup>J</sup>35yes ΒΒΙΛΤ »Ο?! ΕΟλΟ VJaeayriBk INDUSTRY !.
first symbol followed by the following symbols sent to the respective entropy encoder, up to symbol b; (1.2) b does not occur within the next n-1 symbols following the first symbol, in which case the respective entropy encoder is configured to write a codeword to the respective bit stream, which equals (b, ... , b)<sub>n</sub>_i; or (2) the first symbol equals b, in which case the respective entropy encoder is configured to examine the following symbols sent to the respective entropy encoder to determine as to whether (2.1) a occurs within the next n-2 symbols following the first symbol, in which case the respective entropy encoder is configured to write a codeword to the respective bit stream, which equals the first symbol followed by the following symbols sent to the respective entropy encoder up to the symbol a; or (2.2) a does not occur within the next n-2 symbols following the first symbol, in which case the respective entropy encoder is configured to write a codeword to the respective bit stream, which equals (a,
Additionally or alternatively, a second subset of the entropy encoders 10 may be a variable length encoder configured to assign symbol length sequences of varying lengths to fixed length codewords, respectively, with each of the entropy encoders of the second subset using a bijective allocation rule according to which codewords of a primary truncated unary code with 2<sup>n</sup>+ l code words of type {(a), (ba), (bba), ..., (b ... ba), (bb ... b)} with berry, b ε {0,1} are assigned to codewords of a prefix-free secondary code such that codeword (bb ... b) of the primary truncated unary code is assigned to codeword (c) of the free-of-code secondary code.
<img file="MX336735B_D0052.tif" />
<img file="MX336735B_D0053.tif" />
INDEX and iJAL prefix and all other codewords {(a), (ba), (bba), .. (b .. .ba)} of the primary truncated unary code are assigned to the codewords having (d) with c ψ dyc, d ε {0,1} as a prefix and an n-bit word as a suffix, where entropy encoders use different n. Each of the second subset of entropy encoders can be configured such that the word n-bit is an n-bit representation of the number of b's in the respective code word of the primary truncated unary code. However, the alternatives are feasible.
Again, from the perspective of the operating mode of the respective encoder 10, each of the second subset of entropy encoders can be configured, by converting the symbols sent to the respective entropy encoder into the respective bit stream, counting a number of b's into a sequence of symbols sent to the respective entropy encoder, until it occurs at, or until the number of the sequence of symbols sent to the respective entropy encoder reaches 2<sup>n</sup> with all symbols 2 in the sequence being b, and (1) if the number of b's equals 2, write c with ε {0,1} as a code word of a prefix-free child code to the respective bit stream, and (2) if the number of b's is less than 2, write a code word of the prefix-free secondary code to the respective bit stream, which has (d) with c / d and d ε {0,1} as the prefix and a n-bit word determined depending on the number of b's as suffix.
Also additionally or alternatively, one of the predetermined entropy encoders 10 may be a variable length encoder configured to assign symbol sequences of fixed lengths to variable length codewords, respectively, the predetermined entropy encoder using a bijective assignment rule. according to which code word 2<sup>3</sup> of length 3 of a primary code are
IMPí
MEXICAN INSTITUTE OF THE INDUSTRIAL PROPINAD
<img file="MX336735B_D0054.tif" />
assigned to codewords in a prefix-free child code such that codeword (aaa) 3 of the primary code with a ε {0.1} is assigned to codeword (c) with c ε {0, 1}, the three codewords of the primary code having exactly one b with bayb ε {0.1} are assigned to codewords having (d) with c # d and d ε {0.1} as a prefix and a respective first 2-bit word from a first set of 2-bit words as a suffix, all three codewords of the primary code having exactly one a are assigned to codewords having (d) as a prefix and a concatenation of a first 2-bit word not being an element of the first set and a second word 2- bit of a second set of 2-bit words, such as a suffix, and where codeword (bbb) 3 is assigned to the codeword having (d) as a prefix and a concatenation of the first 2-bit word not being an element of the first set and a second 2-bit word not being an element from the second set, such as a suffix. The first 2-bit word of the code words of the primary code having exactly b can be a 2-bit representation of a position of b in the respective code word of the primary code, and the second 2-bit word of codewords of the primary code having exactly one a may be a 2-bit representation of a position of a in the respective codeword of the primary code. However, the alternatives are feasible.
Again, one of the predetermined entropy encoders can be configured, by converting the symbols sent to the predetermined entropy encoder into the respective bit stream, examining the symbols of the predetermined entropy encoder into triplets as to whether (1) the triplet consists of a's, in which case the default entropy encoder is configured to write the codeword
ΪΓ'ΛΤ 3 Γ> Λ I
<img file="MX336735B_D0055.tif" />
(c) to the respective bit stream, (2) the triplet comprises exactly one b, in which case the default entropy encoder is configured to write a codeword having (d) as a prefix and a 2-bit representation of a position of the b in the triplet as a suffix, to the respective bit stream; (3) the triplet comprises exactly one a, in which case the default entropy encoder is configured to write a codeword having (d) as a prefix and a concatenation of the first 2-bit word not being an element of the first set and a 2-bit representation of a position of the a in the triplet as a suffix, to the respective bit stream; or (4) the triplet consists of b's, in which case the default entropy encoder is configured to write a codeword having (d) as a prefix and a concatenation of the first 2-bit word not being an element of the first set and the first 2-bit word not being an element of the second set as a suffix, to the respective bit stream.
Relating to the decoding side, the newly described embodiments reveal a decoder for reconstructing a sequence of symbols 326, comprising a myriad of entropy decoders 322, each of which is configured to convert A bitstream 324 to symbols 321; an allocator 316 configured to assign a number of parameters to each symbol 326 of my symbol sequence to be reconstructed based on information contained within previously reconstructed symbols of the symbol sequence; and a selector 318 configured to retrieve each symbol 325 from the symbol sequence to be reconstructed from one selected from the countless number of entropy decoders, the selection depending on the number of parameters defined to the respective symbol. According to the newly described embodiments at least a first subset of the 322 entropy decoders are <.Μ ™<sup>Τ</sup>
INSTITUTE - * DE LA 5 1 lht> uc j tb.
<img file="MX336735B_D0056.tif" />
variable-length decoders configured to assign codewords of varying lengths to symbol sequences of varying lengths, respectively, with each of the entropy decoders 22 of the first subset using a bijective allocation rule according to which codewords of a prefix-free primary code with codewords (2n-l)> 3 are assigned to codewords of a prefix-free secondary code which is identical to the primary prefix code so that all but two of the code words of the prefix-free primary code are assigned to identical codewords of the prefix-free secondary code while the two codewords of the prefix-free primary and secondary codes have different lengths and are assigned to each other in an interchanged manner, where entropy encoders use different n's. The first prefix free code can be constructed so that the first prefix free code code words are (a, b)<sub>2</sub>, (a, a, b)<sub>3</sub>, ..., (a, .., a, b)<sub>n</sub>, (a, ..., a)<sub>n</sub>, (b, a)<sub>2</sub>, (b, b, a)<sub>3</sub>, ..., (b, ..., b, a)<sub>n</sub>.i, (b, ..., b) „. i, and the two code words assigned one on top of the other in the interchanged manner can be (a, ..., a), and (b, ..., b)<sub>n</sub>-i with b / aya, be {0,1}. However, the alternatives are feasible.
Each of the first subset of entropy encoders can be configured, by converting the respective bit stream into symbols, examining a first bit of the respective bit stream, to determine as to whether (1) the first bit equals 0 {0 ,one}, in which case the respective entropy encoder is configured to examine the following bits of the respective bit stream to determine as to whether their (1.1) b with b ψ and b 0 {0, l} occurs within the next bits n-1 a continuation of the first bit, in which case the respective entropy decoder is configured to reconstruct a sequence of symbols, which equals the first bit followed by the following bits of the respective stream of _ Μ ii
INSTITUTE Μ? Χ. ')
OF THE ΓΓιΟΓίΒΟΛΠ
INDUSiTuAL --------- * bits, up to bit b; or (1.2) no b occurs within the next n-1 bits after the first bit, in which case the respective entropy decoder is configured to reconstruct a symbol sequence, which equals (b, ..., b) „ -i; or (2) the first bit equals b, in which case the respective entropy decoder is configured to examine the following bits of the respective bit stream to determine as to whether (2.1) a occurs within the next n-2 bit below of the first bit, in which case the respective entropy decoder is configured to reconstruct a sequence of symbols, which equals the first bit followed by the following bits of the respective bit stream to the symbol a; or (2.2) neither a occurs within the next n-2 bits after the first bit, in which case the respective entropy decoder is configured to reconstruct a symbol sequence, which equals (a, ..., 2)<sub>n</sub>.
Additionally or alternatively, at least a second subset of the entropy decoders 322 may be a variable length decoder configured to assign fixed length codewords to symbol sequences of varying lengths, respectively, with each of the entropy decoders of the second subset using a bijective allocation rule according to which codewords of a prefix-free secondary code are assigned to the codewords of a primary unary code truncated with codewords 2<sup>n</sup>+ l of type {(a), (ba), (bba), ..., (b, ... ba), (bb ... b)} with t # aya, be {0,1} of so the codeword (c) of the prefix-free secondary code is assigned to the codeword (bb ... b) of the truncated primary unary code and codewords having (d) with c ^ dyc, d ε { 0,1} as a prefix and an n-bit word as a suffix, are assigned to a respective one of the other codewords {(a), (ba), (bba), ..., (b ... ba )} of the truncated primary unary code,
<img file="MX336735B_D0057.tif" />
where entropy decoders use different n. Each of the second subsets of entropy decoders can be configured so that the word n-bit is an n-bit representation of the number of b's in the respective code word of the truncated primary unary code. However, the alternatives are feasible.
Each of a second subset of entropy decoders may be a variable length decoder configured to assign fixed length codewords to variable length symbol sequences, respectively, and configured, converting the bitstream of the respective entropy decoder to the symbols, examine a first bit of the respective bit stream to determine as to whether (1) it equals c with c ε {0.1}, in which case the respective entropy decoder is configured to reconstruct a sequence of symbols that equals (bb ... b) 2<sup>n</sup> with b ε {0.1}; or (2) themselves equal d with c / d and c, d ε {0.1}, in which case the respective entropy decoder is configured to determine an n-bit word from additional n bits of the respective bit stream, a continuation of the first bit, and reconstruct a sequence of symbols thereof which is of type {(a), (ba), (bba), ..., (b ... ba), (bb ... b )} with b # a and b ε {0,1} with the number of b's depending on the n-bit word.
Additionally or alternatively, one of the predetermined entropy decoders 322 may be a variable length decoder for assigning code words of varying lengths to symbol sequences of fixed lengths, respectively, the default entropy decoder using a bijective allocation rule according to which code words of a prefix-free secondary code are assigned to code words 2 of length 3 of a primary code such that code word (c) with c ε {0,1} is assigned to the code word (aaa) 3
Iva} ha
MEXICAN INSTITUTE V ¿<¿S3r?
OF THE PROPERTY V ^ skse ^
INDUSTRIAL W. * · of the primary code with a ε {0.1}, codewords having (d) with c # dyd ε {0.1} as a prefix and a respective first 2-bit word of a first set of three 2-bit words as a suffix are assigned to the three codewords of the primary code having exactly one b with b ^ a and b ε {0,1}, codewords having (d) as a prefix and a concatenation of a first 2-bit word not being an element of the first set and a second 2-bit word of a second set of three 2-bit words, as a suffix are assigned to the three codewords of the primary code having exactly one a, and a codeword having (d) as a prefix and a concatenation of the first 2-bit word not being an element of the first set and a second 2-bit word not being an element of the second set, as a suffix is assigned to codeword (bbb) 3. The first 2-bit word of the codewords of the primary code having exactly b can be a 2-bit representation of a position of b in the respective codeword of the primary code, and a second word of 2- bit of the codewords of the primary code having exactly one a may be a 2-bit representation of my position of the a in the respective codeword of the primary code. However, the alternatives are feasible.
One of the predetermined entropy decoders may be a variable length decoder configured to assign variable length codewords to symbol sequences of three symbols each, respectively, and configured to convert the bit stream of the respective entropy decoder into the symbols, examine the first bit of the respective bitstream to determine as to whether (a) the first bit of the respective bitstream equals c with c ε {0.1}, in which case the entropy decoder
INSTITUTE · <ΕΚΑ «Ve i®i2¡ í ^ ^ trt fROPTSD. '. Li default is configured to reconstruct a sequence of symbol ^^^ ie equals (aaa) 3 with a 0 {0,1}, or (2) the first bit of the respective bitstream iguultf'iTcoirc ^ TyH'e {0,1}, in which case the default entropy decoder is configured to determine a first additional 2-bit 2-bit word of the respective bitstream, after the first bit, and examine the first 2-bit word to determine as to whether (2.1) the first 2-bit word is not an element of the first set of three 2-bit words, in which case the default entropy decoder is configured to reconstruct a symbol sequence that has exactly b with b / a and bO {0,1}, with the position of b in the respective symbol sequence depending on the first 2-bit word, or (2.2) the first 2-bit word is an element of the first set, in which case the default entropy decoder is configured to determine a second additional 2-bit 2-bit word of the respective bit stream, following two bits of which the first 2-bit word has been determined, and examine the second 2-bit word to determine as to whether (3.1) the second 2-bit word is not an element of a second set of three words 2-bit, in which case the default entropy decoder is configured to reconstruct a symbol sequence having exactly one a, with the position of a in the respective symbol sequence depending on the second 2-bit word, or (3.2) the second word 2-bit is an element of a second set of three 2-bit words, in which case the default entropy decoder is configured to reconstruct a symbol sequence that equals (bbb) 3.
Now, after describing the general concept of the video encoding scheme, the embodiments of the present invention are described with respect to the lf «« ΓΠ ΙΓ<sup>-</sup> I UtaaQSU * -ΟίΧΐ!
/ ίΐ / '// \
INSTITUTE ΗΓλ CWO
OF THE PkOr-. <sup>1</sup> D> ζ. - s
INDUSTRIAL previous achievements. In other words, the embodiments described below can be implemented by using the above schemes, and vice versa, the above coding schemes can be implemented using and exploiting the embodiments described below.
In the embodiments described above with respect to Figures 7 to 9, the entropy encoders and decoders of Figures 1 to 6 were implemented in accordance with the PIPE concept. A special embodiment used 310 and 322 single probability arithmetic state encoders / decoders. As will be described below, in accordance with an alternative embodiment, entities 306-310 and corresponding entities 318 to 322 can be replaced by a common entropy encoding engine. As an example, imagine an arithmetic coding engine, which simply manages a common state R and L and encodes all symbols in a common current flow, thereby giving the advantageous aspects of the current PIPE concept with respect to parallel processing, but avoiding the need to interleave the partial bit streams as will be described later. In doing so, the number of probability states by which the context probabilities are estimated by the update (such as the lookup table), may be greater than the number of probability states by which the interval subdivision of probability. That is, analogously to quantifying the width value of the probability interval before indexing in the Rtab table, the probability state index can also be quantized. The description above for a possible implementation for the unique encoders / decoders 310 and 322 can therefore be extended for a
INS71 b.ji 't' * i '·) D2 LA r?: << „·
INDUSTRIAL
Τ '??' Τ ...... Γ, _ ρ '.. · -,' '' ί \ <'\ ______fi Example of an implementation of entropy encoders / decoders 3T8T
322 / 306-310 as arithmetic binary encoding / decoding engines.
To be more precise, according to one embodiment, the entropy encoder attached to the output of the parameter mapper (which acts as a context mapper, here) can operate as follows:
0. Mapper 304 sends the bin value along with the probability parameter. The probability is pState_current [bin].
one. Thus, the entropy coding engine receives: 1) valLPS, 2) the bin, and 3) the probability distribution estimate pState_current [bin]. pStatecurrentfbin] can have more states than the number of indices of the Rtab distinguishable probability state. If so, pState_current [bin] can be quantized, for example, without taking into account m LSBs with m being greater than or equal to 1 and preferably 2 or 3 in order to obtain a p state, that is, the index that It is used to access the Rtab table. The quantization may, however, not be used, ie p state may be pStatecurrentfbin].
2. Then a quantization of R is performed (as mentioned above; either an R (and corresponding L with a common bitstream) is used / administered for all distinguishable values of pjstate, or an R (and corresponding L with stream of partial bit associated by pair of R / L) by distinguishable value of p_state whose last case would correspond to having a bin 310 encoder for said value) q_index = Qtab [R »q] (or some other form of quantization)
3. Then, a determination of Rlps and R is made:
Ι. ·; 3Γ Γ '' .. = - ζ- * » <sup>c</sup>-, ν. - ·., Ϊ->
Rlps <sup>=</sup> Rtab [p_state] [q_index]; Rtab has stored in the same pre-calculated values for p [p_state] Q [q_index]
R = R - Rlps [that is, R is preliminarily updated as if "bin" were
MPS]
Four. Calculation of the new partial interval:
if (bin = 1 - valMPS) then
LL + R
R “· Rlps
5. Renormalization of L and R, writing bits,
Similarly, the entropy decoder attached to the output of the parameter mapper (which acts as a context mapper, here) can operate as follows:
0. Mapper 304 sends the bin value along with the probability parameter. The probability is pState_current [bin].
one. Thus, the entropy decoding engine receives the request for a bin along with: 1) valLPS, and 2) the probability distribution estimate pState_current [bin]. pState_current [bin] can have more states than the number of indices of distinguishable probability states of Rtab. If so, pState_current [bin] can be quantized, for example, without taking into account m LBS with m being greater than or equal to 1 and preferably 2 or 3 in order to obtain a p state, that is, the index that is used to access the Rtab table. The quantization may, however, not be used, that is, p_state may be pState_current [bin].
<img file="MX336735B_D0058.tif" />
2.
Then a quantification of R is performed (as mentioned above: ya 'Γ- A Τ r η' '· · *
I <sup>τ</sup>
<img file="MX336735B_D0059.tif" />
1CA * O
Mvn - '. D
3.
let R (and V correspond with a common bitstream)<sup>1</sup>ES''®S3o7a (administered for all distinguishable values of p state, or a corresponding R (and V with associated bitstream per pair of R / L) per distinguishable value of p_state, the latter case of which would be to have an encoder of bin 310 for that value) q_index = Qtab [R »q] (or some other form of quantification)
Then, a determination of Rlps and R is made:
Rlps ~ Rtab [p_state] [q_index]; Rtab has stored in the same pre-calculated values for p [p_state] Q [q_index]
R = R Rlps [that is, R is preliminarily updated as if "bin" were MPS]
Four. Determination of bin depending on the position of the partial interval: if (V<sup>3</sup> R) then bin ~<sup>1</sup> 1 - valMPS (bin is decoded as LPS; bin buffer selector 18 will get actual bin value by using this bin and valMPS information)
VVR
R -<sup>1</sup> Rlps plus bin - · valMPS (bin is decoded as MPS; the actual bin value is obtained by using this bin and valMPS information)
5. Renormalization of R, reading a bit and updating V.
<img file="MX336735B_D0060.tif" />
As described above, allocator 4 assigns pState_current [bin] to each bin. The association can be made based on a selection of context. That is, allocator 4 can select a context using a ctxldx context index which, in turn, has a respective pStatecurrent associated with it. A probability update can be performed each time, a probability pState_current [bin] has been applied to a current bin. An update of the probability state pState_current [bin] is performed depending on the value of the coded bit:
if (bit = 1 - valMPS) then pStatecurrent · * —Next_State_Lps [pState_current] if (pState current = 0) then valMPS <- 1 - valMPS plus pState_current · * - Next_State_MPS [pState_current]
If more than one context is provided, adaptation is context-aware, ie pState_current [ctxIdx] is used for encoding and then updated using the current value of bin (encoded or decoded, respectively).
As will be described in more detail below, according to now described embodiments, the encoder and decoder can be optionally implemented to operate in different modes, namely Low Complexity (LC) and High Efficiency (HE) mode. This is mainly illustrated with respect to PIPE encoding in the following (then mentioning LC and HE PIPE modes), but the description of the details of scalability complexity is easily transferable to other implementations of the
<img file="MX336735B_D0061.tif" />
entropy encoding / decoding engines such as the realization of using a common adaptive context arithmetic encoder / decoder.
In accordance with the embodiments described below, both entropy encoding modes can share the • same syntax and semantics (for syntax element sequence 301 and 327, respectively).
• the same binarization schemes for all syntax elements (as currently specified for CABAC) (ie binarizers can operate independently of the activated mode).
• the use of the same PIPE codes (ie bin encoders / decoders can operate independently of the activated mode).
• use of 8 bits of probability model initialization values (instead of initialization value bit as currently specified for CABAC).
Generally speaking, LC-PIPE differs from HE-PIPE in processing complexity, such as the complexity of selecting the PIPE 312 path for each bin.
For example, LC mode can operate under the following restrictions: For each bin (bindldx), there can be exactly one probability model, that is, one ctxldx. That is, context selection / adaptation cannot be provided in LC PIPE. Specific syntax elements such as those used for residual encoding can suspend, encoded using contexts, as described below. Furthermore, all probability models can be non-adaptive, that is, all models can be
<img file="MX336735B_D0062.tif" />
initialized at the beginning of each slice with probabilities of appropriate models (depending on the choice of slice type and slice QP) and can be kept fixed during slice processing. For example, only 8 different probability models corresponding to 8 different PIPE 310/322 codes can be maintained, both for modeling and context encoding. The specific syntax elements for residual encoding, i.e. significancecoeffflag and coeff_abs_level_greaterX (with X = 1.2), whose semantics are described in more detail below, can be assigned to probability models such that (at least) groups of, for example, 4 syntax elements are encoded / decoded with the same probability model. Compared to CAVLC, LC-PIPE mode achieves more or less the same RD performance and the same compliance.
HE-PIPE can be configured to be conceptually similar to H.264 CABAC with the following differences: binary arithmetic coding (BAC) is replaced by PIPE coding (the same as in the LC-PIPE case). Each probability model, that is, each ctxldx, can be represented by a pipeldx and a refineldx, where pipeldx with values in the range from 0—7 represents the probability model of 8 different PIPE codes. This change affects only the internal representation of states, not the behavior of the state machine (that is, probability estimation). As will be described in more detail below, probability model initialization can use 8 bit initialization values as set forth above. The reverse analysis of the syntax elements coeffabslevelgreaterX (with X = 1.2), coeff_abs_level_minus3, and coeff_sign_flag (whose semantics will be clarified from the discussion below) can be performed along the same custom scan path
<img file="MX336735B_D0063.tif" />
that the scan progresses (used in, for example, significance map encoding). Deriving the context for encoding coeffabslevelgreaterX (with X = 1.2) can also be simplified. Compared to CABAC, the proposed HE-PIPE achieves more or less the same RD performance with better compliance.
It is easy to see that the aforementioned modes are easily generated by rendering, for example, the aforementioned adaptive context arithmetic binary encoding / decoding engine in such a way that it operates in different modes.
Thus, according to an embodiment according to a first aspect of the present invention, a decoder can be constructed to decode a data stream as shown in Figure 11. The decoder is to decode a data stream 401, such as the interleaved bitstream 340, in which information data, such as video data, is encoded. The decoder comprises a switch mode 400 configured to activate the low complexity mode or the high efficiency mode depending on data stream 401. To this end, data stream 401 may comprise a syntax element as a binary syntax element. , having a binary value of 1 in the case of the low complexity mode being the one that is activated, and having a binary value of 0 in the case of the high efficiency mode being the one that is activated. Obviously, the association between the binary value and the encoding mode can be interchanged, and a non-binary syntax element having more than two possible values can also be used. As the current selection between the two modes is not clear even before the reception of the respective syntax element, this syntax element can be contained within some main headers of the encoded data stream 401, for example with a fixed probability estimate or model
MEXICAN INSTITUTE OF PROPERTY
INDUSTRIAL
<img file="MX336735B_D0064.tif" />
probability or being written to data stream 401 as is, that is, using a bypass mode.
Furthermore, the Figure 11 decoder comprises a myriad of entropy decoders 322, each of which is configured to convert code words in data stream 401 to partial symbol sequences 321. As described above, a de-interleaver 404 can be connected between entropy decoder inputs 322 on the one hand and the decoder input of Figure 11, where data stream 401 is applied, on the other hand. Furthermore, as already explained above, each of the entropy decoders 322 can be associated with a respective probability range, the probability ranges of the various entropy decoders covering together the entire probability range from 0 to 1 - or 0 to 0.5 for 322 entropy decoders dealing with MPS and LPS instead of absolute symbol values. The details regarding this matter have been described above. Later, it is assumed that the number of decoders 322 is 8 with a PIPE index being assigned to each decoder, but any other number is also feasible. Furthermore, one of these encoders, below is exemplary one having pipeid 0, it is optimized for bins having equi-probable statistics, that is, its bin value assumes 1 and 0 equally probable. This, decoding can simply happen in the bins. The respective encoder 310 operates the same. Even any bin manipulation depending on the value of the most likely bin value, valMPS, by selectors 402 and 502, respectively, can be left out. In other words, the entropy of the respective partial flow is already optimal.
Furthermore, the decoder of Figure 11 comprises a selector 402 configured for jVl ir 'I
MEXICAN INSTITUTE
FROM INDUSTRIAL PROPERTY remove each symbol from a sequence 326 of symbols from one selected from the countless number of entropy decoders 322. As mentioned above, selector 402 can be divided into a parameter mapper 316 and a selector 318. A des5 symbolizer 314 it is configured to de-symbolize the sequence 326 of symbols in order to obtain a sequence 327 of syntax elements. A reconstructor 404 is configured to reconstruct the information data 405 based on the sequence of syntax elements 327. The selector 402 is configured to perform the selection depending on the activation of the low complexity mode and the high efficiency mode as indicated by the arrow 406.
As already stated above, the rebuilder 404 may be the part of a predictive block based video decoder operating on a fixed syntax and syntax element semantics, i.e. fixed relative to selection mode by switch mode 400. That is, the rebuilder 404 construction does not suffer from commutability mode. To be more precise, the rebuilder 404 does not increase the implementation overhead due to the switch mode switch 400 mode and at least the functionality with respect to the residual data and the prediction data remain the same independent of the mode selected by switch 400. The same applies, however, with respect to 322 entropy decoders. All of these 322 decoders are reused in both modes, and consequently, there is no additional implementation overhead although the Figure 11 decoder supports both modes, the low complexity and high efficiency modes.
ir'KtcRV-VK-su'Tiawuatacra-.i'iuKSVSMamts
<img file="MX336735B_D0065.tif" />
As a side aspect it should be noted that the Figure 11 decoder is not only capable of operating with independent data streams, either in one way or another. Rather, the Figure 11 decoder as well as data stream 401 can be configured such that switching between the two modes would even be possible during a portion of the information data such as during a video or some piece of video, with the order of for example controlling the encoding complexity on the decoding side under external and environmental conditions such as a battery state or the like using a feedback channel from the decoder to the encoder in order to control the selection mode accordingly.
Thus, the Figure 11 decoder operates similarly in both cases, in the case of the LC mode being selected or the HE mode being selected. Rebuilder 404 performs the rebuild using syntax elements and requests the current syntax element from a default syntax element type by processing or obeying some syntax structure requirement. The de-symbolizer 314 requests a number of bins in order to produce a valid binarization for the syntax element requested by the reconstructor 404. Obviously, in the case of a binary alphabet, the binarization performed by the de-symbolizer 314 is simply reduced to pass the respective bin / symbol 326 to the rebuilder 404 as the currently requested binary syntax element.
The selector 402, however, operates independently in the mode selected by the switch mode 400. The operating mode of the selector 402 tends to be more complex in the case of the high-efficiency mode, and less complex in the case of the low-complexity mode. Furthermore, the following discussion will show that the operating mode of selector 402 in the least complex mode also tends to reduce the rate at which the ϊ Μ Ρ ϊ ί / Υ<sup>, Ν1</sup>ί selector 402 changes the selection between the entropy decoders 322 by retrieving the consecutive symbols from the entropy decoders 322. In other words, in low complexity mode, there is an increasing probability that immediately consecutive symbols will be retrieved from the same entropy decoder between the countless number of 322 entropy decoders. This, in turn, enables faster retrieval of the symbols from the 322 entropy decoders. In high-efficiency mode, in turn, the operating mode of selector 402 tends to lead to a selection between entropy decoders 322 where the probability interval associated with the respective selected entropy decoder 322 most closely matches the actual symbol statistics of the symbol currently retrieved by selector 402, thus producing a better compression ratio on the encoding side by generating the respective data stream according to the high efficiency mode.
For example, the different behavior of selector 402 in both modes can be done as follows. For example, selector 402 may be configured to perform, for a predetermined symbol, selection from the countless number of entropy decoders 322 depending on the symbols previously retrieved from symbol sequence 326 in case the high efficiency mode is activated and independent of any symbols previously retrieved from the symbol sequence in case of activating the low complexity mode. Dependence on symbols previously retrieved from symbol sequence 326 may result from context adaptability and / or probability adaptability. Both adaptations can be disabled during low complexity mode on selector 402.
<img file="MX336735B_D0066.tif" />
According to a further embodiment, the data stream 402 can be structured into consecutive portions as parts, frames, image groups, frame sequences or the like, and each symbol in the symbol sequence can be associated with a respective one of a numberless number. of symbol types. In this case, the selector
402 can be configured to vary, for symbols of a predetermined type of symbol within a current portion, the selection depending on symbols previously retrieved from the sequence of symbols of the predetermined symbol type within the current portion in case of activating the high efficiency, and leave the selection constant within the current portion in case of activating the low complexity mode. That is, selector 402 can be allowed to change the selection between entropy decoders 322 for the default symbol type, but these changes are restricted to occur between transitions between consecutive portions. By this measure, evaluations of actual symbol statistics are limited to seldom occurring while coding complexity is reduced most of the time.
Furthermore, each symbol in symbol sequence 326 may be associated with a respective one of a number of symbol types, and selector 402 may be configured for a predetermined symbol of a predetermined symbol type, selecting one of a number of contexts depending on symbols previously retrieved from symbol sequence 326 and making the selection among entropy decoders 322 depending on a probability model associated with a selected context along with updating the probability model associated with a context selected depending on the default symbol in case of activating the high efficiency mode, and make the selection of one of countless contexts depending on the symbols
<img file="MX336735B_D0067.tif" />
ΙΝ'ΪΙΪ ·; '/ ;. ·
£ · £ ίΛ ÓVJUEÜAO previously recovered from the sequence 326 of symbols and perform the selection of entropy decoders 322 depending on the probability model associated with the selected context eT along with leaving the probability model associated with the selected context constant in case of activating low complexity mode. That is, selector 402 can use context adaptability with respect to a certain type of syntax element in both modes, while probability adaptation is suppressed in case of LC mode.
Alternatively, instead of completely suppressing the probability adaptation, the selector 402 may simply reduce an update rate of the LC mode probability adaptation to the HE mode.
Furthermore, possible specific LC-PIPE aspects, ie aspects of the LC mode, can be described in other words. In particular, non-adaptive probability models can be used in LC mode. A non-adaptive probability model can have either a fixed coding, that is, total constant probability or its probability is fixed through the processing of only one part and therefore can be fixed depending on the type of part and QP, that is , the quantization parameter which is, for example, signaled within data stream 401 for each part. Assuming these successive bins assigned to the same context follows a fixed probability model, it is possible to decode several of these bins in one stage since they are encoded using the same PIPE code, that is, using the same entropy decoder, and a probability update after each decoded bin is skipped. Omitting probability updates saves operations during the encoding and decoding process and,
<img file="MX336735B_D0068.tif" />
<sup>lJl</sup>- industp-i / a therefore also leads to complexity reductions and a significant simplification in hardware design.
The non-adaptive constraint can be alleviated for all or some selected probability models such that probability updates are allowed after a certain number of bins have been encoded / decoded using this model. An appropriate refresh interval allows a probability fit while having the ability to decode multiple bins at the same time.
The following is a more detailed description of possible common aspects and scalable complexity of LC-PIPE and HE-PIPE. In particular, the following describes aspects that can be used for the LC-PIPE and HE-PIPE mode in the same way or in a way of scalable complexity. Scalable complexity means that the LC case is derived from the HE case by removing particular parts or replacing them with something less complex. However, before proceeding with them, it should be mentioned that the embodiment of Figure 11 is easily transferable to the aforementioned adaptive context binary arithmetic encoding / decoding embodiment: selector 402 and entropy decoders 322 will condense into an arithmetic decoder Adaptive context binary that can directly receive data stream 401 and select the context for the bin to be derived from the data stream. This is especially true for context adaptability and / or probability adaptability. Both features / adaptations can be switched off, or designed more relaxed, during low complexity mode.
For example, when implementing the embodiment of Figure 11, the PIPE entropy encoding step involving entropy decoders 322 can use eight codes
<img file="MX336735B_D0069.tif" />
iT.'iJTO SXiCANO
DI IA F'iC.? T / f3AD »? 4DUSThaAL • r
JÍ, systematic variable by variable, that is, each entropy decoder 322 can be a type v2v that has been described previously. The concept of PIPE coding using systematic v2v codes is simplified by restricting the number of v2v codes. In the case of an adaptive context binary arithmetic decoder, it can handle the same probability states for different contexts and use the same - or a quantized version of it - for the probability sub-division. The assignment of CABAC or probability model states, that is, the states used to update the probabilities, to PIPE ids or probability indices for query in Rtab can be as shown in Table A.
<td>CABAC status</td><td>PIPE index</td><td>CABAC status</td><td>PIPE Index</td>
<td> 0</td><td> 0</td><td> 32</td><td> 5</td>
<td> 1</td><td></td><td> 33</td><td></td>
<td> 2</td><td></td><td> 34</td><td></td>
<td> 3</td><td> 1</td><td> 35</td><td></td>
<td> 4</td><td></td><td> 36</td><td></td>
<td> 5</td><td></td><td> 37</td><td></td>
<td> 6</td><td></td><td> 38</td><td></td>
<td> 7</td><td></td><td> 39</td><td></td>
<td> 8</td><td></td><td> 40</td><td></td>
<td> 9</td><td></td><td> 41</td><td></td>
<td> 10</td><td> 2</td><td> 42</td><td></td>
<img file="MX336735B_D0070.tif" />
wsy<sup>4</sup>
goes
<td> 11</td><td rowspan="4"></td><td> 43</td><td rowspan="3"></td>
<td> 12</td><td> 44</td>
<td> 13</td><td> 45</td>
<td> 14</td><td> 46</td><td rowspan="9"> 6</td>
<td> 15</td><td rowspan="7"> 3</td><td> 47</td>
<td> 16</td><td> 48</td>
<td> 17</td><td> 49</td>
<td> 18</td><td> 50</td>
<td> 19</td><td> 51</td>
<td> 20</td><td> 52</td>
<td> 21</td><td> 53</td>
<td> 22</td><td> 4</td><td> 54</td>
<td> 23</td><td></td><td> 55</td><td rowspan="7"></td>
<td> 24</td><td></td><td> 56</td>
<td> 25</td><td></td><td> 57</td>
<td> 26</td><td></td><td> 58</td>
<td> 27</td><td></td><td> 59</td>
<td> 28</td><td></td><td> 60</td>
<td> 29</td><td></td><td> 61</td>
<td> 30</td><td></td><td> 62</td><td> 7</td>
<td> 31</td><td></td><td colspan="2"></td>
Table A: Assignment of CABAC states to PIP indices ^<sub>T</sub>
This modified coding scheme can be used as a basis for the ΐ3 »ς ra yeace · eanisa i * · · * i '' 'Χδ
--- 'i ..:? ú'4X
C scalable complexity video encoding approach. In performing the probability mode adaptation, the adaptive context binary arithmetic selector or decoder 402, respectively, will select the PIPE decoder 322, i.e. derives the PIPE index to be used, and the probability index in Rtab, respectively, based in the probability state index -example here it goes from 0 to 62 — associated with the symbol currently to be decoded — such as through a context — using the mapping shown in Table A, and will update this probability state index depending on the currently decoded symbol using, for example, table walk transition specific values pointing to the next probability state index to be visited in case of an MPS and LPS, respectively. In LC mode, the latest update can be left out. Even the allocation can be left out in case of globally fixed probability models.
However, an arbitrary entropy encoding configuration can be used and the techniques in this document can also be used for minor adaptations.
The previous description in Figure 11 rather refers generally to syntax elements and syntax element types. Next, a configurable complexity encoding of transform coefficient levels is described.
For example, rebuilder 404 can be configured to rebuild transform block 200 of transform coefficient levels 202 based on a portion of the syntax element sequence independent of the high efficiency mode iKsrrru-íc rase »» a
DE u. - ΰ Vjw L = p4J
INDUSTRIAL or low complexity mode being activated, the 327 sequence portion of the syntax elements comprising, in an uninterleaved manner, significant assignment syntax elements defining a significant assignment indicating non-zero transform coefficient level positions inside transformation block 200, and then (followed by) level syntax elements defining non-zero transform coefficient levels. In particular, the following elements may be involved: end position syntax elements (lastsignificant_pos x, lastsignificant_pos_y) indicating a position of a last non-zero transform coefficient level within the transform block;
first syntax elements (coeffsignificant_flag) together defining a significant assignment and indicating, for each position along the one-dimensional path (274) leading from a DC position to the position of the last non-zero transform coefficient level within the block transformation (200), as to whether the level of transformation coefficient at the respective position is other than zero or not;
second syntax elements (coeff_abs_greaterí) indicating, for each position of the one-dimensional path (274) where, according to the first binary syntax elements, a level of transformation coefficient other than zero is positioned, as to whether the level of transformation coefficient at the respective position is greater than one; and third syntax elements (coeffabs_greater2, coeff_abs_minus3) revealing, for each position of the one-dimensional path where, according to the first binary syntax elements, a transformation coefficient level greater than one is positioned, a quantity by which the respective transformation coefficient level at the respective position exceeds one.
<img file="MX336735B_D0071.tif" />
<img file="MX336735B_D0072.tif" />
í.'l. 1.Λ> Avip! Yes)
INJUSTR
The order between the end position syntax elements, the first, the third syntax element can be the same for the high efficiency mode and the low complexity mode, and selector 402 can be configured to make the selection between entropy decoders 322 for symbols from which the de-symbolizer 314 fetches the end position syntax elements, first syntax element, second syntax element and / or third syntax element, depending differently on low complexity mode or high efficiency mode being activated.
In particular, selector 402 can be configured, for symbols of a predetermined symbol type among a sub-sequence of symbols from which the de-symbol 314 obtains the first syntax element and second syntax element, to select for each symbol of the default symbol type one of a number of contexts depending on symbols previously retrieved from the default symbol type among the symbol sub-sequence and make the selection depending on a probability model associated with the selected context in case to activate the high efficiency mode, and performing the selection in a constant way by sections so that the selection is constant in consecutive continuous sub-parts of the sub-sequence in case the low complexity mode is activated. As described above, the sub-parts can be measured in the number of positions in which the respective sub-parts extend when measured along the one-dimensional path 274, or in the number of syntax elements of the respective type already encoded with the current context. That is, the binary syntax elements coeff significantJlag_, coeffubs_greaterl and coeffabs_greater2, for example, are adaptively encoded context by selecting decoder 322 based on the • R * '
Λ t>
-, j and y probability model of the selected context in HE mode. The probability adaptation is also used. In LC mode, there are also different c'ntéxtos'what'sÓn used for each of the binary syntax elements coeffsignificantJlag, coeffabsjgreaterí and coeffabsjgreater2. However, for each of these syntax elements, the context remains static for the first portion along path 274 by simply changing the context in a transition to the next, the portion immediately following along path 274. For example, each portion can be defined as 4, 8, 16 block positions 200 long, regardless of whether or not the respective syntax element is present for the respective position. For example, coeff absjgreaterl and coeff abs_greater2 are simply present for significant positions, that is, positions where - or for which - significant coeff Jlag is 1. Alternatively, each portion can be defined to be 4, 8, 16 elements of long syntax, independent of whether for the respective resulting portion it extends over a greater number of block positions. For example, coeff absjgreaterl and coeff absjgreater2 are simply present for significant positions, and thus, portions of four syntax elements can extend over more than 4 block positions due to positions between them along path 274 for which no syntax element like no coeff absjgreaterl and coeff absjgreater2 is transmitted because the respective level at this position is zero.
Selector 402 can be configured for symbols of the default symbol type among the symbol sub-sequence from which the de-symbolizer gets the first syntax element and second syntax element, select for i iy
<img file="MX336735B_D0073.tif" />
INS'fHUIC MEXICANO tai *<sup>08 </sup>DE LA '' IN D ϋ o T ¿\ 1 AL it -7. each symbol of the default symbol type one of a number of contexts depending on a number of symbols previously retrieved from the default symbol type within the symbol sub-sequence, which has a default symbol value and belongs to the same subpart , or a number of previously retrieved symbols of the predetermined symbol type within the symbol sequence, which belongs to the same subpart. The first alternative has been true for coeffabs_greaterl and the secondary alternative has been true for coeffabs_greater2 according to the previous specific embodiments.
In addition, the third syntax elements reveal, for each position of the one-dimensional path where, according to the first binary syntax elements, a transformation coefficient level greater than one is positioned, an amount by which the respective coefficient level transformation at the respective position exceeds one, may comprise integer value syntax elements, i.e. coeff_abs_minus3, and the de-symbolizer 314 can be configured to use an assignment function controllable by a control parameter to assign a domain of symbol sequence words to a co-domain of integer value syntax elements, and to set the parameter of control by integer value syntax element depending on integer value syntax elements from previous third syntax elements if high efficiency mode is activated, and performing the adjustment in a constant way in sections so that the adjustment is constant in consecutive continuous sub-parts in case of activating the low complexity mode, where selector 402 can be configured to select a predetermined one of the entropy decoders ( 322) for symbols in assigned symbol sequence words in value syntax elements
<img file="MX336735B_D0074.tif" />
<img file="MX336735B_D0075.tif" />
INSTITUÍ O K2XICAWO ÜE THE PROPERTY
INDUSTRIAL integers, which is associated with an equal probability distribution, in both the high-efficiency mode and the low-complexity mode. That is, even the de-symbolizer can operate depending on the selected mode. Switch 400 is illustrated by dotted line 407. Instead of a constant adjustment in sections of the control parameter, the de-symbolizer 314 can keep the control parameter constant during the current part, for example, or globally constant in time.
The following describes a scalable complexity context model.
Evaluating the same top and left neighbor syntax element for derivation of the context model index is a common approach and is frequently used in the HE case, eg motion vector difference syntax element. However, this evaluation requires more immediate memory and dismisses direct encoding of the syntax element. Also to achieve high encoding performance, more available neighbors can be evaluated.
In a preferred embodiment, all the steps of context modeling evaluating the syntax elements of neighboring square or rectangular blocks or prediction units are fixed to a context model. This is the same as disabling adaptability at the context model selection stage. For that preferred embodiment, the selection of the context model depending on the bin index of the bin string after binarization is not modified compared to the current design for CABAC. In another preferred embodiment, in addition to the fixed context model for syntax elements it uses neighbor evaluation, the context model for the different bin index is also set. It should be noted that the description does not include the binarization and selection of the context model for the difference of the motion vector and the. · ~ * Ί_ coefficient
-y fl »i j '* r
CT The syntax elements related to the encoding of the transformation levels.
In a preferred embodiment, only left neighbor evaluation is allowed. This leads to a reduced buffer in the processing chain because the last block or line of encoding unit should no longer be stored. In a preferred embodiment, only neighbors that are in the same encoding unit are evaluated.
In a preferred embodiment, all available neighbors are evaluated. For example, in addition to the top and left neighbor, the top left, top right and bottom left neighbor are evaluated in case of availability.
That is, the selector 402 in Figure 11 can be configured to use, for a predetermined symbol in relation to a predetermined block of the media data, symbols previously retrieved from the symbol sequence in relation to a larger number of different neighboring blocks of the media data in case of activating the high efficiency mode in order to select one of a number of contexts and to make the selection among the decoders of entropy 322 depending on a probability model associated with the selected contexts. That is, neighboring blocks may lie in the time and / or spatial domain. Neighborhood blocks are spatially visible, for example, in Figures 1 to 3. Then, selector 402 may be responsive to mode selection by switch mode 400 to perform contact matching based on previously retrieved symbols or elements of syntaxes related to a higher number of neighborhood blocks in case of HE mode compared to LC mode thus reducing storage overhead as already described.
<img file="MX336735B_D0076.tif" />
<img file="MX336735B_D0077.tif" />
f \ 7N or; <sub>F</sub> j -
Next, a coding of reduced complexity / movement vector differences according to one embodiment is described.
In the H.264 / AVC video code standard, a motion vector associated with a macro block is transmitted by the difference signaling (motion vector difference - mvd) between the motion vector of the current macro block and the median motion vector predictor. When CABAC is used as an entropy encoder, the mvd is encoded as follows. The integer value mvd is divided into an absolute part and the signal part. The absolute part is binarized using a combination of truncated unary and 3rd order Exp-Golomb, referred to as the prefix and suffix of the resulting bin string. Bins related to truncated nail binarization are encoded using context models, while bins related to Exp-Golomb binarization are encoded in a bypass mode, that is, with a probability of 0.5 with CABAC. The nail binarization works as follows. Let the absolute integer value of mvd be n, then the resulting bin string consists of n times "1" and a trailing "0". As an example, let it be n = 4, then the bin string is "11110". In case of truncated unary, there is a limit and if the value exceeds this limit, the bin string consists of η + 1 times "1". In the case of mvd, the limit is equal to 9. This means if an absolute mvd is equal to or greater than 9 it is encoded, resulting in 9 times "1", the bin string consists of a prefix and a suffix with the Exp-Golomb binarization. Context modeling for the truncated nail part is done as follows. For the first bin in the bin string, the absolute values of mvd from the upper and left neighbor macro blocks are taken if available (if not available, the value is referred to as 0). If the sum for the specific component (horizontal or vertical direction) is greater than 2, the
McXlCANO INSTITUTE
OF THE PROPERTY
INDUSTRIAL
<img file="MX336735B_D0078.tif" />
second context model is selected, if the absolute sum is greater than 32, the third context model is selectedg, otherwise (the absolute sum is less than 3) the first context model is selected. Also, context models are different for each component. For the second bin of the bin chain, the fourth context model is used and the fifth context model is used for the remaining bins of the nail part. When the absolute mvd is equal to or greater than 9, for example, all the bins in the truncated nail part are equal to “1”, the difference between the absolute mvd value and 9 is encoded in a binary derivation mode Exp- Golomb of 3rd. order. In the last stage, the mvd signal is encoded in a bypass mode.
The latest encoding technique for mvd using CABAC as an entropy encoder is specified in the current Test Model (HM) of the High Efficiency Video Coding (HEVC) project. In HEVC, the size of the blocks are variable and the shape specified by a motion vector is referred to as the prediction unit (PU). The PU size in the upper and left neighborhood may have other shapes and sizes than the current PU. Therefore, whenever relevant, the definition of upper and left neighborhood is now referred to as upper and left neighborhood of the upper-left corner of the current PU. For the encoding itself, only the derivation process for the first bin can be changed according to one embodiment. Instead of evaluating the absolute sum of the MV from the neighborhood, each neighborhood can be evaluated separately. If the absolute MV of a neighborhood is available and greater than 16, the index of the context model can be increased resulting in the same number of context models for the first bin, while the encoding of the remaining absolute MV level and the signal is exactly the same as in H.264 / AVC.
<img file="MX336735B_D0079.tif" />
INSTITUTE /-. OF THE .
INDÜS j ·.
-i
í.UiL
<img file="MX336735B_D0080.tif" />
In the mvd decoding technique described above, up to 9 bins must be encoded with a context model, while the remaining value of an mvd can be encoded in a low-complexity bypass mode along with the signal information. This embodiment describes a technique to reduce the number of bins encoded with context models that result in an increase in the number of bypass and reduce the number of context models required for mvd encoding. For this, the cutoff value decreases from 9 to 1 or 2. This means that only the first bin specifying whether the absolute mvd is greater than zero is encoded using the context model or the first and second bin specifying whether the absolute mvd is greater than zero and one is encoded using the context model, while the Remaining value is encoded in bypass mode and / or using a VLC code. All bins resulting from binarization using the VLC code — not using the unary or truncated unary code — are encoded using a low-complexity bypass mode. In the case of PIPE, direct insertion into and out of the bitstream is possible. Also, a different definition of the upper and left neighborhood to derive a better selection of the context model for the first bin can be used, if ever.
In a preferred embodiment, Exp-Golomb codes are used to binarize the remaining part of the MVD absolute components. For that, the ExpGolomb code order is variable. The order of the Exp-Golomb code is derived as follows. After the context model for the first bin, and therefore the index of that context model, is derived and encoded, the index is used as the order for the binarization part of Exp-Golomb. In this preferred embodiment, the context model for the
IMPÍAS ΐί, δτιτ '. - t -<sup>4</sup> .
d; the<sup>r</sup> < - -<sup>J</sup> ·, ·% <- „<-y.
First bin ranges from 1-3 resulting in index 0-2, which are used as the order of the Exp-Golomb code. This preferred embodiment can be used for the HE case.
In an alternative to the technique described above to twice use five contexts for coding the absolute MVD, in order to code the 9 unary binary binary codes, 14 context models (7 for each component) can also be used. For example, while the first and second bins of the nail part can be encoded with four different contexts as described above, a fifth context can be used for the third bin and a sixth context can be used with respect to the fourth bin, while the Fifth to ninth bins are encoded using a seventh context. Thus, in this case even 14 contexts would be necessary, and simply the remaining value can be encoded in a low complexity derivation mode. One technique to reduce the number of bins encoded with context models resulting in an increasing number of bypass and reduce the number of context models required for MVD encoding, is to decrease the cutoff value, for example from 9 to 1. or 2. This means only that the first bin specifying if the absolute MVD is greater than zero would be encoded using a context model or the first and second bin specifying whether the absolute MVD is greater than zero and one would be encoded using a respective context model, while the remaining value is encoded with a VLC code. All bins resulting from binarization using the VLC code are encoded using a low complexity bypass mode. In the case of PIPE, direct insertion into and out of the bitstream is possible. Furthermore, the presented embodiment uses another definition of the upper and left neighborhood to derive a better selection of the context model for the first bin. In addition to this, context modeling is modified in a way that the number of
<img file="MX336735B_D0081.tif" />
Context models required for the first or first and second bin decreases giving m III II H IM I lllf n ~ ir Itr * - leading to additional memory reduction. Also, evaluation of neighborhoods like the previous neighborhood can be disabled resulting in the saving of the buffer / memory line required to store the neighborhood's mvd values. Finally, the order of component encoding can be divided in one way allowing encoding of prefix bins for both components (ie, context model encoded bins) followed by bypass encoding bins.
In a preferred embodiment, the Exp-Golomb codes are used to binarize the remaining part of the absolute mvd components. For that, the order of the Expío Golomb code is variable. The order of the Exp-Golomb code can be derived as follows. After the context model for the first bin, and therefore the index of this context model is derived, the index is used as the order for the ExpGolomb binarization. In this preferred embodiment, the context model for the first bin varies from 1 -3 resulting in index 0-2, which is used as the order of the Exp-Golomb code.
This preferred embodiment can be used for the HE case and the number of context models is reduced to 6. In order to reduce the number of context models again and therefore to save memory, the horizontal and vertical components can share the same context models in a preferred embodiment. In that case, only 3 context models are required. Furthermore, only the left neighborhood can be considered for evaluation in a preferred embodiment of the invention. In this preferred embodiment, the threshold cannot be modified (eg, only the threshold of 16 resulting in the Exp-Golomb parameter of 0 or 1 or the single threshold of 32 resulting in the Exp-Golomb parameter of 0 or 2) . This preferred embodiment saves the line buffer
<img file="MX336735B_D0082.tif" />
required to store the mvd. In another preferred embodiment, the threshold is modified and is equal to 2 and 16. For that preferred embodiment, in total 3 context models are required for mvd encoding and the possible Exp-Golomb parameter ranges from 0 - 2. In a preferred embodiment, the threshold is equal to 16 and 32. Again, the described embodiment is suitable for the HE case.
In a further preferred embodiment of the invention, the cutoff value decreases from 9 to 2. In this preferred embodiment, the first bin and the second bin can be encoded using context models. The selection of the context model for the first good can be done as in the state of the art or modified in a manner described in the previous preferred embodiment. For the second bin, a separate context model is selected as in the state of the art. In a further preferred embodiment, the context model for the second bin is selected by evaluating the mvd of the left neighborhood. For that case, the context model index is the same as in the first bin, while the available context models are different from those for the first bin. In total, 6 context models are required (note that the components share the context models). Again, the Exp-Golomb parameter may depend on the index of the selected context model of the first bin. In another preferred embodiment of the invention, the Exp-Golomb parameter depends on the index of the context model of the second bin. The described embodiments of the invention can be used for the HE case.
In a further preferred embodiment of the invention, the context models for both bins are fixed and not derived by evaluating either the left or anterior neighborhood.
For this preferred embodiment, the total number of context models equals 2. In one
<img file="MX336735B_D0083.tif" />
Preferred embodiment of the invention, the first bin and the second bin share the same context model. As a result, only one context model is required for mvd encoding. In both preferred embodiments of the invention, the Exp-Golomb parameter can be set and equal to 1. The described preferred embodiment of the invention is suitable for both HE and LC configurations.
In another preferred embodiment, the order of the Exp-Golomb part is derived independently of the context model index of the first bin. In this case, the absolute sum of the H.264 / AVC ordinary context model selection is used to derive the order for the Exp-Golomb part. This preferred embodiment can be used for the HE case.
In a further preferred embodiment, the order of the Exp-Golomb codes is set and set to 0. In another preferred embodiment, the order of the Exp-Golomb codes is set and set to 1. In a preferred embodiment, the ExpGolomb code order is set to 2. In a further embodiment, the Exp-Golomb code order is set to 3. In a further embodiment, the Exp-Golomb code order is set according to shape and size of current PU. The presented preferred embodiments can be used for the LC case. It should be noted that the fixed order of the ExpGolomb part is considered with a reduced number of bins encoded with context models.
In a preferred embodiment, the neighborhoods are defined as follows. For the previous PU, all PUs covering the current PU are taken into account and the PU with the highest MV is used. This is also done for the left neighborhood. All PUs covering the current PU are evaluated and the PU with the highest MV is used. In another embodiment
100
<img file="MX336735B_D0084.tif" />
Preferred, the value of the average absolute motion vector of all PUs that covers the upper and left limit of the current PU is used to derive the first bin.
For the preferred embodiments presented above, it is possible to change the encoding order as follows. The mvd has to be specified for the horizontal and vertical direction one after the other (and vice versa). Thus, two chains of bins must be encoded. In order to minimize the mode change number for the entropy encoding engine (i.e. the switch between the bypass and the regular mode), it is possible to encode the encoded bins with context models for both components in the first stage followed by bins coded in bypass mode in the second stage. It should be noted that this is just a rearrangement.
Note that the bins resulting from the fingernail or truncated fingering binarization can also be represented by a fixed-length equivalent binarization of a flag per bin index specifying whether the value is greater than the current bin index. As an example, the cut-off value for truncated fingernail of mvd is set to 2 resulting in codewords 0, 10, 11 for values 0, 1, 2. In the corresponding fixed-length binarization with a flag per bin index, a flag for bin index 0 (that is, the first bin) specifies whether the absolute mvd value is greater than 0 or not and a flag for the second bin with bin index 1 specifies whether the absolute mvd value is greater than 1 or not. When the second flag is only encoded when the first flag equals 1, these result in the same code words 0,10,11.
Then, the scalable complexity representation of the internal state of probability models according to one embodiment is described.
101 ϊ Μ ΡI .Í..2..V 'CS-SSu'J industrial
In the HE-PIPE arrangement, the internal state of a probability model is updated after encoding a bin with it. The updated state is derived by a state transition lookup table using the old state and the encoded bin value. In the case of CABAC, a probability model can take 63 different states where each state corresponds to a model probability in the interval (0.0, 0.5). Each of these states is used to perform two model probabilities. In addition to the probability assigned to the state, 1.0 minus the probability is also used and a flag called valMps stores the information if the probability is used or 1.0 minus the probability.
This leads to a total of 126 states. To use such a probability model with the PIPE encoding concept, each of the 126 states needs to be assigned to one of the available PIPE encoders. In current implementations of PIPE encoders, this is done using a query table. An example of such an assignment is described in Table A.
Next, an embodiment is described how the internal state of a probability model can be represented to avoid using a lookup table to convert the internal state to a PIPE index. Only a few simple bit masking operations are needed to extract the PIPE index of the variable internal state of the probability model. This new scalable complexity representation of the inner state of a probability model is designed in a two-tier way. For applications where low complexity operation is mandatory, only the first level is used. Describe only the PIPE index and the valMps flag that is used to encode or decode the associated bins. In the case of the PIPE entropy coding scheme
102
<img file="MX336735B_D0085.tif" />
<img file="MX336735B_D0086.tif" />
INSTITUTE Μ \ □
D £ LAF? Ur lNDUSlTdAL described, the first level can be used to differentiate between 8 different probability models. Thus the first level will need 3 bits for the pipeldx and an additional bit for the valMps flag. With the second level each the approximate probability ranges of the first level are refined into several small intervals that support the presentation of probabilities at higher resolutions. This more detailed presentation allows the more accurate operation of probability estimators. In general, it is suitable for coding applications aiming at high RD performance. As an example, this complexity scale representation of the internal state of the probability model with the use of PIPE is illustrated as follows:
<td>First level</td><td>Second level</td>
<td>b<sub>7</sub> | b<sub>6</sub>| b<sub>5</sub>| b<sub>4</sub></td><td>b<sub>3</sub>one bz | bi | b<sub>0</sub></td>
<td>MPS PIPE Idx (0-7)</td><td>Idx Refinement (0-15)</td>
The first and second levels are stored in a single 8-bit memory. 4 bits are required to store the first level - an index that defines the PIPE index with the MPS value in the most significant bit - and another 4 bits are used to store the second level. To implement the behavior of the probability estimator
CABAC, each PIPE index has a particular number of allowed refinement indices depending on how many CABAC states were assigned in the PIPE index.
For example, for Table A allocation, the number of CABAC states per PIPE index are described in Table B.
103
ΤΤ Γ <sup>Γ</sup> ! Ν31 T «.ñ \ ι..ζ 'υ DE LA <sup>0</sup> Ζ I
INDUSTRIAL
<img file="MX336735B_D0087.tif" />
<td rowspan="2">PIPE idx</td><td rowspan="2"> 0</td><td rowspan="2"> 1</td><td rowspan="2"> 2</td><td rowspan="2"> 3</td><td rowspan="2"> 4</td><td rowspan="2"> 5</td><td> 6</td><td> 7</td>
<td></td><td></td>
<td>Number of CABAC states</td><td> 3</td><td> 7</td><td> 5</td><td> 7</td><td> 10</td><td> 14</td><td> 16</td><td> 1</td>
Table Β: Number of CABAC states per PIPE index for Table example
TO.
During the process of encoding or decoding a bin, the PIPE index and valMPs can be accessed directly using simple bitmask or bit shift operations. Low complexity coding processes require only the 4 bits of the first level and high efficiency coding processes can additionally use the 4 bits of the second level to update the probability model of the CABAC probability estimator. To perform this update, you can design a state transition lookup table that performs the same state transitions as the original table, but using scalable complexity two-level state representation. The original state transition table consists of twice 63 elements. For each input state, it contains two output states. Using the scalable complexity representation, the size of the state transition table does not exceed 128 elements twice, which is an acceptable increase in table size. This increase depends on how many bits are used to represent the refinement index and to exactly emulate the behavior of the CABAC probability estimator, four bits are needed. However, a different probability estimator can be used, which can operate in a small set of CABAC states so that for each PIPE index no more than 8 states are allowed. Therefore the memory consumption can be adapted to the given level of complexity of the encoding process by adapting the number
104
<img file="MX336735B_D0088.tif" />
of bits used to represent the refinement index. Compared to the internal state of the probability model with CABAC - where there are 64 probability state indices - the use of lookup tables to assign model probabilities to a specific PIPE code is avoided and no further conversion is required.
The following describes the upgrade of the scalable complexity context model.
To update a context model, its probability status index can be updated based on one or more previously coded bins. In HEPIPE configuration, this update is done after encoding or decoding each bin.
In contrast, in the LC-PIPE configuration, this update can never be done.
However, it is possible to do an update of context models in a way of scalable complexity. That is, the decision whether or not to update a context model can be based on several aspects, eg an encoder configuration may not make updates to particular context models just like coeffsignificantJlag syntax element context models. , and always make updates for all other context models.
In other words, selector 402 can be configured, for symbols of each of a number of predetermined symbol types, to make the selection among entropy decoders 322 depending on the respective probability model associated with the respective predetermined symbol so that the number of default symbol types is lower in low complexity mode compared to high efficiency mode.
105
<img file="MX336735B_D0089.tif" />
• ί υιυ μ £ λκ, λλ; OF INDUSTRIAL PROPERTY
<img file="MX336735B_D0090.tif" />
In addition, the criteria for controlling whether or not to update a context model can be eg the size of a bitstream packet, the number of bins decoded so far, or the update is done only after encoding a particular variable or fixed number of bins for a context model.
With this scheme to decide whether to update the context models or not, the update of the context model of scalable complexity can be implemented. Allows you to increase or decrease the portion of bins in a bit stream for which context model updates are made. The higher the number of context model updates, the better the coding efficiency and the greater the computational complexity. Thus, the updating of the scalable complexity context model can be achieved with the described scheme.
In a preferred embodiment, the context model update is done for bins of all syntax elements except syntax elements coeffsignificantJlag, coeffabs_greaterl, and coeffabs_greater2.
In a preferred embodiment, the updating of the context model is done for bins of the syntax elements coeff significantJlag, coeff_abs_greaterl, and coeff_abs_greater2 only.
In a further preferred embodiment, the context model update is done for all context models when encoding and decoding of a part is started. After a particular predefined number of transform blocks is processed, the context model update is disabled for all context models until the end of the part is reached.
106
<img file="MX336735B_D0091.tif" />
For example, selector 402 may be configured, for symbols of a predetermined symbol type, to select between entropy decoders 322 depending on a probability model associated with the predetermined symbol type together with or without updating the model of associated probability, such that a length of a symbol sequence learning phase over which selection for symbols of the default symbol type is made in conjunction with updating, is shorter in low complexity mode compared to high mode efficiency.
A further preferred embodiment is identical to the previously described preferred embodiment, but uses the scalable complexity representation of the internal state of context models in one way, so that a table stores the "first part" (valMps and pipeldx) of all context models and a second table stores the “second part” (refineldx) of all context models. At that point, where the context model update is disabled for all context models (as described in the previous preferred embodiment), the table that stores the "second part" is no longer needed and can be dropped.
Next, the update of the context model for a sequence of bins according to one embodiment is described.
In the LC-PIPE configuration, syntax element bins of type coeff_significantJlag, coeffabs_greaterl, and coeffabs_greater2 are grouped into subsets. For each subset, a unique context model is used to encode these bins. In this case, a context model update can be done after encoding a fixed number of bins in this sequence. This is denoted as multi-bin update in the following. However, this update may differ from
107
<img file="MX336735B_D0092.tif" />
updating using only the last encoded bin and the internal state of the context model. For example, for each bin that has been encoded, a context model update step is performed.
Examples are given below for encoding an exemplary subset 5 consisting of 8 bins. The letter "b" denotes the decoding of a bin and the letter "u" denotes the updating of the context model. In the case of LC-PIPE, only the decoding of the bin is done without updating the context model:
bbbbbbbb
In the case of HE-PIPE, after decoding each bin, the context model update is performed:
bubububububububu
In order to decrease the complexity a bit, the update of the context model can be done after a sequence of bins (in this example, after 4 bins, the updates of these 4 bins are made):
bbbbuuuubbbbuuuu
That is, selector 402 can be configured, for symbols of a predetermined symbol type, to select between entropy decoders 322 depending on a probability model associated with the predetermined symbol type together with or without updating the probability model associated so that a frequency at which selection for symbols of the default symbol type is made in conjunction with updating, it is lower in the low complexity mode compared to the high efficiency mode.
108
<img file="MX336735B_D0093.tif" />
In this case, after decoding 4 bins, 4 update stages follow based on the 4 newly decoded bins. It should be noted that these four update stages can be carried out in a single stage using a special look-up table. This lookup table stores for each possible combination of 4 bins and each possible internal state of the context model the resulting new state after the four conventional stages of updating.
In a way, multi-bin update is used for coeffsignificantJlag syntax element. For bins of all other syntax elements, the context model update is not used. The number of bins that are encoded before doing a multi-bin update stage is set to n. When the number of bins in the set is not divisible by η, 1 to nl bins remain at the end of the subset after the last update of the multi-bin. For each of these bins, a conventional single bin update is done after the coding of all these bins. The number n can be any positive number greater than 1. Another mode can be identical to the previous mode, except that multi-bin updating is done for arbitrary combinations of coeffsignificantjlag, coeffabs_greaterl, and coeffabs_greater2 (instead of coefffactoryJlag only). Thus, this mode can be more complex than the other. All other syntax elements (where multi-bin updating is not used) can be divided into two disjoint subsets where for one of the subsets, single-bin update is used and for the other subset no update is used. context model. Possible disjoint subsets are valid (including the empty subset).
109
X PJ
MEXICAN INSTITUTE -.........-OF PROPERTY
INDUSTRIAL '
In an alternative embodiment, the multi-bin update can be based on the last m bins only that they are encoded immediately before the multi-bin update stage. m can be any natural number less than n. Thus, decoding can be done as:
bbbbuubbbb uubbbbuubbbb ....
with n = 4 and m = 2.
That is, selector 402 can be configured, for symbols of a predetermined symbol type, to perform selection among entropy decoders 322 depending on the probability model associated with the predetermined symbol type, along with updating the associated probability model each symbol of the default type based on the most recent m symbols of the default symbol type so that the n / m ratio is higher in the low complexity mode compared to the high efficiency mode .
In a further preferred embodiment, the coeffsignificantjlag syntax element, the context modeling scheme using a local template as described above for the HE-PIPE configuration can be used to assign context models to bins of the syntax element. However, for those bins, no context model update is used.
Furthermore, selector 402 can be configured, for symbols of a predetermined symbol type, to select one of a number of contexts depending on the number of symbols previously retrieved from the symbol sequence and to make the selection among the entropy decoders 322 depending on a probability model associated with the selected context, so that the number of contexts,
110
<img file="MX336735B_D0094.tif" />
and / or the number of symbols previously recovered, is less in the low complexity mode compared to the high efficiency mode.
Initialization of the probability model using bit initialization values
This section describes the initialization process of scalable complexity interstate of probability models using a so-called 8-bit initialization value instead of two 8-bit values as is the case in the state-of-the-art video encoding standard H.265 / AVC. It consists of two parts that are comparable to the initialization value pairs used for probability models in CABAC of H.264 / AVC. The two parts represent the two parameters of a linear equation to compute the initial state of a probability model, representing a particular probability (for example, in the form of a PIPE index) from a QP:
• The first part describes the slope and exploits the dependence of the internal state on the quantization parameter (QP) that is used during encoding or decoding.
• The second part defines a PIPE index on a given QP as well as valMPs.
Two different modes are available to initialize a probability model using the given initialization value. The first mode is denoted as QPindependent initialization. Just use the PIPE and valMps index defined in the second part of the initialization value for all QP's. This is identical to the case where the slope equals 0. The second mode is denoted as QP-dependent initialization and additionally uses the lll inst * ';<sup>;</sup>) Tc. * ;; / r; v · ο iNDUrZiMt
ΌΙ
X ..1 νχ Λ X
<img file="MX336735B_D0095.tif" />
pending the first part of the initialization value to alter the PIPE index and to define the refinement index. The two parts of an 8-bit initialization value are illustrated as follows:
<td></td><td>First part</td><td>Second part</td>
<td> 5</td><td>^ 7 | b<sub>6</sub>one b<sub>5</sub>one b4</td><td>b<sub>3</sub>one b<sub>2</sub>one bj | b<sub>0</sub></td>
<td></td><td>Slope index</td><td>PIPE Probability Index</td>
It consists of two 4-bit parts. The first part contains an index that points to 1 10 of 16 different predefined slopes that are stored in an array. The predefined slopes consist of 7 negative slopes (slope index 0-6), a slope that is equal to zero (slope index 7), and 8 positive slopes (slope index 8-15). The slopes are described in Table C.
<td>Index of Pending</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 7</td>
<td>Value of Pending</td><td> -239</td><td> -143</td><td> -85</td><td> -51</td><td> -31</td><td> -19</td><td> -11</td><td> 0</td>
<td>Index of Pending</td><td> 8</td><td> 9</td><td> 10</td><td> 11</td><td> 12</td><td> 13</td><td> 14</td><td> 15</td>
<td>Value of Pending</td><td> 11</td><td> 19</td><td> 31</td><td> 51</td><td> 85</td><td> 143</td><td> 239</td><td> 399</td>
Table C:
112
ITEM1 ζ _L AA VA '
UEXtOAMO INSTITUTE »· * ► '' £
OF THE «OTEDA?
All values are adjusted by a factor of 256 to avoid floating point operations. The second part is the PIPE index that performs the ascending probability of valMps = 1 between the probability interval p = 0 and p = 1. In other words, the PIPE n encoder must operate on a higher probability model than the PIPE n encoder -one. For each probability model, a PIPE probability index is available and identifies the PIPE encoder whose probability interval contains the probability of pvaiMps = i leg QP <sup>=</sup> 26.
<td>Index Probability PIPE</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 7</td>
<td>Encoder PIPE</td><td>UR5</td><td>UR4</td><td>UR3</td><td>UR2</td><td>TB</td><td>BP2</td><td>BP3</td><td>EP</td>
<td>MPS</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td>
<td>Index Probability PIPE</td><td> 8</td><td> 9</td><td> 10</td><td> 11</td><td> 12</td><td> 13</td><td> 14</td><td> 15</td>
<td>Encoder PIPE</td><td>EP</td><td>BP3</td><td>BP2</td><td>TB</td><td>UR2</td><td>UR3</td><td>UR4</td><td>UR5</td>
<td>MPS</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td>
Table D: Assignment of the second part of the initialization value to PIPE and valMps encoders: UR = unary code to RICE, TB = three-bin code, BP = bin-pipe code, EP = equal probability (not coded).
113 κ / r ρ 7 nrdTO MKÍC -. '.' OX, '' '- ·?' .; Λ<sup>OF</sup> ASAIiA? -'A & Ú?
INDVó'lXíAL <sup>ga J</sup>
QP and the 8-bit initialization value are required to calculate the initialization of the internal state of probability models by calculating a simple linear equation in the form of y = m * (QP -QPref) + 256 * b. Note that m defines the slope that is taken from Table C using the slope index (the first part of the 8-bit initialization value) and b denotes the PIPE encoder at QPref = 26 (the second part of the 8-bit initialization value : "PIPE Probability Index"). Then valMps is 1 and pipeldx equals (y - 2048) »8 if y is greater than 2047. Otherwise, valMps is 0 and pipeldx equals (2047 - y)» 8. The refinement index equals (((y-2048) & 255) * numStates) »8 if valMps equals 1. Otherwise, the refinement index equals (((2047-y) & 255) * numStates)» 8. In both cases, numStates equals the number of CABAC states of pipeldx as described in Table B.
The above scheme can not only be used in combination with PIPE encoders, but also in connection with the aforementioned CABAC schemes. In the absence of PIPE, the number of CABAC states, that is, the probability states between which the state transition is made in the probability update (pState_current [bin], per PIPE Idx (that is, the respective bits plus significant of pState_current [bin]) is then just a set of parameters that actually performs linear interpolation in bits of the CABAC state depending on QP. Additionally, this spanned linear interpolation can also be virtually disabled in the case where the numStates parameter uses the same value for all PIPE Idx. For example, setting numStates to 8 for all cases produces a total of 16 * 8 states and the refinement index calculation simplifies to ((y-2048) & 255) »5 for valMps equal to 1 or ((2047-y) & 255) »5 for valMps equal to 0. For this case, assigning the representation
114
<img file="MX336735B_D0096.tif" />
t «MESICM INSTITUTE ->
', -DILA Γί · .Ο? Ί.'. Ι.-TE
..t & EUSTÍLLrtl.
Using valMps, PIPEidx, and idx refinement going back to the representation used for the original H.264 / AVC pnr pi is very simple. The CABAC status is given as (PIPE Idx «3) + refinement Idx. This aspect is described later with respect to Figure
16.
Unless the slope of the 8-bit initialization value is equal to zero or unless QP is equal to 26, it is necessary to calculate the internal state using the linear equation with QP of the encoding or decoding process. In the event that the slope equals zero or the QP of the current encoding process equals 26, the second part of the 8-bit initialization value can be used directly to initialize the internal state of a probability model. Otherwise the decimal part of the resulting internal state can be further exploited to determine a refinement index in high efficiency encoding applications by linear interpolation between the limits of the specific PIPE encoder. In this preferred embodiment, linear interpolation is performed simply by multiplying the decimal part with the total number of refinement indices available to the current PIPE encoder and assigning the result to the nearest integer refinement index.
The initialization process of the internal state of the probability models can be varied with respect to the number of states of probability indices PIPE. In particular, the double occurrence of probable equal mode using the PIPE El encoder, that is, the use of two different PIPE indices to distinguish between MPS being 1 or 0, can be avoided as follows. Again, the process can be invoked during the start of the analysis of the segmented data, and the input of this process could be a value of
115
<img file="MX336735B_D0097.tif" />
8-bit initialization as described in Table E, which could, for example, be transmitted within the bitstream for each context model to be initialized.
Table E: Configuration of the 8 bits of initValue for a probability model
<td></td><td>First 4 bits</td><td>Last 4 bits</td>
<td>InitValue bits</td><td>b<sub>7</sub> | b<sub>6</sub>one b<sub>5</sub> | b<sub>4</sub></td><td>b<sub>3</sub>one ba | bi | b<sub>0</sub></td>
<td>Variable</td><td>slopeldx</td><td>propldx</td>
The first 4 bits define a slope index and are recovered by masking bits b4 -b7. For each slope index, a slope (m) is specified and is shown in Table F.
Table F: Values of variable m for slopeldx
<td>slopeld X</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 7</td><td> 8</td><td> 9</td><td> 10</td><td> 11</td><td> 12</td><td> 13</td><td> 14</td><td> 15</td>
<td>m</td><td> -</td><td> -</td><td> -85</td><td> -51</td><td> -31</td><td> -19</td><td> -11</td><td> 0</td><td> 11</td><td> 19</td><td> 31</td><td> 51</td><td> 85</td><td> 14</td><td> 23</td><td> 39</td>
<td></td><td> 239</td><td> 143</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td> 3</td><td> 9</td><td> 9</td>
Bits bO - b3, the last 4 bits of the 8 bit initialization value, identify the probldx and describe the probability at a predefined QP, probldx 0 indicates the highest probability for symbols with a value of 0, and respectively, probldx 14 indicates the highest high
116
<img file="MX336735B_D0098.tif" />
probability for symbols with value 1. Table G shows for probldx the corresponding pipeCoder and its valMps.
Table G: Allocation of the last 4 bits part of the initialization value to PIPE and valMps encoders: UR = unary code to RICE, TB = three-bin code, BP = bin-pipe-code, EP = equal probability (not coded)
<td>probldx</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 7</td><td> 8</td><td> 9</td><td> 10</td><td> 11</td><td> 12</td><td> 13</td><td> 14</td>
<td>pipeCoder</td><td>UR5</td><td>UR4</td><td>UR3</td><td>UR2</td><td>TBC</td><td>BP2</td><td>BP3</td><td>EP</td><td>BP3</td><td>BP2</td><td>TBC</td><td>UR2</td><td>UR3</td><td>UR4</td><td>UR5</td>
<td>valMps</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td><td> 1</td>
With both values, the calculation of the internal state can be done using a linear equation such as y = m * x + 256 + b, where m denotes the slope, x denotes QP of the current segment, and b is derived from probldx as shown in the following description. . All values in this process are scaled by a factor of 256 to avoid the use of floating point operations. The result of this process represents the internal state of the probability model in the current QP and is stored in 8-bit memory. As shown in G the internal state consists of valMPs, pipeldx and refineldx.
Table H: Configuration of the internal state of a probability model.
<td></td><td colspan="2">First 4 bits</td><td>Last 4 bits</td>
<td>InitValue bits</td><td colspan="2">b<sub>7</sub>| b<sub>6</sub> | b<sub>5</sub> | b<sub>4</sub></td><td>balbzlbjbo</td>
<td>Variable</td><td>valMps</td><td>pipeldx</td><td>refmeldx</td>
117 ί ρ n-iSTIT ·
The assignment of refineldx and pipeldx is similar to the CABAC internal probability state (pStateCtx) and is presented in H.
Table I: Assignment of pipeldx, refineldx and pStateCtx of the models
<td>pipeldx</td><td colspan="3"> 0</td><td colspan="7"> 1</td><td colspan="5"> 2</td><td colspan="2"></td>
<td>refineldx</td><td> 0</td><td> 1</td><td> 2</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td colspan="2" rowspan="2"></td>
<td>pStateCtx</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 7</td><td> 8</td><td> 9</td><td> 10</td><td> 11</td><td> 12</td><td> 13</td><td> 14</td>
<td>pipeldx</td><td colspan="7"> 3</td><td colspan="10"> 4</td>
<td>refineldx</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 7</td><td> 8</td><td> 9</td>
<td>pStateCtx</td><td> 15</td><td> 16</td><td> 17</td><td> 18</td><td> 19</td><td> 20</td><td> 21</td><td> 22</td><td> 23</td><td> 24</td><td> 25</td><td> 26</td><td> 27</td><td> 28</td><td> 29</td><td> 30</td><td> 31</td>
<td>pipeldx</td><td colspan="17"> 5</td>
<td>refineldx</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 7</td><td> 8</td><td> 9</td><td> 10</td><td> 11</td><td> 12</td><td> 13</td><td colspan="3" rowspan="2"></td>
<td>pStateCtx</td><td> 32</td><td> 33</td><td> 34</td><td> 35</td><td> 36</td><td> 37</td><td> 38</td><td> 39</td><td> 40</td><td> 41</td><td> 42</td><td> 43</td><td> 44</td><td> 45</td>
<td>pipeldx</td><td colspan="16"> 6</td><td> 7</td>
<td>refineldx</td><td> 0</td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td><td> 7</td><td> 8</td><td> 9</td><td> 10</td><td> 11</td><td> 12</td><td> 13</td><td> 14</td><td> 15</td><td> 0</td>
<td>pStateCtx</td><td> 46</td><td> 47</td><td> 48</td><td> 49</td><td> 50</td><td> 51</td><td> 52</td><td> 53</td><td> 54</td><td> 55</td><td> 56</td><td> 57</td><td> 58</td><td> 59</td><td> 60</td><td> 61</td><td> 62</td>
In a preferred embodiment probldx is defined in QP26. Based on the 8 bit initialization value the internal state (valMps, pipeldx and refineldx) of a 2 or probability model is processed as described in the following pseudo code:
118
I η = (probldx << 8) - m * 26
JL
INSTíTl
<img file="MX336735B_D0099.tif" />
<img file="MX336735B_D0100.tif" />
fullCtxState = max (0, min (3839, (m * max (0, min (51, SliceQPy))) + η + 12 8) ................... ... „remCtxState = fullCtxState & 255 preCtxState = fullCtxState >> 8 if {preCtxState <8) {pipeldx = 7 - preCtxState valMPS = 0) else {pipeldx = preCtxState - 8 valMPS - 1}
offset = {3, 7, 5, 7, 10, 14, 16, 1} if (pipeldx = = 0) {if (remCtxState <= 127) remCtxState = 127 - remCtxState else remCtxState = remCtxState - 128 refineldx = ((remCtxState «1) * offset)» 8) else {if (valMPS = = 0) remCtxState - 255 - remCtxState refineldx = (remCtxState * offset [pipeldx]) >> 8
As shown in the pseudo code refineldx is calculated by linear interpolation between the pipeldx interval and quantifying the result to the corresponding refineldx. The offset specifies the total number of refineldx for each pipeldx. The interval [7,8] of fullCtxState / 256 is divided into two. The interval [7,7.5] is assigned to pipeldx = 0 and valMps = 0 and the interval [7.5, 8] is assigned to pipeldx = 0 and valMps = 1. Figure 16 depicts the process of deriving the internal state and shows the assignment of fullCtxState / 256 to pStateCtx.
It should be noted that the slope indicates the dependency of probldx and QP. If slopeldx of the 8-bit initialization value equals 7, the resulting internal state of the
119
ME
INSTITUTE probability is the same for all QP segments - therefore »initialization of the internal state is independent of the current QP tfchjegnienta:
That is, selector 402 can initialize the PIPE indices to be used to decode the next portion of the data stream as the full stream or the next segment, using the syntax element indicating the QP size of the quantization step used for the purpose of quantifying the data in this portion, such as the transform coefficient levels contained in it using this syntax element as an index on a table that can be common to both LC and HE modes. The table as table D can comprise PIPE indices for each type of symbol, for a respective reference QPref, or other data for each type of symbol. Depending on the actual QP of the current slice, the selector can calculate a PIPE index value using the corresponding table entry a indexed by the actual QP and own QP, multiplying a with (QPQPref). The only difference in LC-HE mode: The selector calculates the result simply with less precision in case of LC compared to HE mode. The selector can, for example, simply use the integer part of the calculation result. In HE mode, the remainder with greater accuracy, such as the fractional part, is used to select one of the available refinement indices for the respective PIPE index as indicated by the lowest accuracy or integer part. The refinement index is used in the HE mode (potentially more rarely also in the LC mode) in order to perform the probability adaptation using the aforementioned table. By leaving the indices available for the current PIPE index at the highest level, then the highest PIPE index is selected with minimization of the refinement index. By leaving the indices available for the current PIPE index at the lowest bound, then the next lowest PIPE index is selected
120
<img file="MX336735B_D0101.tif" />
maximizing the refinement index to the maximum available for the new PIPE index. The PIPE index together with the refinement index define the probability state, but for selection between partial flows, the selector simply uses the PIPE index. The refinement index simply serves to track probability more closely, or in finer precision.
The above discussion also showed, however, that complexity scalability can be achieved independent of the PIPE encoding concept of Figure 7 10 or CABAC, using a decoder as shown in Figure 12. The Decoder of Figure 12 is for decoding the data stream 601 in which the information data is encoded, and comprises a switch mode 600 configured to activate a low complexity mode or a high efficiency mode depending on the data flow. 601, as well as a de-symbolizer 602 configured to de-symbolize a sequence 603 of symbols obtained - either directly or by entropy decoding, for example— from data stream 601 to get integer value syntax elements 604 using an assignment function controllable by a control parameter, to assign a domain of symbol sequence words to a co-domain of syntax elements of integer value. A reconstructor 605 is configured to reconstruct the information data 606 based on the integer value syntax elements. De-symbolizer 602 is configured to perform de-symbolization so that the control parameter varies according to the data flow at a first rate in case of activating the high-efficiency mode and the control parameter is constant independent of the data flow or changes depending on the data flow, but in a second speed lower than the first speed in case of activating the low complexity mode, as illustrated by the
121
<img file="MX336735B_D0102.tif" />
A. X
INDUSTRIAL _ arrow 607. For example, the control parameter may vary according to previously de-symbolized symbols.
Some of the above embodiments make use of the aspect of Figure 12. The syntax elements coeff_abs_minus3 and MVD within sequence 327 were, for example, binarized in the de-symbolizer 314 depending on the mode selected as indicated in 407, and the reconstructor 605 used these syntax elements for reconstruction. Obviously, both aspects of Figure 11 and 19 are easily combinable, but the aspect of Figure 12 can also be combined with other encoding environments.
See, for example, the motion vector difference coding denoted above. De-symbolizer 602 can be configured such that the assignment function uses a truncated unary code to perform the assignment within a first interval of the integer value syntax element domain under a break value and a combination of a prefix in the form of the truncated unary code for the break value and a suffix in the form of a VLC codeword within a second range of the integer value syntax element domain and over the value cutoff, where the decoder may comprise an entropy decoder 608 configured to derive a number of first bins from the truncated unary code of data stream 601 using entropy decoding with different probability estimates and a number of second codeword bins VLC using a constant equi-probability derivation mode. In HE mode, entropy encoding can be more complex than in LC encoding as illustrated by arrow 609. That is, context adaptability and / or probability adaptation can be applied in HE mode and removed in mode
122
-w ί
<img file="MX336735B_D0103.tif" />
LC, or complexity can be scaled in other terms, as stated above with respect to various embodiments.
An encoder matching the decoder of Figure 11, for encoding media data in a data stream is shown in Figure 13. It may comprise an insertion device 500 configured to signal within the data stream 501 an activation of the low complexity or high efficiency mode, a constructor 504 configured to pre-encode the information data 505 into a sequence 506 of syntax elements , a symbolizer 507 configured to symbolize the syntax element sequence 506 into a symbol sequence 508, a number of entropy encoders 310 each of which is configured to convert partial symbol sequences into code words in the data stream, and a selector 502 configured to send each symbol in the symbol sequence 508 to one selected from a numberless of 310 entropy encoders, where selector 502 is configured to perform the selection depending on the activation of the low complexity mode and the high efficiency mode as illustrated by arrow 511. Optionally an interleaver 510 may be provided to interleave the code words of the encoders 310.
An encoder matching the decoder of Figure 12, for encoding media data in a data stream is shown in Figure 14 comprising an insertion device 700 configured to signal within the data stream 701 an activation of the low complexity mode or a mode of high efficiency, a constructor 704 configured to pre-encode the media data 705 into a sequence 706 of syntax elements comprising an integer value syntax element, and a 707 symbolizer configured to symbolize the integer value syntax element using a mapping function
123
<img file="MX336735B_D0104.tif" />
controllable by a control parameter, to assign a domain of integer value syntax elements to a co-domain of symbol sequence words, where symbolizer 707 is configured to perform symbolization so that the control parameter varies from According to the data flow in the first speed in case of activating the high efficiency mode and the control parameter is constant independent of the data flow or changes depending on the data flow, but in a second speed less than the first speed in case of activating the low complexity mode as illustrated by arrow 708. The symbolization result is encoded in data stream 701.
Again, it should be mentioned that the embodiment of Figure 14 is easily transferable to the aforementioned embodiment of adaptive context binary arithmetic encoding / decoding: selector 509 and entropy encoders 310 will be condensed into an adaptive context binary arithmetic encoder which would be the output data stream 410 directly and select the context for a bin currently to be derived from the data stream. This is especially true for context adaptability and / or probability adaptability. Both features / adaptations can be disabled, or designed more relaxed, during low complexity mode.
It has been briefly noted that the shift mode capability explained with respect to some of the embodiments may, in accordance with alternative embodiments, be left out. For clarity, reference is made to Figure 16, which summarizes the above description to the extent that simply removing the shift mode capability differentiates the embodiment of Figure 16 from the previous embodiments.
In addition, the following description will reveal the benefits of initializing the
124
J *. <sup>11</sup>
IN <probability estimates of contexts using less accurate parameters ^ slope and offset compared to, for example, H.264.
In particular, Figure 16 shows a decoder for decoding video 405 from data stream 401 to which the horizontal and vertical motion vector difference components are encoded using binarizations of the horizontal and vertical components, the binarizations matching a code. truncated unary of the horizontal and vertical components, within a first interval of the domain of the horizontal and vertical components under a cut-off value, and a combination of a prefix in the form of a truncated unary code. The cutoff value and a suffix in the form of an exponential Golomb code of the horizontal and vertical components, respectively, within a second interval of the domain of the horizontal and vertical components inclusive and above the cutoff value, where the cutoff value is 2 the exponential Golomb code has an order of 1. The decoder comprises an entropy decoder 409 configured for the horizontal and vertical components of motion vector differences, derives the truncated unary code from the data stream using entropy decoding would adapt from context adaptive with exactly one context per bin position of the code unary truncated, which is common for the horizontal and vertical components of motion vector differences, and the exponential Golomb code using a constant equi-probability derivation mode to obtain the binarizations of the motion vector differences. To be more precise, as described above, the entropy decoder 409 can be configured to derive the number of bins 326 from the binarizations of data stream 401 using binary entropy decoding as the aforementioned CABAC scheme, or PIPE decoding.
125 to ζ
INSTITUTE MT \; ~ -NO <* /Th.coverCc LA. £> £?!%> RD binary, i.e. using the construct involving several parallel 322 operational entropy decoders along with a respective selector / allocator de-symbolizer A 314 debinarizes the binarizations of the motion vector difference syntax elements to obtain integer values of the horizontal and vertical components of the motion vector differences, and a 404 reconstructor reconstructs the video based on the integer values of the horizontal and vertical components of the motion vector differences.
In order to explain this in more detail, we briefly refer to Figure
18. 800 representatively displays a motion vector difference, i.e., a vector representing a prediction residual between a predicted motion vector and an actual / reconstructed motion vector. The horizontal and vertical 802x and 802y components are also illustrated. This can be transmitted in units of pixel positions, that is, pixel pitch or sub-pel positions as half the distance between pixels or a quarter of the same or similar. The horizontal and vertical components 802 <sub>X; Y </sub>they are integer values. His domain reaches from zero to infinity. The value of the sign can be handled separately and is no longer considered here. In other words, the description outlined here focuses on the magnitude of the 802x motion vector differences, y. The domain is illustrated in 804. On the right side of domain axis 804, Figure 19 illustrates, associated with the possible 802x component values, and vertically arranged one above the other, the binarizations in which the respective possible value is assigned (binarized). As can be seen, under the cutoff value of 2, the truncated unary code 806 simply occurs, while the binarization has, as a suffix, also the exponential Golomb code of order 808 of possible values equal to or greater than the cutoff value.
126
<img file="MX336735B_D0105.tif" />
of 2 in order to continue the binarization for the remainder of the integer value over the cut-off value minus 1. For all bins, simply two contexts are provided: one for the first bin position of the 802x horizontal and vertical component binarizations, y, and an additional one for the second bin position of the truncated unary code 806 of the horizontal and vertical 802x components, and. For the exponential Golomb code bin position 808, the equi-probability derivation mode is used by the entropy decoder 409. That is, it is assumed that both bin values will occur with equal probability. The probability estimate for these bins is fixed. Compared to it, the probability estimate associated with the two aforementioned contexts of the truncated unary code 806 bins is continuously adapted during decoding.
Before describing in more detail, as to how the entropy decoder 409 could, according to the above description, be implemented in order to perform the aforementioned tasks, The description now focuses on a possible implementation of the reconstructor 404 that uses the differences of the movement vector 800 and the integer values thereof obtained by the de-symbolizer 314 by re-encoding the code bins 106 and 108 with the reinarization illustrated in Figure 18. using arrow 810. In particular, the reconstructor 808 can, as described above, retrieve from the data stream 401 information concerning the subdivision of a currently reconstructed image into blocks among which at least some are subject to motion compensated prediction. Figure 19 shows an image to be representatively reconstructed at 820 and blocks from the aforementioned image subdivision.
120 which uses motion-compensated prediction to predict the content of the »w« csreesa: si-ari<sub>and</sub>«<sub>?</sub>„^<sub>SCBSJ</sub>
127
<img file="MX336735B_D0106.tif" />
image therein 822. As described with respect to Figures 2A-2C, there are different possibilities for subdivision and block sizes 122. In order to avoid a transmission for a motion vector difference 800 for each of these blocks 122, the reconstructor 404 may exploit a fusion concept according to which the data stream additionally transmits merged information in addition to the information of the subdivision or, in the absence of information from the subdivision, in addition to the fact that the subdivision is fixed. The fusion information points to the rebuilder 404 as to which of the blocks 822 fusion groups are formed. With this measurement, it is possible for the rebuilder 404 to apply a certain difference of the motion vector 800 to a complete block fusion group 822. Of course, on the coding side, the transmission of the fusion information is subject to a trade-off between the transmission overhead of the subdivision (if present), the transmission overhead of fusion information and the transmission difference overhead of motion vector that decreases by increasing the size of the fusion groups. On the other hand, increasing the number of blocks per fusion group reduces the adaptation of the motion vector difference for the fusion group to the actual needs of the individual blocks of the respective fusion group thus producing less compensated motion predictions. accurate of the motion vector differences of these blocks and requiring a higher transmission overhead to transmit the prediction residual in the form of, for example, transformation coefficient level. Consequently, an offset is found on the coding side in an appropriate way. In any case, however, the concept of fusion results in motion vector differences for the fusion groups showing less spatial inter-correlation. See for example
128
MFI JM «* TS, -¾ ^
Figure 19 illustrating shading a member to a certain fusion group. Obviously, the actual movement of the image content in these blocks has been so similar that the encoding side decided to merge the respective blocks. The correlation with the movement of the image content in other blending groups, however, is low. Consequently, the restriction to simply using one context per bin of the truncated unary code 806 does not negatively impact the entropy coding efficiency since the fusion concept already accommodates the spatial inter-correlation sufficiently between the movement of neighboring image content. The context can simply be selected based on the fact that the bin is part of the binarization of a component of the motion vector difference 802<sub>Χ) Υ</sub> and the position of the bin that is 1 or 2 due to the cutoff value being two. Accordingly, other 802 components<sub>x> y</sub> already decoded bins / syntax / mvd elements do not influence context selection.
Also, the reconstructor 404 can be configured to reduce the content of information to be transferred by means of motion vector differences (beyond spatial and / or temporal motion vector prediction) using a multi-hypothetical prediction concept. according to which, first, a list of motion vector predictors is generated for each block or fusion group, then transmitting, explicitly or implicitly within the data stream information in the predictor index to be used to predict the difference of the motion vector.
See, for example, unshaded block 122 in Figure 20. Reconstructor 404 can provide different predictors for the motion vector of this block by spatially predicting the motion vector from the left, from the top, a combination of both, and so on. on, and temporarily predict the
129
<img file="MX336735B_D0107.tif" />
stituto ksxican © £> SLA P & DPIEOAS VJ® * = 13¡ awaiUTRiai ^ * α_ £ ί motion vector from the motion vector of a co-located portion of a previously decoded video image and additional combinations of the aforementioned predictors. These predictors are ordered by rebuilder 404 in a predictable manner which is predictable on the encoding side. Some information is transmitted for this purpose within the data stream and used by the rebuilder. That is, some clue is contained in the data stream, as to which predictor outside of this ordered list of predictors will actually be used as a predictor for the motion vector of this block. This index can be transmitted within the data stream for this block explicitly. However, it is also possible that the index is first predicted and then simply a prediction of it transmitted. There are also other possibilities. In any case, the aforementioned prediction scheme allows a very accurate prediction of the motion vector of the current block and consequently, the information content requirement imposed on the motion vector difference is reduced. Consequently, restricting adaptive context entropy encoding to just two bins of the truncated unary code and reducing the cutoff value to 2 as described with respect to Figure 18, as well as selecting the order of the exponential Golomb code for being 1, does not negatively affect the coding efficiency since the motion vector differences show, due to the high prediction efficiency, a frequency histogram according to which higher values of the motion vector difference components 802<sub>xy</sub> they are visited less frequently. Even the omission of any distinctive between horizontal and vertical components is consistent with efficient prediction, as prediction tends to operate equally well in both directions of prediction accuracy is high.
130
<img file="MX336735B_D0108.tif" />
<img file="MX336735B_D0109.tif" />
INSTITUTO MLX'CA NO DE LA PROHíD / J?
INDUS't 1UAL
It is essential to note that in the above description, the full details provided in Figures 1-15 are also transferable to the entities shown in Figure 16 as for example, regarding the functionality of the de-symbolizer 314, the rebuilder 404 and the 409 entropy decoder. However, for the sake of completeness, some of these details are outlined again later.
For a better understanding of the just outlined prediction scheme, see Figure 20. As described, constructor 404 can obtain different predictors for a current block 822 or a current block merge group, with these predictors shown by solid line vectors 824. . The predictors can be obtained by spatial and / or temporal prediction where, additionally, the operations of arithmetic means or the like can be used in such a way that the individual predictors may have been obtained by reconstructor 404 so that it correlates with the other. Regardless of how the vectors 826 have been obtained, the reconstructor 404 sequences or sorts these predictors 126 in an ordered list. This is illustrated by numbers 1 to 4 in Figure 21. It is preferred if the classification process is uniquely determinable so that the encoder and decoder can operate synchronously. Then the index just mentioned can be obtained by the rebuilder 404 for the current block, or merge group, out of the data stream, explicitly or implicitly. For example, the second predictor "2" may have been selected and the reconstructor 404 adds the difference of the motion vector 800 to this selected predictor 126, thereby ultimately producing the reconstructed motion vector 128 which is used to predict, by motion compensated prediction, the content of the current block / merge group. In case of the merger group,
131
7Γ 7 “Λ- 'Τ * .1. ου; f · '' i;
INSTITUTE .Ur.'Ñr -;.,: 7o DE ί.Λ? FíO?. '2DA¿industrial it is possible that the reconstructor 404 will also include motion vector differences provided for fusion group blocks, in order to refine in addition the motion vector 128 with respect to the individual blocks of the fusion group.
Thus, further proceeding with the description of the implementation of the entities shown in Figure 16, it may be that entropy decoder 409 is configured to derive truncated unary code 806 from data stream 401 using binary arithmetic decoding or binary PIPE encoding. Both concepts have been previously described. Furthermore, the entropy decoder 409 can be configured to use different contexts for the two positions of bins of the truncated unary code 806 or, alternatively, even the same context for both bins. Entropy decoder 409 can be configured to perform a probability state update. Entropy decoder 409 can do this, for a bin currently derived from truncated unary code 806, by transitioning from a current probability state associated with the associated context for the currently derived bin, to a new probability state depending on the bin currently derived. See the NextStateJLPS and Next_State_MPS tables for the lookup table regarding which is performed by the entropy decoder in addition to the other stages 0 to 5 listed above. In the previous discussion, the current probability state has been mentioned by pStatecurrent. It is defined for the respective context of interest. Entropy decoder 409 can be configured to arithmetically decode a bin currently to be derived outside of truncated unary code 806 by quantizing a current probability interval width value, i.e., R, representing a current probability interval to obtain an index of probability interval, q_index, and making a subdivision of
<img file="MX336735B_D0110.tif" />
132
<img file="MX336735B_D0111.tif" />
interval by indexing a table entry between table entries using the probability interval index and a probability state index, i.e. p State, which in turn depends on the current probability state associated with the context selected for the bin currently to be derived, to obtain a subdivision of the current probability interval into two partial intervals. In the embodiments outlined above, these partial intervals were associated with the most likely and least likely symbol. As described above, the entropy decoder 409 can be configured to use an eight-bit representation for the value of the current probability interval width R by taking, for example, two or three, more significant bits from the eight-bit representation and quantifying the current probability interval width value. The entropy decoder 409 can further be configured to select between the two partial intervals based on an offset status value from within the current probability interval, v. Update the probability interval width value R and the value of offset state, and infer a value of the bin currently to be derived, using the selected partial interval and performing a renormalization of the updated probability interval width value R and the offset state value V including a continuation of the bit reading of data stream 401. Entropy decoder 409 can, for example, be configured to decode binary arithmetic a bin outside of the exponential Golomb code by halving the width value of the current probability interval to obtain a subdivision of the current probability interval into two partial intervals. The halving corresponds to a probability estimate that is fixed and equal to 0.5. It can be implemented by a simple bit shift. The entropy decoder can also be configured for each motion vector difference,
133
<img file="MX336735B_D0112.tif" />
deriving the truncated unary code of the horizontal and vertical components of the respective motion vector difference of data stream 401, before the exponential Golomb code of the horizontal and vertical components of the respective motion vector difference. By this measurement, the entropy decoder 409 can exploit that a larger number of bins together form a series of bins for which the probability estimate is fixed, namely 0.5. This can speed up the entropy decoding procedure. On the other hand, the entropy decoder 409 may prefer to maintain the order between the motion vector differences by first deriving the horizontal and vertical components of a motion vector difference by simply proceeding to derive the horizontal and vertical components from the next vector difference of movement. By this measurement, the memory requirements imposed on the decoding entity, i.e., Figure 16 decoder, is reduced as the de-symbolizer 314 can proceed with the de-binarization of the motion vector differences immediately without having to wait by an analysis of additional motion vector differences. This is enabled by context selection: as exactly one context is available per bin position of code 806, no spatial interrelation should be inspected.
Reconstructor 404 can, as described above, spatially and / or temporally predict the horizontal and vertical components of motion vectors in order to obtain predictors 126 for the horizontal and vertical components of the motion vector and reconstruct the horizontal and vertical components of the motion vectors refining the 826 predictors using the horizontal components
134
4 <sup>1</sup> ; 'ΐ institl ο>: λνο D *. L Ο ¿ΌΛΟ INDUSTRIAL
<img file="MX336735B_D0113.tif" />
and vertical of the motion vector differences, simply by adding the motion vector difference to the respective predictor.
Furthermore, the reconstructor 404 can be configured to predict the horizontal and vertical components of motion vectors in different ways in order to obtain an ordered list of predictors for the horizontal and vertical component of motion vectors, get a list index of the data stream and reconstruct the horizontal and vertical components of motion vectors by refining the predictor to which a list predictor the list index points to using the horizontal and vertical components of the differences motion vector.
Furthermore, as already described above, the reconstructor 404 can be configured to reconstruct the video using motion-compensated prediction by applying the horizontal and vertical component 802.<sub>x> y</sub> motion vectors as a spatial granularity defined by a subdivision of the video images into blocks where the reconstructor 404 can use merged syntax elements present in data stream 401 to group the blocks into merge groups and apply the integer values of the horizontal and vertical components 802<sub>xy</sub> of the motion vector differences obtained by the binarizer 314, in units of fusion groups.
Rebuilder 404 can derive the subdivision of the block video images from a portion of data stream 401 that excludes merge syntax elements. Rebuilder 404 can also adapt the horizontal and vertical components of the default motion vector for all blocks in a group of
135
J pj ά
<img file="MX336735B_D0114.tif" />
associated fusion, or refine it by the horizontal and vertical components of the motion vector differences associated with the blocks in the fusion group.
For the sake of completeness only, Figure 17 shows an encoder-to-decoder fit of Figure 16. The encoder of Figure 17 comprises a constructor 504, a symbolizer 507, and an entropy encoder 514. The encoder comprises a constructor 504 configured to predictively encode video 505 by motion compensated prediction using motion vectors and predictively encoding motion vectors by predicting motion vectors and setting the integer values 506 of the horizontal and vertical components of vector differences motion to represent a prediction error of the predicted motion vectors; a symbolizer 507 configured to binarize the integer values to obtain binarizations 508 of the horizontal and vertical components of the motion vector differences, the binarizations equating a truncated unary code of the horizontal and vertical components, respectively, within a first domain interval of the horizontal and vertical components under a cutoff value, and a combination of a prefix in the form of a truncated unary code for the cutoff value and a suffix in the form of an Exp-Golomb code of the horizontal and vertical components, respectively, within a second range of the domain of the horizontal components and verticals inclusive and above the cutoff value, where the cutoff value is two and the Exp-Golomb code has order one; and an entropy encoder 513 configured for the horizontal and vertical components of motion vector differences, encoding the truncated unary code in the data stream using adaptive context binary entropy encoding with exactly one context per code bin position truncated unary, the
136
<img file="MX336735B_D0115.tif" />
which is common for the horizontal and vertical components of motion vector differences, and the exp-Golomb code using a constant equiprobability bypass mode. Possible additional implementation details are directly transferable from the description regarding the decoder of Figure 16 in the encoder of Figure 17.
Although some aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method stage or a characteristic of a method stage. Similarly, aspects described in the context of a method step also represent a description of a corresponding block or element or feature of a corresponding apparatus. Some or all of the steps in the method may be performed (or using) a hardware appliance, such as a microprocessor, a programmable computer, or an electronic circuit. In some embodiments, some or more of the most important method steps may be performed by such an apparatus.
The inventive encoded signal can be stored on a digital storage medium or can be transmitted on a transmission medium such as a wireless transmission medium or a cable transmission medium such as the Internet.
Depending on certain implementation requirements, the embodiments of the invention can be implemented in hardware or in software. The implementation can be performed using a digital storage medium, for example a floppy disk, a
DVD, Blue Ray, CD, ROM, PROM, EPROM, EEPROM, or FLASH memory, having electronically readable control signals stored therein, that cooperate (or are capable of cooperating) with a system of computer
137 ϊ Ρ ε programmable so that the respective method is performed. Therefore, the medium of 'τΧΗ'Λνβτι-Λ.ΤΙ'ΤϋββΜΛΛΒ<sup>4</sup>»· Digital storage can be a computer readable one.
Some embodiments according to the invention comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, in order to perform one of the methods described herein.
Generally, the embodiments of the present invention can be implemented as a computer program product with a program code, the program code being operative to perform one of the methods when the computer program product is run on the computer. The program code can for example be stored in a machine-readable carrier.
Other embodiments comprise the computer program for performing one of the methods described herein, stored in a machine-readable carrier.
In other words, an embodiment of the inventive method is, therefore, a computer program having a program code to perform one of the methods described here, when the computer program is executed on a computer.
A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer readable medium) comprising, recording thereon, the computer program for performing one of the 20 methods described herein. . The data carrier, the digital storage medium or the registered medium are usually tangible and / or non-transient.
A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the
138
Τ- χ '' ΐρ- and ι?.,;
DcL ·. /. u> O INDUSTRIAL
<img file="MX336735B_D0116.tif" />
methods described here. The data stream or sequence of ^ eñalpg pnpHpn pnr pjpmpln be configured to be transferred via a data communication connection, for example via the Internet.
A further embodiment comprises a processing means, for example a computer, or a programmable logic device configured for or adapted to perform one of the methods described herein.
A further embodiment comprises a computer having the computer program installed to perform one of the methods described here.
A further embodiment according to the invention comprises an apparatus or a system configured to transfer (for example, electronically or optically) a computer program to perform one of the methods described herein to a receiver. The receiver may, for example, be a computer, a mobile device, a memory device, or the like. The apparatus or system may, for example, comprise a file server for transferring the computer program to the receiver.
In some embodiments, a programmable logic device (eg, an array of field programmable gates) can be used to perform some or all of the functionality of the methods described here. In some embodiments, a field programmable gate arrangement may cooperate with a microprocessor in order to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware apparatus.
The above described embodiments are merely illustrative for the principles of the present invention. Modifications and variations of the arrangements and details described herein are understood to be apparent to those skilled in the art. It is the
139
You
<img file="MX336735B_D0117.tif" />
INSTITUTE λ ·· .: DE L. '\' Zi • ¿ti 'tá'á • -'. S -Z '• * .2 -__- * intention, therefore, to be limited only by the scope of the patent claims and not the specific details presented by way of description and explanation of the embodiments of this document.
140
<img file="MX336735B_D0118.tif" />
Contents40
132 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37 Sheet 38 Sheet 39 Sheet 40 Sheet 41 Sheet 42 Sheet 43 Sheet 44 Sheet 45 Sheet 46 Sheet 47 Sheet 48 Sheet 49 Sheet 50 Sheet 51 Sheet 52 Sheet 53 Sheet 54 Sheet 55 Sheet 56 Sheet 57 Sheet 58 Sheet 59 Sheet 60 Sheet 61 Sheet 62 Sheet 63 Sheet 64 Sheet 65 Sheet 66 Sheet 67 Sheet 68 Sheet 69 Sheet 70 Sheet 71 Sheet 72 Sheet 73 Sheet 74 Sheet 75 Sheet 76 Sheet 77 Sheet 78 Sheet 79 Sheet 80 Sheet 81 Sheet 82 Sheet 83 Sheet 84 Sheet 85 Sheet 86 Sheet 87 Sheet 88 Sheet 89 Sheet 90 Sheet 91 Sheet 92 Sheet 93 Sheet 94 Sheet 95 Sheet 96 Sheet 97 Sheet 98 Sheet 99 Sheet 100 Sheet 101 Sheet 102 Sheet 103 Sheet 104 Sheet 105 Sheet 106 Sheet 107 Sheet 108 Sheet 109 Sheet 110 Sheet 111 Sheet 112 Sheet 113 Sheet 114 Sheet 115 Sheet 116 Sheet 117 Sheet 118 Sheet 119 Sheet 120 Sheet 121 Sheet 122 Sheet 123 Sheet 124 Sheet 125 Sheet 126 Sheet 127 Sheet 128 Sheet 129 Sheet 130 Sheet 131 Sheet 132
461 members in 32 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 61497794 | United States of America | – | |
| 201161497794 | United States of America | P | |
| 61508506 | United States of America | – | |
| 201161508506 | United States of America | P | |
| 2012061613 | European Patent Office (EPO) | W |
Members461
| Document | Office | Kind | |
|---|---|---|---|
| CA2839560A1 | Canada | A1 | |
| CA2839569A1 | Canada | A1 | |
| WO2012172113A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2012172114A1 | World Intellectual Property Organization (WIPO) | A1 | |
| WO2012172115A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2012268951A1 | Australia | A1 | |
| AU2012268950A1 | Australia | A1 | |
| CO6852030A2 | Colombia | A2 | |
| CO6852031A2 | Colombia | A2 | |
| AP2014007360A0 | African Regional Intellectual Property Organization (ARIPO) | A0 | |
| AP2014007361A0 | African Regional Intellectual Property Organization (ARIPO) | A0 | |
| PH12013502634A1 | Philippines | A1 | |
| KR20140022957A | Republic of Korea | A | |
| KR20140028106A | Republic of Korea | A | |
| CN103733622A | China | A | |
| CN103748886A | China | A | |
| EP2721819A1 | European Patent Office (EPO) | A1 | |
| EP2721820A1 | European Patent Office (EPO) | A1 | |
| EP2721822A1 | European Patent Office (EPO) | A1 | |
| MX2013014867A | Mexico | A | |
| US2014140400A1 | United States of America | A1 | |
| MX2013014868A | Mexico | A | |
| US2014177707A1 | United States of America | A1 | |
| CN103931194A | China | A | |
| US2014198841A1 | United States of America | A1 | |
| CL2013003601A1 | Chile | A1 | |
| JP2014518473A | Japan | A | |
| CL2013003603A1 | Chile | A1 | |
| JP2014520451A | Japan | A | |
| JP2014522613A | Japan | A | |
| HK1197128A | Hong Kong, China | A | |
| HK1197128A1 | Hong Kong, China | A1 | |
| TN2013000519A1 | Tunisia | A1 | |
| TN2013000520A1 | Tunisia | A1 | |
| ZA201400029B | South Africa | B | |
| ZA201400030B | South Africa | B | |
| RU2014101164A | Russian Federation | A | |
| RU2014101166A | Russian Federation | A | |
| AU2012268951B2 | Australia | B2 | |
| AU2015249167A1 | Australia | A1 | |
| MX336735BThis record | Mexico | B | |
| AU2012268950B2 | Australia | B2 | |
| KR20160018879A | Republic of Korea | A | |
| AP3686A | African Regional Intellectual Property Organization (ARIPO) | A | |
| KR101619333B1 | Republic of Korea | B1 | |
| AU2016202638A1 | Australia | A1 | |
| JP5925884B2 | Japan | B2 | |
| UA111610C2 | Ukraine | C2 | |
| UA111741C2 | Ukraine | C2 | |
| JP5952900B2 | Japan | B2 | |
| RU2595934C2 | Russian Federation | C2 | |
| US9455744B2 | United States of America | B2 | |
| JP2016174378A | Japan | A | |
| CA2839560C | Canada | C | |
| KR101662136B1 | Republic of Korea | B1 | |
| KR20160119254A | Republic of Korea | A | |
| US9473170B2 | United States of America | B2 | |
| US2016360204A1 | United States of America | A1 | |
| US2016360223A1 | United States of America | A1 | |
| US2016360238A1 | United States of America | A1 | |
| US2016366447A1 | United States of America | A1 | |
| BR112013032332A2 | Brazil | A2 | |
| BR112013032333A2 | Brazil | A2 | |
| AP2016009618A0 | African Regional Intellectual Property Organization (ARIPO) | A0 | |
| CA2839569C | Canada | C | |
| JP6059212B2 | Japan | B2 | |
| MX345195B | Mexico | B | |
| IL230415A | Israel | A | |
| IL249644A0 | Israel | A0 | |
| IL249644D0 | Israel | D0 | |
| US9596475B2 | United States of America | B2 | |
| AP4072A | African Regional Intellectual Property Organization (ARIPO) | A | |
| RU2615681C2 | Russian Federation | C2 | |
| US9628827B2 | United States of America | B2 | |
| KR101730587B1 | Republic of Korea | B1 | |
| AU2015249167B2 | Australia | B2 | |
| KR20170047406A | Republic of Korea | A | |
| JP2017085602A | Japan | A | |
| US2017142416A1 | United States of America | A1 | |
| AU2016202638B2 | Australia | B2 | |
| US9686568B2 | United States of America | B2 | |
| US2017180733A1 | United States of America | A1 | |
| IL230023A | Israel | A | |
| CN103733622B | China | B | |
| UA114674C2 | Ukraine | C2 | |
| IL252388A0 | Israel | A0 | |
| IL252388D0 | Israel | D0 | |
| US9729883B2 | United States of America | B2 | |
| AU2017210534A1 | Australia | A1 | |
| US9743090B2 | United States of America | B2 | |
| US2017250709A1 | United States of America | A1 | |
| CN103931194B | China | B | |
| US9762913B2 | United States of America | B2 | |
| US9768804B1 | United States of America | B1 | |
| UA115186C2 | Ukraine | C2 | |
| IL249644A | Israel | A | |
| AU2017228613A1 | Australia | A1 | |
| US2017302952A1 | United States of America | A1 | |
| US2017302953A1 | United States of America | A1 | |
| US2017302954A1 | United States of America | A1 |
Numbers
- Publication
- 336735
- Application
- 14867
Titles2
- Spanish
- CODIFICACIÓN DE ENTROPÍA PARA DIFERENCIAS DE VECTOR DE MOVIMIENTO.
- English
- ENTROPY CODING OF MOTION VECTOR DIFFERENCES.
Classification
- CPC, 19
- H04N19/13
- H04N19/70
- H03M7/4075
- H03M7/4018
- H03M7/42
- H04N19/124
- H04N19/132
- H04N19/174
- H04N19/184
- H04N19/50
- H04N19/513
- H04N19/52
- H04N19/61
- H04N19/91
- H03M7/3064
- H04N19/51
- H04N19/126
- H04N19/80
- H04N19/86
- IPC, 2
- H03M7 42
- H04N19 61