ES2864623T3 - Codificación de parámetros de cuantificación (QP) en codificación de video - Google Patents

Codificación de parámetros de cuantificación (QP) en codificación de video Download PDF

Info

Publication number
ES2864623T3
ES2864623T3 ES13720211T ES13720211T ES2864623T3 ES 2864623 T3 ES2864623 T3 ES 2864623T3 ES 13720211 T ES13720211 T ES 13720211T ES 13720211 T ES13720211 T ES 13720211T ES 2864623 T3 ES2864623 T3 ES 2864623T3
Authority
ES
Spain
Prior art keywords
block
value
current
quantization
dqp
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
ES13720211T
Other languages
English (en)
Inventor
Vadim Seregin
Xianglin Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2864623T3 publication Critical patent/ES2864623T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding

Abstract

Un procedimiento de decodificación de datos de video, comprendiendo el procedimiento: recibir un elemento de sintaxis de codificación sin pérdidas para un bloque actual de datos de video, indicando el elemento de sintaxis de codificación sin pérdidas que el bloque actual de datos de video está codificado mediante el uso de un modo de codificación sin pérdidas, en el que el bloque actual de datos de video es una unidad de codificación, CU, de datos de video; recibir un tamaño del grupo de cuantificación, QG; determinar que la CU tiene un tamaño mayor o igual que el tamaño de QG, siendo la CU un bloque de cuantificación actual; asignar un valor de parámetro de cuantificación delta, dQP, de cero para el bloque de cuantificación actual si no se señaliza un dQP para el bloque de cuantificación actual, en el que el valor de dQP es una diferencia entre el valor de QP y un valor de un predictor de QP; determinar un valor de parámetro de cuantificación, QP, para el bloque de cuantificación actual en base al valor de dQP asignado y el predictor de QP; y decodificar el bloque de cuantificación actual de acuerdo con el modo de codificación sin pérdidas y el valor de QP determinado, en el que el valor de QP determinado se usa para la predicción de QP posterior.

Description

DESCRIPCIÓN
Codificación de parámetros de cuantificación (QP) en codificación de video
La presente solicitud reivindica el beneficio de:
Solicitud Provisional de Estados Unidos No.61/639,015, presentada el 26 de abril de 2012;
Solicitud Provisional de Estados Unidos No.61/643,821, presentada el 7 de mayo de 2012; y
Solicitud Provisional de Estados Unidos No.61/656,953, presentada el 7 de junio de 2012.
Campo técnico
Esta divulgación se refiere a la codificación de video y, más particularmente, a las técnicas para la codificación de parámetros de cuantificación.
Antecedentes
Las capacidades de video digital se pueden incorporar en una amplia gama de dispositivos, incluidos televisores digitales, sistemas de difusión digital directa, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), computadoras portátiles o de escritorio, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de video juegos, consolas de videojuegos, radioteléfonos móviles o por satélite, dispositivos de videoconferencia y similares. Los dispositivos de video digital implementan técnicas de compresión de video, como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de video avanzada (AVC), el estándar de codificación de video de alta eficiencia (HEVC) actualmente en desarrollo, y extensiones de dichos estándares, para transmitir, recibir y almacenar información de video digital de manera más eficiente.
Las técnicas de compresión de video incluyen predicción espacial y/o predicción temporal para reducir o eliminar la redundancia inherente a las secuencias de video. Para la codificación de video basada en bloques, un fotograma o segmento de video se puede dividir en bloques. Alternativamente, un fotograma de video puede denominarse imagen. Cada bloque se puede dividir aún más. Los bloques de un fotograma o segmento intracodificado (I) se codifican que utiliza la predicción espacial con respecto a las muestras de referencia en bloques vecinos en el mismo fotograma o segmento. Los bloques en un fotograma o segmento intercodificado (P o B) pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en el mismo fotograma o segmento o predicción temporal con respecto a muestras de referencia en otros fotogramas de referencia. La predicción espacial o temporal da como resultado un bloque predictivo para que se codifique un bloque. Los datos residuales representan diferencias de píxeles entre el bloque original a codificar, es decir, el bloque codificado y el bloque predictivo.
Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformación, dando como resultado coeficientes de transformación residuales, que luego pueden cuantificarse. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden escanear en un orden particular para producir un vector unidimensional de coeficientes de transformación para la codificación de entropía.
Sumario
La invención se define por las reivindicaciones independientes adjuntas. Modalidades adicionales de la invención se definen en las reivindicaciones dependientes. Las realizaciones descritas que no caen dentro del ámbito de las reivindicaciones adjuntas deben considerarse como ejemplos para comprender la invención. En general, esta divulgación describe técnicas para codificar datos de video. En particular, esta divulgación describe técnicas para codificar valores de parámetros de cuantificación delta (dQP) e identificar modos de codificación sin pérdidas con el fin de evitar posibles desajustes de codificador/decodificador.
En un ejemplo, esta divulgación describe un procedimiento de decodificación de video que comprende recibir un valor de parámetro de cuantificación delta (dQP) para un bloque de cuantificación actual de datos de video, en el que el valor de dQP se recibe independientemente de que haya coeficientes de transformación distintos de cero en la bloque de cuantificación actual, que determina un valor de parámetro de cuantificación (QP) para el bloque de cuantificación actual en base al valor dQP recibido y un predictor de QP, y decodificando el bloque de cuantificación actual usando el valor de QP determinado.
En otro ejemplo, el procedimiento de decodificación de video comprende recibir un valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor de cero, e inferir que el valor de dQP sea cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
En otro ejemplo, esta divulgación describe un procedimiento de codificación de video que comprende determinar un valor de Qp para un bloque de cuantificación actual de datos de video, determinar un valor de dQP para el bloque de cuantificación actual en base al QP y un predictor de QP, generar el valor de dQP, en el que el valor de dQP se indica si hay o no coeficientes de transformación distintos de cero en el bloque de cuantificación actual, y la codificación del bloque de cuantificación actual que utiliza el valor de QP determinado.
En otro ejemplo, el procedimiento de codificación de video comprende generar un valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor de cero, e inferir que el valor de dQP sea cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
Esta divulgación también describe un codificador de video, un decodificador de video, aparatos, dispositivos y medios legibles por computadora que almacenan instrucciones que pueden configurarse para realizar las técnicas para señalizar los coeficientes de transformación descritos en la presente memoria.
Los detalles de uno o más ejemplos se establecen en los dibujos adjuntos y la descripción a continuación. Otras características, objetos y ventajas resultarán evidentes a partir de la descripción y los dibujos, y de las reivindicaciones.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y decodificación de video.
La Figura 2 es un diagrama conceptual que ilustra un grupo de cuantificación de ejemplo.
La Figura 3 es un diagrama conceptual que ilustra un ejemplo de técnica de predicción de parámetros de cuantificación.
La Figura 4 es un diagrama conceptual que ilustra un ejemplo de señalización de parámetros de cuantificación delta cuando un predictor de parámetros de cuantificación es cero.
La Figura 5 es un diagrama conceptual que ilustra un ejemplo de señalización de parámetros de cuantificación delta cuando un predictor de parámetros de cuantificación se codifica en modo sin pérdidas.
La Figura 6 es un diagrama de bloques que ilustra un codificador de video de ejemplo.
La Figura 7 es un diagrama de bloques que ilustra un decodificador de video de ejemplo.
La Figura 8 es un diagrama de flujo que muestra un ejemplo de procedimiento de codificación de video de acuerdo con las técnicas de esta divulgación.
La Figura 9 es un diagrama de flujo que muestra un ejemplo de procedimiento de decodificación de video de acuerdo con las técnicas de esta divulgación.
Descripción detallada
En general, esta divulgación describe técnicas para codificar datos de video. En particular, esta divulgación describe técnicas para la codificación de parámetros de cuantificación (QP) en un proceso de codificación y/o decodificación de video.
De acuerdo con algunas propuestas para el estándar HEVC, un bloque de video puede comprender una unidad de codificación más grande (LCU) que a su vez puede subdividirse en unidades de codificación más pequeñas (CU) de acuerdo con un esquema de partición de cuatro árboles, y posiblemente dividirse aún más en unidades de predicción (PU) para fines de estimación de movimiento y compensación de movimiento. Esta divulgación describe técnicas para codificar cambios (es decir, deltas) en un parámetro de cuantificación (es decir, el delta QP o dQP) para una LCU, CU o un grupo de cuantificación (o algún otro bloque o grupo de bloques de tamaño lo suficientemente grande como para que los cambios de cuantificación sean soportados). En este caso, el delta QP puede definir el cambio en el QP para el grupo de cuantificación en relación con un valor predicho del QP para la LCU. Por ejemplo, el valor de QP predicho para la LCU puede ser simplemente el QP de un grupo de cuantificación anterior (es decir, codificado previamente en el flujo de bits). Alternativamente, el valor de QP previsto se puede determinar en base a las reglas. Por ejemplo, las reglas pueden identificar uno o más valores de QP de otros grupos de cuantificación, o el valor de QP promedio que debería usarse.
Las técnicas actuales de señalización dQP en el estándar HEVC presentan ciertos problemas cuando se usan junto con los modos de codificación sin pérdida de señalización y análisis sintáctico. Como se discutirá con más detalle a continuación, en determinadas situaciones, puede producirse un desajuste de codificador/descodificador, particularmente cuando se usa codificación sin pérdidas. Como tal, esta divulgación presenta técnicas para dQP y codificación en modo sin pérdidas para evitar tales desajustes de codificador/descodificador.
La Figura 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y descodificación de video 10 que puede configurarse para utilizar técnicas para la codificación QP de acuerdo con ejemplos de esta divulgación. Como se muestra en la Figura 1, el sistema 10 incluye el dispositivo fuente 12 que transmite video codificado al dispositivo destino 14 a través del canal de comunicación 16. Los datos de video codificados también se pueden almacenar en el medio de almacenamiento 34 o en el servidor de archivos 36 y se puede acceder a ellos mediante el dispositivo de destino 14 según se desee. Cuando se almacena en el medio de almacenamiento 34 o en el servidor de archivos 36, el codificador de video 20 puede proporcionar datos de video codificados a otro dispositivo, como una interfaz de red, un disco compacto (CD), una grabadora de discos Blu-ray o de video digital (DVD) o una instalación de dispositivo de sellado, u otros dispositivos, para almacenar los datos de video codificados en el medio de almacenamiento. Asimismo, un dispositivo separado del decodificador 30 de video, tal como una interfaz de red, lector de CD o DVD, o similar, puede recuperar datos de video codificados de un medio de almacenamiento y proporcionar los datos recuperados al decodificador 30 de video.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia variedad de dispositivos, que incluyen computadoras de escritorio, computadoras portátiles (es decir, computadoras portátiles), tabletas, decodificadores, teléfonos como los llamados teléfonos inteligentes, televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos o similares. En muchos casos, estos dispositivos pueden estar equipados para comunicación inalámbrica. Por tanto, el canal de comunicación 16 puede comprender un canal inalámbrico, un canal cableado o una combinación de canales inalámbricos y cableados adecuados para la transmisión de datos de video codificados. De manera similar, el dispositivo 14 de destino puede acceder al servidor de archivos 36 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 Wi-Fi), una conexión por cable (por ejemplo, DSL, módem por cable, etc.) o una combinación de ambos que sea adecuada para acceder a datos de video codificados almacenados en un servidor de archivos.
Las técnicas para la codificación QP, de acuerdo con los ejemplos de esta divulgación, se pueden aplicar a la codificación de video en apoyo de cualquiera de una variedad de aplicaciones multimedia, tales como transmisiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de emisión de video, por ejemplo, a través de Internet, codificación de video digital para su almacenamiento en un medio de almacenamiento de datos, decodificación de video digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para admitir transmisión de video unidireccional o bidireccional para admitir aplicaciones tales como transmisión de video, reproducción de video, transmisión de video y/o telefonía de video.
En el ejemplo de la Figura 1, el dispositivo fuente 12 incluye una fuente de video 18, un codificador de video 20, un modulador/demodulador 22 y un transmisor 24. En el dispositivo de fuente 12, la fuente de video 18 puede incluir una fuente como un dispositivo de captura de video, como una cámara de video, un archivo de video que contenga video capturado previamente, una interfaz de alimentación de video para recibir video de un proveedor de contenido de video, y/o un Sistema de gráficos por computadora para generar datos de gráficos por computadora como fuente de video, o una combinación de dichas fuentes. Como ejemplo, si la fuente de video 18 es una cámara de video, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los llamados teléfonos con cámara o videoteléfonos, que pueden proporcionarse, por ejemplo, dentro de teléfonos inteligentes o tabletas. Sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de video en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas, o aplicaciones en las que los datos de video codificados se almacenan en un disco local.
El video capturado, precapturado o generado por computadora puede ser codificado por el codificador de video 20. La información de video codificada puede ser modulada por el módem 22 de acuerdo con un estándar de comunicación, tal como un protocolo de comunicación por cable o inalámbrico, y transmitida al dispositivo 14 de destino a través del transmisor 24. El módem 22 puede incluir varios mezcladores, filtros, amplificadores u otros componentes diseñados para la modulación de la señal. El transmisor 24 puede incluir circuitos diseñados para transmitir datos, incluidos amplificadores, filtros y, en el caso de la comunicación inalámbrica, una o más antenas.
El video capturado, precapturado o generado por ordenador que está codificado por el codificador de video 20 también puede almacenarse en el medio de almacenamiento 34 o en el servidor de archivos 36 para su consumo posterior. El medio de almacenamiento 34 puede incluir discos Blu-ray, DVD, CD-ROM, memoria flash o cualquier otro medio de almacenamiento digital adecuado para almacenar video codificado. El video codificado almacenado en el medio de almacenamiento 34 puede entonces ser accedido por el dispositivo de destino 14 para decodificar y reproducir. Aunque no se muestra en la Figura 1, en algunos ejemplos, el medio de almacenamiento 34 y/o el servidor de archivos 36 pueden almacenar la salida del transmisor 24.
El servidor de archivos 36 puede ser cualquier tipo de servidor capaz de almacenar video codificado y transmitir ese video codificado al dispositivo 14 de destino. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados a la red (NAS), una unidad de disco local o cualquier otro tipo de dispositivo capaz de almacenar datos de video codificados y transmitirlos a un destino dispositivo. La transmisión de datos de video codificados desde el servidor de archivos 36 puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas. El dispositivo 14 de destino puede acceder al servidor de archivos 36 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 Wi-Fi), una conexión por cable (por ejemplo, DSL, módem por cable, Ethernet, USB, etc.) o una combinación de ambos que sea adecuada para acceder a datos de video codificados almacenados en un servidor de archivos.
El dispositivo de destino 14, en el ejemplo de la Figura 1, incluye el receptor 26, el módem 28, el decodificador de video 30 y el dispositivo de visualización 32. El receptor 26 del dispositivo 14 de destino recibe información por el canal 16 y el módem 28 demodula la información para producir un flujo de bits demodulado para el decodificador 30 de video. La información comunicada a través del canal 16 puede incluir una variedad de información de sintaxis generada por el codificador de video 20 para su uso por el decodificador de video 30 en la decodificación de datos de video. Tal sintaxis también puede incluirse con los datos de video codificados almacenados en el medio de almacenamiento 34 o el servidor de archivos 36. Cada uno de los codificadores de video 20 y decodificadores de video 30 puede formar parte de un codificador-decodificador (CODEC) respectivo que es capaz de codificar o decodificar datos de video.
El dispositivo de visualización 32 puede estar integrado o ser externo al dispositivo de destino 14. En algunos ejemplos, el dispositivo 14 de destino puede incluir un dispositivo de visualización integrado y también estar configurado para interactuar 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 de visualización 32 muestra los datos de video decodificados a 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 diodo emisor de luz orgánica (OLED), u otro tipo de dispositivo de visualización.
En el ejemplo de la Figura 1, el canal de comunicación 16 puede comprender cualquier medio de comunicación inalámbrico o alámbrico, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas, o cualquier combinación de medios inalámbricos y alámbricos. El canal de comunicación 16 puede formar parte de una red basada en paquetes, como una red de área local, una red de área amplia o una red global como Internet. El canal de comunicación 16 generalmente representa cualquier medio de comunicación adecuado, o colección de diferentes medios de comunicación, para transmitir datos de video desde el dispositivo de origen 12 al dispositivo de destino 14, incluyendo cualquier combinación adecuada de medios alámbricos o inalámbricos. El canal de comunicación 16 puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
El codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con un estándar de compresión de video, como el estándar de codificación de video de alta eficiencia (HEVC) actualmente en desarrollo por el Equipo de colaboración conjunta sobre codificación de video (JCT-VC) de ITU-T Video Coding Experts Grupo (VCEG) y Grupo de Expertos en Cinematografía ISO/IEC (MPEG). En el documento JCTVC-I1003 se describe un borrador de la norma HEVC, denominado "HEVC Working Draft 7" or "WD 7," Bross y otros, "High efficiency video coding (HEVC) Text Specification Draft 7," Equipo colaborativo conjunto sobre codificación de video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 9na reunión: Ginebra, Suiza, 27 de abril de 2012 al 7 de mayo de 2012 que, al 25 de abril de 2013, se puede descargar de http://phenix.itsudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003 -v3.zip,
En el documento JCTVC-L1003v34 se describe un borrador más reciente del estándar HEVC, denominado "HEVC Working Draft 10" or "WD10," Bross y otros, "High efficiency video coding (HEVC) text specification draft 10," Equipo colaborativo conjunto sobre codificación de video (JCT-VC) de ITU-T SG16 WP3 e ISo / iEC JTC1/SC29/WG11, 12a reunión: Ginebra, CH, 14-23 de enero de 2013, que, al 25 de abril de 2013, se puede descargar de http://phenix.intevry.fr/jet/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip.
Aunque no se muestra en la Figura 1, en algunos aspectos, el codificador de video 20 y el decodificador de video 30 pueden estar integrados cada uno con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para manejar la codificación de audio y video en un flujo de datos común o flujos de datos separados. Si corresponde, en algunos ejemplos, las unidades MUX-DEMUx pueden ajustarse al protocolo multiplexor ITU H.223 u otros protocolos como el protocolo de datagramas de usuario (UDP).
El codificador de video 20 y el decodificador de video 30 pueden implementarse cada uno como cualquiera de una variedad de circuitos de codificador adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), arreglos de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por computadora adecuado y no transitorio y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno de los codificadores de video 20 y descodificador de video 30 se puede incluir en uno o más codificadores o descodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/descodificador combinado (CODEC) en un dispositivo respectivo.
El codificador de video 20 puede implementar cualquiera o todas las técnicas de esta divulgación para la codificación QP en un proceso de codificación de video. Asimismo, el decodificador de video 30 puede implementar cualquiera o todas estas técnicas para la codificación QP en un proceso de codificación de video. Un codificador de video, como se divulga en esta descripción, puede referirse a un codificador de video o un decodificador de video. De manera similar, una unidad de codificación de video puede referirse a un codificador de video o un decodificador de video. Asimismo, la codificación de video puede referirse a la codificación o decodificación de video.
En un ejemplo de la divulgación, como se explicará con más detalle a continuación, el codificador de video 20 puede configurarse para determinar un valor de parámetro de cuantificación (QP) para un bloque de cuantificación actual, determinar un valor de parámetro de cuantificación delta (dQP) para una cuantificación actual bloque de datos de video en base al QP y un predictor de QP, señalizar el valor de dQP, en el que el valor de dQP se indica si hay o no coeficientes de transformación distintos de cero en el bloque de cuantificación actual, y codifica el bloque de cuantificación actual que utiliza el QP determinado valor.
En otro ejemplo, el codificador de video 20 puede configurarse para señalar el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor de cero, e infiera el valor de dQP como cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
Asimismo, el decodificador de video 30 puede configurarse para recibir un valor de dQP para un bloque de cuantificación actual de datos de video, en el que el valor de dQP se recibe independientemente de que haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual, determine un valor de QP para el bloque de cuantificación actual en base al valor de dQP recibido y un predictor de QP, y decodificar el bloque de cuantificación actual usando el valor de QP determinado.
En otro ejemplo, el decodificador de video 30 puede configurarse para recibir el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor de cero, e infiera el valor de dQP como cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformada distintos de cero en el bloque de cuantificación actual.
Los dispositivos de video digital implementan técnicas de compresión de video para codificar y decodificar información de video digital de manera más eficiente. La compresión de video puede aplicar técnicas de predicción espacial (dentro del cuadro) y/o de predicción temporal (entre cuadros) para reducir o eliminar la redundancia inherente a las secuencias de video.
El JCT-VC está trabajando en el desarrollo del estándar HEVC, por ejemplo, como se describe en el HEVC WD10 mencionado anteriormente. Los esfuerzos de estandarización de HEVC se basan en un modelo en evolución de un dispositivo de codificación de video denominado modelo de prueba HEVC (HM). El HM presupone varias capacidades adicionales de los dispositivos de codificación de video en relación con los dispositivos existentes de acuerdo con, por ejemplo, con ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intrapredicción, el HM puede proporcionar hasta treinta y tres modos de codificación de intrapredicción. La siguiente sección discutirá ciertos aspectos de la HM con más detalle.
Para la codificación de video de acuerdo con el estándar HEVC actualmente en desarrollo, un fotograma de video puede dividirse en unidades de codificación. Una unidad de codificación (CU) generalmente se refiere a una región de imagen que sirve como unidad básica a la que se aplican diversas herramientas de codificación para la compresión de video. Una CU generalmente tiene un componente de luminancia, denotado como Y, y dos componentes de croma, denotados como U y V. En función del formato de muestreo de video, el tamaño de los componentes U y V, en términos de número de muestras, puede ser el mismo igual o diferente al tamaño del componente Y.
Una CU es típicamente cuadrada y puede considerarse similar a un llamado macrobloque, por ejemplo, utilizado en otros estándares de codificación de video como ITU-T H.264. La codificación de acuerdo con algunos de los aspectos actualmente propuestos del estándar HEVC en desarrollo se describirá en esta solicitud con fines ilustrativos. Sin embargo, las técnicas descritas en esta divulgación pueden ser útiles para otros procesos de codificación de video, tales como los definidos de acuerdo con H.264 u otros procesos de codificación de video estándar o patentados.
De acuerdo con el HM, una CU puede incluir una o más unidades de predicción (PU) y/o una o más unidades de transformación (TU). Los datos de sintaxis dentro de un tren de bits pueden definir una unidad de codificación más grande (LCU), que es una CU más grande en términos de número de píxeles. En general, una CU tiene un propósito similar a un macrobloque de H.264, excepto que una CU no tiene una distinción de tamaño. Por lo tanto, una UC se puede dividir en subUC. En general, las referencias en esta divulgación a una CU pueden referirse a una unidad de codificación más grande de una imagen o una subCU de una LCU. Una LCU se puede dividir en subUC, y cada subUC se puede dividir en subUC. Los datos de sintaxis para un tren de bits pueden definir un número máximo de veces que puede dividirse una LCU, lo que se denomina profundidad de CU. Por consiguiente, un flujo de bits también puede definir una unidad de codificación más pequeña (SCU). Esta divulgación también usa el término "bloque" o "porción" para referirse a cualquiera de una CU, PU o TU. En general, "porción" puede referirse a cualquier subconjunto de un fotograma de video.
Una LCU puede estar asociada con una estructura de datos de cuatro árboles. En general, una estructura de datos de cuatro árboles incluye un nodo por CU, donde un nodo raíz corresponde a la LCU. Si una CU se divide en cuatro subCU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las subCU. Cada nodo de la estructura de datos de cuatro árboles puede proporcionar datos de sintaxis para la CU correspondiente. Por ejemplo, un nodo en el árbol cuádruple puede incluir una bandera de división, que indica si la CU correspondiente al nodo está dividida en subCU. Los elementos de sintaxis para una UC pueden definirse de forma recursiva y pueden depender de si la UC se divide en subUC. Si una UC no se divide más, se denomina UC hoja.
Una CU puede incluir una o más unidades de predicción (PU). En general, una PU representa la totalidad o una parte de la UC correspondiente y puede incluir datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU está codificada entre modos, la Pu puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento 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), un marco de referencia al que apunta el vector de movimiento, y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento. Los datos para la CU que definen las PU (s) también pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de particionamiento pueden diferir en función de si la CU no está codificada, el modo de intrapredicción está codificado o el modo de interpredicción está codificado. Para la codificación intra, una PU puede tratarse de la misma manera que una unidad de transformación de hoja que se describe a continuación.
El estándar HEVC emergente permite transformaciones de acuerdo con unidades de transformación (TU), que pueden ser diferentes para diferentes CU. El tamaño de las TU normalmente se basa en el tamaño de las PU dentro de una CU determinada definida para una LCU particionada, aunque puede que no siempre sea así. Las TU suelen ser del mismo tamaño o más pequeñas que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas que utiliza una estructura de cuatro árboles conocida como "árbol de cuatro residuos" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformación (TU). Los valores de diferencia de píxeles asociados con las TU pueden transformarse para producir coeficientes de transformación, que pueden cuantificarse. Una TU incluye un bloque de transformación luma y dos bloques de transformación cromática. Como tal, cualquier proceso de codificación discutido a continuación que se aplique a una TU puede, en realidad, aplicarse a los bloques de transformación luma y croma.
En general, una PU se refiere a datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU está codificada dentro del modo, la PU puede incluir datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU está codificada entre modos, la PU puede incluir datos que definen un vector de movimiento para la PU.
En general, se usa una TU para los procesos de transformación y cuantificación. Una CU dada que tiene una o más PU también puede incluir una o más unidades de transformación (TU). Después de la predicción, el codificador 20 de video puede calcular valores residuales del bloque de video identificado por el nodo de codificación de acuerdo con la PU. Luego, el nodo de codificación se actualiza para hacer referencia a los valores residuales en lugar del bloque de video original. Los valores residuales comprenden valores de diferencia de píxeles que pueden transformarse en coeficientes de transformación, cuantificarse y escanearse que utiliza las transformadas y otra información de transformación especificada en las TU para producir coeficientes de transformación serializados para la codificación de entropía. El nodo de codificación puede actualizarse una vez más para hacer referencia a estos coeficientes de transformación serializados. Esta divulgación usa típicamente el término "bloque de video" para referirse a un nodo de codificación de una CU. En algunos casos específicos, esta divulgación también puede utilizar el término "bloque de video" para referirse a un bloque de árbol, es decir, LCU o CU, que incluye un nodo de codificación y PU y TU.
Una secuencia de video generalmente incluye una serie de fotogramas o imágenes de video. Un grupo de imágenes (GOP) generalmente comprende una serie de una o más de las imágenes de video. Un GOP puede incluir datos de sintaxis en un encabezado del GOP, un encabezado de una o más de las imágenes, o en cualquier otro lugar, que describa una serie de imágenes incluidas en el GOP. Cada segmento de una imagen puede incluir datos de sintaxis de segmento que describen un modo de codificación para el segmento respectivo. El codificador de video 20 típicamente opera en bloques de video dentro de segmentos de video individuales para codificar los datos de video. Un bloque de video puede corresponder a un nodo de codificación dentro de una CU. Los bloques de video pueden tener tamaños fijos o variables, y pueden diferir en tamaño de acuerdo con un estándar de codificación específico.
Para codificar un bloque (por ejemplo, una unidad de predicción de datos de video), primero se deriva un predictor para el bloque. El predictor, también denominado bloque predictivo, puede derivarse mediante predicción intra (I) (es decir, predicción espacial) o predicción inter (P o B) (es decir, predicción temporal). Por lo tanto, algunas unidades de predicción pueden ser intracodificadas (I) usando predicción espacial con respecto a muestras de referencia en bloques de referencia vecinos en el mismo marco (o slicec), y otras unidades de predicción pueden ser unidireccionalmente intcr-codcd (P) o intercodificado bidireccionalmente (B) con respecto a bloques de muestras de referencia en otros fotogramas (o sectores) previamente codificados. En cada caso, las muestras de referencia pueden usarse para formar un bloque predictivo para un bloque a codificar.
Tras la identificación de un bloque predictivo, se determina la diferencia entre los píxeles en el bloque de datos de video original y los píxeles en su bloque predictivo. Esta diferencia puede denominarse datos residuales de predicción e indica las diferencias de píxeles entre los valores de píxeles en el bloque y los valores de píxeles codificados y en el bloque predictivo seleccionado para representar el bloque codificado. Para lograr una mejor compresión, los datos residuales de predicción pueden transformarse, por ejemplo, usando una transformada de coseno discreta (DCT), una transformada de entero, una transformada de Karhunen-Loeve (KL) u otra transformada para producir coeficientes de transformada.
Los datos residuales en un bloque de transformación, tal como una TU, pueden disponerse en una matriz bidimensional (2D) de valores de diferencia de píxeles que residen en el dominio de píxeles espacial. Una transformación convierte los valores de píxeles residuales en una matriz bidimensional de coeficientes de transformación en un dominio de transformación, como un dominio de frecuencia.
La cuantificación se puede aplicar a los coeficientes de transformación y generalmente implica un proceso que limita el número de bits asociados con cualquier coeficiente de transformación dado. Más específicamente, la cuantificación se puede aplicar de acuerdo con un parámetro de cuantificación (QP). En lugar de señalizar el QP en sí, se puede señalizar un cambio (es decir, un delta) en el QP con la LCU. El delta QP define un cambio en el parámetro de cuantificación para la LCU en relación con un valor predicho para el QP para la LCU, como el QP de una CU comunicada previamente o un QP definido por QP anteriores y/o una o más reglas. Esta divulgación se refiere a generar y señalizar el delta QP dentro de un flujo de bits codificado de una manera que puede mejorar la calidad (y posiblemente la compresión) en el estándar HEVC.
Para una mayor compresión, los coeficientes de transformación pueden cuantificarse antes de la codificación de entropía. Luego, un codificador de entropía aplica codificación de entropía, como codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación de entropía de particionamiento de intervalo de probabilidad (PIPE), o similares, a los coeficientes de transformación cuantificados. En algunos ejemplos, el codificador de video 20 puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformación cuantificados para producir un vector serializado que puede codificarse por entropía. En otros ejemplos, el codificador de video 20 puede realizar una exploración adaptativa. Después de escanear los coeficientes de transformación cuantificados para formar un vector onc-dimcnsional, el codificador de video 20 puede codificar entropía el vector onc-dimcnsional, el codificador de video 20 también puede codificar entropía elementos de sintaxis asociados con los datos de video codificados para su uso por el decodificador de video 30 en la decodificación de los datos de video.
Como se discutió anteriormente, un delta QP (también señalado como dQP) puede ser señalizado en el flujo de bits de video codificado para codificar el QP para un bloque de datos de video. Delta QP se define como la diferencia entre un QP actual (es decir, el QP real utilizado para el bloque actual) y un predictor del QP actual (QP Predictor). En base al dQP señalado, el valor de QP actual correspondiente puede reconstruirse sumando dQP al valor del predictor de QP. Es decir, en el codificador de video 20, dQP se calcula restando un predictor de QP del QP real del bloque actual: dQP = QP actual - predictor de QP. En el decodificador de video 30, el QP real del bloque actual se reconstruye agregando el dQP recibido al predictor de QP: QP actual = dQP QP Predictor. En algunos ejemplos, el predictor de QP se define como el promedio de los valores de QP reales para un bloque arriba y un bloque a la izquierda del bloque actual.
De acuerdo con propuestas para HEVC y HM, se define un Grupo de Cuantización (QG) para señalizar dQP. Un QG es el tamaño de bloque mínimo donde se señaliza dQP. Un QG puede constar de una única UC o de varias UC. En muchos casos, el q G puede ser más pequeño que uno o más tamaños de CU posibles. Por ejemplo, un QG puede definirse y/o indicarse para que tenga un tamaño de 16x16 píxeles. En este ejemplo, sería posible tener CU de tamaño 32x32 o 64x64.
En varios ejemplos, el tamaño de un QG se indica en el conjunto de parámetros de imagen (PPS). Sin embargo, se puede señalar un tamaño de QG en otros niveles del tren de bits, incluido un encabezado de segmento, un conjunto de parámetros de adaptación (APS), un conjunto de parámetros de secuencia (SPS) y similares. Si una CU tiene un tamaño igual o mayor que el tamaño de la QG, el dQP puede indicarse para dicha CU. Sin embargo, para las CU que son más pequeñas que el tamaño del QG, se señaliza un dQP común y se comparte entre todas las CU dentro del QG. En algunos ejemplos propuestos para HEVC, la señalización de dQP para un determinado bloque (CU o QG) también depende de si hay coeficientes distintos de cero en el bloque. El dQP se señaliza en un bloque después (y algunas veces solo después) que el codificador de video 20 determina que hay coeficientes distintos de cero codificados en el mismo bloque.
La Figura 2 muestra un ejemplo de un QG 16x16 que incluye 7 CU (CU0-CU6). CU0-CU2 son 8x8 CU, mientras que CU3-CU6 son 4x4 CU. En el ejemplo de la Figura 2, el CU5 sombreado incluye al menos un coeficiente distinto de cero. Como tal, el codificador de video 20 señaliza un dQP para todo el q G 102, y el decodificador de video 30 aplicaría el dQP señalado para usar en la decodificación de cada CU0-CU6. Si ninguna CU en QG 102 incluye un coeficiente distinto de cero, no se señalaría un dQP para esa QG. En las propuestas actuales para HEVC, si se señaliza o no un dQP para un determinado bloque (por ejemplo, una CU) depende del tamaño de QG. Si el tamaño QG en el ejemplo de la Figura. 2 eran 8x8, no se señalaría ningún dQP para CU0-CU2, ya que no incluyen coeficientes distintos de cero. Sin embargo, se señalaría un dQP para que se comparta entre CU3-CU6, ya que cada una de estas CU está dentro de un QG que contiene al menos un coeficiente distinto de cero. Asimismo, si el tamaño de la QG señalizada fuera 4x4, no se señalizaría dQP para ningún bloque excepto CU5 (es decir, el bloque que tiene coeficientes distintos de cero).
En otras palabras, cuando hay múltiples CU en un QG, el dQP para el QG no se señaliza a menos que un CU con coeficientes distintos de cero esté ubicado dentro del QG. Por ejemplo, si hay cuatro CU en un QG y ninguna de las tres primeras CU tiene un coeficiente distinto de cero (también denominado CU distinto de cero en la siguiente descripción) excepto el cuarto CU, el dQP solo se indica en el cuarto CU. En general, la primera CU distinta de cero en un QG se puede ubicar en cualquier posición dentro del QG. Por ejemplo, la primera UC distinta de cero puede ser la primera UC, la última UC o cualquier otra UC en un QG. En algunos casos, no puede haber CU distintas de cero en un QG.
En la siguiente descripción, el término general "bloque de cuantificación" se usa para referirse a una CU que tiene un tamaño mayor o igual que un QG señalizado, o para referirse a un QG que contiene un número de CU. Es decir, un bloque de cuantificación es un QG que contiene una o más CU, o un CU que es más grande que un QG. El término "bloque cero" se usará para indicar un bloque (por ejemplo, una TU o un bloque de transformación asociado con una CU) que no tiene coeficientes distintos de cero. Cuando un bloque de cuantificación es un QG que contiene múltiples CU, el QG se considera un bloque cero cuando todas las CU dentro del QG son bloques cero. El dQP se señaliza para cada bloque de cuantificación cuando el bloque de cuantificación contiene al menos un coeficiente distinto de cero.
Cuando no se indica un dQP para un bloque de cuantificación, se supone que el valor del dQP es cero. Como tal, en el decodificador de video 30, el valor de QP para el bloque actual sería igual al valor del predictor de QP (es decir, QP Actual = Predictor dQP QP, donde se supone que dQP es cero). De acuerdo con las propuestas actuales para HEVC y HM, el predictor de QP se define como el promedio de los valores de QP para el bloque de cuantificación izquierdo y el bloque de cuantificación superior, como se muestra en la Figura 3 (es decir, que muestra la predicción de QP para un bloque de cuantificación actual que utiliza los bloques de cuantificación izquierdo y superior). El predictor de QP se puede definir de diferentes formas en otros ejemplos. Por ejemplo, el predictor de QP también puede definirse como el valor de QP del bloque de cuantificación izquierdo, definido como el valor de QP del bloque de cuantificación previamente codificado en un flujo, o definido de otras formas.
En las propuestas actuales para HEVC, se define un modo de codificación sin pérdidas para codificar un bloque (por ejemplo, una o más CU). De acuerdo con este modo de codificación sin pérdida, se omiten algunas operaciones de codificación, como la transformación, la cuantificación y el filtrado en bucle. En las propuestas actuales para HEVC, el modo de codificación sin pérdidas puede ser indicado por el codificador de video 20 usando un valor de QP igual a cero para el bloque codificado por el modo de codificación sin pérdidas. Por tanto, si un bloque de cuantificación particular se codifica en modo sin pérdidas, el valor de QP para este bloque de cuantificación debe establecerse en cero y señalizarse al decodificador. En este caso, la señalización del valor de QP se logra mediante el envío de un dQP con un valor igual a menos el valor del predictor de QP, es decir, dQP = QP real (cero en este caso) - predictor de QP.
Pueden surgir ciertos problemas cuando la señalización dQP para un bloque de cuantificación se usa junto con un modo de codificación sin pérdidas indicado con un valor de QP de cero. Estos problemas pueden provocar una falta de coincidencia del codificador/decodificador y, potencialmente, un bloqueo del decodificador.
Para explicar el primer problema, suponga que QP Predictor derivado para un bloque de cuantificación actual es cero. Por ejemplo, el bloque de cuantificación izquierdo y el bloque de cuantificación superior están codificados en modo de codificación sin pérdidas y, por lo tanto, cada uno de ellos tiene un QP de cero. El predictor de QP también puede ser cero en el caso de que uno de los bloques de cuantificación izquierdo o anterior esté codificado en modo de codificación sin pérdidas, y el otro bloque de cuantificación tenga un QP de 1. El predictor de QP, en este caso, es el promedio de los dos bloques, es decir, 0,5, y se redondea a cero. Suponga también que el bloque de cuantificación actual se codifica normalmente (es decir, no sin pérdidas) que utiliza un valor de QP distinto de cero. Como tal, la transformación, la cuantificación y todos los procesos de filtrado en bucle se aplican al bloque de cuantificación actual.
En este caso, si el bloque de cuantificación es un bloque cero (es decir, no tiene coeficientes distintos de cero), el codificador de video 20 no señalaría el dQP al decodificador de video 30 para este bloque de cuantificación. Surge un problema en tal situación. En el codificador de video 20, este bloque de cuantificación de ejemplo se codifica mediante el uso de unQP distinto de cero que utiliza predicción intra o inter. Sin embargo, sin la señalización de dQP, el valor de QP inferido en el lado del decodificador tiene un valor de cero. Esto se debe a que no se señaliza dQP y, por lo tanto, se infiere que dQP es cero. Como tal, el QP actual para el bloque de cuantificación sería QP Predictor, como se explicó anteriormente. Sin embargo, dado que, en este ejemplo, QP Predictor también es cero, el valor actual de QP para el bloque de cuantificación también se reconstruirá a cero, lo que el decodificador de video 30 interpretará como indicativo de que el bloque de cuantificación actual se decodificará en modo de codificación sin pérdidas. Como tal, el decodificador de video 30 puede intentar reconstruir el bloque de cuantificación que utiliza el modo sin pérdidas, aunque se haya codificado que utiliza otro modo de predicción (por ejemplo, predicción inter o intra). Tal situación conduce a un desajuste del codificador/decodificador, lo que puede causar una mala calidad visual o incluso el bloqueo del decodificador.
Un segundo problema surge cuando el predictor de QP para un bloque de cuantificación actual no es cero, pero el bloque de cuantificación actual está codificado con el modo sin pérdidas y no tiene residual (es decir, no hay valores distintos de cero en el residual) y, por lo tanto, dQP no se transmite. Como resultado, en el decodificador de video 30, se deducirá que el valor de dQP es cero en lugar de recibir un valor de dQP igual a -QP Predictor. Como tal, el decodificador de video 30 reconstruirá un valor de QP real del bloque de cuantificación como 0 (dQP inferido) predictor de QP = predictor de QP. Como tal, el descodificador de video 30 reconstruirá un valor de QP real distinto de cero y, por tanto, no podrá identificar el modo sin pérdidas para este bloque de cuantificación.
Para abordar el primer problema, de acuerdo con un primer ejemplo de esta divulgación, el codificador de video 20 se configura para señalar siempre dQP para cada bloque de cuantificación independientemente de si un bloque de cuantificación es un bloque cero o no. Por ejemplo, dQP siempre puede indicarse para un bloque (por ejemplo, una CU) mayor que QG o en la primera CU de una QG. De esta manera, no se inferirá incorrectamente que dQP es cero y evitaría una inferencia automática del modo de codificación sin pérdidas para el bloque de cuantificación cuando se infiere que dQP es cero y el predictor de QP también es cero.
De acuerdo con un segundo ejemplo de la divulgación, para limitar el número de casos en los que se señaliza dQP, el codificador de video 20 se configura para señalizar dQP para un bloque de cuantificación en el caso de que el predictor de QP para el bloque de cuantificación sea cero. Un ejemplo en el que el predictor de QP para un bloque de cuantificación actual es cero se muestra en la Figura 4. En el ejemplo de la Figura 4, el predictor de QP para el bloque 104 es igual a cero porque el QP tanto para el bloque anterior como para el bloque izquierdo es cero. Por lo tanto, de acuerdo con este ejemplo de la divulgación, dQP se señaliza para el bloque de cuantificación 104 independientemente de si es o no un bloque cero. De lo contrario, si el predictor de QP no es cero para el bloque de cuantificación 104, no se señaliza ningún dQP para el bloque de cuantificación 104 si es un bloque de cero.
En otro ejemplo, independientemente de si el bloque de cuantificación actual es un bloque cero o no, se señala dQP para el bloque de cuantificación si uno de los Qp (por ejemplo, los QP del bloque de cuantificación superior o izquierdo) se usa para la predicción de QP del bloque de cuantificación actual es igual a cero, o si una diferencia entre los QP utilizados para la predicción de QP es menor o mayor que algún umbral, en el que dicho umbral puede ser cualquier número entero. De lo contrario, el dQP no se señaliza si el bloque de cuantificación es un bloque cero. Por supuesto, el dQP todavía se señaliza si el bloque de cuantificación contiene coeficientes distintos de cero. El umbral puede ser fijo o señalizado en un encabezado, por ejemplo, en el PPS, encabezado de segmento o APS. En otros ejemplos, el umbral se puede señalar a niveles de LCU o Cu .
En otro ejemplo de la divulgación, en lugar de indicar el modo de codificación sin pérdidas para un bloque que utiliza un QP cero, el codificador de video 20 puede configurarse para codificar una bandera o elemento de sintaxis separado para indicar que un bloque está codificado con el modo de codificación sin pérdidas. En un ejemplo, dicha bandera puede denominarse "bandera sin pérdidas". Cuando se usan indicadores sin pérdida, todos los ejemplos de señalización dQP anteriores siguen siendo aplicables.
Por ejemplo, en el caso de que un bloque de cuantificación actual sea un bloque cero, el dQP se señaliza para el bloque de cuantificación si uno (o todos, en otro ejemplo) bloques de cuantificación utilizados para la predicción de QP (por ejemplo, los bloques de cuantificación izquierdo y anterior) en los ejemplos anteriores) se codifica en modo de codificación sin pérdidas (es decir, la bandera sin pérdidas está activada para el bloque de cuantificación utilizado para la predicción de QP). Sin embargo, si se usa el indicador sin pérdidas para identificar la codificación del modo sin pérdidas para un bloque de cuantificación, es posible que establecer el QP en cero para ese bloque de cuantificación codificado sin pérdidas no sea una opción óptima, ya que este valor de QP se usará más adelante para predecir los valores de Qp de los valores de los bloques de cuantificación siguientes. Un ejemplo de bloques de cuantificación a la izquierda y arriba codificados sin pérdidas con QP asignado distinto de cero se muestra en la Figura. 5 (es decir, un ejemplo de QP distinto de cero asignado a bloques de cuantificación codificados sin pérdidas). Como se muestra en la Figura 5, los bloques de cuantificación izquierdo (QPleft) y superiores (QPabove) relativos al bloque 106 de cuantificación actual tienen QP distinto de cero, pero cada uno está codificado en modo de codificación sin pérdidas (indicado con la bandera sin pérdidas = 1).
De acuerdo con otro ejemplo de esta divulgación, si un bloque de cuantificación se codifica en modo de codificación sin pérdidas como lo indica la bandera sin pérdidas (por ejemplo, QPleft y QPabove como se muestra en la Figura 5), un valor de QP igual al predictor de QP de ese bloque de cuantificación puede ser establecido como QP actual para ese bloque. Por ejemplo, para QPabove en la Figura. 5, en lugar de usar un valor de QP de cero para el bloque, ya que está codificado sin pérdidas, el predictor de QP para el QPabove (por ejemplo, el QP promedio de los bloques a la izquierda y arriba de QPabove) puede usarse como el QP actual. De esta manera, un valor de QP distinto de cero puede estar disponible para usar como un predictor de QP para los bloques de cuantificación sucesivos, evitando así un posible desajuste de codificador/decodificador. En otro ejemplo, el valor de QP del bloque de cuantificación codificado sin pérdidas, indicado usando la bandera sin pérdidas, también puede establecerse igual a un QP de corte o cualquier otro QP predefinido.
En la descripción anterior, se describió una bandera sin pérdidas como señalizada en el nivel del bloque de cuantificación. Como otro ejemplo de la divulgación, el codificador de video 20 puede configurarse para señalar la bandera sin pérdidas por cada CU dentro del bloque de cuantificación. En este caso, todas las técnicas descritas anteriormente siguen siendo aplicables. Por ejemplo, en caso de que una CU dentro de un bloque de cuantificación se codifique sin pérdidas, se puede omitir la señalización de dQp y se infiere que el valor de dQP es cero en el decodificador de video 30. Como tal, se derivará un predictor de QP como QP para esta CU sin pérdidas y se usará para predecir los valores de QP de los bloques subsiguientes. En este caso, la señalización dQP se omite para una CU sin pérdidas independientemente de si hay un residuo distinto de cero o no en la CU.
En otro ejemplo de esta divulgación, se puede señalar una bandera sin pérdidas de bloque de cuantificación para un bloque de cuantificación. Cuando se establece en, por ejemplo, 1, el indicador sin pérdidas del nivel del bloque de cuantificación indica que al menos una CU dentro de un bloque de cuantificación está codificada sin pérdidas. Si la bandera sin pérdidas del nivel del bloque de cuantificación tiene un valor de, por ejemplo, 1, entonces se señaliza una bandera sin pérdidas de CU para cada CU dentro del bloque de cuantificación que indica si la CU particular está codificada sin pérdidas o no. De lo contrario, si el indicador sin pérdidas del bloque de cuantificación es 0 (es decir, no hay CU codificadas sin pérdidas en el bloque de cuantificación), no se necesita ningún indicador sin pérdidas de CU para cada CU dentro del bloque de cuantificación.
En otro ejemplo, la eficacia de la señalización se puede mejorar aún más cuando se usan indicadores sin pérdidas de dos niveles (basados en bloques de cuantificación y basados en CU). Si la bandera sin pérdida de nivel del bloque de cuantificación está habilitada (por ejemplo, tiene un valor de 1) y se alcanza la última CU y no hay banderas sin pérdida de nivel de CU codificadas antes de la última CU para el bloque de cuantificación actual, entonces la señalización de la CU Se puede omitir el indicador sin pérdida de la última CU. Esto se debe a que la bandera sin pérdidas del bloque de cuantificación indica que hay al menos una CU codificada sin pérdidas y, por lo tanto, se puede inferir que la última CU en este ejemplo debe estar codificada sin pérdidas. Sin embargo, si una bandera sin pérdidas para el grupo de cuantificación está deshabilitada (por ejemplo, tiene un valor de 0), lo que significa que no hay CU codificadas sin pérdidas dentro del bloque de cuantificación, entonces la señalización de la bandera sin pérdidas basada en CU se puede omitir para el bloque de cuantificación actual.
Las mismas técnicas para codificar un indicador sin pérdidas y eliminar la redundancia de señalización, en el caso de que se pueda inferir un indicador sin pérdidas como se describe anteriormente, se pueden aplicar en el fotograma, segmento, LCU y/u otra unidad o niveles definidos del proceso de codificación de video. El término "bandera" puede referirse a un elemento de sintaxis de un solo bit. Además, en lugar de un indicador, también se puede utilizar un elemento de sintaxis de múltiples bits, un elemento de sintaxis de longitud variable u otro tipo de estructura de datos capaz de transmitir la información descrita anteriormente para un indicador.
Para reiterar el segundo inconveniente relacionado con las técnicas de señalización dQP propuestas actualmente en HEVC, el decodificador de video 30 puede ser incapaz de identificar correctamente el modo de codificación sin pérdidas para un bloque de cuantificación cuando el predictor de QP para un bloque de cuantificación actual no es cero, pero el bloque de cuantificación actual pueden codificarse con el modo sin pérdidas y no tener ningún residuo (es decir, no hay valores distintos de cero en el residuo). En esta situación, dQP no se transmite y el decodificador 30 de video infiere que es cero. Como tal, el descodificador de video 30 reconstruirá un valor de QP real distinto de cero que utiliza el dQP cero y, por tanto, no podrá identificar el modo sin pérdidas para este bloque de cuantificación.
Para resolver este problema, de acuerdo con otro ejemplo de esta divulgación, el codificador de video 20 puede configurarse para eliminar escenarios en los que de otro modo no podría identificar el modo sin pérdida, de modo que el codificador de video 20 simplemente no puede elegir el modo de codificación sin pérdida para un bloque de cuantificación particular cuando no hay residuo de predicción para el bloque de cuantificación actual y el predictor de QP no es cero o los bloques de cuantificación utilizados para la predicción de QP están codificados sin pérdidas (por ejemplo, la bandera sin pérdidas está activada). Como tal, se puede evitar la situación en la que el descodificador de video 30 determina un QP distinto de cero para un bloque de cuantificación que no tenía pérdidas.
Otro inconveniente de algunas propuestas para la señalización dQP en HEVC implica la codificación de binarización unaria utilizada. En tales propuestas para HEVC, dQP se codifica que utiliza binarización unaria truncada. Un valor de dQP puede oscilar entre - (26+ QpBdOffsetY/2) a (25+ QpBdOffsety/2), donde QpBdOffsety depende de la entrada de profundidad de bits, que puede ser de 0 a 18. Debido a la distribución asimétrica de los valores delta QP, cMax de la binarización unaria truncada depende del signo del valor dQP. Por ejemplo, asumiendo QpBdOffsetY igual a cero, cMax es igual a 26 si el valor es negativo y cMax es igual a 25 para valores positivos. Como resultado, esto requiere que el codificador de video 20 y el decodificador de video 30 verifiquen la codificación y el análisis de dQP de inicio de sesión. En función del valor del signo, se usa un valor cMax diferente para codificar y analizar el valor dQP.
Para reducir esta complejidad, esta divulgación propone además eliminar la dependencia del signo en la binarización de dQP cambiando el rango del valor de dQP de modo que el valor de cMax en la binarización unaria truncada sea el mismo independientemente del signo. Por ejemplo, para un valor de dQP positivo, el rango se puede aumentar en uno y todo el rango será de -(26+ QpBdOffsety/2) a (26+ QpBdOffsety/2). En este caso, se usa la misma binarización para codificar o analizar los valores dQP positivos y negativos, y no es necesario comprobar el valor del signo. Esta técnica no se limita solo a la binarización unaria truncada, sino que se puede aplicar a cualquier otro esquema de binarización, por ejemplo, a los procedimientos de codificación Exponencial-Golomb.
La Figura 6 es un diagrama de bloques que ilustra un ejemplo de un codificador 20 de video que puede usar técnicas para la codificación dQP como se describe en esta divulgación. El codificador de video 20 se describirá en el contexto de la codificación HEVC con fines de ilustración, pero sin limitación de esta divulgación en cuanto a otros estándares o procedimientos de codificación que pueden requerir la exploración de coeficientes de transformación. El codificador de video 20 puede realizar codificación intra e intercodificación de CU dentro de los fotogramas de video. La codificación interna se basa en la predicción espacial para reducir o eliminar la redundancia espacial en los datos de video dentro de un fotograma de video determinado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal entre un fotograma actual y los fotogramas previamente codificadas de una secuencia de video. Intramodo (I-mode) puede referirse a cualquiera de varios modos de compresión de video basados en el espacio. Los modos intermedios, como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresión de video basados en el tiempo.
Como se muestra en la Figura 6, el codificador de video 20 recibe un bloque de video actual dentro de un fotograma de video a codificar. En el ejemplo de la Figura 6, el codificador de video 20 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una unidad de procesamiento de intrapredicción 46, una memoria intermedia de fotogramas de referencia 64, un sumador 50, una unidad de procesamiento de transformación 52, una unidad de cuantificación 54 y una unidad de codificación de entropía 56. La unidad de procesamiento de transformación 52 ilustrada en la Figura 6 es la unidad que aplica la transformada real o combinaciones de transformada a un bloque de datos residuales, y no debe confundirse con un bloque de coeficientes de transformada, que también puede denominarse unidad de transformada (TU) de una CU. Para la reconstrucción de bloques de video, el codificador 20 de video también incluye una unidad 58 de cuantificación inversa, una unidad de procesamiento de transformación inversa 60 y un sumador 62. También puede incluirse un filtro de desbloqueo (no mostrado en la Figura 6) para filtrar los límites de los bloques para eliminar los artefactos de bloqueo del video reconstruido. Si lo desea, el filtro de desbloqueo filtraría típicamente la salida del verano 62.
Durante el proceso de codificación, el codificador de video 20 recibe un fotograma o segmento de video a codificar. El fotograma o segmento se puede dividir en múltiples bloques de video, por ejemplo, unidades de codificación más grandes (LCU). La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan una codificación interpredictiva del bloque de video recibido en relación con uno o más bloques en uno o más fotogramas de referencia para proporcionar compresión temporal. La unidad de procesamiento de intrapredicción 46 puede realizar una codificación intrapredictiva del bloque de video recibido en relación con uno o más bloques vecinos en el mismo fotograma o segmento que el bloque a codificar para proporcionar compresión espacial.
La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, en base a los resultados de error (es decir, distorsión) para cada modo, y proporciona el bloque intra o interpredicho resultante (por ejemplo, una unidad de predicción (PU)) al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso en un marco de referencia. El sumador 62 combina el bloque predicho con datos de transformación inversa cuantificados inversamente de la unidad de procesamiento de transformación inversa 60 para que el bloque reconstruya el bloque codificado, como se describe con mayor detalle a continuación. Algunos fotogramas de video pueden designarse como fotogramas I, donde todos los bloques de un fotograma I se codifican en un modo de intrapredicción. En algunos casos, la unidad de procesamiento de intrapredicción 46 puede realizar la codificación de intrapredicción de un bloque en un fotograma P o B, por ejemplo, cuando la búsqueda de movimiento realizada por la unidad de estimación de movimiento 42 no da como resultado una predicción suficiente del bloque.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar muy integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento (o búsqueda de movimiento) es el proceso de generar vectores de movimiento, que estiman el movimiento de los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una unidad de predicción en un marco actual con respecto a una muestra de referencia de un marco de referencia. La unidad de estimación de movimiento 42 calcula un vector de movimiento para una unidad de predicción de un fotograma intercodificada comparando la unidad de predicción con muestras de referencia de un fotograma de referencia almacenada en la memoria intermedia de fotogramas de referencia 64. Una muestra de referencia puede ser un bloque que coincide estrechamente con la parte de la CU, incluida la PU que se codifica en términos de diferencia de píxeles, que puede determinarse mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia al cuadrado (SSD), u otras métricas de diferencia. La muestra de referencia puede aparecer en cualquier lugar dentro de un marco de referencia o segmento de referencia, y no necesariamente en un límite de bloque (por ejemplo, unidad de codificación) del marco de referencia o segmento. En algunos ejemplos, la muestra de referencia puede ocurrir en una posición de píxel fraccional.
La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación de entropía 56 y la unidad de compensación de movimiento 44. La parte del marco de referencia identificada por un vector de movimiento puede denominarse muestra de referencia. La unidad 44 de compensación de movimiento puede calcular un valor de predicción para una unidad de predicción de una CU actual, por ejemplo, recuperando la muestra de referencia identificada por un vector de movimiento para la PU.
La unidad de procesamiento de intrapredicción 46 puede intrapredecir el bloque recibido, como una alternativa a la inter-predicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44. La unidad de procesamiento de intrapredicción 46 puede predecir el bloque recibido en relación con los bloques vecinos previamente codificados, por ejemplo, los bloques arriba, arriba y a la derecha, arriba y a la izquierda, o a la izquierda del bloque actual, asumiendo una izquierda- orden de codificación de arriba a abajo para los bloques. La unidad de procesamiento de intrapredicción 46 puede configurarse con una variedad de diferentes modos de intrapredicción. Por ejemplo, la unidad de procesamiento de intrapredicción 46 puede configurarse con un cierto número de modos de predicción direccional, por ejemplo, treinta y tres modos de predicción direccional, en base al tamaño de la CU que se codifica.
La unidad de procesamiento de intrapredicción 46 puede seleccionar un modo de intrapredicción, por ejemplo, calculando valores de error para varios modos de intrapredicción y seleccionando un modo que produzca el valor de error más bajo. Los modos de predicción direccional pueden incluir funciones para combinar valores de píxeles espacialmente vecinos y aplicar los valores combinados a una o más posiciones de píxeles en una PU. Una vez que se han calculado los valores para todas las posiciones de los píxeles en la PU, la unidad de procesamiento de intrapredicción 46 puede calcular un valor de error para el modo de predicción basándose en las diferencias de píxeles entre la PU y el bloque recibido a codificar. La unidad de procesamiento de intrapredicción 46 puede continuar probando modos de intrapredicción hasta que se descubra un modo de intrapredicción que produzca un valor de error aceptable. La unidad 46 de procesamiento de intrapredicción puede enviar entonces la PU al sumador 50.
El codificador 20 de video forma un bloque residual restando los datos de predicción calculados por la unidad 44 de compensación de movimiento o la unidad 46 de procesamiento de intrapredicción del bloque de video original que se está codificando. El sumador 50 representa el componente o componentes que realizan esta operación de resta. El bloque residual puede corresponder a una matriz bidimensional de valores de diferencia de píxeles, donde el número de valores en el bloque residual es el mismo que el número de píxeles en la PU correspondiente al bloque residual. Los valores del bloque residual pueden corresponder a las diferencias, es decir, al error, entre los valores de los píxeles coubicados en la PU y en el bloque original a codificar. Las diferencias pueden ser diferencias de crominancia o luminancia en función del tipo de bloque codificado.
En algunos casos, por ejemplo, en un modo de codificación sin pérdidas, el residuo puede enviarse directamente a la unidad de codificación de entropía 56. Como tal, se omiten los procesos de transformación y cuantificación. Además, también se puede omitir cualquier proceso de filtro de bucle.
La unidad de procesamiento de transformación 52 puede formar una o más unidades de transformación (TU) a partir del bloque residual. La unidad de procesamiento de transformada 52 selecciona una transformada de entre una pluralidad de transformadas. La transformada puede seleccionarse en base a una o más características de codificación, tales como tamaño de bloque, modo de codificación o similares. La unidad de procesamiento de transformada 52 aplica entonces la transformada seleccionada a la TU, produciendo un bloque de video que comprende una matriz bidimensional de coeficientes de transformada.
La unidad de procesamiento de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 puede entonces cuantificar los coeficientes de transformación. La unidad de codificación de entropía 56 puede entonces realizar una exploración de los coeficientes de transformación cuantificados en la matriz de acuerdo con un modo de exploración. Esta divulgación describe que la unidad de codificación de entropía 56 realiza la exploración. Sin embargo, debe entenderse que, en otros ejemplos, otras unidades de procesamiento, como la unidad de cuantificación 54, podrían realizar la exploración. La unidad de cuantificación 56 puede configurarse para codificar valores dQP de acuerdo con las técnicas descritas anteriormente. La descripción adicional de la función de la unidad de cuantificación 56 a este respecto se discutirá a continuación con referencia a la Figura 8.
Una vez que los coeficientes de transformación se escanean en la matriz unidimensional, la unidad de codificación de entropía 56 puede aplicar codificación de entropía como CABAC, codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), entropía de partición de intervalo de probabilidad (PIPE) u otra metodología de entropía de codificación de los coeficientes.
Para realizar CABAC, la unidad de codificación de entropía 56 puede seleccionar un modelo de contexto para aplicar a un determinado contexto para codificar los símbolos que se transmitirán. El contexto puede relacionarse, por ejemplo, con si los valores vecinos son distintos de cero o no. La unidad de codificación de entropía 56 también puede codificar entropía elementos de sintaxis, tales como la señal representativa de la transformada seleccionada. De acuerdo con las técnicas de esta divulgación, la unidad de codificación de entropía 56 puede seleccionar el modelo de contexto utilizado para codificar estos elementos de sintaxis en base a, por ejemplo, en una dirección de intrapredicción para modos de intrapredicción, una posición de escaneo del coeficiente correspondiente a los elementos de sintaxis, el tipo de bloque y/o el tipo de transformación, entre otros factores usados para la detección del modelo de contexto.
Después de la codificación de entropía por la unidad de codificación de entropía 56, el video codificado resultante puede transmitirse a otro dispositivo, tal como el decodificador de video 30, o archivarse para su posterior transmisión o recuperación.
En algunos casos, la unidad de codificación de entropía 56 u otra unidad del codificador de video 20 pueden configurarse para realizar otras funciones de codificación, además de la codificación de entropía. Por ejemplo, la unidad de codificación de entropía 56 puede configurarse para determinar valores de patrón de bloques codificados (CBP) para CU y PU. Además, en algunos casos, la unidad de codificación de entropía 56 puede realizar la codificación de coeficientes de longitud de ejecución.
La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformación inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para uso posterior como bloque 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 uno de los fotogramas de la memoria intermedia 64 de fotogramas de referencia. La unidad 44 de compensación de movimiento también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad 44 de compensación de movimiento para producir un bloque de video reconstruido para su almacenamiento en la memoria intermedia 64 de fotogramas de referencia. El bloque de video reconstruido puede ser utilizado por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento como un bloque de referencia para intercodificar un bloque en un fotograma de video subsiguiente.
La Figura 7 es un diagrama de bloques que ilustra un ejemplo de un decodificador de video 30, que decodifica una secuencia de video codificada. En el ejemplo de la Figura 7, el decodificador de video 30 incluye una unidad de decodificación de entropía 70, una unidad de compensación de movimiento 72, una unidad de procesamiento de intrapredicción 74, una unidad de cuantificación inversa 76, una unidad de transformación inversa 78, una memoria intermedia de fotogramas de referencia 82 y un sumador 80. El decodificador de video 30 puede, en algunos ejemplos, realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de video 20 (ver Figura 6).
La unidad de decodificación de entropía 70 realiza un proceso de decodificación de entropía en el flujo de bits codificado para recuperar una matriz unidimensional de coeficientes de transformación. El proceso de decodificación de entropía usado depende de la codificación de entropía usada por el codificador de video 20 (por ejemplo, CABAC). El proceso de codificación de entropía utilizado por el codificador puede señalizarse en el flujo de bits codificado o puede ser un proceso predeterminado.
En algunos casos, por ejemplo, en un modo de codificación sin pérdidas, la salida (es decir, un residuo en este ejemplo) puede enviarse directamente desde la unidad de decodificación de entropía 70 al sumador 80. Como tal, se omiten los procesos de transformación inversa y cuantificación. Además, también se puede omitir cualquier proceso de filtro de bucle.
En algunos ejemplos, la unidad de decodificación de entropía 70 (o la unidad de cuantificación inversa 76) puede escanear los valores recibidos usando un escaneo que refleja el modo de escaneo usado por la unidad de codificación de entropía 56 (o la unidad de cuantificación 54) del codificador de video 20. Aunque la exploración de coeficientes se puede realizar en la unidad 76 de cuantificación inversa, la exploración se describirá con fines ilustrativos como realizada por la unidad 70 de decodificación de entropía. Además, aunque se muestran como unidades funcionales separadas para facilitar la ilustración, la estructura y funcionalidad de la unidad de decodificación de entropía 70, la unidad de cuantificación inversa 76 y otras unidades del decodificador de video 30 pueden estar altamente integradas entre sí.
La unidad de cuantificación inversa 76 cuantifica inversamente, es decir, descuantifica, los coeficientes de transformación cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación de entropía 70. El proceso de cuantificación inversa puede incluir un proceso convencional, por ejemplo, similar a los procesos propuestos para HEVC o definidos por el estándar de decodificación H.264. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación QP calculado por el codificador de video 20 para la CU para determinar un grado de cuantificación y, de forma similar, un grado de cuantificación inversa que debería aplicarse. La unidad de cuantificación inversa 76 puede cuantificar de forma inversa los coeficientes de transformación antes o después de que los coeficientes se conviertan de una matriz unidimensional a una matriz bidimensional. La unidad 76 de cuantificación inversa puede configurarse para decodificar valores dQP de acuerdo con las técnicas descritas anteriormente. La descripción adicional de la función de la unidad 76 de cuantificación inversa a este respecto se discutirá a continuación con referencia a la Figura 9.
La unidad 78 de procesamiento de transformada inversa aplica una transformada inversa a los coeficientes de transformada inversa cuantificados. En algunos ejemplos, la unidad 78 de procesamiento de transformada inversa puede determinar una transformada inversa en base a la señalización del codificador 20 de video, o infiriendo la transformada a partir de una o más características de codificación tales como tamaño de bloque, modo de codificación o similares. En algunos ejemplos, la unidad 78 de procesamiento de transformada inversa puede determinar una transformada para aplicar al bloque actual en base a una transformada señalizada en el nodo raíz de un quadtree para una LCU que incluye el bloque actual. Alternativamente, la transformación puede ser señalizada en la raíz de un quadtree de TU para una CU de nodo hoja en el quadtree de LCU. En algunos ejemplos, la unidad 78 de procesamiento de transformada inversa puede aplicar una transformada inversa en cascada, en la que la unidad 78 de procesamiento de transformada inversa aplica dos o más transformadas inversas a los coeficientes de transformación del bloque actual que se está decodificando.
La unidad 74 de procesamiento de intrapredicción puede generar datos de predicción para un bloque actual de un fotograma actual en base a un modo de intrapredicción señalado y datos de bloques previamente decodificados del fotograma actual.
La unidad de compensación de movimiento 72 puede recuperar el vector de movimiento, la dirección de predicción de movimiento y el índice de referencia del flujo de bits codificado. La dirección de predicción de referencia indica si el modo de interpredicción es unidireccional (por ejemplo, un fotograma P) o bidireccional (un fotograma B). El índice de referencia indica en qué marco de referencia se basa el vector de movimiento candidato.
En base a la dirección de predicción de movimiento recuperada, el índice de fotograma de referencia y el vector de movimiento, la unidad de compensación de movimiento produce un bloque con compensación de movimiento para la porción actual. Estos bloques con compensación de movimiento esencialmente recrean el bloque predictivo utilizado para producir los datos residuales.
La unidad de compensación de movimiento 72 puede producir los bloques de compensación de movimiento, posiblemente realizando una interpolación en base a filtros de interpolación. Los identificadores para los filtros de interpolación que se usarán para la estimación de movimiento con precisión de subpíxeles pueden incluirse en los elementos de sintaxis. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los usa el codificador de video 20 durante la codificación del bloque de video para calcular valores interpolados para píxeles subenteros del bloque de referencia. La unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de video 20 de acuerdo con la información de sintaxis recibida y usar los filtros de interpolación para producir bloques predictivos.
Además, la unidad de compensación de movimiento 72 y la unidad de procesamiento de intrapredicción 74, en un ejemplo de HEVC, pueden usar parte de la información de sintaxis (por ejemplo, proporcionada por un árbol cuádruple) para determinar los tamaños de las LCU utilizadas para codificar lo(s) fotograma(s) de la secuencia de video codificada. La unidad de compensación de movimiento 72 y la unidad de procesamiento de intrapredicción 74 también pueden usar información de sintaxis para determinar información dividida que describe cómo se divide cada CU de un fotograma de la secuencia de video codificada (e igualmente, cómo se dividen las subCU). La información de sintaxis también puede incluir modos que indiquen cómo se codifica cada división (por ejemplo, Intra-o intcrprcdiction, y para intraprcdiction un modo de codificación intrapredicción), uno o más marcos de referencia (y/o listas de referencia que contienen identificadores para los fotogramas de referencia) para cada PU intercodificada, y otra información para decodificar la secuencia de video codificada.
El sumador 80 combina los bloques residuales con los correspondientes bloques de predicción generados por la unidad de compensación de movimiento 72 o la unidad de procesamiento de intrapredicción 74 para formar bloques decodificados. Si se desea, también se puede aplicar un filtro de desbloqueo para filtrar los bloques decodificados con el fin de eliminar los artefactos de bloqueo. Los bloques de video decodificados se almacenan en la memoria intermedia de fotogramas de referencia 82 (también denominada memoria intermedia de imágenes decodificadas), que proporciona bloques de referencia para la compensación de movimiento posterior y también produce video decodificado para su presentación en un dispositivo de visualización (como el dispositivo de visualización 32 de la Figura 1).
La Figura 8 es un diagrama de flujo que muestra un ejemplo de procedimiento de codificación de video de acuerdo con las técnicas de esta divulgación. Las técnicas de la Figura 8 puede llevarse a cabo mediante una unidad más de hardware del codificador de video 20, incluida la unidad de cuantificación 56.
En un ejemplo de la divulgación, la unidad de cuantificación 56 puede configurarse para determinar un valor de parámetro de cuantificación (QP) para un bloque de cuantificación actual (810), determinar un valor de parámetro de cuantificación delta (dQP) para el bloque de cuantificación actual de datos de video en base al QP y un predictor de QP (820), y generan el valor de dQP, en el que el valor de dQP se indica si hay o no coeficientes de transformación distintos de cero en el bloque de cuantificación actual (830). En varios ejemplos de la divulgación, el predictor de QP es un promedio de un valor de QP para un bloque de cuantificación superior y un bloque de cuantificación izquierdo, en el que el bloque de cuantificación superior se ubica encima del bloque de cuantificación actual y en el que el bloque de cuantificación izquierdo se ubica en a la izquierda del bloque de cuantificación actual. El codificador de video 20 puede configurarse además para codificar el bloque de cuantificación actual que utiliza el valor de QP determinado (840).
En un ejemplo de la divulgación, el codificador de video 20 puede configurarse además para generar un tamaño de grupo de cuantificación (QG), en el que el bloque de cuantificación actual comprende una o más unidades de codificación (CU) que tienen un tamaño igual o menor que el tamaño de QG o una CU que tiene un tamaño mayor que el tamaño QG.
En otro ejemplo de la divulgación, la unidad de cuantificación 56 puede configurarse para generar el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor de cero, e infiera el valor de dQP sea cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
En otro ejemplo de la divulgación, la unidad de cuantificación 56 puede configurarse para generar el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que un valor de QP usado para determinar el predictor de QP para el bloque de cuantificación actual tenga un valor de cero, e inferir que el valor de dQP es cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
En otro ejemplo de la divulgación, la unidad de cuantificación 56 puede configurarse para generar el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que la diferencia entre dos valores de QP usados para determinar el predictor de QP sea mayor que un umbral, e inferir que el valor de dQP es cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
En otro ejemplo de la divulgación, la unidad de cuantificación 56 puede configurarse para generar el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que la diferencia entre dos valores de QP usados para determinar el predictor de QP sea menor que un umbral, e inferir que el valor de dQP es cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
En otro ejemplo de la divulgación, la unidad de cuantificación 56 puede configurarse para generar cualquiera de los umbrales descritos anteriormente en uno o más de un conjunto de parámetros de imagen (PPS), conjunto de parámetros de adaptación (APS), encabezado de segmento, unidad de codificación más grande (LCU) encabezado y encabezado CU.
En otro ejemplo de la divulgación, el codificador de video 20 puede configurarse para generar una bandera sin pérdidas que indique que el bloque de cuantificación actual se codificó que utiliza un modo de codificación sin pérdidas y codificar el bloque de cuantificación actual que utiliza de acuerdo con el modo de codificación sin pérdidas.
En otro ejemplo de la divulgación, la unidad de cuantificación 56 puede configurarse para asignar un valor de QP para el bloque de cuantificación actual para que sea igual a un predictor de QP en el caso de que se reciba la bandera sin pérdidas para el bloque de cuantificación actual, en el que el valor de QP se usa para la predicción de QP posterior.
En otro ejemplo de la divulgación, el codificador de video 20 puede configurarse para, en el caso de que el bloque de cuantificación actual incluya dos o más CU, genere una bandera sin pérdidas en cada una de las dos o más Cu en el caso de que se reciba una bandera sin pérdidas en el bloque de cuantificación actual indica que una o más CU en los bloques de cuantificación se codificaron que utiliza el modo de codificación sin pérdidas.
En otro ejemplo de la divulgación, el codificador de video 20 puede configurarse para codificar el valor de dQP que utiliza una técnica de binarización unaria truncada sin comprobar un signo del valor de dQP.
En otro ejemplo de la divulgación, el codificador de video 20 puede configurarse para no seleccionar un modo de codificación sin pérdidas para la cuantificación actual en el caso de que el bloque de cuantificación actual no tenga residual de predicción y el predictor de QP para el bloque de cuantificación actual no sea cero.
En otro ejemplo de la divulgación, el codificador de video 20 puede configurarse para no seleccionar un modo de codificación sin pérdidas para la cuantificación actual en el caso de que el bloque de cuantificación actual no tenga un residuo de predicción y uno o más bloques de cuantificación utilizados para determinar un predictor de QP para el bloque de cuantificación actual se codifica en un modo de codificación sin pérdidas.
La Figura 9 es un diagrama de flujo que muestra un ejemplo de procedimiento de decodificación de video de acuerdo con las técnicas de esta divulgación. Las técnicas de la Figura 9 puede llevarse a cabo mediante una unidad más de hardware del decodificador 30 de video, incluida la unidad 76 de cuantificación inversa.
En un ejemplo de la divulgación, la unidad 76 de cuantificación inversa puede configurarse para recibir un valor del parámetro de cuantificación delta (dQP) para un bloque de cuantificación actual de datos de video, en el que el valor de dQP se recibe independientemente de que haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual (910), y determinar un valor de parámetro de cuantificación (QP) para el bloque de cuantificación actual en base al valor dQP recibido y un predictor de QP (920). En varios ejemplos de la divulgación, el predictor de QP es un promedio de un valor de QP para un bloque de cuantificación superior y un bloque de cuantificación izquierdo, en el que el bloque de cuantificación superior se ubica encima del bloque de cuantificación actual y en el que el bloque de cuantificación izquierdo se ubica en a la izquierda del bloque de cuantificación actual. El decodificador 30 de video puede configurarse además para decodificar el bloque de cuantificación actual usando el valor de QP determinado (930).
En otro ejemplo de la divulgación, la unidad de cuantificación inversa 76 puede configurarse además para recibir un tamaño de grupo de cuantificación (QG), en el que el bloque de cuantificación actual comprende una o más unidades de codificación (CU) que tienen un tamaño igual o menor que el tamaño de QG o una CU que tiene un tamaño mayor que el tamaño QG.
En otro ejemplo de la divulgación, la unidad 76 de cuantificación inversa puede configurarse además para recibir el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor de cero, e infiera el e valor de dQP debe ser cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
En otro ejemplo de la divulgación, la unidad 76 de cuantificación inversa puede configurarse además para recibir el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que un valor de QP usado para determinar el predictor de QP para el bloque de cuantificación actual tenga un valor de cero, e inferir que el valor de dQP es cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual. En otro ejemplo de la divulgación, la unidad de cuantificación inversa 76 puede configurarse además para recibir el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que la diferencia entre dos valores de QP usados para determinar el predictor de QP sea mayor que un umbral e inferir que el valor de dQP es cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
En otro ejemplo de la divulgación, la unidad de cuantificación inversa 76 puede configurarse además para recibir el valor de dQP para el bloque de cuantificación actual de datos de video solo en el caso de que la diferencia entre dos valores de QP usados para determinar el predictor de QP sea menor que un umbral, e inferir que el valor de dQP es cero en el caso de que el predictor de QP para el bloque de cuantificación actual tenga un valor distinto de cero, y no haya coeficientes de transformación distintos de cero en el bloque de cuantificación actual.
En otro ejemplo de la divulgación, la unidad de cuantificación inversa 76 puede configurarse además para recibir cualquiera de los umbrales descritos anteriormente en uno o más de un conjunto de parámetros de imagen (PPS), conjunto de parámetros de adaptación (APS), encabezado de segmento, unidad de codificación más grande (LCU) encabezado y encabezado CU.
En otro ejemplo de la divulgación, el decodificador de video 30 puede configurarse además para recibir un indicador sin pérdidas que indique que el bloque de cuantificación actual se codificó que utiliza un modo de codificación sin pérdidas y decodificar el bloque de cuantificación actual que utiliza de acuerdo con el modo de codificación sin pérdidas.
En otro ejemplo de la divulgación, la unidad de cuantificación inversa 76 puede configurarse además para asignar un valor de Qp para que el bloque de cuantificación actual sea igual a un predictor de QP en el caso de que se reciba el indicador sin pérdidas para el bloque de cuantificación actual, en el que el valor de QP se usa para la predicción de QP posterior.
En otro ejemplo de la divulgación, el decodificador de video 30 puede configurarse además para recibir una bandera sin pérdidas en cada una de las dos o más CU en el caso de que una bandera sin pérdidas recibida en el bloque de cuantificación actual indique que una o más CU en los bloques de cuantificación se codificaron que utiliza el modo de codificación sin pérdidas.
En otro ejemplo de la divulgación, el descodificador de video 30 puede configurarse además para descodificar el valor de dQP que utiliza una técnica de binarización unaria truncada sin comprobar un signo del valor de dQP. En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse o transmitirse, como una o más instrucciones o código, en un medio legible por computadora y ejecutadas por una unidad de procesamiento basada en hardware. Los medios legibles por computadora pueden incluir medios de almacenamiento legibles por computadora, que corresponden a un medio tangible, como medios de almacenamiento de datos, o medios de comunicación, incluido cualquier medio que facilite la transferencia de un programa de computadora de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder mediante una o más computadoras o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa de computadora puede incluir un medio legible por computadora.
A manera de ejemplo, y no de limitación, tales medios no transitorios legibles por computadora pueden comprender RAM, ROM, EPROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético, u otros dispositivos de almacenamiento magnéticos, memoria flash, o cualquier otro medio que pueda usarse para almacenar código de programa deseado en la forma de instrucciones o estructuras de datos y que puedan accederse por una computadora. Además, cualquier conexión se denomina correctamente un medio legible por computadora. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota que utiliza un cable coaxial, cable de fibra óptica, par trenzado, línea de abonado digital (DSL) o tecnologías inalámbricas como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas como infrarrojos, radio y arco de microondas incluidas en la definición de medio. Sin embargo, debe 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 están dirigidos a medios de almacenamiento tangibles no transitorios. El disco y disco, como se usa en la presente memoria, incluye disco compacto (CD), disco de láser, disco óptico, disco digital versátil (DVD), disquete, y disco de Blu-ray, donde existen discos que usualmente reproducen magnéticamente los datos, mientras que otros discos reproducen ópticamente los datos con láseres. Las combinaciones de los medios anteriores pueden incluirse además dentro del ámbito de los medios legibles por computadora.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. Por consiguiente, el término "procesador", como se usa en la presente memoria, puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en la presente memoria puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se describió anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o firmware adecuados.
Se han descrito varios ejemplos. Estos y otros ejemplos están dentro del ámbito de las siguientes reivindicaciones.

Claims (12)

  1. REIVINDICACIONES
    i. Un procedimiento de decodificación de datos de video, comprendiendo el procedimiento:
    recibir un elemento de sintaxis de codificación sin pérdidas para un bloque actual de datos de video, indicando el elemento de sintaxis de codificación sin pérdidas que el bloque actual de datos de video está codificado mediante el uso de un modo de codificación sin pérdidas, en el que el bloque actual de datos de video es una unidad de codificación, CU, de datos de video;
    recibir un tamaño del grupo de cuantificación, QG;
    determinar que la CU tiene un tamaño mayor o igual que el tamaño de QG, siendo la CU un bloque de cuantificación actual;
    asignar un valor de parámetro de cuantificación delta, dQP, de cero para el bloque de cuantificación actual si no se señaliza un dQP para el bloque de cuantificación actual, en el que el valor de dQP es una diferencia entre el valor de QP y un valor de un predictor de QP;
    determinar un valor de parámetro de cuantificación, QP, para el bloque de cuantificación actual en base al valor de dQP asignado y el predictor de QP; y
    decodificar el bloque de cuantificación actual de acuerdo con el modo de codificación sin pérdidas y el valor de QP determinado, en el que el valor de QP determinado se usa para la predicción de QP posterior.
  2. 2. El procedimiento de la reivindicación 1, comprendiendo además el procedimiento:
    determinar el valor de QP agregando el valor de dQP asignado a un valor del predictor de QP, en el que el predictor de QP es un promedio de un valor de QP para un bloque de cuantificación superior y un bloque de cuantificación izquierdo, en el que el bloque de cuantificación superior se ubica por encima del bloque de cuantificación actual y en el que el bloque de cuantificación izquierdo se ubica a la izquierda del bloque de cuantificación actual.
  3. 3. El procedimiento de la reivindicación 1, que comprende, además:
    realizar la predicción de QP para otro bloque de datos de video que utiliza el valor de QP determinado.
  4. 4. Un procedimiento de codificación de datos de video, comprendiendo el procedimiento:
    determinar que un bloque actual de datos de video debe codificarse mediante el uso de un modo de codificación sin pérdidas, en el que el bloque actual de datos de video es una unidad de codificación, CU, de datos de video;
    determinar un tamaño del grupo de cuantificación, QG;
    determinar que la CU tiene un tamaño mayor o igual que el tamaño de QG, siendo la CU el bloque de cuantificación actual;
    determinar un valor de parámetro de cuantificación, QP, para el bloque de cuantificación actual de datos de video en base a un valor cero para un parámetro de cuantificación delta, dQP, y un predictor de QP, en el que el valor de dQP es una diferencia entre el valor de QP y un valor de la predictor de QP;
    generar un elemento de sintaxis de codificación sin pérdidas para el bloque actual de datos de video, indicando el elemento de sintaxis de codificación sin pérdidas que el bloque actual de datos de video se codifica mediante el uso de un modo de codificación sin pérdidas; y
    codificar el bloque de cuantificación actual de acuerdo con el modo de codificación sin pérdidas y el valor de QP determinado, en el que el valor de QP determinado se usa para la predicción de QP posterior.
  5. 5. El procedimiento de la reivindicación 4, comprendiendo además el procedimiento:
    determinar el valor de QP agregando el valor de dQP asignado a un valor del predictor de QP, en el que el predictor de QP es un promedio de un valor de QP para un bloque de cuantificación superior y un bloque de cuantificación izquierdo, en el que el bloque de cuantificación superior se ubica por encima del bloque de cuantificación actual y en el que el bloque de cuantificación izquierdo se ubica a la izquierda del bloque de cuantificación actual.
  6. 6. El procedimiento de la reivindicación 4, que comprende, además:
    realizar la predicción de QP para otro bloque de datos de video que utiliza el valor de QP determinado.
  7. 7. Un aparato (30) configurado para decodificar datos de video, comprendiendo el aparato:
    medios para recibir un elemento de sintaxis de codificación sin pérdidas para un bloque actual de datos de video, indicando el elemento de sintaxis de codificación sin pérdidas que el bloque actual de datos de video se codifica mediante el uso de un modo de codificación sin pérdidas, en el que el bloque actual de datos de video es una unidad de codificación, CU, de los datos de video;
    medios para determinar un tamaño del grupo de cuantificación, QG; y
    medios para determinar que la CU tiene el tamaño mayor o igual que el tamaño de QG, siendo la CU el bloque de cuantificación actual;
    medios para determinar que el bloque actual de datos de video es un bloque de cuantificación actual; medios para asignar un valor de parámetro de cuantificación delta, dQP, de cero para el bloque de cuantificación actual, si no se señaliza un dQP para el bloque de cuantificación actual, en el que el valor de dQP es una diferencia entre el valor de QP y un valor de un predictor de QP;
    medios para determinar un valor de parámetro de cuantificación, QP, para el bloque de cuantificación actual en base al valor dQP asignado y el predictor de QP; y
    medios para decodificar el bloque de cuantificación actual de acuerdo con el modo de codificación sin pérdidas y el valor de QP determinado, en el que el valor de QP determinado se usa para la predicción de QP posterior.
  8. 8. El aparato (30) de la reivindicación 7, que comprende, además:
    medios para determinar el valor de QP agregando el valor de dQP asignado a un valor del predictor de QP, en el que el predictor de QP es un promedio de un valor de QP para un bloque de cuantificación superior y un bloque de cuantificación izquierdo, en el que el bloque de cuantificación superior se ubica arriba del bloque de cuantificación actual y en el que el bloque de cuantificación izquierdo se ubica a la izquierda del bloque de cuantificación actual.
  9. 9. Un aparato (20) configurado para codificar datos de video, comprendiendo el aparato:
    medios para determinar que un bloque actual de datos de video debe codificarse mediante el uso de un modo de codificación sin pérdidas,
    en el que el bloque actual de datos de video es una unidad de codificación, CU, de datos de video;
    medios para determinar el tamaño de un grupo de cuantificación, QG;
    medios para determinar que la CU tiene un tamaño mayor o igual que el tamaño de QG, siendo la CU el bloque de cuantificación actual;
    medios para determinar un valor de parámetro de cuantificación, QP, para el bloque de cuantificación actual de datos de video en base a un valor cero para un parámetro de cuantificación delta, dQP, y un predictor de QP;
    medios para generar un elemento de sintaxis de codificación sin pérdidas para el bloque actual de datos de video, indicando el elemento de sintaxis de codificación sin pérdidas que el bloque actual de datos de video está codificado mediante el uso de un modo de codificación sin pérdidas; y
    medios para codificar el bloque de cuantificación actual de acuerdo con el modo de codificación sin pérdidas y el valor de QP determinado, en el que el valor de QP determinado se usa para la predicción de QP posterior.
  10. 10. El aparato (20) de la reivindicación 9, que comprende, además:
    medios para determinar el valor de QP agregando el valor de dQP asignado a un valor del predictor de QP, en el que el predictor de QP es un promedio de un valor de QP para un bloque de cuantificación superior y un bloque de cuantificación izquierdo, en el que el bloque de cuantificación superior se ubica por encima del bloque de cuantificación actual y en el que el bloque de cuantificación izquierdo se ubica a la izquierda del bloque de cuantificación actual.
  11. 11. El aparato (20) de la reivindicación 7 o 9, que comprende, además:
    medios para realizar la predicción de QP para otro bloque de datos de video que utiliza el valor de QP determinado.
  12. 12. Un medio de almacenamiento no transitorio legible por ordenador que almacena instrucciones que, cuando se ejecutan, hacen que uno o más procesadores realicen el procedimiento de una cualquiera de las reivindicaciones 1 a la 3 o 4 a la 6.
ES13720211T 2012-04-26 2013-04-26 Codificación de parámetros de cuantificación (QP) en codificación de video Active ES2864623T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261639015P 2012-04-26 2012-04-26
US201261643821P 2012-05-07 2012-05-07
US201261656953P 2012-06-07 2012-06-07
US13/870,149 US9521410B2 (en) 2012-04-26 2013-04-25 Quantization parameter (QP) coding in video coding
PCT/US2013/038383 WO2013163526A1 (en) 2012-04-26 2013-04-26 Quantization parameter (qp) coding in video coding

Publications (1)

Publication Number Publication Date
ES2864623T3 true ES2864623T3 (es) 2021-10-14

Family

ID=49477263

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13720211T Active ES2864623T3 (es) 2012-04-26 2013-04-26 Codificación de parámetros de cuantificación (QP) en codificación de video

Country Status (22)

Country Link
US (1) US9521410B2 (es)
EP (1) EP2842319B1 (es)
JP (1) JP6174123B2 (es)
KR (1) KR101837628B1 (es)
CN (1) CN104255035B (es)
AR (1) AR092825A1 (es)
AU (1) AU2013251390B2 (es)
BR (1) BR112014026750B1 (es)
CA (1) CA2871139C (es)
DK (1) DK2842319T3 (es)
ES (1) ES2864623T3 (es)
HK (1) HK1201110A1 (es)
HU (1) HUE054119T2 (es)
IL (1) IL235249A (es)
IN (1) IN2014MN02044A (es)
MY (1) MY166922A (es)
PH (1) PH12014502365B1 (es)
RU (1) RU2645291C2 (es)
SG (2) SG10201608824QA (es)
TW (1) TWI543622B (es)
UA (1) UA114721C2 (es)
WO (1) WO2013163526A1 (es)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2774360B1 (en) * 2011-11-04 2017-08-02 Huawei Technologies Co., Ltd. Differential pulse code modulation intra prediction for high efficiency video coding
PL2811745T4 (pl) * 2012-01-30 2021-01-11 Samsung Electronics Co., Ltd. Sposób i urządzenie do kodowania i dekodowania wideo, w oparciu o hierarchiczne jednostki danych, z uwzględnieniem predykcji parametru kwantyzacji
WO2015055111A1 (en) * 2013-10-14 2015-04-23 Mediatek Inc. Method of lossless mode signaling for video system with lossless and lossy coding
AU2013403224B2 (en) 2013-10-14 2018-10-18 Microsoft Technology Licensing, Llc Features of intra block copy prediction mode for video and image coding and decoding
JP6336058B2 (ja) 2013-10-14 2018-06-06 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像符号化及び復号のためのベースカラーインデックスマップモードの機能
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
KR102258427B1 (ko) 2014-01-03 2021-06-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
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
EP4354856A2 (en) 2014-06-19 2024-04-17 Microsoft Technology Licensing, LLC Unified intra block copy and inter prediction modes
RU2679201C2 (ru) 2014-09-30 2019-02-06 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Правила для режимов внутрикадрового прогнозирования, когда активируется волновая параллельная обработка данных
EP3308540B1 (en) 2015-06-09 2020-04-15 Microsoft Technology Licensing, LLC Robust encoding/decoding of escape-coded pixels in palette mode
WO2017138761A1 (ko) 2016-02-11 2017-08-17 삼성전자 주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US10244248B2 (en) * 2016-02-25 2019-03-26 Mediatek Inc. Residual processing circuit using single-path pipeline or multi-path pipeline and associated residual processing method
CN109417620B (zh) * 2016-03-25 2021-04-27 松下知识产权经营株式会社 用于使用信号依赖型自适应量化将运动图像编码及解码的方法及装置
JP6769302B2 (ja) * 2016-12-28 2020-10-14 富士通株式会社 動画像符号化装置、動画像符号化方法、動画像符号化用コンピュータプログラム、動画像復号装置及び動画像復号方法ならびに動画像復号用コンピュータプログラム
MX2019012293A (es) 2017-04-13 2020-01-20 Lg Electronics Inc Metodo y dispositivo para codificacion y decodificacion de entropia de señal de video.
US10999576B2 (en) * 2017-05-03 2021-05-04 Novatek Microelectronics Corp. Video processing method
EP3649782A4 (en) * 2017-07-05 2021-04-14 Telefonaktiebolaget LM Ericsson (PUBL) DECODING A BLOCK OF VIDEO SAMPLE
EP3425911A1 (en) 2017-07-06 2019-01-09 Thomson Licensing A method and a device for picture encoding and decoding
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10567781B2 (en) * 2018-05-01 2020-02-18 Agora Lab, Inc. Progressive I-slice reference for packet loss resilient video coding
JP7278719B2 (ja) * 2018-06-27 2023-05-22 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
CN112040229B (zh) * 2018-09-05 2021-06-29 华为技术有限公司 视频解码方法、视频解码器及计算机可读存储介质
US10893272B2 (en) 2019-01-29 2021-01-12 Sony Corporation Image block coding based on pixel-domain pre-processing operations on image block
US11570439B2 (en) * 2019-05-15 2023-01-31 Hyundai Motor Company Inverse quantization device and method used in video decoding device
BR112021023469A2 (pt) * 2019-05-24 2022-01-18 Digital Insights Inc Método de codificação de vídeo e aparelho usando conjunto de parâmetros adaptativos
GB2623001A (en) * 2019-07-05 2024-04-03 V Nova Int Ltd Quantization of residuals in video coding
CN112055211B (zh) * 2019-08-15 2021-10-26 华为技术有限公司 视频编码器及qp设置方法
KR20220062655A (ko) * 2019-09-23 2022-05-17 알리바바 그룹 홀딩 리미티드 비디오 데이터의 무손실 코딩
EP4090020A4 (en) * 2020-01-10 2024-01-17 Samsung Electronics Co Ltd VIDEO DECODING METHOD AND APPARATUS FOR OBTAINING QUANTIZATION PARAMETERS AND VIDEO CODING METHOD AND APPARATUS FOR TRANSMITTING QUANTIZATION PARAMETERS
US11490083B2 (en) 2020-02-05 2022-11-01 Qualcomm Incorporated Learned low-complexity adaptive quantization for video compression
US20240048730A1 (en) * 2022-07-26 2024-02-08 Tencent America LLC Method and apparatus for improved warp delta signaling

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004025943A2 (en) * 2002-04-23 2004-03-25 Nokia Corporation Method and device for indicating quantizer parameters in a video coding system
JP3846489B2 (ja) 2004-05-10 2006-11-15 セイコーエプソン株式会社 画像データ圧縮装置、エンコーダ、電子機器及び画像データ圧縮方法
DE102004059978B4 (de) * 2004-10-15 2006-09-07 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum Erzeugen einer codierten Videosequenz und zum Decodieren einer codierten Videosequenz unter Verwendung einer Zwischen-Schicht-Restwerte-Prädiktion sowie ein Computerprogramm und ein computerlesbares Medium
CN1770863A (zh) * 2004-11-02 2006-05-10 华为技术有限公司 零块预判条件的确定方法及零块预先判定方法
US8548055B2 (en) 2005-03-10 2013-10-01 Qualcomm Incorporated Encoding of multimedia data
US8848789B2 (en) * 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
JP5212373B2 (ja) 2007-09-12 2013-06-19 ソニー株式会社 画像処理装置及び画像処理方法
CN100563337C (zh) * 2007-10-24 2009-11-25 上海广电(集团)有限公司中央研究院 基于avs的整数变换量化和整数反变换反量化方法
US20110274162A1 (en) * 2010-05-04 2011-11-10 Minhua Zhou Coding Unit Quantization Parameters in Video Coding
KR20110071231A (ko) * 2009-12-21 2011-06-29 엠텍비젼 주식회사 부호화 방법, 복호화 방법 및 장치
US8588297B2 (en) * 2009-12-23 2013-11-19 Oracle America, Inc. Quantization parameter prediction
SG188255A1 (en) * 2010-09-30 2013-04-30 Panasonic Corp Image decoding method, image coding method, image decoding apparatus, image coding apparatus, program, and integrated circuit
US20120114034A1 (en) 2010-11-08 2012-05-10 Mediatek Inc. Method and Apparatus of Delta Quantization Parameter Processing for High Efficiency Video Coding
US8582646B2 (en) * 2011-01-14 2013-11-12 Sony Corporation Methods for delta-QP signaling for decoder parallelization in HEVC
US9832460B2 (en) 2011-03-09 2017-11-28 Canon Kabushiki Kaisha Image coding apparatus, method for coding image, program therefor, image decoding apparatus, method for decoding image, and program therefor
US9854275B2 (en) 2011-06-25 2017-12-26 Qualcomm Incorporated Quantization in video coding
US11184623B2 (en) * 2011-09-26 2021-11-23 Texas Instruments Incorporated Method and system for lossless coding mode in video coding
US20130083845A1 (en) * 2011-09-30 2013-04-04 Research In Motion Limited Methods and devices for data compression using a non-uniform reconstruction space
EP2774360B1 (en) * 2011-11-04 2017-08-02 Huawei Technologies Co., Ltd. Differential pulse code modulation intra prediction for high efficiency video coding

Also Published As

Publication number Publication date
TW201404166A (zh) 2014-01-16
US9521410B2 (en) 2016-12-13
AU2013251390B2 (en) 2017-03-16
EP2842319B1 (en) 2021-03-31
HUE054119T2 (hu) 2021-08-30
PH12014502365A1 (en) 2015-01-12
HK1201110A1 (en) 2015-08-21
KR20150016263A (ko) 2015-02-11
US20130287103A1 (en) 2013-10-31
JP6174123B2 (ja) 2017-08-02
AR092825A1 (es) 2015-05-06
CA2871139A1 (en) 2013-10-31
BR112014026750A2 (pt) 2017-06-27
SG11201406585SA (en) 2014-11-27
RU2014147481A (ru) 2016-06-20
EP2842319A1 (en) 2015-03-04
CA2871139C (en) 2019-03-05
UA114721C2 (uk) 2017-07-25
RU2645291C2 (ru) 2018-02-19
WO2013163526A1 (en) 2013-10-31
KR101837628B1 (ko) 2018-03-12
AU2013251390A1 (en) 2014-11-13
JP2015518353A (ja) 2015-06-25
TWI543622B (zh) 2016-07-21
MY166922A (en) 2018-07-24
BR112014026750B1 (pt) 2023-02-23
CN104255035B (zh) 2018-01-12
CN104255035A (zh) 2014-12-31
IL235249A (en) 2017-07-31
DK2842319T3 (da) 2021-04-26
SG10201608824QA (en) 2016-12-29
IN2014MN02044A (es) 2015-08-14
PH12014502365B1 (en) 2015-01-12

Similar Documents

Publication Publication Date Title
ES2864623T3 (es) Codificación de parámetros de cuantificación (QP) en codificación de video
US9699472B2 (en) Restriction of prediction units in B slices to uni-directional inter prediction
ES2963135T3 (es) Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo
ES2715838T3 (es) Matrices de cuantización de señalización para la codificación de vídeo
KR101617107B1 (ko) 크로마 컴포넌트에 대한 적응적 루프 필터링
EP2622861B1 (en) Entropy coding coefficients using a joint context model
ES2908241T3 (es) Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable
ES2698552T3 (es) Reducción del número de contextos para codificación aritmética binaria adaptativa al contexto
EP2952000B1 (en) Unification of signaling lossless coding mode and pulse code modulation (pcm) mode in video coding
KR20150036169A (ko) 타일들 및 파면 병렬 프로세싱
KR20140130466A (ko) B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한
KR20140030326A (ko) 비디오 코딩을 위한 다수 구역 스캐닝 순서
WO2013116043A1 (en) Implicit derivation of parallel motion estimation range size
RU2575398C2 (ru) Сокращение количества контекстов для контекстно-адаптивного бинарного арифметического кодирования
RU2574280C2 (ru) Выбор единых кандидатов режима слияния и адаптивного режима предсказания вектора движения