ES2897708T3 - Modelado de contexto eficiente en memoria - Google Patents

Modelado de contexto eficiente en memoria Download PDF

Info

Publication number
ES2897708T3
ES2897708T3 ES12725599T ES12725599T ES2897708T3 ES 2897708 T3 ES2897708 T3 ES 2897708T3 ES 12725599 T ES12725599 T ES 12725599T ES 12725599 T ES12725599 T ES 12725599T ES 2897708 T3 ES2897708 T3 ES 2897708T3
Authority
ES
Spain
Prior art keywords
video
block
data
intra
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
Application number
ES12725599T
Other languages
English (en)
Inventor
Wei-Jung Chien
Marta Karczewicz
Xianglin Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2897708T3 publication Critical patent/ES2897708T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/436Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/423Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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/96Tree 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)
  • Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)

Abstract

Un método de codificación de datos de vídeo de Codificación de Vídeo de Alta Eficiencia, HEVC, comprendiendo el método: determinar (202) información de contexto para datos residuales intrapredichos de una unidad de transformada, TU, con base en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se divide de acuerdo con una estructura de árbol cuádruple de la cual el nodo raíz es una unidad de codificación de hoja, en donde la información de contexto no incluye información desde un bloque vecino anterior 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 con base en la información de contexto determinada y codificar por aritmética binaria adaptativa al contexto los datos residuales intrapredichos de la TU usando el modelo de probabilidad determinado.

Description

DESCRIPCIÓN
Modelado de contexto eficiente en memoria
Campo técnico
Esta divulgación se relaciona con la codificación de vídeo, y, más específicamente, con la codificación por entropía de datos de vídeo.
Antecedentes
Las capacidades de vídeo digital se pueden incorporar en un amplio rango de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión digital directa, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDAs), ordenadores portables o de escritorio, ordenadores tipo tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de juegos de vídeo, consolas de juegos de vídeo, radioteléfonos celulares o por satélite, denominados "teléfonos inteligentes", dispositivos de teleconferencia por vídeo, dispositivos de generación de flujo de vídeo, y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como los descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), el estándar de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo, y extensiones de tales estándares. 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, una sección de vídeo (es decir, un marco de vídeo o una porción de un marco de vídeo) se puede dividir en bloques de vídeo, que también pueden denominarse como bloques de árbol, unidades de codificación (CUs) y/o nodos de codificación. Los bloques de vídeo en una sección intracodificada (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 una sección intercodificada (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 marcos, y las imágenes de referencia pueden denominarse como marcos de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que va a ser codificado. Los datos residuales representan las diferencias de píxeles entre el bloque original que va a ser codificado 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 píxeles a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que luego pueden cuantificarse. Los coeficientes de transformada cuantificados, dispuestos inicialmente en un arreglo bidimensional, se pueden escanear con el fin de producir un vector unidimensional de coeficientes de transformada, y se puede aplicar codificación por entropía para lograr una compresión aún mayor.
En el documento de entrada a JCT-VC titulado "Improvement of inter mode coding and split flags coding for LCEC" de Virginie Drugeon et al (Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, quinta Reunión: Ginebra, Suiza, 16-23 de marzo de 2011, Documento: JCTVC-E258), se proponen modificaciones para la codificación de indicadores intermodo y de división en Codificación por Entropía de Baja Complejidad (LCEC). En particular, se modifica el esquema de adaptación de las tablas usadas para la codificación intermodo en LCEC así como el número de tablas. Se explotan las estadísticas de los modos y la información de partición de las CUs vecinas.
En el documento de entrada a JCT-VC titulado "CE5: Improved coefficient coding with LCEC" de Marta Karczewicz et al (Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, cuarta Reunión: Daegu, Corea, 20-28 de enero de 2011, Documento: JCTVC-D374), se reportan los resultados de codificación de las mejoras en la codificación de coeficientes.
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 Transacciones en Circuitos y Sistemas para Tecnología de Vídeo, 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 del estándar 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.
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 (2009-10-01).
Resumen
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 búfer 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 que van a ser codificados. 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 búfer la información de bloques vecinos de datos de vídeo de tal manera que tal información esté disponible para uso como información de contexto. Las técnicas de esta divulgación se relacionan con limitar la cantidad de datos desde bloques vecinos que se almacenan en búfer durante la codificación por entropía. De acuerdo con algunos aspectos de esta divulgación, un dispositivo de codificación de vídeo puede evitar usar datos desde bloques de datos de vídeo que se posicionan sobre un bloque de datos de vídeo que está actualmente siendo codificado (por ejemplo, denominados como "bloques vecinos anteriores") como información de contexto cuando se codifica el bloque actual.
Aspectos de la invención se relacionan con métodos y aparatos para codificar y decodificar datos de vídeo como se cita en las reivindicaciones independientes acompañantes.
Aspectos adicionales de la invención se relacionan con 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 realicen uno de los métodos reivindicados.
Los detalles de uno o más aspectos de la divulgación se establecen en los dibujos acompañantes y la descripción a continuación. Otras características, objetos, y ventajas de las técnicas descritas en esta divulgación serán evidentes a partir de la descripción y dibujos, y a partir de las reivindicaciones.
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 del cual 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 del cual 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
La invención se establece en las reivindicaciones.
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 marcos 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 marco previamente codificado. El codificador de vídeo puede entonces 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 píxeles (o espacial).
El codificador de vídeo puede entonces 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. El codificador de vídeo puede entonces cuantificar los coeficientes de transformada. El codificador de vídeo puede escanear 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 escaneo pueden producirse contemporáneamente. El proceso de escanear los coeficientes a veces se denomina como serialización de los coeficientes.
El codificador de vídeo puede entonces aplicar un proceso de codificación por entropía para codificar por entropía los coeficientes escaneados. Procesos de codificación por entropía de ejemplo pueden incluir, por ejemplo, codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al 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 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 no cero para los símbolos vecinos a un símbolo que es codificado actualmente.
De acuerdo con algunos ejemplos, las posiciones de los coeficientes significativos (es decir, coeficientes de transformada de no 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 un arreglo bidimensional de valores binarios que indican ubicaciones de coeficientes significativos. Por ejemplo, un SM para un bloque de datos de vídeo puede incluir un arreglo bidimensional de unos y ceros, en el cual 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 "indicadores de coeficientes significativos".
Después de que se codifica el 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 de no cero en forma binaria. De esta forma, cada coeficiente de transformada de no cero puede ser "binarizado", por ejemplo, usando un código unario que comprende uno o más bits, o "bins". Además, se puede incluir un número de otros elementos de sintaxis binarizados para permitir que un decodificador de vídeo decodifique los datos de vídeo.
Un codificador de vídeo puede codificar cada bin 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 bin. Las estimaciones de probabilidad pueden indicar una probabilidad de que un bin 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 bin. El contexto de un bin de un elemento de sintaxis puede incluir valores de bins 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 bin, el modelo de contexto se actualiza además con base en un valor del bin 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 marco 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 búfer 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 búfer para la codificación por entropía.
Las técnicas de esta divulgación generalmente se relacionan con limitar la cantidad de datos desde bloques vecinos que se almacenan en búfer durante la codificación por entropía. Por ejemplo, en lugar de usar datos de bloques vecinos anteriores 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 con base en una característica del elemento de sintaxis o bloque que es codificado. En otros ejemplos, el dispositivo de codificación de vídeo puede determinar el contexto con base 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 con base en datos desde un bloque vecino anterior, pero solo cuando el bloque actual es un subbloque de una partición más grande (por ejemplo, denominado en el estándar 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 búfer, 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 búfer menos datos, reduciendo de esa manera los requisitos de memoria asociados con tal almacenamiento en búfer.
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 sintáctico. Es decir, cuando datos de vídeo son recibidos por un codificador de vídeo, los datos de vídeo pueden analizarse de manera sintáctica, o leerse y segmentarse, de acuerdo con un proceso de análisis sintáctico particular (por ejemplo, análisis sintáctico de frente de onda). En algunos ejemplos, el proceso de análisis sintáctico puede incluir analizar de manera sintáctica cada LCU de una sección después de analizar de manera sintáctica una o más LCUs iniciales (por ejemplo, una LCU superior y/o más a la izquierda en una sección). El análisis sintáctico de las LCUs 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 LCUs analizadas de manera sintáctica.
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 de manera sintáctica hasta el punto en que son útiles los datos, y 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 son procesados. Con respecto al análisis sintáctico, esto significa que el analizador sintáctico del hilo no necesita hacer referencia a otros hilos, pero puede operar de manera independiente para cada hilo.
En un ejemplo con propósitos de ilustración, suponer que una LCU que es codificada actualmente está posicionada debajo de una fila superior de una sección, con una o más LCUs de la sección posicionadas encima de la sección 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 otras fuentes. Por consiguiente, las técnicas de esta divulgación pueden eliminar las dependencias de contexto discutidas anteriormente y mejorar el rendimiento de análisis sintáctico.
Además, en ciertos casos cuando un bloque que es codificado 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 (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 marco 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 discutidas 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 10 de codificación y decodificación de vídeo 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 12 de fuente que proporciona datos de vídeo codificados para ser decodificados en un momento posterior por un dispositivo 14 de destino. En particular, el dispositivo 12 de fuente proporciona los datos de vídeo al dispositivo 14 de destino a través de un medio 16 legible por ordenador. El dispositivo 12 de fuente y dispositivo 14 de destino pueden comprender cualquiera de un amplio rango de dispositivos, que incluyen ordenadores de escritorio, ordenadores portátiles (es decir, portables), ordenadores tipo tableta, decodificadores, aparatos telefónicos tales como los denominados teléfonos "inteligentes", denominados almohadillas "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de juegos de vídeo, dispositivo de generación de flujo de vídeo, o similares. En algunos casos, el dispositivo 12 de fuente y dispositivo 14 de destino pueden estar equipados para comunicación inalámbrica.
El dispositivo 14 de destino puede recibir los datos de vídeo codificados que van a ser decodificados a través del medio 16 legible por ordenador. El medio 16 legible por ordenador puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de vídeo codificados desde el dispositivo 12 de fuente al dispositivo 14 de destino. En un ejemplo, el medio 16 legible por ordenador puede comprender un medio de comunicación para permitir que el dispositivo 12 de fuente transmita datos de vídeo codificados directamente al dispositivo 14 de destino en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo 14 de destino. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrico o por cable, 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 amplia, 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 12 de fuente al dispositivo 14 de destino.
En algunos ejemplos, los datos codificados pueden emitirse desde la interfaz 22 de salida 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 variedad de medios de almacenamiento de datos distribuidos o de acceso de manera local tal como un disco duro, discos Blu-ray, DVDs, CD-ROMs, 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 12 de fuente. El dispositivo 14 de destino puede acceder a los datos de vídeo almacenados desde el dispositivo de almacenamiento a través de generación de flujo o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo 14 de destino. 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 disquete local. El dispositivo 14 de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión por cable (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 generación de flujo, una transmisión de descarga, o una combinación de las mismas.
Esta divulgación puede referirse generalmente al codificador 20 de vídeo "que señaliza" cierta información a otro dispositivo, tal como decodificador 30 de vídeo. Debe entenderse, sin embargo, que el codificador 20 de vídeo puede señalizar información al asociar ciertos elementos de sintaxis con diversas porciones codificadas de datos de vídeo. Es decir, el codificador 20 de vídeo 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 medio 34 de almacenamiento o en servidor 36 de archivos) antes de ser recibidos y decodificados por el decodificador 30 de vídeo. 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 luego pueden ser recuperados por un dispositivo de decodificación en cualquier momento después de ser almacenados en este medio.
Las técnicas de esta divulgación, que generalmente se relacionan con 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 variedad de aplicaciones multimedia, tales como radiodifusiones de televisión sobre el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo de generación de flujo por Internet, tales como generación de flujo adaptativa dinámica sobre 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 generación de flujo 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 12 de fuente incluye fuente 18 de vídeo, codificador 20 de vídeo, e interfaz 22 de salida. El dispositivo 14 de destino incluye interfaz 28 de entrada, decodificador 30 de vídeo, y dispositivo 32 de visualización. De acuerdo con esta divulgación, el codificador 20 de vídeo del dispositivo 12 de fuente 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 fuente y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo 12 de fuente puede recibir datos de vídeo desde una fuente 18 de vídeo externa, tal como una cámara externa. Asimismo, el dispositivo 14 de destino 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 ser realizadas por un preprocesador de vídeo. El dispositivo 12 de fuente y el dispositivo 14 de destino son simplemente ejemplos de tales dispositivos de codificación en los cuales el dispositivo 12 de fuente genera datos de vídeo codificados para transmisión al dispositivo 14 de destino. 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 incluya 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 12, 14 de vídeo, por ejemplo, para generación de flujo de vídeo, reproducción de vídeo, radiodifusión de vídeo, o telefonía de vídeo.
La fuente 18 de vídeo de dispositivo 12 de fuente 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, la fuente 18 de vídeo puede generar datos basados en gráficos de ordenador como el vídeo de fuente, o una combinación de vídeo en vivo, vídeo archivado, y vídeo generado por ordenador. En algunos casos, si la fuente 18 de vídeo es una cámara de vídeo, el dispositivo 12 de fuente y dispositivo 14 de destino 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 por cable. En cada caso, el vídeo capturado, precapturado, o generado por ordenador puede ser codificado por el codificador 20 de vídeo. La información de vídeo codificada puede entonces ser emitida por la interfaz 22 de salida en un medio 16 legible por ordenador.
El medio 16 legible por ordenador puede incluir medios transitorios, tales como una radiodifusión inalámbrica o transmisión de red por cable, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disquete 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 se muestra) puede recibir datos de vídeo codificados desde el dispositivo 12 de fuente y proporcionar los datos de vídeo codificados al dispositivo 14 de destino, por ejemplo, a través de transmisión de red. De manera similar, un dispositivo informático de una instalación de producción media, tal como una instalación de estampado de discos, puede recibir datos de vídeo codificados desde el dispositivo 12 de fuente y producir un disco que contenga los datos de vídeo codificados. Por lo tanto, puede entenderse que el medio 16 legible por ordenador incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
La interfaz 28 de entrada de dispositivo 14 de destino recibe información desde el medio 16 legible por ordenador. La información de medio 16 legible por ordenador puede incluir información de sintaxis definida por el codificador 20 de vídeo, que también es usada por el decodificador 30 de vídeo, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, GOPs. En particular, esta divulgación se refiere a una "unidad codificada" como una unidad de datos que incluye múltiples bloques, tales como una sección, imagen, conjunto de frentes de onda, o un mosaico. De este modo, debe entenderse que el término "unidad codificada" incluye múltiples bloques, por ejemplo, múltiples unidades de codificación más grandes (LCUs). Además, el término "unidad codificada" no debe confundirse con los términos "unidad de codificación" o CU como se usan en HEVC. El dispositivo 32 de visualización muestra los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una variedad 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 emisor de luz orgánica (OLED), u otro tipo de dispositivo de visualización.
El codificador 20 de vídeo y decodificador 30 de vídeo pueden operar de acuerdo con un estándar de codificación de vídeo, tal como el estándar de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente bajo desarrollo, y pueden ajustarse al Modelo de Prueba de HEVC (HM). Alternativamente, el codificador 20 de vídeo y decodificador 30 de vídeo pueden operar de acuerdo con otros estándares de propiedad o de industria, tales como el estándar ITU-T H.264, alternativamente denominado como MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), o extensiones de tales estándares. Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación particular. Otros ejemplos de estándares de codificación de vídeo incluyen MPEG-2 y ITU-T H.263. Aunque no se muestra en la figura 1, en algunos aspectos, el codificador 20 de vídeo y decodificador 30 de vídeo 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).
El estándar ITU-T H.264/MPEG-4 (AVC) fue formulado 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 Conjunto de Vídeo (JVT). En algunos aspectos, las técnicas descritas en esta divulgación pueden aplicarse a dispositivos que generalmente se ajustan al estándar H.264. El estándar 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 este documento como el estándar H.264. o especificación H.264, o el estándar o especificación H.264/AVC. El Equipo Conjunto de Vídeo (JVT) continúa trabajando en extensiones para H.264/MPEG-4 AVC.
El JCT-VC está trabajando en el desarrollo del estándar de HEVC. Los esfuerzos de estandarizació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 intrapredicción, el HM puede proporcionar hasta treinta y tres modos de codificación intrapredicción.
En general, el modelo de trabajo del HM describe que un marco de vídeo o imagen 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. Una sección incluye un número de bloques de árbol consecutivos en orden de codificación. Un marco de vídeo o imagen se puede dividir en una o más secciones. Cada bloque de árbol se puede dividir en unidades de codificación (CUs) 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 subCUs, el nodo que corresponde a la CU incluye cuatro nodos de hoja, cada uno de los cuales corresponde a una de las subCUs.
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 un indicador de división, que indica si la CU que corresponde al nodo está dividida en subCUs. Los elementos de sintaxis para una CU pueden definirse de manera recursiva, y pueden depender de si la CU se divide en subCUs. Si una CU no se divide adicionalmente, se denomina como una CU de hoja. En esta divulgación, cuatro subCUs de una CU de hoja también se denominarán como CUs 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 subCUs de 8x8 también se denominarán como CUs de hoja aunque la CU de 16x16 nunca fue dividida.
Una CU tiene un propósito similar a un macrobloque del estándar 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 subCUs), y cada nodo hijo puede ser a su vez un nodo progenitor 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 otros estándares (por ejemplo, macrobloques y subbloques de los mismos en H.264/AVC). Además, esta divulgación puede usar el término "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, una sección, un mosaico o conjunto de mosaicos, un conjunto de frentes de onda, o cualquier otra unidad predefinida que incluya datos de vídeo. Por consiguiente, el término "unidad codificada" no debe confundirse con los términos "unidad de codificación" o CU.
Una CU incluye un nodo de codificación y unidades de predicción (PUs) y unidades de transformada (TUs) 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 cuadrada en conformación. El tamaño de la CU puede oscilar desde 8x8 píxeles hasta el tamaño del bloque de árbol con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PUs y una o más TUs. Los datos de sintaxis asociados con una CU pueden describir, por ejemplo, la partición de la CU en una o más PUs. 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 PUs pueden dividirse para que no sean cuadradas en conformación. 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 TUs de acuerdo con un árbol cuádruple. Una TU puede ser cuadrada o no cuadrada (por ejemplo, rectangular) en conformación.
El estándar de HEVC permite transformaciones de acuerdo con las TUs, que pueden ser diferentes para diferentes CUs. Las TUs típicamente se dimensionan con base en el tamaño de PUs dentro de una CU dada definida para una LCU dividida, aunque puede que no siempre sea el caso. Las TUs típicamente son del mismo tamaño o más pequeñas que las PUs. 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 (TUs). Los valores de diferencia de píxeles asociados con las TUs pueden transformarse para producir coeficientes de transformada, que pueden cuantificarse.
Una CU de hoja puede incluir una o más unidades de predicción (PUs). 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 intramodo, 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 intermodo, 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 PUs también puede incluir una o más unidades de transformada (TUs). Las unidades de transformada se pueden especificar usando un RQT (también denominado como estructura de árbol cuádruple de TU), como se discutió anteriormente. Por ejemplo, un indicador de división puede indicar si una CU de hoja se divide en cuatro unidades de transformada. Entonces, cada unidad de transformada puede dividirse además en subTUs adicionales. Cuando una TU no se divide adicionalmente, puede denominarse como una TU de hoja. Generalmente, para la intracodificación, todas las TUs 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 TUs de una CU de hoja. Para la intracodificación, un codificador 20 de vídeo 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. De este modo, las TUs pueden ser más grandes o más pequeñas que una PU. Para la intracodificación, una PU puede estar colocada 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 TUs de CUs de hoja también se pueden asociar con las respectivas estructuras de datos de árbol cuádruple, denominadas como árboles cuádruples residuales (RQTs). Es decir, una CU de hoja puede incluir un árbol cuádruple que indica cómo se divide la CU de hoja en las TUs. 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 TUs del RQT que no están divididas se denominan como TUs 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 marcos de vídeo o imágenes. 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 describa un número de imágenes incluidas en el GOP. Cada sección de una imagen puede incluir datos de sintaxis de sección que describen un modo de codificación para la sección respectiva. El codificador 20 de vídeo típicamente opera en bloques de vídeo dentro de secciones de vídeo individuales con el fin de 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 un estándar de codificación especificado.
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 divide, mientras que la otra dirección se divide en 25 % y 75 %. La porción de la CU que corresponde a la partición de 25 % se indica mediante una "n" seguida por una indicación de "Arriba", "Abajo", "Izquierda", o "Derecha". De este modo, por ejemplo, "2NxnU" se refiere a una CU 2Nx2N que está dividida 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 PUs de una CU, el codificador 20 de vídeo puede calcular datos residuales para las TUs de la CU. Las PUs 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 píxeles) y las TUs pueden comprender coeficientes en el dominio de transformada después de la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de 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 PUs. El codificador 20 de vídeo puede formar las TUs que incluyen los datos residuales para la CU, y luego transformar las TUs para producir coeficientes de transformada para la CU.
Después de cualquier transformada para producir coeficientes de transformada, el codificador 20 de vídeo 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 escanear los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. El escaneo 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 del arreglo y para colocar coeficientes de energía más bajos (y por lo tanto de frecuencia más alta) en la parte posterior del arreglo. En algunos ejemplos, el codificador 20 de vídeo puede utilizar un orden de escaneo predefinido para escanear los coeficientes de transformada cuantificados para producir un vector serializado que puede codificarse por entropía. En otros ejemplos, el codificador 20 de vídeo puede realizar un escaneo adaptativo. Después de escanear los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador 20 de vídeo codifica por entropía el vector unidimensional de acuerdo con la codificación aritmética binaria adaptativa al contexto (CABAC). El codificador 20 de vídeo también puede codificar por entropía elementos de sintaxis asociados con los datos de vídeo codificados para uso por el decodificador 30 de vídeo al decodificar los datos de vídeo.
Para realizar CABAC, el codificador 20 de vídeo puede asignar un contexto dentro de un modelo de contexto a un símbolo que va a ser transmitido. El contexto puede relacionarse con, por ejemplo, si los valores vecinos del símbolo son de no cero o no. El codificador 20 de vídeo también puede codificar por entropía elementos de sintaxis, tales como un indicador de coeficiente significativo y un último indicador de coeficiente producido cuando se realiza un escaneo adaptativo.
En general, el proceso de decodificación de vídeo realizado por el decodificador 30 de vídeo puede incluir técnicas recíprocas a las técnicas de codificación realizadas por el codificador 20 de vídeo. Aunque generalmente es recíproco, el decodificador 30 de vídeo puede, en algunos casos, realizar técnicas similares a las realizadas por el codificador 20 de vídeo. El decodificador 30 de vídeo 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 20 de vídeo.
De acuerdo con aspectos de esta divulgación, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden implementar las técnicas de esta divulgación para limitar la cantidad de datos de los bloques vecinos que se almacenan en búfer durante la codificación por entropía. Por ejemplo, en lugar de usar datos de bloques vecinos anteriores como información de contexto cuando se codifica un bloque actual, en algunos ejemplos, el codificador 20 de vídeo y/o decodificador 30 de vídeo pueden determinar el contexto con base en una característica del elemento de sintaxis o bloque que es codificado. En otros ejemplos, el codificador 20 de vídeo y/o decodificador 30 de vídeo pueden determinar el contexto con base en datos desde los bloques vecinos a la izquierda cuando se codifica el bloque actual. En aún otros ejemplos, el codificador 20 de vídeo y/o decodificador 30 de vídeo pueden determinar el contexto con base en datos desde un bloque vecino anterior, 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 20 de vídeo y/o decodificador 30 de vídeo pueden realizar una o más técnicas de esta divulgación en combinación.
El codificador 20 de vídeo y decodificador 30 de vídeo pueden implementarse cada uno como cualquiera de una variedad de circuitería de codificador o decodificador adecuados, según sea aplicable, como uno o más microprocesadores, procesadores de señales digitales (DSPs), circuitos integrados de aplicación específica (ASICs), arreglos de puerta programables en campo (FPGAs), circuitería lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador 20 de vídeo y decodificador 30 de vídeo pueden 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 20 de vídeo y/o decodificador 30 de vídeo 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 20 de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación para codificar por entropía datos de vídeo. El codificador 20 de vídeo puede realizar intra e intercodificación de bloques de vídeo dentro de secciones 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 marco de vídeo o imagen dado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de marcos 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 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 tiempo.
Como se muestra en la figura 2, el codificador 20 de vídeo recibe datos de vídeo que van a ser codificados. En el ejemplo de la figura 2, el codificador 20 de vídeo incluye una unidad 40 de selección de modo, agregador 50, unidad 52 de transformada, unidad 54 de cuantificación, unidad 56 de codificación por entropía, y memoria 64 de imágenes de referencia. La unidad 40 de selección de modo, a su vez, incluye la unidad 42 de estimación de movimiento, unidad 44 de compensación de movimiento, unidad 46 de intrapredicción, y unidad 48 de partición. Para la reconstrucción de bloques de vídeo, el codificador 20 de vídeo también incluye la unidad 58 de cuantificación inversa, unidad 60 de transformada inversa, y agregador 62. Un filtro de desbloqueo (no se muestra 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 de agregador 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 de agregador 50 (como un filtro en bucle).
Durante el proceso de codificación, el codificador 20 de vídeo recibe un marco o sección de vídeo que va a ser codificado. El marco o la sección se puede dividir en múltiples bloques de vídeo. La unidad 42 de estimación de movimiento y unidad 44 de compensación de movimiento 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 marcos de referencia para proporcionar compresión temporal. La unidad 46 de intrapredicción puede realizar alternativamente una codificación intrapredictiva del bloque de vídeo recibido en relación con uno o más bloques vecinos en el mismo marco o sección que el bloque que va a ser codificado para proporcionar compresión espacial. El codificador 20 de vídeo puede realizar múltiples pasos 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 48 de partición puede dividir bloques de datos de vídeo en subbloques, con base en la evaluación de esquemas de partición previos en pasos de codificación previos. Por ejemplo, la unidad 48 de partición puede dividir inicialmente un marco o sección en LCUs, y dividir cada una de las LCUs en subCUs con base en el análisis de distorsión de tasa (por ejemplo, optimización de distorsión de tasa). La unidad 40 de selección de modo puede producir además una estructura de datos de árbol cuádruple indicativa de la partición de una LCU en subCUs. Las CUs de nodo de hoja del árbol cuádruple pueden incluir una o más PUs y una o más TUs.
La unidad 40 de selección de modo puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, con base en resultados de error, y proporcionar el bloque intra o intercodificado resultante al agregador 50 para generar datos de bloque residuales y al agregador 62 para reconstruir el bloque codificado para uso como un marco de referencia. La unidad 40 de selección de modo 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 56 de codificación por entropía.
La unidad 42 de estimación de movimiento y unidad 44 de compensación de movimiento pueden estar altamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por la unidad 42 de estimación de movimiento, 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 marco de vídeo o imagen actual en relación con un bloque predictivo dentro de un marco de referencia (u otra unidad codificada) en relación con el bloque actual que es codificado dentro del marco o imagen actual (u otra unidad codificada).
Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con el bloque que va a ser codificado, 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 20 de vídeo puede calcular valores para posiciones de píxeles subenteros de imágenes de referencia almacenadas en la memoria 64 de marcos de referencia. Por ejemplo, el codificador 20 de vídeo 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 42 de estimación de movimiento puede realizar una búsqueda de movimiento en relación con las posiciones de píxeles completos y posiciones de píxeles fraccionarios y emitir un vector de movimiento con precisión de píxeles fraccionarios.
La unidad 42 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de vídeo en una sección intercodificada 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 64 de marcos de referencia. La unidad 42 de estimación de movimiento envía el vector de movimiento calculado a la unidad 56 de codificación por entropía y a la unidad 44 de compensación de movimiento.
La compensación de movimiento, realizada por la unidad 44 de compensación de movimiento, puede involucrar extraer o generar el bloque predictivo con base en el vector de movimiento determinado por la unidad 42 de estimación de movimiento. De nuevo, la unidad 42 de estimación de movimiento y unidad 44 de compensación de movimiento pueden estar integradas funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad 44 de compensación de movimiento puede localizar el bloque predictivo al cual apunta el vector de movimiento en una de las listas de imágenes de referencia. El agregador 50 forma un bloque de vídeo residual restando los valores de píxeles del bloque predictivo desde los valores de píxeles del bloque de vídeo actual que es codificado, formando valores de diferencia de píxeles, como se discute a continuación. En general, la unidad 42 de estimación de movimiento realiza una estimación de movimiento en relación con los componentes de luma, y la unidad 44 de compensación de movimiento usa vectores de movimiento calculados con base en los componentes de luma tanto para los componentes de croma como para componentes de luma. La unidad 40 de selección de modo también puede generar elementos de sintaxis asociados con los bloques de vídeo y la sección de vídeo para uso por el decodificador 30 de vídeo al decodificar los bloques de vídeo de la sección de vídeo.
La unidad 46 de intrapredicción puede intrapredecir un bloque actual, como una alternativa a la interpredicción realizada por la unidad 42 de estimación de movimiento y unidad 44 de compensación de movimiento, como se describió anteriormente. En particular, la unidad 46 de intrapredicción puede determinar un modo de intrapredicción para usar para codificar un bloque actual. En algunos ejemplos, la unidad 46 de intrapredicción puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pasos de codificación separados, y la unidad 46 de intrapredicción (o unidad 40 de selección de modo, en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado para usar desde los modos probados.
Por ejemplo, la unidad 46 de intrapredicción puede calcular valores de distorsión de tasa usando un análisis de distorsión de tasa para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tiene las mejores características de distorsión de tasa entre los modos probados. El análisis de distorsión de tasa 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 46 de intrapredicción puede calcular las relaciones a partir de las distorsiones y tasas para los diversos bloques codificados para determinar cuál modo de intrapredicción exhibe el mejor valor de distorsión de tasa para el bloque.
El codificador 20 de vídeo forma un bloque de vídeo residual restando los datos de predicción desde la unidad 40 de selección de modo desde el bloque de vídeo original que es codificado. El agregador 50 representa el componente o componentes que realizan esta operación de resta. La unidad 52 de procesamiento de transformada 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 52 de procesamiento de transformada puede realizar otras transformadas que son conceptualmente similares a DCT. También se podrían usar transformadas de ondículas, transformadas de enteros, transformadas de subbandas u otros tipos de transformadas. En cualquier caso, la unidad 52 de procesamiento de transformada aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residual. La transformada puede convertir la información residual desde un dominio de valor de píxel en un dominio de transformada, tal como un dominio de frecuencia.
La unidad 52 de procesamiento de transformada puede enviar los coeficientes de transformada resultantes a la unidad 54 de cuantificación. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir además 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 54 de cuantificación puede entonces realizar un escaneo de la matriz que incluye los coeficientes de transformada cuantificados. Alternativamente, la unidad 56 de codificación por entropía puede realizar el escaneo.
Después de la cuantificación, la unidad 56 de codificación por entropía codifica por entropía los coeficientes de transformada cuantificados. La unidad 56 de codificación por entropía realiza una codificación aritmética binaria adaptativa al 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 56 de codificación por entropía 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 56 de codificación por entropía 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 56 de codificación por entropía 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 56 de codificación por entropía puede actualizar el modelo de contexto seleccionado con base en un valor real del elemento de sintaxis para reflejar las estimaciones de probabilidad más actuales. Es decir, por ejemplo, la unidad 56 de codificación por entropía puede actualizar la manera en la cual se selecciona un modelo de contexto para hacer transición 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 56 de codificación por entropía puede determinar el contexto para codificar un elemento de sintaxis actual con base en elementos de sintaxis vecinos posicionados en la parte superior y a la izquierda del elemento de sintaxis actual. Como se indicó anteriormente, el estándar de HEVC emergente permite que una LCU se divida de manera recursiva en subCUs 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 un búfer de línea que se extiende horizontalmente a través de una imagen. Si el codificador 20 de vídeo almacena en búfer un bit de información de contexto por bloque, el codificador 20 de vídeo puede almacenar en búfer 495 bits de información.
De acuerdo con las técnicas de esta divulgación, la unidad 56 de codificación por entropía 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 búfer por el codificador 20 de vídeo. Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de usar datos de bloques vecinos anteriores 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 marco o una sección), la unidad 56 de codificación por entropía puede usar solo datos desde bloques vecinos a la izquierda.
Como otro ejemplo, la unidad 56 de codificación por entropía puede usar datos desde un bloque vecino anterior 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) dividida, y el bloque vecino anterior está dentro de la misma LCU. En otras palabras, la unidad 56 de codificación por entropía puede configurarse para evitar usar información de contexto que cruza un límite de LCU superior.
Como aún otro ejemplo, la unidad 56 de codificación por entropía puede derivar el contexto para codificar elementos de sintaxis asociados con un bloque actual con base en información de LCU local. Por ejemplo, la unidad 56 de codificación por entropía puede derivar información de contexto para datos interpredichos con base en la profundidad de CU, que generalmente corresponde a un número de veces que se ha dividido una LCU para alcanzar la CU. En un ejemplo con propósitos de explicación, suponer que una LCU es 64x64 píxeles en tamaño (profundidad cero). Una subCU de la LCU puede ser 32x32 píxeles en tamaño en profundidad de Cu uno, mientras que subCU adicional de la subCU puede ser 16x16 píxeles en tamaño en profundidad de CU dos.
De acuerdo con las técnicas de esta divulgación, la unidad 56 de codificación por entropía puede determinar el contexto para datos interpredichos de un bloque actual con base en la profundidad de CU del bloque actual. Es decir, por ejemplo, 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 56 de codificación por entropía 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 56 de codificación por entropía deriva información de contexto para datos intrapredichos con base 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 divide una TU (por ejemplo, se divide 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 56 de codificación por entropía 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 56 de codificación por entropía, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, decodificador 30 de vídeo) o archivarse para posterior transmisión o recuperación. La unidad 58 de cuantificación inversa y unidad 60 de transformada inversa aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para uso posterior como un bloque de referencia. La unidad 44 de compensación de movimiento puede calcular un bloque de referencia agregando el bloque residual a un bloque predictivo de uno de los marcos de memoria 64 de marcos de referencia. La unidad 44 de compensación de movimiento también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para uso en la estimación de movimiento. El agregador 62 agrega el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad 44 de compensación de movimiento para producir un bloque de vídeo reconstruido para almacenamiento en la memoria 64 de marcos de referencia. El bloque de vídeo reconstruido puede ser usado por la unidad 42 de estimación de movimiento y unidad 44 de compensación de movimiento como un bloque de referencia para intercodificar un bloque en un marco de vídeo subsecuente.
De esta manera, el codificador 20 de vídeo 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 anterior 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 30 de vídeo 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 30 de vídeo incluye una unidad 80 de decodificación por entropía, unidad 81 de predicción, unidad 86 de cuantificación inversa, unidad 88 de transformación inversa, agregador 90, y memoria 92 de imágenes de referencia. La unidad 81 de predicción incluye la unidad 82 de compensación de movimiento y unidad 84 de intrapredicción.
Durante el proceso de decodificación, el decodificador 30 de vídeo recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de una sección de vídeo codificada y elementos de sintaxis asociados desde el codificador 20 de vídeo. La unidad 80 de decodificación por entropía de decodificador 30 de vídeo decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento, y otros elementos de sintaxis.
El decodificador 30 de vídeo puede recibir los elementos de sintaxis en el nivel de sección de vídeo y/o en el nivel de bloque de vídeo. Por ejemplo, a modo de antecedente, el decodificador 30 de vídeo puede recibir datos de vídeo comprimidos que se han comprimido para 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 suplementaria (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 esa 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 esa manera la necesidad de transmisiones redundantes para la resiliencia a errores.
La unidad 80 de decodificación por entropía puede configurarse de manera similar a la unidad 56 de codificación por entropía, como se describió anteriormente con respecto al codificador 20 de vídeo de la figura 2. Por ejemplo, la unidad 80 de codificación por entropía 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 80 de codificación por entropía 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 80 de codificación por entropía 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 búfer por el decodificador 30 de vídeo. Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de usar datos de bloques vecinos anteriores 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 marco o una sección), la unidad 80 de codificación por entropía puede usar solo datos desde bloques vecinos a la izquierda.
Como otro ejemplo, la unidad 80 de codificación por entropía puede usar datos desde un bloque vecino anterior 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) dividida, y el bloque vecino anterior está dentro de la misma LCU. En otras palabras, la unidad 80 de codificación por entropía puede configurarse para evitar usar un contexto que cruza un límite de LCU superior. Como aún otro ejemplo, la unidad 80 de codificación por entropía puede derivar contexto para decodificar elementos de sintaxis asociados con un bloque actual con base en información de LCU local (por ejemplo, profundidad de CU, profundidad de TU, o similar). En otro ejemplo, la unidad 80 de codificación por entropía puede usar un único contexto para decodificar ciertos elementos de sintaxis con base en los elementos en sí mismos. La unidad 80 de codificación por entropía puede, en algunos casos, 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 80 de codificación por entropía puede seleccionar un modelo de probabilidad que corresponde al contexto, y decodificar el elemento de sintaxis usando el modelo de probabilidad seleccionado.
La unidad 80 de decodificación por entropía reenvía los vectores de movimiento y otros elementos de sintaxis decodificados a la unidad 81 de predicción. Cuando la sección de vídeo se codifica como una sección intracodificada (I), la unidad 84 de intrapredicción de unidad 81 de predicción puede generar datos de predicción para un bloque de vídeo de la sección de vídeo actual con base en un modo de intrapredicción señalizado y datos desde bloques previamente decodificados del marco o imagen actual. Cuando el marco de vídeo se codifica como una sección intercodificada (es decir, B, P o GPB), la unidad 82 de compensación de movimiento de unidad 81 de predicción produce bloques predictivos para un bloque de vídeo de la sección de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad 80 de decodificación por entropía. 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 30 de vídeo puede construir las listas de marcos de referencia, Lista 0 y Lista 1, usando técnicas de construcción por defecto basadas en imágenes de referencia almacenadas en la memoria 92 de imágenes de referencia.
La unidad 82 de compensación de movimiento determina información de predicción para un bloque de vídeo de la sección de vídeo actual analizando de manera sintáctica 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 decodifica. Por ejemplo, la unidad 82 de compensación de movimiento 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 de la sección de vídeo, un tipo de sección de interpredicción (por ejemplo, sección B, sección P, o sección GPB), información de construcción para una o más de las listas de imágenes de referencia para la sección, vectores de movimiento para cada bloque de vídeo intercodificado de la sección, estado de interpredicción para cada bloque de vídeo intercodificado de la sección, y otra información para decodificar los bloques de vídeo en la sección de vídeo actual.
La unidad 82 de compensación de movimiento también puede realizar interpolación basada en filtros de interpolación. La unidad 82 de compensación de movimiento puede usar filtros de interpolación como se usan por el codificador 20 de vídeo 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 82 de compensación de movimiento puede determinar los filtros de interpolación usados por el codificador 20 de vídeo a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
La unidad 86 de cuantificación inversa cuantifica a la inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad 80 de decodificación por entropía. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador 20 de vídeo para cada bloque de vídeo en la sección de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debe aplicarse.
La unidad 88 de transformada inversa aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de enteros inversa, o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada con el fin de producir bloques residuales en el dominio de píxeles. De acuerdo con los aspectos de esta divulgación, la unidad 88 de transformada inversa puede determinar la manera en la cual fueron aplicadas las transformadas a los datos residuales. Es decir, por ejemplo, la unidad 88 de transformada inversa puede determinar un RQT que representa la manera en la cual las transformadas (por ejemplo, DCT, transformada de enteros, transformada de ondículas, o una o más de otras transformadas) fueron aplicadas a las muestras de luma residual y a las muestras de croma residual asociadas con un bloque de datos de vídeo recibidos.
Después de que la unidad 82 de compensación de movimiento genera el bloque predictivo para el bloque de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis, el decodificador 30 de vídeo forma un bloque de vídeo decodificado sumando los bloques residuales desde la unidad 88 de transformada inversa con los correspondientes bloques predictivos generados por la unidad 82 de compensación movimiento. El agregador 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 con el fin de 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 marco o imagen dado se almacenan luego en la memoria 92 de imágenes de referencia, que almacena imágenes de referencia usadas para la compensación de movimiento subsecuente. La memoria 92 de imágenes de referencia también almacena vídeo decodificado para una presentación posterior en un dispositivo de visualización, tal como dispositivo 32 de visualización de la figura 1. De esta manera, el decodificador 30 de vídeo 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 anterior 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 172 de codificación más grande 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 el estándar de HEVC propuesto. Cada nodo en un árbol cuádruple, tal como á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 152 raíz. El nodo 152 raíz tiene cuatro nodos hijos, incluyendo nodos 156A-156C de hoja (nodos 156 de hoja) y 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 158A-158D de hoja (nodos 158 de hoja).
El árbol cuádruple 150 puede incluir datos que describen características de una unidad de codificación más grande (LCU) correspondiente, tales como LCUs 172 en este ejemplo. Por ejemplo, el árbol cuádruple 150, por su estructura, puede describir la división de la LCU en subCUs. Suponer que LCU 172 tiene un tamaño de 2Nx2N. LCU 172, en este ejemplo, tiene cuatro subCUs 176A-176C (subCUs 176) y 174, cada una de tamaño NxN. La subCU 174 se divide además en cuatro subCUs 178A-178D (subCUs 178), cada una de tamaño N/2xN/2. La estructura de árbol cuádruple 150 corresponde a la división de LCU 172, en este ejemplo. Es decir, el nodo 152 raíz corresponde a la LCU 172, nodos 156 de hoja corresponden a subCUs 176, nodo 154 corresponde a subCU 174, y nodos 158 de hoja corresponden a subCUs 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);
// signaling data
if (split flag) {
quadtree_node child 1;
quadtree_node child2;
quadtree_node child3;
quadtree_node child4;
}
}
El valor de indicador de división 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 indicador 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, un arreglo de valores de indicador de división puede ser 101000000.
Como se indicó anteriormente, la profundidad de CU puede referirse a la medida en que se ha dividido una LCU, tales como LCUs 172. Por ejemplo, el nodo 152 raíz puede corresponder a la profundidad de CU cero, mientras que el nodo 154 y nodos 156 de hoja pueden corresponder a la profundidad de CU uno. Además, los nodos 158 de hoja 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 156A de hoja pueden codificarse por entropía usando un modelo de contexto diferente al del nodo 158A de hoja, debido a que el nodo 156A de hoja está ubicado en la profundidad uno, mientras que el nodo 158A de hoja 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 TUs 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 TUs 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 TUs de la CU individualmente.
De acuerdo con las técnicas de esta divulgación, un codificador de vídeo (por ejemplo, codificador 20 de vídeo y/o decodificador 30 de vídeo) puede determinar el contexto para los datos interpredichos de un bloque actual con base 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 con base 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 56 de codificación por entropía 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 del cual se puede determinar el contexto para codificar por entropía un bloque. Mientras que la figura 5 se describe con respecto al decodificador 30 de vídeo, debe entenderse que las técnicas de esta divulgación pueden ser llevadas a cabo por una variedad de otros codificadores de vídeo, incluyendo el codificador 20 de vídeo (figuras 1 y 2), otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDECs), y similares.
El decodificador 30 de vídeo puede recibir datos codificados por entropía asociados con el bloque 180 actual. Por ejemplo, el decodificador 30 de vídeo 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 30 de vídeo decodifique correctamente el bloque 180 actual. El decodificador 30 de vídeo puede determinar el contexto para uno o más de los elementos de sintaxis recibidos con base en los valores de elementos de sintaxis asociados con el bloque 182 vecino anterior y bloque 184 vecino a la izquierda.
Suponer, con propósitos de explicación, que el decodificador 30 de vídeo 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 180 actual. En este ejemplo, el decodificador 30 de vídeo puede identificar los modos de intrapredicción desde el bloque 182 vecino anterior y bloque 184 vecino a la izquierda 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 182 vecino anterior y del bloque 184 vecino a la izquierda. De este modo, el decodificador 30 de vídeo puede almacenar, o almacenar en búfer datos que indiquen los modos de intrapredicción del bloque 182 vecino anterior y del bloque 184 vecino a la izquierda, de tal manera que tales datos estén disponibles cuando se realiza la decodificación por entropía.
Mientras que codificar por entropía un elemento de sintaxis asociado a un modo de intrapredicción se describe con propósitos de ejemplo, otros elementos de sintaxis también pueden codificarse con base en datos de bloques vecinos. Por ejemplo, con respecto al estándar 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 182 vecino anterior y bloque 184 vecino a la izquierda:
1. skip_flag[ x0 ][ y0 ].
a) omitir indicador igual a 1 especifica que para la CU actual, cuando se decodifica una sección P o B, no se analizan de manera sintáctica elementos de sintaxis adicionales después de skip_flag[ x0 ][ y0 ], aparte de los índices 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 arreglo 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 arreglo 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 de no cero. Es decir, el CBP de un bloque de luma puede corresponder a uno o más indicadores de bloque codificado, teniendo cada uno de los indicadores 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 de no 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 de no cero. Es decir, el CBP de un bloque de croma puede corresponder a uno o más indicadores de bloque codificado, teniendo cada uno de los indicadores 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 de no 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 arreglo 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 interpredicción para la PU actual se infieren desde una partición interpredicha vecina. Los índices de arreglo 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_10[ x0 ][ y0 ] especifica el índice de imágenes de referencia de lista 0 para la PU actual. Los índices de arreglo 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_11[ x0 ][ y0 ] tiene la misma semántica que ref_idx_10, con 10 y lista 0 reemplazados por 11 y lista 1, respectivamente.
c) ref_idx_1c[ x0 ][ y0 ] tiene la misma semántica que ref idx_10, con 10 y lista 0 reemplazados por lc y combinación de lista, respectivamente.
9. bin0 de mvd
a) mvd_10[ x0 ][ y0 ][ compIdx ], especifica la diferencia entre un componente de vector de lista 0 que va a ser usado y el vector predictivo. Los índices de arreglo 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 compldx = 0 y al componente de vector de movimiento vertical se le asigna compldx = 1.
b) mvd_l1[ x0 ][ y0 ][ compIdx ] tiene la misma semántica que mvd_10, 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_10, con 10 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 arreglo 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 de no cero.
Los elementos de sintaxis enumerados anteriormente se proporcionan solo con propósitos de ejemplo. Es decir, el decodificador 30 de vídeo puede usar datos desde bloques vecinos, tales como bloque 182 vecino anterior y bloque 184 vecino a la izquierda, cuando se codifica por entropía otros elementos de sintaxis asociados con el bloque 180 actual.
La figura 6 es un diagrama de bloques que ilustra bloques vecinos de ejemplo a partir del cual 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 30 de vídeo, debe entenderse que las técnicas de esta divulgación pueden ser llevadas a cabo por una variedad de otros codificadores de vídeo, incluyendo codificador 20 de vídeo (figuras 1 y 2), otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDECs), y similares.
El decodificador 30 de vídeo puede recibir datos codificados por entropía asociados con el bloque 190 actual de unidad 191 codificada. Por ejemplo, el decodificador 30 de vídeo 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 30 de vídeo decodifique correctamente el bloque 190 actual de unidad 191 codificada. La unidad 191 codificada 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, una sección, un mosaico o conjunto de mosaicos, 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 194 vecinos anteriores, bloques 192 vecinos a la izquierda, y 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 194 vecinos anteriores (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 30 de vídeo puede usar solo datos de los bloques 192 vecinos a la izquierda como información de contexto para codificar por entropía el bloque 190 actual. Por ejemplo, el decodificador 30 de vídeo puede no usar datos desde bloques 194 vecinos anteriores o bloques 196 previamente codificados que no están posicionados adyacentes al bloque 190 actual como información de contexto para determinar un modelo de probabilidad para codificar por entropía el bloque 190 actual. En este ejemplo, el decodificador 30 de vídeo puede almacenar en búfer menos datos que el ejemplo mostrado en la figura 5. Por ejemplo, suponer 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 30 de vídeo puede potencialmente almacenar en búfer 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 30 de vídeo solo puede usar datos desde bloques vecinos cuando se determina el contexto para codificar por entropía el bloque 190 actual cuando los bloques vecinos son parte de la misma LCU que el bloque 190 actual. Por ejemplo, el decodificador 30 de vídeo solo puede usar datos desde bloques vecinos para determinar el contexto para el bloque 190 actual cuando el bloque 190 actual y los bloques vecinos son subCUs de la misma LCU. Es decir, en algunos ejemplos, el decodificador 30 de vídeo no utiliza datos a través de un límite de LCU cuando se determina el contexto para codificar por entropía el bloque 190 actual. La restricción de límite de LCU puede colocarse en los bloques 194 vecinos anteriores, los bloques 192 vecinos a la izquierda, o tanto los bloques 194 vecinos anteriores como los bloques 192 vecinos a la izquierda.
De acuerdo con otros aspectos de esta divulgación, el decodificador 30 de vídeo puede determinar el contexto para codificar por entropía el bloque 190 actual con base en la información de CU y/o LCU local asociada con el bloque 190 actual. Por ejemplo, el decodificador 30 de vídeo puede determinar el contexto para los datos interpredichos (por ejemplo, inter_pred_flag) con base en la profundidad de CU, que generalmente corresponde a un número de veces que se ha dividido una LCU a la cual pertenece el bloque 190 actual. El decodificador 30 de vídeo determina el contexto para los datos intrapredichos (por ejemplo, cbp de bloque de intracroma) con base en la profundidad de TU, que corresponde a un número de veces que se ha dividido una TU de bloque 190 actual.
En algunos ejemplos, el decodificador 30 de vídeo puede usar datos desde una combinación de fuentes como información de contexto cuando se determina un modelo de probabilidad para codificar por entropía el bloque 190 actual. Por ejemplo, el decodificador 30 de vídeo 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 190 actual. Es decir, en un ejemplo, el decodificador 30 de vídeo puede usar datos desde ambos bloques 192 vecinos a la izquierda (por ejemplo, excluyendo bloques vecinos anteriores u otros bloques), así como datos desde información CU y/o LCU local asociada con el bloque 190 actual como información de contexto cuando se determina un modelo de probabilidad. En otro ejemplo, el decodificador 30 de vídeo puede usar datos desde bloques vecinos que son parte de la misma LCU que el bloque 190 actual (por ejemplo, excluyendo otros bloques vecinos), así como desde la información de CU y/o LCU local asociada con el bloque 190 actual como información de contexto cuando se determina un modelo de probabilidad.
Adicional o alternativamente, el decodificador 30 de vídeo puede usar un único contexto para codificar por entropía el bloque 190 actual. Por ejemplo, el decodificador 30 de vídeo puede determinar el contexto para un elemento de sintaxis particular asociado con el bloque 190 actual con base en el propio elemento de sintaxis. En algunos ejemplos, el decodificador 30 de vídeo 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 describió 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 30 de vídeo puede reducir la cantidad de datos que se almacenan en búfer con propósitos de derivación de contexto. Además, el decodificador 30 de vídeo puede aumentar el rendimiento y/o robustez de análisis sintáctico. Por ejemplo, como se indicó anteriormente, el decodificador 30 de vídeo puede analizar de manera sintáctica datos de vídeo recibidos de acuerdo con un proceso de análisis sintáctico particular (por ejemplo, análisis sintáctico de frente de onda). En los ejemplos en los cuales el decodificador 30 de vídeo no determina el contexto usando datos desde ciertos bloques vecinos, el decodificador 30 de vídeo puede eliminar las dependencias de contexto para mejorar el rendimiento de análisis sintáctico 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 esa manera la robustez de análisis sintáctico.
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 que se muestra 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 20 de vídeo (figuras 1 y 2) o decodificador 30 de vídeo (figuras 1 y 3), descritos anteriormente. En otros ejemplos, la técnica de la figura 7 puede realizarse mediante una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDECs), y similares.
El codificador de vídeo puede recibir un bloque de datos de vídeo de una unidad codificada (por ejemplo, una imagen, sección, mosaico, 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 es codificado por entropía actualmente está posicionado debajo de otra fila de bloques de la unidad codificada. En algunos ejemplos, el bloque que es codificado por entropía actualmente puede ser una subCU que está incluida en la misma lCu que las subCUs vecinas anteriores. En otros ejemplos, el bloque puede posicionarse en el borde de una LCU, de tal manera que los bloques vecinos anteriores pertenezcan a una LCU diferente que el bloque actual.
El codificador de vídeo puede entonces determinar el contexto para el bloque que no incluye información desde un bloque vecino anterior (202). Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de usar información desde bloques vecinos anteriores, 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 es codificado actualmente. En otros ejemplos, los bloques vecinos a la izquierda pueden incluirse en una LCU diferente a la del bloque que es codificado 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 anteriores pueden incluir una u otras más LCUs. En tal ejemplo, 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 anteriores (incluidos en otras LCUs). En un ejemplo con propósitos de ilustración, el bloque que es codificado puede incluir una primera subCU de una LCU, y los bloques vecinos anteriores pueden incluir una u otras más LCUs. Suponer 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 con base 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 con base 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 con base en la profundidad de CU, que generalmente corresponde a un número de veces que se ha dividido una LCU para alcanzar el bloque actual. El codificador de vídeo determina el contexto para datos intrapredichos con base 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 con base en un elemento de sintaxis que es codificado 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 fuentes cuando se determina el contexto para codificar por entropía el bloque. Por ejemplo, el codificador de vídeo puede usar información desde ambos bloques vecinos a la izquierda e 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 indicó 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. De este modo, un elemento de sintaxis puede codificarse por entropía usando el contexto con base 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 alternativas etapas.
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 que se muestra 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 20 de vídeo (figuras 1 y 2) o decodificador 30 de vídeo (figuras 1 y 3), descritos anteriormente. En otros ejemplos, la técnica de la figura 8 puede realizarse mediante una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDECs), y similares.
De acuerdo con algunos ejemplos, las técnicas del ejemplo mostrado en la figura 8 se puede 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 indicó anteriormente con respecto a la figura 7, el codificador de vídeo no puede usar información desde un bloque vecino anterior 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 anteriores, 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 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 es codificado actualmente. En otros ejemplos, los bloques vecinos a la izquierda pueden incluirse en una LCU diferente a la del bloque que es codificado actualmente.
El codificador de vídeo puede entonces determinar si usar datos desde otras fuentes 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 etapa 210), el codificador de vídeo puede proceder directamente a la etapa 214. En cualquier caso, el codificador de vídeo puede determinar el contexto con base en información de CU y/o LCU local asociada con el bloque. Es decir, el codificador de vídeo puede determinar el contexto con base 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 con base en un elemento de sintaxis que es codificado actualmente (por ejemplo, un elemento de sintaxis se mapea directamente a un cierto contexto).
Si el codificador de vídeo usa datos desde otras fuentes como contexto (por ejemplo, la rama SÍ de etapa 214), el codificador de vídeo puede recuperar la información de contexto apropiada desde la otra fuente o fuentes (216). El codificador de vídeo puede entonces seleccionar un modelo de probabilidad con base en la información de contexto determinada (218). Si el codificador de vídeo no usa datos desde otras fuentes como contexto, el codificador de vídeo puede proceder 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 alternativas etapas.
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 que se muestra 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 20 de vídeo (figuras 1 y 2) o decodificador 30 de vídeo (figuras 1 y 3), descritos anteriormente. En otros ejemplos, la técnica de la figura 9 puede realizarse mediante una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDECs), y similares.
De acuerdo con algunos ejemplos, las técnicas del ejemplo mostrado en la figura 9 se puede realizar con las técnicas mostradas en la figura 7. Por ejemplo, las técnicas del ejemplo mostrado en la figura 9 se puede realizar durante la etapa 202 de 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 indicó anteriormente con respecto a la figura 7, en algunos casos el codificador de vídeo puede no usar información desde un bloque vecino anterior 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 anterior cuando se determina el contexto, pero solo cuando el bloque vecino anterior es desde la misma LCU que el bloque que es codificado 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 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). El codificador de vídeo puede entonces determinar si usar datos desde otras fuentes 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 etapa 230), el codificador de vídeo puede proceder directamente a la etapa 234. En cualquier caso, el codificador de vídeo puede determinar el contexto con base 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 con base 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 con base en un elemento de sintaxis que es codificado actualmente (por ejemplo, un elemento de sintaxis se mapea directamente a un cierto contexto).
Si el codificador de vídeo usa datos desde otras fuentes como contexto (por ejemplo, la rama SÍ de etapa 234), el codificador de vídeo puede recuperar la información de contexto apropiada desde la otra fuente o fuentes (236). El codificador de vídeo puede entonces seleccionar un modelo de probabilidad con base en la información de contexto determinada (238). Si el codificador de vídeo no usa datos desde otras fuentes como contexto, el codificador de vídeo puede proceder 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 alternativas etapas.
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 que se muestra 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 20 de vídeo (figuras 1 y 2) o decodificador 30 de vídeo (figuras 1 y 3), descritos anteriormente. En otros ejemplos, la técnica de la figura 8 puede realizarse mediante una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CÓDECs), 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 indicó anteriormente con respecto a la figura 7, el codificador de vídeo no puede usar información desde un bloque vecino anterior 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 anteriores, el codificador de vídeo puede usar datos desde información de bloque local. En tales ejemplos (por ejemplo, la rama SÍ de 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 un indicador de interpredicción (inter_pred_flag) asociado con datos interpredichos a una profundidad de CU particular usando la profundidad de CU particular como información de contexto.
En otro ejemplo, 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, en un ejemplo, el codificador de vídeo codifica por entropía datos residuales intrapredichos de una TU. En este ejemplo, 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.
El codificador de vídeo puede entonces determinar si usar datos desde otras fuentes 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 es codificado (por ejemplo, figura 9). En otros ejemplos, el codificador de vídeo puede determinar el contexto con base en un elemento de sintaxis que es codificado actualmente (por ejemplo, un elemento de sintaxis se mapea directamente a un cierto contexto).
Si el codificador de vídeo usa datos desde otras fuentes como contexto (por ejemplo, la rama SÍ de etapa 264), el codificador de vídeo puede recuperar la información de contexto apropiada desde la otra fuente o fuentes (266). El codificador de vídeo puede seleccionar entonces un modelo de probabilidad con base en la información de contexto determinada (268). Si el codificador de vídeo no usa datos desde otras fuentes como contexto, el codificador de vídeo puede proceder 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 alternativas etapas.
Además, debe entenderse que, dependiendo del ejemplo, ciertos actos o eventos de cualquiera de los métodos descritos en este documento pueden realizarse en una secuencia diferente, pueden agregarse, 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 de ordenador 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 de ordenador 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 disquete óptico, almacenamiento en disquete 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 correctamente 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 este 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 de aplicación específica (ASICs), arreglos lógicos programables en campo (FPGAs), u otra circuitería lógica integrada o discreta equivalente. Por consiguiente, el término "procesador", como se usa en este documento puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en este documento. Además, en algunos aspectos, la funcionalidad descrita en este documento puede proporcionarse dentro de módulos de hardware y/o software dedicados 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 variedad de dispositivos o aparatos, incluyendo un aparato telefónico inalámbrico, un circuito integrado (IC) o un conjunto de ICs (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 describió 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 describió anteriormente, en conjunto con software y/o firmware adecuados.
Se han descrito diversos aspectos de la divulgación. Estos y otros aspectos están dentro del alcance de las siguientes reivindicaciones.

Claims (15)

REIVINDICACIONES
1. Un método de codificación de datos de vídeo de Codificación de Vídeo de Alta Eficiencia, HEVC, comprendiendo el método:
determinar (202) información de contexto para datos residuales intrapredichos de una unidad de transformada, TU, con base en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se divide de acuerdo con una estructura de árbol cuádruple de la cual el nodo raíz es una unidad de codificación de hoja, en donde la información de contexto no incluye información desde un bloque vecino anterior 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 con base en la información de contexto determinada y codificar por aritmética binaria adaptativa al 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 uno o más indicadores de bloque codificado de la TU con base en la profundidad de la TU, en donde cada uno de los indicadores 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 de no 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 de Codificación de Vídeo de Alta Eficiencia, HEVC, comprendiendo el método:
determinar (202) información de contexto para datos residuales intrapredichos de una unidad de transformada, TU, con base en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se divide de acuerdo con una estructura de árbol cuádruple de la cual el nodo raíz es una unidad de codificación de hoja, en donde la información de contexto no incluye información desde un bloque vecino anterior 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 con base en la información de contexto determinada y decodificar por aritmética binaria adaptativa al 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 uno o más indicadores de bloque codificado de la TU con base en la profundidad de la TU, en donde cada uno de los indicadores 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 de no 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 de Codificación de Vídeo de Alta Eficiencia, HEVC, comprendiendo el aparato uno o más procesadores configurados para:
determinar (202) información de contexto para datos residuales intrapredichos de una unidad de transformada, TU, con base en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se divide de acuerdo con una estructura de árbol cuádruple de la cual el nodo raíz es una unidad de codificación de hoja, en donde la información de contexto no incluye información desde un bloque vecino anterior 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 con base en la información de contexto determinada y codificar por aritmética binaria adaptativa al 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 uno o más indicadores de bloque codificado, en donde cada uno de los indicadores 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 de no 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 de Codificación de Vídeo de Alta Eficiencia, HEVC, comprendiendo el aparato uno o más procesadores configurados para:
determinar (202) información de contexto para datos residuales intrapredichos de una unidad de transformada, TU, con base en una profundidad de la TU, describiendo la profundidad de la TU el número de veces que la TU se divide de acuerdo con una estructura de árbol cuádruple de la cual el nodo raíz es una unidad de codificación de hoja, en donde la información de contexto no incluye información desde un bloque vecino anterior 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 con base en la información de contexto determinada y decodificar por aritmética binaria adaptativa al 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 uno o más indicadores de bloque codificado, en donde cada uno de los indicadores 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 de no 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.
ES12725599T 2011-06-03 2012-06-01 Modelado de contexto eficiente en memoria Active ES2897708T3 (es)

Applications Claiming Priority (5)

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
PCT/US2012/040483 WO2012167097A1 (en) 2011-06-03 2012-06-01 Memory efficient context modeling

Publications (1)

Publication Number Publication Date
ES2897708T3 true ES2897708T3 (es) 2022-03-02

Family

ID=46208192

Family Applications (2)

Application Number Title Priority Date Filing Date
ES12725599T Active ES2897708T3 (es) 2011-06-03 2012-06-01 Modelado de contexto eficiente en memoria
ES21203455T Active ES2952256T3 (es) 2011-06-03 2012-06-01 Modelado de contexto eficiente de memoria

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES21203455T Active ES2952256T3 (es) 2011-06-03 2012-06-01 Modelado de contexto eficiente de memoria

Country Status (20)

Country Link
US (1) US8995523B2 (es)
EP (2) EP2716044B1 (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) ES2897708T3 (es)
HU (1) HUE057018T2 (es)
IL (1) IL229265A (es)
MX (1) MX2013014123A (es)
MY (1) MY158277A (es)
PH (1) PH12013502299A1 (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 (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9379736B2 (en) * 2011-06-03 2016-06-28 Qualcomm Incorporated Context-adaptive coding video data
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
EP4404558B1 (en) 2011-06-23 2026-02-25 Sun Patent Trust Computer program for image decoding, computer program for image encoding.
RU2603552C2 (ru) * 2011-06-24 2016-11-27 Сан Пэтент Траст Способ декодирования изображения, способ кодирования изображения, устройство декодирования изображения, устройство кодирования изображения и устройство кодирования и декодирования изображения
TWI581615B (zh) 2011-06-24 2017-05-01 Sun Patent Trust A decoding method, a coding method, a decoding device, an encoding device, and a coding / decoding device
RU2608244C2 (ru) 2011-06-27 2017-01-17 Сан Пэтент Траст Способ кодирования изображений, способ декодирования изображений, устройство кодирования изображений, устройство декодирования изображений и устройство кодирования и декодирования изображений
BR122022013246B1 (pt) 2011-06-28 2022-11-16 Sun Patent Trust Aparelho de decodificação para decodificar um parâmetro de controle para controlar decodificação de uma imagem, e aparelho de codificação para codificar um parâmetro de controle para controlar codificação de uma imagem
KR102006032B1 (ko) 2011-06-29 2019-07-31 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
EP3944617A1 (en) 2011-06-30 2022-01-26 Sun Patent Trust Image decoding method, image encoding method, image decoding device, image encoding device, and image encoding and decoding device
KR102060619B1 (ko) 2011-06-30 2019-12-30 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
MY193612A (en) * 2011-07-01 2022-10-20 Samsung Electronics Co Ltd Method and apparatus for entropy encoding using hierarchical data unit, and method and apparatus for decoding
ES2784552T3 (es) * 2011-07-11 2020-09-28 Sun Patent Trust Procedimiento de decodificación de imagen, aparato de decodificación de imagen
ES2983979T3 (es) 2011-07-15 2024-10-28 Ge Video Compression Llc Codificación de matrices de muestras para bajo retardo
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
CA3056122C (en) 2012-04-13 2021-05-04 Robert SKUPIN Low delay picture coding
US10085024B2 (en) * 2012-04-13 2018-09-25 Qualcomm Incorporated Lookup table for rate distortion optimized quantization
US20150103911A1 (en) * 2012-04-15 2015-04-16 Samsung Electronics Co., Ltd. Method and apparatus for determining reference images for inter-prediction
HUE058244T2 (hu) 2012-06-26 2022-07-28 Lg Electronics Inc Videó dekódoló eljárás, videó kódoló eljárás, valamint kódolt videó információt tároló dekóderrel olvasható tárolóközeg
US9621905B2 (en) * 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
TWI558182B (zh) * 2012-06-29 2016-11-11 Ge影像壓縮有限公司 視訊資料串流槪念技術
US9088770B2 (en) 2012-08-15 2015-07-21 Intel Corporation Size based transform unit context derivation
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
KR101817589B1 (ko) * 2013-07-08 2018-01-11 미디어텍 싱가폴 피티이. 엘티디. 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
US11272193B2 (en) 2017-04-24 2022-03-08 Sk Telecom Co., Ltd. Method and apparatus for estimating optical flow for motion compensation
CN114554203B (zh) * 2017-07-04 2023-09-22 三星电子株式会社 使用多核变换的视频解码/编码方法和设备
KR102343333B1 (ko) * 2017-07-07 2021-12-24 삼성전자주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US10506258B2 (en) * 2017-07-13 2019-12-10 Google Llc Coding video syntax elements using a context tree
CN118400522A (zh) * 2018-03-21 2024-07-26 Lx 半导体科技有限公司 图像编码/解码设备以及发送图像数据的设备
WO2019194441A1 (ko) * 2018-04-02 2019-10-10 엘지전자 주식회사 적응적으로 도출되는 mpm 리스트에 기반한 영상 코딩 방법 및 그 장치
CN112040247B (zh) 2018-09-10 2021-09-21 华为技术有限公司 视频解码方法、视频解码器以及计算机可读存储介质
WO2020076047A1 (ko) 2018-10-09 2020-04-16 삼성전자 주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
CN113906753B (zh) 2019-04-24 2023-12-01 字节跳动有限公司 编解码视频的量化残差差分脉冲编解码调制表示的约束
KR102707777B1 (ko) 2019-05-01 2024-09-20 바이트댄스 아이엔씨 양자화된 잔차 차동 펄스 코드 변조 코딩을 사용하는 인트라 코딩된 비디오
CN113785568B (zh) 2019-05-02 2024-03-08 字节跳动有限公司 变换跳过模式下的信令通知
US20220277491A1 (en) * 2019-05-31 2022-09-01 Electronics And Telecommunications Research Institute Method and device for machine learning-based image compression using global context
MX2022002126A (es) * 2019-08-23 2022-05-18 Hfi Innovation Inc Método y aparato de partición de unidades de codificación de tamaño pequeño con restricciones de partición.
KR20250038185A (ko) * 2023-09-11 2025-03-19 주식회사 케이티 영상 부호화/복호화 방법 및 비트스트림을 저장하는 기록 매체
WO2025185898A1 (en) * 2024-03-07 2025-09-12 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding

Family Cites Families (16)

* Cited by examiner, † Cited by third party
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
WO2004030369A1 (en) 2002-09-27 2004-04-08 Videosoft, 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 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
CN101658042B (zh) * 2007-03-13 2016-03-02 诺基亚技术有限公司 用于视频编码和解码的系统和方法
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 삼성전자주식회사 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
US9369736B2 (en) * 2010-04-05 2016-06-14 Samsung Electronics Co., Ltd. Low complexity entropy-encoding/decoding method and apparatus
WO2012044104A2 (ko) * 2010-09-30 2012-04-05 삼성전자 주식회사 계층적 구조의 심볼을 부호화하는 비디오 부호화 방법 및 그 장치, 계층적 구조의 심볼을 복호화하는 비디오 복호화 방법 및 그 장치
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
WO2012134246A2 (ko) * 2011-04-01 2012-10-04 엘지전자 주식회사 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치

Also Published As

Publication number Publication date
JP2014522603A (ja) 2014-09-04
BR112013031006A2 (pt) 2016-11-29
BR112013031006B1 (pt) 2022-05-17
JP5869108B2 (ja) 2016-02-24
KR20140017015A (ko) 2014-02-10
SG194912A1 (en) 2013-12-30
EP4007279C0 (en) 2023-07-19
WO2012167097A1 (en) 2012-12-06
RU2013158385A (ru) 2015-07-20
CN103563378B (zh) 2017-05-24
MX2013014123A (es) 2014-01-23
ZA201309671B (en) 2016-02-24
EP4007279B1 (en) 2023-07-19
EP2716044A1 (en) 2014-04-09
CA2837099C (en) 2016-10-18
KR101651759B1 (ko) 2016-08-26
ES2952256T3 (es) 2023-10-30
EP2716044B1 (en) 2021-10-20
RU2580066C2 (ru) 2016-04-10
AU2012261975B2 (en) 2015-09-03
PH12013502299A1 (en) 2017-05-19
MY158277A (en) 2016-09-30
DK2716044T3 (da) 2021-11-15
IL229265A0 (en) 2014-01-30
AU2012261975A1 (en) 2013-12-12
IL229265A (en) 2016-04-21
CN103563378A (zh) 2014-02-05
EP4007279A1 (en) 2022-06-01
US8995523B2 (en) 2015-03-31
US20120328003A1 (en) 2012-12-27
CA2837099A1 (en) 2012-12-06
UA108698C2 (uk) 2015-05-25
HUE057018T2 (hu) 2022-04-28

Similar Documents

Publication Publication Date Title
ES2897708T3 (es) Modelado de contexto eficiente en memoria
CA3000373C (en) Video intra-prediction using position dependent prediction combination for video coding
KR101825262B1 (ko) B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한
ES2895270T3 (es) Codificación de mensajes SEI de MCTS-EIS de una unidad de acceso
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
KR101589851B1 (ko) 코딩된 슬라이스 nal 유닛들에서의 세그먼트들의 패딩
EP2727352B1 (en) Signaling syntax elements for transform coefficients for sub-sets of a leaf-level coding unit
KR102182441B1 (ko) 비디오 코딩에서 hevc 확장들을 위한 다중 계층들의 저복잡도 지원
CN105122798B (zh) 多层视频译码中的交叉层图片类型对准的指示
CN103959785A (zh) 在视频译码中用于色度分量的变换单位分割
KR20140130466A (ko) B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한
EP2868102A2 (en) Tiles and wavefront parallel processing
CA2838449A1 (en) Border pixel padding for intra prediction in video coding
CN104471942A (zh) 重新使用参数集用于视频译码
KR20150076235A (ko) 비디오 코딩을 위한 참조 화상 상태
EP2834977A1 (en) Weighted prediction parameter coding
ES2977586T3 (es) Estructura GOP adaptativa con fotograma de referencia futuro en configuración de acceso aleatorio para codificación de vídeo
KR20140131525A (ko) 병렬 모션 추정 범위 사이즈의 묵시적 도출
WO2014100015A1 (en) Deblocking filter with reduced line buffer
HK1196719A (en) Number of context reduction for context adaptive binary arithmetic coding
HK1190250A (en) Memory efficient context modeling
HK1196719B (en) Number of context reduction for context adaptive binary arithmetic coding
HK1199152B (en) Context reduction for context adaptive binary arithmetic coding
HK1198401A1 (en) A method and apparatus for encoding and decoding video data
HK1190250B (en) Memory efficient context modeling