ES2905415T3 - Codificar datos usando un diseño de codificación binaria aritmética adaptativa según contexto (CABAC) mejorado - Google Patents

Codificar datos usando un diseño de codificación binaria aritmética adaptativa según contexto (CABAC) mejorado Download PDF

Info

Publication number
ES2905415T3
ES2905415T3 ES16730580T ES16730580T ES2905415T3 ES 2905415 T3 ES2905415 T3 ES 2905415T3 ES 16730580 T ES16730580 T ES 16730580T ES 16730580 T ES16730580 T ES 16730580T ES 2905415 T3 ES2905415 T3 ES 2905415T3
Authority
ES
Spain
Prior art keywords
context
current
encoded
encoding
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES16730580T
Other languages
English (en)
Inventor
Li Zhang
Marta Karczewicz
Jianle Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2905415T3 publication Critical patent/ES2905415T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/124Quantisation
    • 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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/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
    • H04N19/136Incoming video signal characteristics or properties
    • 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
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • 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/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • 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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic 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/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
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/172Methods 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 picture, frame or field
    • 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/184Methods 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 bits, e.g. of the compressed video stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

Un método de decodificación de datos de vídeo, comprendiendo el método: inicializar la información de contexto para un corte actual de una imagen actual heredando información de contexto de un bloque previamente decodificado de un corte previamente decodificado de una imagen previamente decodificada como información de contexto inicializada para el corte actual de la imagen actual, en donde el bloque previamente decodificado comprende una unidad de codificación más grande, LCU, que se encuentra en una posición central dentro de la imagen previamente decodificada; y decodificar datos del corte actual de la imagen actual usando la información de contexto inicializada; en donde el corte actual está incluido en una pluralidad de cortes en la imagen actual para los que se hereda información de contexto del corte previamente decodificado, comprendiendo adicionalmente el método inicializar respectiva información de contexto para todos de la pluralidad de cortes heredando la información de contexto después de la decodificación de la LCU.

Description

DESCRIPCIÓN
Codificar datos usando un diseño de codificación binaria aritmética adaptativa según contexto (CABAC) mejorado
Esta solicitud reivindica el beneficio de la Solicitud Provisional de Estados Unidos n.° 62/168.571, presentada el 29 de mayo de 2015.
Campo técnico
Esta divulgación se refiere a la codificación de vídeo.
Antecedentes
Las capacidades de vídeo digital se pueden incorporar en una amplia gama de dispositivos, incluidos televisores digitales, sistemas de transmisión digital directa, sistemas de transmisión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, tabletas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos móviles o por satélite, los llamados "teléfonos inteligentes", dispositivos de vídeo teleconferencia, dispositivos de transmisión de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de codificación de vídeo, como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), la norma de codificación de vídeo de alta eficacia (HEVC) actualmente en desarrollo y extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital de manera más eficiente implementando tales técnicas de codificación de vídeo.
Las técnicas de codificación de vídeo incluyen predicción espacial (intra imagen) y/o temporal (inter imagen) para reducir o eliminar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un corte de vídeo (por ejemplo, un fotograma de vídeo o una porción de un fotograma de vídeo) puede subdividirse en bloques de vídeo, que pueden denominarse también bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un corte intra codificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un corte inter codificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse fotogramas y las imágenes de referencia pueden denominarse fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que va a codificarse. Los datos residuales representan diferencias de píxel entre el bloque original que va a codificarse y el bloque predictivo. Un bloque inter codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forma el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra codificado se codifica de acuerdo con un modo de intra codificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio de los píxeles a un dominio de la transformada, dando como resultado coeficientes de transformada residuales, que pueden cuantificarse a continuación. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes de transformada, y puede aplicarse codificación por entropía para conseguir incluso más compresión.
El documento WO 2013/067156 A1 desvela un método de codificación y decodificación de vídeo que comprende inicializar la información de contexto para un corte actual de una imagen actual heredando información de contexto de un bloque previamente decodificado de un corte previamente decodificado de una imagen previamente decodificada.
Sumario
Esta divulgación describe técnicas de ejemplo relacionadas con un módulo de codificación por entropía en la codificación de vídeo híbrida basada en bloques. Estas técnicas pueden aplicarse a cualquier códec de vídeo existente tal como HEVC (Codificación de Vídeo de Alta Eficacia) o estas técnicas pueden ser una herramienta de codificación eficaz en cualquier norma de codificación de vídeo futura u otras técnicas de codificación propietarias o no propietarias. Diversos aspectos se refieren al modelado de contexto y a las mejoras de inicialización de contexto para dispositivos de codificación basados en codificación binaria aritmética (BAC). Se describen varias técnicas en el presente documento, y, de acuerdo con esta divulgación, los dispositivos de codificación de vídeo pueden implementar las técnicas de manera separada o en diversas combinaciones.
La invención se define por las reivindicaciones independientes y se ilustra por la Figura 15 y los correspondientes pasajes de la descripción, mediante la cual se inicializa la información de contexto para todos los cortes de la imagen actual heredando información de contexto del bloque previamente decodificado definido como la unidad de codificación más grande que se encuentra en una posición central dentro de una imagen previamente decodificada. Las reivindicaciones dependientes definen realizaciones preferidas.
Se proporcionan las realizaciones, ejemplos y alternativas restantes para propósitos de ilustración y no forman parte de la invención.
Los detalles de uno o más aspectos de la divulgación se exponen en los dibujos adjuntos y en la descripción a continuación. Otras características, objetos y ventajas de las técnicas descritas en esta divulgación serán evidentes a partir de la descripción y los dibujos y a partir de las reivindicaciones.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo que puede utilizar las técnicas para codificar datos de acuerdo con un diseño de codificación binaria aritmética adaptativa según contexto (CABAC) mejorado.
Las Figuras 2A y 2B son diagramas conceptuales que ilustran técnicas de actualización de rango de acuerdo con la codificación binaria aritmética (BAC).
La Figura 3 es un diagrama conceptual que muestra ejemplos de la salida de BAC dependiendo del rango.
La Figura 4 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar las técnicas para codificar datos de acuerdo con un diseño de CABAC mejorado.
La Figura 5 es un diagrama de bloques de una unidad de codificación por entropía de ejemplo que puede estar configurada para realizar CABAC de acuerdo con las técnicas de esta divulgación.
La Figura 6 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar las técnicas para codificar datos de acuerdo con un diseño de CABAC mejorado.
La Figura 7 es un diagrama de bloques de una unidad de codificación por entropía de ejemplo que puede estar configurada para realizar CABAC de acuerdo con las técnicas de esta divulgación.
La Figura 8 es un diagrama de flujo que ilustra un proceso de ejemplo para codificación binaria aritmética basada en tabla.
La Figura 9 es un diagrama conceptual que ilustra un esquema de transformada basándose en una estructura de árbol cuádruple residual.
La Figura 10 representa un ejemplo de una plantilla que puede usar la unidad de decodificación por entropía y/o la unidad de codificación por entropía con respecto a las técnicas de modelado de contexto descritas en el presente documento.
La Figura 11 es un diagrama conceptual que ilustra una exploración de coeficiente de ejemplo basándose en grupos de coeficientes.
La Figura 12 es un diagrama conceptual que ilustra un ejemplo de derivación de binario.
La Figura 13 es un diagrama conceptual que ilustra un rango de índices de contexto para diferentes posiciones dentro de una TU, para diferentes binarios de luma.
La Figura 14 es un diagrama de flujo que ilustra un proceso de ejemplo que puede realizar un dispositivo de codificación de vídeo, o diversos componentes del mismo, para implementar una o más de las técnicas de modelado de contexto de esta divulgación.
La Figura 15 es un diagrama de flujo que ilustra un proceso de ejemplo que puede realizar un dispositivo de codificación de vídeo, o diversos componentes del mismo, para implementar una o más de las técnicas de inicialización de contexto basadas en herencia de esta divulgación.
La Figura 16 es un diagrama de flujo que ilustra un proceso de ejemplo que puede realizar un dispositivo de codificación de vídeo, o diversos componentes del mismo, para implementar una o más de técnicas de esta divulgación como parte de un proceso de decodificación de vídeo.
La Figura 17 es un diagrama de flujo que ilustra un proceso de ejemplo que puede realizar un dispositivo de codificación de vídeo, o diversos componentes del mismo, para implementar una o más técnicas de determinación de tamaño de grupo de coeficientes (CG) de esta divulgación.
Descripción detallada
Las técnicas de esta divulgación están relacionadas en general con la codificación por entropía en la codificación de vídeo híbrida basada en bloques. Estas técnicas pueden aplicarse a cualquier códec de vídeo existente tal como HEVC (Codificación de Vídeo de Alta Eficacia) o estas técnicas pueden ser una herramienta de codificación eficaz en cualquier norma de codificación de vídeo futura u otras técnicas de codificación propietarias o no propietarias. Para los propósitos de ejemplo y explicación, se describen en general las técnicas de esta divulgación con respecto a HEVC (o ITU-T H.265) y/o ITU-T H.264.
Las normas de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus extensiones Codificación de Vídeo Escalable (SVC) y Codificación de Vídeo de Múltiples Vistas (MVC).
Además, se ha desarrollado recientemente una nueva norma de codificación de vídeo, en concreto, la Codificación de Vídeo de Alta Eficacia (HEVC) o ITU-T H.265, que incluye sus extensiones de extensión de rango extensión de múltiples vistas (MV-HEVC) y la extensión escalable (SHVC), por el Equipo de Colaboración Mixto sobre la Codificación de Vídeo (JCT-VC) así como, el Equipo de Colaboración Conjunta en el Desarrollo de Extensión de Codificación de Vídeo en 3D (JCT-3V) del Grupo de Expertos en Codificación de Vídeo (VCEG) de la ITU-T y del Grupo de Expertos de Imágenes en Movimiento (MPEG) del ISO/IEC. Una especificación borrador del h Ev C, denominada HEVC WD en lo sucesivo, está disponible a partir de phenix.intevry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip.
Las técnicas de esta divulgación pueden superar diversos problemas asociados con la codificación de CABAC. En particular, estas técnicas incluyen un diseño de CABAC mejorado y una técnica de modelado de contexto de coeficiente de transformada eficaz, que puede usarse en solitario o conjuntamente. En la codificación por entropía, se representan valores para elementos de sintaxis en formación binaria, y cada bit (o "binario") se codifica usando un contexto particular. De acuerdo con diversos aspectos de esta divulgación, puede determinarse la información de contexto para un conjunto de binarios de un valor para un elemento de sintaxis usando respectivos binarios de valores previamente codificados para el elemento de sintaxis de coeficientes de transformada anteriores. Se analizan a continuación detalles adicionales.
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo 10 de ejemplo que puede utilizar las técnicas para codificar datos de acuerdo con un diseño de CABAC mejorado. Como se muestra en la Figura 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados que van a decodificarse en un tiempo posterior por un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de vídeo al dispositivo de destino 14 mediante un medio legible por ordenador 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, que incluyen ordenadores de sobremesa, ordenadores portátiles (es decir, portátiles), ordenadores de tableta, decodificadores de salón, microteléfonos telefónicos tales como los denominados teléfonos "inteligentes", los denominados mandos "inteligentes", televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivo de envío por flujo continuo de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden equiparse para comunicación inalámbrica.
El dispositivo de destino 14 puede recibir los datos de vídeo codificados para que se decodifiquen mediante un medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo que pueda mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicación para posibilitar que el dispositivo de origen 12 transmita datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área extensa o una red global, tal como internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
En algunos ejemplos, los datos codificados pueden emitirse desde la interfaz 22 de salida a un dispositivo de almacenamiento. De manera similar, puede accederse a los datos codificados desde el dispositivo de almacenamiento mediante interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera de una diversidad de medios de almacenamiento de datos distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros u otro dispositivo de almacenamiento intermedio que puede almacenar el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados del dispositivo de almacenamiento mediante envío por flujo continuo o descarga. El servidor de ficheros puede ser cualquier tipo de servidor que pueda almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Servidores de ficheros ilustrativos incluyen, un servidor web (por ejemplo, para un sitio web), un servidor de FTP, dispositivos de almacenamiento de conexión de red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos convencional, incluyendo una conexión a Internet. Esta puede incluir, un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.), o una combinación de ambos que es adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados del dispositivo de almacenamiento puede ser una transmisión de envío por flujo continuo, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no están necesariamente limitadas a aplicaciones o ajustes inalámbricos. Las técnicas pueden aplicarse a codificación de vídeo en apoyo de cualquiera de una diversidad de aplicaciones multimedia, tales como difusiones de televisión en el transcurso de la comunicación, transmisiones de televisión de cable, transmisiones de televisión por satélite, transmisiones de vídeo de envío por flujo continuo de Internet, tales como envío por flujo continuo adaptativo dinámico a través de HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para soportar una transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como envío por flujo continuo de vídeo, reproducción de vídeo, difusión de vídeo y/o telefonía de vídeo.
En el ejemplo de la Figura 1, el dispositivo de origen 12 incluye el origen de vídeo 18, el codificador de vídeo 20 y la interfaz de salida 22. El dispositivo de destino 14 incluye la interfaz de entrada 28, el decodificador de vídeo 30 y el dispositivo de visualización 32. De acuerdo con esta divulgación, el codificador de vídeo 20 del dispositivo de origen 12 puede estar configurado para aplicar las técnicas para codificar datos de acuerdo con un diseño de CABAC mejorado. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde un origen de vídeo 18 externo, tal como una cámara externa. Análogamente, el dispositivo de destino 14 puede interconectar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema 10 ilustrado de la Figura 1 es simplemente un ejemplo. Las técnicas para codificar datos de acuerdo con un diseño de CABAC mejorado pueden realizarse por cualquier dispositivo de codificación y/o decodificación de vídeo digital. Aunque las técnicas de esta divulgación se realizan, en general, por un dispositivo de codificación de vídeo, las técnicas pueden realizarse por un codificador/decodificador de vídeo, típicamente denominado como un "CÓDEC". Además, las técnicas de esta divulgación pueden realizarse también por un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de codificación en los que el dispositivo de origen 12 genera datos de vídeo codificados para transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden operar de una manera sustancialmente simétrica de manera que cada uno de los dispositivos 12, 14 incluya componentes de codificación y decodificación de vídeo. Por lo tanto, el sistema 10 puede soportar transmisión unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para envío por flujo continuo de vídeo, reproducción de vídeo, difusión de vídeo o telefonía de vídeo.
El origen de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo previamente capturado y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo. Como una alternativa adicional, el origen de vídeo 18 puede generar datos basados en gráficos informáticos como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar denominados teléfonos de cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a codificación de vídeo, en general, y pueden aplicarse a aplicaciones inalámbricas y/o alámbricas. En cada caso, el vídeo capturado, pre-capturado o generado por ordenador puede codificarse por el codificador de vídeo 20. La información de vídeo codificada puede emitirse a continuación por la interfaz de salida 22 en un medio legible por ordenador 16.
El medio legible por ordenador 16 puede incluir medios transitorios, tales como una transmisión de difusión inalámbrica o de red cableada o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, unidad flash, disco compacto, disco de vídeo digital, disco Blu-ray u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, mediante la transmisión de red. De manera similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de estampado de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, el medio legible por ordenador 16 puede entenderse que incluye uno o más medios legibles por ordenador de diversas formas en diversos ejemplos.
La interfaz de entrada 28 del dispositivo de destino 14 recibe información desde el medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información de sintaxis definida por el codificador de vídeo 20, que también se usa por el decodificador de vídeo 30, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, los GOP. El dispositivo de visualización 32 presenta visualmente los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una diversidad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo de emisión de luz orgánico (OLED) u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con una norma de codificación de vídeo, tal como la norma de Codificación de Vídeo de Alta Eficacia (HEVC), también denominada como ITU-T H.265. Como alternativa, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con otras normas propietarias o industriales, tal como la norma ITU-T H.264, denominada como alternativa como MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC) o extensiones de tales normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de codificación de vídeo incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la Figura 1, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 puede cada uno estar integrado con un codificador y decodificador de audio, y puede incluir unidades MUX-DEMUX apropiadas y otro hardware y software, para manejar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, las unidades MUX-DEMUX pueden ser de conformidad con el protocolo multiplexor de la ITU H.223 u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador de vídeo 20 y el decodificador de vídeo 30 cada uno puede implementarse como cualquiera de una diversidad de circuitería de codificador adecuada, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), campos de matrices de puertas programables (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio adecuado y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador combinado (CODEC) en un respectivo dispositivo.
En general, de acuerdo con ITU-T H.265, un fotograma o una imagen de vídeo puede dividirse en una secuencia de árboles de bloque o unidades de codificación más grandes (LCU) que incluyen tanto muestras de luma como de croma. Los datos de sintaxis dentro de un flujo de bits pueden definir un tamaño para la LCU, que es una unidad de codificación más grande en términos del número de píxeles. Un corte incluye un número de bloques de árbol consecutivos en orden de codificación. Un fotograma o imagen de vídeo puede subdividirse en uno o más cortes. Cada bloque de árbol puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuádruple. En general, una estructura de datos de árbol cuádruple incluye un nodo por CU, con un nodo raíz que corresponde al árbol cuádruple. Si una CU se divide en cuatro sub-CU, el nodo que corresponde a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU.
Cada nodo de la estructura de datos de árbol cuádruple puede proporcionar datos de sintaxis para la correspondiente CU. Por ejemplo, un nodo en el árbol cuádruple puede incluir una bandera de división, que indica si la CU que corresponde al nodo se divide en sub-CU. Los elementos de sintaxis para una CU pueden definirse de manera recursiva, y pueden depender de si la CU se divide en las sub-CU. Si una CU no se divide más, se denomina como una CU hoja. En esta divulgación, cuatro sub-CU de una CU hoja se denominarán también como las CU hoja, incluso si no hay división explícita de la CU hoja original. Por ejemplo, si una CU en tamaño de 16x16 no se divide más, las cuatro sub-CU de 8x8 se denominarán también como CU hoja, aunque la CU de 16x16 nunca se dividió.
Una CU tiene un propósito similar que un macrobloque de la norma H.264, excepto que una CU no tiene una distinción de tamaño. Por ejemplo, un bloque de árbol puede dividirse en cuatro nodos hijo (también denominados como sub­ CU), y cada nodo hijo puede convertirse, a su vez, en un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo no dividido final, denominado como un nodo hoja del árbol cuádruple, comprende un nodo de codificación, también denominado como una CU hoja. Los datos de sintaxis asociados con un flujo de bits codificado pueden definir un número máximo de veces que puede dividirse un bloque de árbol, denominado como profundidad de CU máxima, y puede definir también un tamaño mínimo de los nodos de codificación. Por consiguiente, un flujo de bits puede definir también la unidad de codificación más pequeña (SCU). Esta divulgación usa el término "bloque" para hacer referencia a cualquiera de una CU, unidad de predicción (PU) o unidad de transformada (TU), en el contexto de HEVC o estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de los mismos en H.264/AVC).
Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas con el nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y es, en general, cuadrado en forma. El tamaño de la CU puede variar de 8x8 píxeles hasta el tamaño del bloque de árbol con un tamaño máximo, por ejemplo, de 64x64 píxeles o mayor. Cada CU puede contener una o más Pu y una o más TU. Los datos de sintaxis asociados con una CU pueden describir, por ejemplo, la subdivisión de la CU en una o más PU. Los modos de subdivisión pueden diferir entre si se omite la CU o se codifica en modo directo, se codifica en modo de intra predicción o se codifica en modo de inter predicción. Las PU pueden subdividirse para ser no cuadradas en forma. Los datos de sintaxis asociados con una CU pueden describir también, por ejemplo, la subdivisión de la CU en una o más TU de acuerdo con un árbol cuádruple. Una TU puede ser cuadrada o no cuadrada (por ejemplo, rectangular) en forma.
La norma de HVEC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. Las TU están típicamente dimensionadas basándose en el tamaño de las PU dentro de una CU dada definida para una LCU subdividida, aunque este puede no ser siempre el caso. Las TU típicamente son del mismo tamaño o más pequeño que las PU. En algunos ejemplos, las muestras residuales que corresponden una CU pueden subdividirse en unidades más pequeñas usando una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos hoja del RQT pueden denominarse como unidades de transformada (TU). Los valores de diferencia de píxel asociados con las TU pueden transformarse para producir coeficientes de transformada, que pueden cuantificarse.
Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa un área espacial que corresponde a toda o una porción de la correspondiente CU, y puede incluir datos para recuperar y/o generar una muestra de referencia para la Pu . Además, una PU incluye datos relacionados con la predicción. Por ejemplo, cuando la PU está codificada por intra modo, pueden incluirse los datos para la PU en un árbol cuádruple residual (RQT), que puede incluir datos que describen un modo de intra predicción para una TU que corresponde a la PU. El RQT puede denominarse también como un árbol de transformada. En algunos ejemplos, el modo de intra predicción puede señalizarse en la sintaxis de CU hoja, en lugar del RQT. Como otro ejemplo, cuando la PU está codificada por inter modo, la PU puede incluir datos que definen la información de movimiento, tal como uno o más vectores de movimiento, para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, una precisión de un cuarto de píxel o una precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, Lista 0, Lista 1 o Lista C) para el vector de movimiento.
Una CU hoja que tiene una o más PU puede incluir también una o más unidades de transformada (TU). Las unidades de transformada pueden especificarse usando un RQT (también denominado como una estructura de árbol cuádruple de TU), como se ha analizado anteriormente. Por ejemplo, una bandera de división puede indicar si una CU hoja se divide en cuatro unidades de transformada. A continuación, cada unidad de transformada puede dividirse adicionalmente en sub-TU adicionales. Cuando la TU no se divide más, puede denominarse como una TU hoja. En general, para intra codificación, todas las TU hoja que pertenecen a una Cu hoja comparten el mismo modo de intra predicción. Es decir, el mismo modo de intra predicción se aplica, en general, para calcular valores previstos para todas las TU de una CU hoja. Para intra codificación, un codificador de vídeo puede calcular un valor residual para cada TU hoja usando el modo de intra predicción, como una diferencia entre la porción de la CU que corresponde a la TU y el bloque original. Una TU no está necesariamente limitada al tamaño de una PU. Por lo tanto, las TU pueden ser más grandes o más pequeñas que una PU. Para intra codificación, una PU puede coubicarse con una correspondiente TU hoja para la misma CU. En algunos ejemplos, el tamaño máximo de una TU hoja puede corresponder al tamaño de la correspondiente CU hoja.
Además, las TU de las CU hoja pueden también estar asociadas con respectivas estructuras de datos de árbol cuádruple, denominadas como árboles cuádruples residuales (RQT). Es decir, una CU hoja puede incluir un árbol cuádruple que indica cómo se subdivide la CU hoja en las TU. El nodo raíz de un árbol cuádruple de TU generalmente corresponde a una CU hoja, mientras que el nodo raíz de un árbol cuádruple de CU corresponde en general a un árbol cuádruple (o LCU). Las TU del RQT que no se dividen se denomina como TU hoja. En general, esta divulgación usa los términos CU y TU para hacer referencia a la CU hoja y TU hoja, respectivamente, a menos que se indique de otra manera.
Una secuencia de vídeo típicamente incluye una serie de fotogramas o imágenes de vídeo. Un grupo de imágenes (GOP) comprende en general una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos de sintaxis en un encabezado del GOP, un encabezado de una o más de las imágenes, o en cualquiera otra parte, que describe un número de imágenes incluidas en el GOP. Cada corte de una imagen puede incluir datos de sintaxis de corte que describen un modo de codificación para el respectivo corte. El codificador de vídeo 20 típicamente opera en bloques de vídeo dentro de cortes de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables, y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
Como un ejemplo, puede realizarse predicción para las PU de diversos tamaños. Suponiendo que el tamaño de una CU particular es 2Nx2N, puede realizarse intra predicción en los tamaños de PU de 2Nx2N o NxN, y puede realizarse inter predicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. Puede realizarse la subdivisión asimétrica para inter predicción también para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En subdivisión asimétrica, no se subdivide una dirección de una CU, mientras que la otra dirección se subdivide en el 25 % y el 75 %. La porción de la CU que corresponde a la partición del 25 % se indica por una "n" seguida por una indicación de "Arriba", "Abajo", "Izquierda" o "Derecha". Por lo tanto, por ejemplo, "2NxnU" hace referencia a una CU de 2Nx2N que se subdivide horizontalmente con una PU 2Nx0,5N en la parte superior y una PU de 2Nx1,5N en la parte inferior.
En esta divulgación, "NxN" y "N por N" pueden usarse de manera intercambiable para hacer referencia a las dimensiones de píxel de un bloque de vídeo en términos de dimensiones vertical y horizontal, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Análogamente, un bloque NxN tiene en general N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, los bloques no necesariamente tienen que tener el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
Siguiendo la codificación intra predictiva o inter predictiva que usa las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de sintaxis que describen un método o modo de generación de datos de píxel predictivos en el dominio espacial (también denominado como el dominio de los píxeles) y las TU pueden comprender coeficientes en el dominio de la transformada que sigue la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de número entero, una transformada de ondícula o una transformada conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxel entre píxeles de la imagen no codificada y los valores de predicción que corresponden a las PU. El codificador de vídeo 20 puede formar las TU para incluir coeficientes de transformada cuantificados representativos de los datos residuales para la CU. Es decir, el codificador de vídeo 20 puede calcular los datos residuales (en forma de un bloque residual), transformar el bloque residual para producir un bloque de coeficientes de transformada, y, a continuación, cuantificar los coeficientes de transformada para formar coeficientes de transformada cuantificados. El codificador de vídeo 20 puede formar una TU que incluye los coeficientes de transformada cuantificados, así como otra información de sintaxis (por ejemplo, información de división para la TU).
Como se ha indicado anteriormente, después de cualquier transformada para producir coeficientes de transformada, el codificador de vídeo 20 puede realizar cuantificación de los coeficientes de transformada. La cuantificación hace referencia, en general, a un proceso en el que se cuantifican los coeficientes de transformada para reducir posiblemente la cantidad de datos usados para representar los coeficientes, lo que proporciona compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes. Por ejemplo, un valor de n bits puede redondearse hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
Después de la cuantificación, el codificador de vídeo puede explorar los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. La exploración puede estar diseñada para colocar coeficientes de energía mayor (y, por lo tanto, de frecuencia inferior) delante de la matriz y para colocar coeficientes de energía inferior (y, por lo tanto, de frecuencia superior) en la parte trasera de la matriz. En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados para producir un vector en serie que puede codificarse por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar una exploración adaptiva. Después de la exploración de los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con el diseño de codificación binaria aritmética adaptativa según contexto (CABAC) mejorado descrito en esta divulgación. El codificador de vídeo 20 puede también codificar por entropía elementos de sintaxis asociados con los datos de vídeo codificados para su uso por el decodificador de vídeo 30 al decodificar los datos de vídeo.
En general, el decodificador de vídeo 30 realiza un proceso sustancialmente similar, aunque recíproco, al realizado por el codificador de vídeo 20 para decodificar datos codificados. Por ejemplo, el decodificador de vídeo 30 cuantifica a la inversa y transforma a la inversa los coeficientes de una TU recibida para reproducir un bloque residual. El decodificador de vídeo 30 usa un modo de predicción señalizado (intra- o inter- predicción) para formar un bloque previsto. A continuación, el decodificador de vídeo 30 combina el bloque previsto y el bloque residual (en una base píxel a píxel) para reproducir el bloque original. Puede realizarse procesamiento adicional, tal como realizar un proceso de desbloqueo para reducir artefactos visuales a lo largo de los límites de bloque. Adicionalmente, el decodificador de vídeo 30 puede decodificar elementos de sintaxis usando CABAC de una manera sustancialmente similar a, aunque recíproca a, el proceso de codificación de CABAC del codificador de vídeo 20.
De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar configurados para codificar datos de acuerdo con un diseño de CABAC mejorado. Se analizan a continuación ciertas técnicas, que pueden aplicarse individualmente o en cualquier combinación. Esta divulgación puede referirse, en general, al codificador de vídeo 20 que "señaliza" cierta información a otro dispositivo, tal como el decodificador de vídeo 30. Debe entenderse, sin embargo, que el codificador de vídeo 20 puede señalizar información asociando ciertos elementos de sintaxis con diversas porciones codificadas de datos de vídeo. Es decir, el codificador de vídeo 20 puede "señalizar" datos almacenando ciertos elementos de sintaxis en encabezados de diversas porciones codificadas de datos de vídeo. En algunos casos, tales elementos de sintaxis pueden codificarse y almacenarse antes de que se reciban y decodifiquen por el decodificador de vídeo 30. Por lo tanto, el término "señalizar" puede referirse en general a la comunicación de sintaxis u otros datos para decodificar datos de vídeo comprimidos, si tal comunicación tiene lugar en tiempo real o casi en tiempo real o a través de un lapso de tiempo, tal como puede ocurrir cuando se almacenan elementos de sintaxis en un medio en el momento de codificación, que, a continuación, pueden recuperarse por un dispositivo de decodificación en cualquier momento después de que se almacenen en este medio.
Los siguientes párrafos describen técnicas de BAC y CABAC en más detalle. BAC, en general, es un procedimiento de subdivisión de intervalo recursivo. Se usa BAC para codificar binarios en el proceso de CABAC en las normas de codificación de vídeo H.264/AVC y H.265/HEVC. La salida del codificador de BAC es un flujo binario que representa un valor o puntero a una probabilidad dentro de un intervalo de probabilidad codificado final. El intervalo de probabilidad se especifica por un rango y un valor de extremo inferior. El rango es la extensión del intervalo de probabilidad. "Mínimo" es el límite inferior del intervalo de codificación.
La aplicación de codificación aritmética a la codificación de vídeo se describe en D. Marpe, H. Schwarz y T. Wiegand "Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard", IEEE Trans. Circuits and Systems for Video Technology, vol. 13, n.° 7, julio de 2003. CABAC implica tres funciones principales, en concreto, conversión a binario, modelado de contexto y codificación aritmética. La conversión a binario se refiere a la función de mapear elementos de sintaxis a símbolos binarios (o "binarios"). Los símbolos binarios también pueden denominarse "cadenas binarias". El modelado de contexto se refiere a la función de la estimación de la probabilidad de los diversos binarios. La codificación aritmética se refiere a la posterior función de la compresión de los binarios a bits, basándose en la probabilidad estimada. Diversos dispositivos y/o módulos de los mismos, tales como un codificador aritmético binario, pueden realizar la función de codificación aritmética.
Se usan varios procesos de conversión a binario diferentes en HEVC, que incluyen unario (U), unario truncado (TU), Exp-Golomb de orden k (EGk) y de longitud fija (FL). Se describen detalles de diversos procesos de conversión a binario en V. Sze y M. Budagavi, "High throughput CABAC entropy coding in HEVC", IEEE Transactions on Circuits and Systems for Video Technology (TCSVT), vol. 22, n.° 12, págs. 1778-1791, diciembre de 2012.
Cada contexto (es decir, modelo de probabilidad) en CABAC se representa por un estado y un valor de símbolo más probable (MPS). Cada estado (a) representa implícitamente una probabilidad (pCT) de que un símbolo particular (por ejemplo, un binario) sea el símbolo menos probable (LPS). Un símbolo puede ser un LPS o un símbolo más probable (MPS). Los símbolos son binarios, y como tal, el MPS y el LPS pueden ser 0 o 1. La probabilidad se estima para el correspondiente contexto y se usa (implícitamente) para codificar por entropía el símbolo usando el codificador aritmético.
El proceso de BAC se maneja por una máquina de estado que cambia sus valores de intervalo 'rango' y 'mínimo' dependiendo del contexto a codificar y el valor del binario que se está codificando. Despendiendo del estado de un contexto (es decir, su probabilidad), el rango se divide en rangeMPS a (rango del símbolo más probable en el estado a) y rangeLPS a (rango del símbolo menos probable en el estado a). En teoría, el valor rangeLPS a de un estado de probabilidad a se deriva por una multiplicación:
rangeLPS a = range x p a ,
donde p a es la probabilidad de seleccionar el LPS. Por supuesto, la probabilidad de MPS es 1-pCT De manera equivalente, el rangeMPS a es igual a range menos rangeLPS a BAC actualiza iterativamente el rango dependiendo del estado del binario de contexto que va a codificarse, el rango actual y el valor del binario que se está codificando (es decir, es el binario igual al LPS o al MPS).
El codificador de vídeo 20 puede enviar adicionalmente datos de sintaxis, tales como datos de sintaxis basada en bloques, datos de sintaxis basada en fotograma, y datos de sintaxis basados en GOP, al decodificador de vídeo 30, por ejemplo, en un encabezado de fotograma, un encabezado de bloque, un encabezado de corte o un encabezado de GOP. Los datos de sintaxis de GOP pueden describir un número de fotogramas en el respectivo GOP, y los datos de sintaxis de fotograma pueden indicar una codificación/modo de predicción usado para codificar el correspondiente fotograma.
El codificador de vídeo 20 y el decodificador de vídeo 30 cada uno puede implementarse como cualquiera de una diversidad de circuitería de codificador o decodificador adecuada, según sea aplicable, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), campos de matrices de puertas programables (FPGA), circuitería de lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador de vídeo combinado (CÓDEC). Un dispositivo que incluye el codificador de vídeo 20 y/o el decodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
Las Figuras 2A y 2B son diagramas conceptuales que ilustran técnicas de actualización de rango de acuerdo con BAC. Las Figuras 2A y 2B muestran ejemplos de este proceso en el binario n. En el ejemplo 100 de la Figura 2A, en el binario n el rango en el binario 2 incluye RangeMPS y RangeLPS dados por la probabilidad del LPS (p a ) dado un cierto estado de contexto (a). El ejemplo 100 muestra la actualización del rango en el binario n+1 cuando el valor del binario n es igual al MPS. En este ejemplo, el mínimo permanece igual, pero el valor del rango en el binario n+1 se reduce al valor de RangeMPS en el binario n. El ejemplo 102 de la Figura 2B muestra la actualización del rango en el binario n+1 cuando el valor del binario n no es igual al MPS (es decir, igual al LPS). En este ejemplo, el mínimo se mueve al valor de rango inferior de RangeLPS en el binario n. Además, el valor del rango en el binario n+1 se reduce al valor de RangeLPS en el binario n.
En HEVC, el rango se expresa con 9 bits y el mínimo con 10 bits. Existe un proceso de renormalización para mantener el rango y los valores bajos a suficiente precisión. La renormalización ocurre cada vez que el rango es menor que 256. Por lo tanto, el rango siempre es igual o mayor que 256 después de la renormalización. Dependiendo de los valores de rango y mínimo, la BAC emite al flujo de bits, un '0,' o un '1,' o actualiza una variable interna (llamada BO: bitspendientes) para guardar para futuras salidas.
La Figura 3 es un diagrama conceptual que muestra ejemplos de la salida de BAC dependiendo del rango. Por ejemplo, se emite un '1' al flujo de bits cuando el rango y el mínimo se encuentran por encima de un cierto umbral (por ejemplo, 512). Se emite un '0' al flujo de bits cuando el rango y el mínimo se encuentran por debajo de un cierto umbral (por ejemplo, 512). No se emite nada al flujo de bits cuando el rango y el inferior se encuentran entre ciertos umbrales. En su lugar, se incrementa el valor BO y se codifica el siguiente binario.
En el contexto del modelo de CABAC de HEVC, hay 128 estados. Hay 64 posibles probabilidades de LPS (indicadas por el estado a) que pueden ser desde 0 a 63. Cada MPS puede ser cero o uno. Como tal, los 128 estados son 64 probabilidades de estado multiplicadas por los 2 posibles valores para MPS (0 o 1). Por lo tanto, los modelos de probabilidad pueden almacenarse como entradas de 7 bits. En cada entrada de 7 bits, pueden asignarse 6 bits para representar el estado de probabilidad, y puede asignarse 1 bit para el símbolo más probable (MPS) en la memoria de contexto aplicable.
Para reducir el cálculo de la derivación de rangos de LPS (rangeLPSa), se calculan previamente los resultados para todos los casos y se almacenan como aproximaciones en una tabla de correspondencia en HEVC. Por lo tanto, puede obtenerse el rango de LPS sin ninguna multiplicación usando una consulta de tabla sencilla. Evitar la multiplicación puede ser importante para algunos dispositivos o aplicaciones, puesto que esta operación puede provocar latencia significativa en muchas arquitecturas de hardware.
Puede usarse una tabla de rangos de LPS precalculados de 4 columnas en lugar de la multiplicación. El rango se divide en cuatro segmentos. El índice de segmento puede derivarse por la pregunta (rango>>6)&3. En efecto, el índice de segmento se deriva desplazando y descartando bits del rango real. La siguiente tabla 1 muestra los posibles rangos y sus índices correspondientes.
TABLA 1 - índice de ran o
Figure imgf000010_0001
La tabla de rango de LPS tiene entonces 64 entradas (una para cada estado de probabilidad) por 4 (una para cada índice de rango). Cada entrada es el LPS de rango, es decir, el valor de multiplicar el rango por la probabilidad de LPS. Se muestra un ejemplo de parte de esta tabla en la siguiente tabla 2. La tabla 2 representa los estados de probabilidad 9-12. En una propuesta para HEVC, los estados de probabilidad pueden variar de 0-63
TABLA 2 - Ran eLPS
Figure imgf000010_0002
En cada segmento (es decir, valor de rango), está predefinido el rango de LPS de cada estado de probabilidad a. En otras palabras, el rango de LPS de un estado de probabilidad a se cuantifica en cuatro valores (es decir, un valor para cada índice de rango). El rango de LPS específico usado en un punto dado depende de a qué segmento pertenezca el rango. El número de posibles rangos de LPS usados en la tabla es un equilibrio entre el número de columnas de tabla (es decir, el número de posibles valores de rango de LPS) y la precisión de rango de LPS. Hablando en general, más columnas dan como resultado errores de cuantificación más pequeños de los valores de rango de LPS, pero también aumentan la necesidad de más memoria para almacenar la tabla. Menos columnas aumentan los errores de cuantificación, pero también reducen la memoria necesaria para almacenar la tabla.
Como se ha descrito anteriormente, cada estado de probabilidad de LPS tiene una probabilidad correspondiente. En HEVC, se derivan 64 valores de probabilidad representativos pa e[0,01875, 0,5] para el LPS (símbolo menos proable) de acuerdo con la ecuación (1), a continuación, que es una ecuación recursiva.
pa = a * Pc-i para toda a = 1, ..., 63
con a = ^ 0,0187 ^ 1/63 (1)
En el ejemplo anterior, tanto el factor de cambio de escala elegido a~ 0,9492 como la cardinalidad N = 64 del conjunto de probabilidades representan un buen compromiso entre la precisión de la representación de probabilidad y el deseo de una rápida adaptación. En algunos ejemplos, un valor de a más cerca de 1 puede dar como resultado una adaptación lenta con precisión superior ("comportamiento de estado estático"), mientras que puede conseguirse una adaptación más rápida para el caso no estacionario con valores descendentes de a a costa de una precisión reducida. El factor de cambio de escala a puede corresponder a un tamaño de ventana que indica un número de binarios previamente codificados que tienen influencia significativa para la actualización actual. La probabilidad del MPS (símbolo más probable) es igual a 1 menos la probabilidad del LPS (símbolo menos probable). En otras palabras, la probabilidad del MPS puede representarse por la fórmula (1 - LPS), donde 'LPS' representa la probabilidad del LPS.
Por lo tanto, el intervalo de probabilidad que puede representarse por CABAC en HEVC es [0,01875, 0,98125 (=1-0,01875)].
CABAC es adaptativa puesto que se actualizan los estados de probabilidad de un modelo de contexto usados para codificar bits (o "binarios") de un valor para un elemento de sintaxis para seguir las estadísticas de señal (es decir, los valores de binarios previamente codificados, por ejemplo, para el elemento de sintaxis). El proceso de actualización es como sigue. Para un estado de probabilidad dado, la actualización depende del índice de estado y el valor del símbolo codificado identificado como un LPS o un MPS. Como resultado del proceso de actualización se deriva un nuevo estado de probabilidad, que incluye una estimación de probabilidad de LPS potencialmente modificada y, si fuera necesario, un valor de MPS modificado.
La conmutación de contexto puede tener lugar después de la codificación de cada binario. En el caso de un valor binario que equivale al MPS, un índice de estado dado se incrementa simplemente en 1. Esto es para todos los estados excepto cuando tiene lugar un MPS en el índice de estado 62, donde la probabilidad de LPS ya está en su mínimo (o de manera equivalente, se alcanza la probabilidad de MPS máxima). En este caso, el índice de estado permanece fijo hasta que se observa un LPS, o se codifica un último valor binario (se usa un estado de fin especial para el caso especial del último valor binario). Cuando tiene lugar un LPS, se cambia el índice de estado reduciendo el índice de estado en una cierta cantidad, como se muestra en la ecuación a continuación. Esta regla se aplica en general a cada ocurrencia de un LPS con la siguiente excepción. Suponiendo que se ha codificado un LPS en el estado con el índice a=0, que corresponde al caso equi-probable, el índice de estado permanece fijo, pero el valor de MPS se alternará de manera que se intercambiará el valor de los LPS y MPS. En todos los otros casos, no importa qué símbolo se haya codificado, el valor de MPS no se modificará. En general, un codificador de vídeo puede derivar el nuevo estado de probabilidad de acuerdo con la ecuación (2), a continuación, que muestra una relación entre una probabilidad de LPS dada poid y se actualiza su contraparte pnew.
Figure imgf000011_0001
Para reducir la complejidad, un codificador de vídeo puede implementar CABAC de manera que pueden realizarse todas las reglas de transición por como máximo dos tablas, teniendo cada una un número de entradas. Como un ejemplo, pueden realizarse todas las reglas de transición por como máximo dos tablas que cada una tiene 128 entradas de valores de números enteros sin signo de 7 bits (por ejemplo, las tablas 3 y 4, a continuación). Como otro ejemplo, pueden realizarse todas las reglas de transición por como máximo dos tablas que cada una tiene 63 entradas de valores de números enteros sin signo de 6 bits (por ejemplo, la tabla 9-41 de HEVC). Dado un índice de estado i, después de la actualización, un codificador de vídeo puede definir como el nuevo índice de estado TransIdxMPS[ i ] cuando se codifican unos valores de MPS, o TransIdxLPS[i] cuando se codifican unos valores de LPS.
Tabla 3
TransIdxMPS[ 128 ] =
{
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 124, 125, 126, 127 Tabla 4
TransIdxLPS[ 128 ]
Figure imgf000012_0001
En algunos ejemplos, un codificador de vídeo puede determinar transiciones de estado con una única tabla TransIdxLPS, que determina, para un índice de estado dado a, el nuevo índice de estado actualizado TransIdxLPS [a] en caso de que se haya observado un LPS. Las transiciones impulsadas por MPS pueden obtenerse por un incremento sencillo (saturado) del índice de estado por el valor fijado de 1, lo que da como resultado un índice de estado actualizado mín( a+ 1, 62).
Como se ha analizado anteriormente, el modelado de contexto proporciona una estimación de probabilidad precisa, que es un factor que contribuye a conseguir una eficacia de codificación superior. Por consiguiente, el modelado de contexto es un proceso adaptativo. Pueden usarse diferentes modelos de contexto para diferentes binarios, y puede actualizarse la probabilidad de los modelos de contexto basándose en los valores de binarios previamente codificados. Los binarios con distribuciones similares a menudo comparten el mismo modelo de contexto. El modelo de contexto para cada binario puede seleccionarse basándose en el tipo de elemento de sintaxis, posición de binario en elemento de sintaxis (binIdx), información de luma/croma, información de vecino, etc.
Antes de codificar un corte dado, se inicializan los modelos de probabilidad basándose en uno o más valores predefinidos. Por ejemplo, dado un parámetro de cuantificación de entrada dado indicado por qp y el valor predefinido indicado por initVal, la entrada del modelo de probabilidad de 7 bits (indicada por el estado y MpS) podría derivarse de acuerdo con las ecuaciones (3), a continuación.
qp = Clip3(0, 51, qp);
pendiente = ( initVal >>4)*5 - 45;
compensación = ((initVal & 15 )<<3)-16;
(3)
initState= mín( máx( 1, ((( pendiente * qp ) >> 4) compensación)), 126 );
MPS = (initState >= 64 );
índice de estado = ((mpState? (initState - 64) : (63 - initState)) <<1) MPS;
El índice de estado derivado incluye implícitamente la información de MPS. Más específicamente, cuando el índice de estado es un valor par, el valor de MPS es igual a 0. A la inversa, cuando el índice de estado es un valor impar, el valor de MPS es igual a 1. El valor de "initVal" está en un rango de [0, 255] con precisión de 8 bits. El valor predefinido "initVal" es dependiente del corte. En otras palabras, se usan tres conjuntos de parámetros de inicialización de contexto para los modelos de probabilidad, cada uno en cortes I, P y B, respectivamente. De esta manera, se posibilita un dispositivo de codificación de vídeo configurado para realizar CABAC para elegir estos tipos de corte entre tres tablas de inicialización de manera que puede conseguirse un mejor ajuste a diferentes escenarios de codificación y/o diferentes tipos de contenido de vídeo.
De acuerdo con HEVC, podría aplicarse otra herramienta para permitir que se inicialice un corte P (o B) con cortes B (o P). Por ejemplo, la herramienta podría aplicarse para permitir que se inicialice un corte P con el conjunto de parámetros de inicialización de contexto almacenados para los cortes B. A la inversa, podría aplicarse la herramienta para permitir que se inicialice un corte B con el conjunto de parámetros de inicialización de contexto almacenados para los cortes P. Los elementos de sintaxis relacionados se describen en la tabla 5 a continuación (que corresponde a la Sección 7.3.6.1 de HEVC), y se describe a continuación la semántica relacionada y el proceso de decodificación, después de la tabla 5.
Tabla 5
Figure imgf000013_0001
_________ _____________________________________________________________________________ continuación
Figure imgf000014_0001
_____ ________________________________________________________________________________
La semántica los elementos de sintaxis de la tabla 5 puede definirse como sigue:
cabac_init_present_flag igual a 1 especifica que cabac_init_flag está presente en los encabezados que hacen referencia al PPS.
cabac_init_present_flag igual a 0 especifica que cabac_init_flag no está presente en los encabezados de corte que hacen referencia al PPS.
cabac_init_flag especifica el método para determinar la tabla de inicialización usada en el proceso de inicialización para las variables de contexto, como se define en el proceso de decodificación descrito a continuación. Cuando cabac_init_flag no está presente, se infiere que es igual a 0.
Descriptores:
ae(v): elemento de sintaxis codificado por entropía aritmética adaptativa al contexto.
b(8): byte que tiene cualquier patrón de cadena de bits (8 bits).
f(n): cadena de bits de patrón fijo que usa n bits escritos (de izquierda a derecha) con el bit izquierdo en primer lugar.
se(v): elemento de sintaxis codificado por Exp-Golomb de orden 0 de número entero con signo con el bit izquierdo en primer lugar.
u(n): número entero sin signo que usa n bits. Cuando n es "v" en la tabla de sintaxis, el número de bits varía de una manera que depende del valor de otros elementos de sintaxis.
ue(v): elemento de sintaxis codificado por Exp-Golomb de orden 0 de número entero sin signo con el bit izquierdo en primer lugar.
La tabla 9-4 de HEVC enumera el índice de contexto (ctxldx) para el que es necesario inicialización para cada uno de los tres tipos de inicialización. Cada ctxIdx se especifica en la tabla 9-4 de HEVC por la variable que corresponde a la variable initType. La tabla 9-4 de HEVC también enumera el número de tabla que incluye cada uno de los valores de initValue necesarios para la inicialización. Para los tipos de corte P y B, la derivación de initType depende del valor del elemento de sintaxis cabac_init_flag. Un codificador de vídeo puede derivar la variable initType usando las operaciones descritas por el siguiente pseudocódigo:
if(slice_type= = I)
initType = 0
else if(slice_type = = P )
initType = cabac_init_flag ? 2 : 1
else
initType = cabac_init_flag ? 1 : 2
Un dispositivo de codificación de vídeo, tal como un decodificador de vídeo compatible con HEVC, puede actualizar el estado de probabilidad para un modelo de contexto en diversas etapas. Para un estado de probabilidad dado, la actualización depende del índice de estado y el valor del símbolo codificado identificado como un LPS o un MPS. Implementando el proceso de actualización, el dispositivo de codificación de vídeo deriva un nuevo estado de probabilidad para el correspondiente modelo de contexto. El nuevo estado de probabilidad puede consistir en una estimación de probabilidad de LPS potencialmente modificada y, si es aplicable, un valor de MPS modificado. La derivación de las reglas de transición para la probabilidad de LPS están basadas en la siguiente relación entre una probabilidad de LPS dada poid y la contraparte actualizada de la probabilidad de LPS pnew:
_ (máx(a *Poid,P 62 ) , si ocurre un MPS
Pn.ew \ a*pold (1 — a),si ocurre un LPS ( )
Para reducir la complejidad, el dispositivo de codificación de vídeo puede implementar CABAC de tal manera que puedan realizarse todas las reglas de transición usando, como máximo, dos tablas, teniendo cada tabla 128 entradas de valores de números enteros sin signo de 7 bits. Dado un índice de estado "i", el dispositivo de codificación de vídeo puede definir el nuevo índice de estado después de actualizar como TransIdxMPS[i] cuando se codifica un valor de MPS, o TransIdxLPS[i] cuando se codifica un valor de LPS. Se ilustra a continuación una tabla TransIdxMPS y una tabla TransIdxLPS.
TransIdxMPS[128] =
{
2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 ,
18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 ,
34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 ,
50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , 64 , 65 ,
66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 ,
82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , 96 , 97 ,
98 , 99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 ,
114 , 115 , 116 , 117 , 118 , 119 , 120 , 121 , 122 , 123 , 124 , 125 , 124 , 125 , 126 , 127
TransIdxLPS[128] =
{
1 , 0 , 0 , 1 , 2 , 3 , 4 , 5 , 4 , 5 , 8 , 9 , 8 , 9 , 10 , 11 ,
12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 18 , 19 , 22 , 23 , 22 , 23 , 24 , 25 ,
26 , 27 , 26 , 27 , 30 , 31 , 30 , 31 , 32 , 33 , 32 , 33 , 36 , 37 , 36 , 37 ,
38 , 39 , 38 , 39 , 42 , 43 , 42 , 43 , 44 , 45 , 44 , 45 , 46 , 47 , 48 , 49 ,
48 , 49 , 50 , 51 , 52 , 53 , 52 , 53 , 54 , 55 , 54 , 55 , 56 , 57 , 58 , 59 ,
58 , 59 , 60 , 61 , 60 , 61 , 60 , 61 , 62 , 63 , 64 , 65 , 64 , 65 , 66 , 67 ,
66 , 67 , 66 , 67 , 68 , 69 , 68 , 69 , 70 , 71 , 70 , 71 , 70 , 71 , 72 , 73 ,
72 , 73 , 72 , 73 , 74 , 75 , 74 , 75 , 74 , 75 , 76 , 77 , 76 , 77 , 126 , 127
} ,
La codificación aritmética está basada en la división de intervalos recursiva. En la codificación aritmética convencional, se divide un rango, con un valor inicial de 0 a 1, en dos subintervalos basándose en la probabilidad del binario. Los bits codificados proporcionan una compensación que, cuando se convierte a una fracción binaria, proporciona una selección de uno de los dos subintervalos. El subintervalo seleccionado indica el valor del binario decodificado. Después de cada binario decodificado, el decodificador de vídeo puede actualizar el rango para igualar el subintervalo seleccionado. A su vez, el decodificador de vídeo puede repetir el proceso de división del intervalo, para implementar la división del intervalo como un procedimiento recursivo. El rango y la compensación tienen una precisión de bits limitada, y por lo tanto, el decodificador de vídeo puede implementar la renormalización en casos donde el rango cae por debajo de un cierto valor (por ejemplo, predeterminado) para evitar el subdesbordamiento. El decodificador de vídeo puede realizar la renormalización después de que se decodifica cada binario.
El dispositivo de codificación de vídeo puede realizar la codificación aritmética basándose en información de probabilidad que se obtiene en una diversidad de maneras. De acuerdo con un "modo de codificación regular" de la codificación aritmética, el dispositivo de codificación de vídeo puede usar una probabilidad estimada. En casos de codificación aritmética de acuerdo con el modo de codificación regular, la cadena binaria se dice que está codificada por contexto. De acuerdo con un "modo de desvío" de la codificación aritmética, el dispositivo de codificación de vídeo puede usar una probabilidad igual supuesta de 0,5. En casos de codificación aritmética de acuerdo con el modo de desvío, la cadena binaria se dice que está codificada por desvío. Para binarios codificados por desvío, el dispositivo de codificación de vídeo puede dividir el rango en subintervalos usando un desplazamiento. En contraste, el dispositivo de codificación de vídeo puede usar una tabla de búsqueda para dividir el rango en el caso de binarios codificados por contexto. La codificación aritmética de acuerdo con HEVC es igual que la codificación aritmética de acuerdo con H.264/AVC. De acuerdo con HEVC y H.264/AVC, el dispositivo de codificación de vídeo puede emplear la codificación aritmética binaria basada en tabla, y se describe en detalle adicional el flujo del modo de codificación regular para la codificación aritmética en los siguientes párrafos con respecto a los dibujos adjuntos.
El codificador de vídeo 20 y el decodificador de vídeo 30 (cualquiera o ambos de los que se denominan genéricamente en diversas porciones de esta divulgación como un "codificador de vídeo") pueden estar configurados con técnicas de esta divulgación para modelado de contexto de datos de coeficiente de transformada. Suponiendo que se representa un coeficiente de transformada por su magnitud y bandera de signo, entonces la magnitud, después de la conversión a binario, se indica por una cadena binaria con índice binario desde 0 a M (M es un número entero positivo). Se describen a continuación diversas mejoras de CABAC de esta divulgación con respecto un codificador de vídeo 20, un decodificador de vídeo 30 y/o uno o más componentes de los mismos. Se apreciará que las diversas técnicas de esta divulgación pueden implementarse individualmente o en cualquier combinación de las mismas, entre sí y/o con cualquier otra técnica descrita en el presente documento.
Esta divulgación reconoce que las diversas técnicas de CABAC existentes, como se ha analizado anteriormente, pueden encontrar ciertos problemas. Por ejemplo, los métodos de modelado de contexto en HEVC están diseñados especialmente para las CTU que no son mayores que 64x64. Cuando se usan CTU más grandes (por ejemplo, 128x128, 256x256 o incluso más grandes), reutilizar directamente los métodos de modelado de contexto actuales puede ser menos eficiente y/o dar como resultado problemas de análisis. Como otro ejemplo, aunque los cambios propuestos en JCTVC-H0228 (que se analiza en detalle a continuación con respecto a la Figura 12) pueden proporcionar potencialmente mejor rendimiento de codificación, el remplazo de la codificación de múltiples pasadas por una codificación de única pasada es perjudicial para la paralelización y la conmutación de diferentes conjuntos de modelo de contexto reduce el rendimiento. Como otro ejemplo, las probabilidades inicializadas derivadas de los valores de inicialización predefinidos son dependientes del tipo de corte. Sin embargo, las probabilidades inicializadas fijadas para un tipo de corte pueden no ser adaptativas basándose en las estadísticas de la información codificada que restringe el rendimiento de codificación de CABAC.
La Figura 4 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo 20 que puede implementar las técnicas para codificar datos de acuerdo con un diseño de CABAC mejorado. El codificador de vídeo 20 puede realizar intra- e inter- codificación de bloques de vídeo dentro de cortes de vídeo. La intra codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en vídeo dentro de un fotograma de vídeo o imagen dados. La inter codificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de fotogramas o imágenes adyacentes de una secuencia de vídeo. El intra modo (modo I) puede hacer referencia a cualquiera de varios modos de codificación espacial. Los inter modos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), pueden hacer referencia a cualquiera de varios modos de codificación temporal.
Como se muestra en la Figura 4, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de un fotograma de vídeo que va a codificarse. En el ejemplo de la Figura 4, el codificador de vídeo 20 incluye la unidad de selección de modo 40, la memoria de imagen de referencia 64 (que puede denominarse también como una memoria intermedia de imagen decodificada (DPB)), el sumador 50, la unidad de procesamiento de transformada 52, la unidad de cuantificación 54 y la unidad de codificación por entropía 56. La unidad de selección de modo 40, a su vez, incluye la unidad de compensación de movimiento 44, la unidad de estimación de movimiento 42, la unidad de intra predicción 46 y la unidad de subdivisión 48. Para la reconstrucción del bloque de vídeo, el codificador de vídeo 20 también incluye la unidad de cuantificación inversa 58, la unidad de transformada inversa 60 y el sumador 62. Un filtro de desbloqueo (no mostrado en la Figura 4) también puede incluirse para filtrar límites de bloque para eliminar los artefactos de bloqueo del vídeo reconstruido. Si se desea, el filtro de desbloqueo típicamente filtraría la salida del sumador 62. Pueden usarse también filtros adicionales (dentro del bucle o posteriores al bucle) además del filtro de desbloqueo. Tales filtros no se muestran por brevedad, pero, si se desea, pueden filtrar la salida del sumador 50 (como un filtro en bucle).
Durante el proceso de codificación, el codificador de vídeo 20 recibe un fotograma o corte de vídeo que va a codificarse. El fotograma o corte puede dividirse en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan codificación inter predictiva del bloque de vídeo recibido con relación a uno o más bloques en uno o más fotogramas de referencia para proporcionar predicción temporal. La unidad de intra predicción 46 puede realizar, como alternativa, codificación intra predictiva del bloque de vídeo recibido con relación a uno o más bloques vecinos en el mismo fotograma o corte que el bloque que va a codificarse para proporcionar una predicción espacial. El codificador de vídeo 20 puede realizar múltiples pasadas de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de vídeo.
Además, la unidad de subdivisión 48 puede subdividir bloques de datos de vídeo en subbloques, basándose en una evaluación de los esquemas de subdivisión previos en pasadas de codificación previas. Por ejemplo, la unidad de subdivisión 48 puede subdividir inicialmente un fotograma o corte en las LCU, y subdividir cada una de las LCU en las sub-CU basándose en análisis de tasa-distorsión (por ejemplo, optimización de tasa-distorsión). La unidad de selección de modo 40 puede producir adicionalmente una estructura de datos de árbol cuádruple indicativa de la subdivisión de una LCU en sub-CU. Las CU de nodo hoja del árbol cuádruple pueden incluir una o más PU y una o más TU.
La unidad de selección de modo 40 puede seleccionar uno de los modos de predicción, intra o inter, por ejemplo, basándose en los resultados de error, y proporcionar el bloque previsto resultante al sumador 50 para generar datos residuales y al sumador 62 para reconstruir el bloque codificado para su uso como un fotograma de referencia. La unidad de selección de modo 40 también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores de intra modo, información de subdivisión y otra información de sintaxis de este tipo, a la unidad de codificación por entropía 56.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero, se ilustran de manera separada para propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de un fotograma de vídeo o imagen actual con relación a un bloque predictivo dentro de un fotograma de referencia (u otra unidad codificada) con relación al bloque actual que se está codificando dentro del fotograma actual (u otra unidad codificada). Un bloque predictivo es un bloque que se halla que coincide estrechamente al bloque que va a codificarse, en términos de diferencia de píxel, que puede determinarse por una suma de diferencia absoluta (SAD), suma de diferencia de cuadrados (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para las posiciones de píxeles sub-enteros de imágenes de referencia almacenadas en la memoria de imagen de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel y otras posiciones de píxel fraccionales de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento con relación a las posiciones de píxel completas y las posiciones de píxel fracciónales y emitir un vector de movimiento con precisión de píxel fraccional.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un corte inter codificado comparando la posición de la PU a la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse 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 imagen de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar capturar o generar el bloque predictivo basándose en el vector de movimiento determinado por la unidad de estimación de movimiento 42. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar funcionalmente integradas, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede ubicar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual restando valores de píxel del bloque predictivo de los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel, como se analiza a continuación. En general, la unidad de estimación de movimiento 42 realiza estimación de movimiento con relación a componentes de luma, y la unidad de compensación de movimiento 44 usa vectores de movimiento calculados basándose en los componentes de luma para tanto los componentes de croma como los componentes de luma. La unidad de selección de modo 40 puede generar también elementos de sintaxis asociados con los bloques de vídeo y el corte de vídeo para su uso por el decodificador de vídeo 30 al decodificar los bloques de vídeo del corte de vídeo.
La unidad de intra predicción 46 puede intra predecir un bloque actual, como una alternativa a la inter predicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de intra predicción 46 puede determinar un modo de intra predicción para usar para codificar un bloque actual. En algunos ejemplos, la unidad de intra predicción 46 puede codificar un bloque actual usando diversos modos de intra predicción, por ejemplo, durante pasadas de codificación separadas y la unidad de intra predicción 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intra predicción apropiado para usar a partir de los modos probados.
Por ejemplo, la unidad de intra predicción 46 puede calcular valores de tasa-distorsión usando un análisis de tasadistorsió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 tasa-distorsión entre los modos probados. El análisis de tasa-distorsión determina en general una cantidad de distorsión (o error) entre un bloque codificado y un bloque no codificado original que se codificó para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) usada para producir el bloque codificado, la unidad de intra predicción 46 puede calcular relaciones para las distorsiones y tasas para los diversos bloques codificados para determinar qué modo de intra predicción muestra el mejor valor de tasa-distorsión para el bloque.
Después de seleccionar un modo de intra predicción para un bloque, la unidad de intra predicción 46 puede proporcionar información indicativa del modo de intra predicción seleccionado para el bloque a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indica el modo de intra predicción seleccionado. El codificador de vídeo 20 puede incluir en el flujo de bits transmitido datos de configuración, que pueden incluir una pluralidad de tablas de índices de modo de intra predicción y una pluralidad de tablas de índices de modo de intra predicción modificado (también denominadas como tablas de mapeo de palabra de código), definiciones de codificación de contextos para diversos bloques e indicaciones de un modo de intra predicción más probable, una tabla de índices de modo de intra predicción y una tabla de índices de modo de intra predicción modificado para usar para cada uno de los contextos.
El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción de la unidad de selección de modo 40 del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o componentes que realizan esta operación de resta. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada. Podrían usarse las transformadas de ondícula, las transformadas de enteros, las transformadas de subbanda, las transformadas de seno discretas (DST) u otros tipos de transformadas en lugar de una DCT. En cualquier caso, la unidad de procesamiento de transformada 52 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada. La transformada puede convertir la información residual de un dominio de los píxeles a un dominio de la transformada, tal como un dominio de frecuencia. La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir adicionalmente la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación.
Después de la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar CABAC y/o CABAC mejorada de acuerdo con las técnicas de esta divulgación. En el caso de codificación por entropía basada en contexto, el contexto puede estar basado en bloques vecinos. Después de la codificación por entropía por la unidad de codificación por entropía 56, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, el decodificador de vídeo 30) o archivarse para su transmisión o recuperación posterior.
La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de los píxeles. En particular, el sumador 62 añade el bloque residual objetivo al bloque de predicción de movimiento compensado anteriormente producido por la unidad de compensación de movimiento 44 o la unidad de intra predicción 46 para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria de imagen de referencia 64. El bloque de vídeo reconstruido puede usarse por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para inter codificar un bloque en un fotograma de vídeo posterior.
Diversos componentes del codificador de vídeo 20, tal como la unidad de codificación por entropía 56, pueden implementar las técnicas de CABAC mejorada de esta divulgación para realizar el modelado de contexto. De acuerdo con diversos aspectos de esta divulgación, la unidad de codificación por entropía 56 puede realizar el modelado de contexto para el binario de orden i de un coeficiente de transformada usando los valores de los binarios de orden i de uno o más coeficientes de transformada previamente codificados. Dicho de otra manera, el modelado de contexto del binario de orden i para un coeficiente de transformada actual depende de los valores de los correspondientes binarios de orden i de uno o más coeficientes de transformada que ya ha codificado la unidad de codificación por entropía 56. El modelado de contexto del binario de orden i puede excluir el uso de otros binarios de los valores para los coeficientes de transformada previamente codificados, para permitir el modelado de contexto para una pluralidad de binarios de los valores para que los coeficientes de transformada se realicen en paralelo.
Realizando el modelado de contexto para un binario de un coeficiente de transformada actual usando los valores de los binarios de orden i de la transformada previamente codificada, la unidad de codificación por entropía 56 puede implementar las técnicas de esta divulgación para proporcionar una o más mejoras potenciales sobre los codificadores de CABAC existentes. Como un ejemplo de un beneficio de este tipo, la unidad de codificación por entropía 56 puede mejorar la paralelización de la operación de modelado de contexto implementando las técnicas de esta divulgación. Más específicamente, la unidad de codificación por entropía 56 puede realizar el modelado de contexto, en paralelo, para múltiples binarios de un coeficiente de transformada que se está codificando actualmente. Por ejemplo, si la unidad de codificación por entropía 56 determina que están disponibles valores de binario que corresponden a múltiples binarios a partir del coeficiente o coeficientes de transformada previamente codificados, entonces la unidad de codificación por entropía 56 puede paralelizar al menos parcialmente las operaciones de modelado de contexto para los binarios del coeficiente de transformada que se está codificando actualmente.
La unidad de codificación por entropía 56 puede realizar el modelado de contexto paralelizado de esta divulgación de acuerdo con un esquema de codificación de múltiples pasadas. Más específicamente, un esquema de codificación de múltiples pasadas hace referencia a una técnica de codificación mediante la que la unidad de codificación por entropía 56 asigna hilos separados a cada binario particular (por ejemplo, el hilo 1 para el primer binario, el hilo 2 para el segundo binario y así sucesivamente). Por lo tanto, de acuerdo con la codificación de múltiples pasadas, todas las instancias bin0 pueden codificarse en secuencia, independientemente de las instancias bin1 que se codifiquen en secuencia, ambas de las cuales se codifican independientemente de las instancias bin2 que se codifican en secuencia, etc. En algunos ejemplos, la unidad de codificación por entropía 56 puede realizar la codificación de múltiples pasadas con respecto a unidades de transformada de bloque único. Además, para binarios que se codifican de acuerdo con el modo regular, la unidad de codificación por entropía 56 puede realizar varias pasadas de codificación. Cada pasada puede pertenecer a un único binario correspondiente de todos los coeficientes de transformada. En otras palabras, durante cada pasada, la unidad de codificación por entropía 56 no utiliza información relacionada con las otras pasadas. Por ejemplo, la unidad de codificación por entropía 56 puede codificar el primer binario (si fuera necesario) de todos los coeficientes de transformada dentro de una unidad de transformada/CG en una primera pasada. En este ejemplo, en una segunda pasada, la unidad de codificación por entropía 56 puede codificar el segundo binario de todos los coeficientes de transformada dentro de una unidad de transformada/CG, si fuera necesario, y así sucesivamente.
En un caso de uso de ejemplo, la unidad de codificación por entropía 56 puede realizar el modelado de contexto para el bin0 de un coeficiente de transformada actualmente codificado usando el valor de bin0 del coeficiente de transformada vecino previamente codificado, realizar modelado de contexto para bin1 de un coeficiente de transformada actualmente codificado usando el valor de bin1 del coeficiente de transformada vecino previamente codificado, y así sucesivamente. Para permitir el paralelismo, como se ha analizado anteriormente, la unidad de codificación por entropía 56 puede estar configurada para evitar usar diferentes binarios cuando se realiza modelado de contexto de un binario particular. Por ejemplo, la unidad de codificación por entropía 56 puede determinar un contexto para codificar por entropía un bin1 de un coeficiente de transformada actual sin usar ningún valor bin0 de los coeficientes de transformada previamente codificados. En casos donde se codifica por entropía un conjunto de binarios en paralelo, cuando están disponibles los respectivos binarios necesarios para determinar los contextos de binario, la unidad de codificación por entropía 56 puede usar los respectivos valores de binario disponibles para el coeficiente de transformada previamente codificado, la unidad de codificación por entropía 56 puede realizar el modelado de contexto para múltiples binarios del coeficiente de transformada actualmente codificado en paralelo. En el escenario de caso de uso anteriormente descrito, si bin0 y bin 1 están ambos disponibles a partir del coeficiente de transformada vecino previamente codificado, entonces la unidad de codificación por entropía 56 puede paralelizar el modelado de contexto de bin0 y bin1 para el coeficiente de transformada actualmente codificado. De esta manera, la unidad de codificación por entropía 56 puede implementar las técnicas de esta divulgación para realizar CABAC dentro de los principios de la codificación de múltiples pasadas como se describe en HEVC, mientras que mejora la selección de contexto para binarios de un coeficiente de transformada actual posibilitando y aprovechando potencialmente la paralelización de las operaciones de modelado de contexto.
Se apreciará que, la unidad de codificación por entropía 56 puede realizar, pero no necesariamente, todo el modelado de contexto de todos tales binarios en paralelo. Más específicamente, la unidad de codificación por entropía 56 puede realizar algunas porciones del modelado de contexto de múltiples binarios concurrentemente. De esta manera, la unidad de codificación por entropía 56 puede implementar las técnicas de esta divulgación para aprovechar la tecnología de procesamiento de múltiples núcleos y/o múltiples procesadores para mejorar las operaciones de modelado de contexto para un coeficiente de transformada actualmente codificado.
Codificando correspondientes binarios de diferentes coeficientes de transformada con la paralelización activada, la unidad de codificación por entropía 56 puede proporcionar una o más ventajas sobre técnicas de CABAC de múltiples pasadas existentes. Por ejemplo, codificando los correspondientes binarios (por ejemplo, el respectivo bin0) de múltiples coeficientes de transformada en una única pasada, la unidad de codificación por entropía 56 puede evitar la necesidad de almacenar y recuperar un nuevo modelo de contexto con frecuencia en las transiciones de binario. En su lugar, la unidad de codificación por entropía 56 puede usar un único modelo de contexto a través de una pasada dada, puesto que la pasada tiene como objetivo los correspondientes binarios (por ejemplo, el respectivo bin0) a través de múltiples coeficientes de transformada. De esta manera, la unidad de codificación por entropía 56 puede implementar las técnicas de selección de contexto paralelizadas de esta divulgación para mitigar o eliminar potencialmente retardos de tiempo y la rotación de recursos que surgen de la conmutación de contexto frecuente. En contraste, la codificación de múltiples pasadas existente requeriría operaciones de grabación y recuperación de modelo de contexto frecuentes, debido a la codificación de bin0, bin1, bin2, etc. para un primer coeficiente de transformada, y, a continuación, la codificación de bin0, bin1, bin2, etc., para un segundo coeficiente de transformada, y así sucesivamente.
Por ejemplo, la unidad de codificación por entropía 56 puede generar o acceder de otra manera a una o más plantillas predefinidas para usar las funcionalidades de modelado de contexto de binario de orden i descritas en el presente documento. Se ilustra un ejemplo no limitante de una plantilla predefinida que puede usar la unidad de codificación por entropía 56 para modelado de contexto de un binario de orden i de coeficiente de transformada actualmente codificado en la Figura 10. Una plantilla predefinida, tal como la plantilla local 140 de la Figura 10 define un orden de exploración diagonal para un bloque de transformada de 8x8, donde 'L' indica la última posición de exploración significativa, 'x' indica la posición de exploración actual, y "x" indica los vecinos cubiertos por la plantilla local 140. Con respecto a xi, el valor de "i" se encuentra en el intervalo de cero a 4, y la restricción de rango se expresa como i e [0,4]. De acuerdo con uno o más aspectos de esta divulgación, la unidad de codificación por entropía 56 puede usar los binarios de orden i de los coeficientes de transformada ubicados en la plantilla local 140 para el modelado de contexto del correspondiente binario de orden i de un coeficiente de transformada que se está codificando actualmente. De acuerdo con algunas implementaciones, la unidad de codificación por entropía 56 puede usar múltiples plantillas para realizar el modelado de contexto de binario paralelizado de esta divulgación. En un ejemplo, el tamaño y/o la forma de plantilla depende de uno o más de los siguientes criterios: (i) el tamaño de unidades de transformada; o (ii) los modos; o (iii) la posición de los coeficientes de transformada actuales dentro de la unidad de transformada o el grupo de coeficientes (CG) actuales; o (iv) información de componente de color, tal como información de componente de luma y/o de croma.
Usando una o más plantillas predefinidas para atravesar una TU previamente codificada para valores de binario, la unidad de codificación por entropía 56 puede implementar las técnicas de esta divulgación para proporcionar una o más mejoras sobre la tecnología de CABAC existente. Por ejemplo, usando una plantilla transversal de la TU, tal como la plantilla local 140 de la Figura 10, la unidad de codificación por entropía 56 puede evitar la necesidad de determinar por separado un esquema transversal con respecto a diferentes pasadas de codificación. Por lo tanto, implementando las técnicas de selección de contexto paralelizado basadas en plantilla de esta divulgación, la unidad de codificación por entropía 56 puede aumentar el rendimiento con respecto a la codificación de binarios, mientras que mantiene una precisión de codificación.
De acuerdo con otra implementación de ejemplo, la unidad de codificación por entropía 56 puede aplicar únicamente las técnicas de modelado de contexto paralelizado de esta divulgación a los primeros 'K' binarios del coeficiente de transformada actualmente codificado, donde 'K' es menor que M, y donde 'M' indica el límite superior de los índices de binario disponibles, y donde M empieza desde 0. La unidad de codificación por entropía 56 puede codificar los restantes (M+1-K) binarios que se codifican usando otra técnica de modelado de contexto, o de acuerdo con el modo de desvío.
De acuerdo con otra implementación de ejemplo, la unidad de codificación por entropía 56 puede definir el universo de coeficientes de transformada previamente codificados como los 'N' coeficientes de transformada consecutivos en el orden de codificación dentro de la unidad de transformada actual o CG antes de que se codifique actualmente el coeficiente de transformada. Como alternativa, la unidad de codificación por entropía 56 puede determinar N para que sea una variable. En un ejemplo, la unidad de codificación por entropía 56 puede determinar el valor de N dependiendo de la posición relativa del coeficiente de transformada actualmente codificado en la unidad de transformada actual. En otro ejemplo, la unidad de codificación por entropía 56 puede determinar el valor de N dependiendo del tamaño de la unidad de transformada.
En otra implementación, la unidad de codificación por entropía 56 puede definir el universo de coeficientes de transformada previamente codificados como aquellos coeficientes de transformada situados en las cercanías de la posición actual dentro de la unidad de transformada actual o CG. En un ejemplo, las cercanías de la posición actual están restringidas a aquellas posiciones directamente adyacentes a la posición actual, o posiciones directamente adyacentes a o separadas de la posición actual. En otro ejemplo, las cercanías pueden incluir también aquellas posiciones, pero ampliarse para incluir posiciones en una o más unidades de transformada vecinas espaciales.
De acuerdo con diversos aspectos de esta divulgación, la unidad de codificación por entropía 56 puede definir el índice de contexto de un binario como una función de valores asociados con uno o más coeficientes de transformada previamente codificados. Por ejemplo, la unidad de codificación por entropía 56 puede usar una función que produce la suma de todos los valores de binario de orden i de los coeficientes de transformada previamente codificados. Más específicamente, en este ejemplo, la unidad de codificación por entropía 56 puede realizar una suma de los valores de los valores de binario de orden i disponibles de todos los coeficientes de transformada previamente codificados de la TU/CG. A su vez, la unidad de codificación por entropía 56 puede usar la suma resultante como el índice de contexto (CtIdx) durante el modelado de contexto para el binario de orden i del coeficiente de transformada actualmente codificado. En otro ejemplo, la unidad de codificación por entropía 56 puede definir un valor de corte. En este ejemplo, cuando la salida de la función supera el valor de corte predefinido, la unidad de codificación por entropía 56 puede usar el mismo contexto con respecto al binario que se está codificando actualmente. En algunos ejemplos, la unidad de codificación por entropía 56 puede determinar que el valor de corte está basado en (o que depende de) el índice binario/tamaño de unidad de transformada/modo de codificación/la posición de coeficiente de transformada dentro de una unidad de transformada.
En algunos ejemplos, la unidad de codificación por entropía 56 puede codificar los correspondientes binarios codificados en diferentes pasadas de manera que estos binarios comparten los mismos modelos de contexto. En un ejemplo, la unidad de codificación por entropía 56 puede determinar que el método de derivación de índice de contexto es diferente, por ejemplo, la función para calcular el índice de contexto, para binarios en diferentes pasadas. De acuerdo con un ejemplo, la unidad de codificación por entropía 56 puede determinar que el método de derivación de índice de contexto puede ser el mismo, por ejemplo, la función para calcular el índice de contexto, para binarios en diferentes pasadas.
De acuerdo con algunos aspectos de esta divulgación, la unidad de codificación por entropía 56 puede mantener la regla de derivación de índice de contexto sin cambiar para la misma pasada en diferentes tamaños de unidades de transformada. Sin embargo, la unidad de codificación por entropía 56 puede aplicar una compensación al índice de contexto para realizar modelado de contexto para el binario actualmente codificado. Por ejemplo, la unidad de codificación por entropía 56 puede determinar que dos tamaños de transformada diferentes tienen dos conjuntos de modelos de contexto. A su vez, la unidad de codificación por entropía 56 puede definir la compensación como el número de modelos de contexto en un conjunto de este tipo. Por ejemplo, si la unidad de codificación por entropía 56 determina que el tamaño de TU es menor que un cuadrado de dimensiones predefinidas MxM, entonces la unidad de codificación por entropía 56 puede determinar que cada tamaño de TU de la TU de este tipo (menor que MxM) tiene su propio respectivo conjunto de modelos de contexto. A la inversa, la unidad de codificación por entropía 56 puede determinar que todas las TU con tamaños iguales o mayores que MxM comparten el mismo conjunto de modelos de contexto.
En diversos escenarios de caso de uso, la unidad de codificación por entropía 56 puede establecer el valor de M en 16. Más específicamente, en estos ejemplos, si la unidad de codificación por entropía 56 determina que el tamaño de la TU actualmente codificada es menor que un cuadrado de 16x16, entonces la unidad de codificación por entropía 56 puede determinar que la TU actualmente codificada está asociada con un conjunto de modelos de contexto que corresponde al tamaño particular de la TU. A la inversa, si la unidad de codificación por entropía determina que la TU actualmente codificada tiene un tamaño que es mayor o igual que 16x16, entonces la unidad de codificación por entropía 56 puede determinar que la TU actualmente codificada comparte el mismo conjunto de modelos de contexto con todas las demás TU que tienen un tamaño mayor o igual que 16x16. En algunos ejemplos, la unidad de codificación por entropía 56 puede aplicar la selección de contexto basada en tamaño de TU únicamente a bloques de luma.
De acuerdo con algunos ejemplos, el parámetro de Rice usado para codificar los binarios restantes depende del tamaño de la transformada. Como alternativa, o además, el parámetro de Rice puede depender del modo de codificación. En un ejemplo, en lugar de usar el código de Golomb-Rice para coeff_abs_level_remaining, la unidad de codificación por entropía 56 puede usar otras técnicas de conversión a binario. Como alternativa, o además, puede aplicarse más de un método de conversión a binario para codificar el elemento de sintaxis coeff_absjevel_remaining. En un ejemplo, el método de conversión a binario (por ejemplo, parámetro de Rice) usado para codificar coeff_abs_level_remaining depende de los modos de codificación. Como alternativa, el método de conversión a binario (por ejemplo, parámetro de Rice) usado para codificar coeff_abs_level_remaining puede depender de la posición relativa dentro de una TU. Como alternativa, el método de conversión a binario (por ejemplo, parámetro de Rice) usado para codificar coeff_abs_level_remaining puede depender de la distancia desde el primer coeficiente de transformada codificado/decodificado en orden de exploración. En algunos casos, el método de conversión a binario (por ejemplo, parámetro de Rice) usado para codificar coeff_abs_level_remaining depende de la posición del grupo de codificación relativa a la unidad de transformada.
De acuerdo con algunos aspectos de esta divulgación, la unidad de codificación por entropía 56 puede determinar el tamaño de grupo de coeficientes (CG) basándose en el tamaño de transformada. En otras palabras, de acuerdo con estos aspectos, el tamaño de CG depende del tamaño de transformada. Como alternativa, o además, la unidad de codificación por entropía 56 puede determinar el tamaño de CG basándose en el modo de codificación. En estos ejemplos, la unidad de codificación por entropía 56 puede determinar el tamaño de CG como siendo dependiente de uno o ambos del tamaño de transformada y/o el modo de codificación. Como alternativa, o además, la unidad de codificación por entropía 56 puede determinar el tamaño de CG basándose en una matriz de transformada.
De acuerdo con algunos aspectos de esta divulgación, la unidad de codificación por entropía 56 puede aplicar también las técnicas de modelado de contexto paralelizado a los bloques que se codifican usando el modo de desvío de transformada (también denominado como "modo de salto de transformada"). El modo de desvío de transformada hace referencia a un modo de codificación de acuerdo con el que el codificador de vídeo 20 puede omitir las operaciones de transformada y cuantificación de la codificación, para proporcionar una salida de codificación sin pérdidas. Por lo tanto, de acuerdo con ciertos aspectos de esta divulgación, la unidad de codificación por entropía 56 puede ampliar las técnicas de selección de contexto paralelizadas para proporcionar las ventajas resultantes potenciales en casos de codificación sin pérdidas.
Se analizan en mayor detalle a continuación detalles de ejemplo de diversas técnicas de modelado de contexto de coeficiente de transformada de esta divulgación. Se describe a continuación un ejemplo de modelado de contexto de acuerdo con codificación de múltiples pasadas. De acuerdo con este ejemplo, la unidad de codificación por entropía 56 puede aplicar los elementos de codificación y el orden de codificación (codificación de múltiples pasadas y basada en CG) como se expone en HEVC. Además, la unidad de codificación por entropía 56 puede aplicar las técnicas de conversión a binario mientras mantiene las magnitudes de los coeficientes de transformada sin cambiar. Sin embargo, la unidad de codificación por entropía 56 puede modificar el índice de contexto y el método de cálculo de parámetro de Rice para codificar magnitudes de los coeficientes de transformada.
El cálculo de índice de contexto para bin0 (bandera significativa) puede depender de la siguiente información: el número de coeficientes distintos de cero en la plantilla (es decir, magnitudes de coeficientes que son mayores que 0); la posición del coeficiente actual dentro de la TU actual; el tamaño de TU para el componente de luma; y los componentes de color. Con respecto a la dependencia de componente de color, se consideran luma y croma de manera separada. Adicionalmente, al considerar el tamaño de TU para el componente de luma, el cálculo de índice de contexto es independiente del tamaño de TU para luma. El tamaño de TU del componente de luma puede incluir tres conjuntos, en concreto, TU de 4x4, TU de 8x8, TU de 16x16 y mayores.
Para bin1 y bin2 (Grt than 1, Grt than 2), el cálculo de índice de contexto depende de la siguiente información: el número de absLevels en la plantilla mayores que 1 (para bin1) y mayores que 2 (para bin2); la posición del coeficiente actual dentro de la TU actual; y los componentes de color. El proceso de derivación del parámetro de Rice depende de la información de codificación de desvío, y del valor del elemento de sintaxis sum_absolute_levelMinus1.
En un ejemplo, la unidad de codificación por entropía 56 puede definir la función sum_template(k) para devolver el número de coeficientes en una plantilla, de manera que las magnitudes de los coeficientes son mayores que k. Un ejemplo de la función sum_template(k) es como sigue:
sumjtemplate(k) ^ S J(xl,k)
con
\xt\ > k
Figure imgf000021_0001
xl = 0 '
Adicionalmente, en este ejemplo, la unidad de codificación por entropía 56 puede definir una función f(x, y, n, t) para manejar la información de posición y otra función 5 k (u,v) para manejar la información de componente como sigue: n x y < t
f(x , y, n, t) 0 x y > t
Sk(u,v) (u v = 0
1-0 v ^ 0
La Figura 10 representa un ejemplo de una plantilla (plantilla local 140) que puede usar la unidad de decodificación por entropía 70 y/o la unidad de codificación por entropía 56 con respecto a las técnicas de modelado de contexto descritas en el presente documento. El coeficiente de transformada actual se marca como 'X' y los cinco vecinos espaciales se marcan como 'Xi' (representando 'i' un número entero desde 0 a 4). Si se satisface una cualquiera de las siguientes condiciones, entonces la unidad de codificación por entropía 56 puede marcar Xi como no disponible y no usarse en el proceso de derivación de índice de contexto:
• la posición de Xi y el coeficiente de transformada actual X no están ubicados en la misma unidad de transformada; o
• la posición de Xi está ubicada fuera de los límites horizontal o vertical de la imagen; o
• el coeficiente de transformada Xi no se ha codificado aún. En el caso de codificación de múltiples pasadas, cada vez que se codifican los binarios en la misma pasada de codificación, podrían usarse los binarios en el proceso de derivación de índice de contexto. Por lo tanto, desde una perspectiva de la decodificación, no es necesario decodificar completamente un coeficiente de transformada.
Como alternativa, la unidad de codificación por entropía 56 puede aplicar una o más plantillas que pueden incluir la información desde una unidad de transformada vecina. En diversos ejemplos, la TU vecina puede ser una vecina espacial o una vecina temporal. De acuerdo con una o más de las técnicas de modelado de contexto descritas en el presente documento, pueden definirse los cálculos de índice de contexto como se describe en los siguientes párrafos.
Con respecto a bin0, la unidad de codificación por entropía 56 puede derivar el índice de contexto como sigue:
c0 = mín(sum_template(0),5) f(x ,y , 6,2) + Sk(f(x,y , 6,5),cldx) offset (cldx,width)
c0 = co offset(cldx,width)
donde
offset(v,w) =
íw == 4?0 ■ (w == 8? NumberCtxOneset ■ NumberLumaCtxOneset *2 v = 0
r NumberLumaCtxOneset * 3 v ^ 0
En un ejemplo, basándose en el rango de c0, un conjunto de contextos de luma puede incluir un número de modelos de contexto que equivale al valor de NumberLumaCtxOneset. Por ejemplo, el conjunto de contextos de luma puede incluir 18 modelos de contexto. Con respecto a diferentes tamaños de transformada (con la anchura de la transformada indicada por ’W) para codificar bin0s de luma, la unidad de codificación por entropía 56 puede seleccionar un conjunto diferente para cada tamaño de transformada. Además, se separan los contextos de croma y luma para mejorar adicionalmente el rendimiento de la codificación. Para las entradas de YCbCr, se representan los tres componentes de color, es decir, Y, Cb y Cr con índice de componente v igual a 0, 1 y 2, respectivamente.
En estos ejemplos, la unidad de codificación por entropía 56 puede derivar el índice de contexto para bin1 como sigue:
c1 = mín(sumjtemplate (1),4) N
c1 = c1 Sk(f(x,y , 5,3),cldx) Sk(f(x,y , 5,10),cldx)
Adicionalmente, en estos ejemplos, la unidad de codificación por entropía 56 puede derivar el índice de contexto para bin2 como sigue:
c2 = mín (sumjtemplate (2),4) N
c2 = c2 + Sk(f(x,y , 5,3),cldx) Sk(f(x,y , 5,10),cldx)
En un ejemplo, N es igual a 0. En otro ejemplo, N es igual a 1. Como alternativa, o además, cuando N es igual a 1, la unidad de codificación por entropía 56 puede codificar el primer bin1 o bin2 con el índice de contexto c1 o c2 igual a 0. En este ejemplo, la unidad de codificación por entropía 56 puede codificar las otras instancias de bin1s y bin2s de acuerdo con las ecuaciones anteriores.
En un ejemplo, la unidad de codificación por entropía 56 puede codificar bin1 y bin2 con el mismo conjunto de modelos de contexto, pero con diferentes índices. Como alternativa, se codifican binl y bin2 con dos conjuntos de modelos de contexto y no existe dependencia entre ellos. Para los binarios restantes, la unidad de codificación por entropía 56 puede aplicar el diseño expuesto en HEVC o el diseño en JCTVC-H0228. En diversos ejemplos, la unidad de codificación por entropía 56 puede usar diferentes valores constantes al crear las diversas funciones anteriormente descritas.
La invención se refiere a las mejoras de inicialización de contexto. Las mejoras de inicialización de contexto de esta divulgación pueden implementarse independientemente de las técnicas de selección de contexto paralelizadas anteriormente descritas, o pueden implementarse en combinación con una cualquiera o más de las técnicas de selección de contexto paralelizadas anteriormente descritas. Una o más de las técnicas de inicialización de contexto de esta divulgación se refieren a la reutilización de información de contexto de información previamente codificada. De acuerdo con la invención, la unidad de codificación por entropía 56 hereda la información de contexto para un corte copiando un estado de un corte previamente codificado, que pertenece a una imagen previamente codificada. En diversos ejemplos de acuerdo con las técnicas de inicialización de contexto basadas en herencia de esta divulgación, el término 'estado' hace referencia a una combinación de información de estado y un valor de símbolo más probable (MPS). En la siguiente descripción, puede usarse el término 'corte' de manera intercambiable con el término 'pieza'.
Heredando la información de inicialización de contexto de un corte previamente codificado, la unidad de codificación por entropía 56 puede implementar las técnicas de esta divulgación para proporcionar precisión mejorada en comparación con las técnicas de inicialización de contexto de CABAC existentes. Por ejemplo, las técnicas de inicialización de contexto de CABAC existentes se basan en obtener información de estado de contexto a partir de una tabla. Sin embargo, la tabla se forma usando información estática. Sin embargo, de acuerdo con las técnicas de inicialización de contexto basadas en herencia de esta divulgación, la unidad de codificación por entropía puede extraer información de inicialización de contexto de un corte previamente codificado que es del mismo tipo de corte y/o tiene los mismos parámetros de cuantificación (QP) que el corte que se está codificando actualmente. De esta manera, la unidad de codificación por entropía 56 puede implementar las técnicas de esta divulgación para mejorar la precisión de la información de inicialización de contexto usada para un corte actual.
De acuerdo con algunas implementaciones, la unidad de codificación por entropía 56 puede identificar la LCU central de un corte previamente codificado como el corte desde el que heredar la información de inicialización de contexto. En diversos ejemplos, la unidad de codificación por entropía 56 puede heredar la inicialización de contexto para múltiples cortes de la imagen actual desde múltiples correspondientes cortes previamente codificados. De acuerdo con la invención, la unidad de codificación por entropía 56 usa el mismo bloque (en concreto, la LCU central) de la imagen previamente codificada desde la que heredar la información de inicialización de contexto para todos los múltiples cortes codificados de acuerdo con las técnicas de inicialización de contexto de esta divulgación. En otro ejemplo, la unidad de codificación por entropía 56 puede heredar la información de inicialización de contexto para cada uno de los múltiples cortes desde la respectiva LCU central desde cada uno de los correspondientes cortes de la imagen previamente codificada.
Por ejemplo, después de codificar la LCU central de la imagen previamente codificada, la unidad de codificación por entropía 56 puede almacenar toda la información de estado con respecto a la inicialización de contexto de corte. A su vez, la unidad de codificación por entropía 56 puede acceder o leer la información de estado copiada y usar la información de estado para inicializar el contexto para uno o más cortes de la imagen que se está codificando actualmente. Usando la información de estado de una imagen previamente codificada para realizar la inicialización de contexto para cortes de una imagen actual, la unidad de codificación por entropía 56 puede reducir la dependencia de una tabla fija de información estática para el propósito de la inicialización de contexto. Por ejemplo, después de usar la tabla fija para inicializar el contexto para los cortes de una primera imagen, así como para cualquier imagen intra codificada, la unidad de codificación por entropía 56 puede realizar la inicialización de contexto para imágenes inter codificadas que se codifican posteriormente. La unidad de codificación por entropía 56 puede implementar las técnicas de inicialización de contexto basadas en herencia de esta divulgación con respecto a cortes P y/o cortes B.
Se describen a continuación detalles de ejemplo adicionales para las técnicas de inicialización de contexto de esta divulgación. La unidad de codificación por entropía 56 puede estar configurada, adicionalmente o como alternativa, para realizar las técnicas de acuerdo con esta divulgación para la inicialización de contexto, como se analiza a continuación. La unidad de codificación por entropía 56 puede implementar las técnicas de inicialización de contexto de esta divulgación para heredar la información de contexto después de codificar un bloque ubicado en una imagen previamente codificada como la información de contexto inicializada para codificar el corte actual. La unidad de codificación por entropía 56 puede aplicar las técnicas de inicialización de contexto basadas en herencia a cortes P y/o B. Adicionalmente, la posición del 'un bloque' al que se ha hecho referencia anteriormente está predefinida y fijada para una secuencia en su totalidad. Por ejemplo, el tamaño de la unidad de codificación más grande (LCU) se indica por "NxN", la anchura de la imagen se indica por "W", y la altura de la imagen se indica por "H". En este ejemplo, el número de LCU dentro de una fila de LCU, indicado por "PicWidthInCtbsY, es igual a la salida de una función techo, en concreto, Techo( W N). Adicionalmente, en este ejemplo, el número de filas de LCU, indicado por "PicHeightInCtbsY", es igual a Techo( H N ) donde la función de techo Techo(x) representa el número entero más pequeño mayor o igual que x.
De acuerdo con algunos ejemplos, se define la posición como la LCU central del primer corte en la imagen previamente codificada. Suponiendo que numLCUinSlice representa el número de LCU en el primer corte, la posición se define como: TargetCUAddr = numLCUinSlice/2. En un ejemplo, la posición se define como: TargetCUAddr = (PicWidthInCtbsY* PicHeightInCtbsY)/2 PicWidthInCtbsY /2. Adicionalmente, cuando TargetCUAddr es mayor o igual que (PicWidthInCtbsY* PicHeightInCtbsY), (por ejemplo, PicHeightInCtbsY es igual a 1), TargetCUAddr se resetea a (PicWidthInCtbsY* Pici-leightInCtbsY -1), que es correspondiente a la última LCU. En un ejemplo, la posición se define como la última LCU de la imagen previamente codificada o la LCU central dentro de un fotograma (es decir, PicWidthInCtbsY* PicHeightInCtbsY/2), o la última LCU de la fila de LCU central (es decir, PicWidthInCtbsY* (PicHeightInCtbsY/2) -1), o la última LCU de la fila de LCU de orden k (por ejemplo, k es igual a 1). De acuerdo con un ejemplo, se define la posición como la última LCU del primer corte en la imagen previamente codificada. De acuerdo con algunas implementaciones de las técnicas de inicialización de contexto de esta divulgación, diferentes resoluciones pueden tener diferentes definiciones de la posición del bloque de codificación.
En algunos ejemplos, la posición del 'un bloque' se señaliza en un conjunto de parámetros, tal como un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS). Los conjuntos de parámetros, tales como los SPS y/o los PPS, pueden señalizarse fuera de banda con respecto a cortes de la imagen actual. En algunos ejemplos, la posición del 'un bloque' puede señalizarse en un encabezado de corte. Puede señalizarse un encabezado de corte dentro de banda con respecto a un correspondiente corte. En estos y otros ejemplos, la indicación de la imagen previamente codificada, tal como un índice de imagen de referencia, una correspondiente diferencia de recuento de orden de imagen (o POC delta), puede señalizarse en un conjunto de parámetros o encabezado de corte.
En algunos ejemplos, se define una 'imagen previamente codificada' como una imagen que se codifica/decodifica justo antes (inmediatamente) de la imagen actual. En algunos ejemplos, se define una 'imagen previamente codificada' como una imagen que es la última imagen codificada o decodificada antes de la imagen actual, de manera que un primer corte en la imagen anterior tiene el mismo tipo de corte al corte actual. De acuerdo con algunos ejemplos, se define una 'imagen previamente codificada' como la imagen que es la imagen codificada/decodificada antes de la imagen actual y el primer corte en la imagen anterior tiene los mismos parámetros de cuantificación inicializados al corte actual. De acuerdo con algunos ejemplos, se define una 'imagen previamente codificada' como una imagen que contiene un corte previamente codificado que tiene el mismo tipo de corte, o tanto el mismo tipo de corte como el parámetro o parámetros de cuantificación, o tanto el mismo tipo de corte como la capa temporal, como el corte actual y/o los mismos parámetros de cuantificación inicializados. En algunos ejemplos, se define una 'imagen previamente codificada' como una imagen que está presente en una memoria intermedia de imagen (tal como una memoria intermedia de imagen codificada o una memoria intermedia de imagen decodificada), y puede usarse para la imagen actual como una imagen de referencia. De acuerdo con estos ejemplos, como en la plataforma basada en HEVC, el corte anterior debe pertenecer a una imagen en un conjunto de imágenes de referencia (RPS), o una imagen en uno de los siguientes subconjuntos del RPS: RefPicSetStCurrBefore, RefPicSetStCurrAfter y RefPicSetLtCurr.
De acuerdo con algunas implementaciones de las técnicas de inicialización de contexto de esta divulgación, si todas las imágenes codificadas después de una imagen intra codificada en orden de visualización no tienen los mismos tipos de corte y los mismos parámetros de cuantificación inicializados, entonces puede desactivarse la herencia de información de contexto. En este caso, se aplica el método de inicialización convencional, por ejemplo, la unidad de codificación por entropía 56 puede usar la tabla fija a partir de la que extraer información de estado de inicialización. De acuerdo con algunas implementaciones, la unidad de codificación por entropía 56 puede aplicar las técnicas de inicialización de contexto basadas en herencia de esta divulgación a modelos de contexto específicos y no a otros modelos de contexto. Además, o como alternativa, la posición del 'un bloque' puede ser diferente para diferentes modelos de contexto. Se apreciará que las diversas opciones de implementación enumeradas anteriormente pueden implementarse individualmente o en diversas combinaciones, de acuerdo con las técnicas de inicialización de contexto de esta divulgación.
En algunos ejemplos de las técnicas de inicialización de contexto de esta divulgación, si la unidad de codificación por entropía 56 determina que está activada cabac_init_present_flag, entonces la unidad de codificación por entropía 56 puede determinar que se incluye un corte en la 'imagen previamente codificada' que debe tener el mismo tipo que el corte actualmente codificado. Dicho de otra manera, en este ejemplo, si se activa cabac_init_present_flag, entonces la definición de una imagen previamente codificada depende de hacer coincidir los tipos de corte. Adicionalmente, desde un punto de vista de la decodificación, no se tiene en cuenta cabac_init_flag señalizada de acuerdo con esta implementación. En algunos casos, como alternativa, la unidad de codificación por entropía 56 puede modificar en primer lugar el tipo de corte del corte actual basándose en la bandera cabacinit y una selección de la 'imagen previamente codificada'.
Se describen a continuación detalles de ejemplo adicionales para las técnicas de inicialización de contexto de esta divulgación. De acuerdo con algunas implementaciones, la unidad de codificación por entropía 56 puede no aplicar las técnicas de inicialización de contexto basadas en herencia de esta divulgación con respecto a imágenes de acceso intra aleatorio (IRAP). Por ejemplo, la codificación por entropía 56 puede no implementar las técnicas de inicialización de contexto basadas en herencia con respecto a cualquiera de los tres tipos de tRAP, en concreto, imágenes de refresco de decodificación imagen (IDR), imágenes de acceso aleatorio limpio (CRA) e imágenes de acceso de enlace roto (BLA).
En un ejemplo de la inicialización de contexto basada en herencia basándose en información previamente codificada, la unidad de codificación por entropía 56 puede codificar una imagen con un corte. En este ejemplo, la unidad de codificación por entropía 56 puede aplicar una o más de las siguientes reglas para derivar los estados inicializados de los modelos de contexto. Una primera regla es que el corte de la imagen previamente codificada tiene un tipo de corte que es el mismo que el tipo de corte para el corte actualmente codificado. Como alternativa, o además, el parámetro de cuantificación (QP) de corte inicializado es el mismo que el QP de corte usado para codificar el corte actualmente codificado.
De acuerdo con algunos aspectos de esta divulgación, la unidad de codificación por entropía 56 puede heredar la información de inicialización de contexto del corte previamente codificado cuando se usan diferentes QP para el corte actual y el corte de predictor. En estos ejemplos, la unidad de codificación por entropía 56 puede aplicar un proceso de mapeo con respecto a estados de contexto antes de usar la información de inicialización de contexto para codificar el corte actual. Por ejemplo, la unidad de codificación por entropía 56 puede utilizar una o más de las funciones de inicialización (por ejemplo, una función de inicialización especificada en HEVC), así como los dos QP y el contexto para convertir un estado a otro estado. En algunos casos, la unidad de codificación por entropía 56 puede registrar información de estado (por ejemplo, los estados) después de codificar un bloque con una dirección predefinida en la imagen previamente codificada, y usar la información de estado registrada como la información de estado inicializada para el corte actualmente codificado.
En un ejemplo, 'un bloque" representa una unidad de codificación más grande (LCU). Por ejemplo, el tamaño de LCU (dimensionalidad) puede indicarse por 'NxN', la anchura de imagen por 'W, y la altura de imagen por 'H'. El número de LCU dentro de una fila de LCU puede indicarse por PicWInCtbsY, y es igual a la salida de la función de techo Techo( W N ). El número de filas de LCU en la imagen, indicado por PicHInCtbsY, es igual a la salida de la función de techo Techo( H N). Descrito de manera genérica, la función Techo (x) devuelve el número entero más pequeño mayor o igual que x. Adicionalmente, la anchura de la imagen, medida en unidades de LCU, y la altura de la imagen, medida en LCU, se representan, respectivamente, por los valores PicWInCtbsY y PicHInCtbsY obtenidos usando las funciones de techo anteriormente descritas. En un ejemplo, se define la dirección de la LCU de acuerdo con la siguiente ecuación:
TargetCUAddr = (PicWInCtbsY*PicHInCtbsY)/2 PicWInCtbsY/2
Adicionalmente, cuando TargetCUAddr es mayor o igual que el valor de (PicWInCtbsY* PicHInCtbsY), la unidad de codificación por entropía 56 puede resetear TargetCUAddr al valor de (PicWInCtbsY* PicHInCtbsY -1). Por ejemplo, TargetCUAddr puede ser igual o superar el valor anterior en casos donde PicHInCtbsY es igual a 1. Adicionalmente, el valor de (PicWInCtbsY* PicHInCtbsY -1 ) corresponde a la última LCU en una imagen.
En algunos casos, adicionalmente, la unidad de codificación por entropía 56 puede no aplicar las técnicas de inicialización de contexto basadas en reglas anteriormente descritas para la primera o más imágenes después de una nueva imagen intra codificada en orden de visualización. Un ejemplo donde la unidad de codificación por entropía 56 pueden no aplicar la inicialización de contexto basada en reglas es cuando la unidad de codificación por entropía 56 encuentra un nuevo tipo de corte o un nuevo QP (por ejemplo, el nuevo tipo de corte o nuevo QP ha aparecido) la primera vez. Por ejemplo, la unidad de codificación por entropía 56 puede mitigar o evitar potencialmente problemas relacionados con el acceso aleatorio. Se muestra un ejemplo de esta técnica en la Figura 9, en la que el orden de codificación (y, de esta manera, la decodificación) para las imágenes con valores de recuento de orden de imagen (POC) desde 28 a 35 es como sigue: 32, 28, ... 30, 29, 31, 40, 36, 34, 33, 35.
En términos de orden de visualización, la imagen con un valor de POC igual a 40 es la primera imagen que se decodifica después de la imagen I con un valor de POC igual a 32. Aunque la imagen con el valor de POC de 24 tiene el mismo QP que la imagen con POC igual a 40, y ambas comparten los mismos tipos de corte, la unidad de codificación por entropía 56 no puede predecir la imagen con valor de POC igual a 40 usando la información codificada de la imagen con POC igual a 24. De manera similar, la unidad de codificación por entropía 56 no puede predecir la imagen con POC igual a 33 usando la información codificada de la imagen con p Oc igual a 31. Sin embargo, la unidad de codificación por entropía 56 puede predecir la imagen con POC igual a 35 usando la información codificada de la imagen con POC igual a 33, puesto que ambas imágenes son posteriores (en orden de visualización) a la imagen i.
En casos donde está desactivada la predicción de la imagen previamente codificada, o, de lo contrario, no está disponible para la unidad de codificación por entropía 56, la unidad de codificación por entropía 56 puede aplicar las técnicas de inicialización de contexto como se definen en HEVC. Como se ha descrito anteriormente, el codificador de vídeo 20 de la Figura 4 representa un ejemplo de un codificador de vídeo que puede estar configurado para realizar cualquiera de las diversas técnicas de esta divulgación para CABAC mejorado, en solitario o en cualquier combinación. En algunos ejemplos, el codificador de vídeo 20 está configurado para seleccionar un modo de codificación para codificar una unidad de transformada. En algunos ejemplos, el codificador de vídeo 20 puede incluir, ser o ser parte de un dispositivo que incluye una cámara configurada para capturar al menos una porción de los datos de vídeo. En algunos ejemplos, el codificador de vídeo 20 puede incluir un dispositivo de memoria que está configurado para recibir los datos de vídeo capturados de la cámara.
La Figura 5 es un diagrama de bloques de una unidad de codificación por entropía 56 de ejemplo que puede estar configurada para realizar CABAC de acuerdo con las técnicas de esta divulgación. Se introduce un elemento de sintaxis 118 en la unidad de codificación por entropía 56. Si el elemento de sintaxis ya es un elemento de sintaxis de valor binario (por ejemplo, una bandera u otro elemento de sintaxis que únicamente tiene un valor de 0 y 1), puede omitirse la etapa de conversión a binario. Si el elemento de sintaxis es un elemento de sintaxis con valor no binario (por ejemplo, un elemento de sintaxis que puede tener valores distintos de 1 o 0), el elemento de sintaxis con valor no binario se convierte a binario por el conversor a binario 120. El conversor a binario 120 realiza un mapeo del elemento de sintaxis con valor no binario en una secuencia de decisiones binarias. Estas decisiones binarias a menudo se denominan "binarios". Por ejemplo, para niveles de coeficientes de transformada, el valor del nivel puede descomponerse en binarios sucesivos, indicando cada binario si el valor absoluto del nivel de coeficiente es mayor o no que algún valor. Por ejemplo, el binario 0 (en ocasiones denominado una bandera de significación) indica si el valor absoluto del nivel de coeficiente de transformada es mayor que 0 o no. El binario 1 indica si el valor absoluto del nivel de coeficiente de transformada es mayor que 1 o no, y así sucesivamente. Puede desarrollarse un mapeo único para cada elemento de sintaxis con valor no binario.
Cada binario producido por el conversor a binario 120 se alimenta al lado de la codificación binaria aritmética de la unidad de codificación por entropía 56. Es decir, para un conjunto predeterminado de elementos de sintaxis con valor no binario, se codifica cada tipo de binario (por ejemplo, binario 0) antes del siguiente tipo de binario (por ejemplo, el binario 1). La codificación puede realizarse en modo regular o en modo de desvío. En el modo de desvío, el motor de codificación de desvío 126 realiza la codificación aritmética usando un modelo de probabilidad fija, por ejemplo, usando codificación de Golomb-Rice o de Golomb exponencial. Se usa en general el modo de desvío para elementos de sintaxis más predecibles.
La codificación en el modo regular implica realizar CABAC. CABAC de modo regular es para codificar valores binarios donde es predecible la probabilidad de un valor de un binario dados los valores de binarios previamente codificados. La probabilidad de que un binario sea un LPS se determina por el modelador de contexto 122. El modelador de contexto 122 emite el valor de binario y el estado de probabilidad para el modelo de contexto (por ejemplo, el estado de probabilidad a, que incluye el valor del LPS y la probabilidad de que ocurra el LPS). El modelo de contexto puede ser un modelo de contexto inicial para una serie de binarios, o puede determinarse basándose en los valores codificados de binarios previamente codificados. Como se ha descrito anteriormente, el modelador de contexto 122 puede actualizar el estado basándose en si el binario recibido era o no el MPS o el LPS. Después de que se determina el modelo de contexto y el estado de probabilidad a por el modelador de contexto 122, el motor de codificación regular 124 realiza BAC en el valor de binario.
El modelador de contexto 122 puede implementar las técnicas de esta divulgación para realizar el modelado de contexto de una manera paralelizada. De acuerdo con diversos aspectos de esta divulgación, el modelador de contexto 122 puede realizar el modelado de contexto para el binario de orden i de un coeficiente de transformada usando los valores de los binarios de orden i de uno o más coeficientes de transformada previamente codificados. De esta manera, el modelado de contexto del binario de orden i para un coeficiente de transformada actual depende de los valores de los correspondientes binarios de orden i de uno o más coeficientes de transformada para los que el modelador de contexto 122 ya ha seleccionado el contexto.
Realizando el modelado de contexto para un binario de un coeficiente de transformada actual usando los valores de los binarios de orden i de la transformada previamente codificada, el modelador de contexto 122 puede implementar las técnicas de esta divulgación para proporcionar una o más mejoras potenciales sobre los dispositivos de codificación de CABAC existentes. Como un ejemplo de un beneficio de este tipo, el modelador de contexto 122 puede mejorar la paralelización de la operación de modelado de contexto implementando las técnicas de esta divulgación. Por ejemplo, el modelador de contexto 122 puede realizar modelado de contexto, en paralelo, para múltiples binarios de un coeficiente de transformada que se está codificando actualmente. Como un ejemplo, si el modelador de contexto 122 determina que están disponibles valores de binario que corresponden a múltiples binarios a partir del coeficiente o coeficientes de transformada previamente codificados, entonces el modelador de contexto 122 puede paralelizar al menos parcialmente las operaciones de modelado de contexto para los binarios del coeficiente de transformada que se está codificando actualmente.
El modelador de contexto 122 puede realizar el modelado de contexto paralelizado de esta divulgación de acuerdo con un esquema de codificación de múltiples pasadas. Más específicamente, un esquema de codificación de múltiples pasadas hace referencia a una técnica de codificación mediante la que la unidad de codificación por entropía 56 asigna hilos separados a cada binario particular (por ejemplo, el hilo 1 para el primer binario, el hilo 2 para el segundo binario y así sucesivamente). Por lo tanto, de acuerdo con la codificación de múltiples pasadas, todas las instancias de bin0 pueden codificarse en secuencia, independientemente de las instancias bin1 que se codifiquen en secuencia, ambas de las cuales se codifican independientemente de las instancias bin2 que se codifican en secuencia, etc. En algunos ejemplos, el modelador de contexto 122 puede realizar la codificación de múltiples pasadas con respecto a unidades de transformada de bloque único. Además, para binarios que se codifican de acuerdo con el modo regular, el modelador de contexto 122 puede realizar la selección de contexto en múltiples pasadas. Cada pasada puede pertenecer a un único binario correspondiente de todos los coeficientes de transformada. En otras palabras, durante cada pasada, el modelador de contexto 122 no utiliza información relacionada con las otras pasadas. Por ejemplo, el modelador de contexto 122 puede seleccionar el contexto para el primer binario de todos los coeficientes de transformada dentro de una unidad de transformada/CG en una primera pasada. En este ejemplo, en una segunda pasada, el modelador de contexto 122 puede seleccionar el contexto para el segundo binario de todos los coeficientes de transformada dentro de una unidad de transformada/CG, si fuera necesario, y así sucesivamente.
En un caso de uso de ejemplo, el modelador de contexto 122 puede realizar el modelado de contexto para el bin0 de un coeficiente de transformada actualmente codificado usando el valor de bin0 del coeficiente de transformada vecino previamente codificado, realizar modelado de contexto para bin1 de un coeficiente de transformada actualmente codificado usando el valor de bin1 del coeficiente de transformada vecino previamente codificado, y así sucesivamente. Usando cualquier valor de binario que esté disponible para el coeficiente de transformada previamente codificado, el modelador de contexto 122 puede realizar el modelado de contexto para múltiples binarios del coeficiente de transformada actualmente codificado en paralelo. En el escenario de caso de uso anteriormente descrito, si bin0 y bin1 están ambos disponibles a partir del coeficiente de transformada vecino previamente codificado, entonces el modelador de contexto 122 puede paralelizar el modelado de contexto de bin0 y bin1 para el coeficiente de transformada actualmente codificado. De esta manera, el modelador de contexto 122 puede implementar las técnicas de esta divulgación para realizar CABAC dentro de los principios de la codificación de múltiples pasadas como se describe en HEVC, mientras que mejora la selección de contexto para binarios de un coeficiente de transformada actual posibilitando y aprovechando potencialmente la paralelización de las operaciones de modelado de contexto.
Se apreciará que, el modelador de contexto 122 puede realizar, pero no necesariamente, todo el modelado de contexto de todos tales binarios en paralelo. Más específicamente, el modelador de contexto 122 puede realizar algunas porciones del modelado de contexto de múltiples binarios concurrentemente. De esta manera, el modelador de contexto 122 puede implementar las técnicas de esta divulgación para aprovechar la tecnología de procesamiento de múltiples núcleos y/o múltiples procesadores para mejorar las operaciones de modelado de contexto para un coeficiente de transformada actualmente codificado.
Codificando correspondientes binarios de diferentes coeficientes de transformada en una única pasada, el modelador de contexto 122 puede proporcionar una o más ventajas sobre técnicas de CABAC de múltiples pasadas existentes. Por ejemplo, codificando los correspondientes binarios (por ejemplo, el respectivo bin0) de múltiples coeficientes de transformada en una única pasada, el modelador de contexto 122 puede evitar la necesidad de almacenar y recuperar un nuevo modelo de contexto con frecuencia en las transiciones de binario. En su lugar, el modelador de contexto 122 puede usar un único modelo de contexto a través de una pasada dada, puesto que la pasada tiene como objetivo los correspondientes binarios (por ejemplo, el respectivo bin0) a través de múltiples coeficientes de transformada. De esta manera, el modelador de contexto 122 puede implementar las técnicas de selección de contexto paralelizadas de esta divulgación para mitigar o eliminar potencialmente retardos de tiempo y la rotación de recursos que surgen de la conmutación de contexto frecuente. En contraste, la codificación de múltiples pasadas existente requeriría operaciones de grabación y recuperación de modelo de contexto frecuentes, debido a la codificación de bin0, bin1, bin2, etc. para un primer coeficiente de transformada, y, a continuación, la codificación de bin0, bin1, bin2, etc., para un segundo coeficiente de transformada, y así sucesivamente.
Por ejemplo, el modelador de contexto 122 puede generar o acceder de otra manera a una o más plantillas predefinidas para usar las funcionalidades de modelado de contexto de binario de orden i descritas en el presente documento. Se ilustra un ejemplo no limitante de una plantilla predefinida que puede usar el modelador de contexto 122 para modelado de contexto de un binario de orden i de coeficiente de transformada actualmente codificado en la Figura 10. Una plantilla predefinida, tal como la plantilla local 140 de la Figura 10 define un orden de exploración diagonal para un bloque de transformada de 8x8, donde 'L' indica la última posición de exploración significativa, 'x' indica la posición de exploración actual, y "x" indica los vecinos cubiertos por la plantilla local 140. Con respecto a xi, el valor de "i" se encuentra en el intervalo de cero a 4, y la restricción de rango se expresa como i e [0,4]. De acuerdo con uno o más aspectos de esta divulgación, el modelador de contexto 122 puede usar los binarios de orden i de los coeficientes de transformada ubicados en la plantilla local 140 para el modelado de contexto del correspondiente binario de orden i de un coeficiente de transformada que se está codificando actualmente. De acuerdo con algunas implementaciones, el modelador de contexto 122 puede usar múltiples plantillas para realizar el modelado de contexto de binario paralelizado de esta divulgación. En un ejemplo, el tamaño y/o la forma de plantilla depende de uno o más de los siguientes criterios: (i) el tamaño de unidades de transformada; (ii) modos; o (iii) la posición de los coeficientes de transformada actuales dentro de la unidad de transformada o el grupo de coeficientes (CG) actuales.
Usando una o más plantillas predefinidas para atravesar una TU previamente codificada para valores de binario, el modelador de contexto 122 puede implementar las técnicas de esta divulgación para proporcionar una o más mejoras sobre la tecnología de CABAC existente. Por ejemplo, usando una plantilla transversal de TU, tal como la plantilla local 140 de la Figura 10, el modelador de contexto 122 puede evitar la necesidad de determinar por separado un esquema transversal con respecto a diferentes pasadas de codificación. Por lo tanto, implementando las técnicas de selección de contexto paralelizado basadas en plantilla de esta divulgación, el modelador de contexto 122 puede aumentar el rendimiento con respecto a la codificación de binarios, mientras que mantiene una precisión de codificación.
De acuerdo con otra implementación de ejemplo, el modelador de contexto 122 puede aplicar únicamente las técnicas de modelado de contexto paralelizado de esta divulgación a los primeros 'K' binarios del coeficiente de transformada actualmente codificado, donde 'K' es menor que M, y donde 'M' indica el límite superior de los índices de binario disponibles. El modelador de contexto 122 puede codificar los restantes (M+1-K) binarios que se codifican usando otra técnica de modelado de contexto, o de acuerdo con el modo de desvío.
De acuerdo con otra implementación de ejemplo, el modelador de contexto 122 puede definir el universo de coeficientes de transformada previamente codificados como los 'N' coeficientes de transformada consecutivos en el orden de codificación dentro de la unidad de transformada actual o CG antes de que se codifique actualmente el coeficiente de transformada. Como alternativa, el modelador de contexto 122 puede determinar N para que sea una variable. En un ejemplo, el modelador de contexto 122 puede determinar el valor de N dependiendo de la posición relativa del coeficiente de transformada actualmente codificado en la unidad de transformada actual. En otro ejemplo, el modelador de contexto 122 puede determinar el valor de N dependiendo del tamaño de la unidad de transformada.
En otra implementación, el modelador de contexto 122 puede definir el universo de coeficientes de transformada previamente codificados como aquellos coeficientes de transformada situados en las cercanías de la posición actual dentro de la unidad de transformada actual o CG. En un ejemplo, las cercanías de la posición actual están restringidas a aquellas posiciones directamente adyacentes a la posición actual, o posiciones directamente adyacentes a o separadas de la posición actual. En otro ejemplo, las cercanías pueden incluir también aquellas posiciones, pero ampliarse para incluir posiciones en una o más unidades de transformada vecinas espaciales.
De acuerdo con diversos aspectos de esta divulgación, el modelador de contexto 122 puede definir el índice de contexto de un binario como una función de valores asociados con uno o más coeficientes de transformada previamente codificados. Por ejemplo, el modelador de contexto 122 puede usar una función que produce la suma de todos los valores de binario de orden i de los coeficientes de transformada previamente codificados. Más específicamente, en este ejemplo, el modelador de contexto 122 puede realizar una suma de los valores de los valores de binario de orden i disponibles de todos los coeficientes de transformada previamente codificados de la TU/CG. A su vez, el modelador de contexto 122 puede usar la suma resultante como el índice de contexto (CtIdx) durante el modelado de contexto para el binario de orden i del coeficiente de transformada actualmente codificado.
De acuerdo con algunos aspectos de esta divulgación, el modelador de contexto 122 puede mantener la regla de derivación de índice de contexto sin cambiar para la misma pasada en diferentes tamaños de unidades de transformada. Sin embargo, el modelador de contexto 122 puede aplicar una compensación al índice de contexto para realizar modelado de contexto para el binario actualmente codificado. Por ejemplo, el modelador de contexto 122 puede determinar que dos tamaños de transformada diferentes tienen dos conjuntos de modelos de contexto. A su vez, el modelador de contexto 122 puede definir la compensación como el número de modelos de contexto en un conjunto de este tipo. Por ejemplo, si el modelador de contexto 122 determina que el tamaño de TU es menor que un cuadrado de dimensiones predefinidas MxM, entonces el modelador de contexto 122 puede determinar que cada tamaño de TU de la TU de este tipo (menor que MxM) tiene su propio respectivo conjunto de modelos de contexto. A la inversa, la unidad de codificación por entropía 56 puede determinar que todas las TU con tamaños iguales o mayores que MxM comparten el mismo conjunto de modelos de contexto.
En diversos escenarios de caso de uso, el modelador de contexto 122 puede establecer el valor de M en 16. Más específicamente, en estos ejemplos, si el modelador de contexto 122 determina que el tamaño de la TU actualmente codificada es menor que un cuadrado de 16x16, entonces el modelador de contexto 122 puede determinar que la TU actualmente codificada está asociada con un conjunto de modelos de contexto que corresponde al tamaño particular de la TU. A la inversa, si la unidad de codificación por entropía determina que la TU actualmente codificada tiene un tamaño que es mayor o igual que 16x16, entonces el modelador de contexto 122 puede determinar que la TU actualmente codificada comparte el mismo conjunto de modelos de contexto con todas las demás TU que tienen un tamaño mayor o igual que 16x16. En algunos ejemplos, el modelador de contexto 122 puede aplicar la selección de contexto basada en tamaño de TU únicamente a bloques de luma.
De acuerdo con algunos aspectos de esta divulgación, el modelador de contexto 122 puede determinar el tamaño de grupo de coeficientes (CG) basándose en el tamaño de transformada. En otras palabras, de acuerdo con estos aspectos, el tamaño de CG depende del tamaño de transformada. Como alternativa, o además, el modelador de contexto 122 puede determinar el tamaño de CG basándose en el modo de codificación. En estos ejemplos, el modelador de contexto 122 puede determinar el tamaño de CG como que es dependiente de uno o ambos del tamaño de transformada y/o el modo de codificación. Como alternativa, o además, el modelador de contexto 122 puede determinar el tamaño de CG basándose en una matriz de transformada.
De acuerdo con algunos aspectos de esta divulgación, el modelador de contexto 122 puede aplicar también las técnicas de modelado de contexto paralelizado a los bloques que están codificados usando el modo de desvío de transformada (también denominado como "modo de salto de transformada"). El modo de desvío de transformada hace referencia a un modo de codificación de acuerdo con el que el codificador de vídeo 20 puede omitir las operaciones de transformada y cuantificación de la codificación, para proporcionar una salida de codificación sin pérdidas. Por lo tanto, de acuerdo con ciertos aspectos de esta divulgación, el modelador de contexto 122 puede ampliar las técnicas de selección de contexto paralelizadas para proporcionar las ventajas resultantes potenciales en casos de codificación sin pérdidas.
Volviendo a la Figura 4, en algunos casos, la unidad de codificación por entropía 56 u otra unidad del codificador de vídeo 20 pueden estar configuradas para realizar otras funciones de codificación, además de codificación por entropía. Por ejemplo, la unidad de codificación por entropía 56 puede estar configurada para determinar valores de patrón de bloque codificado (CBP) para las CU y las PU. También, en algunos casos, la unidad de codificación por entropía 56 puede realizar codificación por longitud de serie de los coeficientes. Además, la unidad de codificación por entropía 56, u otras unidades de procesamiento, también pueden codificar otros datos, tales como los valores de una matriz de cuantificación.
Como se ha analizado anteriormente, la unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de los píxeles, por ejemplo, para su uso posterior como un bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de uno de los fotogramas de la memoria de imagen de referencia 64. La unidad de compensación de movimiento 44 puede aplicar también uno o más filtros de interpolación al bloque residual objetivo para calcular valores de píxel sub-enteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual objetivo al bloque de predicción de movimiento compensado producido por la unidad de compensación de movimiento 44 para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria de imagen de referencia 64. El bloque de vídeo reconstruido puede usarse por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para inter codificar un bloque en un fotograma de vídeo posterior.
La Figura 6 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo 30 que puede implementar las técnicas para codificar datos de acuerdo con un diseño de CABAC mejorado. En el ejemplo de la Figura 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 70, la unidad de compensación de movimiento 72, la unidad de intra predicción 74, la unidad de cuantificación inversa 76, la unidad de transformación inversa 78, la memoria de imagen de referencia 82 y el sumador 80. El decodificador de vídeo 30 puede realizar, en algunos ejemplos, una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 (Figura 4). La unidad de compensación de movimiento 72 puede generar datos de predicción basándose en vectores de movimiento recibidos de la unidad de decodificación por entropía 70, mientras que la unidad de intra predicción 74 puede generar datos de predicción basándose en los indicadores de modo de intra predicción recibidos de la unidad de decodificación por entropía 70.
Durante el proceso de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un corte de vídeo codificado y elementos de sintaxis asociados del codificador de vídeo 20. La unidad de decodificación por entropía 70 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intra predicción y otros elementos de sintaxis. En algunos ejemplos, la unidad de decodificación por entropía 70 puede realizar CABAc y/o CABAC mejorada de acuerdo con las técnicas de esta divulgación. La unidad de decodificación por entropía 70 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de compensación de movimiento 72. El decodificador de vídeo 30 puede recibir los elementos de sintaxis en el nivel de corte de vídeo y/o en el nivel de bloque de vídeo.
Cuando se codifica el corte de vídeo como un corte intra codificado (I), la unidad de intra predicción 74 puede generar datos de predicción para un bloque de vídeo del corte de vídeo actual basándose en un modo de intra predicción señalizado y datos de los bloques previamente decodificados del fotograma o imagen actual cuando se codifica el fotograma de vídeo como un corte inter codificado (es decir, B, P o GPB), la unidad de compensación de movimiento 72 produce bloques predictivos para un bloque de vídeo del corte de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación por entropía 70. Los bloques predictivos pueden producirse de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede reconstruir las listas de fotogramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción por defecto basándose en imágenes de referencia almacenadas en la memoria de imagen de referencia 82. La unidad de compensación de movimiento 72 determina información de predicción para un bloque de vídeo del corte de vídeo actual analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad de compensación de movimiento 72 usa alguno de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra- o inter- predicción) usado para codificar los bloques de vídeo del corte de vídeo, un tipo de corte de inter predicción (por ejemplo, corte B o corte P o corte GPB), información de construcción para una o más de las listas de imágenes de referencia para el corte, vectores de movimiento para cada bloque de vídeo inter codificado del corte, estado de inter predicción para cada bloque de vídeo inter codificado del corte, y otra información para decodificar los bloques de vídeo en el corte de vídeo actual.
La unidad de compensación de movimiento 72 puede realizar también interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como se usan por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles sub-enteros de los bloques de referencia. En este caso, la unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 76 cuantifica a la inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 70. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación QPy calculado por el decodificador de vídeo 30 para cada bloque de vídeo en el corte de vídeo para determinar un grado de cuantificación y, análogamente, un grado de cuantificación inversa que debe aplicarse.
La unidad de transformada inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de entero inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de los píxeles.
Después de que la unidad de compensación de movimiento 72 genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis, el decodificador de vídeo 30 forma un bloque de vídeo decodificado sumando los bloques residuales de la unidad 78 de transformada inversa con los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 72. El sumador 80 representa el componente o componentes que realizan esta operación de suma. Si se desea, puede aplicarse también un filtro de desbloqueo para filtrar los bloques decodificados para eliminar artefactos de bloqueo. Pueden usarse también otros filtros de bucle (en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxel, o mejorar de otra manera la calidad de vídeo. Los bloques de vídeo decodificados en un fotograma o imagen dados se almacenan a continuación en la memoria de imagen de referencia 82, que almacena imágenes de referencia usadas para compensación de movimiento posterior. La memoria de imagen de referencia también 82 almacena vídeo decodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la Figura 1.
El decodificador de vídeo 30 de la Figura 6 representa un ejemplo de un decodificador de vídeo que puede estar configurado para realizar cualquiera de las diversas técnicas de esta divulgación para CABAC mejorada, en solitario o en cualquier combinación. Por lo tanto, las técnicas anteriormente descritas pueden realizarse por el codificador de vídeo 20 (Figuras 1 y 4) y/o el decodificador de vídeo 30 (Figuras 1 y 5), ambos de los cuales pueden denominarse, en general, como un codificador de vídeo. Asimismo, la codificación/decodificación de vídeo se puede referir a la codificación de vídeo o a la decodificación de vídeo, según sea aplicable. Diversos componentes del decodificador de vídeo 30, tal como la unidad de decodificación por entropía 70, pueden implementar las técnicas de CABAC mejorada de esta divulgación para realizar el modelado de contexto. De acuerdo con diversos aspectos de esta divulgación, la unidad de decodificación por entropía 70 puede realizar el modelado de contexto para el binario de orden i de un coeficiente de transformada usando los valores de los binarios de orden i de uno o más coeficientes de transformada previamente decodificados. Dicho de otra manera, el modelado de contexto del binario de orden i para un coeficiente de transformada actual depende de los valores de los correspondientes binarios de orden i de uno o más coeficientes de transformada que ya ha decodificado la unidad de decodificación por entropía 70.
Realizando el modelado de contexto para un binario de un coeficiente de transformada actual usando los valores de los binarios de orden i de la transformada previamente decodificada, la unidad de decodificación por entropía 70 puede implementar las técnicas de esta divulgación para proporcionar una o más mejoras potenciales sobre los codificadores de CABAC existentes. Como un ejemplo de un beneficio de este tipo, la unidad de decodificación por entropía 70 puede mejorar la paralelización de la operación de modelado de contexto implementando las técnicas de esta divulgación. Más específicamente, la unidad de decodificación por entropía 70 puede realizar el modelado de contexto, en paralelo, para múltiples binarios de un coeficiente de transformada que se está decodificando actualmente. Por ejemplo, si la unidad de decodificación por entropía 70 determina que están disponibles valores de binario que corresponden a múltiples binarios a partir del coeficiente o coeficientes de transformada previamente decodificados, entonces la unidad de decodificación por entropía 70 puede paralelizar al menos parcialmente las operaciones de modelado de contexto para los binarios del coeficiente de transformada que se está decodificando actualmente.
La unidad de decodificación por entropía 70 puede realizar el modelado de contexto paralelizado de esta divulgación de acuerdo con un esquema de codificación de múltiples pasadas. Más específicamente, un esquema de codificación de múltiples pasadas hace referencia a una técnica de codificación mediante la que la unidad de decodificación por entropía 70 asigna hilos separados a cada binario particular (por ejemplo, el hilo 1 para el primer binario, el hilo 2 para el segundo binario y así sucesivamente). Por lo tanto, de acuerdo con la codificación de múltiples pasadas, todas las instancias de bin0 pueden decodificarse en secuencia, independientemente de las instancias bin1 que se decodifiquen en secuencia, ambas de las cuales se decodifican independientemente de las instancias bin2 que se decodifican en secuencia, etc. En algunos ejemplos, la unidad de decodificación por entropía 70 puede realizar la codificación de múltiples pasadas con respecto a unidades de transformada de bloque único. Además, para binarios que se decodifican de acuerdo con el modo regular, la unidad de decodificación por entropía 70 puede realizar varias pasadas de decodificación. Cada pasada puede pertenecer a un único binario correspondiente de todos los coeficientes de transformada. En otras palabras, durante cada pasada, la unidad de decodificación por entropía 70 no utiliza información relacionada con las otras pasadas. Por ejemplo, la unidad de decodificación por entropía 70 puede decodificar el primer binario (si fuera necesario) de todos los coeficientes de transformada dentro de una unidad de transformada/CG en una primera pasada. En este ejemplo, en una segunda pasada, la unidad de decodificación por entropía 70 puede decodificar el segundo binario de todos los coeficientes de transformada dentro de una unidad de transformada/CG, si fuera necesario, y así sucesivamente.
En un caso de uso de ejemplo, la unidad de decodificación por entropía 70 puede realizar el modelado de contexto para el bin0 de un coeficiente de transformada actualmente codificado usando el valor de bin0 del coeficiente de transformada vecino previamente codificado, realizar modelado de contexto para bin1 de un coeficiente de transformada actualmente codificado usando el valor de bin1 del coeficiente de transformada vecino previamente codificado, y así sucesivamente. Usando cualquier valor de binario que esté disponible para el coeficiente de transformada previamente codificado, la unidad de decodificación por entropía 70 puede realizar el modelado de contexto para múltiples binarios del coeficiente de transformada actualmente codificado en paralelo. En el escenario de caso de uso anteriormente descrito, si bin0 y bin1 están ambos disponibles a partir del coeficiente de transformada vecino previamente codificado, entonces la unidad de decodificación por entropía 70 puede paralelizar el modelado de contexto de bin0 y bin1 para el coeficiente de transformada actualmente codificado. De esta manera, la unidad de decodificación por entropía 70 puede implementar las técnicas de esta divulgación para realizar CABAC dentro de los principios de la codificación de múltiples pasadas como se describe en HEVC, mientras que mejora la selección de contexto para binarios de un coeficiente de transformada actual posibilitando y aprovechando potencialmente la paralelización de las operaciones de modelado de contexto.
Se apreciará que, la unidad de decodificación por entropía 70 puede realizar, pero no necesariamente, todo el modelado de contexto de todos tales binarios en paralelo. Más específicamente, la unidad de decodificación por entropía 70 puede realizar algunas porciones del modelado de contexto de múltiples binarios concurrentemente. De esta manera, la unidad de decodificación por entropía 70 puede implementar las técnicas de esta divulgación para aprovechar la tecnología de procesamiento de múltiples núcleos y/o múltiples procesadores para mejorar las operaciones de modelado de contexto para un coeficiente de transformada actualmente codificado.
Decodificando correspondientes binarios de diferentes coeficientes de transformada en una única pasada, la unidad de decodificación por entropía 70 puede proporcionar una o más ventajas sobre técnicas de CABAC de múltiples pasadas existentes. Por ejemplo, decodificando los correspondientes binarios (por ejemplo, el respectivo bin0) de múltiples coeficientes de transformada en una única pasada, la unidad de decodificación por entropía 70 puede evitar la necesidad de almacenar y recuperar un nuevo modelo de contexto con frecuencia en las transiciones de binario. En su lugar, la unidad de decodificación por entropía 70 puede usar un único modelo de contexto a través de una pasada dada, puesto que la pasada tiene como objetivo los correspondientes binarios (por ejemplo, el respectivo bin0) a través de múltiples coeficientes de transformada. De esta manera, la unidad de decodificación por entropía 70 puede implementar las técnicas de selección de contexto paralelizadas de esta divulgación para mitigar o eliminar potencialmente retardos de tiempo y la rotación de recursos que surgen de la conmutación de contexto frecuente. En contraste, la codificación de múltiples pasadas existente requeriría operaciones de grabación y recuperación de modelo de contexto frecuentes, debido a la decodificación de bin0, bin 1, bin2, etc. para un primer coeficiente de transformada, y a continuación la decodificación de bin0, bin1, bin2, etc., para un segundo coeficiente de transformada, y así sucesivamente.
Por ejemplo, la unidad de decodificación por entropía 70 puede generar o acceder de otra manera a una o más plantillas predefinidas para usar las funcionalidades de modelado de contexto de binario de orden i descritas en el presente documento. Se ilustra un ejemplo no limitante de una plantilla predefinida que puede usar la unidad de decodificación por entropía 70 para modelado de contexto de un binario de orden i de coeficiente de transformada actualmente codificado en la Figura 10. Una plantilla predefinida, tal como la plantilla local 140 de la Figura 10 define un orden de exploración diagonal para un bloque de transformada de 8x8, donde 'L' indica la última posición de exploración significativa, 'x' indica la posición de exploración actual, y "x" indica los vecinos cubiertos por la plantilla local 140. Con respecto a xi, el valor de "i" se encuentra en el intervalo de cero a 4, y la restricción de rango se expresa como i e [0,4]. De acuerdo con uno o más aspectos de esta divulgación, la unidad de decodificación por entropía 70 puede usar los binarios de orden i de los coeficientes de transformada ubicados en la plantilla local 140 para el modelado de contexto del correspondiente binario de orden i de un coeficiente de transformada que se está decodificando actualmente. De acuerdo con algunas implementaciones, la unidad de decodificación por entropía 70 puede usar múltiples plantillas para realizar el modelado de contexto de binario paralelizado de esta divulgación. En un ejemplo, el tamaño y/o la forma de plantilla depende de uno o más de los siguientes criterios: (i) el tamaño de unidades de transformada; (ii) modos; o (iii) la posición de los coeficientes de transformada actuales dentro de la unidad de transformada o el grupo de coeficientes (CG) actuales.
Usando una o más plantillas predefinidas para atravesar una TU previamente codificada para valores de binario, la unidad de decodificación por entropía 70 puede implementar las técnicas de esta divulgación para proporcionar una o más mejoras sobre la tecnología de CABAC existente. Por ejemplo, usando una plantilla transversal de TU, tal como la plantilla local 140 de la Figura 10, la unidad de decodificación por entropía 70 puede evitar la necesidad de determinar por separado un esquema transversal con respecto a diferentes pasadas de codificación. Por lo tanto, implementando las técnicas de selección de contexto paralelizado basadas en plantilla de esta divulgación, la unidad de decodificación por entropía 70 puede aumentar el rendimiento con respecto a la codificación de binarios, mientras que mantiene una precisión de codificación.
De acuerdo con otra implementación de ejemplo, la unidad de decodificación por entropía 70 puede aplicar únicamente las técnicas de modelado de contexto paralelizado de esta divulgación a los primeros 'K' binarios del coeficiente de transformada actualmente codificado, donde 'K' es menor que M, y donde 'M' indica el límite superior de los índices de binario disponibles. La unidad de decodificación por entropía 70 puede decodificar los restantes (M+1-K) binarios que se codifican usando otra técnica de modelado de contexto, o de acuerdo con el modo de desvío.
De acuerdo con otra implementación de ejemplo, la unidad de decodificación por entropía 70 puede definir el universo de coeficientes de transformada previamente codificados como los 'N' coeficientes de transformada consecutivos en el orden de decodificación dentro de la unidad de transformada actual o CG antes de que se decodifique actualmente el coeficiente de transformada. Como alternativa, la unidad de decodificación por entropía 70 puede determinar N para que sea una variable. En un ejemplo, la unidad de decodificación por entropía 70 puede determinar el valor de N dependiendo de la posición relativa del coeficiente de transformada actualmente decodificado en la unidad de transformada actual. En otro ejemplo, la unidad de decodificación por entropía 70 puede determinar el valor de N de manera que N depende del tamaño de unidad de transformada.
En otra implementación, la unidad de decodificación por entropía 70 puede definir el universo de coeficientes de transformada previamente decodificados como aquellos coeficientes de transformada situados en las cercanías de la posición actual dentro de la unidad de transformada actual o CG. En un ejemplo, las cercanías de la posición actual están restringidas a aquellas posiciones directamente adyacentes a la posición actual, o posiciones directamente adyacentes a o separadas de la posición actual. En otro ejemplo, las cercanías pueden incluir también aquellas posiciones, pero ampliarse para incluir posiciones en una o más unidades de transformada vecinas espaciales.
De acuerdo con diversos aspectos de esta divulgación, la unidad de decodificación por entropía 70 puede definir el índice de contexto de un binario como una función de valores asociados con uno o más coeficientes de transformada previamente codificados. Por ejemplo, la unidad de decodificación por entropía 70 puede usar una función que produce la suma de todos los valores de binario de orden i de los coeficientes de transformada previamente codificados. Más específicamente, en este ejemplo, la unidad de decodificación por entropía 70 puede realizar una suma de los valores de los valores de binario de orden i disponibles de todos los coeficientes de transformada previamente decodificados de la TU/CG. A su vez, la unidad de decodificación por entropía 70 puede usar la suma resultante como el índice de contexto (CtIdx) durante el modelado de contexto para el binario de orden i del coeficiente de transformada actualmente codificado. En otro ejemplo, la unidad de decodificación por entropía 70 puede definir un valor de corte. En este ejemplo, cuando la salida de la función supera el valor de corte predefinido, la unidad de decodificación por entropía 70 puede usar el mismo contexto con respecto al binario que se está codificando actualmente. En algunos ejemplos, la unidad de decodificación por entropía 70 puede determinar que el valor de corte está basado en (o que depende de) el índice binario/tamaño de unidad de transformada/modo de codificación/la posición de coeficiente de transformada dentro de una unidad de transformada.
En algunos ejemplos, la unidad de decodificación por entropía 70 puede decodificar los correspondientes binarios codificados en diferentes pasadas de manera que estos binarios comparten los mismos modelos de contexto. En un ejemplo, la unidad de decodificación por entropía 70 puede determinar que el método de derivación de índice de contexto es diferente, por ejemplo, la función para calcular el índice de contexto, para binarios en diferentes pasadas. De acuerdo con un ejemplo, la unidad de decodificación por entropía 70 puede determinar que el método de derivación de índice de contexto puede ser el mismo, por ejemplo, la función para calcular el índice de contexto, para binarios en diferentes pasadas.
De acuerdo con algunos aspectos de esta divulgación, la unidad de decodificación por entropía 70 puede mantener la regla de derivación de índice de contexto sin cambiar para la misma pasada en diferentes tamaños de unidades de transformada. Sin embargo, la unidad de decodificación por entropía 70 puede aplicar una compensación al índice de contexto para realizar modelado de contexto para el binario actualmente codificado. Por ejemplo, la unidad de decodificación por entropía 70 puede determinar que dos tamaños de transformada diferentes tienen dos conjuntos de modelos de contexto. A su vez, la unidad de decodificación por entropía 70 puede definir la compensación como el número de modelos de contexto en un conjunto de este tipo. Por ejemplo, si la unidad de decodificación por entropía 70 determina que el tamaño de TU es menor que un cuadrado de dimensiones predefinidas MxM, entonces la unidad de decodificación por entropía 70 puede determinar que cada tamaño de TU de la TU de este tipo (menor que MxM) tiene su propio respectivo conjunto de modelos de contexto. A la inversa, la unidad de decodificación por entropía 70 puede determinar que todas las TU con tamaños iguales o mayores que MxM comparten el mismo conjunto de modelos de contexto.
En diversos escenarios de caso de uso, la unidad de decodificación por entropía 70 puede establecer el valor de M en 16. Más específicamente, en estos ejemplos, si la unidad de decodificación por entropía 70 determina que el tamaño de la TU actualmente codificada es menor que un cuadrado de 16x16, entonces la unidad de decodificación por entropía 70 puede determinar que la TU actualmente codificada está asociada con un conjunto de modelos de contexto que corresponde al tamaño particular de la TU. A la inversa, si la unidad de decodificación por entropía 70 determina que la TU actualmente decodificada tiene un tamaño que es mayor o igual que 16x16, entonces la unidad de decodificación por entropía 70 puede determinar que la TU actualmente codificada comparte el mismo conjunto de modelos de contexto con todas las demás TU que tienen un tamaño mayor o igual que 16x16. En algunos ejemplos, la unidad de decodificación por entropía 70 puede aplicar la selección de contexto basada en tamaño de TU únicamente a bloques de luma.
De acuerdo con algunos ejemplos, el parámetro de Rice usado para codificar los binarios restantes depende del tamaño de la transformada. Como alternativa, o además, el parámetro de Rice puede depender del modo de codificación. En un ejemplo, en lugar de usar el código de Golomb-Rice para coeff_abs_level_remaining, la unidad de decodificación por entropía 70 puede usar otras técnicas de conversión a binario. Como alternativa, o además, puede aplicarse más de un método de conversión a binario para codificar el elemento de sintaxis coeff_abs_level_remaining. En un ejemplo, el método de conversión a binario (por ejemplo, parámetro de Rice) usado para codificar coeff_abs_level_remaining depende de los modos de codificación. Como alternativa, el método de conversión a binario (por ejemplo, parámetro de Rice) usado para codificar coeff_abs_level_remaining puede depender de la posición relativa dentro de una TU. Como alternativa, el método de conversión a binario (por ejemplo, parámetro de Rice) usado para codificar coeff_abs_level_remaining puede depender de la distancia desde el primer coeficiente de transformada codificado/decodificado en orden de exploración. En algunos casos, el método de conversión a binario (por ejemplo, parámetro de Rice) usado para codificar coeff_abs_level_remaining depende de la posición del grupo de codificación relativa a la unidad de transformada.
De acuerdo con algunos aspectos de esta divulgación, la unidad de decodificación por entropía 70 puede determinar el tamaño de grupo de coeficientes (CG) basándose en el tamaño de transformada. En otras palabras, de acuerdo con estos aspectos, el tamaño de CG depende del tamaño de transformada. Como alternativa, o además, la unidad de decodificación por entropía 70 puede determinar el tamaño de CG basándose en el modo de codificación. En estos ejemplos, la unidad de decodificación por entropía 70 puede determinar el tamaño de CG como que es dependiente de uno o ambos del tamaño de transformada y/o el modo de codificación. Como alternativa, o además, la unidad de decodificación por entropía 70 puede determinar el tamaño de CG basándose en una matriz de transformada.
De acuerdo con algunos aspectos de esta divulgación, la unidad de decodificación por entropía 70 puede aplicar también las técnicas de modelado de contexto paralelizado a los bloques que se codifican usando el modo de desvío de transformada (también denominado como "modo de salto de transformada"). El modo de desvío de transformada se refiere a un modo de codificación de acuerdo con el que el decodificador de vídeo 30 puede omitir las operaciones de transformada inversa y cuantificación inversa de decodificación, para procesar una porción codificada sin pérdidas de un flujo de bits de vídeo. Por lo tanto, de acuerdo con ciertos aspectos de esta divulgación, la unidad de decodificación por entropía 70 puede ampliar las técnicas de selección de contexto paralelizadas para proporcionar las ventajas resultantes potenciales en casos donde se codifica el flujo de bits de vídeo codificado recibido con pérdidas.
Se analizan en mayor detalle a continuación detalles de ejemplo de diversas técnicas de modelado de contexto de coeficiente de transformada de esta divulgación. Se describe a continuación un ejemplo de modelado de contexto de acuerdo con codificación de múltiples pasadas. De acuerdo con este ejemplo, la unidad de decodificación por entropía 70 puede aplicar los elementos de codificación y el orden de codificación (codificación de múltiples pasadas y basada en CG) como se expone en HEVC. Además, la unidad de decodificación por entropía 70 puede aplicar las técnicas de conversión a binario mientras mantiene las magnitudes de los coeficientes de transformada sin cambiar. Sin embargo, la unidad de decodificación por entropía 70 puede modificar el índice de contexto y el método de cálculo de parámetro de Rice para codificar magnitudes de los coeficientes de transformada.
El cálculo de índice de contexto para bin0 (bandera significativa) depender de la siguiente información: el número de coeficientes distintos de cero en la plantilla (es decir, magnitudes de coeficientes que son mayores que 0 ); la posición del coeficiente actual dentro de la TU actual; el tamaño de TU para el componente de luma; y los componentes de color. Con respecto a la dependencia de componente de color, se consideran luma y croma de manera separada. Adicionalmente, al considerar el tamaño de TU para el componente de luma, el cálculo de índice de contexto es independiente del tamaño de TU para luma. El tamaño de TU del componente de luma puede incluir tres conjuntos, en concreto, TU de 4x4, TU de 8x8 , TU de 16x16 y mayores.
Para bin1 y bin2 (Grt than 1, Grt than 2), el cálculo de índice de contexto depende de la siguiente información: el número de absLevels en la plantilla mayores que 1 (para bin 1) y mayores que 2 (para bin2); la posición del coeficiente actual dentro de la TU actual; y los componentes de color. El proceso de derivación del parámetro de Rice depende de la información de codificación de desvío, y del valor del elemento de sintaxis sum_absolute_levelMinus1.
En un ejemplo, la unidad de decodificación por entropía 70 puede definir la función sum_template(k) para devolver el número de coeficientes en una plantilla, de manera que las magnitudes de los coeficientes son mayores que k. Un ejemplo de la función sum_template(k) es como sigue:
sumjemplate(k) = y Sj (xl,k )
con
|x¡| > k
Figure imgf000034_0001
xl = 0 '
Adicionalmente, en este ejemplo, la unidad de decodificación por entropía 70 puede definir una función f(x, y, n, t) para manejar la información de posición y otra función 5k(u,v) para manejar la información de componente como sigue:
n x + y < t
f(x , y, n, t) 0 x y > t
Sk(u,v) u v = 0
0 v ^ 0
La Figura 10 representa un ejemplo de una plantilla (plantilla local 140) que puede usar la unidad de decodificación por entropía 70 con respecto a las técnicas de modelado de contexto descritas en el presente documento. El coeficiente de transformada actual se marca como 'X' y los cinco vecinos espaciales se marcan como 'Xi' (representando 'i' un número entero desde 0 a 4). Si se satisface una cualquiera de las siguientes condiciones, entonces la unidad de decodificación por entropía 70 puede marcar Xi como no disponible y no usarse en el proceso de derivación de índice de contexto:
• la posición de Xi y el coeficiente de transformada actual X no están ubicados en la misma unidad de transformada; o
• la posición de Xi está ubicada fuera de los límites horizontal o vertical de la imagen; o
• el coeficiente de transformada Xi no se ha codificado aún. En el caso de codificación de múltiples pasadas, cada vez que se codifican los binarios en la misma pasada de codificación, podrían usarse los binarios en el proceso de derivación de índice de contexto. Por lo tanto, desde una perspectiva de la decodificación, no es necesario decodificar completamente un coeficiente de transformada.
Como alternativa, la unidad de decodificación por entropía 70 puede aplicar una o más plantillas que pueden incluir la información desde una unidad de transformada vecina. En diversos ejemplos, la TU vecina puede ser una vecina espacial o una vecina temporal. De acuerdo con una o más de las técnicas de modelado de contexto descritas en el presente documento, pueden definirse los cálculos de índice de contexto como se describe en los siguientes párrafos.
Con respecto a bin0, la unidad de decodificación por entropía 70 puede derivar el índice de contexto como sigue:
c0 = mín(sum_template(0),5) f(x ,y , 6,2) Sk(f(x, y, 6,5), cldx) offset(cldx.width)
co = co offset(cldx.width)
donde
offset(v,w) =
íw == 4?0 (w == 8? NumberCtxOneset ■ NumberLumaCtxOneset *2 v = 0
r NumberLumaCtxOneset *3 v ^ 0
En un ejemplo, basándose en el rango de c0, un conjunto de contextos de luma puede incluir un número de modelos de contexto que equivale al valor de NumberLumaCtxOneset. Por ejemplo, el conjunto de contextos de luma puede incluir 18 modelos de contexto. Con respecto a diferentes tamaños de transformada (con la anchura de la transformada indicada por 'w') para codificar bin0s de luma, la unidad de decodificación por entropía 70 puede seleccionar un conjunto diferente para cada tamaño de transformada. Además, se separan los contextos de croma y luma para mejorar adicionalmente el rendimiento de la codificación. Para las entradas de YCbCr, se representan los tres componentes de color, es decir, Y, Cb y Cr con índice de componente v igual a 0, 1 y 2, respectivamente.
En estos ejemplos, la unidad de decodificación por entropía 70 puede derivar el índice de contexto para bin1 como sigue:
c-l = mín(sumjtemplate (1),4) N
c1 = c1 8k(f(x,y,5,3),cldx) Sk(f(x ,y ,5,10), cldx)
Adicionalmente, en estos ejemplos, la unidad de decodificación por entropía 70 puede derivar el índice de contexto para bin2 como sigue:
c2 = mín (sumjtemplate (2),4) N
c2 = c2 + Sk(f(x,y,5,3),cldx) Sk(f(x,y,5,10),cldx)
En un ejemplo, N es igual a 0. En otro ejemplo, N es igual a 1. Como alternativa, o además, cuando N es igual a 1, la unidad de decodificación por entropía 70 puede codificar el primer bin1 o bin2 con el índice de contexto c1 o c2 igual a 0. En este ejemplo, la unidad de decodificación por entropía 70 puede codificar las otras instancias de bin1s y bin2s de acuerdo con las ecuaciones anteriores.
En un ejemplo, la unidad de decodificación por entropía 70 puede decodificar bin1 y bin2 con el mismo conjunto de modelos de contexto, pero con diferentes índices. Como alternativa, se codifican bin1 y bin2 con dos conjuntos de modelos de contexto y no existe dependencia entre ellos. Para los binarios restantes, la unidad de decodificación por entropía 70 puede aplicar el diseño expuesto en HEVC o el diseño en JCTVC-H0228. En diversos ejemplos, la unidad de decodificación por entropía 70 puede usar diferentes valores constantes al crear las diversas funciones anteriormente descritas.
La invención se refiere a las mejoras de inicialización de contexto. Las mejoras de inicialización de contexto de esta divulgación pueden implementarse independientemente de las técnicas de selección de contexto paralelizadas anteriormente descritas, o pueden implementarse en combinación con una cualquiera o más de las técnicas de selección de contexto paralelizadas anteriormente descritas. Una o más de las técnicas de inicialización de contexto de esta divulgación se refiere a la reutilización de información de contexto de información previamente decodificada. De acuerdo con la invención, la unidad de decodificación por entropía 70 hereda la información de contexto para un corte copiando un estado de un corte previamente decodificado, que pertenece a una imagen previamente decodificada.
Heredando la información de inicialización de contexto de un corte previamente decodificado, la unidad de decodificación por entropía 70 puede implementar las técnicas de esta divulgación para proporcionar precisión mejorada en comparación con las técnicas de inicialización de contexto de CABAC existentes. Por ejemplo, las técnicas de inicialización de contexto de CABAC existentes se basan en obtener información de estado de contexto a partir de una tabla. Sin embargo, la tabla se forma usando información estática. Sin embargo, de acuerdo con las técnicas de inicialización de contexto basadas en herencia de esta divulgación, la unidad de decodificación por entropía 70 puede extraer información de inicialización de contexto de un corte previamente decodificado que es del mismo tipo de corte y/o tiene los mismos parámetros de cuantificación (QP) que el corte que se está decodificando actualmente. De esta manera, la unidad de decodificación por entropía 70 puede implementar las técnicas de esta divulgación para mejorar la precisión de la información de inicialización de contexto usada para un corte actual.
De acuerdo con algunas implementaciones, la unidad de decodificación por entropía 70 puede identificar la LCU central de un corte previamente decodificado como el corte desde el que heredar la información de inicialización de contexto. En diversos ejemplos, la unidad de decodificación por entropía 70 puede heredar la inicialización de contexto para múltiples cortes de la imagen actual a partir de múltiples correspondientes cortes previamente decodificados. De acuerdo con la invención, la unidad de decodificación por entropía 70 usa el mismo bloque (en concreto, la LCU central) de la imagen previamente decodificada a partir de la que heredar la información de inicialización de contexto para todos los múltiples cortes decodificados de acuerdo con las técnicas de inicialización de contexto de esta divulgación. En otro ejemplo, la unidad de decodificación por entropía 70 puede heredar la información de inicialización de contexto para cada uno de los múltiples cortes desde la respectiva LCU central desde cada uno de los correspondientes cortes de la imagen previamente decodificada.
Por ejemplo, después de decodificar la LCU central de la imagen previamente decodificada, la unidad de decodificación por entropía 70 puede almacenar toda la información de estado con respecto a la inicialización de contexto de corte. A su vez, la unidad de decodificación por entropía 70 puede acceder o leer la información de estado copiada y usar la información de estado para inicializar el contexto para uno o más cortes de la imagen que se está decodificando actualmente. Usando la información de estado de una imagen previamente decodificada para realizar la inicialización de contexto para cortes de una imagen actual, la unidad de decodificación por entropía 70 puede reducir la dependencia de una tabla fija de información estática para el propósito de la inicialización de contexto. Por ejemplo, después de usar la tabla fija para inicializar el contexto para los cortes de una primera imagen, así como para cualquier imagen intra codificadas, la unidad de decodificación por entropía 70 puede realizar la inicialización de contexto para imágenes inter codificadas que se decodifican posteriormente. La unidad de decodificación por entropía 70 puede implementar las técnicas de inicialización de contexto basadas en herencia de esta divulgación con respecto a cortes P y/o cortes B.
Se describen a continuación detalles de ejemplo adicionales para las técnicas de inicialización de contexto de esta divulgación. La unidad de decodificación por entropía 70 puede estar configurada, adicionalmente o como alternativa, para realizar las técnicas de acuerdo con esta divulgación para la inicialización de contexto, como se analiza a continuación, la unidad de decodificación por entropía 70 puede implementar las técnicas de inicialización de contexto de esta divulgación para heredar la información de contexto después de codificar un bloque ubicado en una imagen previamente decodificada como la información de contexto inicializada para codificar el corte actual. La unidad de decodificación por entropía 70 puede aplicar las técnicas de inicialización de contexto basadas en herencia a cortes P y/o B. Adicionalmente, la posición del 'un bloque' al que se ha hecho referencia anteriormente está predefinida y fijada para una secuencia en su totalidad. Por ejemplo, el tamaño de la unidad de codificación más grande (LCU) se indica por "NxN", la anchura de la imagen se indica por "W", y la altura de la imagen se indica por "H". En este ejemplo, el número de LCU dentro de una fila de LCU, indicado por "PicWidthInCtbsY, es igual a la salida de una función techo, en concreto, Techo( W N). Adicionalmente, en este ejemplo, el número de filas de LCU, indicado por "PicHeightInCtbsY", es igual a Techo( H N ) donde la función de techo Techo(x) representa el número entero más pequeño mayor o igual que x.
De acuerdo con algunos ejemplos, se define la posición como la LCU central del primer corte en la imagen previamente decodificada. Suponiendo que numLCUinSlice representa el número de LCU en el primer corte, la posición se define como: TargetCUAddr = numLCUinSlice/2. En un ejemplo, la posición se define como: TargetCUAddr = (PicWidthInCtbsY* PicHeightInCtbsY)/2 PicWidthInCtbsY /2. Adicionalmente, cuando TargetCUAddr es mayor o igual que (PicWidthInCtbsY* PicHeightInCtbsY), (por ejemplo, PicHeightInCtbsY es igual a 1), TargetCUAddr se resetea a (PicWidthInCtbsY* PicHeightInCtbsY -1), que es correspondiente a la última LCU. En un ejemplo, la posición se define como la última LCU de la imagen previamente codificada o la LCU central dentro de un fotograma (es decir, PicWidthInCtbsY* PicHeightInCtbsY/2), o la última LCU de la fila de LCU central (es decir, PicWidthInCtbsY* (PicHeightInCtbsY/2) -1), o la última LCU de la fila de LCU de orden k (por ejemplo, k es igual a 1). De acuerdo con un ejemplo, se define la posición como la última LCU del primer corte en la imagen previamente decodificada. De acuerdo con algunas implementaciones de las técnicas de inicialización de contexto de esta divulgación, diferentes resoluciones pueden tener diferentes definiciones de la posición del bloque de codificación.
En algunos ejemplos, la unidad de decodificación por entropía 70 puede obtener la posición del 'un bloque' desde un conjunto de parámetros, tal como un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) que se señaliza en el flujo de bits de vídeo codificado. Los conjuntos de parámetros, tales como los SPS y/o los PPS, pueden señalizarse fuera de banda con respecto a cortes de la imagen actual. En algunos ejemplos, la posición del 'un bloque' puede señalizarse en un encabezado de corte. Puede señalizarse un encabezado de corte dentro de banda con respecto a un correspondiente corte. En estos y otros ejemplos, la indicación de la imagen previamente decodificada, tal como un índice de imagen de referencia, una correspondiente diferencia de recuento de orden de imagen (o POC delta), puede señalizarse en un conjunto de parámetros o encabezado de corte.
En algunos ejemplos, se define una 'imagen previamente codificada' como una imagen que se decodifica justo antes (inmediatamente) de la imagen actual. En algunos ejemplos, se define una 'imagen previamente codificada' como una imagen que es la última imagen decodificada antes de la imagen actual, de manera que un primer corte en la imagen anterior tiene el mismo tipo de corte al corte actual. De acuerdo con algunos ejemplos, se define una 'imagen previamente codificada' como la imagen que es la imagen decodificada antes de la imagen actual y el primer corte en la imagen anterior tiene los mismos parámetros de cuantificación inicializados al corte actual. De acuerdo con algunos ejemplos, se define una 'imagen previamente codificada' como una imagen que contiene un corte previamente codificado que tiene el mismo tipo de corte, o tanto el mismo tipo de corte como el parámetro o parámetros de cuantificación, o tanto el mismo tipo de corte como la capa temporal, como el corte actual y/o los mismos parámetros de cuantificación inicializados. En algunos ejemplos, se define una 'imagen previamente codificada' como una imagen que está presente en una memoria intermedia de imagen (tal como una memoria intermedia de imagen decodificada), y puede usarse para la imagen actual como una imagen de referencia. De acuerdo con estos ejemplos, como en la plataforma basada en HEVC, el corte anterior debe pertenecer a una imagen en un conjunto de imágenes de referencia (RPS), o una imagen en uno de los siguientes subconjuntos del RPS: RefPicSetStCurrBefore, RefPicSetStCurrAfter y RefPicSetLtCurr.
De acuerdo con algunas implementaciones de las técnicas de inicialización de contexto de esta divulgación, si todas las imágenes codificadas después de una imagen intra codificada en orden de visualización no tienen los mismos tipos de corte y los mismos parámetros de cuantificación inicializados, entonces puede desactivarse la herencia de información de contexto. En este caso, se aplica el método de inicialización convencional, por ejemplo, la unidad de decodificación por entropía 70 puede usar la tabla fija a partir de la que extraer información de estado de inicialización. De acuerdo con algunas implementaciones, la unidad de decodificación por entropía 70 puede aplicar las técnicas de inicialización de contexto basadas en herencia de esta divulgación a modelos de contexto específicos y no a otros modelos de contexto. Además, o como alternativa, la posición del 'un bloque' puede ser diferente para diferentes modelos de contexto. Se apreciará que las diversas opciones de implementación enumeradas anteriormente pueden implementarse individualmente o en diversas combinaciones, de acuerdo con las técnicas de inicialización de contexto de esta divulgación.
En algunos ejemplos de las técnicas de inicialización de contexto de esta divulgación, si la unidad de decodificación por entropía 70 determina que está activada cabac_init_present_flag, entonces la unidad de decodificación por entropía 70 puede determinar que se incluye un corte en la 'imagen previamente decodificada' que debe tener el mismo tipo que el corte actualmente codificado. Dicho de otra manera, en este ejemplo, si se activa cabac_init_present_flag, entonces la definición de una imagen previamente decodificada depende de hacer coincidir tipos de corte. Adicionalmente, desde un punto de vista de la decodificación, no se tiene en cuenta cabac_init_flag señalizada de acuerdo con esta implementación. En algunos casos, como alternativa, la unidad de decodificación por entropía 70 puede modificar en primer lugar el tipo de corte del corte actual basándose en cabac_init_flag y una selección de la 'imagen previamente decodificada'.
Se describen a continuación detalles de ejemplo adicionales para las técnicas de inicialización de contexto de esta divulgación. De acuerdo con algunas implementaciones, la unidad de decodificación por entropía 70 puede no aplicar las técnicas de inicialización de contexto basadas en herencia de esta divulgación con respecto a intra imágenes de acceso aleatorio (IRAP). Por ejemplo, la unidad de decodificación por entropía 70 puede no implementar las técnicas de inicialización de contexto basadas en herencia con respecto a cualquiera de los tres tipos de IRAP, en concreto, imágenes de refresco de decodificación imagen (IDR), imágenes de acceso aleatorio limpio (CRA) e imágenes de acceso de enlace roto (BLA).
En un ejemplo de la inicialización de contexto basada en herencia basándose en información previamente codificada, la unidad de decodificación por entropía 70 puede decodificar una imagen con un corte. En este ejemplo, la unidad de decodificación por entropía 70 puede aplicar una o más de las siguientes reglas para derivar los estados inicializados de los modelos de contexto. Una primera regla es que el corte de la imagen previamente decodificada tiene un tipo de corte que es el mismo que el tipo de corte para el corte actualmente decodificado. Como alternativa, o además, el parámetro de cuantificación (QP) de corte inicializado es el mismo que el QP de corte usado para codificar el corte actualmente decodificado. En algunos casos, la unidad de decodificación por entropía 70 puede registrar información de estado (por ejemplo, los estados) después de decodificar un bloque con una dirección predefinida en la imagen previamente decodificada, y usar la información de estado registrada como la información de estado inicializada para el corte actualmente decodificado.
En un ejemplo, 'un bloque' representa una unidad de codificación más grande (LCU). Por ejemplo, el tamaño de LCU (dimensionalidad) puede indicarse por 'NxN', la anchura de imagen por 'W, y la altura de imagen por 'H'. El número de LCU dentro de una fila de LCU puede indicarse por PicWInCtbsY, y es igual a la salida de la función de techo Techo( W N ). El número de filas de LCU en la imagen, indicado por PicHInCtbsY, es igual a la salida de la función de techo Techo( H N). Descrito de manera genérica, la función Techo (x) devuelve el número entero más pequeño mayor o igual que x. Adicionalmente, la anchura de la imagen, medida en unidades de LCU, y la altura de la imagen, medida en LCU, se representan, respectivamente, por los valores PicWInCtbsY y PicHInCtbsY obtenidos usando las funciones de techo anteriormente descritas. En un ejemplo, se define la dirección de la LCU de acuerdo con la siguiente ecuación:
TargetCUAddr = (PicWInCtbsY*PicHInCtbsY)/2 PicWInCtbsY/2
Adicionalmente, cuando TargetCUAddr es mayor o igual que el valor de (PicWInCtbsY* PicHInCtbsY), la unidad de decodificación por entropía 70 puede resetear TargetCUAddr al valor de (PicWInCtbsY* PicHInCtbsY -1). Por ejemplo, TargetCUAddr puede ser igual o superar el valor anterior en casos donde PicHInCtbsY es igual a 1. Adicionalmente, el valor de (PicWInCtbsY* PicHInCtbsY -1 ) corresponde a la última LCU en una imagen.
En algunos casos, adicionalmente, la unidad de decodificación por entropía 70 puede no aplicar las técnicas de inicialización de contexto basadas en reglas anteriormente descritas para la primera una o más imágenes después de una nueva imagen intra codificada en orden de visualización. Un ejemplo donde la unidad de decodificación por entropía 70 pueden no aplicar la inicialización de contexto basada en reglas en cuando la unidad de decodificación por entropía 70 encuentra un nuevo tipo de corte o un nuevo QP (por ejemplo, el nuevo tipo de corte o nuevo QP ha aparecido) la primera vez. Por ejemplo, la unidad de decodificación por entropía 70 puede mitigar o evitar potencialmente problemas relacionados con el acceso aleatorio. Se muestra un ejemplo de esta técnica en la Figura 9, en la que el orden de codificación para las imágenes con valores de recuento de orden de imagen (POC) desde 28 a 35 es como sigue: 32, 28, ... 30, 29, 31, 40, 36, 34, 33, 35.
En términos de orden de visualización, la imagen con un valor de POC igual a 40 es la primera imagen que se decodifica después de la imagen I con un valor de POC igual a 32. Aunque la imagen con el valor de POC de 24 tiene el mismo QP que la imagen con POC igual a 40, y ambas comparten los mismos tipos de corte, la unidad de decodificación por entropía 70 no puede predecir la imagen con valor de POC igual a 40 usando la información codificada de la imagen con POC igual a 24. De manera similar, la unidad de decodificación por entropía 70 no puede reconstruir la imagen con POC igual a 33 usando la información decodificada con respecto a la imagen con POC igual a 31. Sin embargo, la unidad de decodificación por entropía 70 puede reconstruir la imagen con POC igual a 35 usando la información codificada de la imagen con POC igual a 33, puesto que ambas imágenes son posteriores (en orden de visualización) a la imagen i.
En casos donde no se permite, se desactiva o no está disponible de otra manera la reconstrucción usando imágenes previamente decodificadas para la unidad de decodificación por entropía 70, la unidad de decodificación por entropía 70 puede aplicar las técnicas de inicialización de contexto como se definen en HEVC. Como se ha descrito anteriormente, el decodificador de vídeo 30 de la Figura 6 representa un ejemplo de un dispositivo de decodificación de vídeo que está configurado para realizar cualquiera de las diversas técnicas de esta divulgación para CABAC mejorado, en solitario o en cualquier combinación.
La Figura 7 es un diagrama de bloques de una unidad de decodificación por entropía 70 de ejemplo que puede estar configurada para realizar CABAC de acuerdo con las técnicas de esta divulgación. La unidad de decodificación por entropía 70 de la Figura 7 es una implementación de ejemplo de la unidad de decodificación por entropía 70 de la Figura 6. En diversos ejemplos, la unidad de decodificación por entropía 70 realiza CABAC de una manera inversa a la de la unidad de decodificación por entropía 70 descrita en la Figura 5. Los bits codificados del flujo de bits 218 se introducen en la unidad de decodificación por entropía 70. Los bits codificados se alimentan a cualquiera del modelador de contexto 220 o el motor de codificación de desvío 222 basándose en si se codificaron o no por entropía usando el modo de desvío o el modo regular. Si los bits codificados se codificaron en el modo de desvío, el motor de decodificación de desvío usará la decodificación de Golomb-Rice o de Golomb exponencial, por ejemplo, para recuperar los elementos de sintaxis con valor binario o binarios de los elementos de sintaxis no binarios.
Si los bits codificados en se codificaron en el modo regular, el modelador de contexto 220 puede determinar un modelo de probabilidad para los bits codificados y el motor de decodificación regular 224 puede decodificar los bits codificados para producir los binarios de elementos de sintaxis con valor no binario (o los elementos de sintaxis mismos si tienen valor binario). Después de que se determina el modelo de contexto y el estado de probabilidad a por el modelador de contexto 220, el motor de decodificación regular 224 realiza BAC en el valor de binario.
La Figura 5 es un diagrama de bloques de una unidad de decodificación por entropía 70 de ejemplo que puede estar configurada para realizar CABAC de acuerdo con las técnicas de esta divulgación. Se introduce un elemento de sintaxis 118 en la unidad de decodificación por entropía 70. Si el elemento de sintaxis ya es un elemento de sintaxis de valor binario (por ejemplo, una bandera u otro elemento de sintaxis que únicamente tiene un valor de 0 y 1 ), puede omitirse la etapa de conversión a binario. Si el elemento de sintaxis es un elemento de sintaxis con valor no binario (por ejemplo, un elemento de sintaxis que puede tener valores distintos de 1 o 0 ), el elemento de sintaxis con valor no binario se convierte a binario por el conversor a binario 120. El conversor a binario 120 realiza un mapeo del elemento de sintaxis con valor no binario en una secuencia de decisiones binarias. Estas decisiones binarias a menudo se denominan "binarios". Por ejemplo, para niveles de coeficientes de transformada, el valor del nivel puede descomponerse en binarios sucesivos, indicando cada binario si el valor absoluto del nivel de coeficiente es mayor o no que algún valor. Por ejemplo, el binario 0 (en ocasiones denominado una bandera de significación) indica si el valor absoluto del nivel de coeficiente de transformada es mayor que 0 o no. El binario 1 indica si el valor absoluto del nivel de coeficiente de transformada es mayor que 1 o no, y así sucesivamente. Puede desarrollarse un mapeo único para cada elemento de sintaxis con valor no binario.
Cada binario producido por el conversor a binario 120 se alimenta al lado de la codificación binaria aritmética de la unidad de codificación por entropía 56. Es decir, para un conjunto predeterminado de elementos de sintaxis con valor no binario, se codifica cada tipo de binario (por ejemplo, binario 0 ) antes del siguiente tipo de binario (por ejemplo, el binario 1). La codificación puede realizarse en modo regular o en modo de desvío. En el modo de desvío, el motor de codificación de desvío 126 realiza la codificación aritmética usando un modelo de probabilidad fija, por ejemplo, usando codificación de Golomb-Rice o de Golomb exponencial. Se usa en general el modo de desvío para elementos de sintaxis más predecibles.
La codificación en el modo regular implica realizar CABAC. CABAC de modo regular es para codificar valores binarios donde puede reconstruirse la probabilidad de un valor de un binario dados los valores de binarios previamente decodificados. La probabilidad de que un binario sea un LPS se determina por el modelador de contexto 220. El modelador de contexto 220 emite el valor de binario y el estado de probabilidad para el modelo de contexto (por ejemplo, el estado de probabilidad a, que incluye el valor del LPS y la probabilidad de que ocurra el LPS). El modelo de contexto puede ser un modelo de contexto inicial para una serie de binarios, o puede determinarse basándose en los valores de binarios previamente reconstruidos. Como se ha descrito anteriormente, el modelador de contexto 220 puede actualizar el estado basándose en si el binario recibido era o no el MPS o el LPS. Después de que se determina el modelo de contexto y el estado de probabilidad a por el modelador de contexto 220 , el motor de decodificación regular 224 realiza BAC en el valor de binario.
El modelador de contexto 220 puede implementar las técnicas de esta divulgación para realizar el modelado de contexto de una manera paralelizada. De acuerdo con diversos aspectos de esta divulgación, el modelador de contexto 220 puede realizar el modelado de contexto para el binario de orden i de un coeficiente de transformada usando los valores de los binarios de orden i de uno o más coeficientes de transformada previamente decodificados. De esta manera, el modelado de contexto del binario de orden i para un coeficiente de transformada actual depende de los valores de los correspondientes binarios de orden i de uno o más coeficientes de transformada para los que el modelador de contexto 220 ya ha seleccionado el contexto.
Realizando el modelado de contexto para un binario de un coeficiente de transformada actual usando los valores de los binarios de orden i de la transformada previamente decodificada, el modelador de contexto 220 puede implementar las técnicas de esta divulgación para proporcionar una o más mejoras potenciales sobre los dispositivos de codificación de CABAC existentes. Como un ejemplo de un beneficio de este tipo, el modelador de contexto 220 puede mejorar la paralelización de la operación de modelado de contexto implementando las técnicas de esta divulgación. Por ejemplo, el modelador de contexto 220 puede realizar modelado de contexto, en paralelo, para múltiples binarios de un coeficiente de transformada que se está decodificando actualmente. Como un ejemplo, si el modelador de contexto 220 determina que están disponibles valores de binario que corresponden a múltiples binarios a partir del coeficiente o coeficientes de transformada previamente decodificados, entonces el modelador de contexto 220 puede paralelizar al menos parcialmente las operaciones de modelado de contexto para los binarios del coeficiente de transformada que se está decodificando actualmente.
El modelador de contexto 220 puede realizar el modelado de contexto paralelizado de esta divulgación de acuerdo con un esquema de decodificación de múltiples pasadas. Más específicamente, un esquema de decodificación de múltiples pasadas hace referencia a una técnica de decodificación mediante la que la unidad de decodificación por entropía 70 d asigna hilos separados a cada binario particular (por ejemplo, el hilo 1 para el primer binario, el hilo 2 para el segundo binario y así sucesivamente). Por lo tanto, de acuerdo con la codificación de múltiples pasadas, todas las instancias de bin0 pueden decodificarse en secuencia, independientemente de las instancias bin1 que se decodifiquen en secuencia, ambas de las cuales se decodifican independientemente de las instancias bin2 que se decodifican en secuencia, etc. En algunos ejemplos, el modelador de contexto 220 puede realizar la decodificación de múltiples pasadas con respecto a unidades de transformada de bloque único. Además, para binarios que se decodifican de acuerdo con el modo regular, el modelador de contexto 220 puede realizar la selección de contexto en múltiples pasadas. Cada pasada puede pertenecer a un único correspondiente binario de todos los coeficientes de transformada, en otras palabras, durante cada pasada, el modelador de contexto 220 no utiliza información relacionada con las otras pasadas. Por ejemplo, el modelador de contexto 220 puede seleccionar el contexto para el primer binario de todos los coeficientes de transformada dentro de una unidad de transformada/CG en una primera pasada. En este ejemplo, en una segunda pasada, el modelador de contexto 220 puede seleccionar el contexto para el segundo binario de todos los coeficientes de transformada dentro de una unidad de transformada/CG, si fuera necesario, y así sucesivamente.
En un caso de uso de ejemplo, el modelador de contexto 220 puede realizar el modelado de contexto para el bin0 de un coeficiente de transformada actualmente codificado usando el valor de bin0 del coeficiente de transformada vecino previamente codificado, realizar modelado de contexto para bin I de un coeficiente de transformada actualmente codificado usando el valor de bin1 del coeficiente de transformada vecino previamente codificado, y así sucesivamente. Usando cualquier valor de binario que esté disponible para el coeficiente de transformada previamente codificado, el modelador de contexto 220 puede realizar el modelado de contexto para múltiples binarios del coeficiente de transformada actualmente codificado en paralelo. En el escenario de caso de uso anteriormente descrito, si bin0 y bin1 están ambos disponibles a partir del coeficiente de transformada vecino previamente codificado, entonces el modelador de contexto 220 puede paralelizar el modelado de contexto de bin0 y bin1 para el coeficiente de transformada actualmente codificado. De esta manera, el modelador de contexto 220 puede implementar las técnicas de esta divulgación para realizar CABAC dentro de los principios de la decodificación de múltiples pasadas como se describe en HEVC, mientras que mejora la selección de contexto para binarios de un coeficiente de transformada actual posibilitando y aprovechando potencialmente la paralelización de las operaciones de modelado de contexto.
Se apreciará que, el modelador de contexto 220 puede realizar, pero no necesariamente, todo el modelado de contexto de todos tales binarios en paralelo. Más específicamente, el modelador de contexto 220 puede realizar algunas porciones del modelado de contexto de múltiples binarios concurrentemente. De esta manera, el modelador de contexto 220 puede implementar las técnicas de esta divulgación para aprovechar la tecnología de procesamiento de múltiples núcleos y/o múltiples procesadores para mejorar las operaciones de modelado de contexto para un coeficiente de transformada actualmente codificado.
Decodificando correspondientes binarios de diferentes coeficientes de transformada en una única pasada, el modelador de contexto 220 puede proporcionar una o más ventajas sobre técnicas de CABAC de múltiples pasadas existentes. Por ejemplo, decodificando los correspondientes binarios (por ejemplo, el respectivo bin0) de múltiples coeficientes de transformada en una única pasada, el modelador de contexto 220 puede evitar la necesidad de almacenar y recuperar un nuevo modelo de contexto con frecuencia en las transiciones de binario. En su lugar, el modelador de contexto 220 puede usar un único modelo de contexto a través de una pasada dada, puesto que la pasada tiene como objetivo los correspondientes binarios (por ejemplo, el respectivo bin0 ) a través de múltiples coeficientes de transformada. De esta manera, el modelador de contexto 220 puede implementar las técnicas de selección de contexto paralelizadas de esta divulgación para mitigar o eliminar potencialmente retardos de tiempo y la rotación de recursos que surgen de la conmutación de contexto frecuente. En contraste, la codificación de múltiples pasadas existente requeriría operaciones de grabación y recuperación de modelo de contexto frecuentes, debido a la decodificación de bin0 , bin1 , bin2 , etc. para un primer coeficiente de transformada, y a continuación la decodificación de bin0 , bin1 , bin2 , etc., para un segundo coeficiente de transformada, y así sucesivamente.
Por ejemplo, el modelador de contexto 220 puede generar o acceder de otra manera a una o más plantillas predefinidas para usar las funcionalidades de modelado de contexto de binario de orden i descritas en el presente documento. Se ilustra un ejemplo no limitante de una plantilla predefinida que puede usar el modelador de contexto 220 para modelado de contexto de un binario de orden i de coeficiente de transformada actualmente codificado en la Figura 10. Una plantilla predefinida, tal como la plantilla local 140 de la Figura 10 define un orden de exploración diagonal para un bloque de transformada de 8x8 , donde 'L' indica la última posición de exploración significativa, 'x' indica la posición de exploración actual, y "x" indica los vecinos cubiertos por la plantilla local 140. Con respecto a xi, el valor de "i" se encuentra en el intervalo de cero a 4, y la restricción de rango se expresa como i e [0,4]. De acuerdo con uno o más aspectos de esta divulgación, el modelador de contexto 220 puede usar los binarios de orden i de los coeficientes de transformada ubicados en la plantilla local 140 para el modelado de contexto del correspondiente binario de orden i de un coeficiente de transformada que se está decodificando actualmente. De acuerdo con algunas implementaciones, el modelador de contexto 220 puede usar múltiples plantillas para realizar el modelado de contexto de binario paralelizado de esta divulgación. En un ejemplo, el tamaño y/o la forma de plantilla depende de uno o más de los siguientes criterios: (i) el tamaño de unidades de transformada; (ii) modos; o (iii) la posición de los coeficientes de transformada actuales dentro de la unidad de transformada o el grupo de coeficientes (CG) actuales.
Usando una o más plantillas predefinidas para atravesar una TU previamente codificada para valores de binario, el modelador de contexto 220 puede implementar las técnicas de esta divulgación para proporcionar una o más mejoras sobre la tecnología de CABAC existente. Por ejemplo, usando una plantilla transversal de TU, tal como la plantilla local 140 de la Figura 10, el modelador de contexto 220 puede evitar la necesidad de determinar por separado un esquema transversal con respecto a diferentes pasadas de decodificación. Por lo tanto, implementando las técnicas de selección de contexto paralelizado basadas en plantilla de esta divulgación, el modelador de contexto 220 puede aumentar el rendimiento con respecto a la decodificación de binarios, mientras que mantiene una precisión de imagen.
De acuerdo con otra implementación de ejemplo, el modelador de contexto 220 puede aplicar únicamente las técnicas de modelado de contexto paralelizado de esta divulgación a los primeros 'K' binarios del coeficiente de transformada actualmente codificado, donde 'K' es menor que M, y donde 'M' indica el límite superior de los índices de binario disponibles. El modelador de contexto 220 puede decodificar los restantes (M+1-K) binarios que se codifican usando otra técnica de modelado de contexto, o de acuerdo con el modo de desvío.
De acuerdo con otra implementación de ejemplo, el modelador de contexto 220 puede definir el universo de coeficientes de transformada previamente codificados como los 'N' coeficientes de transformada consecutivos en el orden de decodificación dentro de la unidad de transformada actual o CG antes de que se decodifique actualmente el coeficiente de transformada. Como alternativa, el modelador de contexto 220 puede determinar N para que sea una variable. En un ejemplo, el modelador de contexto 220 puede determinar el valor de N dependiendo de la posición relativa del coeficiente de transformada actualmente decodificado en la unidad de transformada actual. En otro ejemplo, el modelador de contexto 220 puede determinar el valor de N dependiendo del tamaño de la unidad de transformada.
En otra implementación, el modelador de contexto 220 puede definir el universo de coeficientes de transformada previamente decodificados como aquellos coeficientes de transformada situados en las cercanías de la posición actual dentro de la unidad de transformada actual o CG. En un ejemplo, las cercanías de la posición actual están restringidas a aquellas posiciones directamente adyacentes a la posición actual, o posiciones directamente adyacentes a o separadas de la posición actual. En otro ejemplo, las cercanías pueden incluir también aquellas posiciones, pero ampliarse para incluir posiciones en una o más unidades de transformada vecinas espaciales.
De acuerdo con diversos aspectos de esta divulgación, el modelador de contexto 220 puede definir el índice de contexto de un binario como una función de valores asociados con uno o más coeficientes de transformada previamente codificados. Por ejemplo, el modelador de contexto 220 puede usar una función que produce la suma de todos los valores de binario de orden i de los coeficientes de transformada previamente codificados. Más específicamente, en este ejemplo, el modelador de contexto 220 puede realizar una suma de los valores de los valores de binario de orden i disponibles de todos los coeficientes de transformada previamente decodificados de la TU/CG. A su vez, el modelador de contexto 220 puede usar la suma resultante como el índice de contexto (CtIdx) durante el modelado de contexto para el binario de orden i del coeficiente de transformada actualmente codificado.
De acuerdo con algunos aspectos de esta divulgación, el modelador de contexto 220 puede mantener la regla de derivación de índice de contexto sin cambiar para la misma pasada en diferentes tamaños de unidades de transformada. Sin embargo, el modelador de contexto 220 puede aplicar una compensación al índice de contexto para realizar modelado de contexto para el binario actualmente codificado. Por ejemplo, el modelador de contexto 220 puede determinar que dos tamaños de transformada diferentes tienen dos conjuntos de modelos de contexto. A su vez, el modelador de contexto 220 puede definir la compensación como el número de modelos de contexto en un conjunto de este tipo. Por ejemplo, si el modelador de contexto 220 determina que el tamaño de TU es menor que un cuadrado de dimensiones predefinidas MxM, entonces el modelador de contexto 220 puede determinar que cada tamaño de TU de la TU de este tipo (menor que MxM) tiene su propio respectivo conjunto de modelos de contexto. A la inversa, la unidad de decodificación por entropía 70 puede determinar que todas las TU con tamaños iguales o mayores que MxM comparten el mismo conjunto de modelos de contexto.
En diversos escenarios de caso de uso, el modelador de contexto 220 puede establecer el valor de M en 16. Más específicamente, en estos ejemplos, si el modelador de contexto 220 determina que el tamaño de la TU actualmente codificada es menor que un cuadrado de 16x16, entonces el modelador de contexto 220 puede determinar que la TU actualmente codificada está asociada con un conjunto de modelos de contexto que corresponde al tamaño particular de la TU. A la inversa, si la unidad de decodificación por entropía 70 determina que la TU actualmente codificada tiene un tamaño que es mayor o igual que 16x16, entonces el modelador de contexto 220 puede determinar que la TU actualmente codificada comparte el mismo conjunto de modelos de contexto con todas las demás TU que tienen un tamaño mayor o igual que 16x16. En algunos ejemplos, el modelador de contexto 220 puede aplicar la selección de contexto basada en tamaño de TU únicamente a bloques de luma.
De acuerdo con algunos aspectos de esta divulgación, el modelador de contexto 220 puede determinar el tamaño de grupo de coeficientes (CG) basándose en el tamaño de transformada. En otras palabras, de acuerdo con estos aspectos, el tamaño de CG depende del tamaño de transformada. Como alternativa, o además, el modelador de contexto 220 puede determinar el tamaño de CG basándose en el modo de codificación. En estos ejemplos, el modelador de contexto 220 puede determinar el tamaño de CG como que es dependiente de uno o ambos del tamaño de transformada y/o el modo de codificación. Como alternativa, o además, el modelador de contexto 220 puede determinar el tamaño de CG basándose en una matriz de transformada.
De acuerdo con algunos aspectos de esta divulgación, el modelador de contexto 220 puede aplicar también las técnicas de modelado de contexto paralelizado a los bloques que están decodificados usando el modo de desvío de transformada (también denominado como "modo de salto de transformada"). El modo de desvío de transformada se refiere a un modo de codificación de acuerdo con el que el decodificador de vídeo 30 puede omitir las operaciones de transformada inversa y cuantificación inversa de la decodificación, tal como en casos donde se codifica sin pérdidas el flujo de bits 218. Por lo tanto, de acuerdo con ciertos aspectos de esta divulgación, el modelador de contexto 220 puede ampliar las técnicas de selección de contexto paralelizadas para proporcionar las ventajas resultantes potenciales en casos donde se codifica con pérdidas el flujo de bits 218.
La Figura 8 es un diagrama de flujo que ilustra un proceso 150 de ejemplo para codificación binaria aritmética basada en tabla. Es decir, la Figura 8 ilustra el proceso de codificación binaria aritmética que incluye el proceso de actualización de la estimación de probabilidad (en recuadros sombreados grises para las etapas 158 y 160) para un único valor de binario (binVal) usando el modo de codificación regular. En particular, el proceso 150 de la Figura 8 ilustra un proceso de codificación binaria aritmética para un valor de binario dado binVal usando el modo de codificación regular. El estado interno del motor de codificación aritmética está caracterizado por dos cantidades: el rango de intervalo actual R y la base (punto terminal inferior) L del intervalo de código actual. Sin embargo, puede reducirse la precisión necesaria para almacenar estos registros en un motor de CABAC (tanto en el modo regular como en el de desvío) hasta 9 y 10 bits, respectivamente. Se realiza la codificación del valor binario dado binVal observada en un contexto con un índice de estado de probabilidad 8 y el valor de MPS (5%2) en una secuencia de cuatro etapas elementales como sigue.
El proceso 150 puede comenzar en la etapa 152, en la que el dispositivo de codificación de vídeo subdivide un intervalo actual de acuerdo con las estimaciones de probabilidad dadas. Este proceso de subdivisión de intervalo implica tres operaciones elementales como se muestra en la etapa 152 del proceso 150. En primer lugar, se aproxima el rango de intervalo actual R por un valor cuantificado Q(R) usando una equipartición de la totalidad del rango 28 < R < 29 en cuatro celdas. Pero, en lugar de usar los correspondientes valores de rango cuantificados representativos Q0, Q1, Q2, y Q3 explícitamente en el motor de CABAC, se direccionan únicamente por su índice de cuantificador p, que puede calcularse eficazmente por una combinación de una operación de desplazamiento y enmascaramiento de bits, es decir:
p = ( R » 6 ) & 3 (4,5)
A continuación, se usa este índice p y el índice de estado de probabilidad 8 como entradas en una tabla 2-D TabRangeLPS para determinar el rango de subintervalo relacionado con LPS (aproximado) Rlps, como se muestra en la Figura 8. En este punto, la tabla TabRangeLPS contiene todos los valores de producto precalculados de 64x4 para pa Qp para 0 < (8 >> 1 ) < 63 y 0 < p < 3 en precisión de 8 bits. Dado el rango de subintervalo dual para el MPS, se elige el subintervalo que corresponde al valor de binario dado binVal en el bloque de decisión 94 del proceso 150. Si binVal es igual al valor de MPS (ramal NO del bloque de decisión 154), el dispositivo de codificación de vídeo puede elegir el subintervalo inferior, de modo que L queda sin cambiar. De lo contrario (ramal SÍ del bloque de decisión 154), el dispositivo de codificación de vídeo puede seleccionar el subintervalo superior con rango igual a Rlps (156).
En el proceso 90 de las etapas 158 y 160, se realiza la actualización de los estados de probabilidad como se describe en ITU-T H.264, § 1.2.2.2 (ilustrado usando recuadros sombreados en gris). La etapa 162 consiste en la renormalización de los registros L y R (cuadro "RenormE" en la Figura 1). La etapa 164 representa el final del proceso 150.
La tabla 2-D TabRangeLPS se define como sigue:
TabRangeLPS[64][4] =
{
{ 128 , 176 , 208 , 240 }, { 128 , 167 , 197 , 227 }, { 128 , 158 , 187 , 216 }, { 123 , 150 , 178 , 205 }, { 116 , 142 , 169 , 195 }, { 111 , 135 , 160 , 185 }, { 105 , 128 , 152 , 175 }, { 100 , 122 , 144 , 166 }, { 95 , 116 , 137 , 158 }, { 90 , 110 , 130 , 150 }, { 85 , 104 , 123 , 142 } , { 81 , 99 , 117 , 135 }, { 77 , 94 , 111 , 128 }, { 73 , 89 , 105 , 122 }, { 69 , 85 , 100 , 116 }, { 66 , 80 , 95 , 110 },
{ 6 2 , 7 6 , 9 0 , 1 0 4 },
{ 5 9 , 7 2 , 8 6 , 9 9 },
{ 5 6 , 6 9 , 8 1 , 9 4 },
{ 5 3 , 6 5 , 7 7 , 8 9 },
{ 5 1 , 6 2 , 7 3 , 8 5 },
{ 4 8 , 5 9 , 6 9 , 8 0 },
{ 4 6 , 5 6 , 6 6 , 7 6 },
{ 4 3 , 5 3 , 6 3 , 7 2 },
{ 4 1 , 5 0 , 5 9 , 6 9 },
{ 3 9 , 4 8 , 5 6 , 6 5 },
{ 3 7 , 4 5 , 5 4 , 6 2 },
{ 3 5 , 4 3 , 5 1 , 5 9 },
{ 3 3 , 4 1 , 4 8 , 5 6 },
{ 3 2 , 3 9 , 4 6 , 5 3 },
{ 3 0 , 3 7 , 4 3 , 5 0 },
{ 2 9 , 3 5 , 4 1 , 4 8 },
{ 2 7 , 3 3 , 3 9 , 4 5 },
{ 2 6 , 3 1 , 3 7 , 4 3 },
{ 2 4 , 3 0 , 3 5 , 4 1 },
{ 2 3 , 2 8 , 3 3 , 3 9 },
{ 2 2 , 2 7 , 3 2 , 37 } ,
{ 2 1 , 2 6 , 3 0 , 3 5 },
{ 2 0 , 2 4 , 2 9 , 3 3 },
{ 1 9 , 2 3 , 2 7 , 3 1 },
{ 1 8 , 2 2 , 2 6 , 3 0 },
{ 1 7 , 2 1 , 2 5 , 2 8 } ,
{ 1 6 , 2 0 , 2 3 , 27 } ,
{ 1 5 , 1 9 , 2 2 , 2 5 },
{ 1 4 , 1 8 , 2 1 , 2 4 },
{ 1 4 , 1 7 , 2 0 , 2 3 },
{ 1 3 , 1 6 , 1 9 , 2 2 },
{ 1 2 , 1 5 , 1 8 , 2 1 },
{ 1 2 , 1 4 , 1 7 , 2 0 }, { 11 , 14 , 1 6 , 19 } ,
{ 11 , 13 , 1 5 , 18 } ,
{ 10 , 12 , 1 5 , 17 } ,
{ 10 , 12 , 14 , 1 6 } ,
{ 9 , 1 1 , 13 , 15 } ,
{ 9 , 1 1 , 12 , 14 } ,
{ 8 , 10 , 12 , 1 4 } ,
{ 8 , 9 , 11 , 13 } ,
{ 7 , 9 , 1 1 , 1 2 } ,
{ 7 , 9 , 1 0 , 1 2 } ,
{ 7 , 8 , 10 , 11 } ,
{ 6 , 8 , 9 , 1 1 } ,
{ 6 , 7 , 8 , 9 } ,
{ 2 , 2 , 2 , 2 }
El proceso de decodificación se describe en la sección 9.3.4.3.2.2 de la especificación HEVC.
La Figura 9 es un diagrama conceptual que ilustra un esquema de transformada basándose en una estructura de árbol cuádruple residual. Para adaptar las diversas características de los bloques residuales, se aplica una estructura de codificación de transformada usando el árbol cuádruple residual (RQT) en HEVC. Se describe a continuación la estructura de árbol cuádruple residual. Se describen detalles adicionales y están disponibles en www.hhi.fraunhofer.de/fields-of-competence/image-processing/researchgroups/ image-video-coding/hevc-highefficiency-video-coding/transform-coding-u sing-the-residual-quadtree-rqt.html
De acuerdo con la estructura de árbol cuádruple residual ilustrada en la Figura 9, cada imagen se divide en unidades de árbol de codificación (CTU). Las CTU de la imagen se codifican (por ejemplo, se codifican y/o decodifican) en orden de exploración por filas para una pieza o corte específicos. Una c Tu es un bloque cuadrado y representa la raíz de un árbol cuádruple o árbol de codificación. El tamaño de CTU puede variar de 8x8 a 64x64, expresándose la anchura y longitud en unidades de muestras de luminancia. La dimensionalidad de 64x64 se usa comúnmente por dispositivos de codificación compatibles con HEVC. Cada CTU puede dividirse adicionalmente en bloques cuadrados más pequeños denominados unidades de codificación (CU). Después de que la CTU se divide en las CU (en ocasiones de manera recursiva), cada CU se divide adicionalmente en unidades de predicción (PU) y unidades de transformada (TU). Las PU y CU también tienen un factor de forma cuadrado. La subdivisión de una CU en TU se lleva a cabo recursivamente basándose en un enfoque de árbol cuádruple. Por lo tanto, la señal residual de cada CU se codifica usando una estructura de árbol, en concreto, el árbol cuádruple residual (RQT). El RQT permite tamaños de TU (expresados como dimensionalidades cuadradas en unidades de muestras de luminancia) desde 4x4 hasta 32x32.
La Figura 9 muestra un ejemplo donde una CU incluye 10 TU. Las TU están etiquetadas con las letras a a j, y cada etiqueta de TU se ilustra dentro de la correspondiente subdivisión de bloque. Cada nodo del RQT es una unidad de transformada (TU). Las TU individuales se procesan en orden de recorrido de árbol de profundidad primero. Se ilustra el resultado del recorrido de árbol de profundidad primero con respecto a la Figura 9 en la Figura 9 de acuerdo con un orden alfabético. Más específicamente, la Figura 9 ilustra un ejemplo de una exploración en Z recursiva con atravesamiento de profundidad primero. El enfoque de árbol cuádruple ilustrado en la Figura 9 posibilita la adaptación de la transformada a características de espacio-frecuencia variables de la señal residual.
En muchos ejemplos, tamaños de bloque de transformada más grandes, que tienen soporte espacial más grande, proporcionan mejor resolución de frecuencia. Sin embargo, tamaños de bloque de transformada más pequeños, que tienen soporte espacial más pequeño, proporcionan mejor resolución espacial. Se selecciona la compensación entre las dos (resoluciones espaciales y de frecuencia), por medio de una decisión de modo de codificador. Por ejemplo, la decisión de modo de codificador puede estar basada en una técnica de optimización de tasa-distorsión (RD). La técnica de optimización de tasa-distorsión calcula una suma ponderada de bits de codificación y de distorsión de reconstrucción. Por ejemplo, la unidad de selección de modo 40 puede basar una decisión de selección de modo en el coste de tasa-distorsión para cada modo de codificación. En algunos ejemplos, el coste de tasa-distorsión para cada modo disponible puede correlacionarse con una estructura de división de r Qt específica asociada con cada modo de codificación. En un esquema de decisión basado en coste RD, la unidad de selección de modo puede seleccionar el modo de codificación con el coste de tasa-distorsión más pequeño (o mínimo) como el mejor modo disponible.
Se definen tres parámetros en el esquema de subdivisión de RQT. Los parámetros son: la profundidad máxima del árbol, el tamaño de transformada permitido mínimo y el tamaño de transformada permitido máximo. De acuerdo con algunos aspectos de HEVC, los tamaños de transformada mínimo y máximo puede variar dentro del rango de 4x4 a 32x32 muestras. El rango de 4x4 a 32x32 muestras corresponde a las transformadas de bloque soportadas analizadas anteriormente. La profundidad permitida máxima del RQT restringe o limita el número de TU que puede producir el esquema de subdivisión de RQT. Una profundidad máxima igual a cero significa que una CTU no puede dividirse más adicionalmente si cada TU incluida alcanza el tamaño de transformada permitido máximo, por ejemplo, 32x32.
Todos los parámetros analizados anteriormente interactúan (por ejemplo, se usan sinérgicamente), e influencian la estructura de RQT. Se describe a continuación un escenario de caso de uso en el que el tamaño de la CTU raíz es 64x64, la profundidad máxima es igual a cero y el tamaño de transformada máximo es igual a 32x32. En este caso, el dispositivo de codificación de vídeo necesitaría subdividir la CTU al menos una vez. Si no se subdivide la CTU, entonces el RQT produciría una TU de 64x64, lo que no está permitido, por el tercer parámetro. El codificador de vídeo 20 puede incluir los parámetros de RQT (que incluyen, pero sin limitación, la profundidad de RQT máxima y el tamaño de transformada mínimo y máximo) en el flujo de bits, en el nivel de conjunto de parámetros de secuencia (SPS). El codificador de vídeo 20 puede especificar y señalizar diferentes valores para la profundidad de RQT con respecto a las CU intra- e inter- codificadas. A su vez, el decodificador de vídeo 30 puede recuperar los parámetros de RQT del flujo de bits recibido, y realizar subdivisión de RQT usando las restricciones especificadas en los parámetros señalizados.
El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden aplicar la transformada de árbol cuádruple para tanto intra como inter bloques residuales. En muchos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden aplicar la transformada de DCT-II del mismo tamaño de la partición de árbol cuádruple residual que se aplica para un bloque residual. Sin embargo, si el bloque de árbol cuádruple residual actual es de 4x4 y se genera por intra predicción, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden aplicar la transformada DST-VII de 4x4 anteriormente descrita. En HEVC, no se adoptan transformadas de tamaño más grandes, por ejemplo, transformadas de 64x64, principalmente debido a sus beneficios limitados, y su relativamente alta complejidad para vídeos de resolución relativamente más pequeña.
La Figura 10 es un diagrama conceptual que representa una plantilla de ejemplo (plantilla local 140) que un dispositivo de codificación de vídeo puede usar con respecto a las técnicas de modelado de contexto descritas en el presente documento. El coeficiente de transformada actual se marca como 'X' y los cinco vecinos espaciales se marcan como 'Xi' (representando 'i' un número entero desde 0 a 4). Si se satisface una cualquiera de un conjunto de condiciones, entonces los dispositivos de codificación de vídeo pueden marcar Xi como no disponible y no usarse en el proceso de derivación de índice de contexto. Una primera condición en el conjunto de condiciones es que la posición de Xi y el coeficiente de transformada actual X no están ubicados en la misma unidad de transformada. Una segunda condición en el conjunto de condiciones es que la posición de Xi está ubicada fuera de los límites horizontales o verticales de la imagen. Una tercera condición en el conjunto de condiciones es que el coeficiente de transformada Xi no se ha codificado aún. En el caso de codificación de múltiples pasadas, cada vez que se codifican los binarios en la misma pasada de codificación, podrían usarse los binarios en el proceso de derivación de índice de contexto. Por lo tanto, desde una perspectiva de la decodificación, no es necesario decodificar completamente un coeficiente de transformada.
La Figura 11 es un diagrama conceptual que ilustra una exploración de coeficiente de ejemplo basándose en grupos de coeficientes. Independientemente del tamaño de TU, se codifica el residuo de la unidad de transformada con grupos de coeficientes (CG) no solapados, cada uno contiene los coeficientes de un bloque de 4x4 de una TU. Por ejemplo, una TU de 32x32 tiene en total 64 CG, y una TU de 16x16 tiene en total 16 CG. Los CG dentro de una TU pueden codificarse de acuerdo con un cierto orden de exploración predefinido. Cuando se codifica cada CG, se exploran los coeficientes dentro del CG actual y se codifican de acuerdo con un cierto orden de exploración predefinido para el bloque de 4x4. La Figura 11 ilustra la exploración de coeficiente para una TU de 8x8 que contiene 4 CG.
La tabla de elemento de sintaxis se define como sigue:
7.3.8.11 Sintaxis de codificación residual
Figure imgf000044_0001
continuación
Figure imgf000045_0001
continuación
Figure imgf000046_0001
______________________________________________________________________________________
Para cada componente de color, el codificador de vídeo 20 puede señalizar en primer lugar una bandera para indicar si la TU actual tiene al menos un coeficiente distinto de cero. Si hay al menos un coeficiente distinto de cero en la TU actual, a continuación, el codificador de vídeo 20 puede codificar explícitamente la posición del último coeficiente significativo en el orden de exploración de coeficientes en una TU con una coordenada relativa a la esquina superiorizquierda de la unidad de transformada. El componente vertical u horizontal de la coordenada se representa por su prefijo y sufijo, donde el prefijo se convierte a binario con Rice truncado (TR) y su sufijo se convierte a binario con longitud fija.
Semántica:
last_sig_coeff_x_prefix especifica el prefijo de la posición de columna del último coeficiente significativo en orden de exploración dentro de un bloque de transformada. Los valores de last_sig_coeff_x_prefix deben encontrarse en el intervalo de 0 a (log2TrafoSize << 1 ) -1 , inclusive.
last_sig_coeff_y_prefix especifica el prefijo de la posición de fila del último coeficiente significativo en orden de exploración dentro de un bloque de transformada. Los valores de last_sig_coeff_y_prefix deben encontrarse en el intervalo de 0 a (log2TrafoSize << 1 ) -1 , inclusive.
last_sig_coeff_x_suffix especifica el sufijo de la posición de columna del último coeficiente significativo en orden de exploración dentro de un bloque de transformada. Los valores de last_sig_coeff_x_suffix deben encontrarse en el intervalo de 0 a (1 << ( (last_sig_coeff_x_prefix >> 1 ) - 1 ) ) - 1 , inclusive.
La posición de columna del último coeficiente significativo en orden de exploración dentro de un bloque de transformada LastSignificantCoeffX se deriva como sigue:
- Si last_sig_coeff_x_suffix no está presente, se aplica lo siguiente:
LastSignificantCoeffX = last_sig_coeff_x_prefix
- De lo contrario (last_sig_coeff_x_suffix is present), se aplica lo siguiente:
LastSignificantCoeffX = ( 1 << ((last_sig_coeff_x_prefix >> 1) -1)) * ( 2 (last_sig_coeff_x_prefix & 1))
last_sig_coeff_x_suffix
last_sig_coeff_y_suffix especifica el sufijo de la posición de fila del último coeficiente significativo en orden de exploración dentro de un bloque de transformada. Los valores de last_sig_coeff_y_suffix deben encontrarse en el intervalo de 0 a (1 << ( (last_sig_coeff_y_prefix >> 1 ) - 1 ) ) - 1 , inclusive.
La posición de fila del último coeficiente significativo en orden de exploración dentro de un bloque de transformada LastSignif1cantCoeffY se deriva como sigue:
- Si last_sig_coeff_y_suffix no está presente, se aplica lo siguiente:
LastSignificantCoeftY = last_sig_coeff_y_prefix
- De otra manera (last_sig_coeff_y_suffix está presente), se aplica lo siguiente:
LastSignificantCoeftY = ( 1 « ((last_sig_coeff_y_prefix » 1) -1)) * (2 (last_sig_coeff_y_prefix & 1 ))
last_sig_coeff_y_suffix
Cuando scanIdx es igual a 2, se intercambian las coordenadas como sigue:
(LastSignificantCoeffX, LastSignificantCoeffY)=Swap( LastSignificantCoeffX, LastSignificantCoeffY )
Con una posición de este tipo codificada y también el orden de exploración de coeficiente de los CG, se señaliza una bandera adicionalmente para los CG excepto el último CG (en orden de exploración) que indica si contiene coeficientes distintos de cero.
Modelado de contexto de bandera de CG. Cuando se codifica si un CG tiene coeficientes distintos de cero, es decir, la bandera de CG (coded _sub _block_flag en la especificación HEVC), se utiliza la información de los CG vecinos para crear el contexto. Para ser más específicos, la selección de contexto para codificar la bandera de CG se define como sigue:
(CG derecha disponible && bandera de CG derecho es igual a 1) || (CG por debajo disponible && bandera de CG por debajo es igual a 1 )
En este punto, el CG derecho y por debajo son los dos CG vecinos cerca del CG actual. Por ejemplo, en la Figura 11, cuando se codifica el bloque de 4x4 arriba-izquierdo, el codificador de vídeo 20 puede definir el CG derecho como el bloque de 4x4 arriba-derecho y el CG por debajo se define como el bloque de 4x4 izquierda-abajo. Croma y luma usan diferentes conjuntos de modelos de contexto, pero con la misma regla para seleccionar uno de ellos. Los detalles de la derivación de incremento de índice de contexto pueden hallarse en 9.3.4.2.4 de HEVC.
Codificación de coeficiente de transformada dentro de un CG: Para aquellos CG que pueden contener coeficientes distintos de cero, el codificador de vídeo 20 puede codificar adicionalmente (y el decodificador de vídeo 30 puede decodificar adicionalmente) banderas significativas (significant_flag), valores absolutos de coeficientes (que incluyen coeff_abslevel_greater1 _flag, coeff_abs_level_greater2 _flag y coeff_abs_level_remaining) e información de signo (coeff_sign_flag) para cada coeficiente de acuerdo con el orden de exploración de coeficiente de 4x4 predefinido. La codificación (por ejemplo, la codificación y/o decodificación) de niveles de coeficientes de transformada se separa en múltiples pasadas de exploración.
Primera pasada de la codificación de binarios: En esta pasada, se codifican todos los primeros binarios (o el índice binario 0, bin0) de los coeficientes de transformada en cada posición dentro de un CG excepto que podría derivarse que el coeficiente de transformada específico es igual a 0. La variable sigCtx depende de la ubicación actual relativa a la posición arriba-izquierda de la TU actual, el índice de componente de color cIdx, el tamaño de bloque de transformada y binarios previamente decodificados del elemento de sintaxis coded_sub_block_flag. Se aplican diferentes reglas dependiendo del tamaño de TU. Se definen detalles de ejemplo de la selección del incremento de índice de contexto en 9.3.4.2.5 de HEVC.
Segunda pasada de la codificación de binarios: Se aplica la codificación coeff_abs_level_greater1_flags en esta pasada. El modelado de contexto depende del índice de componente de color, el índice de exploración de subbloque actual, y el índice de exploración de coeficiente actual dentro del subbloque actual. Se definen detalles de ejemplo de la selección del incremento de índice de contexto en 9.3.4.2.6 de HEVC.
Tercera pasada de la tercera codificación de binarios: Se aplica la codificación de
coeff_abs_level_greater2_flags en esta pasada. El modelado de contexto es similar al usado por coeff_abs_level_greater1_flags. Se definen detalles de ejemplo de la selección del incremento de índice de contexto en 9.3.4.2.7 de HEVC. Para mejorar el rendimiento, la segunda y tercera pasadas pueden no procesar todos los coeficientes en un CG. Las primeras ocho coeff_abs_level_greater1_flags en un CG se codifican en modo regular. Después de eso, los valores se dejan para codificarse en modo de desvío en la quinta pasada por la sintaxis coeff_abs_level_remaining. De manera similar, únicamente se codifica coeff_abs_level_greater2_flags para el primer coeficiente en un CG con magnitud mayor que 1. El resto de coeficientes con magnitud mayor que 1 del CG usan coeff_abs_level_remaining para codificar el valor. Este método limita el número de binarios regulares para niveles de coeficiente hasta un máximo de 9 por CG: 8 para coeff_abs_level_greater1_flags y 1 para coeff_abs_level_greater2 _flags.
Cuarta pasada de información de signo: En algunos ejemplos de HEVC, el signo de cada coeficiente distinto de cero se codifica en la cuarta pasada de exploración en modo de desvío. Para cada CG, y dependiendo de un criterio, simplemente se omite la codificación del signo del último coeficiente distinto de cero (en orden de exploración inversa) cuando se usa ocultación de datos de signo (SDH). En su lugar, el valor de signo está embebido en la paridad de la suma de los niveles del CG usando una convención predefinida: par corresponde a "+" e impar a "-". El criterio para usar SDH es la distancia en orden de exploración entre el primer y el último coeficientes distintos de cero del CG. Si la distancia es igual o mayor que cuatro (4), se usa SDH. Se eligió el valor de cuatro (4) puesto que proporciona la ganancia más grande en secuencias de prueba de HEVC.
Última pasada de binarios restantes: Los binarios restantes se codifican en una pasada de exploración adicional. Defínase baseLevel de un coeficiente como:
baseLevel = significant_flag coeff_abs_level_greater1_flag+ coeff_abs_level_greater2_flag donde una bandera tiene un valor de 0 o 1 y se infiere para que sea 0 si no está presente. Entonces, el valor absoluto del coeficiente se define como sigue:
absCoeffLevel = baseLevel + coeff_absjevel_remaining.
El parámetro de Rice se establece a 0 en el comienzo de cada CG y se actualiza condicionalmente dependiendo del valor anterior del parámetro y del nivel absoluto actual como sigue:
si absCoeffLevel > 3 x 2m, m = mín(4,m 1).
El elemento de sintaxis coeff_abs_level_remaining puede codificarse en modo de desvío. Además, algunos ejemplos de HEVC emplean códigos de Golomb-Rice para valores pequeños y conmutadores para un código de Exp-Golomb para valores más grandes. El punto de transición entre los códigos es típicamente cuando la longitud de código unario equivale a 4. El proceso de actualización de parámetro permite la conversión a binario para adaptar las estadísticas de coeficiente cuando se observan valores grandes en la distribución.
El modelado de contexto de inter_pred_idc. inter_pred_idc especifica si se usa lista0, lista1 o bipredicción para la unidad de predicción actual. El elemento de sintaxis tiene hasta dos binarios, ambos de los cuales están codificados por contexto de CABAC. La cadena binaria convertida a binario se define como sigue:
Figure imgf000048_0001
donde nPbW y nPbH representan la anchura y altura del bloque de predicción de luma actual, respectivamente. Para cada corte inter codificado, por ejemplo, corte P o corte B, la selección de contexto está basada en la siguiente regla:
Si la suma ( nPbW nPbH ) es desigual a 12, se codifica el primer binario usando cuatro contextos y se codifica el segundo binario con un contexto. La selección de contexto del primer binario es de acuerdo con la profundidad de CU actual. En HEVC, la profundidad de CU está en el intervalo de 0 a 3, inclusive. El rango inclusive de 0 a 3 puede expresarse como [0,3].
En JCTVC-H0228 (T. Nguyen, D. Marpe, T. Wiegand, "Non-CE11: Proposed Cleanup for Transform Coefficient Coding", JCTVC-H0228, 8th Meeting: San José, CA, ESTADOS UNIDOS, 1-10 de febrero de 2012), se propuso codificación de pasada de una exploración. De acuerdo con la pasada de una exploración que se propuso, se codifica toda la información en un nivel de coeficiente de transformada en una única etapa en lugar de en codificación de múltiples pasadas como en HEVC. Para cada posición de exploración, se evalúan los vecinos cubiertos por una plantilla local, como se hace para bin0 (el primer binario de la cadena binaria, también denominado como significant_coe1f_flag o coeff_abs_greater0_flag) en el diseño actual de HEVC. A partir de esta evaluación, se derivan modelos de contexto y el parámetro de Rice, que controla la conversión a binario adaptativa del valor absoluto restante. Para ser más específicos, se seleccionan todos los modelos de contexto para el bin0, bin1, bin2 y los parámetros de Rice (bin1 y bin2 también se denominan coeff_abs_greater1_flag y coeff_abs_greater2_flag) basándose en las magnitudes de coeficiente de transformada ubicadas en la plantilla local.
Se proporciona un ejemplo para la plantilla local 140 en la Figura 10 para un bloque de transformada de 8x8 con exploración diagonal, donde L indica la última posición de exploración significativa, x indica la exploración actual y x con i e [0,4] indica los vecinos cubiertos por la plantilla local.
sum_absolute_level, que indica la suma absoluta de los vecinos, y sum_absolute_levelMinus1, que indica la suma absoluta de cada nivel menos 1 , se usan para derivar índices de contexto para bin0 , bin1 , bin2 , y para determinar el parámetro de Rice r.
sum_absolute_level =
sum_absolute_levelMinus 1 = £ Sl(xl) (5)
Con S.(x ) = W W > 0
0 x¡ = 0
Para bin0, el sum_absolute_level resultante de la evaluación de la plantilla local se mapea directamente a un índice de modelo de contexto con un valor de corte de 5. Se aplica la misma regla para el cálculo del índice de modelo de contexto de bin1 y bin2 usando sum_absolute_levelMinus1 y un valor de corte de 4. Esta regla de derivación se resume a continuación con co que representa el índice de modelo de contexto para bin0 , ci el índice de modelo de contexto para bin1 , y C 2 el índice de modelo de contexto para bin2.
c0 = mín(sum_absolute_level, 5)
c1 = mín(sum_absolute_levelMinus1,4) 1
c2 = mín(sum_absolute_levelMinus1,4) 1
La Figura 12 es un diagrama conceptual que ilustra un ejemplo de derivación de binario. La regla de derivación para bin1 y bin2 es la misma. A continuación, para el componente de luma, se calcula una compensación adicional para bin0, bin1 y bin2 de los niveles de transformada de luma. El índice de contexto adicional (es decir, la compensación) depende de la ubicación de la posición de exploración actual. La Figura 12 ilustra un ejemplo de este proceso. En particular, la Figura 12 muestra rangos de índice de contexto para diferentes regiones dentro de una TU (a) para luma bin0 , (b) para luma bin1 y bin2 (no el último coeficiente en orden de exploración hacia delante).
En resumen, la totalidad del concepto se resume en las siguientes fórmulas, donde x indica la ubicación espacial horizontal dentro del bloque de transformada de la posición de exploración actual, e indica la ubicación espacial vertical, y cIdx indica el tipo de plano actual, significando 0 luma. Adicionalmente, se marca el rango del índice de contexto para diferentes posiciones en la Figura 13.
c0 = c0 f(x ,y , 6,2) Sk(f(x,y , 6,5), cldx)
c1 = c1 f(x ,y , 5,3) Sk(f(x,y , 5,10),cldx)
c2 = c 2 f(x ,y , 5,3) Sk(f(x,y , 5,10), cldx) (7)
n x y < t
Con f(x ,y ,n , t) 0 x y > t y Sk(u,v) u v = 0
0 v ^ 0
Como se ha mostrado anteriormente, la fórmula para ci es la misma que para c2. Además del mismo índice de modelo de contexto para el bin1 y bin2, se usa el mismo modelo de contexto para la codificación de bin1 y bin2. Además, para la primera posición de exploración en orden de codificación (es decir, la última posición de exploración de significado); se usa un índice de modelo de contexto separado para bin1 y bin2. Se infiere el primer índice de binario (bin0) para la última posición de exploración significativa. Este modelo de contexto separado nunca se selecciona de nuevo por el esquema de selección de modelo de contexto y se asigna comoci=0. El número total de modelos de contexto está tabulado en la siguiente tabla:
Figure imgf000049_0001
El parámetro de Rice r se deriva como sigue. Para cada posición de exploración, el parámetro se establece a 0. A continuación, se compara sum_absolute_levelMinus1 contra un umbral establecido tR = {3, 9, 21}. En otras palabras, el parámetro de Rice es 0 si sum_absolute_levelMinus1 cae en el primer intervalo, es 1 si sum_absolute_levelMinus1 cae en el segundo intervalo y así sucesivamente. La derivación del parámetro de Rice r se resume a continuación: con
0 XE [0,3]
r(x) 1 X E [4,9]
2 x E [10,21]
3 x > 21 ( 8)
x = sum abslolute levelMinusI
La Figura 13 es un diagrama conceptual que ilustra un rango de índices de contexto para diferentes posiciones dentro de una TU, para diferentes binarios de luma. En la Figura 13 de ejemplo, el bloque a la izquierda ilustra el rango de índice de contexto para diferentes regiones dentro de la TU para luma bin0. El bloque a la derecha ilustra el rango de índice de contexto para diferentes regiones dentro de la TU para luma bin1 y bin2. Las posiciones particulares se indican usando números dentro de los binarios de luma de la Figura 13, y las diferentes regiones se distinguen usando sombreado.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través como una o más instrucciones o código en un medio legible por ordenador y ejecutarse por una unidad de procesamiento basada en hardware. Medio legible por ordenador puede incluir medio de almacenamiento legible por ordenador, que corresponde a un medio de almacenamiento tal como un medio de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, medio legible por ordenador generalmente puede corresponder a (1 ) medio de almacenamiento legible por ordenador tangible que es no transitorio o (2) un medio de comunicación tal como una señal u onda portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible que pueda accederse por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
La Figura 14 ilustra un proceso de ejemplo 300 que puede realizar un dispositivo de codificación de vídeo, o diversos componentes del mismo, para implementar una o más de las técnicas de modelado de contexto de esta divulgación. Aunque el proceso 300 puede realizarse por una diversidad de dispositivos, se describe el proceso 300 en el presente documento con respecto al decodificador de vídeo 30. El proceso 300 puede comenzar cuando el decodificador de vídeo 30 codifica (por ejemplo, decodifica) una primera Tu (302). A su vez, el decodificador de vídeo 30 puede comenzar una primera pasada de codificación de una segunda TU (304). Como tal, la primera TU representa un bloque previamente codificado con respecto a la segunda TU.
El decodificador de vídeo 30 puede usar el binario de orden i de la primera TU para codificar todos los binarios de orden i de la segunda TU dentro de la primera pasada de codificación (306). Por ejemplo, el decodificador de vídeo 30 puede usar el bin0 de la primera TU para seleccionar el índice de contexto para el respectivo binario de orden i de todos los coeficientes de transformada de la segunda TU, durante la primera pasada de un proceso de decodificación de múltiples pasadas para la segunda TU. De esta manera, el decodificador de vídeo 30 puede implementar las técnicas de modelado de contexto de esta divulgación para mejorar la paralelización, usando binarios de un bloque previamente codificado para completar la selección de contexto para todos los binarios de orden i de todos los coeficientes de transformada de una TU que se está codificando actualmente.
De esta manera, el decodificador de vídeo 30 representa un ejemplo de un dispositivo de codificación de vídeo que incluye una memoria configurada para almacenar datos de vídeo y uno o más procesadores. El procesador o procesadores pueden estar configurados para determinar, para cada uno de una pluralidad de binarios de un valor para un elemento de sintaxis de un coeficiente de transformada actual, contextos que usan respectivos correspondientes binarios de valores para el elemento de sintaxis de uno o más coeficientes de transformada previamente codificados. Para determinar los contextos, el uno o más procesadores están configurados para determinar un contexto para un binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual usando un correspondiente binario de orden i de un valor para el elemento de sintaxis de un coeficiente de transformada previamente codificado, donde 'i' comprende un número entero no negativo, y donde para usar el correspondiente binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada previamente codificado, el uno o más procesadores están configurados para usar únicamente el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada previamente codificado y ningún otro binario del valor para el elemento de sintaxis del coeficiente de transformada previamente codificado. El procesador o procesadores están configurados adicionalmente para codificar por CABAC (por ejemplo, decodificar por CABAC) el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual usando el contexto determinado.
En algunos ejemplos, para determinar el contexto para el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual, el uno o más procesadores están configurados para determinar el contexto para el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual usando una plantilla que identifica uno o más coeficientes de transformada vecinos que van a usarse para decodificación de CABAC del coeficiente de transformada actual. En algunos ejemplos, el uno o más procesadores están configurados adicionalmente para determinar al menos uno de un tamaño o una forma de la plantilla basándose en al menos uno de un tamaño de una unidad de transformada que incluye el coeficiente de transformada actual, un modo de codificación asociado con una unidad de codificación que incluye la unidad de transformada, una posición del coeficiente de transformada actual en la unidad de transformada que incluye el coeficiente de transformada actual, o una posición del coeficiente de transformada actual en un grupo de coeficientes que incluye el coeficiente de transformada actual. En algunos ejemplos, el uno o más procesadores están configurados adicionalmente para determinar al menos uno de un tamaño o una forma de la plantilla basándose en información de componente de color, incluyendo la información de componente de color una o ambas de información de componente de luma o información de componente de croma
En algunos ejemplos, el coeficiente de transformada actual está incluido en una unidad de transformada, donde algunos o todos los binarios de la unidad de transformada están codificados por CABAC de acuerdo con un modo regular, y para codificar por CABAC el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual, el uno o más procesadores están configurados para codificar el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual durante una pasada de codificación de orden i durante la cual, todos los correspondientes binarios de orden i de todos los coeficientes de transformada de la unidad de transformada están codificados por CABAC. En algunos ejemplos, para determinar el contexto para el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual, el uno o más procesadores están configurados para determinar un índice de contexto para el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual usando una función de los coeficientes de transformada previamente codificados. En algunos ejemplos, los coeficientes de transformada previamente codificados están situados en una plantilla. En algunos ejemplos, para usar la función de los coeficientes de transformada previamente codificados, el uno o más procesadores están configurados para usar la función de unos primeros 'M' coeficientes de transformada previamente codificados, y donde 'M' representa un valor no negativo. En algunos ejemplos, la función comprende una función de suma, y el correspondiente binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada previamente codificado se incluye en una pluralidad de correspondientes binarios de orden i de valores para los elementos de sintaxis de una pluralidad de coeficientes de transformada previamente codificados.
En algunos ejemplos, para determinar el índice de contexto para el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual usando la función de suma, el uno o más procesadores están configurados para definir el índice de contexto para el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual como una suma de todos de la pluralidad de los correspondientes binarios de orden i de los valores para los elementos de sintaxis de la pluralidad de los coeficientes de transformada previamente codificados. En algunos ejemplos, el uno o más procesadores están configurados adicionalmente para recortar un resultado del resultado de la función de suma para formar una suma recortada que está dentro de un rango predefinido. Dicho de otra manera, el uno o más procesadores pueden realizar un método que incluye recortar el resultado de la función de suma para formar una suma recortada que se encuentra dentro de un rango predefinido. En algunos ejemplos, para determinar el contexto para el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual, el uno o más procesadores están configurados para determinar un índice de contexto para el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual y para añadir una compensación al índice de contexto determinado. En algunos ejemplos, el uno o más procesadores están configurados adicionalmente para determinar la compensación basándose en un tamaño de una unidad de transformada que incluye el coeficiente de transformada actual.
En algunos ejemplos, el uno o más procesadores están configurados adicionalmente para determinar si la unidad de transformada está dentro de un tamaño umbral, y, si la unidad de transformada está dentro del tamaño umbral, para determinar que la unidad de transformada está asociada con un conjunto de modelos de contexto que es común para todas las unidades de transformada que están dentro del tamaño umbral. En algunos ejemplos, el tamaño umbral está asociado con una dimensionalidad de 16x16. En algunos ejemplos, los datos de vídeo almacenados comprenden datos de vídeo codificados, el uno o más procesadores están configurados adicionalmente para decodificar al menos una porción de los datos de vídeo codificados para formar datos de vídeo reconstruidos, y el decodificador de vídeo 30 puede incluir, ser o ser parte de un dispositivo que incluye un dispositivo de visualización configurado para presentar visualmente al menos una porción de los datos de vídeo reconstruidos. En algunos ejemplos, el uno o más procesadores están configurados adicionalmente para codificar al menos una porción de lo almacenado, y el coeficiente de transformada previamente codificado comprende un coeficiente de transformada previamente codificado.
La Figura 15 es un diagrama de flujo que ilustra un proceso de ejemplo 320 que puede realizar un dispositivo de codificación de vídeo, o diversos componentes del mismo, para implementar una o más de las técnicas de inicialización de contexto basadas en herencia de esta divulgación. Aunque el proceso 320 puede realizarse por una diversidad de dispositivos, se describe el proceso 320 en el presente documento con respecto al decodificador de vídeo 30. El proceso 320 puede comenzar cuando el decodificador de vídeo 30 codifica (por ejemplo, decodifica) una primera imagen (322). Por lo tanto, la primera imagen representa una imagen previamente codificada (por ejemplo, previamente decodificada) con respecto a imágenes que el decodificador de vídeo 30 puede reconstruir posteriormente. A su vez, el decodificador de vídeo 30 puede identificar un bloque desde el primero a partir del que heredar información de contexto para un corte actual de una segunda imagen (324). Como tal, la segunda imagen puede representar una "imagen actual" en la que el decodificador de vídeo 30 está decodificando actualmente la segunda imagen, y el corte actual puede representar un corte particular de la segunda imagen que está decodificando el decodificador de vídeo 30.
El decodificador de vídeo 30 puede inicializar la información de contexto para el corte actual usando la información de contexto heredada de la primera imagen (326). Por ejemplo, el decodificador de vídeo 30 puede almacenar uno o más estados de la información de contexto heredada, y recuperar el estado o estados almacenados para inicializar el contexto para el corte actual. A su vez, el decodificador de vídeo 30 puede codificar el corte actual usando la información de contexto inicializada (328).
De esta manera, el decodificador de vídeo 30 representa un ejemplo de un dispositivo de codificación de vídeo que incluye una memoria configurada para almacenar datos de vídeo y uno o más procesadores. El procesador o procesadores están configurados para inicializar la información de contexto para un corte actual de una imagen actual heredando información de contexto después de codificar un bloque previamente codificado de un corte previamente codificado de los datos de vídeo almacenados como información de contexto inicializada para el corte actual de la imagen actual, y para codificar datos del corte actual usando la información de contexto inicializada. En algunos ejemplos, el bloque previamente codificado incluye una unidad de codificación más grande (LCU) que se encuentra en una posición central dentro del corte previamente codificado o en una posición central dentro de una imagen previamente codificada asociada con el corte previamente codificado. En algunos ejemplos, el corte actual incluye un corte previsto unidireccional (corte P), y el corte previamente codificado incluye un corte previsto bidireccional (corte B). En algunos ejemplos, el corte actual incluye un corte previsto bidireccional (corte B), y el corte previamente codificado incluye un corte previsto unidireccional (corte P).
En algunos ejemplos, el corte actual está incluido en una pluralidad de cortes en la imagen actual para los que se hereda la información de contexto de la imagen previamente codificada, y el procesador o procesadores están configurados adicionalmente para inicializar respectiva información de contexto para todos de la pluralidad de cortes heredando la información de contexto después de codificar la LCU que se encuentra en la posición central dentro del corte previamente codificado. En algunos ejemplos, el procesador o procesadores están configurados adicionalmente para determinar si el corte actual está inter codificado, y para inicializar la información de contexto para el corte actual de la imagen actual, el procesador o procesadores están configurados para heredar la información de contexto después de codificar el bloque previamente codificado como la información de contexto inicializada para el corte actual de la imagen actual basándose en una determinación de que el corte actual está inter codificado.
En algunos ejemplos, el procesador o procesadores están configurados para determinar si el corte previamente codificado está inter codificado. En algunos ejemplos, el procesador o procesadores están configurados adicionalmente para determinar si el corte actual y el bloque previamente codificado comparten mismos parámetros de cuantificación (QP), y para inicializar la información de contexto para el corte actual de la imagen actual, el procesador o procesadores están configurados para heredar la información de contexto después de codificar el bloque previamente codificado como la información de contexto inicializada para el corte actual de la imagen actual basándose en una determinación de que el corte actual y el corte previamente codificado comparten los mismos QP. En algunos ejemplos, el procesador o procesadores están configurados adicionalmente para determinar si está situada una imagen de acceso intra aleatorio (IRAP), en orden de salida, entre la imagen actual y una imagen previamente codificada asociada con el corte previamente codificado.
En algunos ejemplos, para inicializar la información de contexto para el corte actual de la imagen actual, el procesador o procesadores están configurados para heredar la información de contexto del bloque previamente codificado de la imagen previamente codificada como la información de contexto inicializada para el corte actual de la imagen actual basándose en una determinación de que ninguna IRAP está situada entre la imagen actual y la imagen previamente codificada en el orden de salida. En algunos ejemplos, el procesador o procesadores están configurados adicionalmente para definir una posición del bloque previamente codificado de acuerdo con la siguiente ecuación: TargetCUAddr = (PicWidthInCtbsY* PicHeightInCtbsY)/2 PicWidthInCtbsY /2, donde "PicWidthInCtbsY" indica un número de unidades de codificación más grandes (LCU) incluidas en una única fila del bloque previamente codificado, y donde "PicHeightInCtbsY" indica un número total de filas de LCU incluidas en el bloque previamente codificado. En algunos ejemplos, la información de contexto incluye uno o más estados de contexto asociados con el corte actual.
En algunos ejemplos, la información de contexto incluye adicionalmente valores asociados con información de estado más probable (MPS). En algunos ejemplos, para inicializar la información de contexto para el corte actual heredando la información de contexto después de codificar el bloque previamente codificado, el procesador o procesadores están configurados para inicializar algunos, pero no todo los contextos de la información de contexto para el corte actual heredando la información de contexto después de codificar el bloque previamente codificado. En algunos ejemplos, el corte previamente codificado incluye uno de (i) un corte en la imagen actual, donde el corte previamente codificado es diferente del corte actual, o (ii) un corte en una imagen previamente codificada. En algunos ejemplos, el procesador o procesadores están configurados adicionalmente para seleccionar la imagen previamente codificada identificando la imagen previamente codificada como una última imagen, en orden de salida antes de la imagen actual, que comparte los mismos parámetros de cuantificación (QP) y tipos de corte como la imagen actual. En algunos ejemplos, los datos de vídeo almacenados incluyen datos de vídeo codificados, el procesador o procesadores están configurados adicionalmente para decodificar al menos una porción de los datos de vídeo codificados para formar datos de vídeo reconstruidos, y el dispositivo de codificación de vídeo incluye adicionalmente un dispositivo de visualización configurado para presentar visualmente al menos una porción de los datos de vídeo reconstruidos.
La Figura 16 es un diagrama de flujo que ilustra un proceso de ejemplo 330 que puede realizar un dispositivo de codificación de vídeo, o diversos componentes del mismo, para implementar una o más de técnicas de esta divulgación como parte de un proceso de decodificación de vídeo. Aunque el proceso 330 puede realizarse por una diversidad de dispositivos, se describe el proceso 330 en el presente documento con respecto al decodificador de vídeo 30. El proceso 330 puede comenzar cuando el decodificador de vídeo 30 recibe datos codificados por entropía para un bloque actual (332). Adicionalmente, el decodificador de vídeo 30 puede recuperar los datos codificados por entropía para los coeficientes de transformada del bloque actual (334).
A su vez, el decodificador de vídeo 30 puede decodificar por entropía datos codificados para los coeficientes de transformada del bloque actual (336). Por ejemplo, para decodificar por entropía los coeficientes de transformada, el decodificador de vídeo 30 pueden usar binarios de coeficientes de transformada previamente decodificados para determinar la información de contexto para correspondientes binarios actuales de un coeficiente de transformada actual (336). El decodificador de vídeo 30 (por ejemplo, invocando la unidad de transformada inversa 78) puede aplicar una transformada inversa a los coeficientes de transformada para formar un bloque residual (338). A su vez, el decodificador de vídeo 30 puede predecir el bloque actual para formar un bloque previsto (340). El decodificador de vídeo 30 puede combinar el bloque previsto con bloque residual para decodificar el bloque actual (342).
La Figura 17 es un diagrama de flujo que ilustra un proceso de ejemplo 350 que puede realizar un dispositivo de codificación de vídeo, o diversos componentes del mismo, para implementar una o más técnicas de determinación de tamaño de grupo de coeficientes (CG) de esta divulgación. Aunque el proceso 320 puede realizarse por una diversidad de dispositivos, se describe el proceso 350 en el presente documento con respecto al decodificador de vídeo 30. El proceso 350 puede comenzar cuando el decodificador de vídeo 30 identifica una unidad de transformada (TU) (352). Por ejemplo, el decodificador de vídeo 30 puede identificar una TU actual, tal como una TU que se está decodificando actualmente. Adicionalmente, el decodificador de vídeo 30 puede identificar un grupo de coeficientes que incluye la TU actual, donde el grupo de coeficientes representa un subconjunto de los coeficientes de transformada de la TU actual (354). El decodificador de vídeo 30 puede determinar un tamaño del CG basándose en una combinación de un tamaño de transformada asociado con la unidad de transformada y uno o ambos de (i) un modo de codificación asociado con la unidad de transformada, o (ii) una matriz de transformada asociada con la unidad de transformada (356).
De esta manera, el decodificador de vídeo 30 representa un ejemplo de un dispositivo de codificación de vídeo que incluye un dispositivo de memoria configurado para almacenar datos de vídeo y uno o más procesadores. El procesador o procesadores están configurados para identificar un grupo de coeficientes (CG) que incluye un coeficiente de transformada actual de los datos de vídeo, representando el CG un subconjunto de coeficientes de transformada dentro de una unidad de transformada y para determinar un tamaño del CG basándose en un tamaño de transformada asociado con la unidad de transformada. En algunos ejemplos, el procesador o procesadores pueden determinar el tamaño del CG basándose en una combinación del tamaño de transformada asociado con la unidad de transformada y uno o ambos de (i) un modo de codificación asociado con la unidad de transformada, o (ii) una matriz de transformada asociada con la unidad de transformada. En algunos ejemplos, los datos de vídeo almacenados comprenden datos de vídeo codificados, y el uno o más procesadores están configurados para decodificar al menos una porción de los datos de vídeo codificados para formar datos de vídeo decodificados. En algunos ejemplos, los datos de vídeo almacenados comprenden datos de vídeo codificados, y el uno o más procesadores están configurados para decodificar al menos una porción de los datos de vídeo codificados para formar datos de vídeo decodificados.
En algunos ejemplos, la unidad de transformada comprende una unidad de transformada codificada, y donde el modo de codificación asociado con la unidad de transformada comprende un modo de codificación usado para formar la unidad de transformada codificada. En algunos ejemplos, el decodificador de vídeo 30 incluye, es o es parte de un dispositivo que comprende una pantalla configurada para presentar visualmente al menos una porción de los datos de vídeo decodificados. En algunos ejemplos, el uno o más procesadores están configurados adicionalmente para determinar, para cada uno de una pluralidad de binarios de un valor para un elemento de sintaxis del coeficiente de transformada actual, usando los contextos correspondientes respectivos binarios de valores para el elemento de sintaxis de uno o más coeficientes de transformada previamente decodificados. En algunos ejemplos, para determinar los contextos, el uno o más procesadores están configurados para determinar un contexto para un binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual usando un correspondiente binario de orden i de un valor para el elemento de sintaxis de un coeficiente de transformada previamente decodificado, donde i comprende un número entero no negativo. En algunos ejemplos, para usar el correspondiente binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada previamente decodificado, el procesador o procesadores usan únicamente el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada previamente decodificado y ningún otro binario del valor para el elemento de sintaxis del coeficiente de transformada previamente decodificado. En algunos de tales ejemplos, el procesador o procesadores pueden decodificar por codificación binaria aritmética adaptativa según contexto (CABAC) el binario de orden i del valor para el elemento de sintaxis del coeficiente de transformada actual usando el contexto determinado. En algunos ejemplos, el CG comprende una región cuadrada de bloques y el tamaño del CG es 4x4, expresado en unidades de bloques.
En algunos ejemplos, el modo de codificación comprende un modo de codificación basado en CG. En algunos ejemplos, el decodificador de vídeo 30 incluye, es o es parte de un dispositivo que incluye uno o más de: uno o más circuitos integrados; uno o más procesadores de señales digitales (DSP); uno o más campos de matrices de puertas programables (FPGA); un ordenador de escritorio; un ordenador portátil; un ordenador de tableta; un teléfono; una televisión; una cámara; un dispositivo de visualización; un reproductor de medios digitales; una consola de videojuegos; un dispositivo de videojuegos; un dispositivo de envío por flujo continuo de vídeo; o un dispositivo de comunicación inalámbrica.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda utilizar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se denomina apropiadamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea digital de abonado (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que medio de almacenamiento legible por ordenador y medio de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en su lugar, se refieren a medio de almacenamiento tangible no transitorio. Disco magnético y disco óptico, como se usan en este documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray donde los discos magnéticos normalmente reproducen datos magnéticamente, mientras que los discos ópticos reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también deben incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ejecutarse por uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), campos de matrices de puertas programables (FPGA) u otra circuitería integrada o de lógica discreta equivalente. Por consiguiente, el término "procesador", como se usa en el presente documento, puede hacer referencia a cualquiera de la estructura anterior o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software especializados configurados para codificar y decodificar, o incorporarse en un códec combinado. También, las técnicas podrían implementarse totalmente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, incluyendo un microteléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos o unidades en esta divulgación para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización por diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una recopilación de unidades de hardware inter operativas, que incluyen uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.
Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (13)

REIVINDICACIONES
1. Un método de decodificación de datos de vídeo, comprendiendo el método:
inicializar la información de contexto para un corte actual de una imagen actual heredando información de contexto de un bloque previamente decodificado de un corte previamente decodificado de una imagen previamente decodificada como información de contexto inicializada para el corte actual de la imagen actual, en donde el bloque previamente decodificado comprende una unidad de codificación más grande, LCU, que se encuentra en una posición central dentro de la imagen previamente decodificada; y
decodificar datos del corte actual de la imagen actual usando la información de contexto inicializada;
en donde el corte actual está incluido en una pluralidad de cortes en la imagen actual para los que se hereda información de contexto del corte previamente decodificado, comprendiendo adicionalmente el método inicializar respectiva información de contexto para todos de la pluralidad de cortes heredando la información de contexto después de la decodificación de la LCU.
2. El método de la reivindicación 1, en donde el corte actual comprende un corte previsto unidireccional, corte P, y en donde el corte previamente decodificado comprende un corte previsto bidireccional, corte B.
3. El método de la reivindicación 1, en donde el corte actual comprende un corte previsto bidireccional, corte B, y en donde el corte previamente decodificado comprende un corte previsto unidireccional, corte P.
4. El método de la reivindicación 1,
que comprende adicionalmente determinar si el corte actual está inter codificado,
en donde inicializar la información de contexto para el corte actual de la imagen actual comprende heredar la información de contexto después de la decodificación del bloque previamente decodificado como la información de contexto inicializada para el corte actual de la imagen actual basándose en una determinación de que el corte actual está inter codificado.
5. El método de la reivindicación 4, que comprende adicionalmente determinar si el corte previamente decodificado está inter codificado.
6. El método de la reivindicación 1,
que comprende adicionalmente determinar si el corte actual y el corte previamente decodificado comparten los mismos parámetros de cuantificación QP,
en donde inicializar la información de contexto para el corte actual de la imagen actual comprende heredar la información de contexto después de la decodificación del bloque previamente decodificado como la información de contexto inicializada para el corte actual de la imagen actual basándose en una determinación de que el corte actual y un corte previamente decodificado del corte previamente decodificado comparten los mismos QP.
7. El método de la reivindicación 1, en donde se define una posición del bloque previamente decodificado de acuerdo con la siguiente ecuación:
TargetCUAddr = (PicWidthlnCtbsY* PicHeightInCtbsY)/2 PicWidthlnCtbsY /2, en donde "PicWidthlnCtbsY" indica un número de unidades de codificación más grandes, LCU, incluidas en una única fila del bloque previamente decodificado, y
en donde "PicHeightlnCtbsY" indica un número total de filas de LCU incluidas en el bloque previamente decodificado.
8. El método de la reivindicación 1, en donde la información de contexto comprende uno o más estados de contexto asociados con el corte actual.
9. El método de la reivindicación 1, en donde la inicialización de la información de contexto para el corte actual heredando la información de contexto después de la decodificación del bloque previamente decodificado comprende inicializar alguno, pero no todos los contextos de la información de contexto para el corte actual heredando la información de contexto después de la decodificación del bloque previamente decodificado.
10. El método de la reivindicación 1, que comprende adicionalmente seleccionar la imagen previamente decodificada identificando la imagen previamente decodificada como una última imagen, en orden de decodificación antes de la imagen actual, que comparte los mismos parámetros de cuantificación QP y tipos de corte como la imagen actual.
11. Un método de codificación de datos de vídeo, comprendiendo el método:
inicializar la información de contexto para un corte actual de una imagen actual heredando información de contexto de un bloque previamente codificado de un corte previamente codificado de una imagen previamente codificada como información de contexto inicializada para el corte actual de la imagen actual, en donde el bloque previamente codificado comprende una unidad de codificación más grande, LCU, que se encuentra en una posición central dentro de la imagen previamente codificada; y
codificar datos del corte actual de la imagen actual usando la información de contexto inicializada;
en donde el corte actual está incluido en una pluralidad de cortes en la imagen actual para los que se hereda información de contexto del corte previamente codificado, comprendiendo adicionalmente el método inicializar respectiva información de contexto para todos de la pluralidad de cortes heredando la información de contexto después de la codificación de la LCU.
12. Un aparato de codificación de vídeo que comprende:
medios para inicializar la información de contexto para un corte actual de una imagen actual heredando información de contexto después de codificar un bloque previamente codificado de un corte previamente codificado de una imagen previamente codificada como información de contexto inicializada para el corte actual de la imagen actual, en donde el bloque previamente codificado comprende una unidad de codificación más grande, LCU, que se encuentra en una posición central dentro de la imagen previamente codificada; y
medios para codificar datos del corte actual de la imagen actual usando la información de contexto inicializada; en donde el corte actual está incluido en una pluralidad de cortes en la imagen actual para la que se hereda información de contexto del corte previamente codificado, comprendiendo adicionalmente el aparato de codificación de vídeo medios para inicializar respectiva información de contexto para todos de la pluralidad de cortes heredando la información de contexto después de la codificación de la LCU.
13. Un medio de almacenamiento legible por ordenador no transitorio codificado con instrucciones que, cuando se ejecutan por uno o más procesadores de un dispositivo de codificación de vídeo, provocan que dicho uno o más procesadores realicen el método de una cualquiera de las reivindicaciones 1 a 11 .
ES16730580T 2015-05-29 2016-05-27 Codificar datos usando un diseño de codificación binaria aritmética adaptativa según contexto (CABAC) mejorado Active ES2905415T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562168571P 2015-05-29 2015-05-29
US15/166,132 US10334248B2 (en) 2015-05-29 2016-05-26 Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
PCT/US2016/034839 WO2016196376A1 (en) 2015-05-29 2016-05-27 Coding data using an enhanced context-adaptive binary arithmetic coding (cabac) design

Publications (1)

Publication Number Publication Date
ES2905415T3 true ES2905415T3 (es) 2022-04-08

Family

ID=57397705

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16730580T Active ES2905415T3 (es) 2015-05-29 2016-05-27 Codificar datos usando un diseño de codificación binaria aritmética adaptativa según contexto (CABAC) mejorado

Country Status (10)

Country Link
US (3) US10334248B2 (es)
EP (3) EP3304915A1 (es)
JP (3) JP2018521553A (es)
KR (3) KR102600724B1 (es)
CN (3) CN107667531B (es)
AU (3) AU2016271140B2 (es)
BR (3) BR112017025521A2 (es)
ES (1) ES2905415T3 (es)
TW (3) TWI699110B (es)
WO (3) WO2016196369A1 (es)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9369723B2 (en) 2011-07-14 2016-06-14 Comcast Cable Communications, Llc Preserving image quality in temporally compressed video streams
US10334248B2 (en) 2015-05-29 2019-06-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
CN112272298B (zh) * 2015-06-23 2023-07-18 联发科技(新加坡)私人有限公司 转换系数编解码的方法及装置
US10887626B2 (en) * 2016-05-13 2021-01-05 Sharp Kabushiki Kaisha Image decoding device and image encoding device
US10616582B2 (en) 2016-09-30 2020-04-07 Qualcomm Incorporated Memory and bandwidth reduction of stored data in image/video coding
WO2018092869A1 (ja) 2016-11-21 2018-05-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN109983771A (zh) * 2016-11-21 2019-07-05 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法及解码方法
US10757412B2 (en) 2017-01-03 2020-08-25 Avago Technologies International Sales Pte. Limited Architecture flexible binary arithmetic coding system
US11265561B2 (en) * 2017-01-06 2022-03-01 Mediatek Inc. Method and apparatus for range derivation in context adaptive binary arithmetic coding
KR102389869B1 (ko) * 2017-07-04 2022-04-22 삼성전자주식회사 다중 코어 변환에 의한 비디오 복호화 방법 및 장치, 다중 코어 변환에 의한 비디오 부호화 방법 및 장치
US10127913B1 (en) * 2017-07-07 2018-11-13 Sif Codec Llc Method of encoding of data stream, method of decoding of data stream, and devices for implementation of said methods
US10506258B2 (en) * 2017-07-13 2019-12-10 Google Llc Coding video syntax elements using a context tree
EP3652937A4 (en) 2017-07-14 2021-01-13 MediaTek Inc. METHOD AND DEVICE FOR AREA DERIVATION IN CONTEXT ADAPTIVE BINARY ARITHMETIC CODING
US11039143B2 (en) 2017-11-20 2021-06-15 Qualcomm Incorporated Memory reduction for context initialization with temporal prediction
EP3490253A1 (en) * 2017-11-23 2019-05-29 Thomson Licensing Encoding and decoding methods and corresponding devices
CN111788830B (zh) * 2017-12-13 2023-04-04 三星电子株式会社 视频解码方法及其装置以及视频编码方法及其装置
US10869062B2 (en) 2017-12-21 2020-12-15 Qualcomm Incorporated Probability initialization and signaling for adaptive arithmetic coding in video coding
EP3503557A1 (en) * 2017-12-22 2019-06-26 Thomson Licensing Method and apparatus for video encoding and decoding based on context switching
US10863199B2 (en) * 2018-03-26 2020-12-08 Qualcomm Incorporated Minimization of transform memory and latency via parallel factorizations
WO2019185818A1 (en) * 2018-03-29 2019-10-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Transform coefficient block coding
WO2019185769A1 (en) 2018-03-29 2019-10-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Dependent quantization
CN112189343B (zh) * 2018-03-29 2023-10-20 弗劳恩霍夫应用研究促进协会 用于增强并行编码能力的构思
US20190313108A1 (en) 2018-04-05 2019-10-10 Qualcomm Incorporated Non-square blocks in video coding
EP3562156A1 (en) * 2018-04-27 2019-10-30 InterDigital VC Holdings, Inc. Method and apparatus for adaptive context modeling in video encoding and decoding
US10992937B2 (en) * 2018-06-18 2021-04-27 Qualcomm Incorporated Coefficient coding with grouped bypass bins
CN110650343B (zh) * 2018-06-27 2024-06-07 中兴通讯股份有限公司 图像的编码、解码方法及装置、电子设备及系统
WO2020004277A1 (ja) * 2018-06-28 2020-01-02 シャープ株式会社 画像復号装置、および画像符号化装置
US10666981B2 (en) 2018-06-29 2020-05-26 Tencent America LLC Method, apparatus and medium for decoding or encoding
US10687081B2 (en) 2018-06-29 2020-06-16 Tencent America LLC Method, apparatus and medium for decoding or encoding
WO2020009758A1 (en) * 2018-07-02 2020-01-09 Interdigital Vc Holdings, Inc. Context-based binary arithmetic encoding and decoding
JP7313427B2 (ja) * 2018-08-16 2023-07-24 北京字節跳動網絡技術有限公司 変換行列選択の係数依存コーディング
US11483575B2 (en) * 2018-08-24 2022-10-25 Hfi Innovation Inc. Coding transform coefficients with throughput constraints
TWI734178B (zh) * 2018-08-24 2021-07-21 聯發科技股份有限公司 具有產出限制的編碼轉換係數
US11336918B2 (en) * 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
BR112021004516B1 (pt) 2018-09-11 2021-12-14 Lg Electronics Inc Método de decodificação de imagem executado por um aparelho de decodificação, método de codificação de imagem executado por um aparelho de codificação e mídia de armazenamento legível por computador
KR102661759B1 (ko) * 2018-09-24 2024-04-30 프라운호퍼-게젤샤프트 추르 푀르데룽 데어 안제반텐 포르슝 에 파우 종속 스칼라 양자화를 사용하거나 이와 조합하는 데에 적합한 변환 계수의 효율적인 코딩
WO2020067440A1 (ja) * 2018-09-27 2020-04-02 シャープ株式会社 動画像符号化装置および動画像復号装置
KR20230125331A (ko) 2018-09-28 2023-08-29 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 장치, 복호 장치, 부호화 방법, 및 복호 방법
CN113170131A (zh) 2018-10-11 2021-07-23 Lg电子株式会社 变换系数编码方法及其装置
EP3878183A1 (en) * 2018-11-05 2021-09-15 InterDigital VC Holdings, Inc. Simplifications of coding modes based on neighboring samples dependent parametric models
CN116132676A (zh) 2018-11-12 2023-05-16 三星电子株式会社 用于对系数等级进行熵编码/熵解码的方法和装置
EP3886438A4 (en) * 2018-12-24 2022-01-19 Huawei Technologies Co., Ltd. FLAG BIT CONTEXT MODELING METHOD AND APPARATUS
US11671598B2 (en) * 2019-01-02 2023-06-06 Lg Electronics Inc. Image decoding method and device using residual information in image coding system
US11523136B2 (en) * 2019-01-28 2022-12-06 Hfi Innovation Inc. Methods and apparatuses for coding transform blocks
US11134273B2 (en) * 2019-02-14 2021-09-28 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
AU2019201653A1 (en) * 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
US11202100B2 (en) * 2019-03-11 2021-12-14 Qualcomm Incorporated Coefficient coding for transform skip mode
US11178399B2 (en) 2019-03-12 2021-11-16 Qualcomm Incorporated Probability initialization for video coding
TW202046730A (zh) * 2019-04-24 2020-12-16 美商松下電器(美國)知識產權公司 編碼裝置、解碼裝置、編碼方法、及解碼方法
US10818083B1 (en) * 2019-04-30 2020-10-27 International Business Machines Corporation Pyramid generation via depth-first walk
CN113853785B (zh) 2019-05-14 2024-04-16 北京字节跳动网络技术有限公司 用于残差编解码的上下文建模
EP3954125A4 (en) 2019-05-31 2022-06-22 ByteDance Inc. INTRA-BLOCK COPY PREDICTION PALETTE MODE
CN112118456B (zh) 2019-06-20 2022-03-25 腾讯美国有限责任公司 莱斯参数选择方法、装置、计算机设备及存储介质
US11368511B2 (en) * 2019-06-20 2022-06-21 Tencent America LLC Unification of rice parameter lookup table
CN113994679A (zh) * 2019-06-21 2022-01-28 北京字节跳动网络技术有限公司 关于上下文编解码二进制位的数量的限制
CN114072849B (zh) 2019-06-28 2023-12-15 字节跳动有限公司 屏幕内容编解码中的色度帧内模式推导
CN114026859B (zh) * 2019-06-28 2024-06-14 字节跳动有限公司 在变换跳过模式中修改量化参数的技术
CN114402605A (zh) * 2019-07-10 2022-04-26 Lg电子株式会社 图像编码系统中使用残差编码方法的标志的图像解码方法以及用于其的装置
US12010315B2 (en) * 2019-08-31 2024-06-11 Lg Electronics Inc. Method for decoding video for residual coding and device therefor
KR20220062085A (ko) * 2019-09-20 2022-05-13 알리바바 그룹 홀딩 리미티드 비디오 처리에서 양자화 파라미터 시그널링
BR112022002916A2 (pt) * 2019-09-25 2022-05-10 Panasonic Ip Corp America Codificador, decodificador, método de codificação e método de decodificação
AU2019284053A1 (en) * 2019-12-23 2021-07-08 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a block of video samples
US11863789B2 (en) * 2020-03-31 2024-01-02 Tencent America LLC Method for signaling rectangular slice partitioning in coded video stream
US11785219B2 (en) * 2020-04-13 2023-10-10 Qualcomm Incorporated Coefficient coding for support of different color formats in video coding
US11765370B2 (en) * 2021-07-27 2023-09-19 Mediatek Inc. Video residual decoding apparatus using neighbor storage device with smaller storage size to store neighbor data for context selection and associated method
WO2023172704A1 (en) * 2022-03-09 2023-09-14 Innopeak Technology, Inc. Attribute level coding for geometry point cloud coding
WO2023182673A1 (ko) * 2022-03-21 2023-09-28 현대자동차주식회사 컨텍스트 모델 초기화를 사용하는 비디오 코딩을 위한 방법 및 장치
WO2023193724A1 (en) * 2022-04-05 2023-10-12 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
CN114928747B (zh) * 2022-07-20 2022-12-16 阿里巴巴(中国)有限公司 基于av1熵编码的上下文概率处理电路、方法及相关装置

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040122693A1 (en) 2002-12-23 2004-06-24 Michael Hatscher Community builder
KR100703773B1 (ko) 2005-04-13 2007-04-06 삼성전자주식회사 향상된 코딩 효율을 갖는 엔트로피 코딩 및 디코딩 방법과이를 위한 장치, 이를 포함하는 비디오 코딩 및 디코딩방법과 이를 위한 장치
KR100703776B1 (ko) 2005-04-19 2007-04-06 삼성전자주식회사 향상된 코딩 효율을 갖는 컨텍스트 기반 적응적 산술 코딩및 디코딩 방법과 이를 위한 장치, 이를 포함하는 비디오코딩 및 디코딩 방법과 이를 위한 장치
US7983343B2 (en) 2006-01-12 2011-07-19 Lsi Corporation Context adaptive binary arithmetic decoding for high definition video
JP4660433B2 (ja) 2006-06-29 2011-03-30 株式会社東芝 符号化回路、復号回路、エンコーダ回路、デコーダ回路、cabac処理方法
CA2629482A1 (en) 2007-04-21 2008-10-21 Avid Technology, Inc. Using user context information to select media files for a user in a distributed multi-user digital media system
US8516505B2 (en) 2008-03-14 2013-08-20 Microsoft Corporation Cross-platform compatibility framework for computer applications
CA2871268C (en) 2008-07-11 2015-11-03 Nikolaus Rettelbach Audio encoder, audio decoder, methods for encoding and decoding an audio signal, audio stream and computer program
AP3334A (en) * 2008-10-24 2015-07-31 Univ California Vaccine against african horse sickness virus
US8873626B2 (en) 2009-07-02 2014-10-28 Qualcomm Incorporated Template matching for video coding
TWI403170B (zh) 2010-05-21 2013-07-21 Univ Nat Chiao Tung 背景調適性二進制算術解碼裝置及其解碼方法
US8344917B2 (en) 2010-09-30 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for context initialization in video coding and decoding
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
CN102231830B (zh) 2010-11-23 2013-04-17 浙江大学 用于上下文算术编解码的运算单元
US9215473B2 (en) 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
US20120230418A1 (en) * 2011-03-08 2012-09-13 Qualcomm Incorporated Coding of transform coefficients for video coding
WO2012134246A2 (ko) 2011-04-01 2012-10-04 엘지전자 주식회사 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치
FR2977111A1 (fr) 2011-06-24 2012-12-28 France Telecom Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
US20130083856A1 (en) * 2011-06-29 2013-04-04 Qualcomm Incorporated Contexts for coefficient level coding in video compression
US20130003857A1 (en) 2011-06-29 2013-01-03 General Instrument Corporation Methods and system for using a scan coding pattern during inter coding
US9060173B2 (en) 2011-06-30 2015-06-16 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US8693401B2 (en) * 2011-07-20 2014-04-08 Connectem Inc. Method and system for optimized handling of context using hierarchical grouping (for machine type communications)
CN107465934B (zh) 2011-10-31 2020-06-26 三星电子株式会社 确定上下文模型的方法
US20130114691A1 (en) * 2011-11-03 2013-05-09 Qualcomm Incorporated Adaptive initialization for context adaptive entropy coding
WO2013074088A1 (en) 2011-11-15 2013-05-23 Intel Corporation Video encoder with 2-bin per clock cabac encoding
CA2773990C (en) 2011-11-19 2015-06-30 Research In Motion Limited Multi-level significance map scanning
KR101802334B1 (ko) 2011-12-02 2017-12-29 삼성전자주식회사 적응적 탬플릿을 이용한 이진 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
CN103931188B (zh) 2012-01-16 2017-05-10 寰发股份有限公司 语法元素的基于上下文的自适应二进制算术编码装置及方法
WO2013106987A1 (en) 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of bypass coding and reducing contexts for some syntax elements
US9191670B2 (en) 2012-01-17 2015-11-17 Qualcomm Incorporated Throughput improvement for CABAC coefficient level coding
US9749661B2 (en) * 2012-01-18 2017-08-29 Qualcomm Incorporated Sub-streams for wavefront parallel processing in video coding
AU2012200319B2 (en) 2012-01-19 2015-11-26 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit
US9654772B2 (en) * 2012-01-19 2017-05-16 Qualcomm Incorporated Context adaptive entropy coding with a reduced initialization value set
US9106918B2 (en) 2012-01-20 2015-08-11 Sony Corporation Coefficient coding harmonization in HEVC
AU2012200345B2 (en) 2012-01-20 2014-05-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the significance map residual coefficients of a transform unit
US9866829B2 (en) 2012-01-22 2018-01-09 Qualcomm Incorporated Coding of syntax elements that correspond to coefficients of a coefficient block in video coding
US9363510B2 (en) * 2012-03-02 2016-06-07 Qualcomm Incorporated Scan-based sliding window in context derivation for transform coefficient coding
US9036710B2 (en) * 2012-03-08 2015-05-19 Blackberry Limited Unified transform coefficient encoding and decoding
CN103327316B (zh) 2012-03-22 2016-08-10 上海算芯微电子有限公司 视频宏块的上下文信息存取方法和系统
US9237344B2 (en) 2012-03-22 2016-01-12 Qualcomm Incorporated Deriving context for last position coding for video coding
US9264706B2 (en) 2012-04-11 2016-02-16 Qualcomm Incorporated Bypass bins for reference index coding in video coding
KR102096566B1 (ko) 2012-04-13 2020-04-02 지이 비디오 컴프레션, 엘엘씨 저지연 화상 코딩
US9491463B2 (en) 2012-04-14 2016-11-08 Qualcomm Incorporated Group flag in transform coefficient coding for video coding
US9124872B2 (en) * 2012-04-16 2015-09-01 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
EP2654296A1 (en) * 2012-04-16 2013-10-23 BlackBerry Limited Modified HEVC level coding of video data
US9294779B2 (en) * 2012-06-15 2016-03-22 Blackberry Limited Multi-bit information hiding using overlapping subsets
US9088769B2 (en) * 2012-06-28 2015-07-21 Blackberry Limited Reduced worst-case context-coded bins in video compression with parity hiding
RU2653236C2 (ru) 2012-09-26 2018-05-07 Вилос Медиа Интернэшнл Лимитед Способ кодирования изображения, способ декодирования изображения, устройство кодирования изображения, устройство декодирования изображения и устройство кодирования и декодирования изображения
JP2014090326A (ja) 2012-10-30 2014-05-15 Mitsubishi Electric Corp 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法
RU2608353C1 (ru) 2013-01-04 2017-01-18 Самсунг Электроникс Ко., Лтд. Способ энтропийного кодирования сегмента слайса и устройство для него, и способ энтропийного декодирования сегмента слайса и устройство для него
KR102218196B1 (ko) 2013-10-28 2021-02-23 삼성전자주식회사 인코더, 이의 동작 방법과, 상기 인코더를 포함하는 장치들
US20150334425A1 (en) 2014-05-14 2015-11-19 Blackberry Limited Adaptive context initialization
US9425822B2 (en) 2014-08-05 2016-08-23 Broadcom Corporation Simplified range and context update for multimedia context-adaptive binary arithmetic coding design
WO2016049582A1 (en) 2014-09-25 2016-03-31 Oracle International Corporation System and method for determination of partition identifiers in a multitenant application server environment
US10334248B2 (en) 2015-05-29 2019-06-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design

Also Published As

Publication number Publication date
EP3304915A1 (en) 2018-04-11
WO2016196376A1 (en) 2016-12-08
BR112017025556A2 (pt) 2018-08-07
US10574993B2 (en) 2020-02-25
AU2016271137A1 (en) 2017-11-16
TW201711468A (zh) 2017-03-16
JP6619028B2 (ja) 2019-12-11
KR20180013910A (ko) 2018-02-07
CN107660339A (zh) 2018-02-02
WO2016196369A1 (en) 2016-12-08
KR102600724B1 (ko) 2023-11-09
TW201711467A (zh) 2017-03-16
AU2016271137B2 (en) 2020-09-03
CN107690807B (zh) 2020-09-15
JP2018521552A (ja) 2018-08-02
US20160353112A1 (en) 2016-12-01
TWI699110B (zh) 2020-07-11
US10334248B2 (en) 2019-06-25
EP3304916B1 (en) 2022-01-05
CN107667531A (zh) 2018-02-06
KR20180013911A (ko) 2018-02-07
BR112017025521A2 (pt) 2018-08-07
EP3304901A1 (en) 2018-04-11
BR112017025484B1 (pt) 2023-10-31
EP3304916A1 (en) 2018-04-11
AU2016271140B2 (en) 2020-12-03
US20160353113A1 (en) 2016-12-01
CN107667531B (zh) 2020-07-28
WO2016196379A1 (en) 2016-12-08
US11233998B2 (en) 2022-01-25
JP2018521553A (ja) 2018-08-02
US20160353111A1 (en) 2016-12-01
CN107660339B (zh) 2020-03-24
JP6873051B2 (ja) 2021-05-19
KR20180013909A (ko) 2018-02-07
AU2016271130A1 (en) 2017-11-09
JP2018521554A (ja) 2018-08-02
CN107690807A (zh) 2018-02-13
TW201711464A (zh) 2017-03-16
AU2016271130B2 (en) 2020-11-26
AU2016271140A1 (en) 2017-11-16
BR112017025484A2 (pt) 2018-08-07

Similar Documents

Publication Publication Date Title
ES2905415T3 (es) Codificar datos usando un diseño de codificación binaria aritmética adaptativa según contexto (CABAC) mejorado
US11039143B2 (en) Memory reduction for context initialization with temporal prediction
ES2884375T3 (es) Intra predicción de croma de modelo lineal para codificación de vídeo
KR102639864B1 (ko) 진보된 산술 코더
ES2867624T3 (es) Extracción de subflujos de bits de MCTS para codificación de vídeo
ES2844549T3 (es) Inicialización del parámetro de Rice para la codificación de niveles de coeficiente en un proceso de codificación de vídeo
ES2897708T3 (es) Modelado de contexto eficiente en memoria
ES2750124T3 (es) Elementos sintácticos de señalización para coeficientes de transformada para subconjuntos de una unidad de codificación a nivel de hoja
ES2736312T3 (es) Señalización de imágenes de referencia a largo plazo para codificación de vídeo