ES2952256T3 - Modelado de contexto eficiente de memoria - Google Patents
Modelado de contexto eficiente de memoria Download PDFInfo
- Publication number
- ES2952256T3 ES2952256T3 ES21203455T ES21203455T ES2952256T3 ES 2952256 T3 ES2952256 T3 ES 2952256T3 ES 21203455 T ES21203455 T ES 21203455T ES 21203455 T ES21203455 T ES 21203455T ES 2952256 T3 ES2952256 T3 ES 2952256T3
- Authority
- ES
- Spain
- Prior art keywords
- video
- block
- data
- entropy
- 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 119
- 238000003860 storage Methods 0.000 claims description 21
- 230000003044 adaptive effect Effects 0.000 claims description 14
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 230000033001 locomotion Effects 0.000 description 70
- 239000013598 vector Substances 0.000 description 36
- 238000012545 processing Methods 0.000 description 27
- 241000023320 Luma <angiosperm> Species 0.000 description 23
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 23
- 230000008569 process Effects 0.000 description 22
- 238000013139 quantization Methods 0.000 description 21
- 230000005540 biological transmission Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 15
- 238000004458 analytical method Methods 0.000 description 14
- 239000000523 sample Substances 0.000 description 14
- 238000005192 partition Methods 0.000 description 13
- 230000006835 compression Effects 0.000 description 12
- 238000007906 compression Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000001364 causal effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000004927 fusion Effects 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
- 238000005457 optimization Methods 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation 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/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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- 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/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Systems (AREA)
Abstract
En un ejemplo, aspectos de esta divulgación se relacionan con un método de codificación de datos de video que incluye determinar información de contexto para un bloque de datos de video, donde el bloque se incluye dentro de una unidad codificada de datos de video, donde el bloque está debajo de una fila superior de bloques en la unidad codificada, y donde la información de contexto no incluye información de un bloque vecino anterior en la unidad codificada. Ese método también incluye datos de codificación entrópica del bloque utilizando la información de contexto determinada. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Modelado de contexto eficiente de memoria
Campo técnico
Esta divulgación se refiere a la codificación de vídeo, y, más específicamente, a la codificación por entropía de datos de vídeo.
Antecedentes
Las capacidades de vídeo digital se pueden incorporar en un amplia gama de dispositivos, incluyendo televisores digitales, sistemas de difusión digital directa, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portables o de sobremesa, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos celulares o por satélite, denominados "teléfonos inteligentes", dispositivos de teleconferencia por vídeo, dispositivos de envío por flujo continuo de vídeo, y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, 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, Codificación de Vídeo Avanzada (AVC), la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo, y extensiones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar, y/o almacenar información de vídeo digital más eficientemente implementando tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o eliminar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un corte de vídeo (es decir, un fotograma de vídeo o una porción de un fotograma de vídeo) se puede particionar en bloques de vídeo, que también pueden denominarse como bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un corte intracodificado (I) de una imagen se codifican usando la predicción espacial con respecto a las muestras de referencia en los bloques vecinos en la misma imagen. Los bloques de vídeo en un corte intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse como fotogramas, y las imágenes de referencia pueden denominarse como fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que a codificar. Los datos residuales representan las diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con 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 intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio de los píxeles a un dominio de la transformada, dando como resultado coeficientes de transformada residuales que, a continuación, pueden cuantificarse. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden explorar para producir un vector unidimensional de coeficientes de transformada, y se puede aplicar codificación por entropía para lograr una compresión incluso mayor.
En el artículo titulado "Context-based adaptive binary arithmetic coding in the H.264/AVC vídeo compression standard" de Detlev Marpe et al (IEEE Transactions on Circuits and Systems for Video Technology, volumen 13, número 7, julio de 2003), se presenta la codificación aritmética binaria adaptativa basada en el contexto (CABAC) como una parte normativa de la norma ITU-T/ISO/IEC H.264/AVC para la compresión de vídeo. La estructura de CABAC incluye un método para la codificación aritmética binaria y la estimación de probabilidad.
En el documento WO 2010/063184 A1, un método para realizar CABAC paralelo con cortes de entropía ordenados incluye: proporcionar una pluralidad de cortes de entropía a una pluralidad de elementos de procesamiento con una restricción causal en el orden de procesamiento, en donde cada corte de entropía incluye una pluralidad de macrobloques, y cada corte de entropía tiene una altura de corte de entropía de al menos un MB; y, respectivamente, empezar a realizar el procesamiento de CABAC para la pluralidad de cortes de entropía de acuerdo con la restricción causal, de modo que al menos una porción de los elementos de procesamiento se procesan en paralelo durante al menos una porción de tiempo de procesamiento de CABAC. Un aparato asociado para realizar el procesamiento de CABAC paralelo con los cortes de entropía ordenados incluye: una pluralidad de elementos de proceso; y un controlador. Los elementos de procesamiento están dispuestos para procesar los cortes de entropía. Además, el controlador está dispuesto para proporcionar la pluralidad de cortes de entropía con la restricción causa, y controla las operaciones de los elementos de procesamiento.
Otro documento relevante de la técnica anterior es: WO 2009/119888 A1 (SHARP KK [JP]; ZHAO JIE; SEGALL CHRISTOPHER A; KEROFSKY LOUIS J) 1 de octubre de 2009 (01-10-2009).
Sumario
En general, esta divulgación describe técnicas para codificar datos de vídeo. Por ejemplo, las técnicas de esta divulgación incluyen reducir una cantidad de datos que se almacenan en memoria intermedia cuando se codifican por entropía datos de vídeo. Durante la codificación por entropía, un dispositivo de codificación de vídeo puede seleccionar un modelo de contexto para determinar una probabilidad de un valor para los datos a codificar. El modelo de contexto para un bloque particular de datos de vídeo puede basarse en información de contexto extraída desde bloques vecinos de datos de vídeo. Por consiguiente, un dispositivo de codificación de vídeo puede almacenar en memoria intermedia la información de bloques vecinos de datos de vídeo de tal manera que tal información esté disponible para su uso como información de contexto. Las técnicas de esta divulgación se refieren a limitar la cantidad de datos desde bloques vecinos que se almacenan en memoria intermedia durante la codificación por entropía. De acuerdo con un aspecto de la invención, se determina información de contexto para datos residuales intrapredichos de una unidad de transformada, TU, basándose en una profundidad de una TU, describiendo la profundidad de la TU el número de veces que se subdivide la TU de acuerdo con una estructura de árbol cuádruple que tiene un nodo raíz que es una unidad de codificación de hoja. La información de contexto no incluye información de un bloque vecino superior de la TU. Los bloques de datos de vídeo que están posicionados por encima de un bloque de datos de vídeo que se está codificando actualmente se denominan "bloques vecinos superiores".
Específicamente, la invención se define por las reivindicaciones independientes.
Se indican características de algunas realizaciones en las reivindicaciones dependientes.
Los ejemplos presentados en el presente documento que no incluyen, por sí mismos, todas las características de una cualquiera de las reivindicaciones independientes no caen, por sí mismos, dentro de la redacción literal de las reivindicaciones independientes que definen la invención. Sin embargo, tales ejemplos pueden ayudar al lector a comprender o implementar la invención.
Breve descripción de dibujos
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La figura 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 3 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
Las figuras 4A y 4B son diagramas conceptuales que ilustran un árbol cuádruple de ejemplo y una unidad de codificación más grande (LCU) correspondiente.
La figura 5 es un diagrama de bloques que ilustra bloques vecinos de ejemplo a partir de los que se puede determinar el contexto para codificar por entropía un bloque.
La figura 6 es un diagrama de bloques que ilustra bloques vecinos de ejemplo a partir de los que se puede determinar el contexto para codificar por entropía un bloque.
La figura 7 es un diagrama de flujo que ilustra un método de ejemplo de codificación por entropía de un bloque de datos de vídeo.
La figura 8 es un diagrama de flujo que ilustra otro método de ejemplo de codificación por entropía de un bloque de datos de vídeo.
La figura 9 es un diagrama de flujo que ilustra otro método de ejemplo de codificación por entropía de un bloque de datos de vídeo.
La figura 10 es un diagrama de flujo que ilustra otro método de ejemplo de codificación por entropía de un bloque de datos de vídeo.
Descripción detallada
Un dispositivo de codificación de vídeo puede intentar comprimir datos de vídeo aprovechando la redundancia espacial y temporal. Por ejemplo, un codificador de vídeo puede aprovechar la redundancia espacial codificando un bloque en relación con bloques vecinos previamente codificados. Asimismo, un codificador de vídeo puede aprovechar la redundancia temporal codificando un bloque en relación con los datos de fotogramas previamente codificados. En particular, el codificador de vídeo puede predecir un bloque actual a partir de los datos de un vecino espacial o a partir de los datos de un fotograma previamente codificado. A continuación, el codificador de vídeo puede calcular un residuo para el bloque como una diferencia entre los valores de píxeles reales para el bloque y los valores de píxeles predichos para el bloque. Por consiguiente, el residuo para un bloque puede incluir valores de diferencia píxel a píxel en el dominio de los píxeles (o espacial).
A continuación, el codificador de vídeo puede aplicar una transformada a los valores del residuo para comprimir la energía de los valores de píxeles en un número relativamente pequeño de coeficientes de transformada en el dominio de frecuencia. A continuación, el codificador de vídeo puede cuantificar los coeficientes de transformada. El codificador de vídeo puede explorar los coeficientes de transformada cuantificados para convertir una matriz bidimensional de
coeficientes de transformada cuantificados en un vector unidimensional que incluye los coeficientes de transformada cuantificados. En algunos casos, los procesos de cuantificación y exploración pueden producirse al mismo tiempo. El proceso de explorar los coeficientes a veces se denomina como serialización de los coeficientes.
A continuación, el codificador de vídeo puede aplicar un proceso de codificación por entropía para codificar por entropía los coeficientes explorados. Procesos de codificación por entropía de ejemplo pueden incluir, por ejemplo, codificación de longitud variable adaptativa basada en el contexto (CAVLC), codificación aritmética binaria adaptativa basada en el contexto (CABAC), codificación aritmética binaria adaptativa basada en el contexto basada en sintaxis (SBAC), codificación por entropía de partición de intervalo de probabilidad (PIPE) u otras metodologías de codificación por entropía. El codificador de vídeo también puede codificar por entropía elementos de sintaxis asociados con los datos de vídeo codificados para su uso por un decodificador de vídeo en la decodificación de los datos de vídeo.
Con respecto a (CABAC), un codificador de vídeo puede seleccionar un modelo de contexto que opera en contexto para codificar símbolos asociados con un bloque de datos de vídeo. El contexto puede relacionarse con, por ejemplo, si los valores son cero o distintos de cero para los símbolos vecinos a un símbolo que se está codificando actualmente.
De acuerdo con algunos ejemplos, las posiciones de los coeficientes significativos (es decir, coeficientes de transformada distintos de cero) en un bloque de vídeo pueden codificarse antes de los valores de los coeficientes de transformada, que pueden denominarse como los "niveles" de los coeficientes de transformada. El proceso de codificación de las ubicaciones de los coeficientes significativos puede denominarse como codificación de mapa de significancia. Un mapa de significancia (SM) incluye una matriz bidimensional de valores binarios que indican ubicaciones de coeficientes significativos. Por ejemplo, una SM para un bloque de datos de vídeo puede incluir una matriz bidimensional de unos y ceros, en la que los unos indican posiciones de coeficientes de transformada significativos dentro del bloque y los ceros indican posiciones de coeficientes de transformada no significativos (de valor cero) dentro del bloque. Los unos y ceros se denominan como "banderas de coeficientes significativos".
Después de que se codifica la SM, un codificador de vídeo puede codificar por entropía el nivel de cada coeficiente de transformada significativo. Por ejemplo, un codificador de vídeo puede convertir un valor absoluto de cada coeficiente de transformada distinto de cero en forma binaria. De esta forma, cada coeficiente de transformada distinto de cero puede "convertirse a binario", por ejemplo, usando un código unario que comprende uno o más bits, o "binarios". Además, se puede incluir un número de otros elementos de sintaxis convertidos a binario para permitir que un decodificador de vídeo decodifique los datos de vídeo.
Un codificador de vídeo puede codificar cada binario para un bloque de datos de vídeo, ya sea que corresponda a coeficientes de transformada o información de sintaxis para el bloque, usando estimaciones de probabilidad para cada binario. Las estimaciones de probabilidad pueden indicar una probabilidad de que un binario tenga un valor binario dado (por ejemplo, "0" o "1"). Las estimaciones de probabilidad pueden incluirse dentro de un modelo de probabilidad, también denominado como un "modelo de contexto". Un codificador de vídeo puede seleccionar un modelo de contexto determinando un contexto para el binario. El contexto de un binario de un elemento de sintaxis puede incluir valores de binarios relacionados de elementos de sintaxis vecinos codificados previamente. En algunos ejemplos, el contexto para codificar un elemento de sintaxis actual puede incluir elementos de sintaxis vecinos posicionados en la parte superior y a la izquierda del elemento de sintaxis actual. En cualquier caso, se define un modelo de probabilidad diferente para cada contexto. Después de codificar el binario, el modelo de contexto se actualiza además basándose en un valor del binario para reflejar las estimaciones de probabilidad más actuales.
En algunos ejemplos, se pueden usar bloques de datos de vídeo tan pequeños como 4x4 píxeles para codificar una imagen. Por ejemplo, un fotograma de 1920x1080 píxeles (por ejemplo, para vídeo de 1080p) puede incluir hasta 495 bloques de 4x4 píxeles. Por consiguiente, para que se almacene un bit de información de contexto por bloque, un codificador de vídeo puede almacenar en memoria intermedia 495 bits de información. Además, en algunos ejemplos, se puede usar más de un bit de información como contexto para codificar un elemento de sintaxis particular, lo cual puede aumentar en gran medida la cantidad de datos que se almacenan en memoria intermedia para la codificación por entropía.
Las técnicas de esta divulgación generalmente se refieren a limitar la cantidad de datos desde bloques vecinos que se almacenan en memoria intermedia durante la codificación por entropía. Por ejemplo, en lugar de usar datos de bloques vecinos superiores como información de contexto cuando se codifica un bloque actual, en algunos ejemplos, un dispositivo de codificación de vídeo puede determinar el contexto basándose en una característica del elemento de sintaxis o bloque que se está codificando. En otros ejemplos, el dispositivo de codificación de vídeo puede determinar el contexto basándose en datos desde los bloques vecinos a la izquierda cuando se codifica el bloque actual. En aún otros ejemplos, un dispositivo de codificación de vídeo puede determinar el contexto basándose en datos desde un bloque vecino superior, pero solo cuando el bloque actual es un subbloque de una partición más grande (por ejemplo, denominado en la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) emergente como una unidad de codificación más grande (LCU), como se describe con mayor detalle a continuación).
Limitar la cantidad de datos que se almacenan en memoria intermedia, de acuerdo con las técnicas de esta divulgación, puede reducir la complejidad asociada con la codificación de datos de vídeo. Por ejemplo, la codificación
por entropía de acuerdo con los aspectos de esta divulgación puede permitir que un dispositivo de codificación de vídeo almacene en memoria intermedia menos datos, reduciendo de esta manera los requisitos de memoria asociados con tal almacenamiento en memoria intermedia.
Además, reducir las ubicaciones desde las cuales se deriva el contexto puede mejorar la eficiencia y/o rendimiento de codificación por entropía. Por ejemplo, las técnicas de esta divulgación pueden implementarse para mejorar el rendimiento de análisis. Es decir, cuando se reciben datos de vídeo por un codificador de vídeo, los datos de vídeo pueden analizarse, o leerse y segmentarse, de acuerdo con un proceso de análisis particular (por ejemplo, análisis de frente de onda). En algunos ejemplos, el proceso de análisis puede incluir analizar cada LCU de un corte después de analizar una o más LCU iniciales (por ejemplo, una LCU superior y/o más a la izquierda en un segmento). El análisis de las LCU puede permitir que el codificador de vídeo forme múltiples hilos de procesamiento (por ejemplo, para procesamiento paralelo), incluyendo cada hilo una o más de las LCU analizadas.
Sin embargo, debido a las dependencias de modelo de contexto, ciertos hilos pueden ser dependientes de otros hilos, que pueden no ser óptimos para aplicaciones de procesamiento paralelo. Por ejemplo, un primer hilo puede depender de los datos procesados por un segundo hilo diferente, lo cual puede hacer que el primer hilo espere hasta que el segundo hilo haya procesado los datos. Es decir, los datos generalmente se analizan hasta el punto en que son útiles los datos y, a continuación, luego se codifican los datos. En el caso de frentes de onda convencionales, un codificador de vídeo puede ralentizar codificar datos de un primer frente de onda (por ejemplo, superior). Eso, a su vez, puede hacer que el siguiente hilo se detenga, lo cual hace que el siguiente hilo se detenga, y así sucesivamente. Al eliminar las dependencias de contexto, de acuerdo con los aspectos de esta divulgación, un hilo que se ralentiza no afectará a otros hilos que se están procesando. Con respecto al análisis, esto significa que el analizador del hilo no necesita hacer referencia a otros hilos, sino que puede operar de manera independiente para cada hilo.
En un ejemplo con propósitos de ilustración, se supone que una LCU que se codifica actualmente está posicionada debajo de una fila superior de un corte, con una o más LCU del corte posicionadas encima del corte actual. En este ejemplo, el contexto para codificar la LCU actual puede incluirse en una LCU vecina superior (por ejemplo, una LCU posicionada encima de la LCU actual). Es decir, el contexto para codificar la LCU actual puede depender de uno o más valores de la LCU vecina superior. Por consiguiente, la LCU actual puede tener que esperar a que se codifique la LCU vecina superior antes de que se pueda codificar la LCU actual. Introducir tal latencia puede ralentizar el proceso de codificación, particularmente en aplicaciones de procesamiento paralelo.
Se pueden implementar aspectos de esta divulgación para limitar las ubicaciones desde las cuales se deriva el contexto. Es decir, de acuerdo con algunos aspectos de esta divulgación, un codificador de vídeo puede no usar información de contexto desde ciertos bloques vecinos y en su lugar extraer información de contexto desde otros orígenes. Por consiguiente, las técnicas de esta divulgación pueden eliminar las dependencias de contexto analizadas anteriormente y mejorar el rendimiento de análisis.
Además, en ciertos casos cuando un bloque que se está codificando actualmente incluye información de contexto que depende de otro bloque vecino, el bloque actual puede no codificarse si la información desde el bloque vecino se pierde o no está disponible de otra manera (por ejemplo, debido a errores de transmisión u otros errores). En un ejemplo con propósitos de ilustración, se puede usar un modo de codificación de fusión para predecir un bloque actual (por ejemplo, se adopta información de predicción asociada con otro bloque para el bloque actual). Si hay un error (por ejemplo, una pérdida de paquete) para un fotograma de referencia para el bloque actual, la dirección de interpredicción para el bloque actual puede no derivarse correctamente. Además, el contexto que depende del bloque vecino (con el error) también puede estar corrupto. Las técnicas de esta divulgación pueden eliminar las dependencias de contexto analizadas anteriormente para reducir la introducción de errores de derivación de contexto.
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo 10 de ejemplo que puede utilizar técnicas para codificar por entropía datos de vídeo. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados para que se decodifiquen en un momento posterior por un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de vídeo al dispositivo de destino 14 a través de un medio legible por ordenador 16. El dispositivo de origen 12 y dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, que incluyen ordenadores de sobremesa, ordenadores portátiles (es decir, portables), ordenadores de tableta, decodificadores de salón, aparatos telefónicos tales como los denominados teléfonos "inteligentes", las denominadas pantallas "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de juegos de vídeo, dispositivo de envío por flujo continuo, o similares. En algunos casos, el dispositivo de origen 12 y dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo de destino 14 puede recibir los datos de vídeo codificados que van a decodificarse a través del medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo que pueda mover los datos de vídeo 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 comunicación para permitir que el dispositivo de origen 12 transmita datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con una norma de comunicación, tal como un protocolo
de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área extensa, o una red global tal como el Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base, o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
En algunos ejemplos, los datos codificados pueden emitirse desde la interfaz de salida 22 a un dispositivo de almacenamiento. De manera similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento mediante la interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera de una diversidad de medios de almacenamiento de datos distribuidos o de acceso de manera local tal como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede almacenar el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de vídeo almacenados desde el dispositivo de almacenamiento a través de envío por flujo continuo o descarga. El servidor de archivos puede ser cualquier tipo de servidor que puede almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados a red (NAS), o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos convencional, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión wifi), una conexión alámbrica (por ejemplo, DSL, módem por cable, etc.), o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión de envío por flujo continuo, una transmisión de descarga, o una combinación de las mismas.
Esta divulgación puede referirse generalmente al codificador de vídeo 20 "que señaliza" cierta información a otro dispositivo, tal como el decodificador de vídeo 30. Debe entenderse, sin embargo, que el codificador de vídeo 20 puede señalizar información al asociar ciertos elementos de sintaxis con diversas porciones codificadas de datos de vídeo. Es decir, el codificador de vídeo 20 puede "señalizar" datos almacenando ciertos elementos de sintaxis en encabezados de diversas porciones codificadas de datos de vídeo. En algunos casos, tales elementos de sintaxis pueden codificarse y almacenarse (por ejemplo, almacenarse en el medio de almacenamiento 34 o en el servidor de archivos 36) antes de recibirse y decodificarse por el decodificador de vídeo 30. De este modo, el término "señalización" puede referirse generalmente a la comunicación de sintaxis u otros datos para decodificar datos de vídeo comprimidos, ya sea que tal comunicación se produzca en tiempo real o casi real o en un lapso de tiempo, tal como podría ocurrir cuando se almacenan elementos de sintaxis en un medio en el momento de codificación, que a continuación pueden recuperarse por un dispositivo de decodificación en cualquier momento después de almacenarse en este medio.
Las técnicas de esta divulgación, que generalmente se refieren a datos de codificación por entropía, no se limitan necesariamente a aplicaciones o ajustes inalámbricos. Las técnicas se pueden aplicar a la codificación de vídeo en soporte de cualquiera de una diversidad de aplicaciones multimedia, tales como difusión de televisión a través del aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo de envío por flujo continuo por Internet, tales como envío por flujo continuo adaptativo dinámico a través de HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para soportar la transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como envío por flujo continuo de vídeo, reproducción de vídeo, radiodifusión de vídeo, y/o telefonía de vídeo.
En el ejemplo de la figura 1, el dispositivo de origen 12 incluye el origen de vídeo 1, el codificador de vídeo 20 y la interfaz de salida 22. El dispositivo de destino 14 incluye la interfaz de entrada 28, el decodificador de vídeo 30, y el dispositivo de visualización 32. De acuerdo con esta divulgación, el codificador de vídeo 20 del dispositivo de origen 12 puede estar configurado para aplicar las técnicas para codificar vectores de movimiento y para realizar bipredicción en HEVC y sus extensiones, tales como multivista o extensiones 3DV. 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 vídeo desde un origen de vídeo 18 externo, tal como una cámara externa. Asimismo, el dispositivo de destino 14 puede hacer interfaz con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema 10 ilustrado de la figura 1 es simplemente un ejemplo. Las técnicas para codificar por entropía datos de vídeo pueden realizarse mediante cualquier dispositivo de codificación y/o decodificación de vídeo digital. Aunque generalmente las técnicas de esta divulgación se realizan mediante un dispositivo de codificación de vídeo, las técnicas también se pueden realizar mediante un codificador/decodificador de vídeo, típicamente denominado como un "CÓDEC". Además, las técnicas de esta divulgación también pueden realizarse por un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de codificación en los cuales el dispositivo de origen 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino
14. En algunos ejemplos, los dispositivos 12, 14 pueden operar en una manera sustancialmente simétrica de tal manera que cada uno de los dispositivos 12, 14 incluye componentes de codificación y decodificación de vídeo. Por tanto, el sistema 10 puede soportar la transmisión de vídeo unidireccional o bidireccional entre dispositivos de vídeo 12, 14, por ejemplo, para envío por flujo continuo de vídeo, reproducción de vídeo, difusión de vídeo, o telefonía de vídeo.
El origen de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente, y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo. Como una alternativa adicional, el origen de vídeo 18 puede generar datos basados en gráficos de ordenador como el vídeo de origen, o una combinación de vídeo en vivo, vídeo archivado, y vídeo generado por ordenador. En algunos casos, si el origen de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o teléfonos con vídeo. Sin embargo, como se mencionó anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o alámbricas. En cada caso, el vídeo capturado, precapturado, o generado por ordenador puede codificarse por el codificador de vídeo 20. A continuación, la información de vídeo codificada puede emitirse por la interfaz de salida 22 en un medio legible por ordenador 16.
El medio legible por ordenador 16 puede incluir medios transitorios, tales como una difusión inalámbrica o transmisión de red alámbrica, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad flash, un disco compacto, un disco de vídeo digital, disco Blu-ray, u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, a través de transmisión de red. De manera similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de estampado de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contenga los datos de vídeo codificados. Por lo tanto, puede entenderse que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
La interfaz de entrada 28 del dispositivo de destino 14 recibe información desde el medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información de sintaxis definida por el codificador de vídeo 20, que también se usa por el decodificador de vídeo 30, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, GOP. En particular, esta divulgación se refiere a una "unidad codificada" como una unidad de datos que incluye múltiples bloques, tales como un corte, imagen, conjunto de frentes de onda, o una pieza. Por lo tanto, debe entenderse que el término "unidad codificada" incluye múltiples bloques, por ejemplo, múltiples unidades de codificación más grandes (LCU). Además, el término "unidad codificada" no debe confundirse con la expresión "unidad de codificación" o el término CU como se usan en HEVC. El dispositivo de visualización 32 muestra los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una diversidad de dispositivos de visualización tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo de emisión de luz orgánico (OLED), u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y decodificador de vídeo 30 pueden operar de acuerdo con una norma de codificación de vídeo, tal como la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente bajo desarrollo, y pueden ajustarse al Modelo de Prueba de HEVC (HM). Como alternativa, el codificador de vídeo 20 y decodificador de vídeo 30 pueden operar de acuerdo con otras normas propietarias o industriales, tales como la norma ITU-T H.264, como alternativa denominada como MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), o extensiones de tales normas. Las técnicas de esta divulgación, sin embargo, no se limitan a ninguna norma de codificación particular. Otros ejemplos de normas de codificación de vídeo incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de vídeo 20 y decodificador de vídeo 30 pueden estar integrados cada uno con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para manejar la codificación tanto de audio como vídeo en un flujo de datos común o flujos de datos separados. Si es aplicable, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexor ITU H.223, u 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 Codificación de Vídeo (VCEG) ITU-T junto con el Grupo de Expertos en Imágenes en Movimiento (MPEG) ISO/IEC como el producto de una asociación colectiva conocida como el Equipo de Vídeo Mixto (JVT). En algunos aspectos, las técnicas descritas en esta divulgación pueden aplicarse a dispositivos que generalmente se ajustan a la norma H.264. La norma H.264 se describe en la Recomendación UIT-T H.264, Codificación de Vídeo Avanzada para servicios audiovisuales genéricos, por el Grupo de Estudio UIT-T, y con fecha de marzo de 2005, que puede denominarse en el presente documento como la norma H.264. o especificación H.264, o la norma o especificación H.264/AVC. El Equipo de Vídeo Mixto (JVT) continúa trabajando en extensiones para H.264/MPEG-4 AVC.
El JCT-VC está trabajando en el desarrollo de la norma de HEVC. Los esfuerzos de normalización de HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo denominado como el Modelo de Prueba de
HEVC (HM). El HM presupone varias capacidades adicionales de dispositivos de codificación de vídeo en relación con dispositivos existentes de acuerdo con, por ejemplo, ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intrapredicción, el HM puede proporcionar hasta treinta y tres modos de codificación de intrapredicción.
En general, el modelo de trabajo del HM describe que un fotograma o imagen de vídeo se puede dividir en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU) que incluyen tanto muestras de luma como de croma. Los datos de sintaxis dentro de un flujo de bits pueden definir un tamaño para la LCU, que es una unidad de codificación más grande en términos del número de píxeles. Un corte incluye un número de bloques de árbol consecutivos en orden de codificación. Un fotograma o imagen de vídeo se puede particionar en uno o más cortes. Cada bloque de árbol se puede dividir en unidades de codificación (CU) de acuerdo con un árbol cuádruple. En general, una estructura de datos de árbol cuádruple incluye un nodo por CU, con un nodo raíz que corresponde al bloque de árbol. Si una CU se divide en cuatro subCU, el nodo que corresponde a la CU incluye cuatro nodos de hoja, cada uno de los cuales corresponde a una de las subCU.
Cada nodo de la estructura de datos de árbol cuádruple puede proporcionar datos de sintaxis para la CU correspondiente. Por ejemplo, un nodo en el árbol cuádruple puede incluir una bandera de división, que indica si la CU que corresponde al nodo está dividida en subCU. Los elementos de sintaxis para una CU pueden definirse de manera recursiva, y pueden depender de si la CU se divide en subCU. Si una CU no se divide adicionalmente, se denomina como una Cu de hoja. En esta divulgación, cuatro subCU de una CU de hoja también se denominarán como CU de hoja incluso si no hay una división explícita de la CU de hoja original. Por ejemplo, si una CU de tamaño de 16x16 no se divide adicionalmente, las cuatro subCU de 8x8 también se denominarán como CU de hoja, aunque la CU de 16x16 nunca se dividiera.
Una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto que una CU no tiene una distinción de tamaño. Por ejemplo, un bloque de árbol puede dividirse en cuatro nodos hijos (también denominados como subCU), y cada nodo hijo puede ser a su vez un nodo padre y dividirse en otros cuatro nodos hijos. Un nodo hijo final no dividido, denominado como un nodo de hoja del árbol cuádruple, comprende un nodo de codificación, también denominado como una CU de hoja. Los datos de sintaxis asociados con un flujo de bits codificado pueden definir un número máximo de veces que se puede dividir un bloque de árbol, denominado como una profundidad máxima de CU, y también pueden definir un tamaño mínimo de los nodos de codificación. Por consiguiente, un flujo de bits también puede definir una unidad de codificación más pequeña (SCU). Esta divulgación usa el término "bloque" para referirse a cualquiera de una CU, PU, o TU, en el contexto de HEVC, o estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de los mismos en H.264/AVC). Además, esta divulgación puede usar la expresión "unidad codificada" para describir una cantidad predefinida de datos de vídeo, que puede incluir dos o más bloques de datos de vídeo. Es decir, por ejemplo, una unidad codificada puede referirse a una imagen, un corte, una pieza o conjunto de piezas, un conjunto de frentes de onda, o cualquier otra unidad predefinida que incluya datos de vídeo. Por consiguiente, la expresión "unidad codificada" no debe confundirse con la expresión "unidad de codificación" o el término CU.
Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas con el nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser cuadrado en su forma. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol con un máximo de 64x64 píxeles o mayor. Cada CU puede contener una o más PU y una o más TU. Los datos de sintaxis asociados con una CU pueden describir, por ejemplo, la partición de la CU en una o más PU. Los modos de partición pueden diferir entre si la CU está codificada en modo de salto o directo, codificada en modo de intrapredicción, o codificada en modo de interpredicción. Las PU pueden particionarse para que no sean cuadradas en su forma. Los datos de sintaxis asociados con una CU también pueden describir, por ejemplo, la partición de la CU en una o más TU de acuerdo con un árbol cuádruple. Una TU puede ser cuadrada o no cuadrada (por ejemplo, rectangular) en su forma.
La norma de HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. Las TU típicamente se dimensionan basándose en el tamaño de PU dentro de una CU dada definida para una LCU particionada, aunque puede que no siempre sea el caso. Las TU típicamente son del mismo tamaño o más pequeñas que las PU. En algunos ejemplos, las muestras residuales que corresponden a una CU pueden subdividirse en unidades más pequeñas usando una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos de hoja del RQT pueden denominarse como unidades de transformada (TU). Los valores de diferencia de píxeles asociados con las TU pueden transformarse para producir coeficientes de transformada, que pueden cuantificarse.
Una CU de hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa un área espacial que corresponde a la totalidad o una porción de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. Por ejemplo, cuando la PU está codificada por modo intra, los datos para la PU pueden incluirse en un árbol cuádruple residual (RQT), que puede incluir datos que describen un modo de intrapredicción para una TU que corresponde a la PU. Como otro ejemplo, cuando la PU está codificada por modo inter, la PU puede incluir datos que definen uno o más 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 resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la cual apunta el vector de movimiento, y/o una lista de imágenes de referencia (por ejemplo, Lista 0, Lista 1, o Lista C) para el vector de movimiento.
Una CU de hoja que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Las unidades de transformada se pueden especificar usando un RQT (también denominado como estructura de árbol cuádruple de TU), como se analizó anteriormente. Por ejemplo, una bandera de división puede indicar si una CU de hoja se divide en cuatro unidades de transformada. A continuación, cada unidad de transformada puede dividirse además en subTU adicionales. Cuando una TU no se divide adicionalmente, puede denominarse como una TU de hoja. Generalmente, para la intracodificación, todas las TU de hoja que pertenecen a una CU de hoja comparten el mismo modo de intrapredicción. Es decir, el mismo modo de intrapredicción se aplica generalmente para calcular los valores predichos para todas las TU de una CU de hoja. Para la intracodificación, un codificador de vídeo 20 puede calcular un valor residual para cada TU de hoja usando el modo de intrapredicción, como una diferencia entre la porción de la CU que corresponde a la TU y el bloque original. Una TU no se limita necesariamente al tamaño de una PU. Por lo tanto, las TU pueden ser más grandes o más pequeñas que una PU. Para la intracodificación, una PU puede estar coubicada con una TU de hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU de hoja puede corresponder al tamaño de la CU de hoja correspondiente.
Además, las TU de CU de hoja también se pueden asociar con las respectivas estructuras de datos de árbol cuádruple, denominadas como árboles cuádruples residuales (RQT). Es decir, una CU de hoja puede incluir un árbol cuádruple que indica cómo se particiona la Cu de hoja en las TU. El nodo raíz de un árbol cuádruple de TU corresponde generalmente a una Cu de hoja, mientras que el nodo raíz de un árbol cuádruple de CU corresponde generalmente a un bloque de árbol (o LCU). Las TU del RQT que no están divididas se denominan como TU de hoja. En general, esta divulgación usa los términos CU y TU para referirse a CU de hoja y TU de hoja, respectivamente, a menos que se indique otra cosa.
Una secuencia de vídeo típicamente incluye una serie de fotogramas o imágenes de vídeo. Un grupo de imágenes (GOP) generalmente comprende una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos de sintaxis en un encabezado del GOP, un encabezado de una o más de las imágenes, o en otro lugar, que describe un número de imágenes incluidas en el GOP. Cada corte de una imagen puede incluir datos de sintaxis de corte que describen un modo de codificación para el corte respectivo. El codificador de vídeo 20 típicamente opera en bloques de vídeo dentro de cortes de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables, y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
Como ejemplo, el HM soporta la predicción en diversos tamaños de PU. Suponiendo que el tamaño de una CU particular es 2Nx2N, el HM soporta la intrapredicción en tamaños de PU de 2Nx2N o NxN, y la interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, o NxN. El HM también soporta la partición asimétrica para la interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N, y nRx2N. En la partición asimétrica, una dirección de una CU no se particiona, mientras que la otra dirección se particiona en el 25 % y el 75 %. La porción de la CU que corresponde a la partición del 25 % se indica mediante una "n" seguida por una indicación de "Arriba", "Abajo", "Izquierda", o "Derecha". Por lo tanto, por ejemplo, "2NxnU" se refiere a una CU 2Nx2N que está particionada horizontalmente con una PU 2Nx0,5N en la parte superior y una PU 2Nx1,5N en la parte inferior.
En esta divulgación, "NxN" y "N por N" pueden usarse de manera intercambiable para referirse a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque NxN generalmente tiene N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, los bloques no necesitan tener necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
Después de la codificación intrapredictiva o interpredictiva usando las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de sintaxis que describen un método o modo de generar datos de píxeles predictivos en el dominio espacial (también denominado como el dominio de los píxeles) y las TU pueden comprender coeficientes en el dominio de la transformada después de la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de números enteros, una transformada de ondículas, o una transformada conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a las diferencias de píxeles entre píxeles de la imagen no codificada y los valores de predicción que corresponden a las PU. El codificador de vídeo 20 puede formar las TU que incluyen los datos residuales para la CU, y, a continuación, transformar las TU para producir coeficientes de transformada para la CU.
Después de cualquier transformada para producir coeficientes de transformada, el codificador de vídeo 20 puede
realizar la cuantificación de los coeficientes de transformada. La cuantificación generalmente se refiere a un proceso en el cual los coeficientes de transformada se cuantifican para posiblemente reducir la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. Por ejemplo, un valor de n bits puede redondearse hacia abajo a un valor de m bits durante la cuantificación, donde n es mayor que m.
Después de la cuantificación, el codificador de vídeo puede explorar los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. La exploración puede diseñarse para colocar coeficientes de energía más altos (y por lo tanto de frecuencia más baja) en la parte delantera de la matriz y para colocar coeficientes de energía más bajos (y por lo tanto de frecuencia más alta) en la parte posterior de la matriz. En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados para producir un vector serializado que puede codificarse por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar una exploración adaptativa. Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 codifica por entropía el vector unidimensional de acuerdo con la codificación aritmética binaria adaptativa basada en el contexto (CABAC). El codificador de vídeo 20 también puede codificar por entropía elementos de sintaxis asociados con los datos de vídeo codificados para su uso por el decodificador de vídeo 30 al decodificar los datos de vídeo.
Para realizar CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo de contexto a un símbolo que va a transmitirse. El contexto puede relacionarse con, por ejemplo, si los valores vecinos del símbolo son distintos de cero o no. El codificador de vídeo 20 también puede codificar por entropía elementos de sintaxis, tales como una bandera de coeficiente significativo y una última bandera de coeficiente producido cuando se realiza una exploración adaptativa.
En general, el proceso de decodificación de vídeo realizado por el decodificador de vídeo 30 puede incluir técnicas recíprocas a las técnicas de codificación realizadas por el codificador de vídeo 20. Aunque generalmente es recíproco, el decodificador de vídeo 30 puede, en algunos casos, realizar técnicas similares a las realizadas por el codificador de vídeo 20. El decodificador de vídeo 30 también puede depender de elementos de sintaxis u otros datos contenidos en un flujo de bits recibido que incluye los datos descritos con respecto al codificador de vídeo 20.
De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden implementar las técnicas de esta divulgación para limitar la cantidad de datos de los bloques vecinos que se almacenan en memoria intermedia durante la codificación por entropía. Por ejemplo, en lugar de usar datos de bloques vecinos superiores como información de contexto cuando se codifica un bloque actual, en algunos ejemplos, el codificador de vídeo 20 y/o decodificador de vídeo 30 pueden determinar el contexto basándose en una característica del elemento de sintaxis o bloque que se está codificando. En otros ejemplos, el codificador de vídeo 20 y/o decodificador de vídeo 30 pueden determinar el contexto basándose en datos desde los bloques vecinos a la izquierda cuando se codifica el bloque actual. En aún otros ejemplos, el codificador de vídeo 20 y/o decodificador de vídeo 30 pueden determinar el contexto basándose en datos desde un bloque vecino superior, pero solo cuando el bloque actual es un subbloque de una partición más grande (por ejemplo, una LCU). Además, en algunos casos, el codificador de vídeo 20 y/o decodificador de vídeo 30 pueden realizar una o más técnicas de esta divulgación en combinación.
El codificador de vídeo 20 y decodificador de vídeo 30 puede implementarse cada uno como cualquiera de una diversidad de circuitería de codificador o decodificador adecuados, según sea aplicable, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), campos de matrices de puertas programables (FPGA), circuitería lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador de vídeo 20 y decodificador de vídeo 30 puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador de vídeo combinado (CÓDEC). Un dispositivo que incluye un codificador de vídeo 20 y/o decodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador, y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
La figura 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas descritas en esta divulgación para codificar por entropía datos de vídeo. El codificador de vídeo 20 puede realizar intra e intercodificación de bloques de vídeo dentro de cortes de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de un fotograma o imagen de vídeo dado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de fotogramas o imágenes adyacentes de una secuencia de vídeo. Intramodo (modo I) puede referirse a cualquiera de varios modos de compresión basados en el espacio. Intermodos, tal como la predicción unidireccional (modo P) o bipredicción (modo B), pueden referirse a cualquiera de varios modos de compresión basados en el tiempo.
Como se muestra en la figura 2, el codificador de vídeo 20 recibe datos de vídeo a codificar. En el ejemplo de la figura 2, el codificador de vídeo 20 incluye una unidad de selección de modo 40, sumador 50, unidad de transformada 52, unidad de cuantificación 54, unidad de codificación por entropía 56, y memoria de imágenes de referencia 64. La unidad de selección de modo 40, a su vez, incluye la unidad de estimación de movimiento 42, unidad de compensación
de movimiento 44, unidad de intrapredicción 46, y unidad de partición 48. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye la unidad de cuantificación inversa 58, unidad de transformada inversa 60, y el sumador 62. Un filtro de desbloqueo (no mostrado en la figura 2) también puede incluirse para filtrar límites de bloques para eliminar los artefactos de bloqueo desde el vídeo reconstruido. Si se desea, el filtro de desbloqueo filtraría típicamente la salida del sumador 62. También se pueden usar filtros de bucle adicionales (en bucle o bucle posterior) además del filtro de desbloqueo. Tales filtros no se muestran por brevedad, pero si se desea, pueden filtrar la salida del sumador 50 (como un filtro en bucle).
Durante el proceso de codificación, el codificador de vídeo 20 recibe un fotograma o corte de vídeo que va a codificarse. El fotograma o el corte se puede dividir en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y unidad de compensación de movimiento 44 realizan la codificación interpredictiva del bloque de vídeo recibido en relación con uno o más bloques en uno o más fotogramas de referencia para proporcionar compresión temporal. La unidad de intrapredicción 46 puede realizar, como alternativa, una codificación intrapredictiva del bloque de vídeo recibido en relación con uno o más bloques vecinos en el mismo fotograma o corte que el bloque que va a codificarse para proporcionar compresión espacial. El codificador de vídeo 20 puede realizar múltiples pasadas de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de vídeo.
Además, la unidad de partición 48 puede particionar bloques de datos de vídeo en subbloques, basándose en la evaluación de esquemas de partición previos en pasadas de codificación previas. Por ejemplo, la unidad de partición 48 puede particionar inicialmente un fotograma o corte en LCU, y particionar cada una de las LCU en subCU basándose en el análisis de tasa-distorsión (por ejemplo, optimización de tasa-distorsión). La unidad de selección de modo 40 puede producir además una estructura de datos de árbol cuádruple indicativa de la partición de una LCU en subCU. Las CU de nodo de hoja del árbol cuádruple pueden incluir una o más PU y una o más TU.
La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, basándose en resultados de error, y proporcionar el bloque intra o intercodificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como un fotograma de referencia. La unidad de selección de modo 40 también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores intramodo, información de partición, y otra de tal información de sintaxis, a la unidad de codificación por entropía 56.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generar vectores de movimiento, que estiman el movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de un fotograma o imagen de vídeo actual en relación con un bloque predictivo dentro de un fotograma de referencia (u otra unidad codificada) en relación con el bloque actual que se está codificando dentro del fotograma actual (u otra unidad codificada).
Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con el bloque que va a codificarse, en términos de diferencia de píxeles, que puede determinarse mediante la suma de diferencia absoluta (SAD), suma de diferencia cuadrada (SSD), u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxeles subenteros de imágenes de referencia almacenadas en la memoria de fotogramas de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel, u otras posiciones de píxeles fraccionales de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento en relación con las posiciones de píxeles completos y posiciones de píxeles fraccionales y emitir un vector de movimiento con precisión de píxeles fraccionales.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un corte intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse desde una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de fotogramas de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar extraer o generar el bloque predictivo basándose en el vector de movimiento determinado por la unidad de estimación de movimiento 42. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar integradas funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede ubicar el bloque predictivo al cual apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual restando los valores de píxeles del bloque predictivo de los valores de píxeles del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxeles, como se analiza a continuación. En general, la unidad de estimación de movimiento 42 realiza una estimación de movimiento en relación con los componentes de luma, y la
unidad de compensación de movimiento 44 usa vectores de movimiento calculados basándose en los componentes de luma tanto para los componentes de croma como para componentes de luma. La unidad de selección de modo 40 también puede generar elementos de sintaxis asociados con los bloques de vídeo y el corte de vídeo para su uso por el decodificador de vídeo 30 al decodificar los bloques de vídeo del corte de vídeo.
La unidad de intrapredicción 46 puede intrapredecir un bloque actual, como una alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de intrapredicción 46 puede determinar un modo de intrapredicción para usar para codificar un bloque actual. En algunos ejemplos, la unidad de intrapredicción 46 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pasadas de codificación separadas, y la unidad de intrapredicción 46 (o unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado para su uso desde los modos probados.
Por ejemplo, la unidad de intrapredicción 46 puede calcular valores de tasa-distorsión usando un análisis de tasadistorsión para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tiene las mejores características de tasa-distorsión entre los modos probados. El análisis de tasa-distorsión generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque no codificado original que fue codificado para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) que se usa para producir el bloque codificado. La unidad de intrapredicción 46 puede calcular las relaciones a partir de las distorsiones y tasas para los diversos bloques codificados para determinar cuál modo de intrapredicción muestra el mejor valor de tasa-distorsión para el bloque.
El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción desde la unidad de selección de modo 40 desde el bloque de vídeo original que se está codificando. El sumador 50 representa el componente o componentes que realizan esta operación de resta. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficiente de transformada residual. La unidad de procesamiento de transformada 52 puede realizar otras transformadas que son conceptualmente similares a DCT. También se podrían usar transformadas de ondículas, transformadas de números enteros, transformadas de subbandas u otros tipos de transformadas. En cualquier caso, la unidad de procesamiento de transformada 52 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual desde un dominio de valor de píxeles a un dominio de la transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir adicionalmente la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54, a continuación, puede realizar una exploración de la matriz que incluye los coeficientes de transformada cuantificados. Como alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
Después de la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. La unidad de codificación por entropía 56 realiza una codificación aritmética binaria adaptativa basada en el contexto (CABAC). En el caso de codificación por entropía basada en el contexto, el contexto puede basarse en bloques vecinos.
Con respecto a CABAC, la unidad de codificación por entropía 56 puede seleccionar un modelo de contexto que opera en el contexto para codificar símbolos asociados con un bloque de datos de vídeo. Por ejemplo, la unidad de codificación por entropía 56 puede codificar por entropía cada elemento de sintaxis para un bloque de datos de vídeo usando estimaciones de probabilidad para cada elemento de sintaxis. Las estimaciones de probabilidad pueden indicar una probabilidad de que un elemento tenga un valor dado. Las estimaciones de probabilidad pueden incluirse dentro de un modelo de probabilidad, también denominado como un modelo de contexto. La unidad de codificación por entropía 56 puede seleccionar un modelo de contexto determinando información de contexto (o, más simplemente, "contexto") para el elemento de sintaxis. Se define un modelo de probabilidad diferente para cada contexto. Después de codificar el elemento de sintaxis, la unidad de codificación por entropía 56 puede actualizar el modelo de contexto seleccionado basándose en un valor real del elemento de sintaxis para reflejar las estimaciones de probabilidad más actuales. Es decir, por ejemplo, la unidad de codificación por entropía 56 puede actualizar la manera en la cual se selecciona un modelo de contexto para pasar a un nuevo modelo de contexto.
En algunos ejemplos, el contexto para un elemento de sintaxis particular puede incluir valores de elementos de sintaxis relacionados de elementos de sintaxis vecinos codificados previamente. Por ejemplo, la unidad de codificación por entropía 56 puede determinar el contexto para codificar un elemento de sintaxis actual basándose en elementos de sintaxis vecinos posicionados en la parte superior y a la izquierda del elemento de sintaxis actual. Como se ha indicado anteriormente, la norma de HEVC emergente permite que una LCU se particione de manera recursiva en subCU tan pequeñas como 4x4 píxeles. Por consiguiente, una imagen de 1920x1080 píxeles (por ejemplo, para vídeo de 1080p)
puede incluir hasta 495 bloques de 4x4 píxeles en una memoria intermedia de línea que se extiende horizontalmente a través de una imagen. Si el codificador de vídeo 20 almacena en memoria intermedia un bit de información de contexto por bloque, el codificador de vídeo 20 puede almacenar en memoria intermedia 495 bits de información.
De acuerdo con las técnicas de esta divulgación, la unidad de codificación por entropía 56 puede determinar el contexto para codificar por entropía datos de vídeo de tal forma que reduzca o elimine la cantidad de información que se almacena en memoria intermedia por el codificador de vídeo 20. Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de usar datos de bloques vecinos superiores como contexto cuando se codifican elementos de sintaxis asociados con un bloque actual (por ejemplo, un bloque que no está en la fila superior de una unidad codificada, por ejemplo, un fotograma o un corte), la unidad de codificación por entropía 56 puede usar solo datos desde bloques vecinos a la izquierda.
Como otro ejemplo, la unidad de codificación por entropía 56 puede usar datos desde un bloque vecino superior como contexto para codificar elementos de sintaxis asociados con un bloque actual, pero solo cuando el bloque actual es una subCU de una unidad de codificación más grande (LCU) particionada, y el bloque vecino superior está dentro de la misma LCU. En otras palabras, la unidad de codificación por entropía 56 puede configurarse para evitar usar información de contexto que cruza un límite de LCU superior.
Como otro ejemplo más, la unidad de codificación por entropía 56 puede derivar el contexto para codificar elementos de sintaxis asociados con un bloque actual basándose en información de LCU local. Por ejemplo, la unidad de codificación por entropía 56 puede derivar información de contexto para datos interpredichos basándose en la profundidad de CU, que generalmente corresponde a un número de veces que se ha particionado una LCU para alcanzar la CU. En un ejemplo con propósitos de explicación, supóngase que una LCU es de 64x64 píxeles en tamaño (profundidad cero). Una subCU de la LCU puede ser de 32x32 píxeles en tamaño en profundidad de CU de uno, mientras que subCU adicional de la subCU puede ser de 16x16 píxeles en tamaño en profundidad de CU de dos.
De acuerdo con las técnicas de esta divulgación, la unidad de codificación por entropía 56 puede determinar el contexto para datos interpredichos de un bloque actual basándose en la profundidad de Cu del bloque actual. Es decir, por ejemplo, la profundidad de CU uno puede corresponder a un modelo de probabilidad diferente que la profundidad de CU dos. En otras palabras, cuando se codifican elementos de sintaxis para una CU a una profundidad de CU particular, la unidad de codificación por entropía 56 puede usar la profundidad de CU como información de contexto para seleccionar un modelo de probabilidad para codificar los elementos de sintaxis.
La unidad de codificación por entropía 56 deriva información de contexto para datos intrapredichos basándose en información de profundidad de transformada. La información de profundidad de transformada puede ser similar a la profundidad de CU, pero describe el número de veces que se particiona una TU (por ejemplo, se particiona de acuerdo con una estructura de RQT). Por consiguiente, la profundidad de TU uno corresponde a un modelo de probabilidad diferente al de la profundidad de TU dos. En otras palabras, cuando se codifican elementos de sintaxis para una TU a una profundidad de TU particular, la unidad de codificación por entropía 56 usa la profundidad de TU como información de contexto para seleccionar un modelo de probabilidad para codificar los elementos de sintaxis.
Después de la codificación por entropía mediante la unidad de codificación por entropía 56, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, el decodificador de vídeo 30) o archivarse para posterior transmisión o recuperación. La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de los píxeles, por ejemplo, para su uso posterior como un bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de uno de los fotogramas de memoria de fotogramas de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad de compensación de movimiento 44 para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria de fotogramas de referencia 64. El bloque de vídeo reconstruido puede usarse por la unidad de estimación de movimiento 42 y unidad de compensación de movimiento 44 como un bloque de referencia para intercodificar un bloque en un fotograma de vídeo posterior.
De esta manera, el codificador de vídeo 20 es un ejemplo de un codificador de vídeo que puede realizar un método que incluye determinar la información de contexto para un bloque de datos de vídeo, donde el bloque se incluye dentro de una unidad codificada de datos de vídeo, donde el bloque está debajo de una fila superior de bloques en la unidad codificada, y donde la información de contexto no incluye información desde un bloque vecino superior en la unidad codificada. El método también puede incluir datos de codificación por entropía del bloque usando la información de contexto determinada
La figura 3 es un diagrama de bloques que ilustra un decodificador de vídeo 30 de ejemplo que puede implementar las técnicas descritas en esta divulgación para codificar por entropía datos de vídeo. En el ejemplo de la figura 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 80, unidad de predicción 81, unidad de cuantificación inversa 86, unidad de transformación inversa 88, sumador 90, y memoria de imágenes de referencia 92.
La unidad de predicción 81 incluye la unidad de compensación de movimiento 82 y la unidad de intrapredicción 84.
Durante el proceso de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un corte de vídeo codificado y elementos de sintaxis asociados desde el codificador de vídeo 20. La unidad de decodificación por entropía 80 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento, y otros elementos de sintaxis.
El decodificador de vídeo 30 puede recibir los elementos de sintaxis en el nivel de corte de vídeo y/o en el nivel de bloque de vídeo. Por ejemplo, a modo de antecedentes, el decodificador de vídeo 30 puede recibir datos de vídeo comprimidos que se han comprimido para su transmisión a través de una red en las denominadas "unidades de capa de abstracción de red" o unidades de NAL. Cada unidad de NAL puede incluir un encabezado que identifica un tipo de datos almacenados en la unidad de NAL. Hay dos tipos de datos que se almacenan comúnmente en unidades de NAL. El primer tipo de datos almacenados en una unidad de NAL son datos de capa de codificación de vídeo (VCL), que incluyen los datos de vídeo comprimidos. El segundo tipo de datos almacenados en una unidad de NAL se denomina como datos de no VCL, que incluyen información adicional tales como conjuntos de parámetros que definen datos de encabezado comunes a un gran número de unidades de NAL e información de mejora complementaria (SEI). Por ejemplo, los conjuntos de parámetros pueden contener la información de encabezado de nivel de secuencia (por ejemplo, en conjuntos de parámetros de secuencia (SPS)) y la información de encabezado de nivel de imagen que cambia con poca frecuencia (por ejemplo, en conjuntos de parámetros de imagen (PPS)). La información que cambia con poca frecuencia contenida en los conjuntos de parámetros no necesita repetirse para cada secuencia o imagen, mejorando de esta manera la eficiencia de codificación. Además, el uso de conjuntos de parámetros permite la transmisión fuera de banda de información de encabezado, evitando de esta manera la necesidad de transmisiones redundantes para la resistencia frente a errores.
La unidad de decodificación por entropía 80 puede configurarse de manera similar a la unidad de codificación por entropía 56, como se ha descrito anteriormente con respecto al codificador de vídeo 20 de la figura 2. Por ejemplo, la unidad de codificación por entropía 80 puede seleccionar un modelo de contexto que opera en contexto para decodificar símbolos asociados con un bloque de datos de vídeo. Es decir, la unidad de codificación por entropía 80 puede codificar por entropía cada elemento de sintaxis para un bloque de datos de vídeo usando estimaciones de probabilidad para cada elemento de sintaxis. De acuerdo con las técnicas de esta divulgación, la unidad de codificación por entropía 80 puede determinar el contexto para codificar por entropía datos de vídeo de tal forma que reduzca o elimine la cantidad de información que se almacena en memoria intermedia por el decodificador de vídeo 30. Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de usar datos de bloques vecinos superiores como contexto cuando se codifican elementos de sintaxis asociados con un bloque actual (por ejemplo, un bloque que no está en la fila superior de una unidad codificada, por ejemplo, un fotograma o un corte), la unidad de codificación por entropía 80 puede usar solo datos desde bloques vecinos a la izquierda.
Como otro ejemplo, la unidad de codificación por entropía 80 puede usar datos desde un bloque vecino superior como contexto para decodificar elementos de sintaxis asociados con un bloque actual, pero solo cuando el bloque actual es una subCU de una unidad de codificación más grande (LCU) particionada, y el bloque vecino superior está dentro de la misma LCU. En otras palabras, la unidad de codificación por entropía 80 puede configurarse para evitar usar un contexto que cruza un límite de LCU superior. Como otro ejemplo más, la unidad de codificación por entropía 80 puede derivar contexto para decodificar elementos de sintaxis asociados con un bloque actual basándose en información de LCU local (por ejemplo, profundidad de CU, profundidad de TU, o similar). En otro ejemplo, la unidad de codificación por entropía 80 puede usar un único contexto para decodificar ciertos elementos de sintaxis basándose en los elementos mismos. La unidad de codificación por entropía 80, en algunos casos, puede usar una combinación de estas técnicas para determinar el contexto. Después de determinar el contexto para decodificar un elemento de sintaxis particular, la unidad de codificación por entropía 80 puede seleccionar un modelo de probabilidad que corresponde al contexto, y decodificar el elemento de sintaxis usando el modelo de probabilidad seleccionado.
La unidad de decodificación por entropía 80 reenvía los vectores de movimiento y otros elementos de sintaxis decodificados a la unidad de predicción 81. Cuando el corte de vídeo se codifica como un corte intracodificado (I), la unidad de intrapredicción 84 de la unidad de predicción 81 puede generar datos de predicción para un bloque de vídeo del corte de vídeo actual basándose en un modo de intrapredicción señalizado y datos desde bloques previamente decodificados del fotograma o imagen actual. Cuando el fotograma de vídeo se codifica como un corte intercodificado (es decir, B, P o GPB), la unidad de compensación de movimiento 82 de la unidad de predicción 81 produce bloques predictivos para un bloque de vídeo del corte de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de decodificación por entropía 80. Los bloques predictivos pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de fotogramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción por defecto basándose en imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
La unidad de compensación de movimiento 82 determina información de predicción para un bloque de vídeo del corte de vídeo actual analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad
de compensación de movimiento 82 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) usado para codificar los bloques de vídeo del corte de vídeo, un tipo de corte de interpredicción (por ejemplo, corte B, corte P, o corte GPB), información de construcción para una o más de las listas de imágenes de referencia para el corte, vectores de movimiento para cada bloque de vídeo intercodificado del corte, estado de interpredicción para cada bloque de vídeo intercodificado del corte, y otra información para decodificar los bloques de vídeo en el corte de vídeo actual.
La unidad de compensación de movimiento 82 también puede realizar interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento 82 puede usar filtros de interpolación como se usan por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles subenteros de bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 86 cuantifica a la inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo en el corte de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debe aplicarse.
La unidad de transformada inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de números enteros inversa, o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de los píxeles. De acuerdo con los aspectos de esta divulgación, la unidad de transformada inversa 88 puede determinar la manera en la que se aplicaron las transformadas a los datos residuales. Es decir, por ejemplo, la unidad de transformada inversa 88 puede determinar un RQT que representa la manera en la que se aplicaron las transformadas (por ejemplo, DCT, transformada de números enteros, transformada de ondículas, o una o más de otras transformadas) a las muestras de luma residual y a las muestras de croma residual asociadas con un bloque de datos de vídeo recibido.
Después de que la unidad de compensación de movimiento 82 genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis, el decodificador de vídeo 30 forma un bloque de vídeo decodificado sumando los bloques residuales desde la unidad de transformada inversa 88 con los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 82. El sumador 90 representa el componente o componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de desbloqueo para filtrar los bloques decodificados para eliminar los artefactos de bloqueo. También se pueden usar otros filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxeles, o mejorar de otro modo la calidad de vídeo. Los bloques de vídeo decodificados en un fotograma o imagen dado se almacenan a continuación en la memoria de imágenes de referencia 92, que almacena imágenes de referencia usadas para la compensación de movimiento posterior. La memoria de imágenes de referencia 92 también almacena vídeo decodificado para una presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1. De esta manera, el decodificador de vídeo 30 es un ejemplo de un decodificador de vídeo que puede realizar un método que incluye determinar información de contexto para un bloque de datos de vídeo, donde el bloque se incluye dentro de una unidad codificada de datos de vídeo, donde el bloque está debajo de una fila superior de bloques en la unidad codificada, y donde la información de contexto no incluye información desde un bloque vecino superior en la unidad codificada. El método también puede incluir decodificar por entropía datos del bloque usando la información de contexto determinada
Las figuras 4A y 4B son diagramas conceptuales que ilustran un árbol cuádruple 150 de ejemplo y una unidad de codificación más grande 172 correspondiente. La figura 4A representa un árbol cuádruple 150 de ejemplo, que incluye nodos dispuestos de una forma jerárquica. El árbol cuádruple 150 puede estar asociado con, por ejemplo, un bloque de árbol de acuerdo con la norma de HEVC propuesta. Cada nodo en un árbol cuádruple, tal como el árbol cuádruple 150, puede ser un nodo de hoja sin hijos, o tener cuatro nodos hijos. En el ejemplo de la figura 4A, el árbol cuádruple 150 incluye el nodo raíz 152. El nodo raíz 152 tiene cuatro nodos hijos, incluyendo los nodos de hoja 156A-156C (nodos de hoja 156) y el nodo 154. Debido a que el nodo 154 no es un nodo de hoja, el nodo 154 incluye cuatro nodos hijos que, en este ejemplo, son los nodos de hoja 158A-158D (nodos de hoja 158).
El árbol cuádruple 150 puede incluir datos que describen características de una unidad de codificación más grande (LCU) correspondiente, tal como la LCU 172 en este ejemplo. Por ejemplo, el árbol cuádruple 150, por su estructura, puede describir la división de la LCU en subCU. Se supone que la LCU 172 tiene un tamaño de 2Nx2N. La LCU 172, en este ejemplo, tiene cuatro subCU 176A-176C (las subCU 176) y 174, cada una de tamaño NxN. La subCU 174 se divide además en cuatro subCU 178A-178D (las subCU 178), cada una de tamaño N/2xN/2. La estructura del árbol cuádruple 150 corresponde a la división de la LCU 172, en este ejemplo. Es decir, el nodo raíz 152 corresponde a la LCU 172, los nodos de hoja 156 corresponden a las subCU 176, el nodo 154 corresponde a la subCU 174, y los nodos de hoja 158 corresponden a las subCU 178.
Los datos para nodos de árbol cuádruple 150 pueden describir si la CU que corresponde al nodo está dividida. Si la
CU está dividida, pueden estar presentes cuatro nodos adicionales en el árbol cuádruple 150. En algunos ejemplos, un nodo de un árbol cuádruple puede implementarse similar al siguiente pseudocódigo:
quadtree_node {
boolean split_flag(1);
// datos de señalización
if (split flag) {
quadtree_node child1;
quadtree_node child2;
quadtree_node child3;
quadtree_node child4;}}
El valor de split_flag puede ser un valor de un bit representativo de si la CU que corresponde al nodo actual está dividida. Si la CU no está dividida, el valor de bandera de división puede ser '0', mientras que, si la CU está dividida, el valor de split_flag puede ser '1'. Con respecto al ejemplo de árbol cuádruple 150, una matriz de valores de bandera de división puede ser 101000000.
Como se ha indicado anteriormente, la profundidad de CU puede referirse a la medida en que se ha dividido una LCU, tal como la LCU 172. Por ejemplo, el nodo raíz 152 puede corresponder a la profundidad de CU cero, mientras que el nodo 154 y los nodos de hoja 156 pueden corresponder a la profundidad de CU uno. Además, los nodos de hoja 158 pueden corresponder a la profundidad de CU dos. De acuerdo con aspectos de esta divulgación, la profundidad de CU y/o TU puede usarse como contexto para codificar por entropía ciertos elementos de sintaxis. En un ejemplo con propósitos de explicación, uno o más elementos de sintaxis asociados con el nodo de hoja 156A pueden codificarse por entropía usando un modelo de contexto diferente al del nodo de hoja 158A, debido a que el nodo de hoja 156A está ubicado en la profundidad uno, mientras que el nodo de hoja 158A está ubicado en la profundidad dos.
Mientras que la figura 4A ilustra un ejemplo de un árbol cuádruple de CU, debe entenderse que se puede aplicar un árbol cuádruple similar a las TU de una CU de nodo de hoja. Es decir, una CU de nodo de hoja puede incluir un árbol cuádruple de TU (denominado como un árbol cuádruple residual (RQT)) que describe la partición de las TU para la CU. Un árbol cuádruple de TU puede parecerse generalmente a un árbol cuádruple de CU, excepto que el árbol cuádruple de TU puede señalizar modos de intrapredicción para las TU de la CU individualmente.
De acuerdo con las técnicas de esta divulgación, un codificador de vídeo (por ejemplo, el codificador de vídeo 20 y/o decodificador de vídeo 30) puede determinar el contexto para los datos interpredichos de un bloque actual basándose en la profundidad de CU del bloque actual. Es decir, por ejemplo, cuando se codifican elementos de sintaxis para una CU a una profundidad de CU particular, el codificador de vídeo puede usar la profundidad de CU como información de contexto para seleccionar un modelo de probabilidad para codificar los elementos de sintaxis. El codificador de vídeo deriva información de contexto para datos intrapredichos basándose en la información de profundidad de transformada. Es decir, por ejemplo, cuando se codifican elementos de sintaxis para una TU a una profundidad de TU particular, la unidad de codificación por entropía 56 puede usar la profundidad de TU como información de contexto para seleccionar un modelo de probabilidad para codificar los elementos de sintaxis.
La figura 5 es un diagrama de bloques que ilustra bloques vecinos de ejemplo a partir de los que se puede determinar el contexto para codificar por entropía un bloque. Mientras que la figura 5 se describe con respecto al decodificador de vídeo 30, debe entenderse que las técnicas de esta divulgación pueden llevarse a cabo por una diversidad de otros codificadores de vídeo, incluyendo el codificador de vídeo 20 (figuras 1 y 2), otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDEC), y similares.
El decodificador de vídeo 30 puede recibir datos codificados por entropía asociados con el bloque actual 180. Por ejemplo, el decodificador de vídeo 30 puede recibir un mapa de significancia codificado por entropía, coeficientes de transformada, y un número de otros elementos de sintaxis para permitir que el decodificador de vídeo 30 decodifique apropiadamente el bloque actual 180. El decodificador de vídeo 30 puede determinar el contexto para uno o más de los elementos de sintaxis recibidos basándose en los valores de elementos de sintaxis asociados con el bloque vecino superior 182 y el bloque vecino a la izquierda 184.
Se supone, con propósitos de explicación, que el decodificador de vídeo 30 está decodificando actualmente un elemento de sintaxis que indica un modo de predicción particular (por ejemplo, un modo de intrapredicción) de píxeles dentro del bloque actual 180. En este ejemplo, el decodificador de vídeo 30 puede identificar los modos de intrapredicción desde el bloque vecino superior 182 y el bloque vecino a la izquierda 184 para determinar el contexto para el elemento de sintaxis actual. Por consiguiente, un modelo de contexto usado para decodificar por entropía el elemento de sintaxis actual puede depender de los modos de intrapredicción del bloque vecino superior 182 y del bloque vecino a la izquierda 184. Por lo tanto, el decodificador de vídeo 30 puede almacenar, o almacenar en memoria intermedia datos que indiquen los modos de intrapredicción del bloque vecino superior 182 y del bloque vecino a la izquierda 184, de tal manera que tales datos estén disponibles cuando se realiza la decodificación por entropía.
Mientras que se describe codificar por entropía un elemento de sintaxis asociado a un modo de intrapredicción con propósitos de ejemplo, otros elementos de sintaxis también pueden codificarse basándose en datos de bloques vecinos. Por ejemplo, con respecto a la norma de HEVC emergente, los siguientes elementos de sintaxis pueden codificarse por entropía usando un contexto que incluye datos desde los bloques vecinos, incluyendo el bloque vecino superior 182 y bloque vecino a la izquierda 184:
1. skip_flag[ x0 ][ y0 ].
a) skip_flag igual a 1 especifica que, para la CU actual, cuando se decodifica un corte P o B, no se analizan elementos de sintaxis adicionales después de skip_flag[ x0 ][ y0 ], distintos de los índices de predictores de vector de movimiento. skip_flag[ x0 ][ y0 ] igual a 0 especifica que la unidad de codificación no se omite. Los índices de matriz x0, y0 especifican la ubicación (x0, y0) de la muestra de luma superior izquierda del bloque de codificación en relación con la muestra de luma superior izquierda de la imagen.
2. split_coding_unit_flag
a) split_coding_unit_flag[ x0 ][ y0 ] especifica si una unidad de codificación se divide en unidades de codificación con tamaño medio horizontal y vertical. Los índices de matriz x0, y0 especifican la ubicación ( x0, y0 ) de la muestra de luma superior izquierda del bloque de codificación en relación con la muestra de luma superior izquierda de la imagen.
3. cbp de bloque de luma
a) El patrón de bloque codificado (CBP) especifica cuáles bloques de luma contienen niveles de coeficiente de transformada distintos de cero. Es decir, el CBP de un bloque de luma puede corresponder a una o más banderas de bloque codificado, teniendo cada una de las banderas de bloque codificado un valor indicativo de si un bloque de luma respectivo está codificado (incluye uno o más valores de nivel de coeficiente de transformada distinto de cero) o no codificado (incluye todos los coeficientes de transformada de valor cero).
4. cbp de bloque de croma
a) El patrón de bloque codificado (CBP) especifica cuáles bloques de croma contienen niveles de coeficiente de transformada distintos de cero. Es decir, el CBP de un bloque de croma puede corresponder a una o más banderas de bloque codificado, teniendo cada una de las banderas de bloque codificado un valor indicativo de si un bloque de croma respectivo está codificado (incluye uno o más valores de nivel de coeficiente de transformada distinto de cero) o no codificado (incluye todos los coeficientes de transformada de valor cero).
5. bin0 de intramodo de croma
a) intra_chroma_pred_mode[ x0 ][ y0 ] especifica el modo de intrapredicción para muestras de croma. Los índices de matriz x0, y0 especifican la ubicación ( x0, y0 ) de la muestra de luma superior izquierda del bloque de predicción (PU) en relación con la muestra de luma superior izquierda de la imagen.
6. no_residual_data_flag
a) no_residual_data_flag igual a 1 especifica que no están presentes datos residuales para la unidad de codificación actual. no_residual_data_flag igual a 0 especifica que están presentes datos residuales para la unidad de codificación actual.
7. merge_flag
a) merge_flag[ x0 ][ y0 ] especifica si los parámetros de interpredicción para la PU actual se infieren desde una partición interpredicha vecina. Los índices de matriz x0, y0 especifican la ubicación ( x0, y0 ) de la muestra de luma superior izquierda del bloque de predicción considerado en relación con la muestra de luma superior izquierda de la imagen.
8. bin0 de ref_idx
a) ref_idx_l0[ x0 ][ y0 ] especifica el índice de imagen de referencia de lista 0 para la PU actual. Los índices de matriz x0, y0 especifican la ubicación ( x0, y0 ) de la muestra de luma superior izquierda del bloque de predicción en relación con la muestra de luma superior izquierda de la imagen.
b) ref_idx_l1[ x0 ][ y0 ] tiene la misma semántica que ref_idx_l0, con 10 y lista 0 reemplazados por 11 y lista 1, respectivamente.
c) ref_idx_lc[ x0 ][ y0 ] tiene la misma semántica que ref_idx_l0, con 10 y lista 0 reemplazados por lc y combinación de lista, respectivamente.
9. bin0 de mvd
a) mvd_l0[ x0 ][ y0 ][ compIdx ], especifica la diferencia entre un componente de vector de lista 0 que va a usarse y el vector predictivo. Los índices de matriz x0, y0 especifican la ubicación ( x0, y0 ) de la muestra de luma superior izquierda del bloque de predicción en relación con la muestra de luma superior izquierda de la imagen. A la diferencia de componente de vector de movimiento horizontal se le asigna comμldx = 0 y al componente de vector de movimiento vertical se le asigna comμldx = 1.
b) mvd_l1[ x0 ][ y0 ][ compIdx ] tiene la misma semántica que mvd_l0, con 10 y lista 0 reemplazados por 11 y lista 1, respectivamente.
c) mvd_lc[ x0 ][ y0 ][ compIdx ] tiene la misma semántica que mvd_l0, con l0 y lista 0 reemplazados por lc y combinación de lista, respectivamente.
10. inter_pred_flag
a) inter_pred_flag[ x0 ][ y0 ] especifica si se usa unipredicción o bipredicción para la unidad de predicción actual. Los índices de matriz x0, y0 especifican la ubicación ( x0, y0 ) de la muestra de luma superior izquierda del bloque de predicción en relación con la muestra de luma superior izquierda de la imagen.
11. cbp de bloque intracroma
a) El patrón de bloque codificado (CBP) especifica cuáles bloques pueden contener niveles de coeficientes de transformada distintos de cero.
Los elementos de sintaxis enumerados anteriormente se proporcionan solo con propósitos de ejemplo. Es decir, el decodificador de vídeo 30 puede usar datos desde bloques vecinos, tales como el bloque vecino superior 182 y el bloque vecino a la izquierda 184, cuando se codifica por entropía otros elementos de sintaxis asociados con el bloque actual 180.
La figura 6 es un diagrama de bloques que ilustra bloques vecinos de ejemplo a partir de los que se puede determinar el contexto para codificar por entropía un bloque, de acuerdo con aspectos de esta divulgación. Mientras que la figura 6 se describe con respecto al decodificador de vídeo 30, debe entenderse que las técnicas de esta divulgación pueden llevarse a cabo por una diversidad de otros codificadores de vídeo, incluyendo el codificador de vídeo 20 (figuras 1 y 2), otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDEC), y similares.
El decodificador de vídeo 30 puede recibir datos codificados por entropía asociados con el bloque actual 190 de la unidad codificada 191. Por ejemplo, el decodificador de vídeo 30 puede recibir un mapa de significancia codificado por entropía, coeficientes de transformada (ya sea intra o interpredichos), y un número de otros elementos de sintaxis para permitir que el decodificador de vídeo 30 decodifique apropiadamente el bloque actual 190 de la unidad codificada 191. La unidad codificada 191 generalmente puede incluir una cantidad predefinida de datos de vídeo que incluyen múltiples bloques de los datos de vídeo, tales como, por ejemplo, un corte, una pieza o conjuntos de piezas, un conjunto de frentes de onda, o cualquier otra unidad predefinida que incluya múltiples bloques de datos de vídeo. Mientras que los bloques vecinos superiores 194, los bloques vecinos a la izquierda 192, y los bloques 196 se muestran generalmente como bloques no divididos en el ejemplo de la figura 6, debe entenderse que tales bloques se pueden dividir en uno o más bloques más pequeños.
De acuerdo con aspectos de esta divulgación, en lugar de usar datos desde bloques vecinos superiores 194 (como se muestra, por ejemplo, en la figura 5) como información de contexto para determinar un modelo de probabilidad cuando se codifica un elemento de sintaxis, el decodificador de vídeo 30 puede usar solo datos de los bloques vecinos a la izquierda 192 como información de contexto para codificar por entropía el bloque actual 190. Por ejemplo, el decodificador de vídeo 30 puede no usar datos desde bloques vecinos superiores 194 o bloques 196 previamente codificados que no están posicionados adyacentes al bloque actual 190 como información de contexto para determinar un modelo de probabilidad para codificar por entropía el bloque actual 190. En este ejemplo, el decodificador de vídeo 30 puede almacenar en memoria intermedia menos datos que el ejemplo mostrado en la figura 5. Por ejemplo, se supone un tamaño de LCU máximo de 64x64 píxeles y un tamaño de CU más pequeño de 4x4 píxeles, el decodificador de vídeo 30 puede potencialmente almacenar en memoria intermedia datos asociados con solo 16 bloques de datos de vídeo (por ejemplo, 64/4 = 16 bloques vecinos a la izquierda potenciales).
De acuerdo con otros aspectos de esta divulgación, el decodificador de vídeo 30 solo puede usar datos desde bloques vecinos cuando se determina el contexto para codificar por entropía el bloque actual 190 cuando los bloques vecinos son parte de la misma LCU que el bloque actual 190. Por ejemplo, el decodificador de vídeo 30 solo puede usar datos desde bloques vecinos para determinar el contexto para el bloque actual 190 cuando el bloque actual 190 y los bloques vecinos son subCU de la misma LCU. Es decir, en algunos ejemplos, el decodificador de vídeo 30 no utiliza datos a través de un límite de LCU cuando se determina el contexto para codificar por entropía el bloque actual 190. La restricción de límite de LCU puede colocarse en los bloques vecinos superiores 194, los bloques vecinos a la izquierda 192, o tanto los bloques vecinos superiores 194 como los bloques vecinos a la izquierda 192.
De acuerdo con otros aspectos de esta divulgación, el decodificador de vídeo 30 puede determinar el contexto para codificar por entropía el bloque actual 190 basándose en la información de CU y/o LCU local asociada con el bloque actual 190. El decodificador de vídeo 30 determina el contexto para los datos interpredichos (por ejemplo, inter_pred_flag) basándose en la profundidad de CU, que corresponde a un número de veces que se ha particionado una LCU a la cual pertenece el bloque actual 190. Como otro ejemplo, el decodificador de vídeo 30 puede determinar el contexto para los datos intrapredichos (por ejemplo, cbp de bloque de intra croma) basándose en la profundidad de TU, que corresponde generalmente a un número de veces que se ha particionado una TU de bloque actual 190.
En algunos ejemplos, el decodificador de vídeo 30 puede usar datos desde una combinación de orígenes como información de contexto cuando se determina un modelo de probabilidad para codificar por entropía el bloque actual 190. Por ejemplo, el decodificador de vídeo 30 puede implementar cualquier combinación de las técnicas de esta divulgación cuando se determina el contexto para codificar por entropía el bloque actual 190. Es decir, en un ejemplo, el decodificador de vídeo 30 puede usar datos desde ambos bloques vecinos a la izquierda 192 (por ejemplo, excluyendo bloques vecinos superiores u otros bloques), así como datos desde información de CU y/o de LCU local asociada con el bloque actual 190 como información de contexto cuando se determina un modelo de probabilidad. En otro ejemplo, el decodificador de vídeo 30 puede usar datos desde bloques vecinos que son parte de la misma LCU que el bloque actual 190 (por ejemplo, excluyendo otros bloques vecinos), así como desde la información de CU y/o LCU local asociada con el bloque actual 190 como información de contexto cuando se determina un modelo de probabilidad.
Adicionalmente o como alternativa, el decodificador de vídeo 30 puede usar un único contexto para codificar por entropía el bloque actual 190. Por ejemplo, el decodificador de vídeo 30 puede determinar el contexto para un elemento de sintaxis particular asociado con el bloque actual 190 basándose en el propio elemento de sintaxis. En algunos ejemplos, el decodificador de vídeo 30 puede usar un único contexto para elementos de sintaxis que incluyen no_residual_data_flag, merge_flag, bin0 de ref_idx, y bin0 de mvd, como se ha descrito anteriormente con respecto a la figura 5.
Limitando las ubicaciones desde las cuales se deriva la información de contexto, como se muestra y describe en el ejemplo de la figura 6, el decodificador de vídeo 30 puede reducir la cantidad de datos que se almacenan en memoria intermedia con propósitos de derivación de contexto. Además, el decodificador de vídeo 30 puede aumentar el rendimiento y/o robustez del análisis. Por ejemplo, como se ha indicado anteriormente, el decodificador de vídeo 30 puede analizar datos de vídeo recibidos de acuerdo con un proceso de análisis particular (por ejemplo, análisis de frente de onda). En los ejemplos en los cuales el decodificador de vídeo 30 no determina el contexto usando datos desde ciertos bloques vecinos, el decodificador de vídeo 30 puede eliminar las dependencias de contexto para mejorar el rendimiento de análisis y la capacidad de procesar datos de vídeo en paralelo. Además, eliminar las dependencias de contexto puede reducir el potencial de errores de derivación de contexto, mejorando de esta manera la robustez de análisis.
La figura 7 es un diagrama de flujo que ilustra una técnica de ejemplo de codificación por entropía de un bloque de datos de vídeo. El ejemplo mostrado en la figura 7 se describe generalmente como realizado por un codificador de vídeo. Debe entenderse que, en algunos ejemplos, la técnica de la figura 7 puede llevarse a cabo mediante el codificador de vídeo 20 (figuras 1 y 2) o el decodificador de vídeo 30 (figuras 1 y 3), descritos anteriormente. En otros ejemplos, la técnica de la figura 7 puede realizarse mediante una diversidad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDEC), y similares.
El codificador de vídeo puede recibir un bloque de datos de vídeo de una unidad codificada (por ejemplo, una imagen, corte, pieza, conjunto de frentes de onda, y similares) para la codificación por entropía (200). De acuerdo con aspectos de esta divulgación, el bloque de datos de vídeo puede posicionarse debajo de una fila superior de una unidad codificada (CU). Por ejemplo, el codificador de vídeo puede determinar si el bloque que se está codificando por entropía actualmente está posicionado debajo de otra fila de bloques de la unidad codificada. En algunos ejemplos, el bloque que se está codificando por entropía actualmente puede ser una subCU que está incluida en la misma LCU que las subCU vecinas superiores. En otros ejemplos, el bloque puede posicionarse en el borde de una LCU, de tal manera que los bloques vecinos superiores pertenezcan a una lCu diferente que el bloque actual.
A continuación, el codificador de vídeo puede determinar el contexto para el bloque que no incluye información desde un bloque vecino superiores (202). Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de usar información desde bloques vecinos superiores, el codificador de vídeo puede usar información desde bloques vecinos a la izquierda cuando se determina el contexto para seleccionar un modelo de probabilidad. En algunos ejemplos, los bloques vecinos a la izquierda pueden incluirse dentro de la misma LCU que el bloque que se está codificando actualmente. En otros ejemplos, los bloques vecinos a la izquierda pueden incluirse en una LCU diferente a la del bloque que se está codificando actualmente.
En otro ejemplo, el bloque de datos de vídeo puede incluir uno o más bloques de una LCU, y los bloques vecinos superiores pueden incluir una u otras más lCu . En un ejemplo de este tipo, de acuerdo con aspectos de esta
divulgación, el codificador de vídeo puede determinar el contexto para el bloque usando información asociada con los otros bloques de la LCU, pero excluir los bloques vecinos superiores (incluidos en otras LCU). En un ejemplo con propósitos de ilustración, el bloque que se está codificando puede incluir una primera subCU de una LCU, y los bloques vecinos superiores pueden incluir una u otras más LCU. Se supone también que una segunda subCU se posiciona por encima de la primera subCU (en la misma LCU). En este ejemplo, el codificador de vídeo puede determinar información de contexto para la primera subCU usando información desde la segunda subCU, que está posicionada por encima de la primera subCU.
En otro ejemplo, de acuerdo con aspectos de esta divulgación, el codificador de vídeo puede determinar el contexto para codificar por entropía el bloque basándose en la información de CU y/o LCU local asociada con el bloque. Por ejemplo, el codificador de vídeo puede determinar el contexto basándose en la profundidad de CU o profundidad de TU (por ejemplo, de acuerdo con una estructura de árbol cuádruple, como se muestra en la figura 4), el tamaño de la LCU, u otras características. Es decir, el codificador de vídeo puede determinar el contexto para datos interpredichos basándose en la profundidad de CU, que generalmente corresponde a un número de veces que se ha particionado una LCU para alcanzar el bloque actual. El codificador de vídeo determina el contexto para datos intrapredichos basándose en la profundidad de transformada, que describe el número de veces que se ha dividido una TU para el bloque actual.
En otros ejemplos, el codificador de vídeo puede determinar el contexto para el bloque de otras maneras. Por ejemplo, de acuerdo con algunos aspectos, el codificador de vídeo puede usar un único contexto cuando codifica por entropía el bloque. Es decir, el codificador de vídeo puede determinar el contexto para codificar el bloque actual basándose en un elemento de sintaxis que se está codificando actualmente (por ejemplo, un elemento de sintaxis se mapea directamente a un cierto contexto).
En algunos ejemplos, el codificador de vídeo puede usar información desde una combinación de orígenes cuando se determina el contexto para codificar por entropía el bloque. Por ejemplo, el codificador de vídeo puede usar información tanto desde bloques vecinos a la izquierda como la información desde características de CU y/o LCU local. En otro ejemplo, el codificador de vídeo puede usar información desde bloques vecinos que son parte de la misma LCU que el bloque e información desde características de CU y/o LCU local. Después de determinar el contexto, el codificador de vídeo puede codificar por entropía el bloque usando el contexto determinado, como se ha indicado anteriormente (204).
Mientras que el proceso mostrado en la figura 7 se describe genéricamente con respecto a codificar un bloque de datos de vídeo, debe entenderse que un bloque de datos de vídeo puede incluir más de un elemento de sintaxis asociado (como se describe, por ejemplo, con respecto a las figuras 5 y 6 anteriores). Por consiguiente, el proceso mostrado y descrito en el ejemplo de la figura 7 puede llevarse a cabo múltiples veces cuando se codifica por entropía un bloque de datos de vídeo. Es decir, por ejemplo, el codificador de vídeo puede codificar por entropía algunos elementos de sintaxis asociados con el bloque de datos de vídeo de manera diferente a otros. Por lo tanto, un elemento de sintaxis puede codificarse por entropía usando el contexto basándose en una característica del bloque, mientras que otro elemento de sintaxis puede codificarse por entropía de otra manera.
También debe entenderse que las etapas mostradas y descritas con respecto a la figura 7 se proporcionan simplemente como un ejemplo. Es decir, las etapas del método de la figura 7 no necesitan realizarse necesariamente en el orden mostrado en la figura 7, y se pueden realizar menos, adicionales o etapas alternativas.
La figura 8 es un diagrama de flujo que ilustra una técnica de ejemplo de codificación por entropía de un bloque de datos de vídeo. El ejemplo mostrado en la figura 8 se describe generalmente como realizado por un codificador de vídeo. Debe entenderse que, en algunos ejemplos, la técnica de la figura 8 puede llevarse a cabo mediante el codificador de vídeo 20 (figuras 1 y 2) o el decodificador de vídeo 30 (figuras 1 y 3), descritos anteriormente. En otros ejemplos, la técnica de la figura 8 puede realizarse mediante una diversidad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDEC), y similares.
De acuerdo con algunos ejemplos, las técnicas del ejemplo mostrado en la figura 8 se pueden realizar con las técnicas mostradas en la figura 7. Por ejemplo, las técnicas del ejemplo mostrado en la figura 8 se pueden realizar durante la etapa 202 de la figura 7.
En el ejemplo de la figura 8, un codificador de vídeo determina si usar datos desde bloques vecinos a la izquierda como información de contexto para seleccionar un modelo de probabilidad para codificar por entropía un elemento de sintaxis particular (210). Por ejemplo, como se ha indicado anteriormente con respecto a la figura 7, el codificador de vídeo puede no usar información desde un bloque vecino superior cuando se determina el contexto para codificar por entropía uno o más elementos de sintaxis. De acuerdo con aspectos de esta divulgación, en lugar de usar información desde bloques vecinos superiores, el codificador de vídeo puede usar información desde bloques vecinos a la izquierda cuando se determina el contexto para seleccionar un modelo de probabilidad. En tales ejemplos (por ejemplo, la rama SÍ de la etapa 210), el codificador de vídeo puede recuperar al menos una porción de información de contexto desde bloques vecinos a la izquierda (212). En algunos ejemplos, los bloques vecinos a la izquierda pueden incluirse
dentro de la misma LCU que el bloque que se está codificando actualmente. En otros ejemplos, los bloques vecinos a la izquierda pueden incluirse en una LCU diferente a la del bloque que se está codificando actualmente.
A continuación, el codificador de vídeo puede determinar si usar datos desde otros orígenes como contexto para la codificación por entropía (214). Si el codificador de vídeo no usa datos desde los bloques vecinos a la izquierda como contexto (por ejemplo, la rama NO de la etapa 210), el codificador de vídeo puede continuar directamente a la etapa 214. En cualquier caso, el codificador de vídeo puede determinar el contexto basándose en información de CU y/o LCU local asociada con el bloque. Es decir, el codificador de vídeo puede determinar el contexto basándose en la profundidad de CU o profundidad de TU (por ejemplo, de acuerdo con una estructura de árbol cuádruple, como se muestra en la figura 4), el tamaño de la LCU, u otras características. En otros ejemplos, el codificador de vídeo puede determinar un único contexto. Es decir, el codificador de vídeo puede determinar el contexto basándose en un elemento de sintaxis que se está codificando actualmente (por ejemplo, un elemento de sintaxis se mapea directamente a un cierto contexto).
Si el codificador de vídeo usa datos desde otros orígenes como contexto (por ejemplo, la rama SÍ de la etapa 214), el codificador de vídeo puede recuperar la información de contexto apropiada desde el otro origen u orígenes (216). A continuación, el codificador de vídeo puede seleccionar un modelo de probabilidad basándose en la información de contexto determinada (218). Si el codificador de vídeo no usa datos desde otros orígenes como contexto, el codificador de vídeo puede continuar directamente a la etapa 218.
También debe entenderse que las etapas mostradas y descritas con respecto a la figura 8 se proporcionan simplemente como un ejemplo. Es decir, las etapas del método de la figura 8 no necesitan realizarse necesariamente en el orden mostrado en la figura 8, y se pueden realizar menos, adicionales o etapas alternativas.
La figura 9 es un diagrama de flujo que ilustra una técnica de ejemplo de codificación por entropía de un bloque de datos de vídeo. El ejemplo mostrado en la figura 9 se describe generalmente como realizado por un codificador de vídeo. Debe entenderse que, en algunos ejemplos, la técnica de la figura 9 puede llevarse a cabo mediante el codificador de vídeo 20 (figuras 1 y 2) o el decodificador de vídeo 30 (figuras 1 y 3), descritos anteriormente. En otros ejemplos, la técnica de la figura 9 puede realizarse mediante una diversidad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDEC), y similares.
De acuerdo con algunos ejemplos, las técnicas del ejemplo mostrado en la figura 9 se pueden realizar con las técnicas mostradas en la figura 7. Por ejemplo, las técnicas del ejemplo mostrado en la figura 9 se pueden realizar durante la etapa 202 de la figura 7.
En el ejemplo de la figura 9, un codificador de vídeo determina si usar datos desde la LCU actual como información de contexto para seleccionar un modelo de probabilidad para codificar por entropía un elemento de sintaxis particular desde la LCU actual (230). Por ejemplo, como se ha indicado anteriormente con respecto a la figura 7, en algunos casos el codificador de vídeo puede no usar información desde un bloque vecino superior cuando se determina el contexto para codificar por entropía uno o más elementos de sintaxis. Sin embargo, de acuerdo con aspectos de esta divulgación, el codificador de vídeo puede usar datos asociados con un bloque vecino superior cuando se determina el contexto, pero solo cuando el bloque vecino superior es desde la misma lCu que el bloque que se está codificando actualmente. Es decir, el codificador de vídeo puede abstenerse de cruzar un límite de lCu cuando se determina el contexto para codificar elementos de sintaxis asociados con la LCU.
En tales ejemplos (por ejemplo, la rama SÍ de la etapa 230), el codificador de vídeo puede recuperar al menos una porción de la información de contexto desde bloques para la LCU (232). A continuación, el codificador de vídeo puede determinar si usar datos desde otros orígenes como contexto para la codificación por entropía (234). Si el codificador de vídeo no usa datos desde la LCU actual como contexto (por ejemplo, la rama NO de la etapa 230), el codificador de vídeo puede continuar directamente a la etapa 234. En cualquier caso, el codificador de vídeo puede determinar el contexto basándose en la información de CU y/o LCU local asociada con el bloque. Es decir, el codificador de vídeo puede determinar el contexto basándose en la profundidad de CU o profundidad de TU (por ejemplo, de acuerdo con una estructura de árbol cuádruple, como se muestra en la figura 4), el tamaño de la LCU, u otras características. En otros ejemplos, el codificador de vídeo puede determinar un único contexto. Es decir, el codificador de vídeo puede determinar el contexto basándose en un elemento de sintaxis que se está codificando actualmente (por ejemplo, un elemento de sintaxis se mapea directamente a un cierto contexto).
Si el codificador de vídeo usa datos desde otros orígenes como contexto (por ejemplo, la rama SÍ de la etapa 234), el codificador de vídeo puede recuperar la información de contexto apropiada desde el otro origen u orígenes (236). A continuación, el codificador de vídeo puede seleccionar un modelo de probabilidad basándose en la información de contexto determinada (238). Si el codificador de vídeo no usa datos desde otros orígenes como contexto, el codificador de vídeo puede continuar directamente a la etapa 238.
También debe entenderse que las etapas mostradas y descritas con respecto a la figura 9 se proporcionan simplemente como un ejemplo. Es decir, las etapas del método de la figura 9 no necesitan realizarse necesariamente
en el orden mostrado en la figura 9, y se pueden realizar menos, adicionales o etapas alternativas.
La figura 10 es un diagrama de flujo que ilustra una técnica de ejemplo de codificación por entropía de un bloque de datos de vídeo. El ejemplo mostrado en la figura 10 se describe generalmente como realizado por un codificador de vídeo. Debe entenderse que, en algunos ejemplos, la técnica de la figura 10 puede llevarse a cabo mediante el codificador de vídeo 20 (figuras 1 y 2) o al decodificador de vídeo 30 (figuras 1 y 3), descritos anteriormente. En otros ejemplos, la técnica de la figura 8 puede realizarse mediante una diversidad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDEC), y similares.
De acuerdo con algunos ejemplos, las técnicas del ejemplo mostrado en la figura 10 se pueden realizar con las técnicas mostradas en la figura 7. Por ejemplo, las técnicas del ejemplo mostrado en la figura 10 se pueden realizar durante la etapa 202 de la figura 7.
En el ejemplo de la figura 10, un codificador de vídeo determina si usar datos desde la información de bloque local como información de contexto para seleccionar un modelo de probabilidad para codificar por entropía un elemento de sintaxis particular (260). Por ejemplo, como se ha indicado anteriormente con respecto a la figura 7, el codificador de vídeo puede no usar información desde un bloque vecino superior cuando se determina el contexto para codificar por entropía uno o más elementos de sintaxis. De acuerdo con aspectos de esta divulgación, en lugar de usar información desde bloques vecinos superiores, el codificador de vídeo puede usar datos desde información de bloque local. En tales ejemplos (por ejemplo, la rama SÍ de la etapa 210), el codificador de vídeo puede recuperar al menos una porción de información de contexto desde la información de bloque local (212).
Por ejemplo, el codificador de vídeo puede usar datos desde una o más características de una CU cuando se determina la información de contexto. Es decir, en un ejemplo, el codificador de vídeo puede codificar por entropía datos residuales interpredichos de una CU. En este ejemplo, el codificador de vídeo puede determinar una profundidad de CU cuando se determina la información de contexto para codificar por entropía los datos residuales interpredichos. En otras palabras, cuando se codifican elementos de sintaxis para una CU a una profundidad de CU particular, el codificador de vídeo puede usar la profundidad de CU como información de contexto para seleccionar un modelo de probabilidad. En un ejemplo con propósitos de ilustración, el codificador de vídeo puede codificar por entropía una bandera de interpredicción (inter_pred_flag) asociada con datos interpredichos a una profundidad de CU particular usando la profundidad de CU particular como información de contexto.
El codificador de vídeo usa datos desde una o más características de una TU cuando se determina información de contexto. Es decir, el codificador de vídeo codifica por entropía datos residuales intrapredichos de una TU. El codificador de vídeo determina una profundidad de TU cuando se determina información de contexto para codificar por entropía los datos residuales intrapredichos. En otras palabras, cuando se codifican elementos de sintaxis para una TU a una profundidad de TU particular, el codificador de vídeo usa la profundidad de TU como información de contexto para seleccionar un modelo de probabilidad. En un ejemplo con propósitos de ilustración, el codificador de vídeo puede codificar por entropía uno o más elementos de sintaxis de un patrón de bloque codificado a una profundidad de TU particular usando la profundidad de TU particular como información de contexto.
A continuación, e codificador de vídeo puede determinar si usar datos desde otros orígenes como contexto para la codificación por entropía (264). Por ejemplo, el codificador de vídeo puede determinar el contexto para la codificación por entropía usando datos desde bloques vecinos a la izquierda (por ejemplo, figura 8) o datos desde otros bloques en una LCU que se está codificando (por ejemplo, figura 9). En otros ejemplos, el codificador de vídeo puede determinar el contexto basándose en un elemento de sintaxis que se está codificando actualmente (por ejemplo, un elemento de sintaxis se mapea directamente a un cierto contexto).
Si el codificador de vídeo usa datos desde otros orígenes como contexto (por ejemplo, la rama SÍ de la etapa 264), el codificador de vídeo puede recuperar la información de contexto apropiada desde el otro origen u orígenes (266). El codificador de vídeo puede seleccionar, a continuación, un modelo de probabilidad basándose en la información de contexto determinada (268). Si el codificador de vídeo no usa datos desde otros orígenes como contexto, el codificador de vídeo puede continuar directamente a la etapa 268.
También debe entenderse que las etapas mostradas y descritas con respecto a la figura 10 se proporcionan simplemente como un ejemplo. Es decir, las etapas del método de la figura 10 no necesitan realizarse necesariamente en el orden mostrado en la figura 10, y se pueden realizar menos, adicionales o etapas alternativas.
Además, debe entenderse que, dependiendo del ejemplo, ciertos actos o eventos de cualquiera de los métodos descritos en el presente documento pueden realizarse en una secuencia diferente, pueden añadirse, fusionarse, o excluirse todos juntos (por ejemplo, no todos los actos o eventos descritos son necesarios para la práctica del método). Además, en ciertos ejemplos, los actos o eventos se pueden realizar al mismo tiempo, por ejemplo, a través de procesamiento de múltiples hilos, procesamiento de interrupciones, o múltiples procesadores, en lugar de secuencialmente. Además, aunque ciertos aspectos de esta divulgación se describen como realizados por un único módulo o unidad con propósitos de claridad, debe entenderse que las técnicas de esta divulgación pueden realizarse
mediante una combinación de unidades o módulos asociados con un codificador de vídeo.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse como una o más instrucciones o código en un medio legible por ordenador y ejecutarse por 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 tales como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación.
De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético, u otros dispositivos de almacenamiento magnético, memoria flash, o cualquier otro medio que se puede usar para almacenar código de programa deseado en la forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. También, cualquier conexión se denomina apropiadamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor, u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea de suscriptor digital (DSL), o tecnologías inalámbricas tales como infrarrojos, radio, y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL, o tecnologías inalámbricas tales como infrarrojos, radio, y microondas se incluyen en la definición de medio.
Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales, u otros medios transitorios, sino que en su lugar están dirigidos a medios de almacenamiento tangibles no transitorios. Disquete y disco, como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete flexible y disco blu-ray donde los disquetes usualmente reproducen datos magnéticamente, mientras que los discos reproducen datos ópticamente con láser. Combinaciones de los anteriores también deben incluirse dentro del alcance de medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables en campo (FPGA), u otra circuitería lógica integrada o discreta equivalente. Por consiguiente, el término "procesador", como se usa en el presente documento puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software especializados configurados para codificar y decodificar, o incorporarse en un CÓDEC combinado. También, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, incluyendo un aparato telefónico inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos, o unidades en esta divulgación para enfatizar los aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de CÓDEC o proporcionarse mediante una recolección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se ha descrito anteriormente, en conjunto con software y/o firmware adecuados.
Claims (15)
1. Un método de codificación de datos de vídeo, comprendiendo el método:
determinar datos residuales intrapredichos de una unidad de transformada, TU, particionándose la TU de acuerdo con una estructura de árbol cuádruple que tiene un nodo raíz que es una unidad de codificación de hoja; determinar (202) información de contexto para los datos residuales intrapredichos de la TU basándose en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se particiona de acuerdo con la estructura de árbol cuádruple, en donde la información de contexto no incluye información desde un bloque vecino superior de la TU; y
codificar por entropía (204) los datos residuales intrapredichos de la TU usando la información de contexto determinada,
en donde codificar por entropía los datos residuales intrapredichos de la TU comprende determinar un modelo de probabilidad basándose en la información de contexto determinada y codificar por aritmética binaria adaptativa basada en el contexto los datos residuales intrapredichos de la TU usando el modelo de probabilidad determinado.
2. El método de la reivindicación 1, en donde determinar la información de contexto comprende determinar la información de contexto para uno o más elementos de sintaxis que corresponden a una o más banderas de bloque codificado de la TU basándose en la profundidad de la TU, en donde cada una de las banderas de bloque codificado tiene un valor indicativo de si un bloque respectivo de la TU incluye uno o más niveles de coeficiente de transformada distintos de cero, y en donde codificar por entropía los datos residuales intrapredichos de la TU comprende codificar por entropía el uno o más elementos de sintaxis.
3. El método de la reivindicación 1, en donde codificar por entropía los datos residuales intrapredichos de la TU comprende:
aplicar una transformada a uno o más valores residuales de la TU para generar coeficientes de transformada; cuantificar los coeficientes de transformada para generar coeficientes de transformada cuantificados; y codificar por entropía los coeficientes de transformada cuantificados.
4. Un método de decodificación de datos de vídeo, comprendiendo el método:
determinar datos residuales intrapredichos de una unidad de transformada, TU, particionándose la TU de acuerdo con una estructura de árbol cuádruple que tiene un nodo raíz que es una unidad de codificación de hoja; determinar (202) información de contexto para los datos residuales intrapredichos de la TU basándose en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se particiona de acuerdo con la estructura de árbol cuádruple, en donde la información de contexto no incluye información desde un bloque vecino superior de la TU; y
decodificar por entropía (204) los datos residuales intrapredichos de la TU usando la información de contexto determinada,
en donde decodificar por entropía los datos residuales intrapredichos de la TU comprende determinar un modelo de probabilidad basándose en la información de contexto determinada y decodificar por aritmética binaria adaptativa basada en el contexto los datos residuales intrapredichos de la TU usando el modelo de probabilidad determinado.
5. El método de la reivindicación 4, en donde determinar la información de contexto comprende determinar la información de contexto para uno o más elementos de sintaxis que corresponden a una o más banderas de bloque codificado de la TU basándose en la profundidad de la TU, en donde cada una de las banderas de bloque codificado tiene un valor indicativo de si un bloque respectivo de la TU incluye uno o más niveles de coeficiente de transformada distintos de cero, y en donde decodificar por entropía los datos residuales intrapredichos de la TU comprende decodificar por entropía el uno o más elementos de sintaxis.
6. El método de la reivindicación 4, en donde decodificar por entropía los datos residuales intrapredichos de la TU comprende:
decodificar por entropía un flujo de bits recibido para generar coeficientes de transformada cuantificados asociados con la TU;
cuantificar a la inversa los coeficientes de transformada cuantificados para generar coeficientes de transformada; y
aplicar una transformada inversa a los coeficientes de transformada para generar valores residuales asociados con la TU.
7. Un aparato (12) para codificar datos de vídeo, comprendiendo el aparato uno o más procesadores configurados para:
determinar datos residuales intrapredichos de una unidad de transformada, TU, particionándose la TU de acuerdo
con una estructura de árbol cuádruple que tiene un nodo raíz que es una unidad de codificación de hoja; determinar (202) información de contexto para los datos residuales intrapredichos de la TU basándose en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se particiona de acuerdo con la estructura de árbol cuádruple, en donde la información de contexto no incluye información desde un bloque vecino superior de la TU; y
codificar por entropía (204) los datos residuales intrapredichos de la TU usando la información de contexto determinada,
en donde codificar por entropía los datos residuales comprende determinar un modelo de probabilidad basándose en la información de contexto determinada y codificar por aritmética binaria adaptativa basada en el contexto los datos residuales usando el modelo de probabilidad determinado.
8. El aparato de la reivindicación 7, en donde codificar por entropía los datos residuales intrapredichos de la TU comprende codificar por entropía el uno o más elementos de sintaxis que corresponden a una o más banderas de bloque codificado, en donde cada una de las banderas de bloque codificado tiene un valor indicativo de si un bloque respectivo de la TU incluye uno o más niveles de coeficiente de transformada distintos de cero.
9. El aparato de la reivindicación 7, en donde codificar por entropía los datos residuales intrapredichos de la TU comprende:
aplicar una transformada a uno o más valores residuales de la TU para generar coeficientes de transformada; cuantificar los coeficientes de transformada para generar coeficientes de transformada cuantificados; y codificar por entropía los coeficientes de transformada cuantificados.
10. Un aparato (14) para decodificar datos de vídeo, comprendiendo el aparato uno o más procesadores configurados para:
determinar datos residuales intrapredichos de una unidad de transformada, TU, particionándose la TU de acuerdo con una estructura de árbol cuádruple que tiene un nodo raíz que es una unidad de codificación de hoja; determinar (202) información de contexto para los datos residuales intrapredichos de la TU basándose en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se particiona de acuerdo con una estructura de árbol cuádruple, en donde la información de contexto no incluye información desde un bloque vecino superior de la TU; y
decodificar por entropía (204) los datos residuales intrapredichos de la TU usando la información de contexto determinada,
en donde decodificar por entropía los datos residuales comprende determinar un modelo de probabilidad basándose en la información de contexto determinada y decodificar por aritmética binaria adaptativa basada en el contexto los datos residuales usando el modelo de probabilidad determinado.
11. El aparato de la reivindicación 10, en donde decodificar por entropía los datos residuales intrapredichos de la TU comprende respectivamente decodificar por entropía el uno o más elementos de sintaxis que corresponden a una o más banderas de bloque codificado, en donde cada una de las banderas de bloque codificado tiene un valor indicativo de si un bloque respectivo de la TU incluye uno o más niveles de coeficiente de transformada distintos de cero.
12. El aparato de la reivindicación 10, en donde decodificar por entropía los datos residuales intrapredichos de la TU comprende:
decodificar por entropía un flujo de bits recibido para generar coeficientes de transformada cuantificados asociados con la TU;
cuantificar a la inversa los coeficientes de transformada cuantificados para generar coeficientes de transformada; y
aplicar una transformada inversa a los coeficientes de transformada para generar valores residuales asociados con la TU.
13. Un circuito integrado que incluye el aparato de cualquiera de las reivindicaciones 7 a 12.
14. Un aparato telefónico inalámbrico que incluye el aparato de cualquiera de las reivindicaciones 7 a 12.
15. Un medio de almacenamiento legible por ordenador que tiene almacenadas en el mismo instrucciones que, cuando se ejecutan, hacen que uno o más procesadores lleven a cabo un método de acuerdo con cualquiera de las reivindicaciones 1 a 6.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161493361P | 2011-06-03 | 2011-06-03 | |
US201161504153P | 2011-07-01 | 2011-07-01 | |
US201161546732P | 2011-10-13 | 2011-10-13 | |
US13/485,198 US8995523B2 (en) | 2011-06-03 | 2012-05-31 | Memory efficient context modeling |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2952256T3 true ES2952256T3 (es) | 2023-10-30 |
Family
ID=46208192
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES21203455T Active ES2952256T3 (es) | 2011-06-03 | 2012-06-01 | Modelado de contexto eficiente de memoria |
ES12725599T Active ES2897708T3 (es) | 2011-06-03 | 2012-06-01 | Modelado de contexto eficiente en memoria |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES12725599T Active ES2897708T3 (es) | 2011-06-03 | 2012-06-01 | Modelado de contexto eficiente en memoria |
Country Status (19)
Country | Link |
---|---|
US (1) | US8995523B2 (es) |
EP (2) | EP4007279B1 (es) |
JP (1) | JP5869108B2 (es) |
KR (1) | KR101651759B1 (es) |
CN (1) | CN103563378B (es) |
AU (1) | AU2012261975B2 (es) |
BR (1) | BR112013031006B1 (es) |
CA (1) | CA2837099C (es) |
DK (1) | DK2716044T3 (es) |
ES (2) | ES2952256T3 (es) |
HU (1) | HUE057018T2 (es) |
IL (1) | IL229265A (es) |
MX (1) | MX2013014123A (es) |
MY (1) | MY158277A (es) |
RU (1) | RU2580066C2 (es) |
SG (1) | SG194912A1 (es) |
UA (1) | UA108698C2 (es) |
WO (1) | WO2012167097A1 (es) |
ZA (1) | ZA201309671B (es) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9379736B2 (en) * | 2011-06-03 | 2016-06-28 | Qualcomm Incorporated | Context-adaptive coding video data |
MX2013013508A (es) | 2011-06-23 | 2014-02-27 | Panasonic Corp | Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes. |
USRE47366E1 (en) | 2011-06-23 | 2019-04-23 | Sun Patent Trust | Image decoding method and apparatus based on a signal type of the control parameter of the current block |
JPWO2012176465A1 (ja) * | 2011-06-24 | 2015-02-23 | パナソニック株式会社 | 復号方法及び復号装置 |
CA2830046C (en) | 2011-06-24 | 2018-09-04 | Panasonic Corporation | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
CA2842646C (en) | 2011-06-27 | 2018-09-04 | Panasonic Corporation | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
CN107105254B (zh) | 2011-06-28 | 2020-03-20 | 太阳专利托管公司 | 编码方法及编码装置 |
MX2013010892A (es) | 2011-06-29 | 2013-12-06 | Panasonic Corp | Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes. |
KR102060619B1 (ko) | 2011-06-30 | 2019-12-30 | 선 페이턴트 트러스트 | 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치 |
MY167090A (en) | 2011-06-30 | 2018-08-10 | Sun Patent Trust | Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus |
CA2989032C (en) * | 2011-07-01 | 2020-02-18 | Samsung Electronics Co., Ltd. | Method and apparatus for entropy encoding using hierarchical data unit, and method and apparatus for decoding |
CN103765885B (zh) * | 2011-07-11 | 2017-04-12 | 太阳专利托管公司 | 图像解码方法、图像编码方法、图像解码装置、图像编码装置及图像编解码装置 |
PL2732625T3 (pl) | 2011-07-15 | 2019-02-28 | Ge Video Compression Llc | Kodowanie tablicy próbek dla niskiego opóźnienia |
US20130083840A1 (en) * | 2011-09-30 | 2013-04-04 | Broadcom Corporation | Advance encode processing based on raw video data |
US9892188B2 (en) * | 2011-11-08 | 2018-02-13 | Microsoft Technology Licensing, Llc | Category-prefixed data batching of coded media data in multiple categories |
US11039138B1 (en) * | 2012-03-08 | 2021-06-15 | Google Llc | Adaptive coding of prediction modes using probability distributions |
KR101981267B1 (ko) | 2012-04-13 | 2019-05-23 | 지이 비디오 컴프레션, 엘엘씨 | 저지연 화상 코딩 |
US10085024B2 (en) * | 2012-04-13 | 2018-09-25 | Qualcomm Incorporated | Lookup table for rate distortion optimized quantization |
MX340383B (es) * | 2012-04-15 | 2016-07-07 | Samsung Electronics Co Ltd | Metodo y aparato para determinar imagenes de referencia para inter-prediccion. |
EP2866439B1 (en) | 2012-06-26 | 2020-11-04 | LG Electronics Inc. | Video decoding method and video encoding method |
US9621905B2 (en) * | 2012-06-29 | 2017-04-11 | Qualcomm Incorporated | Tiles and wavefront parallel processing |
PT2868103T (pt) | 2012-06-29 | 2017-03-02 | Ge Video Compression Llc | Conceito de fluxo de dados de vídeo |
EP2903270B1 (en) * | 2012-09-26 | 2022-04-27 | Sun Patent Trust | Image encoding method, image decoding method |
US9271010B2 (en) * | 2012-10-02 | 2016-02-23 | Futurewei Technologies, Inc. | System and method for motion estimation for large-size block |
KR101909863B1 (ko) * | 2013-07-08 | 2018-10-18 | 미디어텍 싱가폴 피티이. 엘티디. | 3d 비디오 코딩에서 단순화된 cabac 코딩의 방법 |
JP6118199B2 (ja) * | 2013-07-09 | 2017-04-19 | シャープ株式会社 | 画像復号装置、画像符号化装置、画像復号方法、画像符号化方法及びコンピュータ読み取り可能な記録媒体。 |
JP6202912B2 (ja) * | 2013-07-12 | 2017-09-27 | キヤノン株式会社 | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム |
JP6268989B2 (ja) * | 2013-11-29 | 2018-01-31 | 富士通株式会社 | 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム |
US9930341B2 (en) * | 2014-06-20 | 2018-03-27 | Qualcomm Incorporated | Block vector coding for intra block copying |
US20150373350A1 (en) * | 2014-06-20 | 2015-12-24 | Qualcomm Incorporated | Temporal motion vector prediction (tmvp) indication in multi-layer codecs |
US9936201B2 (en) | 2015-01-27 | 2018-04-03 | Qualcomm Incorporated | Contexts for large coding tree units |
US10148977B2 (en) | 2015-06-16 | 2018-12-04 | Futurewei Technologies, Inc. | Advanced coding techniques for high efficiency video coding (HEVC) screen content coding (SCC) extensions |
WO2017086765A2 (ko) * | 2015-11-22 | 2017-05-26 | 엘지전자(주) | 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치 |
EP3244610A1 (en) * | 2016-05-12 | 2017-11-15 | Thomson Licensing | Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to video data |
CN116708831A (zh) | 2017-04-24 | 2023-09-05 | Sk电信有限公司 | 编解码视频数据的方法、发送编码视频数据比特流的方法 |
AU2018295861C1 (en) | 2017-07-04 | 2023-03-16 | Samsung Electronics Co., Ltd. | Video decoding method and apparatus using multi-core transform, and video encoding method and apparatus using multi-core transform |
SG11201911621SA (en) * | 2017-07-07 | 2020-01-30 | Samsung Electronics Co Ltd | Video coding method and device, video decoding method and device |
US10506258B2 (en) * | 2017-07-13 | 2019-12-10 | Google Llc | Coding video syntax elements using a context tree |
CN118381900A (zh) | 2018-03-21 | 2024-07-23 | Lx 半导体科技有限公司 | 图像编码/解码设备以及发送图像数据的设备 |
WO2019194439A1 (ko) * | 2018-04-02 | 2019-10-10 | 엘지전자 주식회사 | 컨텍스트 기반 인트라 예측 모드 정보 코딩을 이용한 영상 코딩 방법 및 그 장치 |
CN117714717A (zh) * | 2018-09-10 | 2024-03-15 | 华为技术有限公司 | 视频解码方法及视频解码器 |
CN113906753B (zh) | 2019-04-24 | 2023-12-01 | 字节跳动有限公司 | 编解码视频的量化残差差分脉冲编解码调制表示的约束 |
WO2020223612A1 (en) | 2019-05-02 | 2020-11-05 | Bytedance Inc. | Signaling in transform skip mode |
WO2020242260A1 (ko) * | 2019-05-31 | 2020-12-03 | 한국전자통신연구원 | 전역적 문맥을 이용하는 기계 학습 기반의 이미지 압축을 위한 방법 및 장치 |
WO2021036939A1 (en) * | 2019-08-23 | 2021-03-04 | Mediatek Inc. | Method and apparatus of partitioning small size coding units with partition constraints |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2156889C (en) * | 1994-09-30 | 1999-11-02 | Edward L. Schwartz | Method and apparatus for encoding and decoding data |
US7336720B2 (en) | 2002-09-27 | 2008-02-26 | Vanguard Software Solutions, Inc. | Real-time video coding/decoding |
US8107535B2 (en) | 2003-06-10 | 2012-01-31 | Rensselaer Polytechnic Institute (Rpi) | Method and apparatus for scalable motion vector coding |
RU2406254C2 (ru) * | 2006-03-29 | 2010-12-10 | Квэлкомм Инкорпорейтед | Видеообработка с масштабируемостью |
KR101356733B1 (ko) | 2007-03-07 | 2014-02-05 | 삼성전자주식회사 | 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치 |
MX2009009489A (es) * | 2007-03-13 | 2009-11-05 | Nokia Corp | Sistema y método para codificación y decodificación de video. |
US8483282B2 (en) * | 2007-10-12 | 2013-07-09 | Qualcomm, Incorporated | Entropy coding of interleaved sub-blocks of a video block |
US8542748B2 (en) | 2008-03-28 | 2013-09-24 | Sharp Laboratories Of America, Inc. | Methods and systems for parallel video encoding and decoding |
WO2010036772A2 (en) | 2008-09-26 | 2010-04-01 | Dolby Laboratories Licensing Corporation | Complexity allocation for video and image coding applications |
CN101836454B (zh) | 2008-12-03 | 2012-08-22 | 联发科技股份有限公司 | 对有序熵切片执行平行cabac码处理的方法及装置 |
KR101457418B1 (ko) * | 2009-10-23 | 2014-11-04 | 삼성전자주식회사 | 계층적 부호화 단위의 크기에 따른 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치 |
KR101700358B1 (ko) | 2009-12-09 | 2017-01-26 | 삼성전자주식회사 | 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치 |
WO2011126277A2 (en) * | 2010-04-05 | 2011-10-13 | Samsung Electronics Co., Ltd. | Low complexity entropy-encoding/decoding method and apparatus |
SG189135A1 (en) * | 2010-09-30 | 2013-05-31 | Samsung Electronics Co Ltd | Video encoding method for encoding hierarchical-structure symbols and a device therefor, and video decoding method for decoding hierarchical-structure symbols and a device therefor |
US9497472B2 (en) | 2010-11-16 | 2016-11-15 | Qualcomm Incorporated | Parallel context calculation in video coding |
WO2012134246A2 (ko) * | 2011-04-01 | 2012-10-04 | 엘지전자 주식회사 | 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치 |
-
2012
- 2012-05-31 US US13/485,198 patent/US8995523B2/en active Active
- 2012-06-01 EP EP21203455.7A patent/EP4007279B1/en active Active
- 2012-06-01 BR BR112013031006-5A patent/BR112013031006B1/pt active IP Right Grant
- 2012-06-01 ES ES21203455T patent/ES2952256T3/es active Active
- 2012-06-01 JP JP2014513749A patent/JP5869108B2/ja active Active
- 2012-06-01 HU HUE12725599A patent/HUE057018T2/hu unknown
- 2012-06-01 ES ES12725599T patent/ES2897708T3/es active Active
- 2012-06-01 AU AU2012261975A patent/AU2012261975B2/en active Active
- 2012-06-01 CN CN201280026032.8A patent/CN103563378B/zh active Active
- 2012-06-01 MY MYPI2013004051A patent/MY158277A/en unknown
- 2012-06-01 SG SG2013083712A patent/SG194912A1/en unknown
- 2012-06-01 MX MX2013014123A patent/MX2013014123A/es active IP Right Grant
- 2012-06-01 UA UAA201315554A patent/UA108698C2/uk unknown
- 2012-06-01 DK DK12725599.0T patent/DK2716044T3/da active
- 2012-06-01 CA CA2837099A patent/CA2837099C/en active Active
- 2012-06-01 EP EP12725599.0A patent/EP2716044B1/en active Active
- 2012-06-01 RU RU2013158385/08A patent/RU2580066C2/ru active
- 2012-06-01 KR KR1020147000077A patent/KR101651759B1/ko active IP Right Grant
- 2012-06-01 WO PCT/US2012/040483 patent/WO2012167097A1/en active Application Filing
-
2013
- 2013-11-05 IL IL229265A patent/IL229265A/en active IP Right Grant
- 2013-12-20 ZA ZA2013/09671A patent/ZA201309671B/en unknown
Also Published As
Publication number | Publication date |
---|---|
RU2580066C2 (ru) | 2016-04-10 |
EP4007279A1 (en) | 2022-06-01 |
US8995523B2 (en) | 2015-03-31 |
WO2012167097A1 (en) | 2012-12-06 |
KR20140017015A (ko) | 2014-02-10 |
BR112013031006A2 (pt) | 2016-11-29 |
SG194912A1 (en) | 2013-12-30 |
BR112013031006B1 (pt) | 2022-05-17 |
KR101651759B1 (ko) | 2016-08-26 |
IL229265A0 (en) | 2014-01-30 |
UA108698C2 (uk) | 2015-05-25 |
EP4007279B1 (en) | 2023-07-19 |
DK2716044T3 (da) | 2021-11-15 |
MX2013014123A (es) | 2014-01-23 |
EP4007279C0 (en) | 2023-07-19 |
US20120328003A1 (en) | 2012-12-27 |
ZA201309671B (en) | 2016-02-24 |
AU2012261975A1 (en) | 2013-12-12 |
EP2716044A1 (en) | 2014-04-09 |
CN103563378A (zh) | 2014-02-05 |
CA2837099C (en) | 2016-10-18 |
ES2897708T3 (es) | 2022-03-02 |
IL229265A (en) | 2016-04-21 |
EP2716044B1 (en) | 2021-10-20 |
MY158277A (en) | 2016-09-30 |
JP2014522603A (ja) | 2014-09-04 |
CN103563378B (zh) | 2017-05-24 |
JP5869108B2 (ja) | 2016-02-24 |
AU2012261975B2 (en) | 2015-09-03 |
RU2013158385A (ru) | 2015-07-20 |
HUE057018T2 (hu) | 2022-04-28 |
CA2837099A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2952256T3 (es) | Modelado de contexto eficiente de memoria | |
CA3000373C (en) | Video intra-prediction using position dependent prediction combination for video coding | |
KR101825262B1 (ko) | B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한 | |
EP2820845B1 (en) | Scan-based sliding window in context derivation for transform coefficient coding | |
KR102187013B1 (ko) | 비디오 코딩에서 변환 계수 데이터를 코딩하기 위한 콘텍스트들의 결정 | |
AU2012271835B2 (en) | Border pixel padding for intra prediction in video coding | |
US9161046B2 (en) | Determining quantization parameters for deblocking filtering for video coding | |
KR102182441B1 (ko) | 비디오 코딩에서 hevc 확장들을 위한 다중 계층들의 저복잡도 지원 | |
US20150071357A1 (en) | Partial intra block copying for video coding | |
US20130163664A1 (en) | Unified partition mode table for intra-mode coding | |
US20140198855A1 (en) | Square block prediction | |
KR20140130466A (ko) | B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한 | |
WO2015031253A1 (en) | Determining regions when performing intra block copying | |
KR20140039082A (ko) | 비디오 코딩에서 예측 데이터를 버퍼링 | |
EP2832094A1 (en) | Merge signaling and loop filter on/off signaling | |
WO2013078313A1 (en) | Transforms in video coding | |
CN111200735A (zh) | 一种帧间预测的方法及装置 | |
WO2014100015A1 (en) | Deblocking filter with reduced line buffer |