ES2705746T3 - Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto - Google Patents

Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto Download PDF

Info

Publication number
ES2705746T3
ES2705746T3 ES12788010T ES12788010T ES2705746T3 ES 2705746 T3 ES2705746 T3 ES 2705746T3 ES 12788010 T ES12788010 T ES 12788010T ES 12788010 T ES12788010 T ES 12788010T ES 2705746 T3 ES2705746 T3 ES 2705746T3
Authority
ES
Spain
Prior art keywords
context
video
value
values
entropy coding
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
ES12788010T
Other languages
English (en)
Inventor
Liwei Guo
Xianglin Wang
Marta Karczewicz
Rojals Joel Sole
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 ES2705746T3 publication Critical patent/ES2705746T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un procedimiento para inicializar un contexto usado para codificar datos de vídeo en un proceso de codificación aritmética binaria adaptativa al contexto (CABAC), el procedimiento que comprende: determinar un primer valor de índice de parámetro de inicialización de 4 bits, m, como x>> 4, donde x es un parámetro de 8 bits, y donde «>>» indica una operación de desplazamiento a la derecha; determinar un segundo valor de índice de parámetro de inicialización de 4 bits, n, como x&15, donde x es el mismo parámetro de 8 bits, y «&» indica una operación AND lógica; determinar un valor de pendiente y un valor de intersección a partir de los valores de índices de parámetros de inicialización primero y segundo correspondientes, en el que determinar el valor de pendiente y el valor de intersección comprende calcular el valor de pendiente y el valor de intersección a partir de los valores de índices de parámetros de inicialización primero y segundo usando una o más fórmulas; e inicializar el estado del contexto usado para codificar los datos de vídeo en el proceso CABAC usando el valor de pendiente y el valor de intersección determinados, en el que un intervalo suficientemente grande de valores de pendiente e intersección para inicializar el estado del contexto se cubre usando m para representar un valor de índice de pendiente y n para representar un valor de índice de intersección.

Description

DESCRIPCIÓN
Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto
CAMPO TÉCNICO
[0001] La presente divulgación se refiere a la codificación de entropía de datos de vídeo o similares y, más particularmente, a la codificación de entropía adaptativa al contexto.
ANTECEDENTES
[0002] Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, que incluyen televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos móviles o de radio por satélite, los denominados «teléfonos inteligentes», dispositivos de teleconferencia, dispositivos de transmisión de vídeo en continuo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, codificación de vídeo avanzada (AVC), la norma de codificación de vídeo de alta eficiencia (HEVC) actualmente en desarrollo y las extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital con más eficiencia implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo realizan la predicción espacial (intraimagen) y/o la predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca a las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un segmento de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) puede dividirse en bloques de vídeo, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo de un segmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a unas muestras de referencia de bloques contiguos en la misma imagen. Los bloques de vídeo de un segmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a unas muestras de referencia de bloques vecinos en la misma imagen o predicción temporal con respecto a unas muestras de referencia de otras imágenes de referencia. Las imágenes pueden denominarse tramas, y las imágenes de referencia pueden denominarse tramas de referencia.
[0004] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio del píxel hasta un dominio de transformada, dando como resultado unos coeficientes de transformada residuales, que a continuación se pueden cuantificar. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden explorarse con el fin de generar un vector unidimensional de coeficientes de transformada, y puede aplicarse codificación de entropía para lograr aún más compresión.
[0005] Los siguientes documentos comprenden técnica anterior referente a la codificación aritmética binaria adaptativa al contexto (CABAC):
D. Marpe et al.: «Final CABAC Cleanup [Limpieza definitiva de CABAC]», 6.a reunión JVT, 05-12-2002 a 13­ 12-2002; Awaji, Japón, documento n.° JVT-F039r1,
H. Schwarz et al.: «CABAC and Slices [CABAC y segmentos]», 5.a reunión JVT; 9-10-2002 a 17-10-2002, Ginebra, Suiza, documento n.°. JVT-E154,
EP 2293580 A1 y
T. Wiegand: «Editor’s Proposed Revision of JVT-E146d37 [Revisión propuesta por el editor de JVT-E146d37]», 6.a reunión JVT, 5-12-2002 - 13-12-2002; Awaji, Japón, documento n.°. JVT-F082r2.
SUMARIO
[0006] La presente invención está definida por las reivindicaciones adjuntas. La presente divulgación describe técnicas para codificar datos, tales como datos de vídeo. Por ejemplo, las técnicas se pueden usar para codificar datos de vídeo, como coeficientes de transformada residual y/u otros elementos sintácticos, generados por procesos de codificación de vídeo. En particular, la divulgación describe técnicas que pueden favorecer la codificación eficiente de datos de vídeo usando procesos de codificación de entropía adaptativa al contexto.
[0007] En un ejemplo, las técnicas de la presente divulgación pueden permitir que un sistema o dispositivo de codificación codifiquen datos de vídeo con más eficiencia que cuando usan otras técnicas. En particular, las técnicas descritas en el presente documento pueden permitir que el sistema o dispositivo de codificación tengan una menor complejidad en relación con otros sistemas o dispositivos al codificar los datos usando un proceso de codificación de entropía adaptativa al contexto, tal como, por ejemplo, un proceso de codificación aritmética binaria adaptativa al contexto (CABAC). Por ejemplo, las técnicas pueden reducir una cantidad de información almacenada en el sistema o dispositivo de codificación y/o transmitida a o desde el sistema o dispositivo de codificación, con el propósito de inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto. En un ejemplo, la cantidad de información puede reducirse almacenando y/o transmitiendo valores de índices de parámetros de inicialización que indican unos parámetros de inicialización usados para inicializar los contextos, en lugar de almacenar y/o transmitir los parámetros de inicialización directamente.
[0008] En un ejemplo, un procedimiento de codificación de entropía adaptativa al contexto puede incluir determinar uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización. El procedimiento también puede incluir determinar uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización. Además, el procedimiento puede incluir la inicialización del uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0009] En otro ejemplo, un aparato para codificación de entropía adaptativa al contexto puede incluir un codificador. En este ejemplo, el codificador puede estar configurado para determinar uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización. El codificador puede estar configurado además para determinar uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa de contexto basándose en el uno o más parámetros de inicialización. El codificador puede estar configurado además para inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0010] En otro ejemplo más, un dispositivo para codificación de entropía adaptativa al contexto puede incluir medios para determinar uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización. El dispositivo puede incluir además medios para determinar uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización. El dispositivo puede incluir además medios para inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0011] Las técnicas descritas en la presente divulgación pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en hardware, un aparato puede realizarse como uno o más circuitos integrados, uno o más procesadores, lógica discreta o cualquier combinación de los mismos. Si se implementan en software, el software puede ejecutarse en uno o más procesadores, tales como uno o más microprocesadores, un circuito integrado específico de la aplicación (ASIC), una matriz de puertas programables in situ (FPGA) o unos procesadores de señales digitales (DSP). El software que ejecuta las técnicas se puede almacenar inicialmente en un medio de almacenamiento legible por ordenador tangible o no transitorio y cargarse y ejecutarse en el uno o más procesadores.
[0012] En consecuencia, la presente divulgación también contempla un medio de almacenamiento legible por ordenador no transitorio que tiene almacenadas en el mismo instrucciones que, al ejecutarse, pueden hacer que uno o más procesadores realicen una codificación de entropía adaptativa al contexto. En este ejemplo, las instrucciones pueden hacer que el uno o más procesadores determinen uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización. Las instrucciones también pueden hacer que el uno o más procesadores determinen uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización. Las instrucciones pueden hacer además que el uno o más procesadores inicialicen el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0013] Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la siguiente descripción. Otras características, objetivos y ventajas resultarán evidentes a partir de la descripción y de los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0014]
La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y descodificación de vídeo que puede implementar técnicas para la inicialización de estados y probabilidades de contextos para codificación de entropía adaptativa al contexto, de conformidad con las técnicas de la presente divulgación.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar técnicas para inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto, de conformidad con las técnicas de la presente divulgación.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo que puede implementar técnicas para inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto, de conformidad con las técnicas de la presente divulgación.
La figura 4 es un diagrama conceptual que ilustra un ejemplo de jerarquía temporal de una secuencia de vídeo codificada, codificada usando codificación de vídeo escalable, de conformidad con las técnicas de la presente divulgación.
Las figuras 5-8 son diagramas de flujo que ilustran procedimientos de ejemplo de inicialización de uno o más contextos y probabilidades de un proceso de codificación de entropía adaptativa al contexto, de conformidad con las técnicas de la presente divulgación.
DESCRIPCIÓN DETALLADA
[0015] La presente divulgación describe técnicas para codificar datos, tales como datos de vídeo. Por ejemplo, las técnicas se pueden usar para codificar datos de vídeo, como coeficientes de transformada residual y/u otros elementos sintácticos, generados por procesos de codificación de vídeo. En particular, la divulgación describe técnicas que pueden favorecer la codificación eficiente de datos de vídeo usando procesos de codificación de entropía adaptativa al contexto. Las técnicas descritas en la presente divulgación pueden ser aplicables a la codificación de otros tipos de datos, sin embargo, estos no son modos de realización de la presente invención definida en las reivindicaciones adjuntas.
[0016] En la presente divulgación, el término «codificación» se refiere a la codificación que tiene lugar en un codificador o la descodificación que tiene lugar en un descodificador. De manera similar, el término «codificador» se refiere a un codificador, un descodificador o un codificador/descodificador combinado (por ejemplo, «CÓDEC»). Los términos codificador, descodificador y CÓDEC se refieren todos a máquinas específicas diseñadas para la codificación (es decir, codificación y/o descodificación) de datos, tales como datos de vídeo, de conformidad con la presente divulgación.
[0017] En un ejemplo, las técnicas de la presente divulgación pueden permitir que un sistema o dispositivo de codificación codifique diversos tipos de datos, tales como, por ejemplo, datos de vídeo, con más eficiencia que cuando se usan otras técnicas. En particular, las técnicas descritas en el presente documento pueden permitir que el sistema o dispositivo de codificación tengan una menor complejidad en relación con otros sistemas o dispositivos al codificar los datos usando un proceso de codificación de entropía adaptativa al contexto, tal como, por ejemplo, un proceso de codificación aritmética binaria adaptativa al contexto (CABAC). Por ejemplo, las técnicas pueden reducir una cantidad de información almacenada en el sistema o dispositivo de codificación y/o transmitida a o desde el sistema o dispositivo de codificación, con el propósito de inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto. En un ejemplo, la cantidad de información puede reducirse almacenando y/o transmitiendo valores de índices de parámetros de inicialización que indican unos parámetros de inicialización usados para inicializar los contextos, en lugar de almacenar y/o transmitir los parámetros de inicialización directamente.
[0018] Además, en otro ejemplo, las técnicas pueden mejorar la compresión de los datos cuando el sistema o dispositivo de codificación está configurado para codificar los datos mediante el proceso de codificación de entropía adaptativa al contexto. Por ejemplo, las técnicas pueden mejorar la compresión de los datos al permitir que el sistema o dispositivo de codificación inicialice uno o más contextos del proceso de codificación de entropía adaptativa al contexto, de modo que los contextos incluyan probabilidades iniciales relativamente más precisas en comparación con las probabilidades iniciales determinadas mediante otras técnicas de inicialización de contexto. En particular, los contextos pueden inicializarse basándose en información de capa temporal asociada a los datos, usando información de estados de contexto y parámetros de cuantificación de referencia y diversas relaciones, o usando uno o más desplazamientos de probabilidad. Adicionalmente, las técnicas pueden mejorar aún más la compresión de los datos al permitir que el sistema o dispositivo de codificación actualice subsiguientemente las probabilidades de los contextos, de modo que las probabilidades actualizadas sean relativamente más precisas en comparación con las probabilidades actualizadas mediante otras técnicas de actualización de probabilidades de contexto, mediante las mismas técnicas o unas similares a las descritas anteriormente.
[0019] En consecuencia, puede haber un ahorro de bits relativo para un flujo de bits codificado que incluye los datos codificados, así como otra información sintáctica (por ejemplo, los valores de índices de parámetros de inicialización) transmitidos a o desde el sistema o dispositivo de codificación, y una reducción relativa de la complejidad del sistema o dispositivo de codificación usados para codificar los datos, cuando se usan las técnicas de la presente divulgación.
[0020] Las técnicas de la presente divulgación se pueden usar, en algunos ejemplos, con cualquier metodología de codificación de entropía adaptativa al contexto, incluida la codificación de longitud variable adaptativa al contexto (CAVLC), CABAC, codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación de entropía de partición de intervalos de probabilidad (PIPE) u otra metodología de codificación de entropía adaptativa al contexto. La codificación CABAC se describe en el presente documento con fines de ilustración solamente, y sin limitación en cuanto a las técnicas ampliamente descritas en la presente divulgación. Asimismo, las técnicas descritas en el presente documento pueden aplicarse a la codificación de otros tipos de datos en general, por ejemplo, además de los datos de vídeo.
[0021] La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y descodificación de vídeo que puede implementar técnicas para la inicialización de estados y probabilidades de contextos para codificación de entropía adaptativa al contexto, de conformidad con las técnicas de la presente divulgación. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo 12 de origen que genera datos de vídeo codificados que un dispositivo 14 de destino va a descodificar en un momento posterior. El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de entre una amplia gama de dispositivos, incluidos ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tableta, descodificadores, teléfonos tales como los denominados teléfonos «inteligentes», los denominados paneles «inteligentes», televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmisión de vídeo en continuo o similares. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden estar equipados para la comunicación inalámbrica.
[0022] El dispositivo 14 de destino puede recibir los datos de vídeo codificados que se van a descodificar mediante un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de desplazar los datos de vídeo codificados desde el dispositivo 12 de origen hasta el dispositivo 14 de destino. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo 12 de origen transmita datos de vídeo codificados directamente al dispositivo 14 de destino en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo 14 de destino. 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 amplia 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 12 de origen hasta el dispositivo 14 de destino.
[0023] De forma alternativa, los datos de vídeo codificados pueden facilitarse desde la interfaz 22 de salida hasta un dispositivo 24 de almacenamiento. De forma similar, se puede acceder a los datos de vídeo codificados desde el dispositivo 24 de almacenamiento mediante una interfaz 26 de entrada. El dispositivo 24 de almacenamiento puede incluir cualquiera de una variedad de medios de almacenamiento de datos de acceso distribuido o local, tales como una unidad de disco duro, unos discos Blu-ray, unos DVD, unos CD-ROM, una memoria flash, una memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En otro ejemplo, el dispositivo 24 de almacenamiento puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo 12 de origen. El dispositivo 14 de destino puede acceder a datos de vídeo almacenados en el dispositivo 24 de almacenamiento por medio de transmisión en continuo o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo 14 de destino. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectado en red (NAS) o una unidad de disco local. El dispositivo 14 de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión wifi), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo 24 de almacenamiento puede ser una transmisión en continuo, una transmisión de descarga o una combinación de ambas.
[0024] Las técnicas de la presente divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como apoyo a cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en continuo, por ejemplo, mediante Internet, codificación de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede estar configurado para admitir transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como la transmisión de vídeo en continuo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0025] En el ejemplo de la figura 1, el dispositivo 12 de origen incluye una fuente 18 de vídeo, un codificador 20 de vídeo y una interfaz 22 de salida. En algunos casos, la interfaz 22 de salida puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo 12 de origen, la fuente 18 de vídeo puede incluir una fuente tal como un dispositivo de captación de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contiene vídeo captado previamente, una interfaz de vídeo en tiempo real para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos de ordenador para generar datos de gráficos de ordenador como el vídeo de origen, o una combinación de dichas fuentes. En un ejemplo, si la fuente 18 de vídeo es una videocámara, el dispositivo 12 de origen y el dispositivo 14 de destino pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, las técnicas descritas en la presente divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o alámbricas.
[0026] El codificador 20 de vídeo puede codificar el vídeo captado, precaptado o generado por ordenador. Los datos de vídeo codificados se pueden transmitir directamente al dispositivo 14 de destino por medio de la interfaz 22 de salida del dispositivo 12 de origen. Los datos de vídeo codificados se pueden almacenar también (o de forma alternativa) en el dispositivo 24 de almacenamiento para un posterior acceso por el dispositivo 14 de destino u otros dispositivos, para su descodificación y/o reproducción.
[0027] El dispositivo 14 de destino incluye una interfaz 26 de entrada, un descodificador 30 de vídeo y un dispositivo 28 de visualización. En algunos casos, la interfaz 26 de entrada puede incluir un receptor y/o un módem. La interfaz 26 de entrada del dispositivo 14 de destino recibe los datos de vídeo codificados a través del enlace 16 o desde el dispositivo 24 de almacenamiento. Los datos de vídeo codificados transmitidos a través del enlace 16, o proporcionados en el dispositivo 24 de almacenamiento, pueden incluir una variedad de elementos sintácticos generados por el codificador 20 de vídeo, para su uso por un descodificador de vídeo, tal como el descodificador 30 de vídeo, en la descodificación de los datos de vídeo. Dichos elementos sintácticos se pueden incluir con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenar en un medio de almacenamiento o almacenar en un servidor de archivos.
[0028] El dispositivo 28 de visualización puede estar integrado en, o ser externo a, el dispositivo 14 de destino. En algunos ejemplos, el dispositivo 14 de destino puede incluir un dispositivo de visualización integrado, tal como un dispositivo 28 de visualización, y/o estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo 14 de destino puede ser un dispositivo de visualización. En general, el dispositivo 28 de visualización visualiza los datos de vídeo descodificado ante un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0029] El codificador 20 de vídeo y el descodificador 30 de vídeo pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de codificación de vídeo de alta eficiencia (HEVC), actualmente en fase de desarrollo por el Equipo de colaboración conjunta en codificación de vídeo (JCT-VC) del Grupo de expertos de codificación de vídeo (VCEG) de ITU-T y el Grupo de expertos en imágenes en movimiento (MPEG) de ISO/IEC, y pueden seguir el modelo de prueba de HEVC (HM). De forma alternativa, el codificador 20 de vídeo y el descodificador 30 de vídeo pueden funcionar de acuerdo con otras normas de propiedad o industriales, tales como la norma ITU-T H.264, de forma alternativa denominada MPEG-4, parte 10, codificación avanzada de vídeo (AVC, en lo sucesivo denominada H.264/AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de la presente divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de compresión de vídeo incluyen MPEG-2 e ITU-T H.263. Un borrador reciente de la norma HEVC, denominado «HEVC Working Draft 8 [Borrador 8 de trabajo de la HEVC]» o «WD8», se describe en el documento JCTVC-J1003_d7, Bross et al., titulado «High efficiency video coding (HEVC) text specification draft 8 [Borrador 8 de especificación textual de la codificación de vídeo de alta eficiencia (HEVC)]», Equipo de colaboración conjunta en codificación de vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10.a reunión: Estocolmo, SE, 11-20 de julio de 2012.
[0030] Aunque no se muestra en la figura 1, en algunos aspectos, tanto el codificador 20 de vídeo como el descodificador 30 de vídeo pueden estar integrados en un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para ocuparse de la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden seguir el protocolo de multiplexador ITU H.223 u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0031] El codificador 20 de vídeo y el descodificador 30 de vídeo pueden implementarse como cualquiera de una variedad de circuitos de codificador o descodificador adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (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 de almacenamiento no transitorio legible por ordenador adecuado, y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Cada uno de entre el codificador 20 de vídeo y el descodificador 30 de vídeo puede estar incluido en uno o más codificadores o descodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0032] La iniciativa de normalización HEVC se basa en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a los dispositivos existentes de acuerdo con, por ejemplo, la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificación de intrapredicción, el HM puede proporcionar hasta treinta y cinco modos de codificación de intrapredicción.
[0033] En general, el modelo de explotación del HM especifica que una trama o imagen de vídeo puede dividirse en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU), que incluyen muestras tanto de luma como de croma. Un bloque de árbol tiene un fin similar a un macrobloque de la norma H.264. Un segmento incluye un número de bloques de árbol consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más segmentos. Cada bloque de árbol puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuaternario. Por ejemplo, un bloque de árbol, como un nodo raíz del árbol cuaternario, puede dividirse en cuatro nodos hijo, y cada nodo hijo puede, a su vez, ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final no dividido, como un nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces que puede dividirse un bloque de árbol, y también pueden definir un tamaño mínimo de los nodos de codificación.
[0034] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y puede ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de partición pueden diferir dependiendo de si la CU está codificada en modo de salto o directo, codificada en modo de intrapredicción o codificada en modo de interpredicción. Las PU pueden dividirse para tener forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la partición de la CU en una o más TU de acuerdo con un árbol cuaternario. Una TU puede tener forma cuadrada o no cuadrada.
[0035] La norma HEVC realiza transformadas de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU típicamente se basa en el tamaño de las PU de una CU dada, definida para una LCU dividida, aunque puede que no sea siempre así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas mediante una estructura de árbol cuaternario conocida como «árbol cuaternario residual» (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencia de píxel asociados a las TU pueden transformarse para generar coeficientes de transformada, que pueden cuantificarse.
[0036] En general, una PU incluye datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU se codifica en modo intra, la PU puede incluir datos que describen un modo de intrapredicción para la PU. En otro ejemplo, cuando la PU se codifica en modo inter, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la 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.
[0037] En general, se usa una TU para los procesos de transformada y cuantificación. Una CU dada que tiene una o más PU también puede incluir una o más TU. Tras la predicción, el codificador 20 de vídeo puede calcular valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencia de píxel que se pueden transformar en coeficientes de transformada, cuantificar y explorar mediante las TU, para generar coeficientes de transformada en serie para la codificación de entropía. La presente divulgación usa típicamente el término «bloque de vídeo» para referirse a un nodo de codificación de una CU. En algunos casos específicos, la presente divulgación también puede usar el término «bloque de vídeo» para referirse a un bloque de árbol, es decir, una LCU o una CU, que incluye un nodo de codificación y unas PU y TU.
[0038] Una secuencia de vídeo incluye típicamente una serie de tramas 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 sintácticos en una cabecera del GOP, en una cabecera de una o más de las imágenes, o en otras ubicaciones, que describen un número de imágenes incluidas en el GOP. Cada segmento de una imagen puede incluir datos sintácticos de segmento que describen un modo de codificación para el segmento respectivo. El codificador 20 de vídeo actúa típicamente sobre bloques de vídeo dentro de segmentos de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación 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.
[0039] En un ejemplo, el HM admite predicción en diversos tamaños de PU. Si se supone que el tamaño de una CU particular es 2Nx2N, el HM admite intrapredicción en tamaños de PU de 2Nx2N o NxN e interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también admite la división asimétrica para interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la partición asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida en un 25 % y un 75 %. La parte de la CU correspondiente a la partición del 25 % está indicada por una «n» seguida de una indicación de «arriba», «abajo», «izquierda» o «derecha». Así pues, por ejemplo, «2NxnU» se refiere a una CU 2Nx2N que está dividida horizontalmente y tiene una PU 2Nx0,5N encima y una PU 2Nx1,5N debajo.
[0040] En la presente divulgación, «NxN» y «N por N» pueden usarse indistintamente para hacer referencia a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque de 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 de un bloque se pueden disponer en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal y en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0041] Tras la codificación de intrapredicción o interpredicción mediante las PU de una CU, el codificador 20 de vídeo puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio del espacio (también denominado «dominio del píxel») y las TU pueden comprender coeficientes en el dominio de la transformada tras la aplicación de una transformada, por ejemplo, una transformada discreta de coseno (DCT), una transformada de enteros, una transformada de wavelet o una transformada conceptualmente similar, a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y los valores de predicción correspondientes a las PU. El codificador 20 de vídeo puede formar las TU incluyendo los datos residuales para la CU y, a continuación, transformar las TU para generar coeficientes de transformada para la CU.
[0042] Tras cualquier transformada para generar coeficientes de transformada, el codificador 20 de vídeo puede realizar la cuantificación de los coeficientes de transformada. La cuantificación se refiere, en general, a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
[0043] En algunos ejemplos, el codificador 20 de vídeo puede usar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados con el fin de generar un vector en serie que se pueda someter a codificación de entropía. Los órdenes de exploración predefinidos pueden variar basándose en factores como el modo de codificación o el tamaño o la forma de transformada usados en el proceso de codificación. Además, en otros ejemplos, el codificador 20 de vídeo puede realizar una exploración adaptativa, por ejemplo, usando un orden de exploración que se adapta periódicamente. El orden de exploración puede adaptarse de manera diferente para diferentes bloques, por ejemplo, basándose en el modo de codificación u otros factores. En cualquier caso, después de explorar los coeficientes de transformada cuantificados para formar el vector «unidimensional» en serie, el codificador 20 de vídeo puede realizar además la codificación de entropía del vector unidimensional, por ejemplo, de acuerdo con la codificación CAVLC, CABAC, SBAC, PIPE, u otra metodología de codificación de entropía adaptativa al contexto. El codificador 20 de vídeo también puede realizar la codificación de entropía de los elementos sintácticos asociados a los datos de vídeo codificados, para su uso por el descodificador 30 de vídeo en la descodificación de los datos de vídeo. Además, el descodificador 30 de vídeo puede realizar las mismas técnicas de codificación de entropía adaptativa al contexto que el codificador de vídeo 20, o similares, para descodificar los datos de vídeo codificados y cualquier elemento sintáctico adicional asociado a los datos de vídeo.
[0044] Para realizar la CABAC, el codificador 20 de vídeo puede asignar un contexto de un modelo de contexto a un símbolo que se va a transmitir. El contexto se puede referir, por ejemplo, a si los valores contiguos del símbolo son distintos de cero o no. En otro ejemplo, para realizar la CAVLC, el codificador 20 de vídeo puede seleccionar un código de longitud variable para un símbolo que se va a transmitir. Las palabras de código de la CAVLC, y la codificación de longitud variable, en general, pueden construirse de modo que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos relativamente más largos correspondan a símbolos menos probables. De esta manera, el uso de la CAVLC puede lograr un ahorro en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo. Adicionalmente, las técnicas descritas anteriormente son igualmente aplicables al descodificador 30 de vídeo usado para descodificar uno o más símbolos codificados mediante el codificador 20 de vídeo de la manera descrita anteriormente.
[0045] En general, de acuerdo con las técnicas según la norma H.264/AVC y ciertas versiones provisionales según la norma HEVC descritas anteriormente, codificar un símbolo de datos (por ejemplo, un elemento sintáctico, o una parte de un elemento sintáctico, para un bloque codificado de datos de vídeo) mediante codificación CABAC puede implicar las etapas siguientes:
(1) Binarización: si un símbolo que se va a codificar no es de valor binario, este se correlaciona con una secuencia de los denominados «bins». Cada bin puede tener un valor de «0» o «1»
(2) Asignación de contexto: cada bin (por ejemplo, en un denominado modo de codificación «normal») se asigna a un contexto. Un modelo de contexto determina cómo se calcula un contexto (por ejemplo, se asigna) para un bin dado basándose en información disponible para el bin, como los valores de símbolos codificados previamente, o el número de bin (por ejemplo, una posición del bin dentro de una secuencia de bins que incluye el bin).
(3) Codificación de bins: los bins se codifican con un codificador aritmético. Para codificar un bin dado, el codificador aritmético requiere como entrada una probabilidad (por ejemplo, una probabilidad estimada) de un valor del bin, es decir, la probabilidad de que el valor del bin sea igual a «0», y la probabilidad de que el valor del bin sea igual a «1». Por ejemplo, un contexto asignado al bin, como se ha descrito anteriormente en la etapa (2), puede indicar esta probabilidad del valor del bin. En un ejemplo, una probabilidad de cada contexto (por ejemplo, una probabilidad estimada indicada por cada contexto) puede representarse mediante un valor entero asociado al contexto denominado «estado» de contexto. Cada contexto tiene un estado de contexto (por ejemplo, un estado de contexto particular en un momento dado). Así pues, un estado de contexto (es decir, una probabilidad estimada) es igual para los bins asignados a un contexto, y difiere entre contextos (por ejemplo, varía entre diferentes contextos y, en algunos casos, para un contexto dado a lo largo del tiempo). Adicionalmente, para codificar el bin, el codificador aritmético requiere además como entrada el valor de bin, como se ha descrito anteriormente.
(4) Actualización de estado: la probabilidad (por ejemplo, el estado de contexto) para un contexto seleccionado se actualiza basándose en el valor codificado real del bin. Por ejemplo, si el valor de bin era de «1», la probabilidad de los «1» aumenta, y si el valor de bin era de «0», la probabilidad de los «0» aumenta, para el contexto seleccionado.
[0046] Muchos aspectos de la presente divulgación se describen específicamente en el contexto de la codificación CABAC. Además, la codificación PIPE, CAVLC, SBAC u otras técnicas de codificación de entropía adaptativa al contexto pueden usar principios similares a los descritos en el presente documento con referencia a la codificación CABAC. En particular, estas u otras técnicas de codificación de entropía adaptativa al contexto pueden utilizar la inicialización de estados de contexto y, por lo tanto, también pueden beneficiarse de las técnicas de la presente divulgación.
[0047] Además, como se ha descrito anteriormente, las técnicas CABAC según la norma H.264/AVC incluyen los estados de contexto, en las que cada estado de contexto está implícitamente relacionado con una probabilidad. Existen variantes de CABAC en las que se usa directamente una probabilidad (por ejemplo, «0» o «1») de un símbolo dado que se está codificando, es decir, la probabilidad (o una versión entera de la probabilidad) es el estado de contexto en sí mismo, como se describirá con mayor detalle a continuación.
[0048] Antes de iniciar un proceso de codificación o descodificación CABAC, puede ser necesario asignar un estado de contexto inicial a cada contexto del proceso CABAC. En la norma H.264/AVC y en ciertas versiones provisionales de la norma HEVC, se usa una relación lineal o «modelo» para asignar estados de contexto iniciales para cada contexto. Específicamente, para cada contexto, hay unos parámetros de inicialización predefinidos, una pendiente («m») y una intersección («n»), usados para determinar el estado de contexto inicial para el contexto. Por ejemplo, de acuerdo con la norma H.264/AVC y ciertas versiones preliminares de la norma HEVC, se puede obtener un estado de contexto inicial para un contexto dado usando las siguientes relaciones:
Int iInitState = ((m * iQp)/16) n; EC. (1)
iInitState = min(max(1, iInitState), 126). EC. (2)
[0049] En la ecuación EC. (1), «m» y «n» corresponden a unos parámetros de inicialización para el contexto que se está inicializando (es decir, para el estado de contexto inicial «iInitState» que se está determinando para el contexto). Además, «iQP», que se puede denominar parámetro de cuantificación (QP) de inicialización, puede corresponder a un QP para los datos (por ejemplo, un bloque de datos de vídeo) que se está codificando. El valor del QP para los datos, y por tanto el valor de iQP, puede establecerse, por ejemplo, de trama en trama, de segmento en segmento o de bloque en bloque. Adicionalmente, los valores de los parámetros de inicialización «m» y «n» pueden variar para diferentes contextos. Además, la ecuación EC. (2) se puede denominar «función de recorte», y se puede usar para asegurar que el valor de «iInitState» varíe entre «1» y «126», lo que permite que el valor se represente usando 7 bits de datos.
[0050] En algunos ejemplos, «iInitState» se puede convertir además en un estado de contexto real del contexto en CABAC, más un símbolo de «símbolo más probable (MPS)/símbolo menos probable (LPS)», usando las siguientes expresiones:
if {ij.nit3tate >= 64)
BijjcStatB —min (62, iInitState - 64);
m_ucStatc = rci_ucState 1;
)
Else
m._ucState —min(62, 63 — iInitState);
m._ucState = m_ucState;
i
[0051] En algunos ejemplos de CABAC, en casos en que un estado de contexto para un contexto corresponde directamente a una probabilidad del contexto, como se ha descrito anteriormente, se pueden usar las siguientes relaciones para inicializar un contexto particular:
Int c = asCtxInit[0] asCtxInit[1] * (iQp - iQPreper); EC. (3)
iP0 = min(max(1, c), 32767). EC. (4)
[0052] El valor «iP0» puede indicar una probabilidad de un símbolo que se está codificando, tal como se indica directamente mediante el estado de contexto «c» para un contexto dado. En consecuencia, en este ejemplo, no es necesario convertir la probabilidad del símbolo «iP0» en símbolos MPS y LPS y un estado de contexto real, como se ha descrito anteriormente. Además, como se muestra, la relación, o «modelo», de la EC. (3) también es lineal y se basa en dos parámetros de inicialización, en concreto, «asCtxInit[0]» y «asCtxInit[1 ]». Por ejemplo, «iQP» puede corresponder una vez más al QP para los datos que se están codificando. Además, «iQPreper» puede corresponder a una constante, como un desplazamiento, usada para modificar iQp, en algunos ejemplos.
[0053] En el ejemplo descrito anteriormente, la probabilidad del símbolo iP0 se expresa como un entero usando 15 bits de datos, donde una probabilidad mínima distinta de cero es «1» y una probabilidad máxima es «32767». En este ejemplo, una probabilidad «real» se obtiene usando la expresión «iP0/32768». Adicionalmente, la ecuación EC. (4) también se puede denominar «función de recorte», y se puede usar para asegurar que el valor de «iP0» varíe entre «1» y «32767», lo que permite que el valor se represente usando 15 bits de datos.
[0054] El enfoque descrito anteriormente tiene varios inconvenientes. En un ejemplo, debido a que el proceso CABAC descrito anteriormente con referencia a la norma H.264/AVC y ciertas versiones provisionales de la norma HEVC incluyen un número significativo de contextos (por ejemplo, hasta 369 contextos), cada contexto puede inicializarse usando un conjunto particular, o «par» de parámetros de inicialización «m» y «n». Como resultado, se puede usar un número significativo de parámetros de inicialización «m» y «n» (por ejemplo, hasta 369 pares diferentes de parámetros de inicialización «m» y «n») para determinar los estados de contexto iniciales para los contextos. Además, debido a que cada uno de los parámetros de inicialización «m» y «n» se pueden representar usando hasta 8 bits de datos, puede requerirse una cantidad significativa de información (por ejemplo, un número de bits de datos) para almacenar y/o transmitir los parámetros de inicialización «m» y «n» con el fin de determinar los estados de contexto iniciales para los contextos. Por ejemplo, pueden requerirse hasta 5.904 bits de datos para almacenar y/o transmitir 369 pares diferentes de parámetros de inicialización «m» y «n», cada uno de los cuales comprende 16 bits de datos (es decir, cada uno de los parámetros de inicialización «m» y «n» de un par particular que comprende 8 bits de datos).
[0055] Adicionalmente, en otro ejemplo, la relación lineal usada para determinar los estados de contexto iniciales para los contextos, como se describe también anteriormente con referencia a la norma H.264/AVC y ciertas versiones provisionales de la norma HEVC, puede dar como resultado la determinación de las probabilidades iniciales de los contextos, indicadas por los estados de contexto iniciales, que son relativamente menos precisas que las probabilidades iniciales determinadas mediante otras técnicas. En un ejemplo, el uso de la relación lineal descrita anteriormente puede dar como resultado que las probabilidades iniciales sean relativamente menos precisas que las probabilidades iniciales determinadas usando una relación lineal que además tiene en cuenta una capa temporal asociada a los datos (por ejemplo, datos de vídeo) que se están codificando. En otro ejemplo, el uso de la relación lineal descrita anteriormente puede dar como resultado que las probabilidades iniciales sean relativamente menos precisas que las probabilidades iniciales determinadas usando una relación no lineal, parcialmente no lineal o bilineal. En otro ejemplo más, en casos en los que las probabilidades iniciales de los contextos se determinan directamente (es decir, en lugar de determinar estados de contexto iniciales que indican las probabilidades iniciales de los contextos), las probabilidades iniciales pueden ser relativamente menos precisas (por ejemplo, sesgadas) en comparación con las probabilidades iniciales que se ajustan aún más basándose en su proximidad a uno o más de un límite superior y un límite inferior de un intervalo de probabilidades que incluye las probabilidades iniciales.
[0056] La presente divulgación describe varias técnicas que pueden, en algunos casos, reducir o eliminar algunos de los inconvenientes descritos anteriormente con referencia a la inicialización de estados de contexto (es decir, la determinación de los estados de contexto iniciales para los contextos, en la que los estados de contexto iniciales indican probabilidades iniciales de los contextos), y la inicialización de probabilidades (es decir, la determinación directa de las probabilidades iniciales de los contextos) de un proceso de codificación de entropía adaptativa al contexto. En particular, las técnicas descritas en el presente documento pueden permitir que los sistemas o dispositivos de codificación de entropía adaptativa al contexto (por ejemplo, CABAC, CAVLC, SBAC, PIPE, etc.) usados para codificar datos, como por ejemplo, datos de vídeo, tengan menor complejidad en relación con otros sistemas o dispositivos. En un ejemplo, las técnicas de la presente divulgación pueden permitir que los sistemas o dispositivos almacenen y/o transmitan valores de índices de parámetros de inicialización que indican los parámetros de inicialización «m» y «m» descritos anteriormente, que se usan para determinar estados de contexto iniciales para contextos de un proceso de codificación de entropía adaptativa al contexto, en lugar de almacenar y/o transmitir los parámetros de inicialización directamente. En este ejemplo, los valores de índices de parámetros de inicialización se pueden representar usando menos información (por ejemplo, menos bits de datos) que los parámetros de inicialización, lo que posiblemente dé como resultado una cantidad reducida de información almacenada dentro de los sistemas o dispositivos y, en algunos casos, transmitida desde los sistemas hasta otros sistemas o dispositivos.
[0057] Adicionalmente, las técnicas descritas en el presente documento pueden permitir una codificación de entropía adaptativa de contexto más eficiente de los datos, como, por ejemplo, datos de vídeo, inicializando uno o más contextos de un proceso de codificación de entropía adaptativa al contexto, de tal manera que las probabilidades iniciales de los contextos son más precisas en relación con las probabilidades iniciales obtenidas mediante otras técnicas. En un ejemplo, las técnicas de la presente divulgación pueden permitir la inicialización de los contextos para tener las probabilidades iniciales relativamente más precisas determinando estados de contexto iniciales, que son indicativos de las probabilidades iniciales, para los contextos, basándose en una capa temporal asociada a los datos. En otro ejemplo, las técnicas pueden permitir la inicialización del uno o más contextos determinando los estados de contexto iniciales para los contextos usando estados de contexto de referencia y correspondientes valores de parámetros de cuantificación de referencia. En otro ejemplo más, en casos en los que las probabilidades iniciales de los contextos se determinan directamente, las técnicas pueden permitir determinar las probabilidades iniciales basándose en uno o más desplazamientos de probabilidad.
[0058] En un ejemplo, la presente divulgación describe técnicas para determinar uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización, determinando uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización, e inicializando el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0059] Por ejemplo, el desarrollo de las técnicas de la presente divulgación ha demostrado que, en algunos casos, el uso de la relación lineal entre los estados de contexto iniciales y el QP de los datos (por ejemplo, datos de vídeo) que se están codificando, descrito anteriormente con referencia a las normas H.264/AVC y HEVC, pueden dar como resultado probabilidades iniciales relativamente menos precisas de los contextos en comparación con el uso de otras técnicas. Como resultado, las probabilidades iniciales indicadas por los estados de contexto iniciales pueden ser sustancialmente diferentes de las probabilidades reales de los datos que se están codificando. En consecuencia, como se describirá con mayor detalle más adelante, la presente divulgación propone varios procedimientos de generación, o determinación, de valores de inicialización (es decir, de estados de contexto iniciales o probabilidades iniciales directamente) para que los contextos mejoren la precisión de las denominadas «estimaciones de estados/probabilidades» iniciales (es decir, las probabilidades) de los contextos. Adicionalmente, la presente divulgación también propone técnicas para reducir un ancho de bits de los parámetros de inicialización de modelo lineal (es decir, «m» y «n») descritos anteriormente, de manera que el almacenamiento para una tabla de inicialización (por ejemplo, un tamaño de la tabla) que incluye información de inicialización para los contextos (por ejemplo, los parámetros de inicialización «m» y «n») se puede reducir.
[0060] Por ejemplo, en el HM, los parámetros de inicialización «m» y «n» descritos anteriormente se almacenan usando enteros con signo de 16 bits. Así pues, se usan 16 bits de datos para almacenar cada parámetro de inicialización «m» y «n». Debido a que las técnicas de las normas H.264/AVC y ciertas versiones provisionales de la norma HEVC pueden incluir hasta 369 contextos, pueden almacenarse hasta 369 conjuntos o «pares» de parámetros de inicialización «m» y «n» (por ejemplo, 369 pares «(m, n)») dentro de un codificador particular, consumiéndose así una cantidad substancialmente grande de memoria o almacenamiento.
[0061] En algunos ejemplos, la presente divulgación describe el uso de 4 bits de datos para cada uno de los parámetros de inicialización «m» y «n». Para cubrir un intervalo suficientemente grande de valores de pendiente («m») e intersección («n»), en lugar de usar directamente «m» para representar una pendiente, y «n» para representar una intersección, las técnicas divulgadas proponen usar «m» para representar un índice de pendiente y «n» para representar un índice de intersección. En este ejemplo, se puede obtener un valor de pendiente real mediante el valor de índice de parámetro de inicialización «m» usando la siguiente relación (es decir, usando una tabla de pendiente):
Pendiente = TablaPendiente[m]
[0062] De manera similar, se puede obtener un valor de intersección real mediante el valor de índice de parámetro de inicialización «n» usando la siguiente relación (es decir, usando una tabla de intersección):
Intersección = TablaIntersección[n]
[0063] En otras palabras, de acuerdo con las técnicas divulgadas, los parámetros de inicialización «m» y «n» descritos anteriormente con referencia a las normas H.264/AVC y HEVC pueden redefinirse como valores de índices de parámetros de inicialización «m» y «n» que, a su vez, indican los parámetros de inicialización (que se pueden denominar simplemente «parámetros de inicialización de pendiente e intersección»). Sin embargo, en otros ejemplos, los parámetros de inicialización «m» y «n» de las normas H.264/AVC y HEVC pueden conservar su significado original, mientras que los valores del índices de parámetros de inicialización de las técnicas divulgadas en el presente documento pueden denominarse valores de índices de parámetros de inicialización «idx_m» e «idx_n». En los siguientes ejemplos, los valores de índices de parámetros de inicialización se denominan valores de índices de parámetros de inicialización «m» y «n».
[0064] A continuación se muestra un ejemplo de una tabla de pendiente y una tabla de intersección que incluye los valores de pendiente e intersección, respectivamente, determinados usando los valores de índices de parámetros de inicialización «m» y «n»:
TablaPendiente[16] = {-46, -39, -28, -21, -14, -11, -6, 0, 7, 12, 17, 21,26, 34, 40} TablaIntersección[16] = {-42, -25, -11, 0, 9, 20, 32, 43, 54, 63, 71,79, 92, 104, 114, 132} [0065] En algunos ejemplos, los valores de índices de parámetros de inicialización «m» de 4 bits y «n» de 4 bits se pueden combinar usando un parámetro «x» de 8 bits, donde «m = x>>4» y «n = x&15», o viceversa, «n = x>>4» y «m = x&15», se pueden usar para obtener «m» y «n» mediante «x». En este ejemplo, «>>» indica una operación de desplazamiento a la derecha, y «&» indica una operación AND lógica.
[0066] En otros ejemplos, también es posible usar números desiguales de bits para representar los valores de índices de parámetros de inicialización «m» y «n». Por ejemplo, se pueden usar 5 bits de datos para representar «m», y se pueden usar 3 bits de datos para representar «n», o viceversa.
[0067] En otros ejemplos más, en lugar de almacenar una tabla de los valores de pendiente e intersección, como se ha descrito anteriormente, los valores de pendiente e intersección pueden calcularse a partir del valor de índice de pendiente o intersección correspondientes usando una o más fórmulas o funciones, como las siguientes funciones de pendiente y/o intersección:
Pendiente = funciónA(m) y/o Intersección = funciónB(n)
[0068] Usando la pendiente como ejemplo, la función de pendiente puede ser una función lineal, como, por ejemplo, la siguiente expresión:
pendiente = c0*m c1
donde «c0» y «c1» son parámetros de la función lineal.
[0069] En otro ejemplo, la función de pendiente puede incluir solo operaciones de desplazamiento y suma, como, por ejemplo, la siguiente expresión:
pendiente = m<<k c1
donde «k» es un parámetro de desplazamiento y «c1» es una constante.
[0070] En un ejemplo adicional, para las siguientes tablas:
TablaPendiente[16] = {-45 -40 -35 -30 -25 -20 -15 -10 -5051015202530}
TablaIntersección[16] = {-16 -80816243240485664 7280 8896 104},
las siguientes relaciones, que incluyen «x», se pueden usar para determinar los valores de índices de parámetros de inicialización «m» y «n», que, a su vez, se pueden usar para determinar los valores de pendiente e intersección respectivos mediante las tablas:
m = x>>4, n = x&15 (o viceversa, n = x>>4 y m = x&15).
Una vez más, en este ejemplo, «>>» indica una operación de desplazamiento a la derecha, y «&» indica una operación AND lógica.
[0071] En algunos ejemplos, en lugar de almacenar TablaPendiente y TablaIntersección, como se ha descrito anteriormente, los valores de la pendiente y la intersección pueden calcularse usando las siguientes expresiones:
Pendiente = m*5 - 45
Intersección = n*8 - 16
(o de forma equivalente Intersección = (n<<3) - 16)
[0072] En otros ejemplos, los 4 bits del parámetro «m» y los 4 bits del parámetro «n» se pueden combinar en un parámetro de 8 bits «idx», donde, en lugar de usar dos valores de índice separados para determinar los valores de pendiente e intersección, se puede usar un solo valor de índice (es decir, «idx») , como se muestra en las siguientes expresiones:
Pendiente = TablaPendiente[idx]
Intersección = TablaIntersección[idx]
[0073] En otro ejemplo, la presente divulgación también describe técnicas para determinar uno o más estados de contexto iniciales para inicializar uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo basándose en uno o más parámetros de inicialización y un parámetro de capa temporal asociado a los datos de vídeo, e inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0074] En un ejemplo, ilustrado en la figura 4 y descrito con mayor detalle a continuación, una trama de datos de vídeo se puede codificar en una estructura jerárquica. Por ejemplo, como se representa en la figura 4, las tramas «0»,«4», y «8» están codificadas en la capa temporal «0», las tramas «2» y «6» están codificadas en la capa temporal «1» y las tramas restantes (es decir, las tramas «1», «3», «5» y «7») están codificadas en la capa temporal «2». El desarrollo de las técnicas de la presente divulgación ha demostrado que la dependencia entre diferentes tramas de datos de vídeo puede ser asimétrica. Por ejemplo, las tramas de datos de vídeo situadas en capas temporales inferiores pueden ser tramas de referencia de tramas de datos de vídeo situadas en capas temporales superiores (por ejemplo, como se muestra mediante las flechas representadas en la figura 4). Como también se muestra en la figura 4, dichas dependencias en direcciones que se invierten en relación con las ilustradas en la figura 4 pueden no estar permitidas. Como resultado, las probabilidades iniciales de los contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar una o más tramas de datos de vídeo pueden variar dependiendo de una capa temporal asociada a las tramas de datos de vídeo.
[0075] En consecuencia, la presente divulgación describe técnicas para añadir un desplazamiento a un estado de contexto inicial obtenido usando la relación lineal descrita anteriormente con referencia a las normas H.264/AVC y HEVC, por ejemplo, usando las siguientes relaciones:
Int iInitState = ((m*iQp)/16) n desplazamiento;
iInitState = min(max(1, iInitState), 126).
[0076] En un ejemplo, un valor de «offset» (desplazamiento) puede ser fijo y dependiente de una capa temporal de un segmento actual asociado a los datos que se están codificando (por ejemplo, una trama de datos de vídeo). Por ejemplo, el valor de «offset» se puede establecer en «-2» para la capa temporal «0», establecer en «2» para la capa temporal «1», establecer en «3» para la capa temporal «2» y establecer en «4» para la capa temporal «3». En otro ejemplo, «offset» puede ser una función de la capa temporal, por ejemplo, como se muestra en la siguiente expresión:
desplazamiento = desplazamiento_base*(capa_temporal - c0) c1
donde «offset_base» corresponde a un valor de desplazamiento base, «temporal_layer» corresponde a la capa temporal asociada a los datos codificados, «c0» y «c1» corresponden a constantes, y «offset» corresponde al desplazamiento resultante usado en la relación de inicialización de contexto lineal descrita anteriormente.
[0077] En otro ejemplo, el desplazamiento se puede usar de la manera mostrada en las siguientes relaciones:
Int iInitState = (((m*iQp)/16) n)*(1 desplazamiento);
iInitState = min(max(1, iInitState), 126).
[0078] En algunos casos, el valor de «offset» también se puede obtener a partir de otra información «secundaria» asociada a los datos codificados, como, por ejemplo, el tipo de segmento, la resolución de trama, el tamaño de la lista de tramas de referencia, etc.
[0079] En otro ejemplo más, el valor de «offset» se puede señalar en una sintaxis de alto nivel, como, por ejemplo, un conjunto de parámetros de imagen (PPS), un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de adaptación (APS) u otro tipo de información sintáctica, asociada a los datos, por ejemplo, otro conjunto de parámetros o localización sintáctica de alto nivel.
[0080] En los ejemplos anteriores, puede haber un solo valor de «offset» para todos los contextos, o puede haber múltiples valores de «offset», en los que cada valor se aplica a un subconjunto particular de los contextos. En un ejemplo, los contextos se pueden dividir en tres grupos (G1, G2 y G3) y usar un solo valor de «offset», como se muestra en las siguientes expresiones:
Para G1,
Int iInitState = ((m*iQp)/16) n desplazamiento;
iInitState = min(max(1, iInitState), 126).
Para G2,
Int iInitState = ((m*iQp)/16) n - desplazamiento;
iInitState = min(max(1, iInitState), 126).
Para G3,
Int iInitState = ((m*iQp)/16) n;
iInitState = min(max(1, iInitState), 126).
[0081] En otro ejemplo, también se puede lograr un ajuste del estado de contexto inicial ajustando un QP, por ejemplo, iQP, en la relación lineal descrita anteriormente con referencia a las normas H.264/AVC y HEVC. Por ejemplo, se puede usar un nuevo parámetro «iQp_new» para calcular el estado de contexto inicial, en el que «iQp_new» puede ser diferente del QP usado para codificar datos de vídeo de una trama particular (por ejemplo, la trama para la cual se determina el estado de contexto inicial), como se muestra en las siguientes relaciones:
Int iInitState = ((m*iQp_new)/16) n;
iInitState = min(max(1, iInitState), 126).
[0082] En otro ejemplo, se puede usar un nuevo parámetro «QP_offset» para modificar un QP, por ejemplo, iQP, en la relación lineal descrita anteriormente con referencia a las normas H.264/AVC y HEVC, como se muestra en las siguientes relaciones:
Int iInitState = ((m*(QP Qp_ desplazamiento)/16) n;
iInitState = min(max(1, iInitState), 126).
o, de forma alternativa:
Int iInitState = ((m*QP*(1 Qp_ desplazamiento)/16) n;
ilnitState = min(max(1, ilnitState), 126).
[0083] En otro ejemplo más, el valor de «iQp_new» o «Qp_offset» se puede señalar con sintaxis de alto nivel, como por ejemplo, PPS, SPS, APS u otro conjunto de parámetros o localización sintáctica de alto nivel.
[0084] En el ejemplo descrito anteriormente, puede haber un solo valor de «iQp_new» o «Qp_offset» para todos los contextos, o múltiples valores de «iQp_new» o «Qp_offset», en los que cada valor se aplica a un subconjunto particular de los contextos.
[0085] En un ejemplo, el valor de «Qp_offset» y/o «iQp_new» puede ser fijo y dependiente de la capa temporal del segmento actual asociado a los datos codificados. Por ejemplo, «Qp_offset» se puede establecer en «-3» para la capa temporal «0», establecer en «0» para la capa temporal «1», establecer en «3» para la capa temporal «2» y establecer en «6» para la capa temporal «3». En otro ejemplo, «Qp_offset» puede ser una función de la capa temporal, por ejemplo, como la mostrada en la siguiente relación:
Qp_desplazamiento = Qp_desplazamiento_base*(capa_temporal - c0) c1
donde «Qp_offset_base», «c0» y «c1» son constantes que sirven de parámetros de la relación. De manera similar, el valor de «Qp_offset» y/o «iQp_new» también se puede obtener a partir de otro tipo de información «secundaria», como, por ejemplo, el tipo de segmento, la resolución de trama, el tamaño de la lista de tramas de referencia, etc.
[0086] En otro ejemplo más, las técnicas descritas anteriormente, incluidas las técnicas que se relacionan con la inicialización de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos basándose en uno o más valores de índices de parámetros de inicialización, se pueden usar para todos los contextos del proceso de codificación de entropía adaptativa al contexto, o solo para algunos (por ejemplo, un subconjunto) de los contextos. Por ejemplo, las técnicas se pueden usar para contextos relacionados con ciertos tipos de elementos sintácticos, por ejemplo, elementos sintácticos para componentes de color seleccionados (por ejemplo, componentes «luma» o «croma»), tamaños de bloque seleccionados, tamaños de transformada seleccionados, información de movimiento o información de coeficiente de transformada.
[0087] En otro ejemplo más, la presente divulgación describe técnicas para determinar un primer valor, en caso de que el primer valor esté dentro de un intervalo de valores definidos por un límite inferior, un límite superior y uno o más desplazamientos relativos a uno o más del límite inferior y el límite superior, seleccionar el primer valor, en caso de que el primer valor esté fuera del intervalo de valores, seleccionar un segundo valor, en el que el segundo valor es diferente del primer valor, e inicializar una probabilidad de un contexto de un proceso de codificación de entropía adaptativa al contexto basándose en el primer o segundo valor seleccionados.
[0088] En un ejemplo, al determinar probabilidades iniciales de contextos, las técnicas descritas anteriormente con referencia a las versiones de CABAC donde un estado de contexto para un contexto corresponde directamente a una probabilidad del contexto, pueden aparecer distribuciones altamente sesgadas de las probabilidades iniciales de los contextos. Por ejemplo, las probabilidades altamente sesgadas pueden ser resultado de la proximidad de las probabilidades iniciales determinadas con uno o más de un límite superior y un límite inferior de un intervalo de probabilidades que incluye las probabilidades iniciales. Como resultado, las técnicas de la presente divulgación proponen introducir uno o más desplazamientos que reducen, o previenen, dichas probabilidades sesgadas. Por ejemplo, las técnicas propuestas se pueden realizar usando la siguiente relación:
iP0 = min(max(1 desplazamiento, c), 32767 - desplazamiento)
donde «offset» es un valor entero. En un ejemplo, un valor de «offset» igual a «256» puede permitir probabilidades iniciales sin valores altamente sesgados.
[0089] En otro ejemplo, el valor de «offset» se puede «adaptar» a un proceso de actualización de probabilidades. En otras palabras, en algunos ejemplos se puede usar el mismo desplazamiento o uno similar con el fin de actualizar subsiguientemente las probabilidades inicializadas para los contextos. En consecuencia, este proceso de actualización también puede dar como resultado que se eviten probabilidades «extremas» (por ejemplo, cercanas al 0 % o 100 %) de los contextos (es decir, probabilidades altamente sesgadas). Como resultado, tanto la inicialización como la subsiguiente actualización de las probabilidades (es decir, el proceso de inicialización de probabilidades y el proceso de actualización de probabilidades descritos anteriormente) pueden imponer los mismos límites a las probabilidades extremas de los contextos, evitando posiblemente de este modo las probabilidades altamente sesgadas de los contextos. En un ejemplo, el proceso de actualización de probabilidades se puede realizar usando las siguientes relaciones:
iP0 - = ((iP0 - desplazamiento) >> ALPHA0);
iP0 = (((32767 - desplazamiento) - iP0) >> ALPHA0,
donde ALPHA0 es una constante.
[0090] En estos ejemplos, las funciones o relaciones mostradas anteriormente pueden denominarse «funciones exponenciales de decaimiento de memoria». Por ejemplo, un valor asintótico de una función exponencial particular (es decir, un valor más bajo o más alto posible) se rige por el valor de «offset». Por ejemplo, el valor de «offset» puede ser el mismo para los procesos de inicialización y actualización descritos anteriormente.
[0091] En otro ejemplo, la relación descrita previamente
Int c = asCtxInit[0] asCtxInit[1]*(iQp - iQPreper)
puede proporcionar la probabilidad de que un valor de un símbolo (por ejemplo, un bin) sea «0», sin proporcionar la probabilidad de que el valor del símbolo sea «1».
[0092] La siguiente función, o relación, de inicialización puede usarse para obtener la probabilidad de que el valor del símbolo sea «1», en un ejemplo:
iP0 = 32768 - min(max(1 desplazamiento, c), 32767 - desplazamiento)
donde el significado de la probabilidad se invierte. En otras palabras, la relación anterior proporciona un valor de «1» (es decir, una probabilidad de «1» o 100 %) menos la probabilidad obtenida usando la relación descrita previamente:
iP0 = min(max(1 desplazamiento, c), 32767 - desplazamiento)
[0093] Además, en este ejemplo, «32768» puede ser una probabilidad máxima, que puede ser equivalente a una probabilidad de «1» (es decir, una probabilidad del 100 %).
[0094] Adicionalmente, la presente divulgación también describe técnicas para determinar un estado de contexto inicial para inicializar un contexto de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo basándose en un parámetro de inicialización que define tres o más estados de contexto de referencia, cada uno correspondiente a uno respectivo de tres o más valores de QP de referencia, y un valor de QP asociado a los datos de vídeo, e inicializar el contexto del proceso de codificación de entropía adaptativa al contexto basándose en el estado de contexto inicial.
[0095] Por ejemplo, como se ha descrito anteriormente, en las normas H.264/AVC y en ciertas versiones provisionales de la norma HEVC, un estado de contexto inicial para un contexto se determina basándose en un procedimiento, o relación de obtención lineal. El procedimiento usa dos parámetros de inicialización («m» y «n»), cada uno de los cuales se representa mediante al menos 8 bits de datos. La relación, o ecuación, lineal usa estos dos parámetros de inicialización para obtener uno de, por ejemplo, 126 estados de contexto permitidos en la norma H.264/AVC, como el estado de contexto inicial para el contexto.
[0096] El desarrollo de las técnicas de la presente divulgación ha demostrado que los modelos, o relaciones, no lineales pueden ser más efectivos que las relaciones lineales, como la relación lineal descrita anteriormente con referencia a las normas H.264/AVC y HEVC, para inicializar contextos. En particular, las relaciones no lineales pueden dar como resultado probabilidades iniciales relativamente más precisas de los contextos, en comparación con las probabilidades iniciales determinadas usando las relaciones lineales. En consecuencia, la presente divulgación propone el uso de un procedimiento, o relación, no lineal, o parcialmente no lineal, para determinar un estado de contexto inicial para un contexto, por ejemplo, usando un número limitado de bits de datos. En algunos ejemplos, las técnicas proponen usar un mismo número de bits de datos, o menos bits de datos, en comparación con el número de bits de datos usados en las técnicas H.264/AVC y HEVC descritas anteriormente, es decir, 16 bits de datos o menos.
[0097] En un ejemplo, se pueden usar 16 bits de datos para determinar un estado de contexto inicial para un contexto. El uso de los 16 bits se puede dividir en tres partes. Una primera parte puede incluir 6 bits, proporcionando el estado de contexto en un valor de QP dado (por ejemplo, QP = «26»). Cabe señalar que este valor de estado de contexto está cuantificado, de modo que 2 estados de contexto contiguos comparten el mismo estado de contexto cuantificado (por ejemplo, dado que una profundidad de bits de 6 bits proporciona 64 índices que tienen que señalar uno de los 126 estados de contexto). Una segunda parte puede incluir 5 bits, proporcionando el estado de contexto en un segundo valor de QP (por ejemplo, el QP anterior menos «8»). Una vez más, este puede ser un estado de contexto cuantificado, ya que una profundidad de bits de 5 bits proporciona 32 índices que tienen que señalar uno de los 126 estados de contexto. En este ejemplo, 4 estados de contexto comparten el mismo estado de contexto cuantificado. Por último, una tercera parte de los 16 bits puede incluir los 5 bits restantes que indican el estado de contexto en un tercer valor de QP (por ejemplo, el primer QP más «8»).
[0098] Como resultado, el parámetro de inicialización de este ejemplo puede incluir 16 bits de datos, por ejemplo, InitParam = [x1 x2 x3]. En este ejemplo, «x3» se puede obtener mediante una operación «x3 = (InitParam&31)». De manera similar, «x2» se puede obtener mediante la operación «x2 = ((InitParam>>5) &31)», y «x1» se puede obtener mediante la operación «x1 = (InitParam>10)». De esta manera, el parámetro «InitParam» contiene los parámetros necesarios para la obtención del estado de contexto inicial. Una vez más, en este ejemplo, «>>» indica una operación de desplazamiento a la derecha, y «&» indica una operación AND lógica.
[0099] Estos tres valores (es decir, «x1», «x2» y «x3»), que usan un total de 16 bits de datos, de estados de contexto cuantificados proporcionan tres puntos (por ejemplo, valores «pares», incluyendo cada par uno de «x1», «x2» y «x3» y un valor de QP correspondiente) que se pueden usar para la interpolación del estado de contexto para el contexto al resto de los valores de QP. En otras palabras, los valores de estado de contexto de referencia «x1», «x2» y «x3» y los valores de QP de referencia correspondientes se pueden usar para determinar un estado de contexto inicial para un contexto interpolando entre los valores de referencia y usando un QP real asociado a los datos que se están codificando para determinar el estado de contexto inicial para el contexto.
[0100] Como ejemplo, la determinación descrita anteriormente se puede realizar mediante una aproximación lineal doble (por ejemplo, splines). Por ejemplo, se pueden usar las siguientes relaciones:
if QP < 26
iInitState = (QP - 26)*(x1 - x2)/8 x1;
else
iInitState = (QP - 26)*(x3 - x1)/8 x1;
end
[0101] En este ejemplo, «x1», «x2» y «x3» contienen los valores del estado de contexto en los tres QP diferentes (es decir, «26», «18» y «34», respectivamente). Además, si las variables «x» (es decir, «x1», «x2» y «x3») no contienen los valores en las profundidades de bits correctas, como se ha explicado anteriormente, puede ser necesario realizar algunas operaciones de desplazamiento de bit hacia la izquierda.
[0102] Adicionalmente, una división por «8» se puede realizar como una operación de desplazamiento de bit hacia la derecha. En dichos casos, las técnicas de este ejemplo pueden implementarse mediante las siguientes expresiones:
if QP < 26
iInitState = (QP - 26)*((x1<<1) - (x2<<2))>>3 (x1<<1);
else
iInitState = (QP - 26)*((x3<<2) - (x1<<1))>>3 (x1<<1);
end
[0103] Las expresiones anteriores pueden tener como premisa que «x1» tenga una precisión de 6 bits, y que «x2» y «x3» tengan una precisión de 5 bits cada una. En algunos ejemplos, también puede incluirse una suma de «4» antes de la operación de desplazamiento hacia la derecha en las expresiones con el fin de redondear a un número entero más cercano cuando se divide por «8» (por ejemplo, en lugar de simplemente redondear al número entero más bajo). En consecuencia, se pueden usar ligeras modificaciones a estas expresiones si los valores están definidos para admitir otras profundidades de bits.
[0104] Mediante las técnicas descritas anteriormente, la interpolación lineal doble para determinar el estado de contexto inicial se puede realizar sin multiplicaciones ni divisiones. Esta implementación sencilla es posible porque la diferencia entre los valores de QP empleados es una potencia de «2».
[0105] En otros ejemplos, se pueden usar también otros valores de QP. Adicionalmente, también podría usarse otra distribución de profundidad de bits para cada uno de los tres valores de estados de contexto cuantificados. Adicionalmente, se podrían usar más de 3 puntos (por ejemplo, 4 o más puntos), siendo la función multilineal (es decir, compuesta por varias partes lineales).
[0106] En otros ejemplos más, los tres puntos se pueden usar para ajustar una parábola (por ejemplo, un polinomio de segundo orden) para determinar el estado de contexto en los otros QP. De manera similar, en otros ejemplos, se pueden usar cuatro puntos para ajustar un polinomio de tercer orden.
[0107] Adicionalmente, una operación de recorte, por ejemplo, realizada con la expresión que se muestra a continuación, también puede incluirse después del proceso de obtención de estados de contexto no lineal descrito anteriormente, a fin de evitar valores de estados de contexto no permitidos (por ejemplo, valores de estado de contexto que requieren más de 7 bits de datos para representar cada valor).
iInitState = min(max(1, iInitState), 126)
[0108] En consecuencia, en algunos ejemplos de conformidad con las técnicas de la presente divulgación, el codificador 20 de vídeo del dispositivo 12 de origen puede estar configurado para codificar datos, como uno o más bloques de datos de vídeo (por ejemplo, una o más TU de una CU) y el descodificador 30 de vídeo del dispositivo 14 de destino puede estar configurado para recibir los datos codificados, por ejemplo, el uno o más bloques codificados de datos de vídeo, desde el codificador 20 de vídeo. En otros ejemplos, descritos anteriormente, las técnicas de la presente divulgación pueden ser aplicables al uso de la codificación de entropía adaptativa al contexto para codificar cualquiera de una amplia variedad de datos, por ejemplo, datos distintos a los datos de vídeo. Así pues, en algunos ejemplos de conformidad con las técnicas divulgadas, el codificador 20 de vídeo y/o el descodificador 30 de vídeo pueden ser otros dispositivos de codificación y descodificación, distintos de los dispositivos de codificación y descodificación de vídeo, como se ilustra en este ejemplo.
[0109] En algunos ejemplos, el codificador 20 de vídeo y el descodificador 30 de vídeo pueden estar configurados para realizar una codificación de entropía adaptativa al contexto. En este ejemplo, uno o más del codificador 20 de vídeo y el descodificador 30 de vídeo pueden incluir un codificador (por ejemplo, una unidad 56 de codificación de entropía o una unidad 80 de descodificación de entropía), configurados para determinar uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC, SBAC, PIPE u otro) basándose en uno o más valores de índices de parámetros de inicialización. Por ejemplo, como se describirá con mayor detalle a continuación, el codificador 20 de vídeo y/o el descodificador 30 de vídeo pueden estar configurados para determinar el uno o más estados de contexto iniciales correlacionando el uno o más valores de índices de parámetros de inicialización con el uno o más parámetros de inicialización de una o más tablas (es decir, identificar el uno o más parámetros de inicialización de la una o más tablas basándose en el uno o más valores de índices de parámetros de inicialización), o calculando el uno o más parámetros de inicialización usando el uno o más valores de índices de parámetros de inicialización y una o más fórmulas.
[0110] El codificador 20 de vídeo y/o el descodificador 30 de vídeo pueden estar configurados además para determinar uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en uno o más parámetros de inicialización. Por ejemplo, el codificador 20 de vídeo y/o el descodificador 30 de vídeo pueden estar configurados para determinar el uno o más estados de contexto iniciales usando el uno o más parámetros de inicialización y una relación, como la relación lineal descrita anteriormente con referencia a la norma H.264/AVC y ciertas versiones provisionales de la norma HEVC. Adicionalmente, el codificador 20 de vídeo y/o el descodificador 30 de vídeo pueden estar configurados además para inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales. Por ejemplo, el codificador 20 de vídeo y/o el descodificador 30 de vídeo pueden estar configurados para inicializar cada uno del uno o más contextos asignando uno correspondiente del uno o más estados de contexto iniciales como el presente estado de contexto del contexto respectivo.
[0111] En consecuencia, las técnicas de la presente divulgación pueden permitir que el codificador 20 de vídeo y/o el descodificador 30 de vídeo tengan una complejidad relativamente menor cuando se usan para codificar datos, como, por ejemplo, los datos de vídeo descritos anteriormente, en comparación con otros sistemas usados para codificar datos similares. En particular, las técnicas pueden reducir una cantidad de información que se almacena dentro y/o se transmite hasta o desde el codificador 20 de vídeo y/o el descodificador 30 de vídeo. Adicionalmente, como se describe con mayor detalle a continuación con referencia a las figuras 6-8, las técnicas de la presente divulgación también pueden permitir que el codificador 20 de vídeo y/o el descodificador 30 de vídeo codifiquen los datos con más eficiencia en relación con otras técnicas. De esta manera, puede haber una reducción relativa de la complejidad para el codificador 20 de vídeo y/o el descodificador 30 de vídeo usados para codificar los datos, y un ahorro de bits relativo para un flujo de bits codificado que incluye los datos codificados, cuando se usan las técnicas de la presente divulgación.
[0112] Tanto el codificador 20 de vídeo como el descodificador 30 de vídeo pueden implementarse como cualquiera de entre una amplia variedad de circuitos de codificador o descodificadora adecuados, según corresponda, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), circuitos de lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Tanto el codificador 20 de vídeo como el descodificador 30 de vídeo pueden estar incluidos en uno o más codificadores o descodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/descodificador de vídeo combinado (por ejemplo, un «CÓd Ec » de vídeo). Un aparato que incluye un codificador 20 de vídeo y/o un descodificador 30 de vídeo puede comprender un circuito integrado (CI), un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono móvil.
[0113] La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar técnicas para inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto, de conformidad con las técnicas de la presente divulgación. El codificador 20 de vídeo puede realizar intracodificación e intercodificación de bloques de vídeo dentro de segmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresión espacial. Los modos inter, tales como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresión temporal.
[0114] En el ejemplo de la figura 2, el codificador 20 de vídeo incluye una unidad 35 de partición, un módulo 41 de predicción, una memoria 64 de imágenes de referencia, un sumador 50, un módulo 52 de transformada, una unidad 54 de cuantificación y una unidad 56 de codificación de entropía. El módulo 41 de predicción incluye una unidad 42 de estimación de movimiento, una unidad 44 de compensación de movimiento y un módulo 46 de intrapredicción. Para la reconstrucción de bloques de vídeo, el codificador 20 de vídeo incluye además una unidad 58 de cuantificación inversa, un módulo 60 de transformada inversa y un sumador 62. También se puede incluir un filtro de eliminación de bloques (no mostrado en la figura 2) para filtrar fronteras de bloques y eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará típicamente la salida del sumador 62. También se pueden usar filtros de bucle adicionales (en el bucle o tras el bucle), además del filtro de eliminación de bloques.
[0115] Como se representa en la figura 2, el codificador 20 de vídeo recibe datos de vídeo, y la unidad 35 de partición divide los datos en bloques de vídeo. Esta partición también puede incluir la partición en segmentos, mosaicos u otras unidades mayores, así como la partición de bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de LCU y CU. El codificador 20 de vídeo ilustra, en general, los componentes que codifican bloques de vídeo dentro de un segmento de vídeo que se va a codificar. El segmento se puede dividir en múltiples bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados mosaicos). El módulo 41 de predicción puede seleccionar uno de entre una pluralidad de posibles modos de codificación, tal como uno de entre una pluralidad de modos de intracodificación o uno de entre una pluralidad de modos de intercodificación, para el bloque de vídeo actual, basándose en resultados de errores (por ejemplo, la velocidad de codificación y el nivel de distorsión). El módulo 41 de predicción puede proporcionar el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloque residuales, y al sumador 62 para reconstruir el bloque codificado para usar como imagen de referencia.
[0116] El módulo 46 de intrapredicción del módulo 41 de predicción puede realizar una codificación intrapredictiva del bloque de vídeo actual con respecto a uno o más bloques contiguos de la misma trama o segmento que el bloque actual que se va a codificar para proporcionar compresión espacial. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento del módulo 41 de predicción realizan una codificación interpredictiva del bloque de vídeo actual en relación con uno o más bloques predictivos de una o más imágenes de referencia para proporcionar compresión temporal.
[0117] La unidad 42 de estimación de movimiento puede estar configurada para determinar el modo de interpredicción para un segmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar segmentos de vídeo de la secuencia como segmentos P, segmentos B o segmentos GPB. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimación del movimiento, realizada por la unidad 42 de estimación de movimiento, 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 de una trama o imagen de vídeo actual en relación con un bloque predictivo de una imagen de referencia.
[0118] Un bloque predictivo es un bloque que se comprueba que corresponde estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxel, que puede determinarse mediante una suma de una diferencia absoluta (SAD), una suma de diferencia al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador 20 de vídeo puede calcular valores para posiciones de píxel de subentero de imágenes de referencia almacenadas en la memoria 64 de imágenes de referencia. Por ejemplo, el codificador 20 de vídeo puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionario de la imagen de referencia. Por lo tanto, la unidad 42 de estimación de movimiento puede realizar una búsqueda de movimiento relativa a las posiciones de píxel completo y las posiciones de píxel fraccionario, y generar un vector de movimiento con una precisión de píxel fraccionario.
[0119] La unidad 42 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de vídeo en un segmento intracodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse de una primera lista (lista 0) de imágenes de referencia o una segunda lista (lista 1) de imágenes de referencia, cada una de las cuales identifica una o más imágenes de referencia almacenadas en una memoria 64 de imágenes de referencia. La unidad 42 de estimación de movimiento envía el vector de movimiento calculado a la unidad 56 de codificación de entropía y a la unidad 44 de compensación de movimiento.
[0120] La compensación de movimiento, realizada por la unidad 44 de compensación de movimiento, puede implicar extraer o generar el bloque predictivo basándose en el vector de movimiento determinado mediante estimación de movimiento, realizando posiblemente interpolaciones hasta una precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad 44 de compensación de movimiento puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador 20 de vídeo forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luma como de croma. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad 44 de compensación de movimiento también puede generar elementos sintácticos asociados a los bloques de vídeo y al segmento de vídeo para su uso por el descodificador 30 de vídeo en la descodificación de los bloques de vídeo del segmento de vídeo.
[0121] El módulo 46 de intrapredicción puede realizar la intrapredicción de un bloque actual, como alternativa a la interpredicción realizada por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, como se ha descrito anteriormente. En particular, el módulo 46 de intrapredicción puede determinar un modo de intrapredicción que se va a usar para codificar un bloque actual. En algunos ejemplos, el módulo 46 de intrapredicción puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante diferentes pasadas de codificación, y el módulo 46 de intrapredicción (o unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intrapredicción adecuado que se va a usar, entre los modos probados. Por ejemplo, el módulo 46 de intrapredicción puede calcular valores de velocidad-distorsión mediante un análisis de velocidad-distorsión para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tiene las mejores características de velocidad-distorsión de entre los modos probados. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se ha codificado para generar el bloque codificado, así como una velocidad de bits (es decir, un número de bits) usada para generar el bloque codificado. El módulo 46 de intrapredicción puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, a fin de determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
[0122] En cualquier caso, tras seleccionar un modo de intrapredicción para un bloque, el módulo 46 de intrapredicción puede proporcionar información que indica el modo de intrapredicción seleccionado para el bloque, a la unidad 56 de codificación de entropía. La unidad de codificación 56 de entropía puede codificar la información que indica el modo de intrapredicción seleccionado en un flujo de bits transmitido.
[0123] Después de que el módulo 41 de predicción genere el bloque predictivo para el bloque de vídeo actual, ya sea mediante interpredicción o intrapredicción, el codificador 20 de vídeo forma un bloque de vídeo residual restando el bloque predictivo del bloque de vídeo actual. Los datos de vídeo residuales del bloque residual pueden incluirse en una o más TU y aplicarse al módulo 52 de transformada. El módulo 52 de transformada transforma los datos de vídeo residuales en coeficientes de transformada residuales mediante una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. El módulo 52 de transformada puede convertir los datos de vídeo residuales de un dominio de píxel a un dominio de transformada, tal como un dominio de frecuencia.
[0124] El módulo 52 de transformada puede enviar los coeficientes de transformada resultantes a la unidad 54 de cuantificación. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir todavía más la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad 54 de cuantificación puede realizar, a continuación, un exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad 56 de codificación de entropía puede realizar la exploración.
[0125] Tras la cuantificación, la unidad 56 de codificación de entropía realiza la codificación de entropía de los coeficientes de transformada cuantificados. Por ejemplo, la unidad 56 de codificación de entropía puede realizar los procesos CAVLC, CABAC, SBAC, PIPE u otra metodología o técnica de codificación de entropía. Tras la codificación de entropía por la unidad 56 de codificación de entropía, el flujo de bits codificado se puede transmitir al descodificador 30 de vídeo, o archivarse para su posterior transmisión o recuperación por el descodificador 30 de vídeo. La unidad 56 de codificación de entropía también puede realizar la codificación de entropía de los vectores de movimiento y los otros elementos sintácticos para el segmento de vídeo actual que se está codificando.
[0126] La unidad 58 de cuantificación inversa y el módulo 60 de transformada inversa aplican una cuantificación inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio del píxel, para su uso posterior como bloque de referencia de una imagen de referencia. La unidad 44 de compensación de movimiento puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia de una de las listas de imágenes de referencia. La unidad 44 de compensación del movimiento también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxel de subentero para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción con compensación de movimiento generado por la unidad 44 de compensación de movimiento para generar un bloque de referencia para su almacenamiento en la memoria 64 de imágenes de referencia. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden usar el bloque de referencia como un bloque de referencia para realizar la interpredicción de un bloque en una trama o imagen de vídeo subsiguiente.
[0127] En un ejemplo, un aparato que incluye una unidad 56 de codificación de entropía (por ejemplo, el codificador 20 de vídeo del dispositivo 12 de origen de la figura 1) puede estar configurado para la codificación de entropía adaptativa al contexto. Por ejemplo, el aparato puede estar configurado para realizar cualquiera de los procesos CABAC, SBAC o PIPE descritos anteriormente, así como cualquier otro proceso de codificación de entropía adaptativa al contexto. En este ejemplo, la unidad 56 de codificación de entropía puede estar configurada para determinar uno o más parámetros de inicialización (por ejemplo, uno o más de los parámetros «m» y «n» descritos anteriormente con referencia a las figuras 1 y 2) para un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC) basándose en uno o más valores de índices de parámetros de inicialización (por ejemplo, uno o más valores «idx_m» e «idx_n» también descritos anteriormente con referencia a la figura 1). Adicionalmente, la unidad 56 de codificación de entropía puede estar configurada además para determinar uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en uno o más parámetros de inicialización. La unidad 56 de codificación de entropía puede estar configurada además para inicializar el uno o más contextos del proceso de codificación de entropía adaptativa de contexto basándose en el uno o más estados de contexto iniciales.
[0128] En algunos ejemplos, el uno o más parámetros de inicialización pueden estar incluidos en una o más tablas. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía puede estar configurada para correlacionar el uno o más valores de índices de parámetros de inicialización con el uno o más parámetros de inicialización de la una o más tablas. En otras palabras, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía puede estar configurada para identificar el uno o más parámetros de inicialización de la una o más tablas basándose en el uno o más valores de índices de parámetros de inicialización.
[0129] De forma alternativa, en otros ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía puede estar configurada para calcular el uno o más parámetros de inicialización usando el uno o más valores de índices de parámetros de inicialización y una o más fórmulas. En estos ejemplos, cada una de la una o más fórmulas puede implementarse usando solo una o más operaciones, cada una seleccionada de un grupo que consiste en una operación de desplazamiento de bit, una operación de suma, una operación de resta, una operación de multiplicación y una operación de división.
[0130] En otros ejemplos más, el uno o más parámetros de inicialización pueden incluir uno o más valores de pendiente y uno o más valores de intersección, y el uno o más valores de índices de parámetros de inicialización pueden incluir uno o más valores de índices de pendiente y uno o más valores de índices de intersección. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía puede estar configurada para determinar el uno o más valores de pendiente basándose en el uno o más valores de índices de pendiente, y determinar el uno o más valores de intersección basándose en el uno o más valores de índices de intersección.
[0131] De forma alternativa, en algunos ejemplos, el uno o más parámetros de inicialización pueden incluir uno o más valores de pendiente y uno o más valores de intersección. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía puede estar configurada para determinar al menos uno del uno o más valores de pendiente y al menos uno del uno o más valores de intersección basándose en uno solo del uno o más valores de índices de parámetros de inicialización.
[0132] En los ejemplos descritos anteriormente, el uno solo del uno o más valores de índices de parámetros de inicialización puede incluir uno o más componentes de valores de índices de pendiente y uno o más componentes de valores de índices de intersección. En estos ejemplos, para determinar el al menos uno del uno o más valores de pendiente y el al menos uno del uno o más valores de intersección basándose en el uno solo del uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía puede estar configurada para determinar el al menos uno del uno o más valores de pendiente basándose en el uno o más componentes de valores de índices de pendiente, y determinar el al menos uno del uno o más valores de intersección basándose en el uno o más componentes de valores de índices de intersección.
[0133] Además, en estos ejemplos, para determinar el al menos uno del uno o más valores de pendiente basándose en el uno o más componentes de valores de índices de pendiente, y para determinar el al menos uno del uno o más valores de intersección basándose en el uno o más los componentes de valores de índice de intersección, la unidad 56 de codificación de entropía puede estar configurada para determinar uno del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección del uno solo del uno o más de los valores de índices de parámetros de inicialización usando una o más operaciones de desplazamiento de bits, y determinar otro del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección del uno solo del uno o más valores de índices de parámetros de inicialización usando una o más operaciones AND lógicas.
[0134] En otros ejemplos más, el uno solo del uno o más valores de índices de parámetros de inicialización puede incluir un número predeterminado de bits. En estos ejemplos, cada uno del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección puede incluir un subconjunto respectivo del número predeterminado de bits. También en estos ejemplos, cada uno de los subconjuntos que corresponden al uno o más componentes de valores de índices de pendiente puede incluir un número diferente del número predeterminado de bits que cada uno de los subconjuntos que corresponden al uno o más componentes de valores de índices de intersección.
[0135] Adicionalmente, en algunos ejemplos, el uno o más contextos del proceso de codificación de entropía adaptativa al contexto pueden incluir un subconjunto de contextos del proceso de codificación de entropía adaptativa al contexto. Por ejemplo, el subconjunto puede corresponder a un tipo de sintaxis asociado a datos de vídeo codificados mediante el proceso de codificación de entropía adaptativa al contexto. En algunos ejemplos, el tipo de sintaxis puede incluir uno o más de un tipo de componente, un tamaño de bloque, un tamaño de transformada, un modo de predicción, información de movimiento e información de coeficiente de transformada, asociados a los datos de vídeo.
[0136] En otros ejemplos, el aparato (por ejemplo, el codificador 20 de vídeo del dispositivo 12 de origen de la figura 1) que incluye la unidad 56 de codificación de entropía puede estar configurado como un codificador de vídeo. En estos ejemplos, el codificador de vídeo puede estar configurado para codificar uno o más elementos sintácticos asociados a un bloque de datos de vídeo basándose en el uno o más contextos inicializados del proceso de codificación de entropía adaptativa al contexto, y facilitar el uno o más elementos sintácticos codificados en un flujo de datos. En algunos ejemplos, descritos previamente, el aparato (por ejemplo, el codificador 20 de vídeo del dispositivo 12 de origen de la figura 1) que incluye la unidad 56 de codificación de entropía puede incluir al menos uno de un circuito integrado, un microprocesador y un dispositivo de comunicación inalámbrica que Incluye la unidad 56 de codificación de entropía.
[0137] Como se describe con mayor detalle a continuación con referencia a las figuras 5-8, en otros ejemplos, el codificador 20 de vídeo, o diversos componentes del mismo (por ejemplo, la unidad 56 de codificación de entropía) pueden estar configurados para realizar otras técnicas que se refieren a la inicialización de estados y probabilidades de contexto para la codificación de entropía adaptativa al contexto. Por ejemplo, el codificador 20 de vídeo, o cualquiera de los componentes del mismo, individualmente, o en cualquier combinación, pueden realizar las técnicas descritas a continuación con referencia a la figura 5, que son similares a las técnicas de este ejemplo, y las técnicas adicionales descritas a continuación con referencia a las figuras 6-8. En un ejemplo, una o más de las técnicas adicionales se pueden realizar en combinación con las técnicas de este ejemplo (y el ejemplo de la figura 5) que se refieren a la inicialización de contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos basándose en uno o más valores de índices de parámetros de inicialización. En particular, las técnicas descritas a continuación con referencia a las figuras 6-8 se refieren la inicialización de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto, incluida la determinación de los estados de contexto iniciales para los contextos que indican las probabilidades iniciales de los contextos, o la determinación directa de las probabilidades iniciales de los contextos, de modo que las probabilidades iniciales son más precisas en relación con las probabilidades iniciales determinadas mediante otras técnicas.
[0138] En consecuencia, como se ilustra en los ejemplos anteriores y como se mostrará en los ejemplos de las figuras 5-8, las técnicas de la presente divulgación pueden permitir que el codificador 20 de vídeo, o cualquiera de los componentes del mismo, codifique diversos tipos de datos, tales como, por ejemplo, los datos de vídeo descritos anteriormente, con más eficiencia que cuando se usan otros procedimientos. En un ejemplo, como se ilustra en los ejemplos anteriores (y como se mostrará en el ejemplo de la figura 5),las técnicas pueden permitir que el codificador 20 de vídeo tenga una menor complejidad en relación con otros sistemas al codificar los datos mediante el proceso de codificación de entropía adaptativa al contexto. Por ejemplo, las técnicas pueden reducir una cantidad de información (por ejemplo, un número de bits de datos) almacenada en el codificador 20 de vídeo y/o transmitida desde el codificador 20 de vídeo hasta un descodificador de vídeo (por ejemplo, el descodificador 30 de vídeo) con el propósito de inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto. En particular, la cantidad de información almacenada puede reducirse almacenando y/o transmitiendo valores de índices de parámetros de inicialización que indican los parámetros de inicialización usados para inicializar los contextos, en lugar de almacenar y/o transmitir los parámetros de inicialización directamente.
[0139] En algunos ejemplos, la cantidad de información almacenada puede reducirse definiendo los valores del índices del parámetros de inicialización de manera que los valores de índices de parámetros de inicialización se representan usando menos información (por ejemplo, menos bits de datos) que los parámetros de inicialización.
Como resultado, los valores de índices de parámetros de inicialización pueden corresponder solo a un subconjunto de los parámetros de inicialización. De esta manera, se pueden usar menos que todos los parámetros de inicialización, según lo indicado por los valores de índices de parámetros de inicialización, para inicializar los contextos. Por ejemplo, algunos de los contextos pueden inicializarse usando parámetros de inicialización comunes. Sin embargo, cualquier efecto adverso asociado al uso del subconjunto de parámetros de inicialización, en lugar de todos los parámetros de inicialización (por ejemplo, en el que las probabilidades iniciales de los contextos son relativamente menos precisas en comparación con las probabilidades iniciales determinadas usando todos los parámetros de inicialización, y en el que cada contexto se inicializa usando un único o más parámetros de inicialización), puede ser compensado por la cantidad reducida de información almacenada dentro del codificador 20 de vídeo y, en algunos casos, transmitida desde el codificador 20 de vídeo al descodificador de vídeo, como se ha descrito anteriormente.
[0140] De esta manera, en algunos ejemplos, los valores de índices de parámetros de inicialización que indican el subconjunto de parámetros de inicialización, y el propio subconjunto de parámetros de inicialización, pueden almacenarse en el codificador 20 de vídeo, reduciéndose de ese modo posiblemente la cantidad de información almacenada en el codificador 20 de vídeo. Por ejemplo, en algunos casos, debido a que los valores de índices de parámetros de inicialización pueden representarse con menos información que los parámetros de inicialización, y debido a que los valores de índices de parámetros de inicialización pueden corresponder solo a un subconjunto de los parámetros de inicialización, una cantidad total de información (por ejemplo, un número total de bits de datos) usada para almacenar los valores de índices de parámetros de inicialización y el subconjunto de parámetros de inicialización en el codificador 20 de vídeo puede reducirse en relación con una cantidad de información que se requeriría para almacenar todos los parámetros de inicialización en el codificador 20 de vídeo. Además, en otros casos, los valores de índices de parámetros de inicialización, en lugar de los parámetros de inicialización, pueden transmitirse desde el codificador 20 de vídeo al descodificador de vídeo, reduciendo así una cantidad total de información transmitida desde el codificador 20 de vídeo al descodificador de vídeo.
[0141] En otro ejemplo, como se mostrará en los ejemplos de las figuras 6-8, las técnicas de la presente divulgación pueden mejorar la compresión de los datos cuando el codificador 20 de vídeo está configurado para codificar los datos mediante un proceso de codificación de entropía adaptativa al contexto. Por ejemplo, las técnicas pueden mejorar la compresión de los datos permitiendo al codificador 20 de vídeo, o a cualquiera de los componentes del mismo, inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto, de tal manera que el uno o más contextos incluyan probabilidades iniciales relativamente más precisas en comparación con las probabilidades iniciales determinadas mediante otras técnicas de inicialización de contextos. Adicionalmente, en algunos ejemplos, las técnicas pueden mejorar aún más la compresión de los datos permitiendo que el codificador 20 de vídeo, o cualquiera de los componentes del mismo, actualice subsiguientemente las probabilidades de los contextos de tal manera que las probabilidades actualizadas sean más precisas en comparación con las probabilidades actualizadas mediante otras técnicas de actualización de probabilidades de contextos.
[0142] En consecuencia, puede haber un ahorro relativo de bits para un flujo de bits codificado que incluye los datos codificados y, en algunos casos, los valores de índices de parámetros de inicialización transmitidos desde el codificador 20 de vídeo al descodificador de vídeo (por ejemplo, el descodificador 30 de vídeo), y una reducción relativa de la complejidad del codificador 20 de vídeo usado para codificar los datos, cuando se usan las técnicas de la presente divulgación.
[0143] De esta manera, el codificador 20 de vídeo representa un ejemplo de un aparato para la codificación de entropía adaptativa al contexto, comprendiendo el aparato un codificador configurado para determinar uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización, determinar uno o más estados de contextos iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización, e inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0144] La figura 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo que puede implementar técnicas para inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto, de conformidad con las técnicas de la presente divulgación. En el ejemplo de la figura 3, el descodificador 30 de vídeo incluye una unidad 80 de descodificación de entropía, un módulo 81 de predicción, una unidad 86 de cuantificación inversa, un módulo 88 de transformada inversa, un sumador 90, y una memoria 92 de imágenes de referencia. El módulo 81 de predicción incluye una unidad 82 de compensación de movimiento y un módulo 84 de intrapredicción. En algunos ejemplos, el descodificador 30 de vídeo puede realizar una pasada de descodificación que en general es recíproca a la pasada de codificación descrita con respecto al codificador 20 de vídeo de la figura 2.
[0145] Durante el proceso de descodificación, el descodificador 30 de vídeo recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un segmento de vídeo codificado y elementos sintácticos asociados, desde el codificador 20 de vídeo. La unidad 80 de descodificación de entropía del descodificador 30 de vídeo realiza la descodificación de entropía del flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. La unidad 80 de descodificación de entropía envía los vectores de movimiento y otros elementos sintácticos al módulo 81 de predicción. El descodificador 30 de vídeo puede recibir los elementos sintácticos en el nivel de segmento de vídeo y/o el nivel de bloque de vídeo.
[0146] Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), el módulo 84 de intrapredicción del módulo 81 de predicción puede generar datos de predicción para un bloque de vídeo del segmento de vídeo actual, basándose en un modo de intrapredicción señalizado y datos de bloques descodificados previamente de la trama o imagen actual. Cuando la trama de vídeo se codifica como un segmento intercodificado (es decir, B, P o GPB), la unidad 82 de compensación de movimiento del módulo 81 de predicción genera bloques predictivos para un bloque de vídeo del segmento de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos recibidos desde la unidad 80 de descodificación de entropía. Los bloques predictivos se pueden generar a partir de una de las imágenes de referencia de una de las listas de imágenes de referencia. El descodificador 30 de vídeo puede construir las listas de tramas de referencia, lista 0 y lista 1, mediante técnicas de construcción predeterminadas, basándose en imágenes de referencia almacenadas en la memoria 92 de imágenes de referencia.
[0147] La unidad 82 de compensación de movimiento determina información de predicción para un bloque de vídeo del segmento de vídeo actual, analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para generar los bloques predictivos para el bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad 82 de compensación de movimiento usa algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) usado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, un estado de interpredicción para cada bloque de vídeo intercodificado del segmento y otro tipo de información para descodificar los bloques de vídeo en el segmento de vídeo actual.
[0148] La unidad 82 de compensación de movimiento también puede realizar la interpolación basándose en unos filtros de interpolación. La unidad 82 de compensación de movimiento puede usar filtros de interpolación como los usados por el codificador 20 de vídeo durante la codificación de los bloques de vídeo, para calcular valores interpolados para píxeles de subentero de los bloques de referencia. En este caso, la unidad 82 de compensación de movimiento puede determinar los filtros de interpolación usados por el codificador 20 de vídeo a partir de los elementos sintácticos recibidos y usar los filtros de interpolación para generar bloques predictivos.
[0149] La unidad 86 de cuantificación inversa realiza la cuantificación inversa, es decir, la descuantificación, de los coeficientes de transformada cuantificados, proporcionados en el flujo de bits y descodificados por la unidad 80 de descodificación de entropía. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador 20 de vídeo para cada bloque de vídeo del segmento de vídeo a fin de determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que se debería aplicar. El módulo 88 de transformada inversa aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada, con el fin de generar bloques residuales en el dominio del píxel.
[0150] Después de que la unidad 82 de compensación de movimiento genere el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y otros elementos sintácticos, el descodificador 30 de vídeo forma un bloque de vídeo descodificado sumando los bloques residuales procedentes del módulo 88 de transformada inversa a los correspondientes bloques predictivos generados por la unidad 82 de compensación de movimiento. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de bloques para filtrar los bloques descodificados a fin de eliminar distorsiones de efecto pixelado. También se pueden usar otros filtros de bucle (en el bucle de codificación o bien después del bucle de codificación) para allanar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. Los bloques de vídeo descodificados de una trama o imagen determinada se almacenan a continuación en la memoria 92 de imágenes de referencia, que almacena imágenes de referencia usadas para una subsiguiente compensación de movimiento. La memoria 92 de imágenes de referencia almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo 28 de visualización de la figura 1.
[0151] En un ejemplo, un aparato que incluye la unidad 80 de descodificación de entropía (por ejemplo, el descodificador 30 de vídeo del dispositivo 14 de destino de la figura 1) puede estar configurado para la codificación de entropía adaptativa al contexto. Por ejemplo, el aparato puede estar configurado para realizar cualquiera de los procesos CABAC, SBAC o PIPE descritos anteriormente. En este ejemplo, la unidad 80 de descodificación de entropía puede estar configurada para determinar uno o más parámetros de inicialización (por ejemplo, uno o más parámetros «m» y «n» descritos anteriormente con referencia a las figuras 1 y 2) para un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC) basándose en uno o más valores de índices de parámetros de inicialización (por ejemplo, uno o más valores «idx_m» e «idx_n» también descritos anteriormente con referencia a la figura 1). Adicionalmente, la unidad 80 de descodificación de entropía puede estar configurada además para determinar uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización. La unidad 80 de descodificación de entropía puede estar configurada además para inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0152] En algunos ejemplos, el uno o más parámetros de inicialización pueden estar incluidos en una o más tablas. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 80 de descodificación de entropía puede estar configurada para correlacionar el uno o más valores de índices de parámetros de inicialización con el uno o más parámetros de inicialización de la una o más tablas. En otras palabras, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 80 de descodificación de entropía puede estar configurada para identificar el uno o más parámetros de inicialización de la una o más tablas basándose en el uno o más valores de índices de parámetros de inicialización.
[0153] De forma alternativa, en otros ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 80 de descodificación de entropía puede estar configurada para calcular el uno o más parámetros de inicialización usando el uno o más valores de índices de parámetros de inicialización y una o más fórmulas. En estos ejemplos, cada una de la una o más fórmulas puede implementarse usando solo una o más operaciones, cada una seleccionada de un grupo que consiste en una operación de desplazamiento de bit, una operación de suma, una operación de resta, una operación de multiplicación y una operación de división.
[0154] En otros ejemplos más, el uno o más parámetros de inicialización pueden incluir uno o más valores de pendiente y uno o más valores de intersección, y el uno o más valores de índices de parámetros de inicialización pueden incluir uno o más valores de índices de pendiente y uno o más valores de índices de intersección. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 80 de descodificación de entropía puede estar configurada para determinar el uno o más valores de pendiente basándose en el uno o más valores de índices de pendiente, y determinar el uno o más valores de intersección basándose en el uno o más valores de índices de intersección.
[0155] De forma alternativa, en algunos ejemplos, el uno o más parámetros de inicialización pueden incluir uno o más valores de pendiente y uno o más valores de intersección. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 80 de descodificación de entropía puede estar configurada para determinar al menos uno del uno o más valores de pendiente y al menos uno del uno o más más valores de intersección basándose en uno solo del uno o más valores de índices de parámetros de inicialización.
[0156] En los ejemplos descritos anteriormente, el uno solo del uno o más valores de índices de parámetros de inicialización puede incluir uno o más componentes de valores de índices de pendiente y uno o más componentes de valores de índices de intersección. En estos ejemplos, para determinar el al menos uno del uno o más valores de pendiente y el al menos uno del uno o más valores de intersección basándose en el uno solo del uno o más valores de índices de parámetros de inicialización, la unidad 80 de descodificación de entropía puede estar configurada para determinar el al menos uno del uno o más valores de pendiente basándose en el uno o más componentes de valores de índices de pendiente, y determinar el al menos uno del uno o más valores de intersección basándose en el uno o más componentes de valores de índices de intersección.
[0157] Además, en estos ejemplos, para determinar el al menos uno del uno o más valores de pendiente basándose en el uno o más componentes de valores de índices de pendiente, y para determinar el al menos uno del uno o más valores de intersección basándose en el uno o más componentes de valores de índices de intersección, la unidad 80 de descodificación de entropía puede estar configurada para determinar uno del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección del uno solo del uno o más valores de índices de parámetros de inicialización usando una o más operaciones de desplazamiento de bit, y determinar otro del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección del uno solo del uno o más valores de índices de parámetros de inicialización usando una o más operaciones AND lógicas.
[0158] En otros ejemplos más, el uno solo del uno o más valores de índices de parámetros de inicialización puede incluir un número predeterminado de bits. En estos ejemplos, cada uno del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección puede incluir un subconjunto respectivo del número predeterminado de bits. También en estos ejemplos, cada uno de los subconjuntos que corresponden al uno o más componentes de valores de índices de pendiente puede incluir un número diferente del número predeterminado de bits que cada uno de los subconjuntos que corresponden al uno o más componentes de valores de índices de intersección.
[0159] Adicionalmente, en algunos ejemplos, el uno o más contextos del proceso de codificación de entropía adaptativa al contexto pueden incluir un subconjunto de contextos del proceso de codificación de entropía adaptativa al contexto. Por ejemplo, el subconjunto puede corresponder a un tipo de sintaxis asociado a datos de vídeo codificados mediante el proceso de codificación de entropía adaptativa al contexto. En algunos ejemplos, el tipo de sintaxis puede incluir uno o más de un tipo de componente, un tamaño de bloque, un tamaño de transformada, un modo de predicción, información de movimiento e información de coeficiente de transformada, asociados a los datos de vídeo.
[0160] En otros ejemplos, el aparato (por ejemplo, el descodificador 30 de vídeo del dispositivo 14 de destino de la figura 1) que incluye la unidad 80 de descodificación de entropía puede estar configurado como un descodificador de vídeo. En estos ejemplos, el descodificador de vídeo puede estar configurado para recibir uno o más elementos sintácticos codificados asociados a un bloque de datos de vídeo en un flujo de bits, y descodificar el uno o más elementos sintácticos codificados basándose en el uno o más contextos inicializados del proceso de codificación de entropía adaptativa al contexto.
[0161] En algunos ejemplos, como se ha descrito previamente, el aparato (por ejemplo, el descodificador 30 de vídeo del dispositivo 14 de destino de la figura 1) que incluye la unidad 80 de descodificación de entropía puede incluir al menos uno de un circuito integrado, un microprocesador y un dispositivo de comunicación inalámbrica que incluye la unidad 80 de descodificación de entropía.
[0162] De una manera similar a la descrita anteriormente con referencia a la figura 2, y como se describe a continuación con referencia a las figuras 5-8, en otros ejemplos, el descodificador 30 de vídeo, o diversos componentes del mismo (por ejemplo, la unidad 80 de descodificación de entropía) pueden estar configurados para realizar otras técnicas que se refieren a la inicialización de estados y probabilidades de contexto para la codificación de entropía adaptativa al contexto. Por ejemplo, el descodificador 30 de vídeo, o cualquiera de los componentes del mismo, individualmente, o en cualquier combinación, pueden realizar las técnicas descritas a continuación con referencia a la figura 5, que son similares a las técnicas de este ejemplo, y las técnicas adicionales descritas a continuación con referencia a las figuras 6-8. En un ejemplo, una o más de las técnicas adicionales se pueden realizar en combinación con las técnicas de este ejemplo (y el ejemplo de la figura 5) que se refieren a la inicialización de contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos basándose en uno o más valores de índices de parámetros de inicialización. En particular, las técnicas descritas a continuación con referencia a las figuras 6-8 se refieren la inicialización de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto, incluida la determinación de los estados de contexto iniciales para los contextos que indican las probabilidades iniciales de los contextos, o la determinación directa de las probabilidades iniciales de los contextos, de modo que las probabilidades iniciales son más precisas en relación con las probabilidades iniciales determinadas mediante otras técnicas.
[0163] En consecuencia, como se ilustra en los ejemplos anteriores, y como se mostrará en los ejemplos de las figuras 5-8, las técnicas de la presente divulgación pueden permitir que el descodificador 30 de vídeo, o cualquiera de los componentes del mismo, descodifiquen diversos tipos de datos codificados, tales como, por ejemplo, los datos de vídeo codificados descritos anteriormente, con más eficiencia que cuando se usan otros procedimientos. En un ejemplo, como se ilustra en los ejemplos anteriores (y como se mostrará en el ejemplo de la figura 5), las técnicas pueden permitir que el descodificador 30 de vídeo tenga una menor complejidad en relación con otros sistemas al descodificar los datos codificados mediante el proceso de codificación de entropía adaptativa al contexto. Por ejemplo, las técnicas pueden reducir una cantidad de información almacenada en el descodificador 30 de vídeo y/o transmitida desde un codificador de vídeo (por ejemplo, el codificador 20 de vídeo) al descodificador 30 de vídeo con el propósito de inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto. En particular, la cantidad de información puede reducirse almacenando y/o transmitiendo valores de índices de parámetros de inicialización que indican los parámetros de inicialización usados para inicializar los contextos, en lugar de almacenar y/o transmitir los parámetros de inicialización directamente.
[0164] De una manera similar a la descrita anteriormente con referencia a la figura 2, en algunos ejemplos, la cantidad de información puede reducirse definiendo los valores de índices de parámetros de inicialización de manera que los valores de índices de parámetros de inicialización se representen con menos información que los parámetros de inicialización. Como resultado, los valores de índices de parámetros de inicialización pueden corresponder solo a un subconjunto de los parámetros de inicialización. De esta manera, se pueden usar menos que todos los parámetros de inicialización, según lo indicado por los valores de índices de parámetros de inicialización, para inicializar los contextos. Por ejemplo, algunos de los contextos pueden inicializarse usando parámetros de inicialización comunes. Sin embargo, cualquier efecto adverso asociado a el uso del subconjunto de parámetros de inicialización, en lugar de todos los parámetros de inicialización (por ejemplo, en el que las probabilidades iniciales de los contextos son relativamente menos precisas en comparación con las probabilidades iniciales determinadas usando todos los parámetros de inicialización, y en el que cada contexto se inicializa usando un único o más parámetros de inicialización), puede ser compensado por la cantidad reducida de información almacenada en el descodificador 30 de vídeo, y, en algunos casos, transmitida desde el codificador de vídeo al descodificador 30 de vídeo, como se ha descrito anteriormente.
[0165] De esta manera, en algunos ejemplos, los valores de índices de parámetros de inicialización que indican el subconjunto de parámetros de inicialización, y el propio subconjunto de parámetros de inicialización, pueden almacenarse en el descodificador 30 de vídeo, reduciendo posiblemente de ese modo la cantidad de información almacenada en el descodificador 30 de vídeo. Por ejemplo, en algunos casos, debido a que los valores de índices de parámetros de inicialización pueden representarse con menos información que los parámetros de inicialización, y debido a que los valores de índices de parámetros de inicialización pueden corresponder solo a un subconjunto de los parámetros de inicialización, una cantidad total de información usada para almacenar los valores de índices de parámetros de inicialización y el subconjunto de parámetros de inicialización en el descodificador 30 de vídeo pueden reducirse en relación con la cantidad de información que se requeriría para almacenar todos los parámetros de inicialización en el descodificador 30 de vídeo. Además, en otros casos, los valores de índices de parámetros de inicialización, en lugar de los parámetros de inicialización, pueden transmitirse desde el codificador de vídeo al descodificador 30 de vídeo, reduciendo de ese modo una cantidad total de información transmitida desde el codificador de vídeo al descodificador 30 de vídeo.
[0166] En otro ejemplo, como se mostrará en los ejemplos de las figuras 6-8, las técnicas de la presente divulgación pueden mejorar la compresión de los datos cuando un codificador de vídeo (por ejemplo, el codificador 20 de vídeo) está configurado para codificar los datos, y el descodificador 30 de vídeo está configurado para descodificar los datos codificados, mediante un proceso de codificación de entropía adaptativa al contexto. Por ejemplo, las técnicas pueden mejorar la compresión de los datos permitiendo al descodificador 30 de vídeo, o cualquiera de los componentes del mismo, inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto, de tal manera que el uno o más contextos incluyan probabilidades iniciales relativamente más precisas comparadas con las probabilidades iniciales determinadas mediante otras técnicas de inicialización de contextos. Adicionalmente, en algunos ejemplos, las técnicas pueden mejorar aún más la compresión de los datos permitiendo que el descodificador 30 de vídeo, o cualquiera de los componentes del mismo, actualice subsiguientemente las probabilidades del uno o más contextos de manera que las probabilidades actualizadas sean más precisas en comparación con las probabilidades actualizadas mediante otras técnicas de actualización de probabilidades de contexto.
[0167] En consecuencia, puede haber un ahorro de bits relativo para un flujo de bits codificado que incluye los datos codificados descodificados por el descodificador 30 de vídeo, o cualquiera de los componentes del mismo, y, en algunos casos, los valores de índices de parámetros de inicialización transmitidos desde un codificador de vídeo (por ejemplo, el codificador 20 de vídeo) al descodificador 30 de vídeo, y una reducción relativa de la complejidad del descodificador 30 de vídeo usado para descodificar los datos codificados, cuando se usan las técnicas de la presente divulgación.
[0168] De esta manera, el descodificador 30 de vídeo representa un ejemplo de aparato para codificación de entropía adaptativa al contexto, comprendiendo el aparato un codificador configurado para determinar uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización, determinar uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización, e inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0169] La figura 4 es un diagrama conceptual que ilustra un ejemplo de jerarquía temporal de una secuencia de vídeo codificada (CVS), codificada mediante codificación de vídeo escalable (SVC), de conformidad con las técnicas de la presente divulgación. Como se muestra en la figura 4, una CVS puede incluir una pluralidad de tramas de vídeo, es decir, las tramas 1-8, dispuestas en un orden temporal, que puede denominarse orden de salida o de «visualización». Cuando la CVS se codifica usando SVC, como se muestra en la figura 4, algunas de las tramas de la CVS, es decir, las tramas 0, 4 y 8, pueden codificarse en un subconjunto de las tramas, que puede denominarse «capa base» de la CVS, mientras que otras tramas, es decir, las tramas 1 -3 y 5-7 pueden codificarse en uno o más subconjuntos adicionales de las tramas de la CVS, cada una de las cuales puede denominarse «capa de mejora» de la CVS. Por ejemplo, la capa base de la CVS puede transmitirse y visualizarse en un dispositivo de visualización. Adicionalmente, una o más de las capas de mejora del CVS se pueden transmitir y visualizar de forma selectiva en el mismo dispositivo de visualización, junto con la capa base. De esta manera, la CVS de la figura 4 que comprende la capa base y la una o más capas de mejora descritas anteriormente pueden denominarse CVS codificadas mediante SVC.
[0170] Como se ilustra en el ejemplo de la figura 4, una trama de vídeo particular de una CVS que está codificada mediante SVC puede codificarse en una estructura jerárquica. Como se muestra en la figura 4, las tramas 0, 4 y 8 pueden codificarse en una capa temporal particular (por ejemplo, la «capa 0»), las tramas 2 y 6 pueden codificarse en otra capa temporal (por ejemplo, la «capa 1»), y las tramas restantes, es decir, las tramas 1, 3, 5 y 7, pueden codificarse en otra capa temporal más (por ejemplo, la «capa 2»). En el ejemplo de la figura 4, la capa 0 puede denominarse capa base, y cada una de las capas 1 y 2 puede denominarse capa de mejora. Además, la dependencia entre las tramas de la figura 4 puede no ser simétrica. En otras palabras, las tramas codificadas en capas temporales inferiores (por ejemplo, la capa 0) pueden servir de tramas de referencia para tramas codificadas en capas temporales superiores (por ejemplo, las capas 1 y 2), como se indica mediante las flechas mostradas en la figura 4. A la inversa, las tramas codificadas en capas temporales superiores pueden no servir de tramas de referencia para tramas codificadas en capas temporales inferiores.
[0171] De acuerdo con las técnicas de la presente divulgación, una capa temporal asociada a datos de vídeo, por ejemplo, una trama de vídeo de una CVS codificada mediante SVC, puede usarse para inicializar uno o más contextos de un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC) usado para codificar los datos de vídeo. Por ejemplo, la capa temporal asociada a los datos de vídeo, que puede representarse usando un parámetro de capa temporal, puede usarse como parte de la determinación de estados de contexto iniciales para uno o más contextos del proceso de codificación de entropía adaptativa al contexto, como se ha descrito anteriormente con referencia a las figuras 1-3, y como se describirá con mayor detalle a continuación con referencia a los procedimientos de ejemplo de las figuras 5-8. De esta manera, las técnicas de la presente divulgación pueden, en algunos casos, permitir la inicialización del uno o más contextos, de modo que las probabilidades iniciales indicadas por los estados de contexto iniciales para el uno o más contextos sean relativamente más precisas en comparación con las probabilidades iniciales determinadas mediante otras técnicas (por ejemplo, técnicas que no tienen en cuenta una capa temporal asociada a datos de vídeo cuando se codifican los datos de vídeo mediante un proceso de codificación de entropía adaptativa al contexto).
[0172] Las figuras 5-8 son diagramas de flujo que ilustran procedimientos de ejemplo de inicialización de uno o más contextos y probabilidades de un proceso de codificación de entropía adaptativa al contexto, de conformidad con las técnicas de la presente divulgación. En particular, las técnicas de los procedimientos de ejemplo de las figuras 5, 6 y 8 incluyen determinar estados de contexto iniciales para uno o más contextos de un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC) usado para codificar datos (por ejemplo, datos de vídeo). Adicionalmente, las técnicas del procedimiento de ejemplo de la figura 7 incluyen determinar valores de probabilidades iniciales de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos, así como actualizar los valores de probabilidades iniciales basándose en los datos.
[0173] Las técnicas de las figuras 5-8 en general pueden realizarse mediante cualquier unidad de procesamiento o procesador, ya sea implementadas en hardware, software, firmware o una combinación de los mismos, y cuando se implementan en software o firmware, se puede proporcionar hardware correspondiente para ejecutar instrucciones para el software o firmware. A modo de ejemplo, las técnicas de las figuras 5-8 se describen con respecto a la unidad 56 de codificación de entropía del codificador 20 de vídeo (figura 2) y/o la unidad 80 de descodificación de entropía del descodificador 30 de vídeo (figura 3), aunque debe entenderse que otros dispositivos pueden estar configurados para realizar técnicas similares. Además, las etapas ilustradas en las figuras 5-8 pueden realizarse en un orden diferente o en paralelo, y pueden añadirse etapas adicionales y omitirse determinadas etapas, sin apartarse de las técnicas de la presente divulgación. Adicionalmente, de conformidad con las técnicas de la presente divulgación, las técnicas de los procedimientos de ejemplo de las figuras 5-8 pueden realizarse individualmente o en combinación, incluida la realización de una o más de las técnicas de los procedimientos de ejemplo de las figuras 5-8 en secuencia o en paralelo con una o más técnicas diferentes de las técnicas de los procedimientos de ejemplo de las figuras 5-8.
[0174] En el ejemplo de cada una de las figuras 5-8, inicialmente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden recibir un bloque de datos de vídeo. Por ejemplo, el bloque puede comprender un macrobloque, o una TU de una CU, como se ha descrito previamente. En algunos ejemplos, la unidad 56 de codificación de entropía puede codificar el bloque de datos de vídeo mediante un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC). De manera similar, en otros ejemplos, en casos en los que el bloque es un bloque codificado de datos de vídeo, la unidad 80 de descodificación de entropía puede descodificar el bloque usando un proceso de codificación de entropía adaptativa al contexto igual o similar al descrito anteriormente con referencia a la unidad 56 de codificación de entropía. En otros ejemplos más, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden codificar o descodificar otros tipos de datos, por ejemplo, datos distintos a los datos de vídeo, mediante un proceso de codificación de entropía adaptativa al contexto. De esta manera, los procedimientos de ejemplo de las figuras 5-8 puede ser aplicables a cualquier sistema de codificación que incluya un codificador de vídeo, un descodificador de vídeo, o cualquier combinación de los mismos, configurados para codificar datos de vídeo mediante un proceso de codificación de entropía adaptativa al contexto. Adicionalmente, los procedimientos de ejemplo de las figuras 5-8 pueden ser aplicables a las técnicas para codificar cualquiera de una amplia variedad de datos, incluidos datos distintos a los datos de vídeo, mediante un proceso de codificación de entropía adaptativa al contexto.
[0175] La figura 5 es un diagrama de flujo que ilustra un procedimiento de ejemplo para inicializar uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos basándose en uno o más valores de índices de parámetros de inicialización, de conformidad con las técnicas de la presente divulgación. En otras palabras, las técnicas del procedimiento de ejemplo de la figura 5 incluyen determinar un estado de contexto inicial para cada uno de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos usando uno o más parámetros de inicialización, en el que el uno o más parámetros de inicialización se determinan usando uno o más valores de índices de parámetros de inicialización.
[0176] En un ejemplo, para codificar un bloque de datos de vídeo, u otros tipos de datos, mediante un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC) como el descrito anteriormente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar uno o más parámetros de inicialización para el proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización (500). Por ejemplo, el uno o más parámetros de inicialización pueden corresponder a uno o más parámetros «m» y «n» descritos anteriormente. Como también se ha descrito anteriormente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden usar valores del uno o más parámetros «m» y «n» para determinar estados de contexto iniciales para contextos del proceso de codificación de entropía adaptativa al contexto, por ejemplo, usando la relación lineal descrita anteriormente con referencia a la norma H.264/AVC y ciertas versiones provisionales de la norma HEVC. Además, de acuerdo con las técnicas de la presente divulgación, el uno o más valores de índices de parámetros de inicialización pueden representarse con menos información (por ejemplo, menos bits de datos) que una cantidad de información usada para representar valores del uno o más parámetros de inicialización.
[0177] En un ejemplo, en casos donde el uno o más parámetros de inicialización corresponden a uno o más parámetros «m» y «n», los valores de cada uno del uno o más parámetros «m» y «n» pueden representarse usando 8 bits de datos. Como resultado, en este ejemplo, se usan 16 bits de datos para representar cada «par» de valores de parámetros «m» y «n» usados para inicializar un contexto particular. En un ejemplo, en los casos donde cada valor de índice de parámetro de inicialización se usa para determinar un valor de uno particular del uno o más parámetros «m» y «n», cada valor de índice de parámetro de inicialización puede representarse usando 4 bits de datos, dando como resultado el uso de 8 bits de datos para determinar cada par de valores de parámetros «m» y «n». En otro ejemplo, en los casos donde cada valor de índice de parámetro de inicialización se usa para determinar un par de valores de parámetros «m» y «n» particulares, cada valor de índice de parámetro de inicialización puede representarse usando 8 bits de datos, lo que da como resultado nuevamente en el uso de 8 bits de datos para determinar cada par de valores de parámetros «m» y «n».
[0178] De esta manera, en lugar de almacenar y/o transmitir 16 bits de datos a fin de inicializar un contexto particular, solo se almacenan y/o transmiten 8 bits de datos. Además, debido a que el uno o más valores de índices de parámetros de inicialización pueden corresponder solo a un subconjunto de todos los posibles parámetros de inicialización, se pueden usar menos que todos los posibles parámetros de inicialización para inicializar los contextos. Por ejemplo, algunos de los contextos pueden inicializarse usando parámetros de inicialización comunes. Sin embargo, cualquier efecto adverso asociado al uso del subconjunto de los parámetros de inicialización, en lugar de todos los posibles parámetros de inicialización, puede compensarse con la cantidad reducida de información almacenada y/o transmitida, como se ha descrito anteriormente.
[0179] La unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar además uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización (502). Por ejemplo, como se ha descrito previamente, la unidad 56 de codificación y/o la unidad 80 de descodificación de entropía pueden determinar el uno o más estados de contexto iniciales basándose en el uno o más parámetros de inicialización usando una o más relaciones como, por ejemplo, la relación lineal descrita anteriormente con referencia a la norma H.264/AVC y ciertas versiones provisionales de la norma HEVC.
[0180] La unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden inicializar además el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales (504). Por ejemplo, como también se ha descrito previamente, la unidad 56 de codificación y/o la unidad 80 de descodificación de entropía pueden definir un estado de contexto de uno particular del uno o más contextos como uno correspondiente del uno o más estados de contexto iniciales. Como también se ha descrito previamente, el estado de contexto inicializado del contexto particular del uno o más contextos puede, a su vez, indicar una probabilidad inicial del contexto.
[0181] En algunos ejemplos, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden además realizar una codificación de entropía de los datos (por ejemplo, el bloque de datos de vídeo u otros tipos de datos) basándose en el uno o más contextos inicializados del proceso de codificación de entropía adaptativa al contexto (506). Por ejemplo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden codificar los datos realizando el proceso de codificación de entropía adaptativa al contexto basándose en el uno o más contextos inicializados descritos anteriormente. Como se ha descrito previamente, los datos pueden incluir datos de vídeo, como, por ejemplo, un bloque de datos de vídeo y/o cualquier otro tipo de datos. Adicionalmente, en otros ejemplos, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden actualizar además los estados de contexto del uno o más contextos inicializados del proceso de codificación de entropía adaptativa al contexto basándose en los datos (508). Por ejemplo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden actualizar las probabilidades iniciales del uno o más contextos inicializados, según lo indicado por el uno o más estados de contexto iniciales descritos anteriormente, basándose en los datos (por ejemplo, basándose en uno o más valores de los datos).
[0182] En algunos ejemplos, el uno o más parámetros de inicialización pueden estar incluidos en una o más tablas. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden correlacionar el uno o más valores de índices de parámetros de inicialización con el uno o más parámetros de inicialización de la una o más tablas.
[0183] En otros ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden calcular el uno o más parámetros de inicialización usando el uno o más valores de índices de parámetros de inicialización y una o más fórmulas. Por ejemplo, cada una de la una o más fórmulas puede implementarse usando solo una o más operaciones, cada una seleccionada de un grupo que consiste en una operación de desplazamiento de bit, una operación de suma, una operación de resta, una operación de multiplicación y una operación de división.
[0184] En otros ejemplos más, el uno o más parámetros de inicialización pueden incluir uno o más valores de pendiente y uno o más valores de intersección, y el uno o más valores de índices de parámetros de inicialización pueden incluir uno o más valores de índices de pendiente y uno o más valores de índices de intersección. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índice de parámetros de inicialización, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar el uno o más valores de pendiente basándose en el uno o más valores de índices de pendiente, y determinar el uno o más valores de intersección basándose en el uno o más valores de índices de intersección.
[0185] En algunos ejemplos, el uno o más parámetros de inicialización pueden incluir una vez más uno o más valores de pendiente y uno o más valores de intersección. En estos ejemplos, para determinar el uno o más parámetros de inicialización basándose en el uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar al menos uno del uno o más valores de pendiente y al menos uno del uno o más valores de intersección basándose en uno solo del uno o más valores de índices de parámetros de inicialización. En otras palabras, en algunos ejemplos, cada valor de índice de parámetro de inicialización se puede usar para determinar uno o más valores de pendiente y uno o más valores de intersección. En un ejemplo, cada valor de índice de parámetro de inicialización puede correlacionarse con el uno o más valores de pendiente y el uno o más valores de intersección de una o más tablas. En otro ejemplo, cada valor de índice de parámetro de inicialización puede usarse para calcular el uno o más valores de pendiente y el uno o más valores de intersección basándose en una o más fórmulas. Sin embargo, en otros ejemplos, cada valor de índice de parámetro de inicialización puede incluir uno o más componentes, o «subconjuntos», que pueden usarse para determinar el uno o más valores de pendiente y el uno o más valores de intersección, como se describe con mayor detalle a continuación.
[0186] Por ejemplo, en algunos ejemplos, el uno solo del uno o más valores de índices de parámetros de inicialización puede incluir uno o más componentes de valores de índices de pendiente y uno o más componentes de valores de índices de intersección. En estos ejemplos, para determinar el al menos uno del uno o más valores de pendiente y el al menos uno del uno o más valores de intersección basándose en el uno solo del uno o más valores de índices de parámetros de inicialización, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar el al menos uno del uno o más valores de pendiente basándose en el uno o más componentes de valores de índices de pendiente, y determinar el al menos uno del uno o más valores de intersección basándose en el uno o más componentes de valores de índices de intersección.
[0187] Además, en otros ejemplos, para determinar el al menos uno del uno o más valores de pendiente basándose en el uno o más componentes de valores de índices de pendiente, y determinar el al menos uno del uno o más valores de intersección basándose en el uno o más componentes de valores de índices de intersección, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar uno del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección del uno solo del uno o más valores de índices de parámetros de inicialización usando una o más operaciones de desplazamiento de bit, y determinar otro del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección del solo uno del uno o más valores de índices de parámetros de inicialización usando una o más operaciones AND lógicas.
[0188] En otros ejemplos más, el uno solo del uno o más valores de índices de parámetros de inicialización puede incluir un número predeterminado de bits, en el que cada uno del uno o más componentes de valores de índices de pendiente y el uno o más componentes de valores de índices de intersección incluye un subconjunto respectivo del número de bits predeterminado. En algunos ejemplos, cada uno de los subconjuntos que corresponden al uno o más componentes de valores de índices de pendiente puede incluir un número diferente del número de bits predeterminado que cada uno de los subconjuntos que corresponden al uno o más componentes de valores de índices de intersección. En otros ejemplos, cada uno de los subconjuntos que corresponden al uno o más componentes de valores de índices de pendiente puede incluir un mismo número del número predeterminado de bits que cada uno de los subconjuntos que corresponden al uno o más componentes de valores de índices de intersección.
[0189] Adicionalmente, en algunos ejemplos, el uno o más contextos del proceso de codificación de entropía adaptativa al contexto pueden incluir un subconjunto de contextos del proceso de codificación de entropía adaptativa al contexto. Por ejemplo, el subconjunto puede corresponder a un tipo de sintaxis asociado a datos de vídeo codificados mediante el proceso de codificación de entropía adaptativa al contexto. En algunos ejemplos, el tipo de sintaxis puede incluir uno o más de un tipo de componente, un tamaño de bloque, un tamaño de transformada, un modo de predicción, información de movimiento e información de coeficiente de transformada, asociados a los datos de vídeo.
[0190] De esta manera, el procedimiento de la figura 5 representa un ejemplo de procedimiento de codificación de entropía adaptativa al contexto, comprendiendo el procedimiento determinar uno o más parámetros de inicialización para un proceso de codificación de entropía adaptativa al contexto basándose en uno o más valores de índices de parámetros de inicialización, determinar uno o más estados de contexto iniciales para inicializar uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más parámetros de inicialización, e inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0191] La figura 6 es un diagrama de flujo que ilustra un procedimiento de ejemplo de inicialización de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo basándose en una capa temporal asociada a los datos de vídeo, de conformidad con las técnicas de la presente divulgación. En otras palabras, las técnicas del procedimiento de ejemplo de la figura 6 incluyen determinar un estado de contexto inicial para cada uno de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo usando uno o más parámetros de inicialización y un parámetro de capa temporal que es indicativo de una capa temporal asociada a los datos de vídeo.
[0192] En un ejemplo, para codificar un bloque de datos de vídeo, u otros tipos de datos, usando un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC) como el descrito anteriormente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar uno o más estados de contexto iniciales para inicializar uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo basándose en uno o más parámetros de inicialización y un parámetro de capa temporal asociado a los datos de vídeo (600). Por ejemplo, el parámetro de capa temporal puede corresponder a un elemento sintáctico para los datos de vídeo, en el que un valor del elemento sintáctico es indicativo de una capa temporal asociada a los datos de vídeo. Como se ha descrito anteriormente con referencia a la figura 4, la capa temporal asociada a los datos de vídeo puede corresponder a una ubicación de los datos de vídeo (por ejemplo, de una trama de vídeo particular de los datos de vídeo) dentro de una jerarquía temporal asociada a los datos de vídeo.
[0193] De esta manera, las probabilidades iniciales del uno o más contextos, indicadas por el uno o más estados de contexto iniciales, pueden ser relativamente más precisas en comparación con unas probabilidades iniciales de contextos determinadas mediante otras técnicas, por ejemplo, técnicas que determinan estados de contexto iniciales para contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo, sin tener en cuenta una capa temporal asociada a los datos de vídeo.
[0194] Subsiguientemente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden inicializar además el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales (602), como se ha descrito anteriormente con referencia a la figura 5. Adicionalmente, en algunos ejemplos, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden codificar además los datos de vídeo basándose en el uno o más contextos inicializados del proceso de codificación de entropía adaptativa al contexto (604) y, en algunos casos, actualizar los estados de contexto del uno o más contextos inicializados del proceso de codificación de entropía adaptativa al contexto basándose en los datos de vídeo (606), de una manera similar a la descrita anteriormente con referencia a la figura 5.
[0195] En algunos ejemplos, los datos de vídeo pueden incluir uno de una trama de datos de vídeo y un segmento de una trama de datos de vídeo. En estos ejemplos, el parámetro de capa temporal puede incluir una capa temporal de la trama respectiva de datos de vídeo.
[0196] En otros ejemplos, para determinar el uno o más estados de contexto iniciales basándose en el uno o más parámetros de inicialización y el parámetro de capa temporal, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar el uno o más estados de contexto iniciales basándose en el uno o más parámetros de inicialización y uno de un parámetro de desplazamiento que varía basándose en el parámetro de capa temporal, y un valor de parámetro de cuantificación de inicialización que varía basándose en el parámetro de capa temporal.
[0197] En algunos ejemplos, para determinar el uno o más estados de contexto iniciales basándose en el uno o más parámetros de inicialización y el parámetro de desplazamiento, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden modificar un valor de parámetro de cuantificación asociado a los datos de vídeo usando el parámetro de desplazamiento. En otros ejemplos, cada uno de uno o más del valor de parámetro de desplazamiento y de parámetro de cuantificación de inicialización puede variar además basándose en uno o más de un tipo de segmento, una resolución de trama y un tamaño de lista de tramas de referencia asociados a los datos de vídeo. Además, en algunos ejemplos, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden codificar además uno o más del valor de parámetro de desplazamiento y de parámetro de cuantificación de inicialización que se van a incluir en al menos uno de un conjunto de parámetros de imagen (PPS), un conjunto de parámetros de secuencia (SPS), y un conjunto de parámetros de adaptación (APS) asociados a los datos de vídeo, por ejemplo, u otro conjunto de parámetros o localización de sintaxis de alto nivel.
[0198] Adicionalmente, en algunos ejemplos, el uno o más contextos del proceso de codificación de entropía adaptativa al contexto pueden incluir un subconjunto de contextos del proceso de codificación de entropía adaptativa al contexto. En un ejemplo, el subconjunto puede corresponder a un tipo de sintaxis asociado a los datos de vídeo. En otro ejemplo, el tipo de sintaxis puede incluir uno o más de un tipo de componente, un tamaño de bloque, un tamaño de transformada, un modo de predicción, información de movimiento e información de coeficientes de transformada asociados a los datos de vídeo.
[0199] De esta manera, el procedimiento de la figura 6 representa un ejemplo de procedimiento de codificación de entropía adaptativa al contexto, comprendiendo el procedimiento determinar uno o más estados de contexto iniciales para inicializar uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo basándose en uno o más parámetros de inicialización y un parámetro de capa temporal asociado a los datos de vídeo, e inicializar el uno o más contextos del proceso de codificación de entropía adaptativa al contexto basándose en el uno o más estados de contexto iniciales.
[0200] La figura 7 es un diagrama de flujo que ilustra un procedimiento de ejemplo de inicialización de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto basándose en uno o más desplazamientos de probabilidad, de conformidad con las técnicas de la presente divulgación. En otras palabras, las técnicas del procedimiento de ejemplo de la figura 7 incluyen determinar una probabilidad inicial de cada uno de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos, de modo que la probabilidad inicial de cada contexto se sitúe dentro de un subconjunto de un intervalo de valores de probabilidad global definido por un límite inferior y un límite superior. En el procedimiento de ejemplo de la figura 7, el subconjunto está definido por uno o más desplazamientos de probabilidad en relación con uno o más del límite inferior y el límite superior del intervalo de valores de probabilidad.
[0201] En un ejemplo, para codificar un bloque de datos de vídeo, u otros tipos de datos, mediante un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC) como se ha descrito anteriormente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar un primer valor (700). Por ejemplo, el primer valor puede corresponder a una probabilidad inicial de un contexto particular del proceso de codificación de entropía adaptativa al contexto que se obtiene mediante una técnica de inicialización de probabilidades de contexto determinada. En este ejemplo, la probabilidad inicial del contexto puede corresponder a una probabilidad inicial «predeterminada», por ejemplo, obtenida mediante la técnica de inicialización de probabilidades de contexto descrita anteriormente con referencia a las normas H.264/AVC y HEVC. A diferencia de otras técnicas, sin embargo, las técnicas del procedimiento de ejemplo de la figura 7 incluyen determinar si un segundo valor, diferente al primer valor, puede dar como resultado una probabilidad inicial relativamente más precisa (por ejemplo, menos sesgada) del contexto y, basándose en la determinación, seleccionar el primer valor o el segundo valor como la probabilidad inicial del contexto.
[0202] Por ejemplo, en caso de que el primer valor esté dentro de un intervalo de valores definidos por un límite inferior, un límite superior y uno o más desplazamientos relativos a uno o más del límite inferior y el límite superior (702, «SÍ»), la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden seleccionar además el primer valor (704). En caso de que el primer valor esté fuera del intervalo de valores (702, «NO»), sin embargo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden seleccionar en su lugar un segundo valor, en el que el segundo valor es diferente al primero valor (706). Como se ha explicado anteriormente, el segundo valor puede corresponder a una probabilidad diferente del contexto que es más precisa en relación con la probabilidad correspondiente al primer valor, y viceversa.
[0203] De esta manera, la probabilidad inicial del contexto puede ser relativamente más precisa en comparación con una probabilidad inicial de un contexto determinada mediante otras técnicas, por ejemplo, técnicas que determinan una probabilidad inicial de un contexto de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos sin tener en cuenta una ubicación relativa de la probabilidad inicial dentro de un intervalo de valores de probabilidad. Por ejemplo, de acuerdo con algunas técnicas, la probabilidad inicial del contexto puede situarse relativamente cerca de un límite inferior y un límite superior del intervalo de valores de probabilidad, lo que posiblemente dé como resultado una probabilidad inicial inexacta.
[0204] Subsiguientemente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden inicializar una probabilidad de un contexto de un proceso de codificación de entropía adaptativa al contexto basándose en el primer o segundo valor seleccionado (708). Por ejemplo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden inicializar la probabilidad del contexto definiendo la probabilidad del contexto como el primer o segundo valor seleccionado.
[0205] En algunos ejemplos, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden realizar además una codificación de entropía de los datos (por ejemplo, el bloque de datos de vídeo u otros tipos de datos) basándose en la probabilidad inicializada del contexto del proceso de codificación de entropía adaptativa al contexto (710). Por ejemplo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden codificar los datos realizando el proceso de codificación de entropía adaptativa al contexto basándose en la probabilidad inicializada descrita anteriormente, así como también basándose en una o más probabilidades distintas de contextos inicializados de la misma manera o una manera similar a la descrita anteriormente.
[0206] Adicionalmente, en otros ejemplos, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden actualizar además la probabilidad inicializada del contexto del proceso de codificación de entropía adaptativa al contexto basándose en los datos y el uno o más desplazamientos (712). Por ejemplo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden actualizar la probabilidad inicializada del contexto basándose en los datos (por ejemplo, basándose en uno o más valores de los datos), de una manera similar a la descrita anteriormente con referencia a las figuras 5 y 6. Adicionalmente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía también pueden actualizar la probabilidad inicializada del contexto basándose en el uno o más desplazamientos, de modo que la probabilidad actualizada también se sitúe dentro del subconjunto descrito previamente del intervalo de valores de probabilidad global definido por el límite inferior y el límite superior. En otras palabras, en algunos ejemplos, las técnicas del procedimiento de ejemplo de la figura 7 pueden ser aplicables a la determinación de una probabilidad inicial de un contexto particular, así como a la actualización continua de la probabilidad del contexto. En otros ejemplos, sin embargo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden actualizar la probabilidad inicializada del contexto basándose solo en los datos, de una manera similar a la descrita anteriormente con referencia a las figuras 5 y 6.
[0207] En algunos ejemplos, el uno o más desplazamientos pueden incluir un primer desplazamiento y un segundo desplazamiento. En estos ejemplos, para seleccionar el primer valor en caso de que el primer valor se encuentre dentro del intervalo de valores, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden seleccionar el primer valor si el primer valor es mayor que un valor del límite inferior más el primer desplazamiento y menor que un valor del límite superior menos el segundo desplazamiento. En algunos ejemplos, el primer desplazamiento puede ser igual al segundo desplazamiento. En otros ejemplos, el primer desplazamiento puede ser diferente del segundo desplazamiento.
[0208] En otros ejemplos más, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden actualizar además la probabilidad del contexto del proceso de codificación de entropía adaptativa al contexto basándose en uno o más desplazamientos, como ya se ha descrito anteriormente.
[0209] De esta manera, el procedimiento de la figura 7 representa un ejemplo de procedimiento de codificación de entropía adaptativa al contexto, comprendiendo el procedimiento determinar un primer valor, en caso de que el primer valor se encuentre dentro de un intervalo de valores definido por un límite inferior, un límite superior y uno o más desplazamientos relativos a uno o más del límite inferior y el límite superior, seleccionar el primer valor, en caso de que el primer valor se encuentre fuera del intervalo de valores, seleccionar un segundo valor, en el que el segundo valor es diferente del primer valor, e inicializar una probabilidad de un contexto de un proceso de codificación de entropía adaptativa al contexto basándose en el primer o segundo valor seleccionado.
[0210] La figura 8 es un diagrama de flujo que ilustra un procedimiento de ejemplo de inicialización de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto basándose en valores de estados de contexto de referencia y de parámetros de cuantificación y una o más relaciones, de conformidad con las técnicas de la presente divulgación. En otras palabras, las técnicas del procedimiento de ejemplo de la figura 8 incluyen determinar un estado de contexto inicial para cada uno de uno o más contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo mediante tres o más conjuntos de valores, incluyendo cada uno un valor de estado de contexto de referencia y un valor de parámetro de cuantificación de referencia correspondiente, y una o más relaciones.
[0211] En un ejemplo, para codificar un bloque de datos de vídeo, u otros tipos de datos, usando un proceso de codificación de entropía adaptativa al contexto (por ejemplo, un proceso CABAC) como el descrito anteriormente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden determinar un estado de contexto inicial para inicializar un contexto de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo basándose en un parámetro de inicialización que define tres o más estados de contexto de referencia cada uno correspondiente a uno respectivo de tres o más valores de parámetros de cuantificación de referencia y un valor de parámetro de cuantificación asociado a los datos de vídeo (800). Por ejemplo, los tres o más estados de contexto de referencia y los tres o más valores de parámetros de cuantificación de referencia correspondientes pueden ser tres o más conjuntos, o «pares» de valores predeterminados, cada uno de los cuales incluye un valor de estado de contexto de referencia y un valor de parámetro de cuantificación de referencia correspondiente. En un ejemplo, el valor del estado de contexto de referencia de cada par puede obtenerse antes de realizar la etapa (800) usando el valor del parámetro de cuantificación de referencia correspondiente del par respectivo, y una o más relaciones. En algunos ejemplos, la una o más relaciones pueden incluir, por ejemplo, la relación lineal descrita anteriormente con referencia a la norma H.264/AVC y ciertas versiones provisionales de la norma HEVC, la relación usada en el procedimiento de ejemplo de la figura 6 que tiene en cuenta una capa temporal asociada a los datos de vídeo, o cualquier otra relación usada para determinar un estado de contexto para un contexto basándose en un valor de parámetro de cuantificación. Adicionalmente, el valor de parámetro de cuantificación asociado a los datos de vídeo puede ser un valor del parámetro de cuantificación asociado a una o más tramas, segmentos, bloques u otras partes de los datos de vídeo.
[0212] De esta manera, una probabilidad inicial del contexto, indicada por el estado de contexto inicial, puede ser relativamente más precisa en comparación con una probabilidad inicial de un contexto determinado mediante otras técnicas, por ejemplo, técnicas que determinan estados de contexto iniciales para contextos de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo usando una relación lineal definida por valores de pendiente e intersección, y por un parámetro de cuantificación asociado a los datos de vídeo. Un ejemplo de dicha relación lineal se ha descrito anteriormente con referencia a la norma H.264/AVC y ciertas versiones provisionales de la norma HEVC. De acuerdo con las técnicas del procedimiento de ejemplo de la figura 8, la probabilidad inicial del contexto puede obtenerse usando el valor de parámetro de inicialización y de parámetro de cuantificación asociados a los datos de vídeo junto con diversas técnicas de interpolación (por ejemplo, lineal y no lineal), que pueden dar como resultado que la probabilidad inicial del contexto sea relativamente más precisa.
[0213] Subsiguientemente, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden inicializar el contexto del proceso de codificación de entropía adaptativa al contexto basándose en el estado de contexto inicial (802), de una manera similar a la descrita anteriormente con referencia a las figuras 5 y 6. Adicionalmente, en algunos ejemplos, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden realizar además una codificación de entropía de los datos de vídeo basándose en el contexto inicializado del proceso de codificación de entropía adaptativa al contexto (804) y, en algunos casos, actualizar un estado de contexto de los contextos inicializados del proceso de codificación de entropía adaptativa al contexto basándose en los datos de vídeo (806), también de una manera similar a la descrita anteriormente con referencia a las figuras 5 y 6.
[0214] En algunos ejemplos, para determinar el estado de contexto inicial basándose en el valor de parámetro de inicialización y de parámetro de cuantificación asociado a los datos de vídeo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden interpolar linealmente entre los tres o más estados de contexto de referencia y los correspondientes tres o más valores de parámetros de cuantificación de referencia usando el valor de parámetro de cuantificación asociado a los datos de vídeo. Por ejemplo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden usar técnicas de interpolación lineal o parcialmente lineal para determinar el estado de contexto inicial basándose en el valor de parámetro de inicialización y de parámetro de cuantificación asociado a los datos de vídeo.
[0215] En otros ejemplos, para determinar el estado de contexto inicial basándose en el valor de parámetro de inicialización y de parámetro de cuantificación asociado a los datos de vídeo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden ajustar una curva entre los tres o más estados de contexto de referencia y los tres o más valores de parámetros de cuantificación de referencia correspondientes, e interpolar entre los tres o más estados de contexto de referencia y los tres o más valores de parámetros de cuantificación de referencia correspondientes usando la curva ajustada y el valor de parámetro de cuantificación asociado a los datos de vídeo. Por ejemplo, la unidad 56 de codificación de entropía y/o la unidad 80 de descodificación de entropía pueden usar técnicas de interpolación de splines, bilineales o cualquiera que sea no lineal o parcialmente no lineal para determinar el estado de contexto inicial basándose en el valor de parámetro de inicialización y de parámetro de cuantificación asociado a los datos de vídeo.
[0216] Adicionalmente, en otros ejemplos más, cada uno de los tres o más valores de parámetros de cuantificación de referencia puede tener un desplazamiento de un valor que es múltiplo entero de «2» con respecto a otro de los tres o más valores de parámetros de cuantificación de referencia. Por ejemplo, como se ha descrito anteriormente, un primer valor de parámetro de cuantificación de referencia, por ejemplo, «QP1», puede ser igual a «26», un segundo valor de parámetro de cuantificación de referencia, por ejemplo, «QP2», puede ser igual a «QP1-8» o «18», y un tercer valor de parámetro de cuantificación de referencia, «QP3», puede ser igual a «QP1+8» o «34». En este ejemplo, cada uno de los valores de parámetros de cuantificación de referencia QP1, QP2 y QP3 tienen un desplazamiento mutuo de un valor que es múltiplo entero de «2», en este caso, «8». En otros ejemplos, cada uno de los tres o más valores de parámetros de cuantificación de referencia pueden tener un desplazamiento unos en relación con otros de cualquier otro valor, incluido cualquier otro valor que sea múltiplo entero de «2».
[0217] De esta manera, el procedimiento de la figura 8 representa un ejemplo de procedimiento de codificación de entropía adaptativa al contexto, comprendiendo el procedimiento determinar un estado de contexto inicial para inicializar un contexto de un proceso de codificación de entropía adaptativa al contexto usado para codificar datos de vídeo basándose en un parámetro de inicialización que define tres o más estados de contexto de referencia cada uno correspondiente a uno respectivo de tres o más valores de parámetros de cuantificación de referencia, y un valor de parámetro de cuantificación asociado a los datos de vídeo, e inicializar el contexto del proceso de codificación de entropía adaptativa al contexto basándose en el estado de contexto inicial.
[0218] 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 se pueden almacenar en, o transmitir a través de, un medio legible por ordenador como una o más instrucciones o código y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como unos medios de almacenamiento de datos o unos medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) medios de almacenamiento tangibles legibles por ordenador que son no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde 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 la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0219] 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 pueda usarse para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse desde un ordenador. Asimismo, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota mediante un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o unas tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray, de los cuales el disco flexible normalmente reproduce datos magnéticamente, mientras que los demás reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también deberían incluirse dentro del alcance de los medios legibles por ordenador.
[0220] Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA) u otros circuitos de lógica integrada o discreta equivalentes. En consecuencia, el término «procesador», como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a 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 se puede proporcionar dentro de módulos de hardware y/o software dedicados, configurados para codificar y descodificar, o incorporar en un códec combinado. Asimismo, las técnicas podrían implementarse totalmente en uno o más circuitos o elementos lógicos.
[0221] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un teléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En la presente divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, aunque no se requiere necesariamente su realización mediante diferentes unidades de hardware. En su lugar, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar mediante un grupo de unidades de hardware interoperativas, incluidos uno o más procesadores como se ha descrito anteriormente, conjuntamente con software y/o firmware adecuados.

Claims (1)

  1. REIVINDICACIONES
    Un procedimiento para inicializar un contexto usado para codificar datos de vídeo en un proceso de codificación aritmética binaria adaptativa al contexto (CABAC), el procedimiento que comprende: determinar un primer valor de índice de parámetro de inicialización de 4 bits, m, como x>> 4, donde x es un parámetro de 8 bits, y donde «>>» indica una operación de desplazamiento a la derecha; determinar un segundo valor de índice de parámetro de inicialización de 4 bits, n, como x&15, donde x es el mismo parámetro de 8 bits, y «&» indica una operación AND lógica;
    determinar un valor de pendiente y un valor de intersección a partir de los valores de índices de parámetros de inicialización primero y segundo correspondientes, en el que determinar el valor de pendiente y el valor de intersección comprende calcular el valor de pendiente y el valor de intersección a partir de los valores de índices de parámetros de inicialización primero y segundo usando una o más fórmulas; e
    inicializar el estado del contexto usado para codificar los datos de vídeo en el proceso CABAC usando el valor de pendiente y el valor de intersección determinados,
    en el que un intervalo suficientemente grande de valores de pendiente e intersección para inicializar el estado del contexto se cubre usando m para representar un valor de índice de pendiente y n para representar un valor de índice de intersección.
    El procedimiento de acuerdo con la reivindicación 1, que comprende además codificar los datos de vídeo usando el proceso CABAC.
    El procedimiento de acuerdo con la reivindicación 1, que comprende además descodificar los datos de vídeo usando el proceso CABAC.
    El procedimiento según la reivindicación 1, en el que cada una de la una o más fórmulas se implementa usando solo una o más operaciones seleccionadas cada una de entre un grupo que consiste en: una operación de desplazamiento de bit;
    una operación de suma;
    una operación de resta;
    una operación de multiplicación; y
    una operación de división.
    Un dispositivo para inicializar un contexto usado para codificar datos de vídeo en un proceso de codificación aritmética binaria adaptativa al contexto (CABAC), comprendiendo el dispositivo:
    medios para determinar un primer valor de índice del parámetro de inicialización de 4 bits, m, como x>> 4, donde x es un parámetro de 8 bits, y donde «>>» indica una operación de desplazamiento a la derecha;
    medios para determinar un segundo valor de índice de parámetro de inicialización de 4 bits, n, como x&15, donde x es el mismo parámetro de 8 bits, y «&» indica una operación AND lógica; medios para determinar un valor de pendiente y un valor de intersección a partir de los valores de índices de parámetros de inicialización primero y segundo correspondientes, en el que determinar el valor de pendiente y el valor de intersección comprende calcular el valor de pendiente y el valor de intersección a partir de los valores de índices de parámetros de inicialización primero y segundo usando uno o más fórmulas; y
    medios para inicializar un estado del contexto usado para codificar los datos de vídeo en el proceso CABAC usando el valor de pendiente y el valor de intersección determinados,
    en el que un intervalo suficientemente grande de valores de pendiente e intersección para inicializar el estado del contexto se cubre usando m para representar un valor de índice de pendiente y n para representar un valor de índice de intersección.
    6. El dispositivo de acuerdo con la reivindicación 5, que comprende además medios para codificar los datos de vídeo usando el proceso CABAC.
    7. El dispositivo de acuerdo con la reivindicación 5, que comprende además medios para descodificar los datos de vídeo usando el proceso CABAC.
    8. El dispositivo según la reivindicación 5, en el que cada una de la una o más fórmulas se implementa usando solo una o más operaciones cada una seleccionada de un grupo que consiste en:
    una operación de desplazamiento de bit;
    una operación de suma;
    una operación de resta;
    una operación de multiplicación; y
    una operación de división.
    9. Un medio de almacenamiento no transitorio legible por ordenador que tiene almacenadas en el mismo instrucciones que al ejecutarse hacen que uno o más procesadores realicen una codificación aritmética binaria adaptativa al contexto (CABAC), en el que las instrucciones hacen que el uno o más procesadores realicen el procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 4.
ES12788010T 2011-11-03 2012-11-01 Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto Active ES2705746T3 (es)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201161555469P 2011-11-03 2011-11-03
US201161556808P 2011-11-07 2011-11-07
US201161557785P 2011-11-09 2011-11-09
US201161560107P 2011-11-15 2011-11-15
US13/665,467 US9484952B2 (en) 2011-11-03 2012-10-31 Context state and probability initialization for context adaptive entropy coding
PCT/US2012/063070 WO2013067186A1 (en) 2011-11-03 2012-11-01 Context state and probability initialization for context adaptive entropy coding

Publications (1)

Publication Number Publication Date
ES2705746T3 true ES2705746T3 (es) 2019-03-26

Family

ID=47192155

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12788010T Active ES2705746T3 (es) 2011-11-03 2012-11-01 Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto

Country Status (21)

Country Link
US (1) US9484952B2 (es)
EP (1) EP2774272B1 (es)
JP (1) JP5882489B2 (es)
KR (1) KR101638712B1 (es)
CN (1) CN103975532B (es)
AU (1) AU2012332444B2 (es)
BR (1) BR112014010052B1 (es)
CA (1) CA2853808C (es)
DK (1) DK2774272T3 (es)
ES (1) ES2705746T3 (es)
HU (1) HUE041771T2 (es)
IL (1) IL232156A (es)
MY (1) MY185506A (es)
PH (1) PH12014500984B1 (es)
PL (1) PL2774272T3 (es)
PT (1) PT2774272T (es)
RU (1) RU2576587C2 (es)
SG (1) SG11201401486SA (es)
SI (1) SI2774272T1 (es)
TW (1) TWI527464B (es)
WO (1) WO2013067186A1 (es)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140057533A (ko) * 2011-07-15 2014-05-13 텔레폰악티에볼라겟엘엠에릭슨(펍) 랜덤 액세스 픽처를 청정하게 하기 위해 가장 낮은 계층 식별을 할당하기 위한 인코더 및 방법
US9167261B2 (en) 2011-11-07 2015-10-20 Sharp Laboratories Of America, Inc. Video decoder with constrained dynamic range
US10116951B2 (en) * 2011-11-07 2018-10-30 Sharp Laboratories Of America, Inc. Video decoder with constrained dynamic range
US9503719B2 (en) * 2012-06-26 2016-11-22 Intel Corporation Inter-layer coding unit quadtree pattern prediction
US9992490B2 (en) * 2012-09-26 2018-06-05 Sony Corporation Video parameter set (VPS) syntax re-ordering for easy access of extension parameters
KR101391693B1 (ko) 2012-11-14 2014-05-07 주식회사 엘지화학 3원계 탄성 공중합체 및 이의 제조 방법
US20150016509A1 (en) * 2013-07-09 2015-01-15 Magnum Semiconductor, Inc. Apparatuses and methods for adjusting a quantization parameter to improve subjective quality
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
JP6359101B2 (ja) 2013-10-14 2018-07-18 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像の符号化及び復号のためのイントラブロックコピー予測モードの特徴
JP6336058B2 (ja) 2013-10-14 2018-06-06 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像符号化及び復号のためのベースカラーインデックスマップモードの機能
US10469863B2 (en) 2014-01-03 2019-11-05 Microsoft Technology Licensing, Llc Block vector prediction in video and image coding/decoding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
WO2015184069A1 (en) * 2014-05-28 2015-12-03 Arris Enterprises, Inc. Acceleration of context adaptive binary arithmetic coding (cabac) in video codecs
KR102311815B1 (ko) 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
AU2014408228B2 (en) 2014-09-30 2019-09-19 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US10841586B2 (en) * 2014-11-20 2020-11-17 LogMeln, Inc. Processing partially masked video content
JP2016218721A (ja) 2015-05-20 2016-12-22 ソニー株式会社 メモリ制御回路およびメモリ制御方法
US10148961B2 (en) * 2015-05-29 2018-12-04 Qualcomm Incorporated Arithmetic coder with multiple window sizes
CN106664405B (zh) 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
CN106303550B (zh) * 2015-06-11 2019-06-21 华为技术有限公司 去块效应滤波方法和去块效应滤波器
US10616582B2 (en) * 2016-09-30 2020-04-07 Qualcomm Incorporated Memory and bandwidth reduction of stored data in image/video coding
US10757412B2 (en) 2017-01-03 2020-08-25 Avago Technologies International Sales Pte. Limited Architecture flexible binary arithmetic coding system
CN107580224B (zh) * 2017-08-08 2019-11-22 西安理工大学 一种面向hevc熵编码的自适应扫描方法
US11039143B2 (en) * 2017-11-20 2021-06-15 Qualcomm Incorporated Memory reduction for context initialization with temporal prediction
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10986354B2 (en) * 2018-04-16 2021-04-20 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
US11178399B2 (en) * 2019-03-12 2021-11-16 Qualcomm Incorporated Probability initialization for video coding
US11425414B2 (en) * 2019-08-05 2022-08-23 Tencent America LLC Method and apparatus for video coding

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6894628B2 (en) 2003-07-17 2005-05-17 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Apparatus and methods for entropy-encoding or entropy-decoding using an initialization of context variables
RU2336661C2 (ru) 2005-04-19 2008-10-20 Самсунг Электроникс Ко., Лтд. Способ и устройство адаптивного выбора контекстной модели для кодирования по энтропии
US7221296B2 (en) 2005-08-22 2007-05-22 Streaming Networks (Pvt.) Ltd. Method and system for fast context based adaptive binary arithmetic coding
KR100873636B1 (ko) 2005-11-14 2008-12-12 삼성전자주식회사 단일 부호화 모드를 이용하는 영상 부호화/복호화 방법 및장치
CA2693923C (en) 2007-07-19 2013-01-29 Research In Motion Limited Method and system for reducing contexts for context based compression systems
US7535387B1 (en) 2007-09-10 2009-05-19 Xilinx, Inc. Methods and systems for implementing context adaptive binary arithmetic coding
US7557740B1 (en) * 2008-04-18 2009-07-07 Realtek Semiconductor Corp. Context-based adaptive binary arithmetic coding (CABAC) decoding apparatus and decoding method thereof
KR101695681B1 (ko) * 2008-08-19 2017-01-13 콘텐트 아머 상황-기반의 적응형 이진 산술 코딩(cabac)비디오 스트림 준수
US7932843B2 (en) 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
US7982641B1 (en) 2008-11-06 2011-07-19 Marvell International Ltd. Context-based adaptive binary arithmetic coding engine
WO2011128268A1 (en) 2010-04-13 2011-10-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Probability interval partioning encoder and decoder
CN107529706B (zh) 2011-06-16 2020-11-17 Ge视频压缩有限责任公司 解码器、编码器、解码和编码视频的方法及存储介质

Also Published As

Publication number Publication date
TW201338548A (zh) 2013-09-16
PH12014500984A1 (en) 2014-10-20
EP2774272B1 (en) 2018-10-17
IL232156A0 (en) 2014-05-28
DK2774272T3 (en) 2019-01-28
AU2012332444A1 (en) 2014-05-22
AU2012332444B2 (en) 2015-08-13
PH12014500984B1 (en) 2014-10-20
US9484952B2 (en) 2016-11-01
RU2576587C2 (ru) 2016-03-10
KR101638712B1 (ko) 2016-07-11
SI2774272T1 (sl) 2019-02-28
CA2853808A1 (en) 2013-05-10
JP5882489B2 (ja) 2016-03-09
PT2774272T (pt) 2019-01-24
SG11201401486SA (en) 2014-09-26
CN103975532B (zh) 2017-08-25
KR20140093698A (ko) 2014-07-28
TWI527464B (zh) 2016-03-21
IL232156A (en) 2017-09-28
CA2853808C (en) 2017-06-13
BR112014010052A8 (pt) 2017-06-20
MY185506A (en) 2021-05-19
EP2774272A1 (en) 2014-09-10
WO2013067186A1 (en) 2013-05-10
US20130114675A1 (en) 2013-05-09
HUE041771T2 (hu) 2019-05-28
JP2014535222A (ja) 2014-12-25
CN103975532A (zh) 2014-08-06
PL2774272T3 (pl) 2019-05-31
RU2014122321A (ru) 2015-12-10
BR112014010052A2 (pt) 2017-06-13
BR112014010052B1 (pt) 2021-07-20

Similar Documents

Publication Publication Date Title
ES2705746T3 (es) Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto
KR102578959B1 (ko) 인트라 예측 모드들의 이웃 기반의 시그널링
CN107667530B (zh) 一种用于对视频数据进行熵译码的方法、设备和计算机可读存储媒体
ES2715555T3 (es) Predicción residual de componentes cruzadas adaptativa
AU2016271140B2 (en) Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
ES2779461T3 (es) Intrapredicción de vídeo mejorada que usa una combinación de predicción dependiente de la posición para codificación de vídeo
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
ES2637490T3 (es) Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes
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
ES2763443T3 (es) Codificación de vídeo en modo intra
KR101825793B1 (ko) 컨텍스트 적응 멀티-레벨 유의도 코딩을 위한 컨텍스트 도출
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
US20130114691A1 (en) Adaptive initialization for context adaptive entropy coding
BR112015025910B1 (pt) Atualização de parâmetro rice para codificação de nível de coeficiente em processo de codificação de vídeo
KR20140120337A (ko) 감소된 초기화 값 세트를 갖는 콘텍스트 적응 엔트로피 코딩
BR112017025605B1 (pt) Codificador aritmético avançado