MX2013014123A - Modelado de contexto eficiente de memoria. - Google Patents

Modelado de contexto eficiente de memoria.

Info

Publication number
MX2013014123A
MX2013014123A MX2013014123A MX2013014123A MX2013014123A MX 2013014123 A MX2013014123 A MX 2013014123A MX 2013014123 A MX2013014123 A MX 2013014123A MX 2013014123 A MX2013014123 A MX 2013014123A MX 2013014123 A MX2013014123 A MX 2013014123A
Authority
MX
Mexico
Prior art keywords
block
entropy
context information
video
data
Prior art date
Application number
MX2013014123A
Other languages
English (en)
Inventor
Marta Karczewicz
Wei-Jung Chien
Xianglin Wang
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
Publication of MX2013014123A publication Critical patent/MX2013014123A/es

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)
  • Information Transfer Systems (AREA)
  • Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

En un ejemplo, aspectos de esta divulgación se refieren a un método para codificar datos de video que incluyen determinar información de contexto para un bloque de datos de video, donde el bloque está incluido dentro de una unidad codificada de datos de video, donde el bloque está por debajo de una fila superior de bloques en la unidad codificada, y donde la información de contexto no incluye información de un bloque vecino-por-encima en la unidad codificada; ese método también incluye la codificación por entropía de datos del bloque utilizando la información de contexto determinada.

Description

MODELADO DE CONTEXTO EFICIENTE DE MEMORIA CAMPO DE LA INVENCION Esta divulgación se refiere a codificación de video y, de manera más especifica, a codificación por entropía de datos de video.
ANTECEDENTES DE LA INVENCION Las capacidades de video digital se pueden incorporar en un amplio rango de dispositivos, incluyendo televisiones digitales, sistemas de transmisión directa digital, sistemas de transmisión inalámbrica, asistentes digitales personales (PDAs) , computadoras de escritorio o tipo laptop, computadoras de tableta, lectores de e-book, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de juego de video, consolas de juego de video, teléfonos radio satelitales o celulares, los denominados "teléfonos inteligentes", dispositivos de teleconferencia de video, dispositivos de corriente de video, y similares. Los dispositivos de video digital implementan técnicas de compresión de video, tal como aquellas descritas en los estándares definidos por PEG-2, MPEG-4, ITU-T H.263, ITU-T H .264 /MPEG-4 , Parte 10, Codificación de Video Avanzada (AVC), el Estándar de Codificación de Video de Alta Eficiencia (HEVC). actualmente bajo desarrollo, y extensiones de dichos estándares. Los dispositivos de video pueden transmitir, recibir, codificar, decodificar y/o almacenar información de video digital' de manera más eficiente implementando dichas técnicas de compresión de video.
Las técnicas de compresión de video ejecutan predicción espacial (intra-imagen) y/o predicción temporal (inter-imagen) para reducir o remover la redundancia inherente en secuencias de video. Para codificación de video basada en bloque, una porción de video (es decir, un cuadro de video o una porción de un cuadro de video) se puede dividir en bloques de video, los cuales también se pueden referir como bloques de árbol, unidades de codificación (CUs) y/o nodos de codificación. Los bloques de video en una porción intra-codificada (I) de una imagen son codificados utilizando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de video en una porción inter-codificada (P o B) de una imagen pueden utilizar 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 se pueden referir como cuadros, e imágenes de referencia también se pueden referir como cuadros de referencia.
La predicción espacial o temporal tiene como resultado un bloque predictivo para que un bloque sea codificado. Los datos residuales representan diferencias de pixel entre el bloque original que se .va a codificar y el bloque predictivo. Un bloque ínter-codificado es codificado de acuerdo con un vector de movimiento que señala a un bloque de muestras de referencia formando el bloque predictivo, y los datos residuales indicando la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra-codificado es codificado de acuerdo con un modo de intra-codificación y los datos residuales. Para mayor compresión, los datos residuales pueden ser transformados del dominio de pixel a un dominio de transformada, teniendo como resultado coeficientes de transformada residuales, los cuales entonces pueden ser cuantificados . Los coeficientes de transformada cuantificados , inicialmente acomodados en un arreglo bi-dimensional, se pueden escanear para producir un vector de una dimensión de coeficientes de transformada, y se puede aplicar codificación por entropía para lograr incluso una mayor compresión.
BREVE DESCRIPCION DE LA INVENCION En general, esta divulgación describe técnicas para codificar datos de video. Por ejemplo, las técnicas de esta divulgación incluyen reducir una cantidad de datos que son almacenados en memoria intermedia cuando se codifican por entropía datos de video. Durante la codificación por entropía, un dispositivo de codificación de video puede seleccionar un modelo de contexto para determinar una probabilidad de un valor para datos que van a ser codificados. El modelo de contexto para un bloque particular de datos de video se . puede basar en información de contexto extraída de bloques vecinos de datos de video. Por consiguiente, un dispositivo de codificación de video puede almacenar en memoria intermedia la información de bloques vecinos de datos de video de manera que dicha información está disponible para uso como información de contexto. Las técnicas de esta divulgación se refieren a limitar la cantidad de datos de bloques vecinos que son almacenados en memoria intermedia durante la codificación por entropía. De acuerdo con algunos aspectos de esta divulgación, un dispositivo de codificación de video puede evitar el uso de datos de los bloques de datos · de video que están colocados por encima de un bloque de datos de video que actualmente está siendo codificado (por ejemplo, referido como "bloques vecinos-por-encima") como información de contexto cuando se codifica el bloque actual.
En un ejemplo, aspectos de esta divulgación se refieren a un método para codificar datos de video que incluyen determinar información de contexto para un bloque de datos de video, donde el bloque está incluido dentro de una unidad codificada de datos de video, donde el bloque está por debajo de una fila superior de bloques en la unidad codificada, y donde la información de contexto no incluye información de un bloque vecino-por-encima en la unidad codificada. Ese método también incluye codificar por entropía datos del bloque utilizando la información de contexto determinada.
En otro ejemplo, aspectos de esta divulgación se refieren a un aparato para codificar datos de video que incluyen uno o más procesadores configurados para determinar información de contexto para un bloque de datos de video, en donde el bloque está incluido dentro de una unidad codificada de datos de video, en donde el bloque está por debajo de una fila superior de bloques en la unidad codificada, y en' donde la información de contexto no incluye información de un bloque vecino-por-encima en la unidad codificada, y a codificar por entropía datos del bloque utilizando la información de contexto determinada.
En otro ejemplo, aspectos de esta divulgación se refieren a un aparato para codificar datos de video que incluyen medios para determinar información de contexto para un bloque de datos de video, en donde el bloque está incluido dentro de una unidad codificada de datos de video, en donde el bloque está por debajo de una pila superior de bloques en la unidad codificada, y en donde la información de contexto no incluye información de un bloque vecino-por-encima en la unidad codificada, y medios para codificar por entropía datos del bloque utilizando la información de" contexto determinada.
En otro ejemplo, aspectos de esta divulgación se refieren a un medio de almacenamiento legible por computadora que tiene almacenadas en el mismo instrucciones que, cuando son ejecutadas, ocasionan que uno o más procesadores determinen información de contexto para un bloque de datos de video, en donde el bloque está incluido dentro de una unidad codificada de datos de video, en donde el bloque está por debajo de una fila superior de bloques en la unidad codificada, y en donde la información de contexto no incluye información de un bloque vecino-por-encima en la unidad codificada, y a codificar por entropía datos del bloque utilizando la información de contexto determinada.
Los detalles de uno o más aspectos de la divulgación se establecen en los dibujos acompañantes y la siguiente descripción. Otras características, objetivos y ventajas de las técnicas descritas en esta divulgación serán aparentes a partir de la descripción y dibujos, y también a partir de las reivindicaciones .
BREVE DESCRIPCION DE LAS FIGURAS La figura 1 es un diagrama en bloques que ilustra un sistema de codificación y decodificación de video ejemplar que puede utilizar las técnicas descritas en esta divulgación. * La figura 2 es un diagrama en bloques que ilustra un codificador de video ejemplar que puede implementar las técnicas descritas en esta divulgación.
La figura 3 es un diagrama en bloques que ilustra un decodificador de video ejemplar que puede implementar las técnicas descritas en esta divulgación.
Las figuras 4A y 4B son diagramas conceptuales que ilustran un árbol cuaternario (árbol cuaternario) ejemplar y una unidad de codificación más grande (LCU) correspondiente.
La figura 5 es un. diagrama en bloques que ilustra bloques vecinos ejemplares de los cuales se puede determinar contexto para la codificación por entropía de un bloque.
La figura 6 es un diagrama en bloques que ilustra bloques vecinos .ejemplares a partir de los cuales se puede determinar contexto para la codificación por entropía de un bloque.
¦ La figura 7 es un diagrama de flujo que ilustra un método ejemplar de codificación por entropía de un bloque de datos de video.
La figura 8 es un gráfico de flujo que ilustra otro método ejemplar de codificación por entropía de un bloque de datos de video.
La figura 9 es un gráfico de flujo que ilustra otro método ejemplar de codificación por entropía de un bloque de datos de video.
La figura 10 es un gráfico de flujo que ilustra otro método ejemplar de codificación por entropía de un bloque de datos de video..
DESCRIPCION DETALLADA DE IA INVENCION Un dispositivo de codificación de video puede intentar comprimir datos de video tomando ventaja de la redundancia espacial y temporal. Por ejemplo, un codificador de video puede tomar ventaja de la redundancia espacial codificando un bloque con relación a bloques vecinos previamente codificados. De igual manera, un codificador de video puede tomar ventaja de la redundancia temporal codificando un bloque con relación a datos de cuadros previamente codificados. En particular, el codificador de video puede predecir un bloque actual a partir de datos de un vecino espacial o a partir de datos de un cuadro previamente codificado. El codificador de video entonces puede calcular un residual para el bloque como una diferencia entre los valores de pixel actuales para el bloque y los valores de pixel pronosticados para el bloque. Por consiguiente, el residual para un bloque puede incluir valores de diferencia pixel-por-pixel en el dominio de pixel (o espacial) .
El codificador de video entonces puede aplicar una transformada a los valores del residual para comprimir energía de los valores de pixel en un número relativamente pequeño de coeficientes de transformada en el dominio de frecuencia. El codificador de video entonces puede cuantificar los coeficientes de transformada. El codificador de video puede escanear los coeficientes de transformada cuantificados para convertir una matriz bidimensional de coeficientes de transformada cuantificados en un vector unidimensional incluyendo los coeficientes de transformada cuantificados . En algunos casos, los procesos de cuantificación y escaneo pueden ocurrir de manera contemporánea. El proceso de escaneo de los coeficientes en-ocasiones se refiere como serialización de los coeficientes.
El codificador de video entonces puede aplicar un proceso de codificación por entropía para codificar por entropía los coeficientes escaneados. Los procesos de codificación por entropía ejemplares pueden incluir, por ejemplo, codificación de longitud variable adaptable al contexto (CAVLC) , codificación aritmética binaria adaptable al contexto (CABAC) , codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC) , codificación por entropía de división de intervalo de probabilidad (PIPE) u otras metodologías de codificación por entropía. El codificador de video también puede codificar por entropía elementos de sintaxis asociados con los datos de video codificados para uso por un decodificador de video en la decodificación de los datos de video.
Con respecto a (CABAC), un codificador de video puede seleccionar un modelo de contexto que opera en contexto para codificar símbolos asociados con un bloque de datos de video. El contexto se puede referir, por ejemplo, a si los valores son cero o no cero para símbolos vecinos de un símbolo que actualmente está siendo codificado.
De acuerdo con algunos ejemplos, las posiciones de los coeficientes significativos (es decir, coeficientes de transformada no cero) en un bloque de video se pueden codificar antes que los valores de los- coeficientes de transformada, los cuales se pueden referir como los "niveles" de los coeficientes de transformada. El proceso de codificación de las ubicaciones de los coeficientes significativos se pueden referir 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 video puede incluir un arreglo bidimensional de unos y ceros, en donde los unos indican posiciones de coeficientes de transformada significativos dentro del bloque y los ceros indican posiciones de coeficientes de transformada no significativos (valor cero) dentro del bloque. Los unos y ceros se refieren como "indicadores de coeficientes significativos".
Después que el SM es codificado, un codificador de video puede codificar por entropía el nivel de cada coeficiente de transformada significativo. Por ejemplo, un codificador de video puede convertir un valor absoluto de cada coeficiente de transformada no cero en una forma binaria. De esta manera, cada coeficiente de transformada no cero puede ser "binarizado", por ejemplo, utilizando un código unario que comprende uno o más bits, o "carpetas". Además, se puede incluir un número de otros elementos de sintaxis binarizados para permitir que un decodificador de video decodifique los datos de video.
Un codificador de video puede codificar cada carpeta para un bloque de datos de video, ya sea correspondiente a coeficientes de transformada o información de sintaxis para el bloque, utilizando cálculos de probabilidad para cada carpeta. Los cálculos de probabilidad pueden indicar una probabilidad de que una carpeta tenga un valor binario determinado (por ejemplo, "0" o "1") . Los estimados de probabilidad pueden ser incluidos dentro de un modelo de probabilidad, también referido como un "modelo de contexto". Un codificador de video puede seleccionar un modelo de contexto determinando un contexto para, el depósito. El contexto para una carpeta de un elemento de sintaxis puede incluir valores de' depósitos relacionados de elementos de sintaxis vecinos previamente codificados. En algunos ejemplos, el contexto para codificar' un elemento de sintaxis actual puede incluir elementos de sintaxis vecinos colocados en la parte superior y a la izquierda del elemento de sintaxis actual. En cualquier caso, un modelo de probabilidad diferente es definido para cada contexto. Después de la codificación de la carpeta, el modelo de contexto es adicionalmente actualizado con base en un valor de la carpeta para reflejar los cálculos de probabilidad más actuales.
En algunos ejemplos, bloques de datos de video tan pequeños como 4x4 pixeles pueden ser utilizados para codificar una imagen. Por ejemplo, un cuadro de 1920x1080 pixeles (por ejemplo, para video 1080p) puede incluir tantos como 495 bloques de 4x4 pixeles. Por consiguiente, para un bit de información de contexto que se va a almacenar por bloque, un codificador de video puede almacenar en memoria intermedia 495 bits de información. Además, en algunos ejemplos, más de un bit de información puede ser utilizado, como contexto para codificar un elemento de sintaxis, particular, el cual puede incrementar en gran medida la cantidad de datos que son almacenados en memoria intermedia para codificación por entropía.
Las técnicas de esta divulgación generalmente se refieren a limitar la cantidad de datos de bloque vecinos que son almacenados en memoria intermedia durante la codificación por entropía. Por ejemplo, en lugar de utilizar datos de bloques vecinos-por-encima como información de contexto cuando se codifica un bloque actual, en algunos ejemplos, un dispositivo de codificación de video puede determinar el contexto con base en una característica del elemento de sintaxis o bloque que está siendo codificado. En otros ejemplos, el dispositivo de codificación de video puede determinar el contexto con base en. datos, de los bloques vecinos a la izquierda cuando se codifica el bloque actual. En otros ejemplos todavía, un dispositivo de codificación de video puede determinar contexto basado en datos de un bloque vecino-por-encima, pero solamente cuando el bloque actual es un sub-bloque de una división más grande (por ejemplo, referida en el estándar de codificación de video de alta eficiencia (HEVC) emergente como una unidad de codificación más grande (LCU) , tal como se describe con mayor detalle a continuación.
La limitación de la cantidad de datos que se almacenan en memoria intermedia, de acuerdo con las técnicas de esta divulgación, puede reducir la complejidad asociada con la codificación de datos de video. Por ejemplo, la codificación por entropía de acuerdo con los aspectos de esta divulgación pueden permitir que un dispositivo de codificación de video almacene en memoria intermedia menos datos, reduciendo así los requerimientos de memoria asociados con dicho almacenamiento en memoria intermedia.
Además, la reducción de las ubicaciones a partir de las cuales se deriva el contexto puede mejorar la eficiencia de la codificación por entropía y/o él resultado. Por ejemplo, las técnicas de esta divulgación pueden ser implementadas para mejorar el análisis sintáctico del resultado. Es decir, a medida que los datos de video son recibidos por un codificador de video, los datos de vídeo pueden ser analizados sintácticamente, o leídos y segmentados, 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 sintácticamente cada LCU de una poción después del análisis sintáctico de una o más LCUs iniciales (por ejemplo, una LCU superior y/o más a la izquierda en una porción) . El análisis sintáctico de las LCUs puede permitir al codificador de video formar múltiples secuencias de procesamiento (por ejemplo, . para procesamiento paralelo), con cada secuencia incluyendo una o más de las LCUs analizadas sintácticamente.
No obstante, debido a las dependencias del modelo de contexto, algunas secuencias pueden depender de otras secuencias, las cuales pueden no ser óptimas para aplicaciones de procesamiento paralelo. Por ejemplo, una primera secuencia puede depender de datos procesados por una segunda secuencia diferente, la cual puede ocasionar que la primera secuencia espere hasta que la segunda secuencia haya procesado los datos. Es decir, los datos generalmente son analizados sintácticamente hasta el punto en que los datos son útiles, y después los datos son codificados. En el caso de frentes de onda convencionales, un codificador de video puede hacer más lenta la codificación de datos de un primer frente de onda (por ejemplo, superior) . Eso, a su vez, puede ocasionar que la siguiente secuencia se detenga, lo cual ocasiona que la siguiente secuencia se detenga, y asi sucesivamente. Al eliminar las dependencias de contexto, de acuerdo con los aspectos de esta divulgación, una secuencia que se vuelve lenta no impactará otras secuencias que están procesadas. Con respecto al análisis sintáctico, esto significa que el analizador sintáctico para la secuencia no necesita hacer referencia a otras secuencias, sino que puede operar independientemente para cada secuencia.
En el ejemplo para los propósitos de ilustración, asumir que una LCU que actualmente está siendo codificada es colocada debajo de una fila superior de una porción, con una o más LCUs de la porción colocadas por encima de la porción actual.. En este ejemplo, el contexto para codificar la LCU actual puede ser incluida en una LCU vecina superior (por ejemplo, una LCU colocada por 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 la LCU vecina superior sea codificada antes que la LCU actual pueda ser codificada. La introducción de dicha latencia puede hacer lento- el proceso de la codificación, particularmente en aplicaciones.de procesamiento paralelo.
Aspectos de esta divulgación se pueden implementar para limitar las ubicaciones a partir de las cuales se deriva el contexto. Es decir, de acuerdo con -algunos aspectos de esta divulgación, un codificador de video puede no utilizar información de contexto de ciertos bloques vecinos y por el contrario puede extraer información de contexto de otras fuentes. Por consiguiente, las técnicas de esta divulgación pueden eliminar las dependencias de contexto antes analizadas y mejorar la salida del análisis sintáctico.
Además, en algunos casos cuando un bloque que está siendo actualmente codificado incluye información de contexto que depende de otro bloque vecino, el bloque actual puede no ser codificado en caso que la información del bloque vecino se pierda o de otra manera no esté disponible (por ejemplo, debido a errores de transmisión u otros errores). En un ejemplo para propósitos de ilustración, se puede utilizar un modo de codificación de fusión para predecir un bloque actual (por ejemplo, información de predicción asociada con otro bloque es adoptada para el bloque actual) . Si existe un error (por ejemplo, una pérdida de paquete) para un cuadro de referencia para el bloque actual, la dirección de inter-predicción para el bloque actual puede no ser derivada correctamente) . Además, el contexto que depende del bloque vecino (con el error) también puede ser corrompido. Las técnicas de esta divulgación pueden eliminar las dependencias de contexto antes analizadas para reducir la introducción de errores de derivación de contexto.
La figura 1 es un diagrama en bloques que ilustra un sistema de codificación y decodificación de video ejemplar 10 que puede utilizar técnicas para codificar por entropía datos de video. Tal como se muestra en la figura 1, el sistema 10 incluye un dispositivo fuente 12 que proporciona datos de video codificados que van a ser decodificados en un momento posterior por un dispositivo destino 14. En particular, el dispositivo fuente 12 proporciona los datos de video al dispositivo destino. 14 a través de un medio legible por computadora 16. El dispositivo fuente 12 y el dispositivo destino 14 pueden comprender cualquiera de un amplio rango de dispositivos, incluyendo computadoras de escritorio, computadoras tipo notebook (es decir, laptop) , computadoras de tableta, decodificadores, equipos de teléfono tales como los denominados teléfonos "inteligentes", las denominadas tabletas "inteligentes", televisiones, cámaras, dispositivos de despliegue, reproductores de medios digitales, consolas de juego de video, dispositivos de corriente de video, o similares. En algunos casos, el dispositivo fuente 12 y' el dispositivo destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo destino 14 puede recibir los datos de video codificados que van a ser decodificados a través del medio legible por computadora 16. El medio legible por computadora 16 puede comprender cualquier tipo de medio o dispositivo con la capacidad para mover los datos de video codificados desde el dispositivo fuente 12 al dispositivo destino 14. En un ejemplo, el medio legible por computadora 16 puede comprender un medio de comunicación para permitir que el dispositivo fuente 12 transmita datos de video codificados directamente al dispositivo destino 14 en tiempo real. Los datos de video codificados pueden ser modulados de acuerdo con un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitidos al dispositivo destino 14. El medio de comunicación puede comprender cualquier medio de comunicación cableado o inalámbrico, tal como un espectro de radiofrecuencia (RF) o una o más lineas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquete, tal como una red de área local, una red de área amplia, o una red global tal como la 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 fuente 12 al dispositivo destino 14.
En algunos ejemplos, los datos codificados pueden ser emitidos desde la interfaz de salida 22 a un dispositivo de almacenamiento. De manera similar, se puede tener acceso 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 a los que se tiene acceso de forma 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 conveniente para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de archivo u otro dispositivo de almacenamiento intermedio que puede almacenar el video codificado generado por el dispositivo fuente 12. El dispositivo destino 14 puede tener acceso a los datos de video almacenados del dispositivo de almacenamiento a través de corriente o descarga. El servidor de archivos puede ser cualquier tipo de servidor con la capacidad para almacenar datos de video codificados y transmitir los datos de video codificados al dispositivo destino 14. Servidores de archivo ejemplares incluyen un servidor Web (por ejemplo, para un sitio Web) , un servidor FTP, dispositivos de almacenamiento unidos a la red ( AS), o una unidad de disco local. El dispositivo destino 14 puede tener acceso a los datos de video codificados a través de cualquier conexión de datos estándar, incluyendo una conexión de Internet, esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi) , una conexión cableada (por ejemplo, DSL, módem de cable, etcétera) , o una combinación de ambos que sea conveniente para tener acceso a datos de video codificados almacenados en un servidor de archivo. La t ansmisión de datos de video codificados desde el dispositivo de almacenamiento puede ser una transmisión en corriente, una transmisión de descarga, o una combinación de los mismos.
Esta divulgación generalmente se puede referir al codificador de video 20 "señalizando" cierta información a otro dispositivo, tal como el decodificador de video 30. Se debiera entender, no obstante, que al codificador de video puede señalizar información mediante la asociación de ciertos elementos de sintaxis con varias porciones codificadas de datos de video. Es decir, el codificador de video 20 puede "señalizar" datos almacenando, ciertos elementos de sintaxis para cabeceras de diversas porciones codificadas de datos de video. En algunos casos, dichos elementos y sintaxis se pueden codificar y almacenar (por ejemplo,, almacenar en el medio de almacenamiento 34 o un servidor de archivo 36) antes de ser recibidos y decodificados por el decodificador de video 30. Por lo tanto, el término "señalización" se puede referir generalmente a la comunicación de sintaxis u otros datos para decodificar datos de video comprimidos, ya sea que dicha comunicación ocurra en tiempo real o en tiempo casi real o sobre un lapso de tiempo, tal como pudiera ocurrir cuando se almacenan elementos de sintaxis en' un medio al momento de la codificación, los cuales después pueden ser recuperados mediante un dispositivo de decodificación en cualquier momento después de ser almacenados en este medio.
Las técnicas de esta divulgación, las cuales generalmente ' se refieren a datos de codificación por entropía, no necesariamente se limitan a aplicaciones o escenarios inalámbricos. Las técnicas pueden ser aplicadas a codificación de video en apoyo de cualquiera de una variedad de aplicaciones multimedia, tal como transmisiones de televisión sobre-el-aire, transmisiones de televisión por cable, transmisiones de televisión satelital, transmisiones de video de corriente por Internet, tal como corriente adaptable dinámica sobre HTPP (DASH), video digital que se codifica en un medio de almácenamiento de datos, decodificación de video digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede ser configurado para soportar transmisión de video de una vía o dos .vías para soportar aplicaciones tales como corriente de video, reproducción de video, transmisión de video y/o telefonía de video.
En el ejemplo de la figura 1, el dispositivo fuente 12 incluye la fuente de video 18, codificador de video 20, e interfa'z de salida 22. El dispositivo destino 14 incluye la interfaz de entrada 28, decodificador de video 30 y dispositivo de despliegue 32. De acuerdo con esta divulgación, el codificador de video 20 del dispositivo fuente 12 se puede configurar para aplicar las técnicas para codificar vectores de movimiento y para ejecutar bi-predicción en HEVC y sus extensiones, tal como multivisión o extensiones 3DV. En otros ejemplos, un dispositivo fuente y un dispositivo destino pueden incluir otros componentes o arreglos. Por ejemplo, el dispositivo fuente 12 puede recibir datos de video desde una fuente de video externa 18, tal como una cámara externa. De igual manera, el dispositivo destino 14 se puede conectar en interfaz . con un dispositivo de despliegue externo, en lugar de incluir un dispositivo de despliegue integrado.
El sistema ilustrado 10 de la figura 1 es simplemente un ejemplo. Técnicas para codificar por entropía datos de video pueden ser ejecutadas por cualquier dispositivo de codificación y/o decodificación de video digital. Aunque generalmente las técnicas de esta divulgación son ejecutadas por un dispositivo de codificación de video, las técnicas también pueden ser ejecutadas por un codificador/decodificador de video, típicamente referido como un "CODEC". Además, las técnicas de esta divulgación también pueden ser ejecutadas por un pre-procesador de video. El dispositivo fuente 12 y el dispositivo destino 14 son simplemente ejemplos de dichos dispositivos de codificación en los cuales el dispositivo fuente 12 genera datos de video codificados para transmisión al dispositivo destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden operar en una manera sustancialmente simétrica de manera que cada uno de los dispositivos 12, 14 incluye componentes de codificación y decodificación de video. Por lo tanto, el sistema 10 puede soportar transmisión de video ' de una vía o dos vías entre dispositivos de video 12, 14, por ejemplo, para corriente de video, reproducción de video, transmisión de video o telefonía de video.
La fuente de video 18 del dispositivo fuente 12 puede incluir un dispositivo de captura de video, tal como una cámara de video, un archivo de video que contiene video previamente capturado, y/o una interfaz de alimentación de video para recibir video desde un proveedor de contenido de video. Como una alternativa adicional, la fuente de video 18 puede generar datos basados en gráficos de computadora como el video fuente, o una combinación de video en vivo, video archivado, y video generado por computadora. En algunos casos, si la fuente de video 18 es una cámara de video, ' el dispositivo fuente 12 y el dispositivo destino 14 pueden formar los denominados teléfonos con cámara o teléfonos de video. Sin embargo, tal como se mencionó antes, las técnicas descritas en esta divulgación se pueden aplicar a codificación de video 'en general, y se pueden aplicar a aplicaciones inalámbricas y/o cableadas. En cada caso, el video capturado, pre-capturado o generado por computadora puede ser codificado por el codificador de video 20. La información de video codificada entonces puede ser emitida por la interfaz de salida 22 sobre un medio legible por computadora 16.
El medio legible por computadora 16 puede incluir medios transitorios, tal como una transmisión de red cableada o transmisión inalámbrica, o medio de almacenamiento (es decir, medio de almacenamiento no transitorio) , tal como un disco duro, unidad flash, disco compacto, disco de video digital, disco Blu-ray, u otro medio legible por computadora. En algunos ejemplos, un servidor de red (que no se muestra) puede recibir datos de video codificados desde el dispositivo fuente 12 y proporcionar los datos de video codificados al dispositivo destino 14, por ejemplo, a través de transmisión de red. De manera similar, un dispositivo de cómputo de una instalación de producción de medio, tal como una instalación de estampado de discos, puede recibir datos de video codificados desde el dispositivo fuente 12 y producir un disco que contenga los datos de video codificados. Por lo tanto, el medio legible por computadora 16 se puede entender como incluyendo uno o más medios legibles por computadora de diversas formas, en diversos ejemplos.
La interfaz de entrada 28 del dispositivo destino 14 recibe información desde el medio legible por computadora 16. La información del medio legible por computadora 16 puede incluir información de sintaxis definida por el codificador de video 20, la cual también es utilizada por el decodificador de video 30, 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 incluyendo múltiples bloques, tal como una porción, imagen, . conjunto de frentes de onda, o mosaico. Por lo tanto, el término "unidad codificada" se debiera entender como incluyendo múltiples bloques, por ejemplo, múltiples unidades de codificación más grandes (LCUs) . Además, el término "unidad codificada" no debiera ser confundido con los términos "unidad de codificación" o CU tal como se utiliza en HEVC. El dispositivo de despliegue 32 despliega los datos de video decodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de despliegue tal como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD) , una pantalla de plasma, una pantalla de diodos de emisión de luz orgánica (OLED) , u otro tipo de dispositivo. de despliegue.
El codificador de video 20. y el decodificador de video 30 pueden operar de acuerdo con un estándar de codificación de video, tal como el estándar de codificación de video de alta eficiencia (HEVC) actualmente bajo desarrollo, y se puede adaptar al modelo de prueba HEVC (HM) . Alternativamente, . el codificador de video 20 y el decodificador de video 30 pueden operar de acuerdo con otros estándares industriales o de marca propia, tal como el estándar ITU-T H.264, alternativamente referido como MPEG-4 Parte 10, codificación de video avanzada (AVC), o extensiones de dichos estándares. Las técnicas de esta divulgación, no obstante, no se limitan a algún estándar de codificación particular. Otros ejemplos de estándares de codificación de video incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de video 20 y el decodificador de video 30 pueden estar integrados 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 de video en una corriente de datos común o corrientes de datos separadas. Si aplica, las unidades MUX-DEMUX se pueden adaptar al protocolo de multiplexor ITU H.223, u otros protocolos tales como el protocolo de datagrama de usuario (UDP) .
El estándar ITU-T H.264/MPEG-4 (AVC) fue formulado por el Grupo de Expertos en Codificación de Video ITU-T (VCEG) junto con el Grupo de Expertos de Imágenes de Movimiento ISO/IEC . (MPEG) como el producto de una sociedad colectiva conocida como el Equipo de Video Conjunto (JVT) . En algunos aspectos, las técnicas descritas en esta divulgación se pueden aplicar a dispositivos que generalmente se adaptan al estándar H.264. El estándar H.264 se describe en la Recomendación ITU-T H.264, Codificación de Video Avanzado para servicios audiovisuales genéricos, por el Grupo de Estudio ITU-T, y con fecha del 25 de marzo de 2005, que se puede referir aqui como el estándar H.264 o la especificación H.264, o el estándar o especificación H.264/AVC. El Equipo de Video Conjunto (JVT) continúa trabajando en extensiones para H.264/MPEG-4 AVC .
El JCT-VC está trabajando en el desarrollo¦ del. estándar HEVC . Los esfuerzos de la estandarización HEVC están basados en un modelo en evolución de un dispositivo de codificación de video referido como el modelo de prueba HEVC (HM) . El HM presume varias capacidades adicionales de dispositivos de codificación de video con relación a dispositivos existentes de acuerdo con, por ejemplo, ITU-T H.264/AVC. Por ejemplo, aunque H.264 proporciona nueve modos de codificación de intra-predicción, el HM puede proporcionar tantos datos como 33 modos de codificación intra-predicción.
En general, el modelo de trabajo del HM describe que un cuadro de video o imagen se puede dividir en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU) que incluyen muestras de luminancia y crominancia. Los datos de sintaxis dentro de una corriente de bits pueden definir un tamaño para la LCU, la cual es una unidad de codificación más grande en términos del número de pixeles. Una porción incluye un número de bloques de árbol consecutivos en orden de codificación.^ Un cuadro de video o imagen se puede dividir en una o más porciones. Cada bloque de árbol se puede dividir en unidades de codificación (CUs) de acuerdo con un árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, con un nodo raíz correspondiente al bloque de árbol. Si una CU es dividida en cuatro sub-CUs, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CUs.
Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar datos de sintaxis para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división, indicando si la CU correspondiente al nodo está dividida en sub-CUs. Los elementos de sintaxis para una CU se pueden definir de manera recursiva, y pueden depender de si la CU está dividida en sub-CUs. Si una CU no está dividida de manera adicional, ésta se refiere como una CU-hoja. En esta divulgación, cuatro sub-CUs de una CU-hoja también se referirán como CUs-hoja incluso si no hay una división explícita de la CU-hoja original. Por ejemplo, si una CU con un tamaño de 16x16 no se divide de manera adicional, las cuatro sub-CUs 8x8 también se referirán como CUs-hojas aunque la CU 16x16 nunca se dividió.
Una CU tiene un propósito similar al de 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 se puede dividir en cuatro nodos hijos (también referidos como sub-CUs) , y cada nodo hijo a su vez puede ser un nodo padre y se puede dividir en otros cuatro nodos hijos. Un nodo hijo no dividido final, referido como un nodo hoja de árbol cuaternario, comprende un nodo de codificación, también referido como una CU-hoja. Los datos de sintaxis asociados con una corriente de bits codificada pueden definir un número máximo . de veces que se puede dividir un bloque árbol, referido como una profundidad de CU máxima, y también puede definir un tamaño mínimo de lo nodos de codificación. Por consiguiente, una corriente de bits también puede definir una unidad de codificación · más pequeña (SCU) . Esta divulgación utiliza el término "bloque" para hacer referencia 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 sub-bloques de los mismos en H.264/AVC). Además, esta divulgación puede utilizar el término "unidad codificada" para describir una cantidad predefinida de datos. de video, los cuales pueden incluir dos o más bloques de datos de video. Es decir, por ejemplo, una unidad codificada se puede referir a una imagen, una porción, un mosaico o conjunto de mosaicos, un conjunto de frentes de onda, o cualquier otra unidad predefinida que incluya datos de video. Por consiguiente, el término "unidad codificada" no debiera confundirse con el término "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 cuadrado en forma. El tamaño de¦ la CU puede variar de 8x8 pixeles hasta el tamaño 4el bloque de árbol con un máximo de 64x64 pixeles o mayor. 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 división de la CU en una o más PUs. Los modos de división pueden diferir entre si la CU es codificada en modo directo u omitido, codificada en modo intra-predicción, o codificada en modo inter-predicción . Las PUs se pueden dividir para no tener una forma cuadrada. Los datos de sintaxis asociados con una CU también pueden describir, por ejemplo, la división de la CU en una o más ' TUs de acuerdo con un -árbol cuaternario. Una TU puede ser cuadrada o no cuadrada (por ejemplo, rectangular) en forma.
El estándar HEVC permite transformaciones de acuerdo con las TUs, las cuales pueden ser diferentes para diferentes CUs. Las TUs típicamente tienen un tamaño basado en el tamaño de las PUs dentro de una CU determinada definida para una LCU dividida, aunque esto puede no siempre ser el caso. Las TUs típicamente tienen el mismo tamaño o son más pequeñas que las PUs. En algunos ejemplos, muestras residuales correspondientes a una CU se pueden subdividir en unidades más pequeñas utilizando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT) . Los nodos de hoja del RQT se pueden referir como unidades de transformada (TUs). Los valores de diferencia de píxel asociados con las TUs se pueden transformar para producir coeficientes de transformada los cuales pueden ser cuantificados .
Una CU-hoja' puede incluir una o más unidades de predicción (PUs) . En general, una PU representa un área espacial correspondiente a toda 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 es codificada en intra-modo, los datos para la PU pueden ser incluidos en un árbol cuaternario residual (RQT) , el cual puede incluir datos que describen un modo de intra-predicción para una TU correspondiente a la PU . Como otro ejemplo, cuando la PU es codificada en inter-modo, la PU puede incluir datos que definen uno o más vectores de movimiento para la PU. Loa 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, una precisión de un cuarto de pixel o una precisión de un octavo de pixel) , una imagen de referencia a la cual señala 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-ho a que tiene una o más PUs también puede incluir una o más unidades de transformada (TUs) . Las unidades de transformada pueden ser especificadas utilizando un RQT (también referido como una estructura de árbol cuaternario TU), tal como se analizó antes. Por ejemplo, un indicador de división puede indicar si una CU-hoja está dividida en cuatro unidades de transformada. Después, cada unidad de transformada se puede dividir adicionalmente en sub-TUs adicionales. Cuando una TU no es dividida adicionalmente, ésta se. puede referir como una TU-hoja. Generalmente, para intra-codificación, todas las TUs-hoja pertenecientes a una CU-ho a comparten el mismo modo de intra-predicción . Es decir, el mismo modo de intra-predicción generalmente es aplicado para calcular valores pronosticados para todas las TUs de una CU-hoja. Para intra-codificación, un codificador de video 20 puede, calcular un valor residual para cada TU-hoja utilizando el modo de intra-predicción, como una diferencia entre la porción de la CU correspondiente a la TU y el bloque original. Una TU no necesariamente está limitada al tamaño de una PU . Por lo tanto, las TUs pueden ser más grandes o más pequeñas que una PU . Para intra-codificación, una PU puede ser colocada con una TU-hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU-hoja puede corresponder al tamaño de la CU-hoja correspondiente.
Además, las TUs de las CUs-hoja también se pueden asociar con estructuras de datos de árbol cuaternario respectivas, referidas como árboles cuaternarios residuales (RQTs) . Es decir, una CU-hoja puede incluir un árbol cuaternario indicando la manera en que la CU-hoja está dividida en TUs. El nodo raíz de un árbol cuaternario TU generalmente corresponde a una CU-hoja, mientras que el nodo raíz de un árbol cuaternario CU generalmente corresponde a un bloque de árbol (o LCU) . Las TUs del RQT que no se dividen se refieren como TUs-hoja. En general, esta' divulgación utiliza los términos CU y TU para referirse a CU-hoja y TU-hoja, respectivamente, al menos que se observe lo contrario.
Una secuencia de video típicamente incluye una serie de cuadros o imágenes de video. Un grupo de imágenes. (GOP) generalmente comprende una serie de una o más de las imágenes de video. Un GOP puede incluir datos de sintaxis en una cabecera del GOP, una cabecera de una o más de las imágenes, o alguna otra parte, que describe un número de imágenes incluidas en el GOP. Cada porción de una imagen puede incluir datos de sintaxis de porción que describen un modo de codificación para la porción respectiva. El codificador de video 20 típicamente opera en bloques de video dentro de porciones de video individuales a fin de codificar los datos de video. Un bloque de video puede corresponder a un nodo de codificación dentro de una CU. Los bloques de video pueden tener tamaños variables o fijos, y pueden diferir en tamaño de acuerdo con un estándar de codificación especificado.
Como un ejemplo, el HM soporta la predicción en diversos tamaños de PU. Asumiendo que el tamaño de una CU particular es 2Nx2N, el HM soporta intra-predicción en tamaños de PU de 2Nx2N o NxN, y la inter-predicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también soporta división asimétrica para inter-predicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En división asimétrica, una dirección de una CU no es dividida, mientras que la otra dirección es dividida en 25% y 75%. La división de la CU correspondiente a la división del 25% es indicada por una "n" seguido por una indicación de "arriba", "abajo", "izquierda" o "derecha". De esta forma, por ejemplo, "2NxnU" se refiere a una' CU 2Nx2N que está dividida horizontalmente con una PU 2NxO .5N en la parte superior y una PU 2Nxl .5N en la parte inferior .
En esta divulgación, "NxN" y "N por N" se pueden utilizar de manera intercambiable para hacer referencia a las dimensiones de pixel de un bloque de video en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 pixeles o 16 por 16 pixeles. En general, un bloque 16x16 tendrá 16 pixeles en una dirección vertical (y=16) y 16 pixeles en una dirección horizontal¦ (x=16) . De igual manera, un bloque NxN generalmente tiene N pixeles en una dirección vertical y N pixeles en una dirección horizontal, donde N representa un valor entero no negativo. Los pixeles en un bloque pueden estar acomodados en filas y columnas. Además, los bloques no necesariamente necesitan tener el mismo número de pixeles en la dirección horizontal como en la dirección vertical. Por ejemplo, los. bloques pueden comprender NxM pixeles, donde M no necesariamente es igual a N.
Siguiendo la codificación intra-predictiva o inter-predictiva utilizando las PUs de una CU, el codificador de video 20 puede calcular los datos residuales para las TUs de la CU. Las PUs pueden comprender datos de sintaxis que describen un método o modo para generar datos de píxel predictivos en el dominio espacial (también referido como el dominio de pixel) y las TUs pueden comprender coeficientes en el dominio de transformada siguiendo la aplicación de una transformada, por ejemplo, una transformada de coseno discreto (DCT) , una transformada de enteros, una transformada de ondicula, o una transformada conceptualmente similar a los datos de video residuales. Los datos residuales pueden corresponder a diferencias de pixel entre pixeles de los valores de predicción e imagen no codificados correspondientes a las PUc. El codificador de video 20 puede formar las TUs incluyendo los datos residuales para la CU, y después transformar las TUs para producir coeficientes de transformada para la CU.
Siguiendo cualesquiera transformadas para producir coeficientes de transformada, el codificador de video 20 puede realizar la cuantificación de los coeficientes de transformada.. La cuantificación generalmente se refiere a un proceso en el cual los coeficientes de transformada son cuantificados para reducir posiblemente la cantidad de datos utilizados para representar los coeficientes, proporcionando una 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-bit puede ser redondeado hacia abajo a un valor de m-bit durante la cuantificación, donde n es mayor que m.
Siguiendo la cuantificación, el codificador de video puede escanear los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional incluyendo los coeficientes de transformada cuantificados . El escaneo se puede diseñar para colocar los coeficientes de mayor energía (y por lo tanto de frecuencia inferior) en la parte frontal del arreglo y colocar los coeficientes de menor energía (y por lo tanto de frecuencia superior) en la parte posterior del arreglo. En algunos ejemplos, el codificador de video 20 puede utilizar un orden de escaneo predefinido para escanear los coeficientes de transformada cuantificados a fin de producir un vector serializado que puede ser codificado por entropía. En otros ejemplos, el codificador de video 20 puede ejecutar un escaneo adaptable. Después de escanear los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de video 20 puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con una codificación de longitud variable adaptable al contexto (CAVLC) , una codificación aritmética binaria adaptable al contexto (CABAC) , una codificación aritmética binaria adaptable al contexto basada en sintaxis ¦ (SBAC) , una codificación por entropía de división de intervalo de probabilidad (PIPE) u otra metodología de codificación por entropía. El codificador de video 20 también puede codificar por entropía elementos de sintaxis asociados con los datos de video codificados para uso por el decodificador de video 30 en la decodificación de los datos de video.
¦ Para ejecutar CABAC, el codificador de video puede asignar un contexto dentro de un modelo de contexto a un símbolo que se va a transmitir. El contexto se puede referir, por ejemplo, a si los valores vecinos del símbolo son o no no-cero. El codificador de video 20 también puede codificar por entropía elementos de sintaxis, tal como un indicador de coeficiente significativo y al menos un indicador de coeficiente producido cuando se realiza un escaneo adaptable.
En general, el proceso de decodificación de video ejecutado por el decodificador de video 30 puede incluir técnicas reciprocas a las técnicas de codificación ejecutadas por el codificador de video 20. Aunque es generalmente reciproco, el decodificador de video 30 puede, en algunos casos, ejecutar técnicas similares a aquellas ejecutadas por el codificador de video 20. El decodificador de video 30 también se puede basar en elementos de sintaxis u otros datos contenidos en una corriente de bits recibida que incluye los datos descritos con respecto al codificador de video 20.
De acuerdo con aspectos de esta divulgación, el codificador de video 20 y/o decodificador de video 30 pueden implementar las técnicas de esta divulgación para limitar la cantidad de montos de bloques vecinos que son almacenadas en memoria intermedia durante la codificación por entropía. Por ejemplo, en lugar de utilizar datos de bloques vecinos-por-encima como información de contexto cuando se codifica un bloque actual, en algunos ejemplos, el codificador de video 20 y/o decodificador de video 30 pueden determinar contexto basado en una característica del elemento de sintaxis o bloque que está siendo codificado. En otros ejemplos, el codificador de video 20 y/o decodificador de video 30 pueden determinar contexto basado en datos de los bloques vecinos a la izquierda cuando se codifica el bloque actual. En otros ejemplos todavía, el codificador de video 20 y/o decodificador de video 30 pueden determinar contexto basado en datos a partir de un bloque vecino-por-encima, pero solamente cuando el bloque actual es un sub-bloque de una división más grande (por ejemplo, una LCU) . Además, en algunos casos, el codificador de video 20 y/o decodificador de video 30 pueden ejecutar una o más técnicas de esta divulgación en combinación.
El codificador de video 20 y el decodificador de video 30 pueden ser implementados como cualquiera de una variedad de circuiteria de codificador o decodificador conveniente, según aplique, tal como uno o más microprocesadores, procesadores de señal digital (DSPs), circuitos integrados de aplicación específica (ASICs) , arreglos de puerta programable en campo (FPGAs), circuiteria lógica discreta, software, hardware, microprogramación cableada o cualesquiera combinaciones de los mismos. Cada codificador de video 20 y decodificador de video 30 se puede incluir en uno o más codificadores o decodificadores , cualquiera de los cuales se puede integrar como parte de un codificador/decodificador de video combinado (CODEC) . Un dispositivo incluyendo el codificador de video 20 y/o decodificador de video 30 puede comprender un circuito integrado, un microprocesador, y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular .
La figura 2 es un diagrama en bloques que ilustra un codificador de video ejemplar 20 que puede implementar las técnicas descritas en esta divulgación para la codificación por entropía de datos de video. El codificador de video 20 puede ejecutar intra- e inter-codificación de bloques de video dentro de las porciones de video. La intra-codificación se basa en la predicción espacial para reducir o remover la redundancia espacial en video dentro de un cuadro o imagen de video determinado. La inter-codificación se basa en la predicción temporal para reducir o remover la redundancia temporal en video dentro de cuadros o imágenes adyacentes de una secuencia de video. El Intra-modo (I modo) se puede referir a cualquiera de varios modos de compresión basados en espacio. Los inter-modos, tal como la predicción unidireccional (P modo) o bi-predicción (B modo), se pueden referir a cualquiera de varios modos de compresión básados en tiempo.
Tal como se muestra en la figura 2, el codificador de video 20 recibe datos de video que van a ser codificados. En el ejemplo de la figura 2, el codificador de video 20 incluye una unidad de selección de modo 40, sumadora 50, unidad de transformada 52, unidad de cuantificación 54, unidad de codificación por entropía 56, y memoria de imagen de referencia 64. La unidad de selección de modo 40, a su vez, incluye una unidad de cálculo de movimiento 42, unidad de compensación de movimiento 44, unidad de intra-predicción 46 y unidad de división 48. Para reconstrucción de bloques de video, el codificador de video 20 también incluye la unidad de cuantificación inversa 58, unidad de transformada inversa 60, y sumadora 62. Un filtro de desbloqueo (que no se muestra en la figura 2) también se puede incluir para filtrar los límites del bloque para remover los artefactos por bloques del video reconstruido. Si así se desea, el filtro de desbloqueo típicamente filtraría la salida de la sumadora 62. También se pueden utilizar filtros de bucle adicionales (en bucle o post-bucle) además del filtro de desbloqueo. Dichos filtros no se muestran por brevedad, pero si se desea, pueden filtrar la salida de la sumadora 50 (tal como un filtro en-bucle) .
Durante el proceso de codificación, ¦ el codificador de video 20 recibe un cuadro de video o porción que va a ser codificada. El cuadro o porción se puede dividir en múltiples bloques de video. La unidad de cálculo de movimiento 42 y la unidad de compensación de movimiento 44 ejecutan codificación inter-predictiva del bloque de video recibido, con relación a uno o más bloques en uno o más cuadros de referencia para proporcionar la compresión temporal. La unidad de intra-predicción 46 alternativamente puede ejecutar codificación intra-predictiva del bloque de video recibido con relación a uno o más bloques vecinos en el mismo cuadro o porción que el bloque que se va a codificar para proporcionar compresión espacial. El codificador de video 20 puede ejecutar múltiples pasadas de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de video.
Además, la unidad de división 48 puede dividir bloques de datos de video en sub-bloques, con base en la evaluación de esquemas de división previos en pasadas de codificación previas. Por ejemplo, la unidad de división 48 inicialmente puede dividir un cuadro o porción en LCUs, y dividir cada una de las LCUs en sub-CUs con base en el análisis de velocidad-distorsión (por ejemplo, optimización de velocidad-distorsión) . La unidad de selección de modo 40 además puede producir una estructura de datos de árbol cuaternario indicativa de la división de una LCU en sub-CUs. Las CUs de nodo-hoja del árbol cuaternario pueden incluir una o más PUs y una o más TUs.
La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, basados en los resultados de error, y proporcionar el bloque intra- o inter-codificado resultante a la sumadora 50 para generar datos de bloque residuales y a la sumadora 62 para reconstruir el bloque codificado para uso como un cuadro de referencia. La unidad de selección de modo 40 también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores intra-modo, información de división, y otra información de sintaxis de ese · tipo, para la codificación por entropía de la unidad 56.
La unidad de cálculo de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran de manera separada para propósitos conceptuales. El cálculo de movimiento, ejecutado por la unidad de cálculo de movimiento 42, es el proceso de generar vectores de movimiento, los cuales calculan el movimiento para bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video dentro de un cuadro de video actual o imagen con relación a un bloque predictivo dentro de un cuadro de referencia (u otra unidad codificada) con relación al bloque actual que está siendo codificado dentro del cuadro actual (u otra unidad codificada).
Un bloque predictivo es un bloque que resulta asemejarse de manera muy estrecha al bloque que va a ser codificado, en términos de diferencia de pixel, lo cual puede ser determinado por la suma de la diferencia absoluta (SAD) , la suma de la diferencia de cuadrados (SSD) , u otras métricas de diferencia. En algunos ejemplos, el codificador de video 20 puede calcular valores. para posiciones de pixel de sub-entero de imágenes de referencia almacenadas en la memoria de cuadro de referencia 64. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de pixel, posiciones de un octavo de pixel, u otras posiciones fracciónales de pixel de la imagen de referencia. Por lo tanto, la unidad de cálculo de movimiento 42 puede ejecutar una búsqueda de movimiento con relación a las posiciones de pixel completas y posiciones de pixel fracciónales y emitir un vector de movimiento con precisión de pixel fraccional.
La unidad de cálculo de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video en una porción inter-codificada 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 ser seleccionada a partir de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1) , cada una de las cuales identifica una o más. imágenes de referencia almacenadas en la memoria de cuadro de referencia 64. La unidad de cálculo de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y la unidad de compensación de movimiento 44.
La compensación de movimiento, ejecutada por la unidad de compensación de movimiento 44, puede involucrar la extracción o generación del bloque predictivo con base en el vector de movimiento determinado por la unidad de cálculo de' movimiento 42. Una vez más, la unidad de cálculo de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar funcionalmente integradas, en algunos ejemplos. Al momento de recibir el vector de movimiento para la PU del bloque de video actual, la unidad de compensación de movimiento 44 puede ubicar el bloque predictivo al cual señala el vector de movimiento en una de las listas de imágenes de referencia. La sumadora 50 forma un bloque de video residual sustrayendo los valores de pixel del bloque predictivo a partir de los valores de pixel del bloque de video actual que está siendo codificado, formando valores de diferencia de pixel, tal como se analiza a continuación. En general, la unidad de cálculo de movimiento 42 ejecuta cálculo de movimiento con relación a los componentes de iluminancia, y la unidad de compensación de movimiento 44 utiliza vectores de movimiento calculados con base en los componentes de luminancia tanto para los componentes de crominancia como para los componentes de luminancia. La unidad de selección de modo 40 también puede generar elementos de sintaxis asociados con los bloques de video y la porción de video para uso por el decodificador de video 30 en la decodificación de los bloques de video de la porción de video.
La unidad de intra-predicción 46 puede intra-predecir un bloque actual, como una alternativa a la inter-predicción ejecutada por la unidad de cálculo de movimiento 42 y la unidad de compensación de movimiento 44, tal como se describió antes. En particular, la unidad de intra-predicción 46 puede determinar un modo de intra-predicción a utilizar para codificar un bloque actual. En algunos ejemplos, la unidad de intra-predicción 46 puede codificar un bloque actual utilizando varios modos de intra-predicción, por ejemplo, durante pasadas de codificación separadas, y la unidad de intra-predicción 46 (o unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intra-predicción apropiado a utilizar a partir de los modos probados .
Por ejemplo, la unidad de intra-predicción 46 puede calcular valores de velocidad-distorsión utilizando un análisis de velocidad-distorsión para los diversos modos de intra-predicción probados, y seleccionar el modo de intra-predicción que tiene las mejores características de velocidad-distorsión entre los modos probados. El análisis de velocidad-distorsión generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque no codificado original que fue codificado para producir el bloque codificado, asi como una tasa de transferencia de bits (es decir, un número de bits) utilizada para producir el bloque codificado. La unidad de intra-predicción 46 puede calcular relaciones a partir de las distorsiones y velocidades para los diversos bloques codificados a fin de determinar cuál modo de intra-predicción exhibe el mejor valor de velocidad-distorsión para el bloque.
El codificador de video 20 forma un bloque de video residual sustrayendo los datos de predicción de la unidad de selección de modo 40 a partir del bloque de video original que se está codificando. La sumadora 50 representa el componente o componentes que ejecutan esta operación de sustracción. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de video que comprende valores de coeficiente de transformada residuales. La unidad de procesamiento de transformada 52 puede ¦ ejecutar otras transformadas que son conceptualmente similares a DCT. También se podrían utilizar las transformadas de ondícula, transformadas de entero, transformadas de sub-banda u otros tipos de transformadas. En cualquier caso, la unidad de procesamiento de transformada 52 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual de un dominio de valor de pixel a un dominio de transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación "54 cuantifica los coeficientes de transformada para reducir adicionalmente la tasa de transferencia de bits. El proceso de · cuantificación puede reducir la profundidad del bit asociada con algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación . En' algunos ejemplos, la unidad de cuantificación 54 entonces puede ejecutar un escaneo de la matriz incluyendo los coeficientes de transformada cuantificados . Alternativamente, la unidad de codificación por entropía 56 puede ejecutar el escaneo.
Siguiendo la cuantificación, la, unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados . Por ejemplo, la unidad de codificación por entropía 56 puede ejecutar codificación de longitud variable adaptable al contexto (CAVLC) , codificación aritmética binaria adaptable ¦ al contexto (CABAC) , codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC) , codificación por entropía de división de intervalo de probabilidad (PIPE) u otra técnica de codificación por entropía. En el caso de codificación por entropía basada en contexto, el contexto se puede basar en bloques vecinos.
Con respecto a CABAC, la unidad de codificación por entropía 56 puede seleccionar un modelo de. contexto que opera en contexto para codificar símbolos asociados con un bloque, de datos de video. Por ejemplo, la unidad de codificación por entropía 56 puede codificar por entropía cada elemento de sintaxis para un bloque de datos de video utilizando cálculos de probabilidad para cada elemento de sintaxis. Los cálculos de probabilidad pueden indicar una probabilidad de. que un elemento tenga un valor determinado. Los cálculos de probabilidad se . pueden incluir dentro de un modelo de probabilidad, también referido como un modelo de contexto. La unidad de codificación por entropía 56 puede seleccionar un modelo de contexto determinando la información de contexto (o, de manera más simple, "contexto") para el elemento de sintaxis. Se define un modelo de probabilidad diferente para cada contexto. Después de la codificación del elemento de sintaxis, la unidad de codificación por entropía 56 puede actualizar el modelo de contexto seleccionado con base en un valor real del elemento de sintaxis para reflejar los cálculos de probabilidad más actuales. Es decir, por ejemplo, I la unidad de codificación por entropía 56 puede actualizar la manera en la cual se selecciona un modelo de contexto para cambiar 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 previamente codificados. Por ejemplo, la unidad de codificación por entropía 56 puede determinar el contexto para la codificación de un elemento de sintaxis actual basado en elementos de sintaxis vecinos colocados-por-encima y a la izquierda del elemento de sintaxis actual. Tal como se observó antes, el estándar HEVC emergente permite que una LCU sea dividida de manera recursiva en sub-CUs tan pequeñas como 4x4 píxeles. Por consiguiente, una imagen de 1920x1080 píxeles (por ' e emplo, para video 1080p) puede incluir tantos como 495 bloques de 4x4 píxeles en una memoria intermedia de línea que se extiende horizontalmente a través de una imagen. Si el codificador de video 20 almacena en memoria intermedia un bit de información de contexto por bloque, el codificador de video 20 puede almacenar en memoria intermedia 495 bits de información.
De acuerdo con las técnicas dé esta divulgación, la unidad de codificación por entropía 56 puede determinar contexto para codificar por entropía datos de video en una manera que reduzca o elimine la cantidad de información que es almacenada en memoria intermedia por el codificador de video 20. Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de utilizar datos de los bloques vecinos-por-encima 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 cuadro o una porción) , la unidad de codificación por entropía 56 puede utilizar solamente datos de los bloques vecinos a la izquierda.
Como otro ejemplo, la unidad de codificación por entropía 56 puede utilizar datos de un bloque vecino-por-encima como contexto para la codificación de elementos de sintaxis asociados con un bloque actual, pero solamente cuando el bloque actual es un sub-CU de una unidad de codificación más grande dividida (LCU) , y el bloque vecino-por-encima está dentro de la misma LCU. En otras palabras, la unidad de codificación por entropía 56 se puede configurar para evitar - el uso de información de contexto que cruza un límite LCU superior.
Aun como otro ejemplo, la unidad de codificación por entropía 56 puede derivar contexto para codificar elementos de sintaxis asociados con un bloque actual basado en información LCU local. Por ejemplo, la unidad de codificación por entropía 56 puede derivar información de contexto para datos inter-pronosticados con base en la profundidad de CU, la cual generalmente corresponde a un número de veces en que una LCU ha sido dividida para alcanzar la CU. En un ejemplo para propósitos de explicación, asumir que una LCU tiene un tamaño (profundidad cero) de 64x64 píxeles. Una sub-CU de la LCU puede tener 32x32 píxeles de tamaño a una profundidad CU de uno, mientras que una sub-CU adicional de la sub-CU puede tener 16x16 píxeles del tamaño a una profundidad de CU de dos.
De acuerdo con las técnicas de esta divulgación, la unidad de codificación por entropía 56 puede determinar el contexto para los datos inter-pronosticados de un bloque actual basado en la profundidad de CU 'del bloque actual. Es decir, por ejemplo, la profundidad de CU de uno puede corresponder a un modelo de probabilidad diferente que la profundidad de CU de dos. En otras palabras, cuando se codifican elementos de sintaxis para una CU a una profundidad de CU particular, la unidad de codificación por entropía 56 puede utilizar la profundidad de CU como información de contexto para seleccionar un modelo de probabilidad para codificar los elementos de sintaxis.
Como otro ejemplo, la unidad de codificación por entropía 56 puede derivar información de contexto para datos intra-pronosticados con base en la 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 una TU es dividida (por ejemplo, dividida de acuerdo con una estructura RQT) . Por consiguiente, por ejemplo, la profundidad de TU de uno puede corresponder a un modelo de probabilidad diferente que la profundidad de TU de dos. En otras palabras, cuando se codifican elementos de sintaxis para una TU a una profundidad de TU particular, la unidad de codificación por entropía 56 puede utilizar la profundidad de TU como información de contexto para seleccionar un modelo de probabilidad para codificar los elementos de sintaxis.
Siguiendo la codificación por entropía por la unidad de codificación por entropía 56, la corriente de bits codificada puede ser transmitida a otro dispositivo (por ejemplo, decodificador de video 30) o archivada para posterior transmisión o recuperación. La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican la cuantificación inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, por ejemplo, para posterior uso como un bloque de referencia; La unidad de compensación de movimiento '44 puede calcular un bloque de referencia agregando el bloque residual a un bloque predictivo de uno de los cuadros de la memoria de cuadro de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de pixel de sub-entero para uso en el cálculo de movimiento. La sumadora 62 añade el bloque residual reconstruido al bloque de predicción de movimiento compensado producido por la unidad de compensación de movimiento 44 para producir un bloque de video reconstruido para almacenamiento en la memoria de cuadro de referencia 64. El bloque de video reconstruido puede ser utilizado por la unidad de cálculo de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para inter-codificar un bloque en un cuadro de video posterior.
De esta manera, el codificador de video 20 es un ejemplo de un codificador de video que puede ejecutar un método incluyendo determinar información de contexto para un bloque de datos de video, donde el bloque está incluido dentro de una unidad codificada de datos de video, donde el bloque está por debajo de una fila superior de bloques en la unidad codificada, y donde la información de contexto no incluye información de un bloque vecino-por-encima en la unidad codificada. El método también puede incluir datos de codificación por entropía del bloque utilizando la información de contexto determinada.
La figura 3 es un diagrama en bloques que ilustra un decodificador de video ejemplar 30 que puede implementar las técnicas descritas en esta divulgación para la codificación por entropía de datos de video. En el ejemplo de la figura 3, el decodificador de video 30 incluye una unidad de decodificación por entropía 80, , unidad de predicción 81, unidad de cuantificación inversa 86, unidad de transformación inversa 88, sumadora 90, y memoria de imágenes de referencia 92. La unidad de predicción 81 incluye la unidad de compensación de movimiento 82 y la unidad de intra-predicción 84.
Durante el proceso de decodificación, el decodificador de video 30 recibe una corriente de bits de video codificado que representa bloques de video de una porción de video codificado y elementos de sintaxis asociados del codificador de video 20.· La unidad de decodificación por entropía 80 del decodificador de videó 30 decodifica por entropía la corriente de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos de sintaxis.
El decodificador de video 30 puede recibir los elementos de sintaxis al nivel de la porción de video y/o al nivel del bloque de video. Por ejemplo, a manera de antecedente, el decodificador de video 30 puede recibir datos de video comprimidos que han sido comprimidos para transmisión a través de una red en las denominadas "unidades de capa de abstracción ·, de red" o unidades NAL. Cada unidad NAL puede incluir una cabecera que identifica un tipo de datos almacenado en la unidad NAL. Existen dos tipos de datos que comúnmente son almacenados en las unidades NAL. El primer tipo de datos almacenado para una unidad NAL es los datos de capa de codificación de video (VCL) , los cuales incluyen los datos de video comprimido. E-l segundo tipo de datos almacenados para una unidad' NAL se refieren como datos no-VCL, los cuales incluyen información adicional tal como conjuntos de parámetros que definen los datos de cabecera comunes para un número grande de unidades NAL e información de mejora complementaria (SEI). Por ejemplo, los conjuntos de parámetros pueden contener la información de cabecera a nivel de secuencia (por ejemplo, en conjuntos de parámetros de secuencia (SPS) ) y la información de cabecera a nivel de imagen que no cambia con frecuencia (por ejemplo, en conjuntos de parámetros de imágenes (PPS)). La información que no cambia con frecuencia contenida en los conjuntos de parámetros no necesita ser repetida para cada secuencia o imagen, mejorando asi la eficiencia de la codificación. Además, el uso de conjuntos de parámetros permite la transmisión fuera-de-banda de la información de cabecera, evitando asi la necesidad de transmisiones redundantes para resiliencia de error.
La unidad de decodificación por entropía 80 se puede configurar de manera similar a la unidad de codificación por entropía 56, tal como se describió antes con respecto al codificador de video 20 de la figura 2. Por ejemplo, la unidad de codificación por entropía 80 puede seleccionar un modelo de contexto que opera en contexto para decodificar símbolos asociados con un bloque de datos de video. Es decir, la unidad de codificación por entropía 80 puede codificar por entropía cada elemento de sintaxis para un bloque de datos de video utilizando cálculos de probabilidad para cada elemento de sintaxis. De acuerdo con las técnicas de esta divulgación, la unidad de codificación por entropía 80 puede determinar contexto para codificar por entropía datos de video en una manera que reduce o elimina la cantidad de información que es almacenada en memoria intermedia por el decodificador de video 30. Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de utilizar datos de bloques vecinos-por-encima 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 cuadro o una porción), la unidad de codificación por entropía 80 puede utilizar solamente datos de los bloques vecinos a la izquierda.
Como otro ejemplo, la unidad de codificación por entropía 80 puede utilizar datos de un bloque vecino-por-encima como contexto para decodificar elementos de sintaxis asociados con un bloque actual, pero solamente cuando el bloque actual es una sub-CU de una unidad de codificación más grande dividida (LUC) , y el bloque vecino-por-encima está dentro de la misma. LCU . En otras palabras, la unidad de codificación por entropía 80 se puede configurar para evitar el uso de contexto que cruza un límite de LCU superior. Como otro ejemplo todavía, la unidad de codificación por entropía 80 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 de codificación por entropía 80 puede utilizar un solo contexto para decodificar ciertos elementos de sintaxis con base en los elementos en sí mismos. La unidad de codificación por entropía 80, en algunos casos, utiliza una combinación de estas técnicas para determinar contexto. Después de determinar contexto para decodificar un elemento de sintaxis particular, la unidad de codificación por entropía 80 puede seleccionar un modelo de probabilidad correspondiente al contexto, y decodificar el elemento de sintaxis utilizando el modelo de probabilidad seleccionado.
La unidad de decodificación por entropía 80 reenvía los vectores de movimiento y otros elementos de sintaxis' decodificados a la unidad de predicción 81. Cuando la porción de video es codificada como una porción intra-codificada (I) , la unidad de intra-predicción 84 de la unidad de predicción 81 puede generar datos de predicción para un bloque de video de la porción de video actual con base en un modo de intra-predicción señalizado y datos de bloques previamente decodificados del cuadro o imagen actual. Cuando el cuadro.de video es codificado como una porción inter-codificada (es decir, B, P o GPB) , la unidad de compensación de movimiento 82 de la unidad de predicción 81 produce bloques predictivos para un bloque de video de la porción de video actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de decodificación por entropía 80. Los bloques predictivos se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de video 30 puede construir las listas de cuadros de referencia, Lista 0 y Lista 1 como utilizando técnicas de construcción por omisión con base en las imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
La unidad de compensación de movimiento 82 determina la información de predicción para un bloque de video de la porción de video actual analizando sintácticamente los vectores de movimiento y otros elementos de sintaxis, y utiliza la información de predicción para producir los bloques predictivos para el bloque de video actual que se está decodificando . Por ejemplo, la unidad de compensación de movimiento 82 utiliza algunos de los elementos de sintaxis recibidos para, determinar un modo de predicción (por ejemplo, intra o inter-predicción) utilizado para codificar los bloques de video de la porción de video, un tipo de porción inter-predicción (por ejemplo, porción B, porción P o porción GPB) , información de ' construcción para una o más de las listas de imágenes de referencia para la porción, vectores de movimiento para cada bloque de video inter-codificado de la porción, estatus de inter-predicción para cada bloque de video inter-codificado de la porción, y otra información para decodificar los bloques de video en la porción de video actual .
La unidad de compensación de movimiento 82 también puede ejecutar interpolación con base en filtros de interpolación. La unidad de compensación de movimiento 82 puede utilizar filtros de interpolación tal como los utiliza el codificador de video 20 durante la codificación de los bloques de video para calcular valores interpolados para pixeles de sub-entero de bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación utilizados por el codificador de video 20 a partir de los elementos de sintaxis recibidos y utilizar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 86 cuantifica a la inversa, es . decir, descuantifipa, los coeficientes de transformada cuantificados proporcionados en la corriente de bits y decodificados por la unidad de decodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de video 20 para cada bloque de video en la porción de video para determinar un grado de cuantificación y, de igual manera, un grado de cuantificación inversa que debiera ser aplicado.
La unidad de transformada inversa 88 aplicar una transformada inversa, por ejemplo, una DCT inversa, o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada a fin de producir bloques residuales en el dominio de píxel. De acuerdo con los aspectos de esta divulgación, la unidad de transformada inversa 88 puede determinar la manera en la cual se aplicaron las transformadas a los datos residuales. Es decir, por ejemplo, la unidad de transformada inversa 88 puede determinar una RQT que representa la manera en la cual se aplicaron las transformadas (por ejemplo, DCT, transformada de entero, transformada de ondicula, o una o más transformadas diferentes) a las muestras de luminancia residuales y las muestras de crominancia residuales asociadas con un bloque de datos de video recibidos.
Después que la unidad de compensación de movimiento 82 genera el bloque predictivo para el bloque de video actual con base en los vectores de movimiento y otros elementos de sintaxis, el decodificador de video 30 forma un bloque de video decodificando sumando los bloques residuales de la unidad de transformada inversa 88 con los bloques predictivos correspondientes generados por la unidad de compensación de movimiento 82. La sumadora 90 representa el componente o componentes que ejecutan esta operación de suma. Si asi se desea, también se puede aplicar un filtro de desbloqueo para filtrar los bloques decodificados a fin de remover los artefactos por bloques. También se pueden utilizar 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 pixel, o de otra manera mejorar la calidad del video. Los bloques de video decodificados en un cuadro o imagen determinados son entonces almacenados en la memoria de imagen de referencia 92, la cual almacena imágenes de referencia utilizadas para posterior compensación de movimiento. La memoria de imagen de referencia 92 también almacena video decodificado para posterior presentación en un dispositivo de despliegue, tal como el dispositivo de despliegue 32 de la figura. 1. De esta manera, el decodificador de video 30 es un ejemplo de un decodificador de video que puede ejecutar un método incluyendo determinar la información de contexto para un bloque de datos de video, donde el bloque está incluido. dentro de una unidad codificada de datos de video, donde el bloque está por debajo de una fila superior de bloques en la unidad codificada, y donde la información de contexto no incluye información de un bloque vecino-por-encima en la unidad codificada. El método también puede incluir, decodificar por entropía datos del bloque utilizando la información de contexto determinada.
Las figuras 4A y4B son diagramas conceptuales que ilustran un árbol cuaternario ejemplar 150 y una unidad de codificación más grande correspondiente 172. La figura 4A muestra un árbol cuaternario ejemplar 150, el cual incluye nodos acomodados en una forma jerárquica. El árbol cuaternario 150 puede estar asociado, por ejemplo, con un bloque de árbol de acuerdo con el estándar HEVC propuesto. Cada nodo en un árbol cuaternario, tal como un árbol cuaternario 150, puede ser un nodo de hoja sin hijos, o puede tener cuatro nodos hijo. En el ejemplo de la figura 4A, el árbol cuaternario 150 incluye el nodo raíz 152. El nodo raíz 152 tiene cuatro nodos hijo, incluyendo los nodos de hoja 156A-156C (nodos hoja 156) y el nodo 154. Debido a que el nodo 154 no es un nodo hoja, el nodo 154 incluye cuatro nodos hijo, los cuales en este ejemplo, son los nodos hoja 158A-158D (nodos hoja 158) .
El árbol cuaternario 150 puede incluir datos que describen características de una unidad de codificación más grande correspondiente (LCU) , tal como la LCU 172 en este ejemplo. Por ejemplo, el árbol cuaternario 150, por su estructura, puede describir la división de la LCU en sub-CUs. Asumir que la LCU 172 tiene un tamaño de 2Nx2N. La LCU 172, en este ejemplo, tiene cuatro sub-CUs 176A-176C (sub-CUs 176) y 174, cada una con un tamaño de NxN. La sub-CU 174 además se divide en cuatro sub-CUs 178A-178D (sub-CUs 178), cada una con un tamaño N/2xN/2. La estructura del árbol cuaternario 150 corresponde a la división de la LCU 172, en este ejemplo. Es decir, el nodo raíz 152 corresponde a la LCU 172, los nodos hoja 156 corresponden a las sub-CUs 176, el nodo 154 corresponde a la sub-CU 174, y los nodos hoja 158 corresponden a las sub-CUs 178.
Datos para nodos de árbol cuaternario 150 pueden describir si la CU correspondiente al nodo está dividida. Si la CU está dividida, se pueden presentar cuatro nodos adicionales en el árbol cuaternario 150. En algunos ejemplos, un nodo de un árbol cuaternario se puede implementar similar al siguiente pseudocódigo: árbol cuaternario_nodo { indicador_divisor boleano ( 1 ) //datos de señalización si (indicador_división) { árbol cuaternario_nodo hijol; árbol cuaternario_nodo hijo2; árbol cuaternario_nodo hijo3; árbol cuaternario_nodo hi o4; } } El valor indicador_división puede ser un valor de un bit representativo de si la CU correspondiente al nodo actual está dividida. Si la CU no está dividida, el valor indicador_división puede ser "0", mientras que si la CU está dividida, el valor indicador_división puede ser "1". Con respecto al ejemplo de árbol cuaternario 150, un arreglo de valores de indicador de división puede ser 101000000.
Tal como se observó antes, la profundidad de CU se puede referir a la extensión a la cual una LCU, tal como la LCU 172, ha sido dividida. Por ejemplo, el nodo raíz 152 puede corresponder a la profundidad de CU de cero, mientras que el nodo 154 y los nodos de hoja 156 pueden corresponder a la profundidad de CU de uno. Además, los nodos de hoja 158 pueden corresponder a la profundidad de CU de dos. De acuerdo con aspectos de esta divulgación, la profundidad de CU y/o TU se puede utilizar como contexto para codificar por entropía ciertos elementos de sintaxis. En un ejemplo para propósitos de explicación, uno o más elementos de sintaxis asociados con el nodo de hoja 156A pueden ser codificados por entropía utilizando un modelo de contexto diferente que el nodo de hoja 158A, debido a que el nodo de 'hoja 156A está ubicado a la profundidad de uno, mientras que el nodo de hoja 158A está ubicado a la profundidad de dos.
Aunque la figura 4A ilustra un ejemplo de un árbol cuaternario de CU, se debiera entender que se puede aplicar un árbol cuaternario similar a las TUs de un nodo de hoja de CU. Es decir, un nodo de hoja de CU puede incluir un árbol cuaternario de TU (referido como un árbol cuaternario residual (RQT) ) que describe la división de las TUs para la CU. Un árbol cuaternario de TU generalmente se puede asemejar a un árbol cuaternario de CU, excepto que el árbol cuaternario de TU puede señalizar modos de intra-predicción para TUs de la CU de manera individual.
De acuerdo con las técnicas de esta divulgación, un codificador de video (por ejemplo, codificador de video 20 y/o decodificador de video 30) pueden determinar el contexto para datos inter-pronosticados de un bloque actual basado 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 video puede utilizar la profundidad de CU como información de contexto para seleccionar un modelo de probabilidad para codificar los elementos de sintaxis. Como otro ejemplo, el codificador' de video puede derivar información de contexto para datos intra-pronosticados 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 de codificación por entropía 56 puede utilizar la profundidad de CU como información de contexto para seleccionar un modelo de probabilidad para codificar los elementos de sintaxis.
La figura 5 es un diagrama en bloques que ilustra bloques vecinos ejemplares a partir de los cuales se puede determinar contexto para la codificación por entropía de un bloque. Aunque la figura 5 se describe con respecto al decodificador de video 30, se debiera entender que las técnicas de esta divulgación se pueden llevar a cabo a través de una variedad de otros codificadores de video, incluyendo el codificador de video 20 (figuras 1 y 2), otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tal como el codificador/decodificadores (CODECs) , y similar.
El decodificador de video 30 puede recibir datos codificados por entropía asociados con el bloque actual 180. Por ejemplo, el decodificador de video 30 puede recibir un mapa de significancia codificado por entropía, · coeficientes de transformada, y un número de otros elementos de sintaxis para permitir que el decodificador de video 30 decodifique de manera apropiada el bloque actual 180. El decodificador de video 30 puede determinar el contexto para uno o más de los elementos de sintaxis recibidos con base en valores de elementos de sintaxis asociados con el · bloque vecino-por-encima 182 y el bloque vecino a la izquierda 184.
Asumir, para propósitos de explicación, que el decodificador de video 30 actualmente está decodificando un elemento de sintaxis indicando . un modo de predicción particular (por ejemplo, un modo intra-predicción) de píxeles dentro del bloque actual 180. En este ejemplo, el decodificador de video 30 puede identificar los modos de intra-predicción a partir del bloque vecino-por-encima 182 y el bloque vecino a la izquierda 184 para determinar el contexto para el elemento de sintaxis actual. Por consiguiente, un modelo de contexto. utilizado para decodificar por entropía el elemento de sintaxis actual puede depender de los modos de intra-predicción del bloque vecino-por-encima 182 y el bloque vecino a la izquierda 184. Por lo tanto, el decodificador de video 30 puede almacenar, o almacenar en memoria intermedia datos que indican los modos de intra-predicción del bloque vecino-por-encima 182 y el bloque vecino a la izquierda 184, de manera que dichos datos quedan disponibles cuando se ejecuta la decodificación por entropía.
Aunque la codificación por entropía de un elemento de sintaxis asociado con un modo de intra-predicción se describe para propósitos de ejemplo, también se pueden codificar otros elementos de sintaxis con base en los datos de bloques vecinos. Por ejemplo, con respecto al estándar HEVC emergente, los siguientes elementos de sintaxis pueden ser codificados por entropía utilizando el contexto que incluye datos de bloques vecinos, incluyendo el bloque vecino-por-encima 182 y el bloque vecino a la izquierda 184: 1. indicador_omitir [xO] [yO] . a) indicador_omitir igual a uno especifica que para la CU actual, cuando se decodifica una porción P o B, ningún elemento de sintaxis adicional ' es analizado sintácticamente después de indicador_omitir [xO] [yO] , diferente a los índices del predictor de vector de movimiento. indicador_omitir [xO] [yO] igual a 0 especifica que la unidad de codificación no es omitida. Los índices de arreglo xO, yO especifican la ubicación (xO, yO) de la muestra de luminancia que está en la parte superior izquierda del bloque de codificación con relación a la muestra de luminancia que está en la parte superior izquierda de la imagen. 2. - indicador_unidad_codificación_dividir a) indicador_unidad_codificación_dividir [xO] [yO] especifica si una unidad de codificación está dividida en unidades de codificación con un tamaño horizontal y vertical a la mitad. Los índices del arreglo xO, yO especifican la ubicación (xO, yO) de la muestra de luminancia en la parte superior izquierda del bloque de codificación con relación a la muestra de luminancia en la parte superior izquierda de la imagen. 3. - cbp de bloque de luminancia a) El patrón de bloque codificado (CBP) especifica cuales bloques de luminancia contienen niveles de coeficiente de transformada no cero. Es decir, el CBP de un bloque de luminancia puede corresponder a uno o más indicadores de bloque codificados, cada uno de los indicadores de bloque codificados tienen un valor indicativo de si un bloque de luminancia respectivo está codificado (incluye uno o más valores de nivel de coeficiente de transformada no cero) o no está codificado (incluye todos los- coeficientes de transformada con valor de cero) . 4. - cbpd de bloque de crominancia a) El patrón de bloque codificado (CBP) especifica cuales bloques de crominancia contienen niveles de coeficiente de transformada no cero. Es decir, el CBP de un bloque de crominancia puede corresponder a uno o más indicadores de bloques codificados, cada uno de los indicadores de bloques codificados tiene un valor indicativo de si un bloque de crominancia respectivo está codificado (incluye uno o más valores de nivel de coeficiente de transformada no cero) o no está codificado (incluye todos los coeficientes de transformada con valor de cero) . 5. - carpetaO de modo intra-crominancia a) modo_pred_intra_crominancia [xO] [yO] especifica el modo de intra-predicción para muestras de crominancia. Los índices de arreglo xO, yO especifican la ubicación (xO, yO) de la muestra de luminancia que está en la parte superior izquierda del bloque de predicción (PU) con relación a la muestra de luminancia en la parte superior izquierda de la imagen . 6. - indicador_no_datos_residuales a) indicador_no_datos_residuales igual a 1 especifica que no hay datos residuales presentes para la unidad de codificación actual. indicador_no_datos_residuales igual a 0 especifica que los datos residuales están presentes para la unidad de codificación actual. 7.- indicador_fusión a) indicador_fusión [xO ] [yO ] especifica si los parámetros de inter-predicción para la PU actual son inferidos a partir de una división inter-pronosticada vecina. Los índices de arreglo xO, yO especifican la ubicación (xO, yO) de la muestra de luminancia en la parte superior izquierda del bloque de predicción considerado con relación a la muestra de luminancia en la parte superior izquierda de la imagen. • 8.- carpetaO de. ref_idx a) ref_idx_10 [xO] [yO] especifica el índice de imagen de referencia lista 0 para la PU actual. Los índices de arreglo O, yO especifican la ubicación (xO, yO) de la muestra de luminancia en la parte superior izquierda del bloque de predicción con relación a la muestra de luminancia en la parte superior izquierda de la imagen. b) ref_idx_ll [xO] [yO] tiene la misma semántica que rev_idx_10, con 10 y lista 0 reemplazados por 11 y lista 1, respectivamente. c) ref_idx_lc [xO] [yO] tiene la misma semántica que ref idx 10, con 10 y lista 0 reemplazados por le y combinación de lista, respectivamente. 9. - carpetaO de mvd a) mvd_10 [xO] [yO ] [compldx] , especifica la diferencia entre un componente de vector de lista 0 que se va a utilizar y el vector predictivo. Los índices de arreglo xO, yO especifican la ubicación ( O, yO) de la muestra de luminancia en la parte superior izquierda del bloque de predicción con relación a la muestra de luminancia en la parte superior izquierda de' la imagen. A la diferencia del componente de vector de movimiento horizontal se le asigna compldx=0 y al componente de vector de movimiento vertical se le asigna compIdx=l . b) mvd_ll[xO] [yO] [compldx] tiene la misma semántica que mvd_10, con 10 y lista 0 reemplazados por 11 y lista 1, respectivamente. c) mvd_lc [xO] [yO] [compldx] tiene la misma semántica que mvd_10, con 10 y lista 0 reemplazados por le y combinación de lista, respectivamente. 10. - indicador_inter_pred a) indicador_inter_pred [xO] [yO] especifica si se utiliza una uni-predicción o bi-predicción para la unidad de predicción actual. Los índices de arreglo xO, yO especifican la ubicación (xO, yO) de la muestra de luminancia en la parte superior izquierda del bloque de predicción con relación a la muestra de luminancia en la parte superior izquierda de la imagen . 11.- cbp del bloque de intra-crominancia a) el patrón de bloque codificado (CBP) especifica cuales bloques pueden contener niveles de coeficiente de transformada no cero.
Los elementos de sintaxis antes enlistados se proporcionan para propósitos de ejemplo solamente. Es decir, el decodificador de video 30 puede utilizar datos de bloques vecinos, tales como el bloque vecino-por-encima 182 y el bloque vecino a la izquierda 184, cuando se codifican por entropía otros elementos de sintaxis asociados con el bloque actual 180.
La figura 6 es un diagrama en bloques que ilustra bloques vecinos ejemplares a partir de los cuales se puede determinar contexto para la codificación por entropía de un bloque, de acuerdo con aspectos de esta divulgación. Aunque la figura 6 se describe con respecto al decodificador de video 30, se debiera entender que las técnicas de esta divulgación se pueden llevar a cabo a través de una variedad de otros codificadores de video, incluyendo el codificador de video 20 (figuras 1 y 2) , otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como el codificador/decodificadores (CODECs) y similar.
El decodificador de video 30 puede recibir datos codificados por entropía asociados con el bloque actual 190 de la unidad codificada 191. Por ejemplo, el decodificador de video 30 puede recibir un mapa de significancia codificado por entropía, coeficientes de transformada (ya sea intra o ínter pronosticados), y un número de otros elementos de sintaxis para permitir que el decodificador de video 30 decodifique de manera apropiada el bloque actual 190 de la unidad codificada 191. La unidad codificada 191 generalmente puede incluir una cantidad predefinida de datos de video incluyendo múltiples bloques de los datos de video, tal como, por ejemplo, una porció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 video. Aunque los bloques vecinos por encima 194, bloques vecinos a la izquierda 192, y bloques 196 generalmente se muestran como bloques no divididos en el ejemplo de la figura 6, se debiera entender que dichos 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 utilizar datos de los bloques vecinos por encima 194 (tal como se muestra, por ejemplo, en la figura 5) como información de contexto para determinar un modelo de probabilidad cuando se codifica un elemento de sintaxis, el decodificador de video 30 solamente pude utilizar datos de los bloques vecinos a la izquierda 192 como información de contexto para la codificación por entropía del bloque actual 190. Por ejemplo, el decodificador de video 30 puede no uti'lizar datos de los bloques vecinos por encima 194 o bloques previamente codificados 196 que no están colocados adyacentes al bloque actual 190 como información de contexto para determinar un modelo de probabilidad para la codificación por entropía del bloque actual 190. En este ejemplo, el decodif'icador de video 30 puede almacenar en memoria intermedia menos datos que el ejemplo mostrado en la figura 5. Por ejemplo, asumir un' tamaño de LCU máximo de 64x64 píxeles y un tamaño de CU más pequeño de 4x4 píxeles, el decodificador de video 30 potencialmente puede almacenar en memoria intermedia datos . asociados con solamente 16 bloques de datos de video (por ejemplo, 64/4=16 bloques vecinos a la izquierda potenciales) .
De acuerdo con otros aspectos de esta divulgación, el decodificador de video 30 solamente puede utilizar datos de bloques vecinos cuando se determina el contexto para lá codificación por entropía del bloque actual 190 cuando los bloques vecinos son parte de la misma LCU que el bloque actual 190. Por ejemplo, el decodificador de video 30 solamente puede utilizar datos de los bloques vecinos para determinar el contexto para el bloque actual 190 cuando el bloque actual 190 y los bloques vecinos son sub-CUs de la misma LCU. Es decir, en algunos ejemplos, el decodificador de video 30 no utiliza datos a través de un limite LCU cuando se determina el contexto para la codificación por entropía del bloque actual 190. La restricción del límite de LCU se puede colocar sobre los bloques vecinos-por-encima 194, los bloques vecinos a la izquierda 192, o ambos los bloques vecinos por encima 194 y los bloques vecinos a la izquierda 192.
De acuerdo con otros aspectos de esta divulgación, el decodificador de video 30 puede determinar el contexto para la codificación por entropía del bloque actual 190 con base en la información local de CU y/o LCU asociada con el bloque actual 190. Por ejemplo, el decodificador de video 30 puede determinar el contexto para datos ínter-pronosticados (por ejemplo, indicador_inter_pred) con base en la profundidad de CU, la cual generalmente corresponde a un número de veces que una LCU a la cual pertenece el bloque actual 190 ha sido dividida. Como otro ejemplo, el decodificador de. video 30 puede determinar el contexto para los datos intra-pronosticados (por ejemplo, cbp del bloque intra-crominancia ) con base en la profundidad de TU, la cual generalmente corresponde a un número de veces que una TU del bloque actual 190 ha sido dividida.
En algunos ejemplos, el decodificador de video 30 puede utilizar datos de una combinación de fuentes como información de contexto cuando se determina un modelo de probabilidad para la codificación por entropía del bloque actual 190. Por ejemplo, el decodificador de video 30 puede implementar cualquier combinación de las técnicas de esta divulgación cuando se determina el contexto para la codificación por entropía del bloque actual 190. Es decir, en un ejemplo, el decodificador de- video 30 puede utilizar' datos de ambos bloques vecinos a la izquierda 192 (por ejemplo, excluyendo los bloques vecinos por encima u otros bloques), así como datos de la información local de CU y/o LCU asociada con el bloque actual 190 como información de contexto cuando se determina un modelo de probabilidad. En otro ejemplo, el decodificador de video 30 puede utilizar datos de los bloques vecinos que son parte de la misma LCU como el bloque actual 190 (por ejemplo, excluyendo otros bloques vecinos) , así como de información local de CU y/o LCU asociada con el bloque actual 190 como información de contexto cuando se determina un modelo de probabilidad.
De manera adicional o alternativa, el decodificador de video 30 puede utilizar un solo contexto para codificación por entropía del bloque actual 190. Por ejemplo, el decodificador de video 30 puede determinar el contexto para un elemento de sintaxis particular asociado con el bloque actual 190 con base en el elemento de sintaxis en si mismo. En algunos ejemplos, el decodificador de video 30 puede utilizar un solo contexto para elementos de sintaxis incluyendo indicador_no_datos_residuales, indic'ador_fusión_bitO de ref_idx, y carpetaO de mvd, tal como se describió antes con respecto a la figura 5.
Al imitar las ubicaciones desde las cuales se deriva la información de contexto, tal como se muestra y describe en el ejemplo de la figura 6, el decodificador de video 30 puede reducir la cantidad de datos que se almacena en memoria intermedia para propósitos de derivación de contexto. Además, el decodificador de video 30 puede incrementar el análisis sintáctico del resultado y/o la robustez. Por ejemplo, tal como se observó antes, el . decodificador de video 30 puede analizar sintácticamente los datos de video recibidos de acuerdo con un proceso de análisis sintáctico particular. (por ejemplo, análisis sintáctico de frente de onda) . En ejemplos en los cuales el decodificador de video 30 no determina el contexto utilizando datos de algunos bloques vecinos, el decodificador de video 30 puede eliminar las dependencias de contexto para mejorar la salida del análisis sintáctico y la habilidad para procesar datos de video en paralelo. Además, la eliminación de las dependencias -de contexto puede reducir el potencial para errores . de derivación de contexto, mejorando así la robustez del análisis sintáctico.
La figura 7 es un diagrama de flujo que ilustra una técnica ejemplar de la codificación por entropía de un bloque de datos de video. El ejemplo mostrado en la figura 7 generalmente se describe como siendo ejecutado por un codificador de video. Se debiera entender que, en algunos ejemplos, la técnica de la figura 7 se puede llevar a cabo, a través del codificador de video 20 (figuras 1 y 2) o el decodificador de video 30 (figuras 1 y 3) antes descritos. En otros ejemplos, la técnica de la figura 7 se puede ejecutar a través de una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tal como el codificador/decodificadores (CODECs), y similar.
El codificador de video puede recibir un bloque de datos de video de una unidad codificada (por ejemplo, una imagen, porción, mosaico, conjunto de frentes de onda, y similar) para la codificación por entropía (200) . De acuerdo con aspectos de esta divulgación, el bloque de datos de video se puede colocar debajo de una fila superior de una unidad codificada (CU) . Por ejemplo, el codificador de video puede determinar si el bloque que actualmente está siendo codificado por entropía está colocado debajo de otra fila de bloques de la unidad codificada. En algunos ejemplos, el bloque que actualmente está siendo codificado por entropía puede ser una sub-CU que está incluida en la misma LCU que las sub-CUs vecinas por encima. En otros ejemplos, el bloque puede estar colocado en el borde de una LCU, de manera que los bloques vecinos por encima pertenecen a una LCU diferente que el bloque actual.
El codificador de video entonces puede determinar el contexto para el bloque que no incluye información de un bloque vecino-por-encima (202). Por ejemplo, de acuerdo con aspectos de esta divulgación, en lugar de utilizar información de los bloques vecinos por encima, el codificador de video puede utilizar información de los 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 ser incluidos dentro de la misma LCU que el bloque que actualmente está siendo codificado. En otros ejemplos, los bloques vecinos a la izquierda pueden ser incluidos en una LCU diferente que el bloque que está siendo actualmente codificado.
En otro ejemplo, el bloque de datos de video puede incluir uno o más bloques de una LCU, y los bloques vecinos por encima pueden incluir una o más LCUs diferentes. En dicho ejemplo, de acuerdo con aspectos de esta divulgación, el codificador de video puede determinar el contexto para el bloque utilizando información asociada con los otros bloques LCU, pero excluyendo los bloques vecinos por encima (incluidos en otras LCUs) . En un ejemplo para propósitos de ilustración, el bloque que está siendo codificado puede incluir una primera sub-CU de una LCU, y los bloques vecinos por encima pueden incluir una o más LCUs diferentes. Asumir también que una segunda sub-CU está colocada por encima ' de la primera sub-CU (en la misma LCU) . En este ejemplo, el codificador de video puede determinar la información de contexto para la primera sub-CU utilizando información de la segunda sub-CU, la cual está colocada por encima de la primera sub-CU.
En, otro ejemplo, de acuerdo con aspectos de esta divulgación, el codificador de video puede determinar el contexto para la codificación por entropía del bloque basado en la información local de CU y/o -LCU asociada con el bloque. Por ejemplo, el codificador de video puede determinar el contexto basado en la profundidad de CU o profundidad de TU (por ejemplo, de acuerdo con una estructura de árbol cuaternario, tal como se muestra en la figura 4), el tamaño de la LCU, u otras características. Es decir, el codificador de video puede determinar el contexto para los datos inter-pronosticados con base en la profundidad de la CU, la cual generalmente corresponde a un número de veces que una LCU ha sido dividida para llegar al bloque actual. Como otro ejemplo, el codificador de video puede determinar el contexto para los datos intra-pronosticados con base en la profundidad de la transformada, la cual describe el número de veces que una TU para el bloque actual ha sido dividida. También son posibles otros ejemplos, tal como la determinación del contexto para el bloque actual con base en el tamaño de la CU al cual pertenece el bloque, el tamaño de la TU asociada con el bloque, y similar.
En otros ejemplos, el codificador de video puede determinar el contexto para el bloque en otras maneras. Por ejemplo de acuerdo con algunos aspectos, el codificador de video puede utilizar un solo contexto cuando se codifica por entropía el bloque. Es decir, el codificador de video puede determinar el contexto para codificar el bloque actual con base en un elemento de .sintaxis que actualmente está siendo codificado (por ejemplo, un elemento de sintaxis se mapea directamente a un cierto contexto) .
En algunos ejemplos, el codificador de video puede utilizar información de una combinación de fuentes cuando se determina el contexto para la codificación por entropía del bloque. Por ejemplo, el codificador de video puede utilizar información tanto de los bloques vecinos a la izquierda como información de las características locales de CU y/o LCU. En otro ejemplo, el codificador de video puede utilizar información de bloques vecinos que son parte de la misma LCU que el bloque e información de las características locales de CU y/o LCU. Después de determinar el contexto, el codificador de video puede codificar por entropía el bloque utilizando el contexto determinado, tal como se observó antes (204).
Aunque el proceso mostrado en la figura 7 se describe de manera genérica con respecto a la codificación de un bloque de datos de video, se debiera entender que . un bloque de datos de video puede incluir más de un elemento de sintaxis asociado (tal como se describió, 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 se puede llevar a cabo múltiples veces cuando se codifica por entropía un bloque de datos de video. Es decir, por ejemplo, el codificador de video puede codificar por entropía algunos elementos de sintaxis asociados con el bloque de datos de video de manera diferente a otros. Por lo tanto, un elemento de sintaxis puede ser codificado por entropía utilizando contexto basado en una característica del bloque, mientras que otro elemento de sintaxis puede ser codificado por entropía en otra manera.
Se debiera entender también que los pasos mostrados y descritos con respecto a la figura 7 se proporcionan simplemente como un ejemplo. Es decir, los pasos del método de la figura 7 no necesariamente necesitan ser ejecutados en el orden mostrado en la figura 7 y se puede llevar a cabo una cantidad menor, adicional o incluso pasos alternativos.
La figura 8 es un diagrama de flujo que ilustra una técnica ejemplar de codificación por entropía de un bloque de datos de video. El ejemplo mostrado, en la figura 8 generalmente se describe como siendo ejecutado por un codificador de video. Se debiera entender que, en algunos ejemplos, la técnica de la figura.8 se puede llevar a cabo a través del codificador de video 20 (figuras 1 y 2) o el decodificador de video 30 (figuras 1 y 3), antes descritos. En otros ejemplos, la técnica de la figura 8 se puede llevar a cabo a través de una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como el codificador/decodificadores (CODECs), y similares.
De acuerdo con algunos ejemplos, las técnicas del ejemplo mostrado en la figura 8 se pueden realizar con las técnicas mostradas en la figura. 7. Por ejemplo, las técnicas del ejemplo mostrado en la figura 8 se pueden realizar durante el paso 202 de la figura 7.
En el ejemplo de la figura 8, un codificador de video determina si utiliza datos de los 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, tal como se observó antes con respecto a la figura 7, el codificador de video puede no utilizar información de un bloque vecino-por-encima cuando se determina el contexto para la codificación por entropía de uno o más elementos de sintaxis. De acuerdo con aspectos de esta divulgación, en lugar de utilizar información 'de bloques vecinos-por-encima, el codificador de video puede utilizar información de los bloques vecinos a la izquierda cuando se determina el contexto para seleccionar un modelo de probabilidad. En dichos ejemplos (por ejemplo, la ramificación SI del paso 210), el codificador de video puede recuperar al menos una porción de la información de contexto de los bloques vecinos a la izquierda (212) . En algunos ejemplos, los bloques vecinos a la izquierda pueden ser . incluidos dentro de la misma LCU a medida que el bloque está siendo actualmente codificado. En otros ejemplos, los bloques vecinos a la izquierda pueden ser incluidos en una LCU diferente que el bloque que está siendo actualmente codificado.
El codificador de video entonces puede determinar si utiliza datos de otras fuentes como contexto para la codificación por entropía (214). Si el codificador de video no utiliza datos de los bloques vecinos a la izquierda como contexto (por ejemplo, la ramificación NO del paso 210), el codificador de video puede proceder directamente al paso 214. En cualquier caso, el codificador de video puede determinar el contexto con base en la información local de CU y/o LCU asociada con el bloque. Es decir, el codificador de video puede determinar el contexto con base en la profundidad de CU o profundidad de TU (por ejemplo, de acuerdo con una estructura de árbol .cuaternario, tal como se muestra en la figura 4), el tamaño de la LCU, u otras características. En otros ejemplos, el codificador de video puede determinar un solo contexto. Es decir, el codificador de video puede determinar el contexto con base en un elemento de sintaxis que actualmente está siendo codificado (por ejemplo, un elemento de sintaxis mapea directamente a un cierto contexto) .
Si el codificador de video no utiliza datos de otras fuentes como contexto (por ejemplo, la ramificación SI del paso 214), el codificador de video puede recuperar la información de contexto apropiada de la otra fuente o fuentes (216) . El codificador de video entonces puede seleccionar un modelo de probabilidad con base en la información de contexto determinada (218). Si el codificador de video no utiliza datos de otras fuentes' como contexto, el codificador de video puede proceder directamente al paso 218.
También se debiera entender que los pasos mostrados y descritos con respecto a la figura 8 son proporcionados simplemente como un ejemplo. Es decir, los pasos del método de la' figura 8 no necesariamente tienen que ser ejecutados' en el orden mostrado en la figura 8, y se puede llevar a cabo una cantidad menor de pasos, o bien pasos adicionales o alternativos.
La figura 9 es un diagrama de flujo que ilustra una técnica ejemplar de codificación por entropía de un bloque de datos de video. El ejemplo mostrado en la figura' 9 generalmente se describe como siendo ejecutado por un codificador de video. Se debiera entender que, en algunos ejemplos, la técnica de la figura 9 puede ser llevada a cabo por el codificador de video 20 (figuras 1 y 2) o decodificador de video 30 (figuras 1 y 3), antes descritos. En otros ejemplos, la técnica de la figura 9 puede ser ejecutada por una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tal como codificador/decodificadores- (CODECs), y similar.
De acuerdo con algunos ejemplos, las técnicas del ejemplo mostrado en la figura 9 pueden ser ejecutadas con las técnicas mostradas en la figura 7. Por ejemplo, las técnicas del ejemplo mostrado en la figura 9 pueden ser ejecutadas durante el paso 202 de la figura 7.
En el ejemplo de la figura 9, un codificador de video determina si utiliza datos de la LCU actual como información de contexto para seleccionar un modelo de probabilidad para codificar por entropia un elemento de sintaxis particular de la LCU actual (230) . Por ejemplo, tal como se observó antes con respecto a la figura 7, en algunos casos, el codificador de video puede no utilizar información de un bloque vecino por encima cuando se determina el contexto para la codificación por entropia de uno o más elementos de sintaxis. No obstante, de acuerdo con aspectos de esta divulgación, el codificador de video puede utilizar datos asociados con un bloque vecino por encima cuando se determina el contexto, pero solamente cuando el bloque vecino por encima es de la misma LCU que el bloque que actualmente está siendo codificado. Es decir, el codificador de video puede abstenerse de cruzar un limite de la LCU cuando se determina el contexto para codificar los elementos de sintaxis asociados con la LCU.
En dichos ejemplos (por ejemplo, la ramificación SI del paso 230), el codificador de video puede recuperar al menos una porción de la información de contexto de los bloques para la LCU (232) . El codificador de video entonces puede determinar si utiliza datos de otras fuentes como contexto para la codificación por entropía (234) . Si el codificador de' video no utiliza datos de la LCU actual como contexto (por ejemplo, la ramificación NO del paso 230) , el codificador de video puede proceder · directamente al paso 234. En cualquier caso, el codificador de video puede determinar el contexto con base en la información local de CU y/o LCU asociada con el bloque. Es decir, el codificador de video puede determinar el contexto con base en la profundidad de CU o profundidad de TU (por ejemplo, de acuerdo con una estructura de árbol cuaternario, tal como se muestra en la figura 4), el tamaño de la LCU u otras características. En otros ejemplos, el codificador de video puede determinar un solo contexto. Es decir, el codificador de video puede determinar el contexto con base en un elemento de sintaxis que actualmente está siendo codificado (por ejemplo, un elemento de sintaxis mapea directamente a un cierto contexto) .
Si el codificador de video sí utiliza datos de otras fuentes como contexto (por ejemplo, la ramificación SI del paso 234), el codificador de video puede recuperar la información de contexto apropiada de la otra fuente o fuentes (236) . El codificador de video entonces puede seleccionar un modelo de probabilidad con base en la información de contexto determinada (238). Si el codificador de video no utiliza datos de otras fuentes como contexto, el codificador de video puede proceder directamente al paso 238.
También se debiera entender que los pasos mostrados descritos con respecto a la figura 9 son proporcionados simplemente como un ejemplo. Es decir, los pasos del método de la figura 9 no necesariamente necesitan ser ejecutados en el orden mostrado en la figura 9 y se puede ejecutar una cantidad menor de pasos o bien pasos adicionales o alternativos .
La figura 10 es un diagrama de flujo que ilustra una técnica ejemplar de codificación por entropía de un bloque de datos de video. El ejemplo mostrado en la figura 10 generalmente se describe como siendo ejecutado por un codificador de video. Se debiera entender que, en algunos ejemplos, la técnica de la figura 10 puede ser llevada a cabo por el codificador de video 20 (figuras 1 y 2) o decodificador de video 30 (figuras 1 y 3), antes descritos. En otros ejemplos, la técnica de la figura 8 puede ser ejecutada por una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificador/decodificadores (CODECs) y similar.
De acuerdo con algunos ejemplos, las técnicas del ejemplo mostrado en la figura 10 pueden ser ejecutadas con las técnicas mostradas en la figura 7. Por ejemplo, las técnicas del ejemplo mostrado en la figura 10 pueden ser ejecutadas durante el paso 202 de la figura 7.
En el ejemplo de la figura 10, un codificador de video determina si utiliza datos de 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', tal como se observó antes con respecto a la figura 7, el codificador de video puede no utilizar información de un bloque vecino-por-encima cuando determina el contexto para la codificación por entropía de uno o más elementos de sintaxis. De acuerdo con aspectos de esta ' divulgación, en lugar de utilizar información de bloques vecinos-por-encima, el codificador de video puede utilizar datos de la información del bloque local. En dichos ejemplos (por ejemplo, la ramificación SI del paso 210) , el codificador de video puede recuperar al menos una porción de la información de contexto a partir de la información de bloque local (212) .
Por ejemplo, el codificador de video puede utilizar datos de una o más características de una CU cuando se determina información de contexto. Es decir, en un ejemplo, el codificador de video puede codificar por entropía datos residuales inter-pronosticados de una CU. En este ejemplo, el codificador de video puede determinar una profundidad de CU cuando se determina la información de contexto para codificación por entropía de los datos residuales inter-pronosticados . En otras palabras, cuando se codifican elementos de sintaxis para una CU a una profundidad de CU particular, el codificador de video puede utilizar la profundidad de CU como información de contexto para seleccionar un modelo de probabilidad. En un ejemplo para propósitos de ilustración, el codificador de video puede codificar por entropía un indicador de inter-predicción ( indicador_inter_pred) asociado con datos inter-pronosticados a una profundidad de CU particular utilizando la profundidad de CU particular como información de contexto.
En otro ejemplo, el codificador de video puede utilizar datos de una o más características de una TU cuando se determina la información de contexto. Es decir, en un ejemplo, el codificador de video puede codificar por entropía datos residuales intra-pronosticados de una TU. En este ejemplo, el codificador de video puede determinar una profundidad de TU cuando se determina la información de contexto para codificación por entropía de los datos residuales intra-pronosticados. En otras palabras, cuando se codifican elementos de sintaxis para una TU a una profundidad de TU particulár, el codificador de video puede utilizar la profundidad de TU como información de contexto para seleccionar un modelo de probabilidad. En un ejemplo para propósitos de ilustración, el codificador de video 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 utilizando la profundidad de TU particular como información de contexto.
El codificador de video . entonces puede determinar si utiliza datos de otras fuentes como contexto para la codificación por entropía (264). Por ejemplo, el codificador de video puede determinar el contexto para la codificación por entropía utilizando datos de los bloques vecinos a la izquierda (por ejemplo, figura 8) o datos de otros bloques en una LCU que está siendo codificada (por ejemplo, figura 9). En otros ejemplos, el codificador de video puede determinar el contexto con base en un elemento de sintaxis que actualmente está siendo codificado (por ejemplo, un elemento de sintaxis mapea directamente a un cierto contexto) .
Si el codificador de video sí utiliza datos de otras fuentes como contexto (por ejemplo, la ramificación SI del paso1 264), el codificador de video puede recuperar la información de contexto apropiada de la otra fuente o fuentes (266) . El codificador de video entonces puede seleccionar un modelo de probabilidad con base en la información de contexto determinada (268) . Si el codificador de video no utiliza datos de las otras fuentes como contexto, el codificador de video puede proceder directamente al paso 268.
También se debiera entender que los pasos mostrados y descritos con respecto a la fiqura 10 son proporcionados simplemente como un ejemplo. Es decir, los. pasos del método de la figura 10 no necesariamente tienen que ser ejecutados en el orden mostrado en la figura 10 y se pueden ejecutar una cantidad menor de pasos o bien pasos adicionales o alternativos.
Además, se debiera entender que, dependiendo del ejemplo, algunos actos o eventos de cualquiera de los métodos aquí descritos pueden ser ejecutados en una secuencia diferente, se pueden agregar, fusionar, o dejar fuera al mismo tiempo (por ejemplo, no todos los actos o eventos descritos son necesarios para la práctica del método) . Además, en algunos ejemplos, actos o eventos pueden ser ejecutados de manera concurrente, por ejemplo, a través de procesamiento multi-secuencia, procesamiento de interrupción, o múltiples procesadores, en lugar de hacerlo en forma secuencial. Además, aunque algunos aspectos de esta divulgación se describen como siendo ejecutados por un solo módulo o unidad para propósitos de claridad, se debiera entender que las técnicas de esta divulgación pueden ser ejecutadas por una combinación de unidades o módulos asociados con un codificador de video.
En uno o más ejemplos, las funciones descritas pueden ser implementadas en hardware, software, microprogramación cableada o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden ser almacenadas o transmitidas como una o más instrucciones o código en un medio legible por computadora y ejecutadas por una unidad de procesamiento basada en hardware. El medio legible por computadora puede incluir medios de almacenamiento legibles por computadora, los cuales corresponden a un medio tangible tal como un medio de almacenamiento de datos, o medio de comunicación incluyendo cualquier medio que facilita la transferencia de un programa de computadora de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación .
De esta manera, el medio legible por computadora generalmente puede corresponder a (1) un medio de almacenamiento legible por computadora tangible que no es transitorio o (2) un medio de comunicación tal como una señal u onda de portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible al que se pueda tener acceso a través de una o más computadoras o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para implementación de las técnicas descritas en esta divulgación. Un producto de programa de computadora puede incluir un medio legible por computadora. ¦ A manera de ejemplo, y no limitación, dicho medio de almacenamiento legible por computadora puede comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético, u otros dispositivos de' almacenamiento magnético, memoria flash, o cualquier otro medio que pueda ser utilizado para almacenar un código de programa deseado en la forma de instrucciones o estructuras de datos y al que se pueda tener acceso a través de una computadora. También, cualquier conexión de manera apropiada se denomina un medio legible por computadora. Por ejemplo, si las instrucciones son transmitidas desde un sitio Web, servidor u otra fuente remota utilizando un cable coaxial, cable de fibra óptica, par torcido, linea de suscriptor digital (DSL) , o tecnologías inalámbricas tales como infrarrojo, radio y microonda, entonces el cable coaxial, cable de fibra óptica, par torcido, DSL o tecnologías inalámbricas tales como infrarrojo, radio y microondas son incluidas en la definición de medio.
Se debiera entender, no obstante, que el medio de almacenamiento legible por computadora y el medio de almacenamiento de datos no incluyen conexiones, ondas de portadora, señales u otro medio transitorio, sino que más bien está dirigido a un medio de almacenamiento tangible, no transitorio. Disco (disk) y disco (disc) , tal como aquí se utilizan, incluyen disco compacto (CD) , disco láser, disco óptico, disco versátil digital (DVD) , disco (disk) flexible y disco blu-ray donde los discos (disk) por lo general reproducen datos de forma magnética, mientras que los discos reproducen datos de manera óptica con láser. Combinaciones de los anteriores también debieran ser incluidas dentro del alcance del medio legible por computadora.
Instrucciones pueden ser ejecutadas por uno o más procesadores, tal como uno o más procesadores de señal digital (DSPs) , microprocesadores de propósito general, circuitos integrados de aplicación especifica (ASICs) , arreglos lógicos programables en campo (FPGAs), u otra circuiteria lógica discreta o . integrada equivalente. Por consiguiente, el término "procesador", tal como aquí se utiliza se puede referir, a cualquiera de la estructura anterior o cualquier otra estructura conveniente para implementación de las técnicas aquí descritas. Además, en algunos aspectos, la funcionalidad aquí descrita puede ser proporcionada dentro de los módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporados en un CODEC combinado. También, las técnicas podrían ser completamente implementadas en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un aparato inalámbrico, un circuito integrado (IC) o un conjunto de ICs (por ejemplo, un conjunto de chips) . Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para ejecutar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, tal como se describió antes, se pueden combinar diversas unidades en una unidad de hardware de CODEC o se pueden proporcionar a través de un conjunto de unidades de hardware inter-operativas, incluyendo uno o más procesadores tal como se describió antes, en conjunto con software y/o microprogramación cableada conveniente.
Diversos aspectos de la divulgación han sido descritos. Estos y otros aspectos están dentro del alcance de las siguientes reivindicaciones.

Claims (34)

NOVEDAD DE LA INVENCION Habiendo descrito el presente invento, se considera como una novedad y, por lo tanto, se reclama como prioridad lo contenido en las siguientes: REIVINDICACIONES
1.- Un método para codificar datos de video, el método comprende : determinar la información de contexto para un bloque de datos de video, en donde la determinación de la información de contexto comprende determinar la información de contexto con base en una profundidad de una de una unidad de codificación (CU) y unidad de transformada (TU) ; y codificar por entropía el bloque utilizando la información de contexto determinada. .
2. - El método de conformidad con la reivindicación 1, caracterizado .porque el bloque comprende una CU, en donde la determinación de la información de contexto comprende determinar la información de contexto para datos residuales inter-pronosticados de la CU con base en la profundidad de la CU, y en donde la codificación por entropía de los datos del bloque comprende codificar por entropía los datos residuales inter-pronosticados de la CU.
3. - El método de conformidad con la reivindicación 2, caracterizado- porque la determinación de la información de contexto comprende determinar la información de contexto para un indicador inter-predicción ( indicador_inter_pred) de los datos residuales inter-pronosticados con base en la profundidad de la CU, y en donde la codificación por entropía de los datos residuales inter-pronosticados de la CU comprende codificar por entropía el indicador de inter-predicción .
4. - El método de conformidad con la reivindicación 1, caracterizado porque el bloque comprende una TU, en donde la determinación de la información de contexto comprende determinar la información de contexto para datos residuales intra-pronosticados de la TU con base en la profundidad de la TU, y en donde la codificación por entropía de los datos del bloque comprende codificar por entropía los datos residuales intra-pronosticados de la TU.
5. - El método de conformidad con la reivindicación 4, caracterizado porque la determinación de la información de contexto comprende determinar la información de contexto para uno o más elementos de sintaxis de ' un patrón de bloque codificado de la. TU con base en la profundidad de la TU, y en donde la codificación por entropía de los datos residuales intra-pronosticados de la TU comprende codificar por entropía uno o más elementos de sintaxis de un patrón de bloque codificado.
6. - El método . de conformidad con la reivindicación 1, caracterizado porque la codificación por entropía de los datos del bloque utilizando la información de contexto determinada comprende determinar un modelo de probabilidad con base en la información de contexto determinada y codificar por entropía los datos utilizando el modelo de probabilidad determinado.
7. - El método de conformidad con la reivindicación 1, caracterizado porque la codificación por entropía del bloque de datos de video comprende codificar por entropía el bloque de los datos de video.
8. - El método de conformidad con la reivindicación 1, caracterizado porque la codificación por entropía del bloque de datos de video comprende la codificación aritmética binaria adaptable al contexto del bloque de datos de video.
9. - El método de conformidad con la reivindicación 7, caracterizado porque la codificación por entropía del bloque de datos de video además comprende: aplicar una transformada a uno o más valores residuales del bloque 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. - El método de conformidad con la reivindicación 1, caracterizado porque la codificación por entropía del bloque de datos de video comprende decodificar por entropía el bloque de datos de video.
11. - El método de conformidad con la reivindicación 10, caracterizado porque la decodificación por entropía del bloque de datos de video comprende: decodificar por entropía una corriente de bits recibida para generar coeficientes de transformada cuantificados asociados con el bloque de datos e video; 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 el bloque de datos de video.
12. - El método de conformidad con la reivindicación 10, caracterizado porque la decodificación por entropía del bloque de datos de video comprende la codificación aritmética binaria adaptable al contexto del bloque de datos de video.
13. - Un aparato para codificar datos de video, el aparato comprende uno o más procesadores configurados para: determinar información de contexto para un bloque de datos de video con base en una profundidad de una de una unidad de codificación (CU) y unidad de transformada (TU) ; y codificar por entropía el bloque utilizando la información de contexto determinada.
14. - El aparato de conformidad con la reivindicación 13, caracterizado porque el bloque comprende una CU, en donde para determinar la información de contexto, uno o más procesadores son configurados para determinar la información de contexto para datos residuales inter-pronosticados de la CU con base en la profundidad de la CU, y en donde para codificar por entropía los datos del bloque, uno o más procesadores están configurados para codificar por entropía los datos residuales inter-pronosticados de la CU.
15. - El aparato de conformidad con la reivindicación 14, caracterizado porque para determinar la información de contexto, uno o más procesadores están configurados para determinar la información de contexto para un indicador de inter-predicción (indicador_inter_pred) de los datos residuales inter-pronosticados con base en la profundidad de la CU, y en donde para codificar por entropía los datos residuales inter-pronosticados de la CU, uno o más procesadores están configurados para codificar por entropía el indicador de inter-predicción.
16. - El aparato de conformidad con la reivindicación 13, caracterizado porque el bloque comprende una TU, en donde para determinar la información de contexto, uno o más procesadores están configurados para determinar la información de contexto para datos residuales intra-pronosticados de la TU con base en la profundidad de la TU, y en donde para codificar por entropía los datos del bloque, uno o más procesadores están configurados para codificar por entropía los datos residuales intra-pronosticados de la TU.
17. - El aparato de conformidad con la reivindicación 16, caracterizado porque para determinar la información de contexto, uno o más procesadores están configurados para determinar la información de contexto para uno o más elementos de sintaxis de un patrón de bloque codificado de la TU con base en la profundidad de la TU, y en donde para codificar por entropía los datos residuales intra-pronosticados de la TU, uno o más procesadores están configurados para codificar por entropía uno o más elementos de sintaxis de un patrón de bloque codificado.
18. - El aparato de conformidad con la reivindicación 13, caracterizado porque para codificar por entropía los datos del bloque utilizando la información de contexto determinada, uno o más procesadores están configurados para determinar un modelo de probabilidad con base en la información de contexto determinada y codificar por entropía los datos utilizando el modelo de probabilidad determinado.
19. - El aparato de conformidad con la reivindicación 13, caracterizado porque para codificar por entropía el bloque de datos de video, uno o más procesadores están configurados para codificar el bloque de datos de video.
20. - El aparato de conformidad con la reivindicación 19, caracterizado porque para codificar por entropía el bloque de datos de video, uno o más procesadores están configurados para la codificación aritmética binaria adaptable al contexto del bloque de datos de video.
21. - El aparato de conformidad con la reivindicación 19, caracterizado porque para codificar por entropía el bloque de datos de video, uno o más procesadores están configurados para : aplicar una transformada a uno o más valores residuales del bloque para generar, los coeficientes de transformada; cuantificar los coeficientes de transformada para generar coeficientes de transformada cuantificados ; y codificar por entropía los coeficientes de transformada cuantificados .
22. - El aparato de conformidad con la reivindicación 13, caracterizado porque para codificar por entropía el bloque de datos de video, uno o más procesadores están configurados para decodificar el bloque de datos de video.
23. - El aparato de conformidad con la reivindicación 22, caracterizado porque para decodificar por entropía el bloque de datos de video, uno o más procesadores están configurados para : decodificar por entropía. una corriente de bits recibida para generar coeficientes de transformada cuantificados asociados con el bloque de datos de video; 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 el-bloque de datos de video.
24. - El aparato de conformidad con la reivindicación 22, caracterizado porque para decodificar por entropía el bloque de datos de video, uno o más procesadores están configurados para la codificación aritmética binaria adaptable al contexto del bloque de datos de video.
25. - Un aparato para codificar datos de video, el aparato comprende: medios para determinar información de contexto para un bloque de datos de video, en donde los medios para determinar la información de contexto comprende medios para determinar la información de contexto con base en una profundidad de una de una unidad de codificación (CU) y unidad de transformada (TU) ; y medios para codificar por entropía el bloque utilizando la información de contexto determinada.
26. - El aparato de conformidad con la reivindicación 25, caracterizado porque el bloque comprende una CU, en donde los medios para determinar la información de contexto comprenden medios para determinar la información de contexto para datos residuales inter-pronosticados de la CU con base en la profundidad de la CU, y en donde los medios para codificar por entropía los datos del bloque comprenden medios para codificar por entropía los datos residuales inter-pronosticados de la CU.
27. - El aparato de conformidad con la reivindicación 26, caracterizado porque los medios para determinar la información de contexto comprenden medios para determinar la información de contexto para un indicador de inter-predicción ( indicador_inter_pred) de los datos residuales inter-pronosticados con base en la profundidad de la CU, y en donde los medios para codificar por entropía los datos residuales inter-pronosticados de la CU comprenden medios para codificar por entropía el indicador de inter-predicción.
28. - El aparato de conformidad con la reivindicación 25, caracterizado porque el bloque comprende una TU, en donde los medios para determinar la información de contexto comprenden medios para determinar la información de contexto para datos residuales intra-pronosticados de la TU con base en la profundidad de la TU, y en donde medios para la codificación por entropía de los datos del bloque comprenden medios para codificar por entropía los datos residuales intra-pronosticados de la TU.
29. - El aparato de conformidad con la reivindicación 28, caracterizado porque los medios para determinar la información de contexto comprenden medios para determinar la información de contexto para uno o más elementos de sintaxis de un patrón de bloque codificado de la TU con base en la profundidad de la TU, y en donde los medios para codificar por entropía los datos residuales intra-pronosticados de la TU comprenden medios para codificar por entropía uno o más elementos de sintaxis de un patrón de bloque codificado.
30. - Un medio de almacenamiento legible por computadora que tiene almacenado en el mismo instrucciones que., cuando son ejecutadas, ocasionan que uno o más procesadores: determinen información de contexto para un bloque de datos de video, con base en una profundidad de una de una unidad de codificación (CU) y unidad de transformada (TU) ; y codifiquen por entropía el bloque utilizando la información de contexto determinada.
31. - El medio de almacenamiento legible por computadora de conformidad con la reivindicación 30, caracterizado porque el bloque comprende una CU, en donde las instrucciones ocasionan que uno o más procesadores determinen la información de contexto determinando la información de contexto para datos residuales inter-pronosticados de la CU con base en la profundidad de la CU, y en donde las instrucciones ocasionan que uno o más procesadores codifiquen por entropía los datos residuales inter-pronosticados de la CU.
32. - El medio de almacenamiento legible por computadora de conformidad con la reivindicación 31, caracterizado porque las instrucciones ocasionan que uno o más procesadores determinen la información de contexto determinando la información de contexto para un indicador de inter-predicción (indicador_inter_pred) · de los datos residuales inter-pronosticados con base en la profundidad de la CU, y en donde las instrucciones además ocasionan que uno o más procesadores codifiquen por entropía los datos residuales inter-pronosticados de la CU mediante codificación por entropía del indicador de inter-predicción.
33. - El medio de almacenamiento legible por computadora de conformidad con la reivindicación 30, caracterizado porque el bloque comprende una TU, en donde las instrucciones ocasionan que uno o más procesadores determinen la información de contexto para datos residuales intra-pronosticados de la TU determinando la información de contexto con base en la profundidad de la TU, y en donde las instrucciones además ocasionan que uno o más procesadores codifiquen por entropía los datos del bloque mediante la codificación por entropía de los datos residuales intra-pronosticados de la TU .
34.- El medio de almacenamiento legible por computadora de conformidad con la reivindicación 33, caracterizado porque las instrucciones ocasionan que uno o más procesadores determinen la información de contexto determinando la información de contexto para uno o más elementos de sintaxis de un patrón de bloque codificado de la TU con base en la profundidad de la TU, y en donde las instrucciones además ocasionan que uno o más procesadores codifiquen por entropía los datos residuales intra-pronosticados de la TU mediante la codificación por entropía de uno o más elementos de sintaxis de un patrón de bloque codificado.
MX2013014123A 2011-06-03 2012-06-01 Modelado de contexto eficiente de memoria. MX2013014123A (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
MX2013014123A true MX2013014123A (es) 2014-01-23

Family

ID=46208192

Family Applications (1)

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

Country Status (19)

Country Link
US (1) US8995523B2 (es)
EP (2) EP4007279B1 (es)
JP (1) JP5869108B2 (es)
KR (1) KR101651759B1 (es)
CN (1) CN103563378B (es)
AU (1) AU2012261975B2 (es)
BR (1) BR112013031006B1 (es)
CA (1) CA2837099C (es)
DK (1) DK2716044T3 (es)
ES (2) ES2897708T3 (es)
HU (1) HUE057018T2 (es)
IL (1) IL229265A (es)
MX (1) MX2013014123A (es)
MY (1) MY158277A (es)
RU (1) RU2580066C2 (es)
SG (1) SG194912A1 (es)
UA (1) UA108698C2 (es)
WO (1) WO2012167097A1 (es)
ZA (1) ZA201309671B (es)

Families Citing this family (44)

* 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
CA2837532C (en) 2011-06-23 2018-10-02 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
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
KR102062283B1 (ko) * 2011-06-24 2020-01-03 선 페이턴트 트러스트 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
CA2830046C (en) 2011-06-24 2018-09-04 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
CN103563375B (zh) 2011-06-27 2017-04-05 太阳专利托管公司 图像解码方法、图像编码方法、图像解码装置、图像编码装置及图像编码解码装置
CA2837535C (en) 2011-06-28 2018-09-04 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
MX2013010892A (es) 2011-06-29 2013-12-06 Panasonic Corp Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
CN103583048B (zh) 2011-06-30 2017-05-17 太阳专利托管公司 图像解码方法、图像编码方法、图像解码装置、图像编码装置及图像编码解码装置
AU2012277219A1 (en) 2011-06-30 2013-09-19 Sun Patent Trust Image decoding method, image encoding method, image decoding device, image encoding device, and image encoding/decoding device
CN104980746B (zh) * 2011-07-01 2018-07-31 三星电子株式会社 用于使用分层数据单元进行编码和解码的方法和设备
KR20140034209A (ko) * 2011-07-11 2014-03-19 파나소닉 주식회사 화상 복호 방법, 화상 부호화 방법, 화상 복호 장치, 화상 부호화 장치 및 화상 부호화 복호 장치
AP3992A (en) 2011-07-15 2017-01-08 Ge Video Compression Llc Sample array coding for low-delay
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
US10085024B2 (en) * 2012-04-13 2018-09-25 Qualcomm Incorporated Lookup table for rate distortion optimized quantization
CN104620584B (zh) 2012-04-13 2019-10-18 Ge视频压缩有限责任公司 可缩放数据流及网络实体
MX2014012452A (es) * 2012-04-15 2015-01-12 Samsung Electronics Co Ltd Metodo y aparato para determinar imagenes de referencia para inter-prediccion.
CN108769692B (zh) 2012-06-26 2022-05-24 Lg 电子株式会社 视频编码方法、视频解码方法和使用其的装置
SG11201408612TA (en) * 2012-06-29 2015-01-29 Fraunhofer Ges Forschung Video data stream concept
US9621905B2 (en) * 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
SG11201501400QA (en) * 2012-09-26 2015-04-29 Panasonic Ip Corp America Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
US9271010B2 (en) * 2012-10-02 2016-02-23 Futurewei Technologies, Inc. System and method for motion estimation for large-size block
CA2908115C (en) * 2013-07-08 2019-02-12 Mediatek Singapore Pte. Ltd. Method of simplified cabac coding in 3d video coding
JP6118199B2 (ja) * 2013-07-09 2017-04-19 シャープ株式会社 画像復号装置、画像符号化装置、画像復号方法、画像符号化方法及びコンピュータ読み取り可能な記録媒体。
JP6202912B2 (ja) * 2013-07-12 2017-09-27 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP6268989B2 (ja) * 2013-11-29 2018-01-31 富士通株式会社 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
US20150373343A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Representation format update in multi-layer codecs
US9930341B2 (en) * 2014-06-20 2018-03-27 Qualcomm Incorporated Block vector coding for intra block copying
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
KR20180074773A (ko) * 2015-11-22 2018-07-03 엘지전자 주식회사 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
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
CN116708828A (zh) * 2017-04-24 2023-09-05 Sk电信有限公司 编解码视频数据的方法、发送编码视频数据比特流的方法
US11589066B2 (en) 2017-07-04 2023-02-21 Samsung Electronics Co., Ltd. Video decoding method and apparatus using multi-core transform, and video encoding method and apparatus using multi-core transform
SG11201911621SA (en) * 2017-07-07 2020-01-30 Samsung Electronics Co Ltd Video coding method and device, video decoding method and device
US10506258B2 (en) * 2017-07-13 2019-12-10 Google Llc Coding video syntax elements using a context tree
US11516496B2 (en) * 2018-03-21 2022-11-29 Electronics And Telecommunications Research Institute Image encoding/decoding method and apparatus, and recording medium storing bitstream
WO2019194439A1 (ko) * 2018-04-02 2019-10-10 엘지전자 주식회사 컨텍스트 기반 인트라 예측 모드 정보 코딩을 이용한 영상 코딩 방법 및 그 장치
CN110891180B (zh) * 2018-09-10 2023-11-17 华为技术有限公司 视频解码方法及视频解码器
JP7414843B2 (ja) 2019-04-24 2024-01-16 バイトダンス インコーポレイテッド 符号化映像の量子化残差差分パルス符号変調表現
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
US20220286714A1 (en) * 2019-08-23 2022-09-08 Hfi Innovation Inc. Method and Apparatus of Partitioning Small Size Coding Units with Partition Constraints

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
US9479786B2 (en) 2008-09-26 2016-10-25 Dolby Laboratories Licensing Corporation Complexity allocation for video and image coding applications
WO2010063184A1 (en) 2008-12-03 2010-06-10 Mediatek Inc. Method for performing parallel cabac processing with ordered entropy slices, and associated apparatus
KR101457418B1 (ko) * 2009-10-23 2014-11-04 삼성전자주식회사 계층적 부호화 단위의 크기에 따른 비디오 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
KR101700358B1 (ko) 2009-12-09 2017-01-26 삼성전자주식회사 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
WO2011126277A2 (en) * 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Low complexity entropy-encoding/decoding method and apparatus
BR112013007205A2 (pt) * 2010-09-30 2020-10-06 Samsung Electronics Co., Ltd método de codificação de vídeo para codificar símbolos tendo uma estrutura hierárquica, método de decodificação de vídeo para decodificar símbolos tendo uma estrutura hierárquica, aparelho de codificação
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
IL229265A0 (en) 2014-01-30
RU2013158385A (ru) 2015-07-20
WO2012167097A1 (en) 2012-12-06
AU2012261975B2 (en) 2015-09-03
SG194912A1 (en) 2013-12-30
UA108698C2 (uk) 2015-05-25
ZA201309671B (en) 2016-02-24
US8995523B2 (en) 2015-03-31
EP4007279A1 (en) 2022-06-01
DK2716044T3 (da) 2021-11-15
CN103563378A (zh) 2014-02-05
KR101651759B1 (ko) 2016-08-26
ES2897708T3 (es) 2022-03-02
IL229265A (en) 2016-04-21
EP2716044B1 (en) 2021-10-20
BR112013031006A2 (pt) 2016-11-29
CA2837099A1 (en) 2012-12-06
ES2952256T3 (es) 2023-10-30
JP5869108B2 (ja) 2016-02-24
EP4007279B1 (en) 2023-07-19
RU2580066C2 (ru) 2016-04-10
AU2012261975A1 (en) 2013-12-12
US20120328003A1 (en) 2012-12-27
HUE057018T2 (hu) 2022-04-28
CA2837099C (en) 2016-10-18
JP2014522603A (ja) 2014-09-04
EP4007279C0 (en) 2023-07-19
MY158277A (en) 2016-09-30
BR112013031006B1 (pt) 2022-05-17
EP2716044A1 (en) 2014-04-09
CN103563378B (zh) 2017-05-24
KR20140017015A (ko) 2014-02-10

Similar Documents

Publication Publication Date Title
US11431968B2 (en) Variable number of intra modes for video coding
TWI766844B (zh) 針對視訊寫碼使用與位置相關之預測組合之改良視訊幀內預測
CN109076230B (zh) 解码视频数据的方法和装置
MX2013014123A (es) Modelado de contexto eficiente de memoria.
KR101521060B1 (ko) 비디오 코딩에서 예측 데이터를 버퍼링
KR102334126B1 (ko) 인트라 블록 복사를 위한 레지듀얼 예측
TWI527440B (zh) 在視訊寫碼中針對高效率視訊寫碼(hevc)延伸之多層之低複雜度支援
WO2015038928A1 (en) Partial intra block copying for video coding
JP2015525988A (ja) 3dビデオコーディングのための深度マップのイントラコーディング
KR20130129469A (ko) 비디오 코딩에서의 변환들
TW201444350A (zh) 方形區塊預測
WO2013078313A1 (en) Transforms in video coding

Legal Events

Date Code Title Description
FG Grant or registration