ES2616486T3 - Obtención de contexto para la codificación de última posición para la codificación de vídeo - Google Patents
Obtención de contexto para la codificación de última posición para la codificación de vídeo Download PDFInfo
- Publication number
- ES2616486T3 ES2616486T3 ES13712992.0T ES13712992T ES2616486T3 ES 2616486 T3 ES2616486 T3 ES 2616486T3 ES 13712992 T ES13712992 T ES 13712992T ES 2616486 T3 ES2616486 T3 ES 2616486T3
- Authority
- ES
- Spain
- Prior art keywords
- video
- value
- block
- bin
- context
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 93
- 230000009466 transformation Effects 0.000 claims abstract description 77
- 238000006073 displacement reaction Methods 0.000 claims abstract description 28
- 238000003860 storage Methods 0.000 claims description 20
- 238000012886 linear function Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 99
- 230000033001 locomotion Effects 0.000 description 86
- 239000012634 fragment Substances 0.000 description 37
- 239000013598 vector Substances 0.000 description 36
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 238000004891 communication Methods 0.000 description 13
- 238000011002 quantification Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 12
- 238000013139 quantization Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 241000023320 Luma <angiosperm> Species 0.000 description 8
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 7
- 238000000844 transformation Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000009795 derivation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento: la determinación (162; 208) de un contexto para la codificación por entropía de un bin de un valor indicativo de una posición del último coeficiente significativo de un bloque de datos de vídeo usando una función de un índice del bin, y la codificación (164; 210) del bin utilizando el contexto determinado; caracterizado por: el uso de la función para producir un índice de contexto para el contexto desplazando a la derecha el índice del bin un valor k y añadiendo el valor desplazado a la derecha a un valor de desplazamiento, en el que el valor de desplazamiento se determina según la fórmula: desplazamiento >= 3*n + ((n + 1) >> 2), en donde el valor de k se determina según la fórmula: k >= (n+3)>>2 en donde el valor de n se determina según la fórmula: n >= (log2(block_size)-2), y en donde el valor block_size comprende un valor indicativo del tamaño de bloque de la unidad de transformación.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Obtencion de contexto para la codificacion de ultima posicion para la codificacion de video CAMPO TECNICO
Esta divulgacion se refiere a la codificacion de video.
ANTECEDENTES
Las capacidades del video digital pueden incorporarse en una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de difusion directa digital, sistemas de difusion inalambrica, asistentes digitales personales (PDA), ordenadores portatiles o de escritorio, ordenadores de tableta, lectores de libros electronicos, camaras digitales, dispositivos de grabacion digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos celulares o de radio por satelite, los denominados telefonos "inteligentes", dispositivos de videoconferencia, dispositivos de transmision por flujo de video, y similares. Los dispositivos de video digital implementan tecnicas de codificacion de video, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificacion Avanzada de Video (AVC), la norma de Codificacion de Video de Alta Eficiencia (HEVC) actualmente en desarrollo y las extensiones de tales normas. Los dispositivos de video pueden transmitir, recibir, codificar, descodificar y/o almacenar informacion de video digital mas eficazmente, implementando tales tecnicas de codificacion de video.
Las tecnicas de codificacion de video incluyen la prediccion espacial (intra-imagen) y/o la prediccion temporal (entre imagenes) para reducir o eliminar la redundancia intrfnseca en las secuencias de video. Para la codificacion de video basada en bloques, un fragmento de video (por ejemplo, una trama de video o una parte de una trama de video) puede dividirse en bloques de video, que tambien pueden denominarse bloques arbolados, unidades de codificacion (CU) y/o nodos de codificacion. Los bloques de video en un fragmento intra-codificado (I) de una imagen son codificados usando la prediccion espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de video de un fragmento inter-codificado (P o B) de una imagen pueden usar la prediccion espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen, o la prediccion temporal con respecto a muestras de referencia en otras imagenes de referencia. Las imagenes pueden denominarse tramas, y las imagenes de referencia pueden denominarse tramas de referencia.
La prediccion espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de pfxeles entre el bloque original a codificar y el bloque predictivo. Un bloque inter-codificado se codifica segun un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra-codificado se codifica segun un modo de intra-codificacion y los datos residuales. Para una mayor compresion, los datos residuales pueden transformarse desde el dominio de pfxeles a un dominio de transformacion, dando como resultado coeficientes de transformacion residuales, los cuales pueden cuantificarse posteriormente. Los coeficientes de transformacion cuantificados, inicialmente dispuestos en una formacion bidimensional, pueden explorarse con el fin de producir un vector unidimensional de coeficientes de transformacion, y puede aplicarse codificacion por entropfa para lograr aun mas compresion.
La codificacion del ultimo coeficiente significativo se describe en el artfculo "No-CE11: Procedimiento modificado para codificar las posiciones de los ultimos coeficientes significativos en el modo CABAC "por S-THSIANG Y COL. publicado en 7. REUNION DE JCT-VC; 98 REUNION MPEG; - ; GINEBRA; (EQUIPO DE COLABORACION CONJUNTA SOBRE CODIFICACION DE VIDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL;
HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/. n° JCTVC-G239, 8 de noviembre de 2011.
HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/. n° JCTVC-G239, 8 de noviembre de 2011.
La codificacion de ultima posicion se describe en los artfculos "Modificacion de binarizacion para la codificacion de ultima posicion -JCTVC-F375_r2" de Vadim Segeren Y COL. publicada en la REUNION DE JCTVC; 97. REUNION MPEG; 14-7-2011 - 22-7-2011; TORINO; (EQUIPO DE COLABORACION CONJUNTA SOBRE CODIFICACION DE VIDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16), 14 de julio de 2011, paginas 1-10, y "Reduccion de Contextos CABAC para la Codificacion de Ultima Posicion - Revision 3 (JCTVC-H0537r3 )"por Liwei Guo y col. publicado el 3 febrero 2012, paginas 1-5.
SUMARIO
La invencion se define en las reivindicaciones a las que se hace ahora referencia.
En general, esta divulgacion describe tecnicas para la codificacion de elementos sintacticos asociados con datos de video usando una o mas funciones. Por ejemplo, un dispositivo puede implementar una o mas de las tecnicas para codificar un valor que indica una posicion de un ultimo coeficiente significativo de un bloque de datos de video (tal como una unidad de transformacion, o "TU"). Para codificar el valor, el dispositivo puede utilizar una funcion de un fndice de cada bit (o "bin") en un valor binarizado correspondiente al ultimo coeficiente significativo, donde el fndice
5
10
15
20
25
30
35
40
45
50
55
60
65
indica una posicion del bin en una serie de bins que representan el valor binarizado.
Los detalles de uno o mas ejemplos se exponen en los dibujos adjuntos y en la siguiente descripcion. Otras caracterfsticas, objetivos y ventajas resultaran evidentes a partir de la descripcion y los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCION DE LOS DIBUJOS
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificacion y descodificacion de video de ejemplo que puede utilizar tecnicas para la determinacion de un contexto a utilizar para codificar un valor que representa un ultimo coeficiente significativo de un bloque de datos de video.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de video que puede implementar tecnicas para la determinacion de un contexto a utilizar para codificar un valor que representa un ultimo coeficiente significativo de un bloque de datos de video.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de un descodificador de video que puede implementar tecnicas para la determinacion de un contexto a utilizar para codificar un valor que representa un ultimo coeficiente significativo de un bloque de datos de video.
La FIG. 4 es un diagrama de flujo que ilustra un procedimiento de ejemplo para la codificacion de un bloque actual de datos de video.
La FIG. 5 es un diagrama de flujo que ilustra un procedimiento de ejemplo para descodificar un bloque actual de datos de video.
DESCRIPCION DETALLADA
En general, las tecnicas de esta divulgacion se refieren a la codificacion de video. En la codificacion de video, una secuencia de imagenes se codifican individualmente utilizando prediccion espacial (intra-prediccion) o prediccion temporal (inter-prediccion). En particular, los codificadores de video codifican bloques individuales de las imagenes usando intra-prediccion o inter-prediccion. Los codificadores de video tambien codifican datos residuales para los bloques, donde los datos residuales corresponden en general a bloques residuales, que representan diferencias de pixel por pixel entre los datos predichos y los datos no codificados, sin procesar. Los codificadores de video pueden transformar y cuantificar los datos residuales para producir coeficientes de transformacion cuantificados para los bloques residuales. Los codificadores de video codifican ademas datos sintacticos, tales como si los coeficientes son significativos (por ejemplo, tienen valores absolutos mayores que cero), ubicaciones de los coeficientes significativos, una ubicacion de un ultimo coeficiente significativo en orden de exploracion, y valores del nivel para los coeficientes significativos.
Esta divulgacion describe tecnicas para la codificacion de un valor indicativo de un ultimo coeficiente significativo en un bloque de datos de video, tal como una unidad de transformacion (TU). En particular, para codificar elementos sintacticos, tales como el valor indicativo del ultimo coeficiente significativo en el bloque, los codificadores de video pueden configurarse para aplicar una codificacion aritmetica binaria adaptable al contexto (CABAC). La codificacion CABAC implica el uso de varios contextos, indicados por indices de contexto, que generalmente indican la probabilidad de que un bit (o "bin") individual de una cadena binarizada tenga un valor particular (por ejemplo, 0 o 1). Especfficamente, el contexto para la codificacion de un bin de un valor indicativo de un ultimo coeficiente significativo en un bloque se determina individualmente para cada bin del valor, es decir, basandose en una ubicacion del bin en el valor (por ejemplo, un indice del bin, suponiendo que el valor se representa como una serie de bins).
En lugar de utilizar una tabla de asignacion, que proporciona indicaciones de los indices de contexto para los contextos a utilizar para codificar los bins particulares, las tecnicas de esta divulgacion incluyen el uso de una funcion para determinar el indice de contexto de un contexto a utilizar para codificar un bin. En particular, la funcion puede ser una funcion de un indice del bin. Por ejemplo, suponiendo que el bin es el /-esimo bin de un valor que se esta codificando, se puede definir una funcion como f(i), donde f(i) devuelve un valor de indice de contexto correspondiente a un contexto a utilizar para codificar el bin de un valor binarizado. El contexto, como se ha descrito anteriormente, puede indicar la probabilidad de que el bin / tenga un valor determinado, por ejemplo, 0 o 1.
De esta manera, esta divulgacion describe tecnicas de la codificacion CABAC de la posicion del ultimo coeficiente significativo (ultima posicion). Para la codificacion de un bin de ultima posicion, el indice de su contexto CABAC puede obtenerse utilizando una funcion, de forma que pueda guardarse una tabla de asignacion entre los bins de ultima posicion y los contextos CABAC (por ejemplo, no almacenados). La codificacion CABAC generalmente incluye dos partes: la binarizacion y la codificacion CABAc. El proceso de binarizacion se realiza para convertir la ubicacion del ultimo coeficiente significativo de un bloque en una secuencia binaria, por ejemplo, una serie de bins. El procedimiento de binarizacion usado en el modelo de prueba de codificacion de video de alta eficiencia (HM) es unario truncado + codificacion de longitud fija. Para la parte de codificacion unaria truncada, los bins se codifican
5
10
15
20
25
30
35
40
utilizando contextos CABAC. Para la parte de longitud fija, los bins se codifican utilizando el modo de derivacion (sin contextos). Un ejemplo de TU 32x32 (unidad de transformacion/bloque de transformacion) se muestra en la tabla 1 a continuacion:
TABLA 1
- Magnitud del componente de la ultima posicion
- Unaria truncada (modelo de contexto) Binaria fija (derivacion) f_valor
- 0
- 1 -
- 0
- 1
- 01 - 0
- 2
- 001 - 0
- 3
- 0001 - 0
- 4-5
- 00001 X 0-1
- 6-7
- 000001 X 0-1
- 8-11
- 0000001 XX 0-3
- 12-15
- 00000001 XX 0-3
- 16-23
- 000000001 XXX 0-7
- 24-31
- 000000000 XXX 0-7
La tabla 2 a continuacion ilustra una tabla de asignacion de contexto de ejemplo utilizada en el HM convencional. La tabla 2 muestra que las ultimas posiciones en diferentes ubicaciones pueden compartir los mismos contextos. Para algunos bins, por ejemplo, los bins 6-7 de un bloque de 8x8, no hay contexto asignado; eso se debe a que estan codificados sin contexto (modo de derivacion), como se muestra en la tabla 1 anterior.
TABLA 2
- indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 1 2
- TU 8x8
- 3 4 5 5 2
- TU 16x16
- 6 7 8 8 9 9 2
- TU 32x32
- 10 11 12 14 13 13 14 14 2
Aunque el HM convencional utiliza una tabla tal como la tabla 2 para determinar los contextos para la codificacion de bins de un valor de la ultima posicion (es decir, un valor que indica una posicion del ultimo coeficiente significativo en un bloque de datos de video), las tecnicas de esta divulgacion incluyen el uso de una funcion para determinar los contextos para la codificacion de bins del valor de la ultima posicion. Por lo tanto, una tabla similar a la tabla 2 no tiene que estar necesariamente en un codificador de video configurado segun las tecnicas de esta divulgacion. De esta manera, se puede utilizar una funcion para obtener el indice de contexto de CABAC para la codificacion de bins en la ultima posicion, de forma que la tabla de asignacion (tabla 2) se puede eliminar. A continuacion se describen con mayor detalle varios ejemplos de dispositivos de codificacion configurados para ejecutar funciones para determinar contextos para la codificacion de bins de elementos sintacticos.
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificacion y descodificacion de video de ejemplo 10 que puede utilizar tecnicas para la determinacion de un contexto a utilizar para codificar un valor que representa un ultimo coeficiente significativo de un bloque de datos de video. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de video codificados, a descodificar en un momento posterior por parte de un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona datos de video al dispositivo de destino 14 a traves de un medio legible por ordenador 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera entre una amplia gama de dispositivos, incluyendo ordenadores de sobremesa, ordenadores plegables (es decir, portatiles), ordenadores de tableta, descodificadores, equipos telefonicos portatiles tales como los denominados telefonos “inteligentes”, los denominados paneles “inteligentes”, televisores, camaras, dispositivos de visualizacion, reproductores de medios digitales, consolas de videojuegos, un dispositivo de flujo de video o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicacion inalambrica.
El dispositivo de destino 14 puede recibir los datos de video codificados que se van a descodificar, mediante un medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o
5
10
15
20
25
30
35
40
45
50
55
60
65
dispositivo capaz de desplazar los datos de video codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicacion para permitir al dispositivo de origen 12 transmitir datos de video codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de video codificados pueden ser modulados segun una norma de comunicacion, tal como un protocolo de comunicacion inalambrica, y transmitidos al dispositivo de destino 14. El medio de comunicacion puede comprender cualquier medio de comunicacion inalambrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o mas lfneas de transmision ffsicas. El medio de comunicacion puede formar parte de una red basada en paquetes, tal como una red de area local, una red de area extensa o una red global tal como Internet. El medio de comunicacion puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion desde el dispositivo de origen 12 al dispositivo de destino 14.
En algunos ejemplos, pueden emitirse datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados del dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera entre una diversidad de medios de almacenamiento de datos, de acceso distribuido o local, tales como una unidad de disco, discos Blu-ray, discos DVD, discos CD-ROM, memoria flash, memoria volatil o no volatil, u otros medios adecuados cualesquiera de almacenamiento digital, para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar los datos de video codificados, generados por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de video almacenados del dispositivo de almacenamiento, mediante flujo o descarga. El servidor de ficheros puede ser cualquier tipo de servidor capaz de almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo de destino 14. Entre los ejemplos de servidores de ficheros se incluyen un servidor de Internet (por ejemplo, para un sitio web), un servidor de FTP, dispositivos de almacenamiento conectados a la red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de video codificados a traves de cualquier conexion de datos estandar, incluyendo una conexion a Internet. Esto puede incluir un canal inalambrico (por ejemplo, una conexion Wi-Fi), una conexion por cable (por ejemplo, DSL, modem de cable, etc.), o una combinacion de ambos que sea adecuada para acceder a datos de video codificados, almacenados en un servidor de ficheros. La transmision de datos de video codificados desde el dispositivo de almacenamiento puede ser una transmision por flujo, una transmision de descarga o una combinacion de ambas.
Las tecnicas de esta divulgacion no estan limitadas necesariamente a aplicaciones o configuraciones inalambricas. Las tecnicas pueden aplicarse a la codificacion de video, en soporte de cualquiera entre una diversidad de aplicaciones multimedia, tales como difusiones inalambricas de television, transmisiones de television por cable, transmisiones de television por satelite, transmisiones de video por flujo mediante Internet, tal como el flujo adaptativo dinamico sobre HTTP (DASH), video digital que esta codificado en un medio de almacenamiento de datos, descodificacion de video digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para dar soporte a la transmision de video unidireccional o bidireccional, para prestar soporte a aplicaciones tales como el flujo de video, la reproduccion de video, la difusion de video y/o la videotelefonfa.
En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de video 30 y un dispositivo de visualizacion 32. Segun esta divulgacion, el codificador de video 20 de dispositivo de origen 12 puede estar configurado para aplicar las tecnicas para la determinacion de un contexto a utilizar para codificar un valor que representa un ultimo coeficiente significativo de un bloque de datos de video. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de video desde una fuente de video externa 18, tal como una camara externa. Asimismo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualizacion externo, en lugar de incluir un dispositivo de visualizacion integrado.
El sistema ilustrado 10 de la figura 1 es simplemente un ejemplo. Las tecnicas para determinar un contexto a utilizar para codificar un valor que representa un ultimo coeficiente significativo de un bloque de datos de video pueden realizarse mediante cualquier dispositivo de codificacion y/o descodificacion de video digital. Aunque, por lo general, las tecnicas de esta divulgacion se llevan a cabo por un dispositivo de codificacion de video, las tecnicas tambien pueden llevarse a cabo mediante un codificador/descodificador de video, denominado habitualmente "CODEC". Ademas, las tecnicas de esta divulgacion tambien pueden llevarse a cabo por un preprocesador de video. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de codificacion, donde el dispositivo de origen 12 genera datos de video codificados para su transmision al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera casi simetrica, de modo que cada uno de los dispositivos 12, 14 incluye componentes de codificacion y de descodificacion de video. Por tanto, el sistema 10 puede soportar una transmision de video unidireccional o bidireccional entre los dispositivos de video 12, 14, por ejemplo para el flujo de video, la reproduccion de video, la radiodifusion de video o la videotelefonfa.
La fuente de video 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de video, tal como una
5
10
15
20
25
30
35
40
45
50
55
60
65
camara de video, un archivo de video que contiene video grabado previamente y/o una interfaz de alimentacion de video para recibir video de un proveedor de contenido de video. Como una alternativa adicional, la fuente de video 18 puede generar video fuente como datos basados en graficos de ordenador, o una combinacion de video en directo, video de un archivo y video generado por ordenador. En algunos casos, si la fuente de video 18 es una videocamara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados telefonos con camara o videotelefonos. Sin embargo, como se ha mencionado anteriormente, las tecnicas descritas en esta divulgacion pueden aplicarse a la codificacion de video en general, y pueden aplicarse a aplicaciones inalambricas y/o cableadas. En cada caso, el video grabado, pregrabado o generado por ordenador puede codificarse por el codificador de video 20. A continuacion, la informacion de video codificado puede ser emitida por la interfaz de salida 22 sobre un medio legible por ordenador 16.
El medio legible por ordenador 16 puede incluir medios transitorios, tales como una emision inalambrica o una transmision por red cableada, o un medio de almacenamiento (es decir, medios de almacenamiento no transitorios), tal como un disco duro, una unidad flash, un disco compacto, un disco de video digital, un disco Blu-ray, u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de video codificados desde el dispositivo de origen 12 y proporcionar los datos de video codificados al dispositivo de destino 14, por ejemplo, a traves de una transmision de red. Del mismo modo, un dispositivo informatico de una instalacion de produccion de medios, tal como una instalacion de grabacion de discos, puede recibir datos de video codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de video codificados. Por lo tanto, se puede entender que el medio legible por ordenador 16 incluye uno o mas medios legibles por ordenador de varias formas, en varios ejemplos.
La interfaz de entrada 28 del dispositivo de destino 14 recibe informacion del medio legible por ordenador 16. La informacion del medio legible por ordenador 16 puede incluir informacion sintactica definida por el codificador de video 20, que tambien es usada por el descodificador de video 30, que incluye elementos sintacticos que describen caracterfsticas y/o el procesamiento de bloques y otras unidades codificadas, por ejemplo grupos de imagenes (GOP). El dispositivo de visualizacion 32 muestra los datos de video descodificados a un usuario y puede comprender cualquiera de una variedad de dispositivos de visualizacion, tal como un tubo de rayos catodicos (CRT), una pantalla de cristal lfquido (LCD), una pantalla de plasma, una pantalla de diodos organicos de emision de luz (OLED) u otro tipo de dispositivo de visualizacion.
El codificador de video 20 y el descodificador de video 30 pueden funcionar segun una norma de compresion de video, tal como la norma de Codificacion de Video de Alta Eficiencia (HEVC), actualmente en desarrollo, y pueden ser conformes al Modelo de Prueba de la HEVC (HM). Como alternativa, el codificador de video 20 y el descodificador de video 30 pueden funcionar segun otras normas patentadas o industriales, tales como la norma ITU-T H.264, tambien denominada MPEG -4, Parte 10, Codificacion Avanzada de Video (AVC), o extensiones de tales normas. Sin embargo, las tecnicas de esta divulgacion no estan limitadas a ninguna norma de codificacion particular. Otros ejemplos de normas de codificacion de video incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de video 20 y el descodificador de video 30 pueden estar integrados con un codificador y descodificador de audio, y pueden incluir unidades adecuadas de multiplexacion y demultiplexacion, u otro hardware y software, para llevar a cabo la codificacion, tanto de audio como de video, en un flujo de datos comun o en flujos de datos diferentes. Si procede, las unidades de multiplexacion y desmultiplexacion pueden ajustarse al protocolo de multiplexacion ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
La norma ITU-T H.264/MPEG-4 (AVC) fue formulada por el Grupo de Expertos en Codificacion de Video (VCEG) de ITU-T junto con el Grupo de Expertos en Imagenes en Movimiento (MPEG) de ISO/IEC como el producto de una asociacion colectiva conocida como el Equipo de video Conjunto (NT). En algunos aspectos, las tecnicas descritas en esta divulgacion pueden aplicarse a dispositivos que generalmente cumplen con la norma H.264. La norma H.264 se describe en la Recomendacion ITU-T H.264, Codificacion de Video Avanzada para los servicios audiovisuales genericos, por el Grupo de Estudio de la ITU-T, y con fecha de marzo de 2005, que se puede denominar en este documento norma H.264 o memoria descriptiva H.264, o la norma o memoria descriptiva H.264/AVC. El Equipo de Video Conjunto (NT) continua trabajando en extensiones para H.264/MPEG-4 AVC.
El codificador de video 20 y el descodificador de video 30 pueden implementarse como cualquiera entre una diversidad de circuitos codificadores adecuados, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especfficos de la aplicacion (ASIC), matrices de puertas programables por campo (FPGA), logica discreta, software, hardware, firmware o cualquier combinacion de los mismos. Cuando las tecnicas son implementadas parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio no transitorio adecuado, legible por ordenador, y ejecutar las instrucciones en hardware usando uno o mas procesadores para realizar las tecnicas de esta divulgacion. El codificador de video 20 y el descodificador de video 30 pueden incluirse en uno o mas codificadores o descodificadores, donde cualquiera de los mismos puede estar integrado como parte de un codificador/descodificador combinado (CODEC) en un dispositivo respectivo.
El JCT-VC esta trabajando en el desarrollo de la norma HEVC. Los esfuerzos de normalizacion de la HEVC se
5
10
15
20
25
30
35
40
45
50
55
60
65
basan en un modelo en evolucion de un dispositivo de codificacion de video denominado modelo de prueba de la HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificacion de video, con respecto a dispositivos existentes, segun, por ejemplo, la ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificacion de intra-prediccion, el HM puede proporcionar hasta treinta y tres modos de codificacion de intra-prediccion.
En general, el modelo de funcionamiento del HM describe que una trama o imagen de video puede dividirse en una secuencia de bloques arbolados, o unidades de codificacion mas grandes (LCU), que incluyen muestras tanto de luma como de croma. Los datos sintacticos de un flujo de bits pueden definir un tamano para la LCU, que es la mayor unidad de codificacion en lo que respecta al numero de pfxeles. Un fragmento incluye un cierto numero de bloques arbolados consecutivos en orden de codificacion. Una trama o imagen de video puede dividirse en uno o mas fragmentos. Cada bloque arbolado puede dividirse en unidades de codificacion (CU) segun un arbol cuadruple. En general, una estructura de datos de arbol cuadruple incluye un nodo por CU, donde un nodo rafz corresponde al bloque arbolado. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos de hoja, cada uno de los cuales corresponde a una de las sub-CU.
Cada nodo de la estructura de datos de arbol cuadruple puede proporcionar datos sintacticos para la CU correspondiente. Por ejemplo, un nodo en el arbol cuadruple puede incluir un indicador de division, que indica si la CU correspondiente al nodo esta dividida o no en varias sub-CU. Los elementos sintacticos de una CU pueden definirse de manera recursiva y pueden depender de si la CU esta dividida o no en varias sub-CU. Si una CU no esta dividida adicionalmente, se denomina Cu hoja. En esta divulgacion, cuatro sub-CU de una CU hoja tambien se denominaran CU hoja aunque no haya una division explfcita de la CU hoja original. Por ejemplo, si una CU con un tamano de 16x16 no se divide adicionalmente, las cuatro sub-CU de tamano 8x8 tambien se denominaran CU hojas aunque la CU de tamano 16x16 no se haya dividido nunca.
Una CU tiene un proposito similar a un macro-bloque de la norma H.264, excepto que una CU no tiene una distincion de tamano. Por ejemplo, un bloque arbolado puede dividirse en cuatro nodos secundarios (tambien denominados sub-CU), y cada nodo secundario puede a su vez ser un nodo principal y dividirse en otros cuatro nodos secundarios. Un nodo secundario final, no dividido, denominado nodo de hoja del arbol cuadruple, comprende un nodo de codificacion, tambien denominado como CU hoja. Los datos sintacticos asociados a un flujo de bits codificado pueden definir un numero maximo de veces que puede dividirse un bloque arbolado, denominado como profundidad de CU maxima, y tambien puede definir un tamano mfnimo de los nodos de codificacion. Por consiguiente, un flujo de bits tambien puede definir una minima unidad de codificacion (SCU). Esta divulgacion utiliza el termino "bloque" para referirse a CU, PU, o TU, en el contexto de HEVC, o a estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y sub-bloques de los mismos en H.264/AVC).
Una CU incluye un nodo de codificacion y unidades de prediccion (PU) y unidades de transformacion (TU) asociadas al nodo de codificacion. Un tamano de la CU corresponde a un tamano del nodo de codificacion, y debe ser de forma cuadrada. El tamano de la CU puede variar desde 8 x 8 pfxeles hasta el tamano del bloque arbolado, con un maximo de 64 x 64 pfxeles, o mas. Cada CU puede contener una o mas PU y una o mas TU. Los datos sintacticos asociados a una CU pueden describir, por ejemplo, la division de la CU en una o mas PU. Los modos de division pueden diferir entre si la CU esta codificada en modo de omision o directa, codificada en modo de intra-prediccion o codificada en modo de inter-prediccion. Las PU pueden dividirse para que no tengan forma cuadrada. Los datos sintacticos asociados a una CU tambien pueden describir, por ejemplo, la division de la CU en una o mas TU segun un arbol cuadruple. Una TU puede tener forma cuadrada o no cuadrada (por ejemplo, rectangular).
La norma HEVC admite transformaciones segun las TU, que pueden ser distintas para distintas CU. Las TU son habitualmente dimensionadas en base al tamano de las PU dentro de una CU dada, definida para una LCU dividida, aunque esto puede no ser siempre el caso. Las TU tienen habitualmente el mismo tamano, o un tamano mas pequeno, que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades mas pequenas usando una estructura de arbol cuadruple conocida como "arbol cuadruple residual" (RQT). Los nodos de hoja del RQT pueden denominarse unidades de transformacion (TU). Los valores de diferencias de pfxeles asociados a las TU pueden transformarse para producir coeficientes de transformacion, que pueden cuantificarse.
Una CU hoja puede incluir una o mas unidades de prediccion (PU). En general, una PU representa una zona espacial correspondiente la totalidad o una porcion de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Ademas, una PU incluye datos relacionados con la prediccion. Por ejemplo, cuando la PU esta codificada en intra-modo, pueden incluirse datos para la PU en un arbol cuadruple residual (RQT), que pueden incluir datos que describen un modo de intra-prediccion para una TU correspondiente a la PU. Como otro ejemplo, cuando la PU esta codificada en inter-modo, la PU puede incluir datos que definen uno o mas vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolucion para el vector de movimiento (por ejemplo, precision de pfxeles de un cuarto o precision de pfxeles de un octavo), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imagenes de referencia (por ejemplo, la Lista 0, la Lista 1 o la Lista C) para el vector de movimiento.
5
10
15
20
25
30
35
40
45
50
55
60
65
Una CU hoja que tiene una o mas PU tambien puede incluir una o mas unidades de transformacion (TU). Las unidades de transformacion pueden especificarse usando una RQT (tambien denominada estructura de arbol cuadruple de TU), como la descrita anteriormente. Por ejemplo, un indicador de division puede indicar si una CU hoja esta dividida en cuatro unidades de transformacion. A continuacion, cada unidad de transformacion puede dividirse adicionalmente en mas sub-TU. Cuando una TU no esta dividida adicionalmente, puede denominarse como TU hoja. Generalmente, en lo que respecta a la intra-codificacion, todas las TU hoja que pertenecen a una CU hoja comparten el mismo modo de intra-prediccion. Es decir, el mismo modo de intra-prediccion se aplica generalmente para calcular valores predichos para todas las TU de una CU hoja. En lo que respecta a la intra-codificacion, un codificador de video puede calcular un valor residual para cada TU hoja usando el modo de intra-prediccion, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no esta necesariamente limitada al tamano de una PU. De este modo, las TU pueden ser mayores o menores que una PU. En lo que respecta a la intra-codificacion, una PU puede estar coubicada con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamano maximo de una TU hoja puede corresponder con el tamano de la CU hoja correspondiente.
Ademas, las TU de las CU hoja tambien pueden asociarse a estructuras de datos de arbol cuadruple respectivas, denominadas como arboles cuadruples residuales (RQTs). Es decir, una CU hoja puede incluir un arbol cuadruple que indica como la CU hoja esta dividida en varias TU. El nodo raiz de un arbol cuadruple de TU corresponde generalmente a una CU hoja, mientras que el nodo raiz de un arbol cuadruple de CU corresponde generalmente a un bloque arbolado (o LCU). Las TU del RQT que no estan divididas se denominan TU hoja. En general, esta divulgacion usa los terminos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique lo contrario.
Una secuencia de video incluye normalmente una serie de tramas o imagenes de video. Un grupo de imagenes (GOP) comprende generalmente una serie de una o mas de las imagenes de video. Un GOP puede incluir datos sintacticos, en una cabecera del GOP, en una cabecera de una o mas de las imagenes, o en otras ubicaciones, que describen un cierto numero de imagenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintacticos de fragmento que describen un modo de codificacion para el fragmento respectivo. Un codificador de video 20 actua habitualmente sobre bloques de video dentro de los fragmentos de video individuales, con el fin de codificar los datos de video. Un bloque de video puede corresponder a un nodo de codificacion dentro de una CU. Los bloques de video pueden tener tamanos fijos o variables y pueden diferir en tamano, segun una norma de codificacion especificada.
Como ejemplo, el HM da soporte a la prediccion en diversos tamanos de PU. Suponiendo que el tamano de una CU especffica sea 2Nx2N, el HM presta soporte a la intra-prediccion en tamanos de PU de 2Nx2N o NxN, y a la intra- prediccion en tamanos de PU simetricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM tambien presta soporte a la division asimetrica para la inter-prediccion en tamanos de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la division asimetrica, una direccion de una CU no esta dividida, mientras que la otra direccion esta dividida entre el 25 % y el 75 %. La parte de la CU correspondiente a la particion del 25 % esta indicada por una “n” seguida por una indicacion de “Arriba”, “Abajo”, “Izquierda” o “Derecha”. Asf, por ejemplo, “2NxnU” se refiere a una CU de tamano 2Nx2N que esta dividida horizontalmente, con una PU de tamano 2Nx0,5N encima y una PU de tamano 2Nx1,5N debajo.
En esta divulgacion, "NxN" y "N por N" pueden usarse de manera intercambiable para hacer referencia a las dimensiones de pfxeles de un bloque video, en lo que respecta a dimensiones verticales y horizontales, por ejemplo, 16x16 pfxeles o 16 por 16 pfxeles. En general, un bloque de tamano 16 x 16 tendra 16 pfxeles en la direccion vertical (y = 16) y 16 pfxeles en la direccion horizontal (x = 16). Asimismo, un bloque de tamano NxN tiene generalmente N pfxeles en la direccion vertical y N pfxeles en la direccion horizontal, donde N representa un valor entero no negativo. Los pfxeles en un bloque pueden estar dispuestos en filas y columnas. Ademas, los bloques no necesitan tener necesariamente el mismo numero de pfxeles en la direccion horizontal y en la direccion vertical. Por ejemplo, los bloques pueden comprender N x M pfxeles, donde M no es necesariamente igual a N.
Tras la codificacion intra-predictiva o inter-predictiva, usando las PU de una CU, el codificador de video 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos sintacticos que describen un procedimiento o modo de generacion de datos de pfxeles predictivos en el dominio espacial (tambien denominado como el dominio de pfxeles) y las TU pueden comprender coeficientes en el dominio de transformacion, tras la aplicacion de una transformacion, por ejemplo, una transformacion de coseno discreta (DCT), una transformacion entera, una transformacion de ondfculas o una transformacion conceptualmente similar, a los datos de video residuales. Los datos residuales pueden corresponder a diferencias de pfxeles entre pfxeles de la imagen no codificada y valores de prediccion correspondientes a las PU. El codificador de video 20 puede formar las TU incluyendo los datos residuales para la CU, y luego transformar las TU para producir coeficientes de transformacion para la CU.
Tras cualquier transformacion para producir coeficientes de transformacion, el codificador de video 20 puede realizar la cuantificacion de los coeficientes de transformacion. La cuantificacion se refiere generalmente a un proceso en el que los coeficientes de transformacion se cuantifican para reducir posiblemente la cantidad de datos usados para
5
10
15
20
25
30
35
40
45
50
55
60
65
representar los coeficientes, proporcionando una compresion adicional. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos de, o todos, los coeficientes. Por ejemplo, un valor de n bits puede redondearse por lo bajo a un valor de m bits durante la cuantificacion, donde n es mayor que m.
Despues de la cuantificacion, el codificador de video puede explorar los coeficientes de transformacion, produciendo un vector unidimensional a partir de la matriz bidimensional, incluyendo los coeficientes de transformacion cuantificados. La exploracion puede estar disenada para colocar los coeficientes de mayor energia (y por lo tanto de frecuencia mas baja) en la parte delantera de la serie y colocar los coeficientes de menor energia (y por lo tanto de frecuencia mas alta) en la parte posterior de la serie. En algunos ejemplos, el codificador de video 20 puede utilizar un orden de exploracion predefinido para explorar los coeficientes de transformacion cuantificados, para producir un vector serializado que pueda ser codificado por entropfa. En otros ejemplos, el codificador de video 20 puede realizar una exploracion adaptativa. Despues de explorar los coeficientes de transformacion cuantificados, para formar un vector unidimensional, el codificador de video 20 puede codificar por entropfa el vector unidimensional, por ejemplo, segun la codificacion de longitud variable adaptable al contexto (CAVLC), la codificacion aritmetica binaria adaptable al contexto (CABAC), la codificacion aritmetica binaria adaptable al contexto y de base sintactica (SBAC), la codificacion por entropfa por division de intervalos de probabilidad (PIPE) u otra metodologfa de codificacion por entropfa. El codificador de video 20 tambien puede codificar por entropfa elementos sintacticos asociados a los datos de video codificados, para su uso por el descodificador de video 30, en la descodificacion de los datos de video.
Para realizar la CABAC, el codificador de video 20 puede asignar un contexto dentro de un modelo contextual a un sfmbolo a transmitir. El contexto puede referirse, por ejemplo, a si los valores adyacentes del sfmbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de video 20 puede seleccionar un codigo de longitud variable para un sfmbolo a transmitir. Las palabras de codigo en la VLC pueden ser construidas de modo que los codigos relativamente mas cortos correspondan a sfmbolos mas probables, mientras que los codigos mas largos correspondan a sfmbolos menos probables. De esta manera, el uso de VLC puede lograr un poco de ahorro con respecto, por ejemplo, a usar palabras de codigo de igual longitud para cada sfmbolo a transmitir. La determinacion de la probabilidad puede basarse en un contexto asignado al sfmbolo.
Segun las tecnicas de esta divulgacion, el codificador de video 20 puede codificar un valor que representa una posicion de un ultimo coeficiente significativo de un bloque de datos de video utilizando contextos determinados usando una o mas funciones de bins del valor. Del mismo modo, el descodificador de video 30 puede descodificar un valor que representa un ultimo coeficiente significativo en un bloque de datos de video utilizando contextos determinados usando una o mas funciones de bins del valor. El codificador de video 20 y/o el descodificador de video 30 pueden estar configurados para realizar cualquiera de las funciones (1 )-(12), que se describen en mayor detalle a continuacion, o funciones conceptualmente similares, para llevar a cabo las tecnicas de esta divulgacion. De esta manera, el codificador de video 20 y el descodificador de video 30 representan ejemplos de codificadores de video configurados para determinar un contexto para la codificacion por entropfa de un bin de un valor indicativo de un ultimo coeficiente significativo de un bloque de datos de video usando una funcion de un fndice del bin, y codificar el bin utilizando el contexto determinado.
A modo de ejemplo, "Ctx_i" puede denotar el fndice de contexto utilizado por el codificador de video 20 para codificar el i-esimo bin en la cadena binaria de "ultima posicion". El codificador de video 20 puede obtener Ctx_i utilizando la siguiente ecuacion:
Ctx_i = f(i).
La funcion denotada por f(i) puede ser lineal o no lineal. Ademas, f(i) puede ser una funcion predefinida que es accesible tanto para el codificador de video 20 como para el descodificador de video. 30. Como alternativa, f(i) puede ser seleccionado por un usuario o por el codificador de video 20, y transmitirse al descodificador de video 30 utilizando uno o mas tipos de senalizacion sintactica de alto nivel, como un conjunto de parametros de secuencia (SPS), un conjunto de parametros de imagen (PPS), un conjunto de parametros de adaptacion (APS), una cabecera de trama, una cabecera de seccion, una cabecera de secuencia, u otra senalizacion sintactica de este tipo. Un ejemplo de una de tales funciones que el codificador de video 20 puede ejecutar es:
f(i) = (i>>1), (1)
donde ">>" denota el operador de desplazamiento a la derecha binario. A su vez, el resultado de f(i) puede corresponder a Ctx_i. Es decir, el codificador de video 20 puede ejecutar f(i) para generar una salida igual al valor de Ctx_i. Mas especfficamente, el codificador de video 20 puede ejecutar f(i) para generar el fndice de contexto de un contexto a utilizar para codificar por entropfa el i-esimo bin.
La tabla 3 siguiente ilustra un ejemplo de los indices de contexto que puede utilizar el codificador de video 20 para codificar bins en diferentes indices de bin para varios tamanos de bloque (por ejemplo, TU) usando la funcion de ejemplo (1) descrita anteriormente. Aunque se proporciona la tabla 3 con el fin de explicar los resultados de la funcion de ejemplo (1), se apreciara que no es necesario que una tabla como la tabla 3 se almacene en un
5
10
15
20
25
30
35
40
45
50
dispositivo de codificacion de video, tal como el dispositivo de origen 12 y/o el dispositivo de destino 14. En su lugar, uno o ambos codificadores de video 20 y el descodificador de video 30 pueden ejecutar la funcion (1) anterior para producir los resultados indicados en la tabla 3, a partir de diversos indices de bin.
TABLA 3
- Indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 0 1
- TU 8x8
- 0 0 1 1 2
- TU 16x16
- 0 0 1 1 2 2 3
- TU 32x32
- 0 0 1 1 2 2 3 3 4
Como otro ejemplo, el codificador de video 20 puede ejecutar una funcion que depende tanto del indice de bin (i) como de un tamano de un bloque correspondiente (por ejemplo, una TU). El bloque correspondiente puede ser el bloque que incluye los coeficientes descritos por el valor del ultimo coeficiente significativo. Como un ejemplo, el indice de contexto puede ser producido por una funcion, tal como:
Ctx_i = f(i, TUBIkSize), donde “TUBIkSize” es un valor indicativo del tamano de bloque. Para los fines de esta divulgacion, los terminos "TUBlkSize" y "block_size" se pueden usar indistintamente para indicar el tamano de bloque.
Como un ejemplo, la funcion puede ser:
f(i, TUBlkSize) = i >> (log2(TUBlkSize) -2). (2)
La tabla 4 siguiente ilustra un ejemplo de los indices de contexto que podrfa utilizar el codificador de video 20 para codificar bins en diferentes indices de bin para varios tamanos de bloque (por ejemplo, TU) usando la funcion de ejemplo (2). Aunque la tabla 4 se proporciona con el fin de explicar los resultados de la funcion de ejemplo (2), se apreciara que no es necesario que una tabla como la tabla 4 se almacene en un dispositivo de codificacion de video, como el dispositivo de origen 12 y/o el dispositivo de destino 14. En su lugar, el codificador de video 20 y/o el descodificador de video 30 pueden ejecutar la funcion de ejemplo (2) descrita anteriormente para producir los resultados indicados en la tabla 4.
TABLA 4
- Indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 1 2
- TU 8x8
- 0 0 1 1 2
- TU 16x16
- 0 0 0 0 1 1 1
- TU 32x32
- 0 0 0 0 0 0 0 0 1
Como otro ejemplo, el codificador de video 20 puede ejecutar la siguiente funcion para obtener Ctx i: f(i, TUBlkSize) = i>> 1 + TUSIZEoffset, donde
TUSIZEoffset = (log2(TUBlkSize)-2) *(log2(TUBlkSize)+ 1 )/2. (3)
La tabla 5 siguiente ilustra un ejemplo de los indices de contexto que puede utilizar el codificador de video 20 para codificar bins en diferentes indices de bin para varios tamanos de bloque (por ejemplo, TU) usando la funcion de ejemplo (3). Aunque la tabla 5 se proporciona con el fin de explicar los resultados de la funcion de ejemplo (3), se apreciara que no es necesario que una tabla como la tabla 5 se almacene en el dispositivo de origen 12 y/o en el dispositivo de destino 14. En su lugar, el codificador de video 20 y/o el descodificador de video 30 pueden ejecutar la funcion de ejemplo (3) descrita anteriormente para producir los resultados indicados en la tabla 5.
5
10
15
20
25
30
35
40
45
TABLA 5
- Indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 0 1
- TU 8x8
- 2 2 3 3 4
- TU 16x16
- 5 5 6 6 7 7 8
- TU 32x32
- 9 9 10 10 11 11 12 12 13
Como otro ejemplo mas, el codificador de video 20 puede ejecutar la siguiente funcion para obtener Ctx_i:
Ctx_idx = (i+1)>> 1 + TUSIZEoffset, donde
TUSIZEoffset = (log2(TUBlkSize)-2) *(log2(TUBlkSize)+ 1)/2.
Aunque la tabla 6 se proporciona con el fin de explicar los resultados de la funcion, se apreciara que no es necesario que una tabla como la tabla 6 se almacene en un dispositivo de codificacion de video, tal como el dispositivo de origen 12 y/o el dispositivo de destino 14. En su lugar, el codificador de video 20 y/o el descodificador de video 30 pueden ejecutar la funcion de ejemplo (4) descrita anteriormente para producir los resultados indicados en la tabla 6.
TABLA 6
- Indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 1 1
- TU 8x8
- 2 3 3 4 4
- TU 16x16
- 5 6 6 7 7 8 8
- TU 32x32
- 9 10 10 11 11 12 12 13 13
- Como otro ejemplo, la funcion puede ser:
- Ctx_idx = desplazamiento + (i>>k),
- (5)
- donde:
- desplazamiento = 3*n +((n+1)>>2),
- (6)
- k = (n+3)>>2, y
- (7)
- n = (log2(TUBlkSize)-2).
- (8)
Alternativamente, la funcion de ejemplo (8) se puede expresar como: n = (log2(block_size)-2) para los fines de esta divulgacion.
La tabla 7 siguiente ilustra un ejemplo de los indices de contexto que puede utilizar el codificador de video 20 para codificar bins en diferentes indices de bin para varios tamanos de bloque (por ejemplo, TU) usando las funciones de ejemplo (5)-(8). Aunque la tabla 7 se proporciona con el fin de explicar los resultados de las funciones, se apreciara que no es necesario que una tabla como la tabla 7 se almacene en un dispositivo de codificacion de video, tal como el dispositivo de origen 12 y/o el dispositivo de destino 14. En su lugar, el codificador de video 20 y/o el descodificador de video 30 pueden ejecutar las funciones de ejemplo (5)-(8) anteriores para producir los resultados indicados en la tabla 7.
TABLA 7
- Indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 1 2
- TU 8x8
- 3 3 4 4 5
5
10
15
20
25
30
35
40
45
- TU 16x16
- 6 6 7 7 8 8 9
- TU 32x32
- 10 10 11 11 12 12 13 13 14
Las tablas 8 y 9 siguientes ilustran otro ejemplo en el que el codificador de video 20 y/o el descodificador de video 30 pueden aplicar una o mas tecnicas de obtencion de contexto basadas en formulas de esta divulgacion para la codificacion de bins en la "ultima posicion" para componentes luma y croma de una manera unificada. En particular, la tabla 8 muestra los indices de bin para TU luma de diversos tamanos, mientras que la tabla 9 proporciona indices de bin para TU croma de diversos tamanos.
TABLA 8-Luma
- Indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 1 2
- TU 8x8
- 3 3 4 4 5
- TU 16x16
- 6 6 7 7 8 8 9
- TU 32x32
- 10 10 11 11 12 12 13 13 14
TABLA 9-Croma
- Indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 1 2
- TU 8x8
- 0 0 1 1 2
- TU 16x16
- 0 0 1 1 2 2 3
Un ejemplo de una funcion que pueden utilizar el codificador de video 20 y/o el descodificador de video 30 para obtener contextos para la codificacion de bins en la ultima posicion de TU luma, segun la tabla 8, y de TU croma, segun la tabla 9, es:
Ctx_idx = desplazamiento + (i>>k), (9)
donde luma y croma comparten el mismo valor de k, k = (n+3)>>2 con n =
(log 2 (TUB1kSize)-2)
El codificador de video 20 y/o el descodificador de video 30 pueden determinar los valores de la variable "desplazamiento" de la funcion (9), en funcion de si la TU es una TU luma o una TU croma utilizando diferentes funciones. Ejemplos de tales funciones incluyen las siguientes:
Luma: desplazamiento = 3 *n +((n+ 1 )>>2) (10)
Croma: desplazamiento = 0 (11)
De esta manera, la funcion (9) representa un ejemplo de una funcion que pueden ejecutar el codificador de video 20 y/o el descodificador de video 30 para producir un indice de contexto. A su vez, el indice de contexto puede ser indicativo de un contexto para la codificacion de un bin de un valor indicativo de un ultimo coeficiente significativo de un bloque de datos de video en funcion de un indice del bin (i) y un valor indicativo de un tamano del bloque (k, que se calcula en funcion de n, que es log 2(TUBlkSize)-2). En este ejemplo, el codificador de video 20 y/o el descodificador de video 30 tambien pueden ejecutar la funcion ejemplo (9) para producir el indice de contexto basandose en un valor de desplazamiento que se determina en funcion de si el bloque es un bloque croma o un bloque luma, por ejemplo, como se muestra en las funciones (10) y (11).
Como otro ejemplo, el codificador de video 20 puede implementar una funcion de paso para obtener el indice contexto de contexto a utilizar para codificar por entropfa el /-esimo bin. Mas especfficamente, la funcion de paso puede representar una funcion que tiene dos o mas partes dependiendo de, por ejemplo, el valor del indice de bin i. Por lo tanto, el codificador de video 20 y/o el descodificador de video 30 pueden dividir los bins en el valor de la ultima posicion en diferentes subconjuntos, por ejemplo; subconjunto0, subconjunto1, etc.
5
10
15
20
25
30
35
40
45
50
55
Ademas, el codificador de video 20 y/o el descodificador de video 30 pueden aplicar diferentes funciones para diferentes subconjuntos, por ejemplo, F0() para subconjunto0, F1() para subconjunto1, y asf sucesivamente. Por ejemplo, una funcion de este tipo puede ser de la forma siguiente:
f i = last bin, 10 . .
, donde
[ else (;»!)- TUSIZEOffsct
TUSIZEoffset = (log2(TUBlkSize)-2) *(log2(TUBlkSize)-1)/2. (12)
En algunas implementaciones, los subconjuntos pueden estar definidos previamente, y la definicion de los subconjuntos puede ser accesible tanto para el codificador de video 20 como para el descodificador de video 30.
Alternativamente, el codificador de video 20 (o un usuario del dispositivo de origen 12) puede seleccionar los subconjuntos, y la interfaz de salida 22 puede transmitir los subconjuntos seleccionados al descodificador de video 30 del dispositivo de destino 14 utilizando una o mas tecnicas de senalizacion sintactica de alto nivel, tales como un SPS, un PPS, un APS, una cabecera de trama, una cabecera de fragmento, una cabecera de secuencia, u otra senalizacion sintactica de este tipo. La definicion de los subconjuntos tambien puede depender de diversos tipos de informacion diferentes, tales como el tamano de bloque (por ejemplo, el tamano de la TU), la profundidad del arbol cuadruple residual (RQT), la profundidad correspondiente al bloque, si el bloque corresponde a un componente de luminancia o un componente de crominancia, el tamano de trama para la trama que incluye el bloque (por ejemplo, en resolucion de pfxeles), el tamano de bloque de compensacion de movimiento para un bloque de compensacion de movimiento (por ejemplo, una unidad de prediccion (PU)) correspondiente al bloque, el tipo de trama (I/P/B) para la trama que incluye el bloque, la direccion de inter-prediccion para el bloque de compensacion de movimiento correspondiente, la amplitud del vector de movimiento para el bloque de compensacion de movimiento correspondiente, y/o la amplitud de una diferencia de vectores de movimiento para el vector de movimiento del bloque de compensacion de movimiento correspondiente.
La tabla 10 siguiente ilustra un ejemplo de los indices de contexto que puede utilizar el codificador de video 20 para codificar bins en diferentes indices de bin para varios tamanos de bloque (por ejemplo, TU) usando la funcion de ejemplo (12). Aunque la tabla 10 se proporciona con el fin de explicar los resultados de la funcion, se apreciara que no es necesario que una tabla tal como la tabla 10 este almacenada en un dispositivo de codificacion de video, tal como el dispositivo de origen 12 y/o el dispositivo de destino 14. En su lugar, el codificador de video 20 y/o el descodificador de video 30 pueden ejecutar la funcion de ejemplo (12) descrita anteriormente para producir los resultados indicados en la tabla 10.
TABLA 10
- Indice de bin
- 0 1 2 3 4 5 6 7 8 9
- TU 4x4
- 0 0 10
- TU 8x8
- 1 1 2 2 10
- TU 16x16
- 3 3 4 4 5 5 10
- TU 32x32
- 6 6 7 7 8 8 9 9 10
Las funciones de ejemplo (1) - (12) descritas anteriormente pueden depender, al menos en parte, de uno o mas elementos de informacion lateral. Como ejemplo, las funciones pueden aceptar la informacion lateral como argumentos. En otros ejemplos, el codificador de video 20 y/o el descodificador de video 30 pueden seleccionar diferentes funciones en base a la informacion lateral correspondiente.
La informacion lateral puede incluir cualquiera o todos los tamanos de bloque (por ejemplo, el tamano de la TU), la profundidad de arbol cuadruple residual (RQT), la profundidad correspondiente al bloque, si el bloque corresponde a un componente de luminancia o a un componente de crominancia, el tamano de trama para la trama que incluye el bloque (por ejemplo, en resolucion de pfxeles), el tamano de bloque de compensacion de movimiento para un bloque de compensacion de movimiento (por ejemplo, una unidad de prediccion (PU)) correspondiente al bloque, el tipo de trama (I/P/B) para la trama que incluye el bloque, la direccion de inter-prediccion para el bloque de compensacion de movimiento correspondiente, la amplitud del vector de movimiento para el bloque de compensacion de movimiento correspondiente, y/o una amplitud de la diferencia de vectores de movimiento para el vector de movimiento del bloque de compensacion de movimiento correspondiente. Como ejemplo, el codificador de video 20 y/o el descodificador de video 30 pueden seleccionar diferentes funciones para obtener contextos para aplicar al codificar los bins de un valor que indica una posicion del ultimo componente significativo de un bloque de luminancia, con respecto a un bloque de crominancia.
5
10
15
20
25
30
35
40
45
50
55
60
65
Ademas, el codificador de video 20 puede enviar datos sintacticos, tales como datos sintacticos basados en bloques, datos sintacticos basados en tramas y datos sintacticos basados en GOP, al descodificador de video 30, por ejemplo, en una cabecera de trama, una cabecera de bloque, una cabecera de fragmento o una cabecera de gOp. Los datos sintacticos de GOP pueden describir un cierto numero de tramas en el GOP respectivo, y los datos sintacticos de trama pueden indicar un modo de codificacion/prediccion usado para codificar la trama correspondiente.
El codificador de video 20 y el descodificador de video 30 pueden implementarse como cualquiera entre una amplia variedad de sistemas de circuitos codificadores o descodificadores adecuados, segun corresponda, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especfficos de la aplicacion (ASIC), matrices de puertas programables por campo (FPGA), circuito de logica discreta, software, hardware, firmware o cualquier combinacion de los mismos. Cada uno, entre el codificador de video 20 y el descodificador de video 30, puede estar incluido en uno o mas codificadores o descodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/descodificador (CODEC) de video combinado. Un dispositivo que incluye el codificador de video 20 y/o el descodificador de video 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicacion inalambrica, tal como un telefono celular.
De esta manera, el codificador de video 20 y el descodificador de video 30 representan ejemplos de un codificador de video configurado para determinar un contexto para la codificacion por entropfa de un bin de un valor indicativo de un ultimo coeficiente significativo de un bloque de datos de video usando una funcion de un indice del bin, y codificar el bin utilizando el contexto determinado.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video 20 que puede implementar tecnicas para la determinacion de un contexto a utilizar para codificar un valor que representa un ultimo coeficiente significativo de un bloque de datos de video. El codificador de video 20 puede realizar la intra-codificacion y la inter- codificacion de bloques de video dentro de fragmentos de video. La intra-codificacion se apoya en la prediccion espacial para reducir o eliminar la redundancia espacial en el video dentro de una trama o imagen de video dada. La inter-codificacion se apoya en la prediccion temporal para reducir o eliminar la redundancia temporal en el video dentro de tramas o imagenes adyacentes de una secuencia de video. El intra-modo (modo I) puede referirse a cualquiera de varios modos de codificacion de base espacial. Los inter-modos, tales como la prediccion unidireccional (modo P) o la bi-prediccion (modo B), pueden referirse a cualquiera de varios modos de codificacion de base temporal.
Como se muestra en la FIG. 2, el codificador de video 20 recibe un bloque de video actual dentro de una trama de video a codificar. En el ejemplo de la FIG. 2, el codificador de video 20 incluye una unidad de seleccion de modo 40, una memoria de tramas de referencia 64, un sumador 50, una unidad de procesamiento de transformacion 52, una unidad de cuantificacion 54 y una unidad de codificacion por entropfa 56. A su vez, la unidad de seleccion de modo 40 incluye una unidad de compensacion de movimiento 44, una unidad de estimacion de movimiento 42, una unidad de intra-prediccion 46 y una unidad de division 48. Para la reconstruccion de bloques de video, el codificador de video 20 incluye ademas una unidad de cuantificacion inversa 58, una unidad de transformacion inversa 60 y un sumador 62. Tambien puede incluirse un filtro de desbloqueo (no mostrado en la FIG. 2) para filtrar lfmites de bloque, para eliminar distorsiones de efecto pixelado del video reconstruido. Si se desea, el filtro de desbloqueo filtrarfa habitualmente la salida del sumador 62. Tambien pueden usarse filtros adicionales (en bucle o pos-bucle), ademas del filtro de desbloqueo. Estos filtros no se muestran por razones de brevedad pero, si se desea, pueden filtrar la salida del sumador 50 (tal como un filtro en bucle).
Durante el proceso de codificacion, el codificador de video 20 recibe una trama o un fragmento de video que va a codificarse. La trama o el fragmento puede estar dividido en multiples bloques de video. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 llevan a cabo la codificacion inter-predictiva del bloque de video recibido con respecto a uno o mas bloques en una o mas tramas de referencia, para proporcionar la prediccion temporal. La unidad de intra-prediccion 46, como alternativa, puede llevar a cabo la codificacion intra- predictiva del bloque de video recibido, con respecto a uno o mas bloques contiguos en la misma trama o fragmento que el bloque que va a codificarse, para proporcionar la prediccion espacial. El codificador de video 20 puede llevar a cabo multiples pasadas de codificacion, por ejemplo, para seleccionar un modo de codificacion adecuada para cada bloque de datos de video.
Ademas, la unidad de division 48 puede dividir bloques de datos de video en sub-bloques, en base a la evaluacion de los anteriores esquemas de division en las pasadas de codificacion anteriores. Por ejemplo, la unidad de division 48 puede dividir inicialmente una trama o un fragmento en LCU, y dividir cada una de las LCU en sub-CU, basandose en un analisis de distorsion de velocidad (por ejemplo, optimizacion de distorsion de velocidad). La unidad de seleccion de modo 40 puede producir ademas una estructura de datos de arbol cuadruple que indica la division de una LCU en varias sub-CU. Las CU de nodos de hojas del arbol cuadruple pueden incluir una o mas PU y una o mas TU.
La unidad de seleccion de modo 40 puede seleccionar uno de los modos de codificacion, intra o inter, por ejemplo,
5
10
15
20
25
30
35
40
45
50
55
60
65
en funcion de los resultados de error, y proporciona el bloque intra-codificado o inter-codificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para usarse como una trama de referencia. La unidad de seleccion de modo 40 proporciona ademas elementos sintacticos, tales como vectores de movimiento, indicadores de intra-modo, informacion de division y otra informacion sintactica de este tipo, a la unidad de codificacion por entropfa 56.
La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimacion de movimiento, realizada por la unidad de estimacion de movimiento 42, es el proceso de generacion de vectores de movimiento, que estiman el movimiento para los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video dentro de una trama o imagen actual de video, con respecto a un bloque predictivo dentro de una trama de referencia (u otra unidad codificada), con respecto al bloque actual que esta siendo codificado dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se revela como estrechamente coincidente con el bloque a codificar, en lo que respecta a la diferencia de pfxeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), una suma de diferencia de cuadrados (SSD) u otras metricas de diferencia. En algunos ejemplos, el codificador de video 20 puede calcular valores para posiciones fraccionarias de pfxeles de imagenes de referencia almacenadas en la memoria de tramas de referencia 64. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de pixel, posiciones de un octavo de pixel u otras posiciones fraccionarias de pixel de la imagen de referencia.
Por lo tanto, la unidad de estimacion de movimiento 42 puede realizar una busqueda de movimiento con respecto a las posiciones de pfxeles completos y a las posiciones de fracciones de pixel, y emitir un vector de movimiento con una precision de fracciones de pixel.
La unidad de estimacion de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video en un fragmento inter-codificado, comparando la posicion de la PU con la posicion de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse a partir de una primera lista de imagenes de referencia (Lista 0) o una segunda lista de imagenes de referencia (Lista 1), cada una de las cuales identifica una o mas imagenes de referencia almacenadas en la memoria de tramas de referencia 64. La unidad de estimacion de movimiento 42 envfa el vector de movimiento calculado a la unidad de codificacion por entropfa 56 y a la unidad de compensacion de movimiento 44.
La compensacion de movimiento, llevada a cabo por la unidad de compensacion de movimiento 44, puede implicar capturar o generar el bloque predictivo en base al vector de movimiento determinado por la unidad de estimacion de movimiento 42. De nuevo, la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden integrarse funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de video actual, la unidad de compensacion de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imagenes de referencia. El sumador 50 forma un bloque de video residual restando los valores de pixel del bloque predictivo a los valores de pixel del bloque de video actual que esta siendo codificado, generando valores de diferencia de pixel, como se expone posteriormente. En general, la unidad de estimacion de movimiento 42 lleva a cabo una estimacion de movimiento con respecto a las componentes de luminancia, y la unidad de compensacion de movimiento 44 usa vectores de movimiento calculados en funcion de las componentes de luminancia para las componentes de crominancia y las componentes de luminancia. La unidad de seleccion de modo 40 tambien puede generar elementos sintacticos asociados a los bloques de video y al fragmento de video para su uso por parte del descodificador de video 30 a la hora de descodificar los bloques de video del fragmento de video.
La unidad de intra-prediccion 46 puede intra-predecir un bloque actual, como alternativa a la inter-prediccion llevada a cabo por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de intra-prediccion 46 puede determinar un modo de intra-prediccion a usar para codificar un bloque actual. En algunos ejemplos, la unidad de intra-prediccion 46 puede codificar un bloque actual usando varios modos de intra-prediccion, por ejemplo, durante diferentes pasadas de codificacion, y la unidad de intra-prediccion 46 (o la unidad de seleccion de modo 40, en algunos ejemplos) puede seleccionar un modo adecuado de intra-prediccion para usar entre los modos probados.
Por ejemplo, la unidad de intra-prediccion 46 puede calcular valores de distorsion de velocidad usando un analisis de distorsion de velocidad para los diversos modos de intra-prediccion probados, y seleccionar el modo de intra- prediccion que tenga las mejores caracterfsticas de distorsion de velocidad entre los modos probados. El analisis de distorsion de velocidad determina generalmente una magnitud de distorsion (o errores) entre un bloque codificado y un bloque original, no codificado, que se codifico para generar el bloque codificado, asf como una velocidad binaria (es decir, el numero de bits) usada para generar el bloque codificado. La unidad de intra-prediccion 46 puede calcular relaciones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar que modo de intra-prediccion presenta el mejor valor de distorsion de velocidad para el bloque.
Despues de seleccionar un modo de intra-prediccion para un bloque, la unidad de intra-prediccion 46 puede proporcionar informacion, que indica el modo de intra-prediccion seleccionado para el bloque, a la unidad de
5
10
15
20
25
30
35
40
45
50
55
60
65
codificacion por entropfa 56. La unidad de codificacion por entropfa 56 puede codificar la informacion que indica el modo de intra-prediccion seleccionado. El codificador de video 20 puede incluir datos de configuracion en el flujo de bits transmitido, que pueden incluir una pluralidad de tablas de indices de modos de intra-prediccion y una pluralidad de tablas de indices de modos de intra-prediccion modificados (tambien denominadas tablas de correlacion de palabras de codigo), definiciones de contextos de codificacion para varios bloques e indicaciones del modo de intra- prediccion mas probable, una tabla de indices de modos de intra-prediccion y una tabla modificada de indices de modos de intra-prediccion, a usar en cada uno de los contextos.
El codificador de video 20 forma un bloque de video residual restando los datos de prediccion de la unidad de seleccion de modo 40 del bloque de video original que esta siendo codificado. El sumador 50 representa el componente o los componentes que realizan esta operacion de resta. La unidad de procesamiento de transformaciones 52 aplica una transformacion, tal como una transformacion discreta del coseno (DCT) o una transformacion conceptualmente similar, al bloque residual, generando un bloque de video que comprende valores residuales de coeficientes de transformacion. La unidad de procesamiento de transformaciones 52 puede llevar a cabo otras transformaciones que son conceptualmente similares a la DCT. Tambien podrfan usarse transformaciones de ondfculas, transformaciones de enteros, transformaciones de sub-bandas u otros tipos de transformaciones. En cualquier caso, la unidad de procesamiento de transformaciones 52 aplica la transformacion al bloque residual, generando un bloque de coeficientes de transformacion residuales. La transformacion puede convertir la informacion residual, desde un dominio de valores de pixel a un dominio de transformaciones, tal como un dominio de frecuencia. La unidad de procesamiento de transformaciones 52 puede enviar los coeficientes de transformacion resultantes a la unidad de cuantificacion 54. La unidad de cuantificacion 54 cuantifica los coeficientes de transformacion para reducir adicionalmente la velocidad de bits. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos de, o a todos, los coeficientes. El grado de cuantificacion puede modificarse ajustando un parametro de cuantificacion. En algunos ejemplos, la unidad de cuantificacion 54 puede realizar a continuacion una exploracion de la matriz, incluyendo los coeficientes de transformacion cuantificados. Como alternativa, la unidad de codificacion por entropfa 56 puede realizar la exploracion.
Tras la cuantificacion, la unidad de codificacion por entropfa 56 codifica por entropfa los coeficientes de transformacion cuantificados. Por ejemplo, la unidad de codificacion por entropfa 56 puede llevar a cabo la codificacion de longitud variable adaptable al contexto (CAVLC), la codificacion aritmetica binaria adaptable al contexto (CABAC), la codificacion aritmetica binaria adaptable al contexto y basada en sintaxis (SBAC), la codificacion por entropfa mediante la division en intervalos de probabilidades (PIPE) u otra tecnica de codificacion por entropfa. En el caso de la codificacion por entropfa basada en el contexto, el contexto puede basarse en bloques contiguos. Tras la codificacion por entropfa realizada por la unidad de codificacion por entropfa 56, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, el descodificador de video 30) o guardarse para su posterior transmision o recuperacion.
En particular, la unidad de codificacion por entropfa 56 puede recibir, de la unidad de cuantificacion 54, un conjunto de coeficientes de transformacion cuantificados asociados a una TU. A su vez, la unidad de codificacion por entropfa 56 puede explorar el conjunto de coeficientes de transformacion cuantificados, y determinar si cada coeficiente explorado incluye un coeficiente significativo, es decir, si el coeficiente tiene un valor de cero o distinto de cero. Un valor distinto de cero puede indicar que un determinado coeficiente de transformacion cuantificado es un coeficiente "significativo". En los casos en que la unidad de codificacion por entropfa 56 detecta un coeficiente significativo, la unidad de codificacion por entropfa 56 puede codificar datos representativos del valor particular asociado con el coeficiente (por ejemplo, uno, dos, etc.). Tales datos pueden incluir, por ejemplo, una indicacion del signo del coeficiente, si el valor absoluto del coeficiente es mayor que uno, y cuando el valor absoluto del coeficiente es mayor que uno, si el valor absoluto del coeficiente es mayor que dos. Ademas, en los casos en que un coeficiente significativo tiene un valor absoluto mayor que dos, la unidad de codificacion por entropfa 56 puede restar dos al valor absoluto del coeficiente, obteniendo de este modo un valor por el que el coeficiente es superior a dos, y codificar este valor.
Mediante la exploracion de todo el conjunto de coeficientes de transformacion cuantificados recibidos de la unidad de cuantificacion 54, la unidad de codificacion por entropfa 56 tambien puede detectar e identificar el ultimo coeficiente significativo asociado con una TU particular (es decir, en el orden de exploracion). Ademas, la unidad de codificacion por entropfa 56 puede determinar la posicion del ultimo coeficiente significativo en la TU correspondiente. Por ejemplo, la unidad de codificacion por entropfa 56 puede identificar las coordenadas horizontal y vertical (x- e y-) del ultimo coeficiente significativo dentro de la TU.
Por otra parte, la unidad de codificacion por entropfa 56 puede estar configurada para binarizar elementos sintacticos que todavfa no tienen un valor binario. Es decir, unidad de codificacion por entropfa 56 puede determinar una cadena binaria representativa del valor de un elemento sintactico cuando el elemento sintactico no esta ya representado por una secuencia binaria. Una cadena binaria, o valor binarizado, generalmente corresponde a una serie de bits, cada uno de los cuales puede tener un valor de "0" o "1". La matriz puede estar indexada a cero, de tal manera que el primer bit ordinal de la serie se produce en posicion 0, el segundo bit ordinal de la serie se produce en la posicion 1, y asf sucesivamente. Por lo tanto, la unidad de codificacion por entropfa 56 puede formar un valor binarizado B[N] que tiene una longitud de N bits, donde cada bit se produce en una respectiva posicion B[i], donde 0
5
10
15
20
25
30
35
40
45
50
55
60
65
< i< N-1.
A su vez, la unidad de codificacion por entropfa 56 puede codificar por entropfa los datos que representan las coordenadas x- e y- del ultimo coeficiente significativo. Por ejemplo, la unidad de codificacion por entropfa 56 puede estar configurada para codificar por entropfa los elementos sintacticos prefijo_x_de_ultimo_componente_significativo, prefijo_y_de_ultimo_componente_significativo,
sufijo_x_de_ultimo_componente_significativo y/o sufijo_y_de_ultimo_componente_significativo, que en conjunto, en HEVC, representan las coordenadas x- e y- del ultimo coeficiente significativo en orden de exploracion. La unidad de codificacion por entropfa 56 puede implementar una o mas tecnicas de esta divulgacion para codificar por entropfa datos que representan las coordenadas del ultimo coeficiente significativo utilizando una funcion, que se denota por f(i). Por ejemplo, la unidad de codificacion por entropfa 56 puede codificar por entropfa diversos elementos sintacticos, tales como los elementos sintacticos para los coeficientes de transformacion cuantificados recibidos de la unidad de cuantificacion 54 y/o los valores que representan un ultimo coeficiente significativo de una TU (por ejemplo, los elementos sintacticos descritos anteriormente), utilizando contextos determinados usando una o mas funciones de bins de un valor representativo del elemento sintactico correspondiente.
Por ejemplo, "Ctx_i" puede denotar el fndice de contexto utilizado por la unidad de codificacion por entropfa 56 para codificar el /-esimo bin en un valor binarizado que representa la posicion del ultimo coeficiente significativo, como se ha descrito anteriormente con respecto a las tablas 1-2 y 8-9. El contexto indexado por ctx_i generalmente indica un sfmbolo mas probable (por ejemplo, "1" o "0"), asf como la probabilidad del sfmbolo mas probable. La unidad de codificacion por entropfa 56 puede obtener el valor de Ctx_i usando la ecuacion Ctx_i = f(i), donde f(i) puede ser una funcion predefinida accesible a la unidad de codificacion por entropfa 56, o una funcion seleccionada por un usuario.
Ademas, la unidad de codificacion por entropfa 56 puede codificar datos representativos de f(i), de modo que el descodificador de video 30 puede descodificar los datos para la funcion f(i) y usar f(i) para obtener el valor de Ctx_i. De esta manera, la unidad de codificacion por entropfa 56 puede determinar el contexto para un bin particular de un elemento sintactico binarizado utilizando una funcion del fndice de bin, es decir, la posicion del bin en un valor binarizado (es decir, una cadena binaria) que representa el elemento sintactico.
En algunos ejemplos, la unidad de codificacion por entropfa 56 se configura para determinar los contextos para codificacion de bins de datos que representan la posicion del ultimo coeficiente significativo utilizando las formulas (5)-(8) descritas anteriormente. Es decir, la unidad de codificacion por entropfa 56 puede calcular f(i) de la forma siguiente: Ctx_idx = desplazamiento + (i>>k). Por otra parte, la unidad de codificacion por entropfa 56 puede obtener los valores del valor de desplazamiento y k utilizados en f(i) usando las siguientes ecuaciones:
desplazamiento == 3 *n +((n+ 1 )>>2), k = (n+ 3)>>2, y
n = (log2(block_size)-2).
En otras implementaciones, la unidad de codificacion por entropfa 56 puede utilizar una o mas funciones de ejemplo (1)-(4) y (9)-(12), ademas o como alternativa a las formulas (5)-(8), al determinar un contexto para la codificacion por entropfa de un bin de datos que representa la posicion del ultimo coeficiente significativo de una TU. De esta manera, el codificador de video 20 y los componentes del mismo, tales como la unidad de codificacion por entropfa 56, pueden implementar las tecnicas de esta divulgacion para codificar datos representativos del ultimo coeficiente significativo usando una o mas funciones. Dichas funciones se pueden almacenar de manera mas eficiente en la memoria del codificador de video 20 y el descodificador de video 30 que en tablas. Por lo tanto, las tecnicas de esta divulgacion pueden proporcionar codificadores y descodificadores de video de video que utilizan la memoria mas eficientemente, por ejemplo, mediante la asignacion de memoria que de otro modo se dedicarfa a una tabla para otros datos, o mediante la reduccion de la cantidad necesaria de memoria para un codificador de video o un descodificador de video.
La unidad de cuantificacion inversa 58 y la unidad de transformacion inversa 60 aplican la cuantificacion inversa y la transformacion inversa, respectivamente, para reconstruir el bloque residual en el dominio de pfxeles, por ejemplo, para su uso posterior como un bloque de referencia. La unidad de compensacion de movimiento 44 puede calcular un bloque de referencia anadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria de tramas de referencia 64. La unidad de compensacion de movimiento 44 tambien puede aplicar uno o mas filtros de interpolacion al bloque residual reconstruido, para calcular valores de fracciones de pixel para su uso en la estimacion de movimiento. El sumador 62 anade el bloque residual reconstruido al bloque de prediccion compensado por movimiento, generado por la unidad de compensacion de movimiento 44 para generar un bloque de video reconstruido para su almacenamiento en la memoria de tramas de referencia 64. El bloque de video reconstruido puede ser usado por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 como un bloque de referencia para inter-codificar un bloque en una trama de video posterior.
De esta manera, el codificador de video 20 de la FIG. 2 representa un ejemplo de un codificador de video
5
10
15
20
25
30
35
40
45
50
55
60
65
configurado para determinar un contexto para la codificacion por entropfa un bin de un valor indicativo de un ultimo coeficiente significativo de un bloque de datos de video usando una funcion de un indice del bin, y codificar el bin usando el contexto determinado. Por otra parte, el codificador de video 20 tambien representa un ejemplo de un codificador de video en el que la funcion produce un indice de contexto para el contexto desplazando a la derecha el indice del bin un valor k y anadiendo el valor desplazado a la derecha a un valor de desplazamiento, en donde el valor de desplazamiento se determina segun la formula desplazamiento = 3*n +((n+ 1)>>2), donde el valor k se determina segun la formula k = (n + 3)>>2, y donde el valor n se determina segun la formula n = (log2(block_size) - 2).
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de un descodificador de video 30 que puede implementar tecnicas para la determinacion de un contexto a utilizar para codificar un valor que representa un ultimo coeficiente significativo en un bloque de datos de video. En el ejemplo de la FIG. 3, el descodificador de video 30 incluye una unidad de descodificacion por entropfa 70, una unidad de compensacion de movimiento 72, una unidad de intra-prediccion 74, una unidad de cuantificacion inversa 76, una unidad de transformacion inversa 78, una memoria de tramas de referencia 82 y un sumador 80. En algunos ejemplos, el descodificador de video 30 puede llevar a cabo una pasada de descodificacion generalmente recfproca a la pasada de codificacion descrita con respecto al codificador de video 20 (FIG. 2). La unidad de compensacion de movimiento 72 puede generar datos de prediccion basados en vectores de movimiento recibidos desde la unidad de descodificacion por entropfa 70, mientras que la unidad de intra-prediccion 74 puede generar datos de prediccion basados en indicadores de modo de intra-prediccion recibidos desde la unidad de descodificacion por entropfa 70.
Durante el proceso de descodificacion, el descodificador de video 30 recibe un flujo de bits de video codificado que representa bloques de video de un fragmento de video codificado y elementos sintacticos asociados, desde el codificador de video 20. La unidad de descodificacion por entropfa 70 del descodificador de video 30 descodifica por entropfa el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intra-prediccion, y otros elementos sintacticos. La unidad de descodificacion por entropfa 70 envfa los vectores de movimiento y otros elementos sintacticos a la unidad de compensacion de movimiento 72. El descodificador de video 30 puede recibir los elementos sintacticos al nivel del fragmento de video y/o al nivel del bloque de video.
La unidad de descodificacion por entropfa 70 puede generar un bloque (por ejemplo, una TU) de coeficientes cuantificados mediante la descodificacion por entropfa del flujo de bits de video codificado, y llenar los coeficientes cuantificados descodificados por entropfa en el bloque en orden de exploracion. Por ejemplo, la unidad de descodificacion por entropfa 70 puede descodificar por entropfa elementos sintacticos del flujo de bits de video codificado para determinar las ubicaciones de los coeficientes significativos en el bloque a generar. Si una ubicacion del bloque corresponde a un coeficiente que no es un coeficiente significativo, la unidad de descodificacion por entropfa 70 puede establecer el valor del coeficiente en esa ubicacion en el bloque a cero. Por otro lado, si la unidad de descodificacion por entropfa determina que un coeficiente cuantificado en particular es un coeficiente significativo, la unidad de descodificacion por entropfa 70 puede establecer el valor del coeficiente significativo en base a los datos proporcionados en el flujo de bits de video codificado por el codificador de video 20.
Ademas, como se explica a continuacion, la unidad de descodificacion por entropfa 70 puede determinar la posicion de un ultimo coeficiente significativo en el bloque en base a los elementos sintacticos que indican las coordenadas x- e y- del ultimo coeficiente significativo. Segun las tecnicas de esta divulgacion, como se explica en mayor detalle a continuacion, la unidad de descodificacion por entropfa 70 puede utilizar una funcion para determinar el contexto para la descodificacion por entropfa de bins de valores que representan las coordenadas x- e y- del ultimo coeficiente significativo. El descodificador de video 30 puede utilizar la indicacion de la posicion del ultimo coeficiente significativo para determinar cuando los datos del flujo de bits representan elementos sintacticos posteriores, es decir, elementos sintacticos que no representan datos del bloque que se esta regenerado.
La unidad de descodificacion por entropfa 70 puede determinar, en base a los datos proporcionados en el flujo de bits de video codificado, un signo para cada coeficiente significativo, y los datos que representan el valor del nivel de cada coeficiente significativo. Por ejemplo, la unidad de descodificacion por entropfa 70 puede determinar un signo para un coeficiente significativo a traves de descodificacion por entropfa de un elemento sintactico que representa el signo, por ejemplo, indicador_signo_coeficiente. Ademas, la unidad de descodificacion por entropfa 70 puede descodificar uno o mas elementos sintacticos representativos del valor del nivel de cada coeficiente significativo, por ejemplo, indicador_nivel_absoluto_coeficiente_mayor1, indicador_nivel_absoluto_coeficiente_mayor2 y resto_nivel_absoluto_coeficiente. En general, el indicador indicador_nivel_absoluto_coeficiente_mayor1 indica si el valor absoluto de un coeficiente significativo es mayor que 1, indicador_nivel_absoluto_coeficiente_mayor2_flag indica si el valor absoluto de un coeficiente significativo es mayor que 2, y resto_nivel_absoluto_coeficiente indica el valor absoluto de un coeficiente significativo menos 2.
La unidad de descodificacion por entropfa 70 tambien puede determinar la posicion del ultimo coeficiente significativo del bloque (por ejemplo, la TU) que se esta regenerando. Mas especfficamente, la unidad de descodificacion por entropfa 70 puede identificar la posicion (por ejemplo, en base a los elementos sintacticos codificados representativos de las coordenadas x- e y-) del ultimo coeficiente significativo dentro de la TU asociada con el flujo de bits de video codificado. En base a la identificacion de la posicion del ultimo coeficiente significativo, la
5
10
15
20
25
30
35
40
45
50
55
60
65
unidad de descodificacion por entropfa 70 puede establecer los valores de los coeficientes restantes en la TU en orden de exploracion a cero. Es decir, no es necesario que el descodificador de video 30 reciba ningun elemento sintactico para los coeficientes mas alla del ultimo coeficiente significativo y, ademas, puede inferir valores de 0 para estos coeficientes. Ademas, la unidad de descodificacion por entropfa 70 puede implementar una o mas tecnicas de esta divulgacion para descodificar los bins de un valor binarizado que representan las coordenadas x- e y- de la posicion del ultimo coeficiente significativo utilizando una funcion, generalmente denotada por f(i), donde i corresponde a la posicion del bin en el valor binarizado. En algunos ejemplos, la unidad de descodificacion por entropfa 70 puede descodificar datos codificados utilizando un contexto determinado para reproducir un valor para el bin, por ejemplo, "0" o "1" Aunque se describe como que corresponde a la posicion del ultimo coeficiente significativo, las tecnicas de esta divulgacion tambien se pueden aplicar a la descodificacion por entropfa de otros elementos sintacticos. Por ejemplo, la unidad de descodificacion por entropfa 70 puede descodificar por entropfa varios elementos sintacticos, tales como elementos sintacticos para los coeficientes cuantificados enviados a la unidad de compensacion de movimiento 72 y/o la unidad de intra-prediccion 74, los elementos sintacticos representativos de los coeficientes de transformacion cuantificados, y/o los valores que representan un ultimo coeficiente significativo de la TU asociada con el flujo de bits de video codificado, usando contextos determinados usando una o mas funciones de los indices de bin de un valor representativo del elemento sintactico correspondiente.
Por ejemplo, "Ctx_i" puede denotar el fndice de contexto utilizado por la unidad de descodificacion por entropfa 70 para descodificar el i-esimo bin en un valor binarizado que representa la posicion del ultimo coeficiente significativo, como se ha descrito anteriormente con respecto a las tablas 1-2 y 8-9. En este ejemplo, la unidad de descodificacion por entropfa 70 puede obtener el valor de Ctx_i usando la ecuacion Ctx_i = f(i), donde f(i) puede ser una funcion predefinida accesible a la unidad de descodificacion por entropfa 70 (por ejemplo, comunicada mediante el dispositivo de origen 12), o una funcion seleccionada por un usuario. Ademas, la unidad de descodificacion por entropfa 70 puede descodificar datos representativos de f(i), con el fin de utilizar los datos representativos de f(i) para obtener el valor de Ctx_i.
En algunos ejemplos, la unidad de descodificacion por entropfa 70 esta configurada para determinar contextos para la descodificacion de bins de datos que representan la posicion del ultimo coeficiente sigificativo utilizando las formulas (5)-(8) descritas anteriormente. Es decir, la unidad de descodificacion por entropfa 70 puede calcular f(i) de la forma siguiente: Ctx_idx = desplazamiento + (i>>k). Por otra parte, la unidad de descodificacion por entropfa 70 puede obtener los valores del valor de desplazamiento y k utilizado en f(i) usando las siguientes ecuaciones:
desplazamiento = 3 *n +((n+ 1 )>>2), k = (n+ 3)>>2,
y
n = (log2(block_size)-2).
En otras implementaciones, la unidad de descodificacion por entropfa 70 puede establecer f(i) a una o mas ecuaciones de ejemplo (1)-(4) y (9)-(12) en la descodificacion del ultimo coeficiente significativo de una TU representada por el flujo de bits de video codificado. De esta manera, el descodificador de video 30 y los componentes del mismo, tales como unidad de descodificacion por entropfa 70, pueden implementar las tecnicas de esta divulgacion para descodificar el ultimo coeficiente significativo usando una o mas funciones. Dichas funciones se pueden almacenar de manera mas eficiente en la memoria del codificador de video 20 y el descodificador de video 30 que en tablas. Por lo tanto, las tecnicas de esta divulgacion pueden proporcionar codificadores de video y descodificadores de video que utilizan la memoria mas eficientemente, por ejemplo, mediante la asignacion de memoria que de otro modo se dedicarfa a una tabla para otros datos, o mediante la reduccion de la cantidad necesaria de memoria para un codificador de video o un descodificador de video:
Cuando el fragmento de video se codifica como un fragmento intra-codificado (1), la unidad de intra-prediccion 74 puede generar datos de prediccion para un bloque de video del fragmento de video actual, en base a un modo de intra-prediccion senalizada, y datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de video se codifica como un fragmento inter-codificado (es decir, B, P o GPB), la unidad de compensacion de movimiento 72 genera bloques predictivos para un bloque de video del fragmento de video actual, en base a los vectores de movimiento y a otros elementos sintacticos recibidos desde la unidad de descodificacion por entropfa 70. Los bloques predictivos pueden ser generados a partir de una de las imagenes de referencia dentro de una de las listas de imagenes de referencia. El descodificador de video 30 puede construir las listas de tramas de referencia, la lista 0 y la lista 1, usando tecnicas de construccion por omision, en base a las imagenes de referencia almacenadas en la memoria de tramas de referencia 82.
La unidad de compensacion de movimiento 72 determina la informacion de prediccion para un bloque de video del fragmento de video actual, analizando los vectores de movimiento y otros elementos sintacticos, y usa la informacion de prediccion para generar los bloques predictivos para el bloque de video actual que esta siendo descodificado. Por
5
10
15
20
25
30
35
40
45
50
55
60
65
ejemplo, la unidad de compensacion de movimiento 72 usa algunos de los elementos sintacticos recibidos para determinar un modo de prediccion (por ejemplo, intra-prediccion o inter-prediccion), usada para codificar los bloques de video del fragmento de video, un tipo de fragmento de inter-prediccion (por ejemplo, fragmento B, fragmento P o fragmento GPB), informacion de construccion para una o mas de las listas de imagenes de referencia del fragmento, vectores de movimiento para cada bloque de video inter-codificado del fragmento, el estado de inter-prediccion para cada bloque de video inter-codificado del fragmento y otra informacion, para descodificar los bloques de video en el fragmento de video actual.
La unidad de compensacion de movimiento 72 tambien puede realizar la interpolacion en base a filtros de interpolacion. La unidad de compensacion de movimiento 72 puede usar filtros de interpolacion como los usados por el codificador de video 20 durante la codificacion de los bloques de video, para calcular valores interpolados para fracciones de pfxeles de bloques de referencia. En este caso, la unidad de compensacion de movimiento 72 puede determinar los filtros de interpolacion usados por el codificador de video 20 a partir de los elementos sintacticos recibidos y usar los filtros de interpolacion para generar bloques predictivos.
La unidad de cuantificacion inversa 76 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformacion cuantificados, proporcionados en el flujo de bits y descodificados por la unidad de descodificacion por entropfa 70. El proceso de cuantificacion inversa puede incluir el uso de un parametro de cuantificacion QPy, calculado por el descodificador de video 30 para cada bloque de video en el fragmento de video, para determinar un grado de cuantificacion y, asimismo, un grado de cuantificacion inversa que deberfa aplicarse.
La unidad de transformacion inversa 78 aplica una transformacion inversa, por ejemplo una DCT inversa, una transformacion inversa entera o un proceso de transformacion inversa conceptualmente similar, a los coeficientes de transformacion con el fin de generar bloques residuales en el dominio de pfxeles.
Despues de que la unidad de compensacion de movimiento 72 genera el bloque predictivo para el bloque de video actual, en base a los vectores de movimiento y a otros elementos sintacticos, el descodificador de video 30 forma un bloque de video descodificado sumando los bloques residuales procedentes de la unidad de transformacion inversa 78 a los correspondientes bloques predictivos generados por la unidad de compensacion de movimiento 72.
El sumador 80 representa el componente o los componentes que llevan a cabo esta operacion de suma. Si se desea, tambien puede aplicarse un filtro de desbloqueo para filtrar los bloques descodificados, con el fin de eliminar distorsiones de efecto pixelado. Otros filtros de bucle (ya sea en el bucle de codificacion o despues del bucle de codificacion) tambien pueden ser usados para allanar las transiciones de pfxeles, o mejorar de otro modo la calidad del video. Los bloques de video descodificados en una trama o imagen dada son a continuacion almacenados en la memoria de imagenes de referencia 82, que almacena imagenes de referencia usadas para la posterior compensacion de movimiento. La memoria de tramas de referencia 82 almacena tambien video descodificado para su presentacion posterior en un dispositivo de visualizacion, tal como el dispositivo de visualizacion 32 de la FIG. 1.
De esta manera, el descodificador de video 30 de la FIG. 3 representa un ejemplo de un descodificador de video configurado para determinar un contexto para la codificacion por entropfa un bin de un valor indicativo de un ultimo coeficiente significativo en un bloque de datos de video usando una funcion de un fndice del bin, y codificar el bin usando el contexto determinado. Ademas, el descodificador de video 30 tambien representa un ejemplo de un descodificador de video en la que la funcion produce un fndice de contexto para el contexto, desplazando a la derecha el fndice del bin un valor k y anadiendo el valor desplazado a la derecha a un valor de desplazamiento, en el que el valor de desplazamiento se determina segun la formula desplazamiento = 3*n +((n+1 )>>2), en el que el valor k se determina segun la formula k = (n+3)>>2, y en el que el valor n se determina segun la formula n = (log2(block_size)-2).
La FIG. 4 es un diagrama de flujo que ilustra un procedimiento de ejemplo para la codificacion de un bloque actual. El bloque actual puede comprender una CU actual o una parte de la CU actual. Aunque se describe con respecto al codificador de video 20 (FIG. 1 y 2), se debe entender que otros dispositivos pueden configurarse para llevar a cabo un procedimiento similar al de la FIG. 4. Ademas, aunque el procedimiento de ejemplo de la FIG. 4 describe especfficamente la codificacion de los elementos sintacticos en relacion con la posicion del ultimo coeficiente significativo de un bloque de video utilizando estas tecnicas, se debe entender que estas tecnicas tambien pueden aplicarse a la codificacion de otros elementos sintacticos.
En este ejemplo, el codificador de video 20 inicialmente predice el bloque actual (150). Por ejemplo, el codificador de video 20 puede calcular una o mas unidades de prediccion (PU) para el bloque actual. A continuacion, el codificador de video 20 puede calcular un bloque residual para el bloque actual, por ejemplo, para producir una unidad de transformacion (TU) (152). Para calcular el bloque residual, el codificador de video 20 puede calcular una diferencia entre el bloque no codificado original y el bloque predicho para el bloque actual. A continuacion, el codificador de video 20 puede transformar y cuantificar los coeficientes del bloque residual (154). A continuacion, el codificador de video 20 puede explorar los coeficientes de transformacion cuantificados del bloque residual (156). Durante la exploracion, o despues de la exploracion, el codificador de video 20 puede codificar por entropfa los coeficientes (158). Por ejemplo, el codificador de video 20 puede codificar los coeficientes utilizando CAVLC o CABAC.
5
10
15
20
25
30
35
40
45
50
55
60
65
El codificador de video 20 tambien puede determinar un valor para una posicion de un ultimo coeficiente significativo en la TU (160). El valor puede comprender, por ejemplo, un valor binarizado representativo de la posicion del ultimo coeficiente significativo, por ejemplo, como el descrito con respecto a la tabla 1 anterior. Un numero maximo de bins del valor puede codificarse usando CABAC, mientras que otros bins que excedan el numero maximo pueden codificarse por derivacion, de nuevo como se ha descrito con respecto a la tabla 1. En particular, segun las tecnicas de esta divulgacion, el codificador de video 20 puede determinar contextos para bins del valor utilizando una funcion (162). Como se explico anteriormente, los contextos pueden describir probabilidades de que los bins tengan un valor particular, por ejemplo, "0" o "1" La funcion puede corresponder a una de las funciones (1 )-(12) descritas anteriormente, o a una funcion conceptualmente similar.
Con respecto a los ejemplos de funciones (5)-(8), el codificador de video 20 puede determinar un contexto, ctx_idx, para un bin en la posicion i de un valor binarizado representativo de una posicion de un ultimo coeficiente significativo, utilizando la formula desplazamiento + (i>>k), donde desplazamiento = 3*n +((n+ 1 )>>2), k = (n+3)>>2 y n = (log1(block_size)-2). Es decir, el codificador de video 20 puede iterar a traves de cada bin que debe codificarse por entropfa y ejecutar las funciones mostradas anteriormente para determinar un contexto para la codificacion de un bin de la iteracion actual. A continuacion, el codificador de video 20 puede codificar los bins del valor (por ejemplo, los bins que no superen el numero maximo de bins), utilizando los contextos determinados (164). Asimismo, el codificador de video 20 puede codificar por derivacion cualquier bin restante del valor (166).
De esta manera, el procedimiento de la FIG. 4 representa un ejemplo de un procedimiento que incluye la determinacion de un contexto para la codificacion por entropfa un bin de un valor indicativo de un ultimo coeficiente significativo de un bloque de datos de video usando una funcion de un fndice del bin, y la codificacion del bin utilizando el contexto determinado. Por otra parte, la funcion puede producir un fndice de contexto para el contexto, desplazando a la derecha el fndice del bin un valor k y anadiendo el valor desplazado a la derecha a un valor de desplazamiento, en el que el valor de desplazamiento se determina segun la formula desplazamiento = 3*n +((n+ 1)>>2), en el que el valor k se determina segun la formula k = (n+3)>> 2, y en el que el valor de n se determina segun la formula n = (log2(block_size) -2).
La FIG. 5 es un diagrama de flujo que ilustra un procedimiento de ejemplo para descodificar un bloque actual de datos de video. El bloque actual puede comprender una CU actual o una parte de la CU actual. Aunque se describe con respecto al descodificador de video 30 (FIG. 1 y 3), se debe entender que otros dispositivos pueden configurarse para llevar a cabo un procedimiento similar al de la FIG. 5. Ademas, aunque el procedimiento de ejemplo de la FIG. 4 describe especfficamente la codificacion de los elementos sintacticos en relacion con la posicion del ultimo coeficiente significativo de un bloque de video utilizando estas tecnicas, se debe entender que estas tecnicas tambien pueden aplicarse a la codificacion de otros elementos sintacticos.
El descodificador de video 30 puede predecir el bloque actual (200), por ejemplo, usando un modo de intra- prediccion o inter-prediccion para calcular un bloque predicho para el bloque actual. El descodificador de video 30 tambien puede recibir datos codificados por entropfa para el bloque actual, tales como los datos codificados por entropfa para los coeficientes de un bloque residual correspondiente al bloque actual (202). El descodificador de video 30 puede descodificar por entropfa los datos codificados por entropfa para reproducir los coeficientes del bloque residual (204).
Segun las tecnicas de esta divulgacion, el descodificador de video 30 puede recibir un valor codificado indicativo de una posicion de un ultimo coeficiente significativo en la TU (206). Un numero maximo de bins del valor puede descodificarse usando CABAC, mientras que otros bins que excedan el numero maximo de derivacion pueden descodificarse por derivacion, como se ha descrito con respecto a la tabla 1. En particular, segun las tecnicas de esta divulgacion, el descodificador de video 30 puede determinar contextos para bins del valor utilizando una funcion (208). Como se explico anteriormente, los contextos pueden describir probabilidades de que los bins tengan un valor particular, por ejemplo, "0" o "1" La funcion puede corresponder a una de las funciones (1)-(12) descritas anteriormente, o a una funcion conceptualmente similar.
Con respecto a los ejemplos de funciones (5)-(8), el descodificador de video 30 puede determinar un contexto, ctx_idx, para un bin en la posicion i de un valor binarizado que se esta descodificando, donde el valor binarizado es representativo de una posicion de un ultimo coeficiente significativo, utilizando la formula desplazamiento + (i>>k), donde desplazamiento = 3*n +((n+ 1)>>2), k = (n+3)>>2, y n = (log2(block_size)-2). Es decir, el descodificador de video 30 puede descodificar iterativamente cada bin a descodificar por entropfa y ejecutar las funciones mostradas anteriormente para determinar un contexto para la codificacion de un bin de la iteracion actual. A continuacion, el descodificador de video 30 puede descodificar los bins del valor (por ejemplo, los bins que no superen el numero maximo de bins), utilizando los contextos determinados (210). Por ejemplo, el descodificador de video 30 puede descodificar los datos codificados recibidos del codificador de video 20 utilizando los contextos determinados para reproducir o de otro modo obtener los bins del valor. Del mismo modo, el descodificador de video 30 puede descodificar por derivacion cualquier bin restante del valor (212).
A continuacion, el descodificador de video 30 puede explorar inversamente los coeficientes reproducidos en base a
5
10
15
20
25
30
35
40
45
50
55
60
65
la posicion del ultimo coeficiente significativo (214), para crear un bloque de coeficientes de transformacion cuantificados. Es decir, el descodificador de video 30 puede colocar los coeficientes descodificados en la TU, comenzando en la posicion del ultimo coeficiente significativo, y proceder en un orden de exploracion que en general corresponde al orden de exploracion utilizado por el codificador. A continuacion, el descodificador de video 30 puede cuantificar inversamente y transformar inversamente los coeficientes para producir un bloque residual (216). El descodificador de video 30 puede en ultima instancia descodificar el bloque actual combinando el bloque predicho y el bloque residual (218).
De esta manera, el procedimiento de la FIG. 5 representa un ejemplo de un procedimiento que incluye la determinacion de un contexto para la codificacion por entropfa un bin de un valor indicativo de un ultimo coeficiente significativo de un bloque de datos de video usando una funcion de un mdice del bin, y la codificacion del bin utilizando el contexto determinado. Por otra parte, la funcion puede producir un mdice de contexto para el contexto, desplazando a la derecha el mdice del bin un valor k y anadiendo el valor desplazado a la derecha a un valor de desplazamiento, en el que el valor de desplazamiento se determina segun la formula desplazamiento = 3*n +((n+ 1)>>2), en donde el valor de k se determina segun la formula k = (n+3)>> 2, y en donde el valor de n se determina segun la formula n = (log2(block_size) -2).
Ha de reconocerse que, segun el ejemplo, ciertos actos o sucesos de cualquiera de las tecnicas descritas en el presente documento pueden realizarse en una secuencia distinta, pueden anadirse, fundirse u omitirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en practica de las tecnicas). Ademas, en ciertos ejemplos, los actos o sucesos pueden realizarse simultaneamente, por ejemplo, mediante el procesamiento de multiples hebras, el procesamiento de interrupciones o multiples procesadores, en lugar de secuencialmente.
En uno o mas ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinacion de los mismos. Si se implementan en software, las funciones pueden almacenarse en, o transmitirse como una o mas instrucciones o codigo en un medio legible por ordenador, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como medios de almacenamiento de datos o medios de comunicacion que incluyen cualquier medio que facilite la transferencia de un programa informatico desde un lugar a otro, por ejemplo, segun un protocolo de comunicacion. De esta manera, los medios legibles por ordenador pueden corresponder, generalmente, a (1) medios de almacenamiento tangibles y legibles por ordenador, que sean no transitorios, o (2) un medio de comunicacion tal como una senal o una onda portadora. Los medios de almacenamiento de datos pueden ser medios disponibles cualesquiera, a los que se pueda acceder desde uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para la implementacion de las tecnicas descritas en esta divulgacion. Un producto de programa informatico puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de manera limitativa, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico u otros dispositivos de almacenamiento magnetico, memoria flash o cualquier otro medio que pueda usarse para almacenar codigo de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Ademas, cualquier conexion puede denominarse debidamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra optica, un par trenzado, una lmea de abonado digital (DSL) o tecnologfas inalambricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologfas inalambricas tales como infrarrojos, radio y microondas se incluyen en la definicion de medio. Sin embargo, debe comprenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, senales u otros medios transitorios, pero en lugar de eso estan dirigidos a medios de almacenamiento tangibles no transitorios. Los discos, como se usan en el presente documento, incluyen el disco compacto (CD), el disco de laser, el disco optico, el disco versatil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos normalmente reproducen datos de manera magnetica, mientras que otros discos reproducen los datos de manera optica con laser. Las combinaciones de lo que antecede tambien debenan incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores de proposito general, circuitos integrados espedficos de la aplicacion (ASIC), matrices de puertas logicas programables por campo (FPGA) u otros circuitos logicos integrados o discretos equivalentes. Por consiguiente, el termino "procesador", como se usa en el presente documento, puede referirse a cualquier estructura anterior o a cualquier otra estructura adecuada para la implementacion de las tecnicas descritas en el presente documento. Ademas, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de los modulos de hardware y/o software especializados configurados para la codificacion y la descodificacion, o incorporarse en un codec combinado. Igualmente, las tecnicas pueden implementarse completamente en uno o mas circuitos o elementos logicos.
Las tecnicas de esta divulgacion se pueden implementar en una gran variedad de dispositivos o aparatos, incluyendo un auricular inalambrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Varios componentes, modulos o unidades se describen en esta divulgacion para enfatizar aspectos funcionales de dispositivos configurados para realizar las tecnicas divulgadas, pero no requieren necesariamente la 5 realizacion mediante diferentes unidades de hardware. Mas bien, como se ha descrito anteriormente, pueden combinarse diversas unidades en una unidad de hardware de codec o ser proporcionadas por una coleccion de unidades de hardware inter-operativas, incluyendo uno o mas procesadores, como se ha descrito anteriormente, junto con el software y/o firmware adecuado.
10 Se han descrito diversos ejemplos. Estos y otros ejemplos estan dentro del alcance de las siguientes reivindicaciones.
Claims (10)
1.
5
10
15
20
25
2.
30 3.
4.
35 5.
6.
40
7.
45 8.
50
55
60
REIVINDICACIONES
Un procedimiento de codificacion de datos de video, comprendiendo el procedimiento:
la determinacion (162; 208) de un contexto para la codificacion por entropia de un bin de un valor indicativo de una posicion del ultimo coeficiente significativo de un bloque de datos de video usando una funcion de un indice del bin, y
la codificacion (164; 210) del bin utilizando el contexto determinado; caracterizado por:
el uso de la funcion para producir un indice de contexto para el contexto desplazando a la derecha el indice del bin un valor k y anadiendo el valor desplazado a la derecha a un valor de desplazamiento, en el que el valor de desplazamiento se determina segun la formula:
desplazamiento = 3*n + ((n + 1) >> 2),
en donde el valor de k se determina segun la formula:
k = (n+3)>>2
en donde el valor de n se determina segun la formula: n = (log2(block_size)-2), y
en donde el valor block_size comprende un valor indicativo del tamano de bloque de la unidad de transformacion.
El procedimiento, de acuerdo con la reivindicacion 1, en el que la determinacion del contexto comprende la ejecucion de la funcion.
El procedimiento, de acuerdo con la reivindicacion 1, en el que la funcion comprende una funcion lineal:
El procedimiento, de acuerdo con la reivindicacion 1, que comprende ademas la recepcion de la funcion de un usuario.
El procedimiento, de acuerdo con la reivindicacion 1, que comprende ademas la recepcion de datos sintacticos que definen la funcion.
El procedimiento, de acuerdo con la reivindicacion 1, en el que la codificacion del bin comprende descodificacion por entropia (210) de los datos codificados utilizando el contexto determinado para reproducir un valor para el bin.
El procedimiento, de acuerdo con la reivindicacion 1, en el que la codificacion del bin comprende la codificacion por entropia (158) del bin utilizando el contexto determinado.
Un dispositivo (20; 30) para codificar datos de video, comprendiendo el dispositivo:
Medios (56; 70) para determinar un contexto para la codificacion por entropia de un bin de un valor indicativo de una posicion del ultimo coeficiente significativo de un bloque de datos de video usando una funcion de un indice del bin; y
medios para codificar el bin utilizando el contexto determinado; caracterizado porque:
los medios para determinar un contexto estan configurados para utilizar la funcion para producir un indice de contexto para el contexto desplazando a la derecha el indice del bin un valor k y anadiendo el valor desplazado a la derecha a un valor de desplazamiento, en donde el valor del desplazamiento se determina segun la formula:
desplazamiento = 3*n + ((n + 1) >> 2),
en donde el valor k se determina segun la formula:
k = (n+3)>>2,
en donde el valor n se determina segun la formula: n = (log2(block_size)-2),
y
5
10
15
20
en donde el valor block_size comprende un valor indicativo del tamano de bloque de la unidad de transformacion.
9. El dispositivo, de acuerdo con la reivindicacion 8, en el que los medios para determinar el contexto comprenden medios para ejecutar la funcion.
10. El dispositivo, de acuerdo con la reivindicacion 8, que comprende ademas medios para recibir datos sintacticos que definen la funcion.
11. El dispositivo, de acuerdo con la reivindicacion 8, en el que los medios para codificar el bin estan configurados para codificar el bin al menos en parte mediante la descodificacion por entropfa de los datos codificados utilizando el contexto determinado para reproducir un valor para el bin.
12. El dispositivo, de acuerdo con la reivindicacion 8, en el que los medios para codificar el bin estan configurados para codificar el bin al menos en parte mediante la codificacion por entropfa del bin utilizando el contexto determinado.
13. Un medio de almacenamiento legible por ordenador codificado con instrucciones que, cuando son ejecutadas, hacen que un procesador programable de un dispositivo informatico lleve a cabo el procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 7.
Applications Claiming Priority (9)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201261614178P | 2012-03-22 | 2012-03-22 | |
| US201261614178P | 2012-03-22 | ||
| US201261620273P | 2012-04-04 | 2012-04-04 | |
| US201261620273P | 2012-04-04 | ||
| US201261666316P | 2012-06-29 | 2012-06-29 | |
| US201261666316P | 2012-06-29 | ||
| US201313796572 | 2013-03-12 | ||
| US13/796,572 US9237344B2 (en) | 2012-03-22 | 2013-03-12 | Deriving context for last position coding for video coding |
| PCT/US2013/030886 WO2013142195A1 (en) | 2012-03-22 | 2013-03-13 | Deriving context for last position coding for video coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2616486T3 true ES2616486T3 (es) | 2017-06-13 |
Family
ID=49211799
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES13712992.0T Active ES2616486T3 (es) | 2012-03-22 | 2013-03-13 | Obtención de contexto para la codificación de última posición para la codificación de vídeo |
Country Status (22)
| Country | Link |
|---|---|
| US (1) | US9237344B2 (es) |
| EP (1) | EP2829061B1 (es) |
| JP (1) | JP6042526B2 (es) |
| KR (1) | KR101699600B1 (es) |
| CN (1) | CN104205835B (es) |
| AU (1) | AU2013235516B2 (es) |
| BR (1) | BR112014023466B1 (es) |
| CA (1) | CA2865616C (es) |
| DK (1) | DK2829061T3 (es) |
| ES (1) | ES2616486T3 (es) |
| HU (1) | HUE031741T2 (es) |
| IL (1) | IL234269A (es) |
| MY (1) | MY165949A (es) |
| PH (1) | PH12014502044A1 (es) |
| PL (1) | PL2829061T3 (es) |
| PT (1) | PT2829061T (es) |
| RU (1) | RU2629437C2 (es) |
| SG (1) | SG11201405150XA (es) |
| SI (1) | SI2829061T1 (es) |
| TW (1) | TWI523530B (es) |
| WO (1) | WO2013142195A1 (es) |
| ZA (1) | ZA201407494B (es) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| PL3306939T3 (pl) * | 2011-06-28 | 2020-11-02 | Samsung Electronics Co., Ltd. | Sposób i urządzenie do kodowania wideo, odpowiedni sposób do dekodowania wideo, wideo z towarzyszącym dekodowaniem arytmetycznym oraz sygnalizowanie dwuwymiarowego ostatniego znaczącego współczynnika |
| TWI613907B (zh) * | 2011-11-08 | 2018-02-01 | 三星電子股份有限公司 | 用於解碼視訊的方法 |
| AU2014202682A1 (en) * | 2014-05-16 | 2015-12-03 | Canon Kabushiki Kaisha | Method, apparatus and system for copying a block of video samples |
| US10425659B2 (en) * | 2015-01-30 | 2019-09-24 | Qualcomm Incorporated | Coding escape pixels for palette coding |
| US10334248B2 (en) | 2015-05-29 | 2019-06-25 | Qualcomm Incorporated | Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design |
| EP3306924A1 (en) | 2016-10-05 | 2018-04-11 | Thomson Licensing | Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to picture data |
| GB2567861A (en) | 2017-10-27 | 2019-05-01 | Sony Corp | Image data encoding and decoding |
| US12355996B2 (en) | 2017-11-23 | 2025-07-08 | Interdigital Vc Holdings, Inc. | Encoding and decoding methods and corresponding devices |
| EP3490253A1 (en) | 2017-11-23 | 2019-05-29 | Thomson Licensing | Encoding and decoding methods and corresponding devices |
| WO2020141856A1 (ko) * | 2019-01-02 | 2020-07-09 | 엘지전자 주식회사 | 영상 코딩 시스템에서 레지듀얼 정보를 사용하는 영상 디코딩 방법 및 그 장치 |
| US11218735B2 (en) * | 2019-04-02 | 2022-01-04 | Qualcomm Incorporated | Context derivation for last position coding for video coding |
| US11336893B2 (en) * | 2020-01-07 | 2022-05-17 | Qualcomm Incorporated | Context derivation and entropy coding initialization parameters for coordinates of last position coding in video coding |
| US12581092B2 (en) | 2022-03-03 | 2026-03-17 | Qualcomm Incorporated | Temporal initialization points for context-based arithmetic coding |
Family Cites Families (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5434623A (en) * | 1991-12-20 | 1995-07-18 | Ampex Corporation | Method and apparatus for image data compression using combined luminance/chrominance coding |
| US5734755A (en) * | 1994-03-11 | 1998-03-31 | The Trustees Of Columbia University In The City Of New York | JPEG/MPEG decoder-compatible optimized thresholding for image and video signal compression |
| EP1933568A3 (en) | 2001-09-14 | 2008-06-25 | Nokia Corporation | Method and system for context-based adaptive binary arithmetic coding |
| CN100483402C (zh) * | 2002-08-28 | 2009-04-29 | 思科系统公司 | 用于执行高速上下文检索和数据模式特征描述的可编程规则处理设备 |
| US7724818B2 (en) | 2003-04-30 | 2010-05-25 | Nokia Corporation | Method for coding sequences of pictures |
| US7379608B2 (en) * | 2003-12-04 | 2008-05-27 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. | Arithmetic coding for transforming video and picture data units |
| US7570827B2 (en) * | 2004-07-14 | 2009-08-04 | Slipstream Data Inc. | Method, system and computer program product for optimization of data compression with cost function |
| NO322043B1 (no) * | 2004-12-30 | 2006-08-07 | Tandberg Telecom As | Fremgangsmate for forenklet entropikoding |
| RU2336661C2 (ru) * | 2005-04-19 | 2008-10-20 | Самсунг Электроникс Ко., Лтд. | Способ и устройство адаптивного выбора контекстной модели для кодирования по энтропии |
| US7839312B2 (en) | 2006-11-30 | 2010-11-23 | Panasonic Corporation | Coder |
| WO2008084443A1 (en) | 2007-01-09 | 2008-07-17 | Nokia Corporation | System and method for implementing improved decoded picture buffer management for scalable video coding and multiview video coding |
| US7535387B1 (en) * | 2007-09-10 | 2009-05-19 | Xilinx, Inc. | Methods and systems for implementing context adaptive binary arithmetic coding |
| US8891615B2 (en) * | 2008-01-08 | 2014-11-18 | Qualcomm Incorporated | Quantization based on rate-distortion modeling for CABAC coders |
| KR100936208B1 (ko) * | 2008-12-09 | 2010-01-12 | 주식회사세오 | 무손실 문맥적응적이진산술부호화를 위한 h.264/avc 부호화기, 상기 부호화기의 문맥적응적이진산술부호화방법 |
| US20110110416A1 (en) * | 2009-11-12 | 2011-05-12 | Bally Gaming, Inc. | Video Codec System and Method |
| PL2559166T3 (pl) | 2010-04-13 | 2018-04-30 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Koder i dekoder dzielący interwał prawdopodobieństwa |
| CN102884792B (zh) | 2010-05-12 | 2016-08-17 | 汤姆森许可贸易公司 | 用于统一显著图编码的方法和设备 |
| US9591320B2 (en) | 2010-07-15 | 2017-03-07 | Texas Instruments Incorporated | Context and bypass encoding video |
| US9042440B2 (en) * | 2010-12-03 | 2015-05-26 | Qualcomm Incorporated | Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding |
| US20120163456A1 (en) * | 2010-12-22 | 2012-06-28 | Qualcomm Incorporated | Using a most probable scanning order to efficiently code scanning order information for a video block in video coding |
| US20120163472A1 (en) * | 2010-12-22 | 2012-06-28 | Qualcomm Incorporated | Efficiently coding scanning order information for a video block in video coding |
| US8768080B2 (en) | 2011-01-04 | 2014-07-01 | Blackberry Limited | Coding of residual data in predictive compression |
| US8687904B2 (en) | 2011-01-14 | 2014-04-01 | Panasonic Corporation | Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus which include arithmetic coding or arithmetic decoding |
| AU2012268951B2 (en) * | 2011-06-16 | 2015-07-30 | Dolby Video Compression, Llc | Context initialization in entropy coding |
| US10536701B2 (en) * | 2011-07-01 | 2020-01-14 | Qualcomm Incorporated | Video coding using adaptive motion vector resolution |
| US10390046B2 (en) * | 2011-11-07 | 2019-08-20 | Qualcomm Incorporated | Coding significant coefficient information in transform skip mode |
| US9357185B2 (en) * | 2011-11-08 | 2016-05-31 | Qualcomm Incorporated | Context optimization for last significant coefficient position coding |
| EP2810440A1 (en) * | 2012-02-04 | 2014-12-10 | General Instrument Corporation | Devices and methods for context reduction in last significant coefficient position coding |
| US9386307B2 (en) * | 2012-06-14 | 2016-07-05 | Qualcomm Incorporated | Grouping of bypass-coded bins for SAO syntax elements |
-
2013
- 2013-03-12 US US13/796,572 patent/US9237344B2/en active Active
- 2013-03-13 CA CA2865616A patent/CA2865616C/en active Active
- 2013-03-13 HU HUE13712992A patent/HUE031741T2/en unknown
- 2013-03-13 DK DK13712992.0T patent/DK2829061T3/en active
- 2013-03-13 PL PL13712992T patent/PL2829061T3/pl unknown
- 2013-03-13 ES ES13712992.0T patent/ES2616486T3/es active Active
- 2013-03-13 EP EP13712992.0A patent/EP2829061B1/en active Active
- 2013-03-13 AU AU2013235516A patent/AU2013235516B2/en active Active
- 2013-03-13 WO PCT/US2013/030886 patent/WO2013142195A1/en not_active Ceased
- 2013-03-13 KR KR1020147029386A patent/KR101699600B1/ko active Active
- 2013-03-13 BR BR112014023466-3A patent/BR112014023466B1/pt active IP Right Grant
- 2013-03-13 PT PT137129920T patent/PT2829061T/pt unknown
- 2013-03-13 MY MYPI2014702357A patent/MY165949A/en unknown
- 2013-03-13 RU RU2014142546A patent/RU2629437C2/ru active
- 2013-03-13 SI SI201330493A patent/SI2829061T1/sl unknown
- 2013-03-13 JP JP2015501752A patent/JP6042526B2/ja active Active
- 2013-03-13 CN CN201380015445.0A patent/CN104205835B/zh active Active
- 2013-03-13 SG SG11201405150XA patent/SG11201405150XA/en unknown
- 2013-03-22 TW TW102110387A patent/TWI523530B/zh active
-
2014
- 2014-08-24 IL IL234269A patent/IL234269A/en active IP Right Grant
- 2014-09-15 PH PH12014502044A patent/PH12014502044A1/en unknown
- 2014-10-15 ZA ZA2014/07494A patent/ZA201407494B/en unknown
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2616486T3 (es) | Obtención de contexto para la codificación de última posición para la codificación de vídeo | |
| ES2657546T3 (es) | Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo | |
| ES2611349T3 (es) | Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo | |
| ES2673069T3 (es) | Procesamiento paralelo de frente de onda para codificación de vídeo | |
| ES2637490T3 (es) | Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes | |
| ES2715555T3 (es) | Predicción residual de componentes cruzadas adaptativa | |
| ES2561609T3 (es) | Agrupación de elementos sintácticos codificados por circunvalación en la codificación de vídeo | |
| ES2608595T3 (es) | Mejora del rendimiento para la codificación del nivel de coeficientes de la CABAC | |
| ES2700523T3 (es) | Optimización de contexto para la codificación de la posición del último coeficiente significativo | |
| AU2012332417B2 (en) | Padding of segments in coded slice NAL units | |
| ES2992040T3 (es) | Número de reducción de contexto para la codificación aritmética binaria adaptativa al contexto | |
| ES2648312T3 (es) | Relleno de píxeles de borde para intra-predicción en codificación de vídeo | |
| ES2649532T3 (es) | Predicción ponderada explícita de alta precisión para la codificación de vídeo | |
| ES2750957T3 (es) | Señalización de predictores de paleta con código de longitud de ejecución para codificación de vídeo | |
| ES2608765T3 (es) | Codificación de las unidades de la NAL de SEI para la codificación de vídeo | |
| ES2717679T3 (es) | Codificación progresiva de una posición de último coeficiente significativo | |
| ES2688359T3 (es) | Filtro de desplazamiento de banda central adaptativo para codificación de vídeo | |
| ES2763443T3 (es) | Codificación de vídeo en modo intra | |
| ES2897708T3 (es) | Modelado de contexto eficiente en memoria | |
| ES2742026T3 (es) | Determinación de vector de movimiento para codificación de vídeo | |
| ES2613136T3 (es) | Señalización condicional de información de temporización de recuento del orden de imágenes para la temporización de vídeo en la codificación de vídeo | |
| ES2673939T3 (es) | Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo en base a un orden de exploración para el bloque en codificación de vídeo | |
| ES2736312T3 (es) | Señalización de imágenes de referencia a largo plazo para codificación de vídeo | |
| ES2736308T3 (es) | Predicción de texturas entre capas para codificación de vídeo | |
| US9350998B2 (en) | Coding of significance flags |