ES2952775T3 - Indicación de uso de un procesamiento paralelo de frente de onda en una codificación de vídeo - Google Patents

Indicación de uso de un procesamiento paralelo de frente de onda en una codificación de vídeo Download PDF

Info

Publication number
ES2952775T3
ES2952775T3 ES12809552T ES12809552T ES2952775T3 ES 2952775 T3 ES2952775 T3 ES 2952775T3 ES 12809552 T ES12809552 T ES 12809552T ES 12809552 T ES12809552 T ES 12809552T ES 2952775 T3 ES2952775 T3 ES 2952775T3
Authority
ES
Spain
Prior art keywords
image
tile
syntax element
ctb
slice
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
ES12809552T
Other languages
English (en)
Inventor
Ye-Kui Wang
Muhammed Zeyd Coban
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 ES2952775T3 publication Critical patent/ES2952775T3/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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit

Abstract

Un codificador de vídeo genera un flujo de bits que incluye un elemento de sintaxis que indica si una imagen está codificada según un primer modo de codificación o un segundo modo de codificación. En el primer modo de codificación, la imagen se codifica completamente mediante procesamiento paralelo de frente de onda (WPP). En el segundo modo de codificación, cada mosaico de la imagen se codifica sin utilizar WPP y la imagen puede tener uno o más mosaicos. Un decodificador de vídeo puede analizar el elemento de sintaxis del flujo de bits. En respuesta a determinar que el elemento de sintaxis tiene un valor particular, el decodificador de vídeo decodifica la imagen completamente usando WPP. En respuesta a determinar que el elemento de sintaxis no tiene el valor particular, el decodificador de vídeo decodifica cada mosaico de la imagen sin utilizar WPP. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Indicación de uso de un procesamiento paralelo de frente de onda en una codificación de vídeo
Campo técnico
Esta divulgación se refiere a la codificación de vídeo (es decir, codificación y/o descodificación de datos de vídeo).
Antecedentes
Las capacidades de vídeo digital pueden incorporarse en una amplia gama de dispositivos, que incluyen televisiones digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de sobremesa, ordenadores de tipo tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos celulares o por satélite, los así denominados "teléfonos inteligentes", dispositivos de teleconferencia de vídeo, dispositivos de transmisión por secuencias de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo y extensiones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital de manera más eficiente implementando tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan una predicción espacial (intra imagen) y/o temporal (inter imagen) para reducir o retirar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un corte de vídeo (es decir, un fotograma de vídeo o una porción de un fotograma de vídeo) puede subdividirse en bloques de vídeo, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un corte intra codificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un corte inter codificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse fotogramas y las imágenes de referencia pueden denominarse fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxel entre el bloque original a codificar y el bloque predictivo. Un bloque inter codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forma el bloque predictivo, e indicando los datos residuales la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra codificado se codifica de acuerdo con un modo de intra codificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio de los píxeles a un dominio de transformada, dando como resultando coeficientes residuales, que pueden cuantificarse a continuación. Los coeficientes cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes, y puede aplicarse codificación por entropía para conseguir incluso más compresión.
En el documento JCTVC-F063 "Wavefront Parallel Processing with Tiles" de C. W. Hsu y col., Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11,6a reunión: 14-22 de julio de 2011, se divulga una contribución para ampliar el concepto de procesamiento paralelo de frente de onda (WPP) y aplicar el mismo a teselas para un procesamiento paralelo. En el mismo se notifica que el WPP propuesto con teselas fue entre un 0,5 % y un 1,2 % mejor que teselas y WPP cuando se usaron de dos a cuatro subprocesos paralelos, en términos de tasas de BD. Además, el número de comprobaciones de causalidad del WPP propuesto con teselas fue menor que el 16 %, el 22 % y el 33 % del WPP para la clase A (2560 x 1600), la clase B (1920 x 1080) y la clase E (1280 x 720), respectivamente.
Sumario
En general, esta divulgación describe técnicas para la codificación de vídeo en las que no se permiten combinaciones de teselas y procesamiento paralelo de frente de onda (WPP) dentro de una única imagen. Más específicamente, un codificador de vídeo genera un flujo de bits que incluye un elemento de sintaxis que indica si una imagen se codifica de acuerdo con o bien un primer modo de codificación o bien un segundo modo de codificación. En el primer modo de codificación, la imagen se codifica completamente usando WPP. En el segundo modo de codificación, cada tesela de la imagen se codifica sin usar WPP. Un descodificador de vídeo analiza el elemento de sintaxis a partir del flujo de bits y determina si el elemento de sintaxis tiene un valor particular. En respuesta a determinar que el elemento de sintaxis tiene el valor particular, el descodificador de vídeo descodifica la imagen completamente usando WPP. En respuesta a determinar que el elemento de sintaxis no tiene el valor particular, el descodificador de vídeo descodifica cada tesela de la imagen sin usar WPP.
En un aspecto, esta divulgación describe un método para descodificar datos de vídeo de acuerdo con la reivindicación 1. En otro aspecto, esta divulgación describe un método para codificar vídeo de acuerdo con la reivindicación 6.
En otro aspecto, esta divulgación describe un dispositivo de descodificación de vídeo de acuerdo con la reivindicación 12.
En otro aspecto, esta divulgación describe un dispositivo de codificación de vídeo de acuerdo con la reivindicación 14.
Los detalles de uno o más ejemplos de la divulgación se exponen 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, los dibujos y las reivindicaciones.
Breve descripción de los dibujos
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La figura 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 4 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para codificar datos de vídeo en la que no se permiten combinaciones de teselas y procesamiento paralelo de frente de onda (WPP) dentro de una única imagen, de acuerdo con uno o más aspectos de esta divulgación.
La figura 5 es un diagrama de flujo que ilustra una operación de ejemplo de un descodificador de vídeo para descodificar datos de vídeo en la que no se permiten combinaciones de teselas y WPP dentro de una única imagen, de acuerdo con uno o más aspectos de esta divulgación.
La figura 6 es un diagrama de flujo que ilustra otra operación de ejemplo de un descodificador de vídeo para descodificar datos de vídeo en la que no se permiten combinaciones de teselas y WPP dentro de una única imagen, de acuerdo con uno o más aspectos de esta divulgación.
La figura 7 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para codificar datos de vídeo en la que cada fila de bloques de árbol de codificación (CTB) de una imagen está en un subflujo separado, de acuerdo con uno o más aspectos de esta divulgación.
La figura 8 es un diagrama de flujo que ilustra una operación de ejemplo de un descodificador de vídeo para descodificar datos de vídeo en la que cada fila de CTB de una imagen está en un subflujo separado, de acuerdo con uno o más aspectos de esta divulgación.
La figura 9A es un diagrama de flujo que ilustra una primera porción de un proceso de análisis de codificación aritmética binaria adaptativa según contexto (CABAC) de ejemplo para analizar datos de corte, de acuerdo con uno o más aspectos de esta divulgación.
La figura 9B es un diagrama de flujo que ilustra una continuación del proceso de análisis de CABAC de ejemplo de la figura 9A.
La figura 10 es un diagrama conceptual que ilustra un ejemplo de WPP.
La figura 11 es un diagrama conceptual que ilustra un orden de codificación de ejemplo cuando una imagen se subdivide en una pluralidad de teselas.
Descripción detallada
Durante la codificación de vídeo, una imagen puede subdividirse en múltiples teselas, ondas de procesamiento paralelo de frente de onda (WPP) y/o cortes de entropía. Las teselas de una imagen se definen por límites de tesela horizontales y/o verticales que pasan a través de la imagen. Las teselas de una imagen se codifican de acuerdo con un orden de exploración por filas y los bloques de árbol de codificación (CTB) dentro de cada tesela también se codifican de acuerdo con el orden de exploración por filas. En WPP, cada fila de CTB en una imagen es una "onda de WPP". Cuando un codificador de vídeo usa WPP para codificar la imagen, el codificador de vídeo puede empezar a codificar los CTB de una onda de WPP de izquierda a derecha después de que el codificador de vídeo haya codificado dos o más CTB de una onda de WPP inmediatamente superior. Un corte de entropía puede incluir una serie de CTB consecutivos de acuerdo con un orden de exploración por filas. Se prohíbe el uso de información procedente de más allá de límites de corte de entropía para su uso en la selección de contextos de codificación por entropía, pero puede permitirse para otros fines.
En los sistemas de codificación de vídeo existentes, una imagen puede tener cualquier combinación de teselas, ondas de WPP y cortes de entropía. Por ejemplo, una imagen puede subdividirse en una pluralidad de teselas. En este ejemplo, los CTB en algunas de las teselas pueden codificarse de acuerdo con el orden de exploración por filas, mientras que los CTB en otras de las teselas pueden codificarse usando WPP. Permitir que una imagen incluya combinaciones de teselas, ondas de WPP y cortes de entropía puede aumentar innecesariamente la complejidad y los costes de implementación de tales sistemas de codificación de vídeo.
Las técnicas de esta divulgación pueden remediar este problema. Es decir, de acuerdo con las técnicas de esta divulgación, no se permiten combinaciones dentro de una imagen de cualquiera de dos o más teselas, ondas de WPP y cortes de entropía. Por ejemplo, un codificador de vídeo puede generar un flujo de bits que incluye un elemento de sintaxis que indica si una imagen se codifica de acuerdo con o bien un primer modo de codificación o bien un segundo modo de codificación. En el primer modo de codificación, la imagen se codifica completamente usando WPP. En el segundo modo de codificación, la imagen tiene una o más teselas y cada tesela de la imagen se codifica sin usar WPP.
Además, en este ejemplo, un descodificador de vídeo puede analizar, a partir de un flujo de bits que incluye una representación codificada de una imagen, un elemento de sintaxis. En respuesta a determinar que el elemento de sintaxis tiene un valor particular, el descodificador de vídeo puede descodificar la imagen completamente usando WPP. En respuesta a determinar que el elemento de sintaxis no tiene el valor particular, el descodificador de vídeo puede descodificar cada tesela de la imagen sin usar WPP. La imagen puede tener una o más teselas.
Los dibujos adjuntos ilustran ejemplos. Elementos indicados por números de referencia en los dibujos adjuntos corresponden a elementos indicados por números de referencia semejantes en la siguiente descripción. En esta divulgación, elementos que tienen nombres que empiezan con palabras ordinales (por ejemplo, "primero", "segundo", "tercero" y así sucesivamente) no implican necesariamente que los elementos tengan un orden particular. En su lugar, tales palabras ordinales se usan solamente para referirse a diferentes elementos de un mismo tipo o de un tipo similar.
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo 10 de ejemplo que puede utilizar las técnicas de esta divulgación. Como se usa y se describe en el presente documento, la expresión "codificador de vídeo" se refiere genéricamente tanto a codificadores de vídeo como a descodificadores de vídeo. En esta divulgación, la expresión "codificación de vídeo" o el término "codificación" puede referirse genéricamente a codificación de vídeo o a descodificación de vídeo.
Como se muestra en la figura 1, el sistema de codificación de vídeo 10 incluye un dispositivo de origen 12 y un dispositivo de destino 14. El dispositivo de origen 12 genera datos de vídeo codificados. Por consiguiente, el dispositivo de origen 12 puede denominarse dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo de destino 14 puede descodificar los datos de vídeo codificados generados por el dispositivo de origen 12. Por consiguiente, el dispositivo de destino 14 puede denominarse dispositivo de descodificación de vídeo o aparato de descodificación de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 pueden ser ejemplos de dispositivos de codificación de vídeo o aparatos de codificación de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender una amplia gama de dispositivos, que incluye ordenadores de sobremesa, dispositivos informáticos móviles, ordenadores portátiles (por ejemplo, portátiles), ordenadores de tipo tableta, descodificadores de salón, microteléfonos tales como los así denominados teléfonos "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, ordenadores integrados en coches o similares.
El dispositivo de destino 14 puede recibir datos de vídeo codificados desde el dispositivo de origen 12 a través de un canal 16. El canal 16 puede comprender uno o más medios o dispositivos capaces de mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el canal 16 puede comprender uno o más medios de comunicación que habilitan que el dispositivo de origen 12 transmita datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. En este ejemplo, el dispositivo de origen 12 puede modular los datos de vídeo codificados de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y puede transmitir los datos de vídeo modulados al dispositivo de destino 14. Los uno o más medios de comunicación pueden incluir medios de comunicación inalámbricos y/o cableados, tales como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. Los uno o más medios de comunicación pueden formar parte de una red basada en paquetes, tal como una red de área local, una red de área extensa o una red global (por ejemplo, Internet). Los uno o más medios de comunicación pueden incluir encaminadores, conmutadores, estaciones base u otro equipo que facilite la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
En otro ejemplo, el canal 16 puede incluir un medio de almacenamiento que almacena datos de vídeo codificados generados por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder al medio de almacenamiento a través de un acceso de disco o un acceso de tarjeta. El medio de almacenamiento puede incluir una diversidad de medios de almacenamiento de datos a los que se accede localmente, tales como discos Blu-ray, DVD, CD-ROM, memoria flash u otros medios de almacenamiento digital adecuados para almacenar datos de vídeo codificados.
En un ejemplo adicional, el canal 16 puede incluir un servidor de archivos u otro dispositivo de almacenamiento intermedio que almacena vídeo codificado generado por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder a datos de vídeo codificados almacenados en el servidor de archivos u otro dispositivo de almacenamiento intermedio a través de transmisión por secuencias o descarga. El servidor de archivos puede ser un tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir los datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen servidores web (por ejemplo, para un sitio web), servidores de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados a la red (NAS) y unidades de disco locales.
El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de una conexión de datos convencional, tal como una conexión de Internet. Los tipos de ejemplo de conexiones de datos pueden incluir canales inalámbricos (por ejemplo, conexiones Wi-Fi), conexiones cableadas (por ejemplo, DSL, módem de cable, etc.) o combinaciones de ambos que son adecuadas para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el servidor de archivos puede ser una transmisión de tipo transmisión por secuencias, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no se limitan a aplicaciones o ajustes inalámbricos. Las técnicas pueden aplicarse a la codificación de vídeo para soportar una diversidad de aplicaciones multimedia, tales como radiodifusiones de televisión por vía aérea, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo de transmisión por secuencias, por ejemplo, a través de Internet, codificación de datos de vídeo para almacenamiento en un medio de almacenamiento de datos, descodificación de datos de vídeo almacenados en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema de codificación de vídeo 10 puede configurarse para soportar una transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como transmisión por secuencias de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o telefonía de vídeo.
En el ejemplo de la figura 1, el dispositivo de origen 12 incluye un origen de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos ejemplos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. El origen de vídeo 18 puede incluir un dispositivo de captura de vídeo, por ejemplo, una cámara de vídeo, un archivo de vídeo que contiene datos de vídeo capturados previamente, una interfaz de alimentación de vídeo para recibir datos de vídeo de un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de vídeo o una combinación de tales orígenes de datos de vídeo.
El codificador de vídeo 20 puede codificar datos de vídeo a partir del origen de vídeo 18. En algunos ejemplos, el dispositivo de origen 12 transmite directamente los datos de vídeo codificados al dispositivo de destino 14 a través de la interfaz de salida 22. Los datos de vídeo codificados también pueden almacenarse en un medio de almacenamiento o un servidor de archivos para un acceso posterior por el dispositivo de destino 14 para su descodificación y/o reproducción.
En el ejemplo de la figura 1, el dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En algunos ejemplos, la interfaz de entrada 28 incluye un receptor y/o un módem. La interfaz de entrada 28 puede recibir datos de vídeo codificados a través del canal 16. El dispositivo de visualización 32 puede integrarse con o puede ser externo al dispositivo de destino 14. En general, el dispositivo de visualización 32 visualiza datos de vídeo descodificados. El dispositivo de visualización 32 puede comprender una diversidad de dispositivos de visualización, tales como un visualizador de cristal líquido (LCD), un visualizador de plasma, un visualizador de diodos emisores de luz orgánicos (OLED) u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de codificación de vídeo de alta eficiencia (HEVC) actualmente en desarrollo, y pueden ser conformes con un modelo de prueba de HEVC (HM). Un borrador de la norma de HVEC venidera, denominado "Borrador de Trabajo de HEVC 5" o "WD5" se describe en Brass y col., "WDS: Working Draft 5 of High-Efficiency Video Coding', Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e iSo /IEC JTC1/SC29/WG11,7a reunión: Ginebra, Suiza, noviembre de 2011, que, a 10 de octubre de 2012, puede descargarse en: http://phenix.int-evry.fr/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G1103-v3.zip. Otro borrador de la norma de HVEC venidera, denominado "Borrador de Trabajo de HEVC 9" se describe en Bross y col., "High Efficiency Video Coding (HEVC) text specification draft 9", Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 11a reunión: Shanghái, China, octubre de 2012, que, a 7 de noviembre de 2012, puede descargarse en: http://phenix.intevry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v8.zip.
Como alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas industriales o de propiedad exclusiva, incluyendo ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus extensiones Codificación de Vídeo Ajustable a Escala (SVC) y Codificación de Vídeo de Múltiples Vistas (MVC). Sin embargo, las técnicas de esta divulgación no se limitan a ninguna norma o técnica de codificación particular.
De nuevo, la figura 1 es simplemente un ejemplo y las técnicas de esta divulgación pueden ser aplicables a ajustes de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no incluyen necesariamente ninguna comunicación de datos entre los dispositivos de codificación y descodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten por secuencias a través de una red o similares. Un dispositivo de codificación puede codificar y almacenar datos en una memoria y/o un dispositivo de descodificación puede recuperar y descodificar datos desde una memoria. En muchos ejemplos, la codificación y descodificación se realiza mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en una memoria y/o recuperan y descodifican datos desde una memoria.
El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse cada uno como cualquiera de una diversidad de circuitos adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento legible por ordenador no transitorio adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Puede considerarse que cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) son uno o más procesadores. Cada uno del codificador de vídeo 20 y del descodificador de vídeo 30 puede incluirse en uno o más codificadores o descodificadores, uno cualquiera de los cuales puede integrarse como parte de un codificador/descodificador combinado (CÓDEC) en un dispositivo respectivo.
Esta divulgación puede referirse, en general, al codificador de vídeo 20 que "señaliza" cierta información a otro dispositivo, tal como el descodificador de vídeo 30. El término "señalización" puede referirse generalmente a la comunicación de elementos de sintaxis y/u otros datos que representan datos de vídeo codificados. Tal comunicación puede tener lugar en tiempo real o casi real. Como alternativa, tal comunicación puede tener lugar durante un lapso de tiempo, tal como podría tener lugar cuando se almacenan elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits en el momento de la codificación, que pueden ser recuperados entonces por un dispositivo de descodificación en cualquier momento después de almacenarse en este medio.
Como se ha mencionado brevemente con anterioridad, el codificador de vídeo 20 codifica datos de vídeo. Los datos de vídeo pueden comprender una o más imágenes. Cada una de las imágenes puede ser una imagen fija. En algunos casos, una imagen puede denominarse "fotograma" de vídeo. El codificador de vídeo 20 puede generar un flujo de bits que incluye una secuencia de bits que forman una representación codificada de los datos de vídeo. El flujo de bits puede incluir imágenes codificadas y datos asociados. Una imagen codificada es una representación codificada de una imagen. Los datos asociados pueden incluir conjuntos de parámetros de secuencia (SPS), conjuntos de parámetros de imagen (PPS) y otras estructuras de sintaxis. Un SPS puede contener parámetros aplicables a cero o más secuencias de imágenes. Un PPS puede contener parámetros aplicables a cero o más imágenes.
Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede subdividir la imagen en una pluralidad de bloques de árbol de codificación (CTB). En algunos casos, un CTB puede denominarse "árbol de codificación", "unidad de codificación más grande" (LCU) o "bloque de árbol de codificación". Los CTB de HEVC pueden ser análogos en líneas generales a los macrobloques de normas previas, tales como H.264/AVC. Sin embargo, un CTB no está necesariamente limitado a un tamaño particular y puede incluir una o más unidades de codificación (CU).
Cada uno de los CTB puede asociarse con un bloque de píxeles diferente de igual tamaño dentro de la imagen. Cada píxel puede comprender una muestra de luminancia (luma) y dos muestras de crominancia (croma). Por lo tanto, cada CTB puede asociarse con un bloque de muestras de luminancia y dos bloques de muestras de crominancia. Para facilitar la explicación, esta divulgación puede referirse a una matriz bidimensional de píxeles como bloque de píxeles y puede referirse a una matriz bidimensional de muestras como bloque de muestras. El codificador de vídeo 20 puede usar una subdivisión de árbol cuádruple para subdividir el bloque de píxeles asociado con un CTB en bloques de píxeles asociados con las CU, de ahí el nombre "bloques de árbol de codificación".
Los CTB de una imagen pueden agruparse en uno o más cortes. En algunos ejemplos, cada uno de los cortes incluye un número entero de CTB. Como parte de la codificación de una imagen, el codificador de vídeo 20 puede generar representaciones codificadas de cada corte de la imagen (es decir, cortes codificados). Para generar un corte codificado, el codificador de vídeo 20 puede codificar cada CTB del corte para generar representaciones codificadas de cada uno de los CTB del corte (es decir, CTB codificados).
Para generar un CTB codificado, el codificador de vídeo 20 puede realizar de forma recursiva una subdivisión de árbol cuádruple sobre el bloque de píxeles asociado con un CTB para dividir el bloque de píxeles en bloques de píxeles progresivamente más pequeños. Cada uno de los bloques de píxeles más pequeños puede asociarse con una CU. Una CU subdividida puede ser una CU cuyo bloque de píxeles se subdivide en bloques de píxeles asociados con otras CU. Una CU no subdividida puede ser una CU cuyo bloque de píxeles no se subdivide en bloques de píxeles asociados con otras CU.
El codificador de vídeo 20 puede generar una o más unidades de predicción (PU) para cada CU no subdividida. Cada una de las PU de una CU puede asociarse con un bloque de píxeles diferente dentro del bloque de píxeles de la CU. El codificador de vídeo 20 puede generar bloques de píxeles predictivos para cada PU de la CU. Los bloques de píxeles predictivos de una PU pueden ser un bloque de píxeles.
El codificador de vídeo 20 puede usar una intra predicción o inter predicción para generar el bloque de píxeles predictivo para una PU. Si el codificador de vídeo 20 usa una intra predicción para generar el bloque de píxeles predictivo de una PU, el codificador de vídeo 20 puede generar el bloque de píxeles predictivo de la PU basándose en píxeles descodificados de la imagen asociada con la PU. Si el codificador de vídeo 20 usa una inter predicción para generar el bloque de píxeles predictivo de la PU, el codificador de vídeo 20 puede generar el bloque de píxeles predictivo de la PU basándose en píxeles descodificados de una o más imágenes que no sean la imagen asociada con la PU.
El codificador de vídeo 20 puede generar un bloque de píxeles residual para una CU basándose en bloques de píxeles predictivos de las PU de la CU. El bloque de píxeles residual para la CU puede indicar diferencias entre las muestras en los bloques de píxeles predictivos para las PU de la CU y muestras correspondientes en el bloque de píxeles original de la CU.
Además, como parte de la codificación de una CU no subdividida, el codificador de vídeo 20 puede realizar una subdivisión en árbol cuádruple recursiva sobre el bloque de píxeles residual de la CU para dividir el bloque de píxeles residual de la CU en uno o más bloques de píxeles residuales más pequeños asociados con las unidades de transformada (TU) de la CU. Debido a que cada uno de los píxeles en los bloques de píxeles asociados con las TU incluye una muestra de luma y dos muestras de croma, cada una de las TU puede asociarse con un bloque de muestras residuales de muestras de luma y dos bloques de muestras residuales de muestras de croma.
El codificador de vídeo 20 puede aplicar una o más transformadas a los bloques de muestras residuales asociados con las TU para generar bloques de coeficientes (es decir, bloques de los coeficientes). El codificador de vídeo 20 puede realizar un proceso de cuantificación sobre cada uno de los bloques de coeficientes. La cuantificación generalmente se refiere a un proceso en el que se cuantifican coeficientes para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando una compresión adicional.
El codificador de vídeo 20 puede generar conjuntos de elementos de sintaxis que representan los coeficientes en los bloques de coeficientes cuantificados. El codificador de vídeo 20 puede aplicar operaciones de codificación por entropía, tales como operaciones de codificación aritmética binaria adaptativa según contexto (CABAC), a al menos algunos de estos elementos de sintaxis. Como parte de la ejecución de una operación de codificación por entropía, el codificador de vídeo 20 puede seleccionar un contexto de codificación. En el caso de CABAC, el contexto de codificación puede indicar probabilidades de valores binarios con valor 0 y con valor 1.
El flujo de bits generado por el codificador de vídeo 20 puede incluir una serie de unidades de capa de abstracción de red (NAL). Cada una de las unidades de NAL puede ser una estructura de sintaxis que contiene una indicación de un tipo de datos en la unidad de NAL y bytes que contienen los datos. Por ejemplo, una unidad de NAL puede contener datos que representan un SPS, un p Ps , un corte codificado, información de potenciación complementaria (SEI), un delimitador de unidad de acceso, datos de relleno u otro tipo de datos. Las unidades de NAL de corte codificado son unidades de NAL que incluyen cortes codificados.
El descodificador de vídeo 30 puede recibir un flujo de bits. El flujo de bits puede incluir una representación codificada de datos de vídeo codificados por el codificador de vídeo 20. El descodificador de vídeo 30 puede analizar el flujo de bits para extraer elementos de sintaxis a partir del flujo de bits. Como parte de la extracción de algunos elementos de sintaxis a partir del flujo de bits, el descodificador de vídeo 30 puede descodificar por entropía (por ejemplo, descodificar por CABAC, descodificar por Golomb exponencial, etc.) datos en el flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo basándose en los elementos de sintaxis extraídos del flujo de bits.
El proceso para reconstruir los datos de vídeo basándose en los elementos de sintaxis puede ser generalmente recíproco al proceso realizado por el codificador de vídeo 20 para generar los elementos de sintaxis. Por ejemplo, el descodificador de vídeo 30 puede generar, basándose en elementos de sintaxis asociados con una CU, bloques de píxeles predictivos para las PU de la CU. Además, el descodificador de vídeo 30 puede cuantificar de forma inversa los bloques de coeficientes asociados con las TU de la CU. El descodificador de vídeo 30 puede realizar transformadas inversas sobre los bloques de coeficientes para reconstruir bloques de píxeles residuales asociados con las TU de la CU. El descodificador de vídeo 30 puede reconstruir el bloque de píxeles de una CU basándose en los bloques de píxeles predictivos y los bloques de píxeles residuales.
En algunos ejemplos, el codificador de vídeo 20 puede dividir una imagen en una pluralidad de cortes de entropía. Esta divulgación puede usar la expresión "corte ordinario" para diferenciar los cortes de los cortes de entropía. Un corte de entropía puede incluir un subconjunto de las CU de un corte ordinario. En algunos ejemplos, el codificador de vídeo 20 puede subdividir las CU entre cortes de entropía de tal modo que ninguno de los cortes de entropía incluye más valores binarios (por ejemplo, bits codificados por entropía) que un límite superior. Cada corte de entropía puede incluirse en una unidad de NAL separada.
En esta divulgación, una predicción dentro de la imagen puede referirse al uso de información asociada con una primera unidad (por ejemplo, CTB, CU, PU, etc.) de una imagen para codificar una segunda unidad de la misma imagen. Se permite una predicción dentro de la imagen a través de límites de corte de entropía, excepto para fines de codificación por entropía. Por ejemplo, si un codificador de vídeo (por ejemplo, el codificador de vídeo 20 o el descodificador de vídeo 30) está realizando una intra predicción sobre una PU particular, el codificador de vídeo puede usar muestras desde una PU vecina, incluso si la PU vecina está en un corte de entropía diferente del de la PU particular. En este ejemplo, el codificador de vídeo puede no ser capaz de usar muestras desde la PU vecina si la PU vecina está en un corte diferente del de la PU particular.
Sin embargo, cuando un codificador de vídeo está realizando una codificación por entropía sobre datos asociados con una PU particular, solo se permite que el codificador de vídeo seleccione contextos de codificación basándose en información asociada con una PU vecina si la PU particular y la PU vecina están en el mismo corte de entropía. Debido a esta restricción, el codificador de vídeo puede ser capaz de realizar operaciones de codificación por entropía (es decir, codificación o descodificación por entropía) sobre múltiples cortes de entropía de un corte en paralelo. Por lo tanto, el descodificador de vídeo 30 puede ser capaz de analizar, en paralelo, los elementos de sintaxis de múltiples cortes de entropía. Sin embargo, el descodificador de vídeo 30 no es capaz de reconstruir los bloques de píxeles de múltiples cortes de entropía de un corte en paralelo.
Como se ha indicado anteriormente, una unidad de NAL de corte codificado puede contener un corte codificado. Este corte puede ser o bien un corte de entropía o bien un corte ordinario. El encabezamiento de corte en la unidad de NAL de corte codificado puede incluir un elemento de sintaxis (por ejemplo, entropy_slice_flag) que indica si el corte es un corte de entropía o un corte ordinario. Por ejemplo, si el elemento de sintaxis es igual a 1, el corte en la unidad de NAL de corte codificado puede ser un corte de entropía.
Cada corte codificado puede incluir un encabezamiento de corte y datos de corte. Los encabezamientos de corte de los cortes de entropía pueden ser diferentes de los encabezamientos de corte de los cortes ordinarios. Por ejemplo, los elementos de sintaxis en los encabezamientos de corte de los cortes de entropía pueden incluir un subconjunto de los elementos de sintaxis en los encabezamientos de corte de los cortes ordinarios. Debido a que los encabezamientos de corte de los cortes de entropía incluyen menos elementos de sintaxis que los encabezamientos de corte de los cortes ordinarios, los cortes de entropía también pueden denominarse cortes livianos, cortes con encabezamientos de corte cortos o cortes cortos. Un corte de entropía puede heredar, de un encabezamiento de corte de un corte ordinario que precede al corte de entropía en el orden de descodificación, los elementos de sintaxis omitidos del encabezamiento de corte del corte de entropía.
Convencionalmente, los codificadores de vídeo generan unidades de NAL separadas para cada corte de entropía. A menudo, unidades de NAL individuales se transportan en una red en paquetes separados. En otras palabras, puede haber una unidad de NAL por paquete durante la transmisión de las unidades de nAl a través de una red. Esto puede ser problemático para las unidades de NAL que contienen cortes de entropía. Si un paquete que contiene una unidad de NAL que incluye un corte ordinario se pierde durante la transmisión, el descodificador de vídeo 30 puede no ser capaz de usar cortes de entropía que heredan elementos de sintaxis a partir del encabezamiento de corte del corte ordinario. Además, si uno o más CTB de un primer corte de entropía se basan en uno o más CTB de un segundo corte de entropía para una predicción dentro de la imagen y un paquete que contiene una unidad de NAL que incluye el segundo corte de entropía se pierde durante la transmisión, el codificador de vídeo 30 puede no ser capaz de descodificar los CTB del primer corte de entropía.
En algunos ejemplos, un codificador de vídeo puede codificar al menos porciones de una imagen usando un procesamiento paralelo de frente de onda (WPP). La figura 9, descrita con detalle a continuación, es un diagrama conceptual que ilustra un ejemplo de WPP. Si el codificador de vídeo codifica la imagen usando WPP, el codificador de vídeo puede dividir los CTB de la imagen en una pluralidad de "ondas de WPP". Cada una de las ondas de WPP puede corresponder a una fila diferente de CTB en la imagen. Si el codificador de vídeo codifica la imagen usando WPP, el codificador de vídeo puede empezar a codificar una fila de arriba de los CTB. Una vez que el codificador de vídeo ha codificado dos o más CTB de la fila de arriba, el codificador de vídeo puede empezar a codificar una segunda fila desde arriba en paralelo con la codificación de la fila de arriba de los CTB. Una vez que el codificador de vídeo ha codificado dos o más CTB de la segunda fila desde arriba, el codificador de vídeo puede empezar a codificar una tercera fila desde arriba en paralelo con la codificación de las filas superiores de los c Tb . Este patrón puede continuar bajando por las filas de CTB en la imagen.
Si el codificador de vídeo está usando WPP, el codificador de vídeo puede usar información asociada con las CU espacialmente vecinas fuera de un CTB actual para realizar una predicción dentro de la imagen en una CU particular sobre el CTB actual, siempre que las CU espacialmente vecinas estén a la izquierda, arriba a la izquierda, arriba o arriba a la derecha del CTB actual. Si el CTB actual es el CTB más a la izquierda en una fila que no sea la fila de más arriba, el codificador de vídeo puede usar información asociada con el segundo CTB de la fila inmediatamente superior para seleccionar un contexto para codificar por CABAC uno o más elementos de sintaxis del CTB actual. De lo contrario, si el CTB actual no es el CTB más a la izquierda en la fila, el codificador de vídeo puede usar información asociada con un CTB a la izquierda del CTB actual para seleccionar un contexto para codificar por CABAC uno o más elementos de sintaxis del CTB actual. De esta forma, el codificador de vídeo puede inicializar los estados de CABAC de una fila basándose en los estados de CABAC de la fila inmediatamente superior después de codificar dos o más CTB de la fila inmediatamente superior.
Por lo tanto, en respuesta a determinar que un primer CTB está separado de un límite izquierdo de la imagen por un único CTB, un codificador de vídeo puede almacenar variables de contexto asociadas con el primer CTB. El codificador de vídeo puede codificar por entropía (por ejemplo, codificar por entropía o descodificar por entropía), basándose al menos en parte en las variables de contexto asociadas con el primer CTB, uno o más elementos de sintaxis de un segundo CTB, siendo el segundo CTB adyacente al límite izquierdo de la imagen y estando una fila de CTB más abajo que el primer CTB.
Los CTB codificados de un corte se disponen normalmente en una unidad de NAL de corte codificado de acuerdo con el orden de exploración por filas, incluso cuando se usa WPP. Esto puede complicar el diseño de los codificadores de vídeo que implementan WPP. Cuando el número de ondas de WPP es mayor que uno y menor que el número de filas de CTB de la imagen, el orden de flujo de bits (es decir, el orden de descodificación si la imagen codificada es procesada por un núcleo de descodificador, no descodificada en paralelo) de los bits codificados para los CTB se cambia en comparación con cuando no se aplica WPP como sigue. Puede ser necesario un CTB codificado más adelante en el orden de descodificación/flujo de bits para una predicción dentro de la imagen por otro CTB codificado anteriormente en el orden de descodificación. Esto puede romper la causalidad de flujo de bits en la que ningún dato anterior depende de datos que llegan más tarde en el orden de descodificación/flujo de bits. La causalidad de flujo de bits ha sido un principio seguido generalmente en los diseños de codificación de vídeo, incluyendo normas de codificación de vídeo. Aunque el proceso de descodificación funciona, el proceso de descodificación puede ser más complejo puesto que un puntero de flujo de bits que indica una posición actual en el flujo de bits puede moverse hacia adelante y hacia atrás dentro de la porción del flujo de bits asociada con una unidad de NAL de corte codificado.
En algunos ejemplos, el codificador de vídeo 20 puede dividir una imagen en una o más teselas. Las teselas pueden comprender conjuntos no superpuestos de los CTB de la imagen. El codificador de vídeo 20 puede dividir la imagen en teselas definiendo dos o más límites de tesela verticales y dos o más límites de tesela horizontales. Puede considerarse que cada lado vertical de la imagen es un límite de tesela vertical. Cada lado horizontal de la imagen actual puede ser un límite de tesela horizontal. Por ejemplo, si el codificador de vídeo 20 define cuatro límites de tesela verticales y tres límites de tesela horizontales para la imagen, la imagen actual se divide en seis teselas.
Un codificador de vídeo, tal como un codificador de vídeo 20 o un descodificador de vídeo 30, puede codificar los CTB de teselas de una imagen de acuerdo con un orden de exploración por teselas. Para codificar los CTB de acuerdo con el orden de exploración por teselas, el codificador de vídeo puede codificar las teselas de una imagen de acuerdo con un orden de exploración por filas. Es decir, el codificador de vídeo puede codificar cada tesela en una fila de teselas en un orden de izquierda a derecha, empezando desde una fila de arriba de teselas y entonces avanzando hacia abajo por la imagen. Además, el codificador de vídeo puede codificar cada CTB dentro de una tesela de acuerdo con un orden de exploración por filas. De esta manera, el codificador de vídeo puede codificar cada CTB de una tesela dada de la imagen antes de codificar cualquier CTB de otra tesela de la imagen. En otras palabras, el orden de exploración por teselas recorre los CTB en un orden de exploración por filas de CTB dentro de una tesela y recorre las teselas en un orden de exploración por filas de teselas dentro de una imagen. En consecuencia, el orden en el que el codificador de vídeo codifica los CTB de la imagen puede ser diferente si la imagen se subdivide en múltiples teselas que si la imagen no se subdivide en múltiples teselas. La figura 10, descrita a continuación, es un diagrama conceptual que ilustra un orden de exploración por teselas de ejemplo cuando una imagen se subdivide en una pluralidad de teselas.
En algunos casos, un codificador de vídeo puede realizar una predicción dentro de la imagen a través de límites de tesela, pero no a través de límites de corte. En otros casos, se prohíbe una predicción dentro de la imagen a través de límites de tesela y límites de corte. En los casos en los que se prohíbe una predicción dentro de la imagen a través de límites de tesela y límites de corte, un codificador de vídeo puede ser capaz de codificar, en paralelo, múltiples teselas.
En algunos ejemplos, una predicción dentro de la imagen a través de límites de tesela es controlada por una bandera (por ejemplo, "tile_boundary_independencejdc"). Si la bandera es igual a 1, no se permite una predicción dentro de la imagen a través de límites de tesela dentro de una imagen. De lo contrario, se permite una predicción dentro de la imagen a través de límites de tesela, excepto para los límites de tesela que también son límites de imagen o límites de corte. Si se permite una predicción dentro de la imagen a través de límites de tesela, la funcionalidad de las teselas puede ser cambiar el orden de exploración de los CTB en comparación con el caso en el que la imagen no tiene ninguna tesela o, de forma equivalente, solo tiene una tesela. Si no se permite una predicción dentro de la imagen a través de límites de tesela, aparte de cambiar el orden de exploración de los CTB, las teselas también pueden proporcionar una subdivisión independiente que puede usarse para la codificación (codificación y/o descodificación) paralela de las teselas. Por lo tanto, si la imagen se subdivide en al menos una primera tesela y una segunda tesela, cuando el descodificador de vídeo 30 descodifica las teselas sin usar WPP, el descodificador de vídeo 30 puede descodificar, en paralelo, un CTB de la primera tesela y un CTB de la segunda tesela.
En algunos casos, una imagen puede subdividirse en una combinación de teselas, ondas de WPP y cortes de entropía. Por ejemplo, una imagen puede subdividirse en una tesela y un conjunto de ondas de WPP. En otro ejemplo, una imagen puede subdividirse en dos teselas y un corte de entropía. Permitir combinaciones de teselas, ondas de WPP y cortes de entropía dentro de una imagen puede ser problemático debido a que permitir tales combinaciones puede aumentar la complejidad y los costes de los codificadores de vídeo y/o descodificadores de vídeo.
Las técnicas de esta divulgación pueden resolver los problemas descritos anteriormente. De acuerdo con las técnicas de esta divulgación, una imagen puede no subdividirse en ninguna combinación de teselas, ondas de WPP y cortes de entropía. En otras palabras, una imagen puede subdividirse en una o más teselas, la imagen puede subdividirse en ondas de WPP o la imagen puede subdividirse en uno o más cortes de entropía. Sin embargo, una imagen puede no subdividirse en ninguna de las siguientes combinaciones: (a) teselas, ondas de WPP y cortes de entropía, (b) teselas y ondas de WPP, (c) teselas y cortes de entropía, o (d) ondas de WPP y cortes de entropía.
Para lograr esto, el codificador de vídeo 20 puede incluir, en un flujo de bits, un elemento de sintaxis que indica que una imagen se codifica de acuerdo con o bien un primer modo de codificación o bien un segundo modo de codificación. En el primer modo de codificación, la imagen se codifica completamente usando WPP. Es decir, cada fila de CTB en la imagen puede codificarse como una onda de WPP. En el segundo modo de codificación, la imagen puede tener una o más teselas. Además, en el segundo modo de codificación, cada tesela de la imagen puede codificarse sin usar WPP. Por ejemplo, en el segundo modo de codificación, el codificador de vídeo 20 puede, para cada tesela de una imagen, codificar los CTB dentro de la tesela secuencialmente en un orden de izquierda a derecha a lo largo de las filas de los CTB y hacia abajo por las filas de los CTB de la tesela. Para facilitar la explicación, este elemento de sintaxis puede denominarse, en el presente documento, elemento de sintaxis de modo de codificación.
El descodificador de vídeo 30 puede analizar, a partir de un flujo de bits que incluye una representación codificada de una imagen en los datos de vídeo, un elemento de sintaxis. En respuesta a determinar que el elemento de sintaxis tiene un valor particular, el descodificador de vídeo 30 puede descodificar la imagen completamente usando WPP. En respuesta a determinar que el elemento de sintaxis no tiene el valor particular, el descodificador de vídeo 30 puede descodificar cada tesela de la imagen sin usar WPP, en donde la imagen tiene una o más teselas.
Diversas porciones del flujo de bits pueden incluir el elemento de sintaxis de modo de codificación. Por ejemplo, el codificador de vídeo 20 puede generar un SPS que incluye el elemento de sintaxis de modo de codificación. En este ejemplo, el descodificador de vídeo 30 puede analizar, a partir del flujo de bits, un SPS que incluye el elemento de sintaxis de modo de codificación. En otro ejemplo, el codificador de vídeo 20 puede generar un PPS que incluye el elemento de sintaxis de modo de codificación. En este ejemplo, el descodificador de vídeo 30 puede analizar, a partir del flujo de bits, un PPS que incluye el elemento de sintaxis de modo de codificación. Además, si una imagen se codifica de acuerdo con el segundo modo de codificación, el flujo de bits puede incluir uno o más elementos de sintaxis que indican si los cortes de entropía están habilitados para la imagen. Diversas porciones del flujo de bits pueden incluir los uno o más elementos de sintaxis que indican si los cortes de entropía están habilitados para una imagen. Por ejemplo, un SPS puede incluir uno o más elementos de sintaxis que indican que los cortes de entropía están habilitados para imágenes asociadas con el SPS. En otro ejemplo, un PPS puede incluir uno o más elementos de sintaxis que indican que los cortes de entropía están habilitados para imágenes asociadas con el PPS. Por ejemplo, en este ejemplo, un PPS puede incluir un elemento de sintaxis entropy_slice_enabled_flag que indica si los cortes codificados que se refieren al PPS pueden consistir, o no, en cortes de entropía.
Si la imagen incluye uno o más cortes de entropía, cada corte de entropía asociado con un corte de la imagen puede incluirse en una única unidad de NAL de corte codificado, en lugar de incluirse en unidades de NAL separadas. Por lo tanto, un corte de entropía puede definirse como un subconjunto de un corte, en donde el proceso de descodificación por entropía de un corte de entropía es independiente de otros cortes de entropía en el mismo corte.
Como se ha mencionado brevemente con anterioridad, el flujo de bits puede incluir unidades de NAL de corte codificado que incluyen cortes codificados. Un corte codificado puede comprender un encabezamiento de corte y datos de corte. Los datos de corte pueden incluir uno o más subflujos. De acuerdo con las técnicas de esta divulgación, si la imagen se codifica en el primer modo de codificación (es decir, la imagen se codifica completamente usando WPP), cada fila de CTB del corte es representada por uno solo de los subflujos. Si la imagen se codifica en el segundo modo de codificación (es decir, cada tesela de la imagen se codifica sin usar WPP), cada tesela de la imagen que tiene uno o más CTB en el corte es representada por uno solo de los subflujos.
Además, de acuerdo con las técnicas de esta divulgación, un encabezamiento de corte de un corte codificado puede incluir un conjunto de elementos de sintaxis que indican puntos de entrada de teselas, ondas de WPP o cortes de entropía dentro de los datos de corte de la unidad de NAL de corte codificado. El punto de entrada de un subflujo puede ser un primer bit del subflujo. Además, las teselas, las ondas de WPP o los cortes de entropía dentro de los datos de corte de una unidad de NAL de corte codificado pueden incluir bits de relleno que aseguran que las teselas, las ondas de WPP o los cortes de entropía se alinean en bytes.
La figura 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que está configurado para implementar las técnicas de esta divulgación. La figura 2 se proporciona para fines de explicación y no se debería considerar limitante de las técnicas según se ejemplifican y se describen en líneas generales en esta divulgación. Para fines de explicación, esta divulgación describe el codificador de vídeo 20 en el contexto de la codificación de HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros métodos o normas de codificación.
En el ejemplo de la figura 2, el codificador de vídeo 20 incluye una unidad de procesamiento de predicción 100, una unidad de generación residual 102, una unidad de procesamiento de transformada 104, una unidad de cuantificación 106, una unidad de cuantificación inversa 108, una unidad de procesamiento de transformada inversa 110, una unidad de reconstrucción 112, una unidad de filtro 113, una memoria intermedia de imágenes descodificadas 114 y una unidad de codificación por entropía 116. La unidad de procesamiento de predicción 100 incluye una unidad de procesamiento de inter predicción 121 y una unidad de procesamiento de intra predicción 126. La unidad de procesamiento de inter predicción 121 incluye una unidad de estimación de movimiento 122 y una unidad de compensación de movimiento 124. En otros ejemplos, el codificador de vídeo 20 puede incluir más, menos o diferentes componentes funcionales.
El codificador de vídeo 20 puede recibir datos de vídeo. Para codificar los datos de vídeo, el codificador de vídeo 20 puede codificar cada corte de cada imagen de los datos de vídeo. Como parte de la codificación de un corte, el codificador de vídeo 20 puede codificar cada CTB en el corte. Como parte de la codificación de un CTB, la unidad de procesamiento de predicción 100 puede realizar una subdivisión de árbol cuádruple sobre el bloque de píxeles asociado con el CTB para dividir el bloque de píxeles en bloques de píxeles progresivamente más pequeños. Los bloques de píxeles más pequeños pueden asociarse con las CU. Por ejemplo, la unidad de procesamiento de predicción 100 puede subdividir un bloque de píxeles de un CTB en cuatro subbloques de igual tamaño, subdividir uno o más de los subbloques en cuatro subsubbloques de igual tamaño y así sucesivamente.
El codificador de vídeo 20 puede codificar las CU de un CTB para generar representaciones codificadas de las CU (es decir, CU codificadas). El codificador de vídeo 20 puede codificar las CU de un CTB de acuerdo con un orden de exploración en z. En otras palabras, el codificador de vídeo 20 puede codificar una CU de arriba a la izquierda, una CU de arriba a la derecha, una CU de debajo a la izquierda y, a continuación, una CU de debajo a la derecha, en ese orden. Cuando el codificador de vídeo 20 codifica una CU subdividida, el codificador de vídeo 20 puede codificar las CU asociadas con subbloques del bloque de píxeles de la CU subdividida de acuerdo con el orden de exploración en z.
Como parte de la codificación de una CU, la unidad de procesamiento de predicción 100 puede subdividir el bloque de píxeles de la CU entre una o más PU de la CU. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden soportar diversos tamaños de PU. Suponiendo que el tamaño de una CU particular es de 2N x 2N, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden soportar tamaños de PU de 2N x 2N o N x N para la intra predicción, y tamaños de PU simétricos de 2N x 2N, 2N x N, N x 2N, N x N o similares para la inter predicción. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden soportar una subdivisión asimétrica para tamaños de PU de 2N x nU, 2N x nD, nL x 2N y nR x 2N para la inter predicción.
La unidad de procesamiento de inter predicción 121 puede generar datos predictivos para una PU realizando una inter predicción sobre cada PU de una CU. Los datos predictivos para la PU pueden incluir un bloque de píxeles predictivo que corresponde a la PU e información de movimiento para la PU. Los cortes pueden ser cortes I, cortes P o cortes B. La unidad de inter predicción 121 puede realizar diferentes operaciones para una PU de una CU dependiendo de si la PU está en un corte I, un corte P o un corte B. En un corte I, se intra predicen todas las PU. Por lo tanto, si la PU está en un corte I, la unidad de inter predicción 121 no realiza una inter predicción sobre la PU.
Si una PU está en un corte P, la unidad de estimación de movimiento 122 puede buscar en las imágenes de referencia en una lista de imágenes de referencia (por ejemplo, la "lista 0") en busca de un bloque de referencia para la PU. El bloque de referencia de la PU puede ser un bloque de píxeles que se corresponde más estrechamente con el bloque de píxeles de la PU. La unidad de estimación de movimiento 122 puede generar un índice de imagen de referencia que indica la imagen de referencia en la lista 0 que contiene el bloque de referencia de la PU y un vector de movimiento que indica un desplazamiento espacial entre el bloque de píxeles de la PU y el bloque de referencia. La unidad de estimación de movimiento 122 puede generar el índice de imagen de referencia y el vector de movimiento como la información de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar el bloque de píxeles predictivo de la PU basándose en el bloque de referencia indicado por la información de movimiento de la PU.
Si una PU está en un corte B, la unidad de estimación de movimiento 122 puede realizar una inter predicción unidireccional o una inter predicción bidireccional para la PU. Para realizar una inter predicción unidireccional para la PU, la unidad de estimación de movimiento 122 puede buscar en las imágenes de referencia de una primera lista de imágenes de referencia (la "lista 0") o una segunda lista de imágenes de referencia (la "lista 1") en busca de un bloque de referencia para la PU. La unidad de estimación de movimiento 122 puede emitir, como la información de movimiento de la PU, un índice de imagen de referencia que indica una posición en la lista 0 o la lista 1 de la imagen de referencia que contiene el bloque de referencia, un vector de movimiento que indica un desplazamiento espacial entre el bloque de píxeles de la PU y el bloque de referencia, y un indicador de dirección de predicción que indica si la imagen de referencia está en la lista 0 o en la lista 1.
Para realizar una inter predicción bidireccional para una PU, la unidad de estimación de movimiento 122 puede buscar en las imágenes de referencia en la lista 0 en busca de un bloque de referencia para la PU y también puede buscar en las imágenes de referencia en la lista 1 en busca de otro bloque de referencia para la PU. La unidad de estimación de movimiento 122 puede generar índices de imágenes de referencia que indican posiciones en la lista 0 y la lista 1 de las imágenes de referencia que contienen los bloques de referencia. Además, la unidad de estimación de movimiento 122 puede generar vectores de movimiento que indican desplazamientos espaciales entre los bloques de referencia y el bloque de píxeles de la PU. La información de movimiento de la PU puede incluir los índices de imagen de referencia y los vectores de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar el bloque de píxeles predictivo de la PU basándose en los bloques de referencia indicados por la información de movimiento de la PU.
La unidad de procesamiento de intra predicción 126 puede generar datos predictivos para una PU realizando una intra predicción sobre la PU. Los datos predictivos para la PU pueden incluir un bloque de píxeles predictivo para la PU y diversos elementos de sintaxis. La unidad de procesamiento de intra predicción 126 puede realizar una intra predicción sobre unas PU en cortes I, cortes P y cortes B.
Para realizar una intra predicción sobre una PU, la unidad de procesamiento de intra predicción 126 puede usar múltiples modos de intra predicción para generar múltiples conjuntos de datos predictivos para la PU. Para usar un modo de intra predicción para generar un conjunto de datos predictivos para la PU, la unidad de procesamiento de intra predicción 126 puede extender muestras desde bloques de muestras de PU vecinas a través de los bloques de muestras de la PU en una dirección asociada con el modo de intra predicción. Las PU vecinas pueden estar arriba, arriba y a la derecha, arriba y a la izquierda, o a la izquierda de la PU, suponiendo un orden de codificación de izquierda a derecha y de arriba abajo para las PU, las CU y los CTB. La unidad de procesamiento de intra predicción 126 puede usar diversos números de modos de intra predicción, por ejemplo, 33 modos de intra predicción direccionales. En algunos ejemplos, el número de modos de intra predicción puede depender del tamaño del bloque de píxeles de la PU.
La unidad de procesamiento de predicción 100 puede seleccionar los datos predictivos para las PU de una CU de entre los datos predictivos generados por la unidad de procesamiento de inter predicción 121 para las PU o los datos predictivos generados por la unidad de procesamiento de intra predicción 126 para las PU. En algunos ejemplos, la unidad de procesamiento de predicción 100 selecciona los datos predictivos para las PU de la CU basándose en métricas de tasa/distorsión de los conjuntos de datos predictivos. Los bloques de píxeles predictivos de los datos predictivos seleccionados pueden denominarse en el presente documento bloques de píxeles predictivos seleccionados.
La unidad de generación residual 102 puede generar, basándose en el bloque de píxeles de una CU y los bloques de píxeles predictivos seleccionados de las PU de la CU, un bloque de píxeles residual de una CU. Por ejemplo, la unidad de generación residual 102 puede generar el bloque de píxeles residual de la CU de tal modo que cada muestra en el bloque de píxeles residual tiene un valor igual a una diferencia entre una muestra en el bloque de píxeles de la CU y una muestra correspondiente en un bloque de píxeles predictivo seleccionado de una PU de la CU.
La unidad de procesamiento de predicción 100 puede realizar una subdivisión de árbol cuádruple para subdividir el bloque de píxeles residual de una CU en subbloques. Cada bloque de píxeles residual no dividido puede asociarse con una TU diferente de la CU. Los tamaños y las posiciones de los bloques de píxeles residuales asociados con las TU de una CU pueden basarse, o no, en los tamaños y las posiciones de bloques de píxeles de las PU de la CU.
Debido a que los píxeles de los bloques de píxeles residuales de las TU pueden comprender una muestra de luma y dos muestras de croma, cada una de las TU puede asociarse con un bloque de muestras de luma y dos bloques de muestras de croma. La unidad de procesamiento de transformada 104 puede generar bloques de coeficientes para cada TU de una CU aplicando una o más transformadas a los bloques de muestras residuales asociados con la TU. La unidad de procesamiento de transformada 104 puede aplicar diversas transformadas a un bloque de muestras residual asociado con una TU. Por ejemplo, la unidad de procesamiento de transformada 104 puede aplicar una transformada coseno discreta (DCT), una transformada direccional o una transformada conceptualmente similar a un bloque de muestras residual.
La unidad de cuantificación 106 puede cuantificar los coeficientes en un bloque de coeficientes asociado con una TU. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes. Por ejemplo, un coeficiente de n bits puede redondearse en sentido descendente a un coeficiente de m bits durante la cuantificación, en donde n es mayor que m. La unidad de cuantificación 106 puede cuantificar un bloque de coeficientes asociado con una TU de una CU basándose en un valor de parámetro de cuantificación (QP) asociado con la CU. El codificador de vídeo 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes asociados con una CU ajustando el valor de QP asociado con la CU.
La unidad de cuantificación inversa 108 y la unidad de procesamiento de transformada inversa 110 pueden aplicar una cuantificación inversa y transformadas inversas a un bloque de coeficientes, respectivamente, para reconstruir un bloque de muestras residual a partir del bloque de coeficientes. La unidad de reconstrucción 112 puede añadir el bloque de muestras residual reconstruido a muestras correspondientes desde uno o más bloques de muestras predictivos generados por la unidad de procesamiento de predicción 100 para producir un bloque de muestras reconstruido asociado con una TU. Reconstruyendo bloques de muestras para cada TU de una CU de esta manera, el codificador de vídeo 20 puede reconstruir el bloque de píxeles de la CU.
La unidad de filtro 113 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo en el bloque de píxeles asociado con una CU. La memoria intermedia de imágenes descodificadas 114 puede almacenar los bloques de píxeles reconstruidos después de que la unidad de filtro 113 haya realizado las una o más operaciones de desbloqueo sobre los bloques de píxeles reconstruidos. La unidad de inter predicción 121 puede usar una imagen de referencia que contiene los bloques de píxeles reconstruidos para realizar una inter predicción sobre unas PU de otras imágenes. Además, la unidad de procesamiento de intra predicción 126 puede usar bloques de píxeles reconstruidos en la memoria intermedia de imágenes descodificadas 114 para realizar una intra predicción sobre otras PU en la misma imagen que la CU.
La unidad de codificación por entropía 116 puede recibir datos desde otros componentes funcionales del codificador de vídeo 20. Por ejemplo, la unidad de codificación por entropía 116 puede recibir bloques de coeficientes desde la unidad de cuantificación 106 y puede recibir elementos de sintaxis desde la unidad de procesamiento de predicción 100. La unidad de codificación por entropía 116 puede realizar una o más operaciones de codificación por entropía sobre los datos para generar datos codificados por entropía. Por ejemplo, la unidad de codificación por entropía 116 puede realizar sobre los datos una operación de codificación de longitud variable adaptativa según contexto (CAVLC), una operación de CABAC, una operación de codificación de longitud variable a variable (V2V), una operación de codificación binaria aritmética adaptativa según contexto basada en sintaxis (SBAC), una operación de codificación por Entropía de Subdivisión de Intervalo de Probabilidad (PIPE), una operación de codificación Golomb Exponencial u otro tipo de operación de codificación por entropía.
El codificador de vídeo 20 puede emitir un flujo de bits que incluye datos codificados por entropía generados por la unidad de codificación por entropía 116. El flujo de bits puede incluir una serie de unidades de NAL. Las unidades de NAL pueden incluir unidades de NAL de corte codificado, unidades de NAL de SPS, unidades de NAL de PPS y así sucesivamente. Para asegurar que una imagen no incluye combinaciones de teselas, ondas de WPP y cortes de entropía, el flujo de bits puede incluir un elemento de sintaxis que indica si la imagen se codifica completamente usando WPP o si cada tesela de la imagen se codifica sin usar WPP.
La figura 3 es un diagrama de bloques que ilustra un descodificador de vídeo 30 de ejemplo que está configurado para implementar las técnicas de esta divulgación. La figura 3 se proporciona para fines de explicación y no es limitante para las técnicas según se ejemplifican y se describen en líneas generales en esta divulgación. Para fines de explicación, esta divulgación describe el descodificador de vídeo 30 en el contexto de la codificación de HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros métodos o normas de codificación.
En el ejemplo de la figura 3, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 150, una unidad de procesamiento de predicción 152, una unidad de cuantificación inversa 154, una unidad de procesamiento de transformada inversa 156, una unidad de reconstrucción 158, una unidad de filtro 159 y una memoria intermedia de imágenes descodificadas 160. La unidad de procesamiento de predicción 152 incluye una unidad de compensación de movimiento 162 y una unidad de procesamiento de intra predicción 164. En otros ejemplos, el descodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
El descodificador de vídeo 30 puede recibir un flujo de bits. La unidad de descodificación por entropía 150 puede analizar el flujo de bits para extraer elementos de sintaxis a partir del flujo de bits. Como parte del análisis del flujo de bits, la unidad de descodificación por entropía 150 puede descodificar elementos de sintaxis codificados por entropía en el flujo de bits. La unidad de procesamiento de predicción 152, la unidad de cuantificación inversa 154, la unidad de procesamiento de transformada inversa 156, la unidad de reconstrucción 158 y la unidad de filtro 159 pueden generar datos de vídeo descodificados basándose en los elementos de sintaxis extraídos del flujo de bits.
El flujo de bits puede comprender una serie de unidades de NAL. Las unidades de NAL del flujo de bits pueden incluir unidades de nA l de corte codificado. Como parte del análisis del flujo de bits, la unidad de descodificación por entropía 150 puede extraer y descodificar por entropía elementos de sintaxis de las unidades de NAL de corte codificado. Cada uno de los cortes codificados puede incluir un encabezamiento de corte y datos de corte. El encabezamiento de corte puede contener elementos de sintaxis que se refieren a un corte. Los elementos de sintaxis en el encabezamiento de corte pueden incluir un elemento de sintaxis que identifica un PPS asociado con una imagen que contiene el corte.
Además, el descodificador de vídeo 30 puede realizar una operación de reconstrucción sobre una CU no subdividida. Para realizar la operación de reconstrucción sobre una CU no subdividida, el descodificador de vídeo 30 puede realizar una operación de reconstrucción sobre cada TU de la CU. Al realizar la operación de reconstrucción para cada TU de la CU, el descodificador de vídeo 30 puede reconstruir un bloque de píxeles residual asociado con la CU.
Como parte de realizar una operación de reconstrucción sobre una TU de una CU, la unidad de cuantificación inversa 154 puede cuantificar inversamente, es decir, descuantificar, bloques de coeficientes asociados con la TU. La unidad de cuantificación inversa 154 puede usar un valor de QP asociado con la CU de la TU para determinar un grado de cuantificación y, de igual forma, un grado de cuantificación inversa para que sea aplicable la unidad de cuantificación inversa 154.
Después de que la unidad de cuantificación inversa 154 cuantifique inversamente un bloque de coeficientes, la unidad de procesamiento de transformada inversa 156 puede aplicar una o más transformadas inversas al bloque de coeficientes para generar un bloque de muestras residual asociado con la TU. Por ejemplo, la unidad de procesamiento de transformada inversa 156 puede aplicar una DCT inversa, una transformada de números enteros inversa, una transformada de Karhunen-Loeve inversa (KLT), una transformada rotacional inversa, una transformada direccional inversa u otra transformada inversa al bloque de coeficientes.
Si una PU se codifica usando intra predicción, la unidad de procesamiento de intra predicción 164 puede realizar una intra predicción para generar bloques de muestras predictivos para la PU. La unidad de procesamiento de intra predicción 164 puede usar un modo de intra predicción para generar el bloque de píxeles predictivo para la PU basándose en los bloques de píxeles de las PU espacialmente vecinas. La unidad de procesamiento de intra predicción 164 puede determinar el modo de intra predicción para la PU basándose en uno o más elementos de sintaxis analizados a partir del flujo de bits.
La unidad de compensación de movimiento 162 puede construir una primera lista de imágenes de referencia (la lista 0) y una segunda lista de imágenes de referencia (la lista 1) basándose en elementos de sintaxis extraídos a partir del flujo de bits. Además, si una PU se codifica usando una inter predicción, la unidad de descodificación por entropía 150 puede extraer información de movimiento para la PU. La unidad de compensación de movimiento 162 puede determinar, basándose en la información de movimiento de la PU, uno o más bloques de referencia para la PU. La unidad de compensación de movimiento 162 puede generar, basándose en los uno o más bloques de referencia para la PU, un bloque de píxeles predictivo para la PU.
La unidad de reconstrucción 158 puede usar los bloques de píxeles residuales asociados con las TU de una CU y los bloques de píxeles predictivos de las PU de la CU, es decir, o bien datos de intra predicción o bien datos de inter predicción, según sea aplicable, para reconstruir el bloque de píxeles de la CU. En particular, la unidad de reconstrucción 158 puede añadir muestras de los bloques de píxeles residuales a muestras correspondientes de los bloques de píxeles predictivos para reconstruir el bloque de píxeles de la CU.
La unidad de filtro 159 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con el bloque de píxeles de la CU. El descodificador de vídeo 30 puede almacenar el bloque de píxeles de la CU en la memoria intermedia de imágenes descodificadas 160. La memoria intermedia de imágenes descodificadas 160 puede proporcionar imágenes de referencia para una compensación de movimiento posterior, una intra predicción y una presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1. Por ejemplo, el descodificador de vídeo 30 puede realizar, basándose en los bloques de píxeles en la memoria intermedia de imagen descodificada 160, operaciones de intra predicción o inter predicción sobre las PU de otras CU.
Como se ha mencionado anteriormente, el descodificador de vídeo 30 puede recibir un flujo de bits que incluye un elemento de sintaxis de modo de codificación. Si el elemento de sintaxis de modo de codificación tiene un valor particular, el elemento de sintaxis de modo de codificación indica que una imagen se codifica completamente usando WPP. En diversos ejemplos, el elemento de sintaxis de modo de codificación puede estar en diversas porciones del flujo de bits. Por ejemplo, un SPS puede incluir un elemento de sintaxis de modo de codificación. La Tabla 1, a continuación, proporciona una sintaxis de ejemplo para un SPS que incluye un elemento de sintaxis de modo de codificación ("tile_mode").
TABLA 1- in xi RB P n n r m r n i
Figure imgf000014_0001
continuación
Figure imgf000015_0001
Los elementos de sintaxis con un descriptor de tipo ue(v) son valores de longitud variable sin signo codificados usando una codificación Golomb exponencial con el bit izquierdo en primer lugar. Los elementos de sintaxis con un descriptor de tipo u(1) y u(2) son valores sin signo que tienen una longitud de 1 o 2 bits, respectivamente. En la sintaxis de ejemplo de la Tabla 1, el elemento de sintaxis inter_4x4_enabled_flag especifica si puede aplicarse una inter predicción a bloques que tienen el tamaño de 4 x 4 muestras de luma.
Además, en la sintaxis de ejemplo de la Tabla 1, el elemento de sintaxis tile_mode especifica un modo de tesela para las imágenes asociadas con el SPS. Si el elemento de sintaxis tile_mode es igual a 0, solo hay una tesela en cada una de las imágenes asociadas con el SPS. Los CTB en la única tesela de cada imagen se codifican de acuerdo con el orden de exploración por filas sin usar WPP. Si el elemento de sintaxis tile_mode es igual a 1, las imágenes asociadas con el SPS están en el modo de teselas separadas uniformemente. Cuando una imagen está en el modo de teselas separadas uniformemente, los límites de columna de teselas y los límites de fila de teselas se distribuyen uniformemente en cada imagen asociada con el SPS. Como resultado, cuando una imagen está en el modo de teselas separadas uniformemente, las teselas de la imagen tienen el mismo tamaño. Los CTB dentro de cada una de las teselas distribuidas uniformemente pueden codificarse de acuerdo con un orden de exploración por filas sin usar WPP. Si el elemento de sintaxis tile_mode es igual a 2, las imágenes asociadas con el s Ps están en el modo de teselas separadas no uniformemente. Cuando una imagen está en el modo de teselas separadas no uniformemente, los límites de columna de teselas y los límites de fila de teselas no se distribuyen uniformemente por toda la imagen, pero pueden señalizarse explícitamente usando los elementos de sintaxis column_width[i] y row_height[i] del SPS. Los CTB dentro de cada una de las teselas separadas no uniformemente pueden codificarse de acuerdo con un orden de exploración por filas sin usar WPP.
Si el elemento de sintaxis tile_mode es igual a 3, las imágenes asociadas con el SPS se codifican usando el modo de WPP. En otras palabras, si el elemento de sintaxis tile_mode tiene un valor particular (por ejemplo, 3), las imágenes asociadas con el SPS se codifican completamente usando WPP. Si el elemento de sintaxis tile_mode tiene un valor que no sea 3, ninguna tesela de ninguna imagen asociada con el SPS se codifica usando WPP. Además, cuando una imagen se codifica usando WPP, se invoca un proceso de memorización específico después de descodificar dos CTB de una fila de CTB de la imagen. Además, se invoca un proceso de sincronización específico antes de descodificar el primer CTB de una fila de CTB de la imagen. Además, se invoca un proceso de reinicialización de estado de CABAC específico de variables internas cuando se ha codificado el CTB más a la derecha de una fila.
En el proceso de memorización específico mencionado anteriormente, un codificador de vídeo puede, en respuesta a determinar que un primer CTB está separado de un límite izquierdo de la imagen por un único CTB, almacenar variables de contexto particulares asociadas con el primer CTB. En el proceso de sincronización específico, el codificador de vídeo puede codificar por entropía (es decir, codificar por entropía o descodificar por entropía), basándose al menos en parte en las variables de contexto asociadas con el primer CTB, uno o más elementos de sintaxis de un segundo CTB, estando el segundo CTB situado adyacente al límite izquierdo de la imagen y situado una fila de CTB más abajo que el primer CTB.
Además, en la sintaxis de ejemplo de la Tabla 1, el elemento de sintaxis num_tile_columns_minus1 especifica el número de columnas de teselas que subdividen cada una de las imágenes asociadas con el SPS. Cuando el elemento de sintaxis tile_mode es igual a 0 o 3, puede inferirse que el valor del elemento de sintaxis num_tile_columns_minus1 es igual a 0. Esto es debido a que solo hay una única tesela en una imagen cuando el elemento de sintaxis tile_mode es igual a 0, y cada fila de CTB de la imagen es una única tesela cuando el elemento de sintaxis tile_mode es igual a 3. El elemento de sintaxis num_tile_rows_minus1 especifica el número de filas de teselas que subdividen cada una de las imágenes asociadas con el SPS. Cuando el elemento de sintaxis tile_mode es igual a 0, puede inferirse que el valor del elemento de sintaxis num_tile_rows_minus1 es igual a 0. Cuando el elemento de sintaxis tile_mode es igual a 3, el descodificador de vídeo 30 puede determinar (es decir, inferir) automáticamente que el valor del elemento de sintaxis num_tile_rows_minus1 es igual a la altura de las imágenes en CTB, menos 1. Además, cuando el elemento de sintaxis tile_mode es igual a 1 o 2, al menos uno del elemento de sintaxis num_tile_columns_minus1 y el elemento de sintaxis num_tile_rows_minus1 es mayor que 0.
El descodificador de vídeo 30 puede determinar, basándose en los elementos de sintaxis column_width[i] y los elementos de sintaxis row_height[i], las anchuras y las alturas de las teselas de las imágenes asociadas con el SPS. Los elementos de sintaxis column_width[i] indican las anchuras de las columnas de teselas de las imágenes asociadas con el SPS. El descodificador de vídeo 30 puede generar, basándose al menos en parte en los elementos de sintaxis column_width[i], un vector column_Width que indica las anchuras de las columnas de teselas en las imágenes asociadas con el SPS. El descodificador de vídeo 30 puede usar el siguiente pseudocódigo para generar el vector column_Width a partir de los elementos de sintaxis column_width[i] del SPS.
Figure imgf000016_0001
}
El descodificador de vídeo 30 puede generar un vector rowHeight que indica las alturas de las teselas en las imágenes asociadas con el SPS. En algunos ejemplos, el descodificador de vídeo 30 puede usar el siguiente pseudocódigo para generar el vector rowHeight.
Figure imgf000016_0002
Además, el descodificador de vídeo 30 puede generar un vector colBd que indica ubicaciones dentro de las imágenes asociadas con el SPS del límite de columna más a la izquierda para cada columna de teselas. En algunos ejemplos, el descodificador de vídeo 30 puede determinar el vector colBd usando el siguiente pseudocódigo.
Figure imgf000016_0003
El descodificador de vídeo 30 puede generar un vector rowBd que indica ubicaciones dentro de la imagen asociada con el SPS de un límite de fila de arriba de cada fila de teselas. En algunos ejemplos, el descodificador de vídeo 30 puede determinar el vector rowBd usando el siguiente pseudocódigo.
Figure imgf000016_0004
En la sintaxis de ejemplo de la Tabla 1, el elemento de sintaxis tile_boundary_independence_flag indica si las teselas son descodificables de forma independiente. Por ejemplo, si tile_boundary_independence_flag es igual a 1, las teselas son descodificables de forma independiente. Por ejemplo, si tile_boundary_independence_flag es igual a 1 y el descodificador de vídeo 30 está descodificando un CTB particular, se determina que todos los CTB que son vecinos al CTB particular que no están dentro de la misma tesela que el CTB particular no están disponibles para una predicción dentro de la imagen. Además, si la tile_boundary_independence_flag es igual a 1, el descodificador de vídeo 30 reinicializa un contexto de codificación por entropía antes de descodificar por entropía el primer CTB en una tesela.
Si el elemento de sintaxis tile_boundary_independence_flag es igual a 0, la disponibilidad de CTB para una predicción dentro de la imagen no se ve afectada por límites de tesela. En otras palabras, si el elemento de sintaxis tile_boundary_independent_flag es igual a 0, el descodificador de vídeo 30 puede realizar una predicción dentro de la imagen a través de límites de tesela. Además, si el elemento de sintaxis tile_boundary_independence_flag es igual a 0, la unidad de descodificación por entropía 150 puede invocar un proceso de sincronización cuando se descodifica el primer CTB en una tesela, excepto por el primer bloque de árbol en una imagen. En este proceso de sincronización, la unidad de descodificación por entropía 150 puede usar información asociada con un último CTB de una tesela previa para seleccionar un contexto de codificación para descodificar por entropía uno o más elementos de sintaxis del primer CTB en una tesela. Además, la unidad de descodificación por entropía 150 puede realizar un proceso de memorización cuando se descodifica el primer CTB de la segunda fila de CTB en una tesela. El proceso de memorización puede almacenar variables de contexto para su uso en la selección de un contexto para codificar por CABAC uno o más elementos de sintaxis de un CTB más a la izquierda de la siguiente fila inferior de CTB.
Si el elemento de sintaxis tile_mode es igual a 0 (es decir, solo hay una tesela por imagen), el SPS no incluye, en la sintaxis de ejemplo de la Tabla 1, el elemento de sintaxis tile_boundary_independence_flag. Sin embargo, si el elemento de sintaxis tile_mode es igual a 0, el descodificador de vídeo 30 puede determinar automáticamente que el valor del elemento de sintaxis tile_boundary_independence_flag es igual a 1. De forma similar, si el elemento de sintaxis tile_mode es igual a 3 (es decir, la imagen se codifica completamente usando WPP), el SPS no incluye, en la sintaxis de ejemplo de la Tabla 1, el elemento de sintaxis tile_boundary_independence_flag. Sin embargo, si el elemento de sintaxis tile_mode es igual a 3, el descodificador de vídeo 30 puede determinar automáticamente que el valor del elemento de sintaxis tile_boundary_independence_flag es igual a 0.
En la sintaxis de ejemplo de la Tabla 1, el elemento de sintaxis loop_filter_across_tile_flag especifica si el descodificador de vídeo 30 va a realizar operaciones de filtrado en bucle a través de límites de tesela. Por ejemplo, si el elemento de sintaxis loop_filter_across_tile_flag es igual a 1, el descodificador de vídeo 30 puede realizar operaciones de filtrado en bucle a través de límites de tesela. De lo contrario, si el elemento de sintaxis loop_filter_across_tile_flag es igual a 0, el descodificador de vídeo 30 puede no realizar las operaciones de filtrado en bucle a través de límites de tesela. Las operaciones de filtrado en bucle de ejemplo pueden incluir filtros de desbloqueo, desplazamientos adaptativos de muestra y filtros de bucle adaptativos.
Si el elemento de sintaxis tile_mode es igual a 0 (es decir, solo hay una tesela por imagen) o igual a 3 (es decir, cada imagen asociada con el SPS se codifica completamente usando WPP), el SPS no incluye, en la sintaxis de ejemplo de la Tabla 1, el elemento de sintaxis loop_filter_across_tile_flag. Sin embargo, si el elemento de sintaxis tile_mode es igual a 0, el descodificador de vídeo 30 puede determinar automáticamente que el valor del elemento de sintaxis loop_filter_across_tile_flag es igual a 0. Si el elemento de sintaxis tile_mode es igual a 3, el descodificador de vídeo 30 puede determinar automáticamente que el valor del elemento de sintaxis loop_filter_across_tile_flag es igual a 1.
Como alternativa, o además de recibir un SPS que incluye un elemento de sintaxis de modo de codificación, el descodificador de vídeo 30 puede recibir un PPS que incluye un elemento de sintaxis de modo de codificación. En algunos ejemplos en los que el descodificador de vídeo 30 recibe un SPS y un PPS que son aplicables a la misma imagen y tanto el SPS como el PPS incluyen elementos de sintaxis de modo de codificación, el descodificador de vídeo 30 puede dar prioridad al elemento de sintaxis de modo de codificación especificado por el PPS. La Tabla 2, a continuación, presenta una sintaxis de ejemplo de un PPS que incluye un elemento de sintaxis de modo de codificación ("tile_mode").
TABLA 2- in xi RB P n n r m r im n
Figure imgf000017_0001
continuación
Figure imgf000018_0001
En la sintaxis de ejemplo de la Tabla 2, si el elemento de sintaxis tile_partition_info_present_flag es igual a 1, el elemento de sintaxis tile_mode está presente. Además, si el elemento de sintaxis tile_partition_info_present_flag es igual a 1, los elementos de sintaxis num_tile_columns_minus1, num_tile_rows_minus1, column_width[i] y row_height[i] pueden estar presentes en el PPS. La semántica del elemento de sintaxis tile_mode, el elemento de sintaxis num_tile_columns_minus1, el elemento de sintaxis num_tile_rows_minus1, los elementos de sintaxis column_width y los elementos de sintaxis row_height pueden ser iguales que los descritos anteriormente con respecto a la sintaxis de SPS de ejemplo de la Tabla 1. Si el elemento de sintaxis tile_partition_info_present_flag es igual a 0, los elementos de sintaxis tile_mode, num_tile_columns_minus1, num_tile_rows_minus1, column_width[i] y row_height[i] no están presentes en el PPS.
De esta forma, el descodificador de vídeo 30 puede determinar, basándose al menos en parte en que el elemento de sintaxis de modo de codificación (por ejemplo, tile_mode) tenga un valor que indica que no se codifica ningún CTB de la imagen usando WPP, que un conjunto de parámetros (por ejemplo, un SPS o un PPS) incluye un elemento de sintaxis de número de columnas de teselas y un elemento de sintaxis de número de filas de teselas. El descodificador de vídeo 30 también puede determinar, basándose en el elemento de sintaxis de número de columnas de teselas, el número de columnas de teselas. El número de columnas de teselas de cada imagen asociada con el conjunto de parámetros puede ser igual al número de columnas de teselas. El descodificador de vídeo 30 también puede determinar, basándose en el elemento de sintaxis de número de filas de teselas, el número de filas de teselas. El número de filas de teselas de cada imagen asociada con el conjunto de parámetros puede ser igual al número de filas de teselas. Además, el descodificador de vídeo 30 puede determinar que un conjunto de parámetros (por ejemplo, un SPS o un PPS) incluye una serie de uno o más elementos de sintaxis de anchura de columna y una serie de uno o más elementos de sintaxis de altura de teselas. Además, el descodificador de vídeo 30 puede determinar, basándose al menos en parte en los elementos de sintaxis de anchura de columna, las anchuras de las columnas de teselas de cada imagen asociada con el conjunto de parámetros. Además, el descodificador de vídeo 30 puede determinar, basándose al menos en parte en los elementos de sintaxis de altura de tesela, las alturas de las teselas de cada imagen asociada con el conjunto de parámetros.
De forma similar, el codificador de vídeo 20 puede generar un conjunto de parámetros que incluye un elemento de sintaxis de número de columnas de teselas y un elemento de sintaxis de número de filas de teselas. El conjunto de parámetros puede ser un conjunto de parámetros de imagen (PPS) o un conjunto de parámetros de secuencia (SPS). El número de columnas de teselas es determinable basándose en el elemento de sintaxis de número de columnas de teselas y el número de columnas de teselas de cada imagen asociada con el conjunto de parámetros es igual al número de columnas de teselas. El número de filas de teselas es determinable basándose en el elemento de sintaxis de número de filas de teselas y el número de filas de teselas de cada imagen asociada con el conjunto de parámetros es igual al número de filas de teselas. Cuando el codificador de vídeo 20 genera el conjunto de parámetros, el codificador de vídeo 20 puede generar una serie de uno o más elementos de sintaxis de anchura de columna y una serie de uno o más elementos de sintaxis de altura de fila. Las anchuras de las columnas de teselas de cada imagen asociada con el conjunto de parámetros pueden ser determinables basándose al menos en parte en los elementos de sintaxis de anchura de columna. Las alturas de las filas de teselas de cada imagen asociada con el conjunto de parámetros pueden ser determinables basándose al menos en parte en los elementos de sintaxis de altura de fila.
Además, en la sintaxis de ejemplo de la Tabla 2, si el elemento de sintaxis tile_control_info_present_flag es igual a 1, los elementos de sintaxis tile_boundary_independence_flag y loop_filter_across_tile_flag pueden estar presentes en el PPS. Si el elemento de sintaxis tile_control_info_present_flag es igual a 0, los elementos de sintaxis tile_boundary_independence_flag y loop_filter_across_tile_flag no están presentes en el PPS.
En la sintaxis de ejemplo de la Tabla 2, si entropy_slice_enabled_flag es igual a 1, los cortes codificados que se refieren al PPS pueden incluir (y pueden consistir en) uno o más cortes de entropía. Si el elemento de sintaxis entropy_slice_enabled_flag es igual a 0, los cortes codificados que se refieren al PPS no contienen cortes de entropía. Cuando el elemento de sintaxis entropy_slice_enabled_flag no está presente, el descodificador de vídeo 30 puede determinar (es decir, inferir) automáticamente que el elemento de sintaxis entropy_slice_enabled_flag es igual a 0. La semántica para otros elementos de sintaxis del PPS puede ser igual que la semántica definida en el WD5 de HEVC.
En la sintaxis de ejemplo de la Tabla 2, el PPS solo incluye el elemento de sintaxis entropy_slice_enabled_flag si el elemento de sintaxis tile_mode es igual a 0. Como se ha analizado anteriormente, el descodificador de vídeo 30 puede determinar, basándose en el elemento de sintaxis tile_mode, si usar WPP para descodificar los CTB de cada tesela de una imagen. Por lo tanto, el descodificador de vídeo 30 puede determinar, basándose en que un elemento de sintaxis de modo de codificación (por ejemplo, tile_mode) tenga un valor particular, que el flujo de bits incluye un elemento de sintaxis adicional (por ejemplo, entropy_slice_enabled_flag) que indica si los cortes de entropía están habilitados para representaciones codificadas de imágenes que se refieren a un conjunto de parámetros (por ejemplo, un SPS o un PPS) que incluye el elemento de sintaxis de modo de codificación y el elemento de sintaxis adicional.
Como se ha descrito anteriormente, una unidad de NAL de corte codificado puede incluir una representación codificada de un corte. La representación codificada del corte puede incluir un encabezamiento de corte seguido de datos de corte. En algunos ejemplos, el descodificador de vídeo 30 puede determinar, basándose al menos en parte en un elemento de sintaxis de modo de codificación (por ejemplo, tile_mode), si el encabezamiento de corte incluye una pluralidad de elementos de sintaxis de desplazamiento de entrada a partir de los cuales son determinables puntos de entrada de subflujos en los datos de corte. En respuesta a determinar que el encabezamiento de corte incluye los elementos de sintaxis de desplazamiento de entrada, el descodificador de vídeo 30 puede usar la pluralidad de elementos de sintaxis de desplazamiento de entrada para determinar puntos de entrada de subflujos en los datos de corte. En otras palabras, el descodificador de vídeo 30 puede determinar, basándose al menos en parte en los elementos de sintaxis de desplazamiento, posiciones en memoria de los subflujos. Si el elemento de sintaxis de modo de codificación tiene un valor (por ejemplo, 3), cada fila de CTB de la imagen es representada por uno solo de los subflujos. Si el elemento de sintaxis de modo de codificación tiene un valor diferente (por ejemplo, 0, 1 o 2), cada tesela de la imagen que tiene uno o más CTB en el corte es representada por uno solo de los subflujos. El encabezamiento de corte puede ser conforme con la sintaxis de ejemplo de la Tabla 3, a continuación.
TABLA 3 - Sintaxis de encabezamiento de corte
Figure imgf000020_0001
continuación
Figure imgf000021_0001
En la sintaxis de ejemplo de la Tabla 3, el valor de los elementos de sintaxis de encabezamiento de corte "pic_parameter_setjd", "frame_num", "idr_pic_id", "pic_order_cnt_lsb", "delta_pic_order_cnt[0]" y "delta_pic_order_cnt[1]" son los mismos en todos los encabezamientos de corte de una imagen codificada. Además, en la sintaxis de ejemplo de la Tabla 3, el elemento de sintaxis first_slice_in_pic_flag indica si el corte incluye una CU que cubre una muestra de luma de arriba a la izquierda de la imagen. Si el elemento de sintaxis first_slice_in_pic_flag es igual a 1, el descodificador de vídeo 30 puede establecer ambas de las variables SliceAddress y LCUAddress a 0 y el descodificador de vídeo 30 puede empezar la descodificación con el primer CTB en la imagen.
Además, en la sintaxis de ejemplo de la Tabla 3, el elemento de sintaxis slice_address especifica, en una resolución de granularidad de corte, una dirección en la que empieza el corte. La resolución de granularidad de corte es la granularidad con la que se define el corte. El número de bits del elemento de sintaxis slice_address puede ser igual a (Techo (Log2 (NumlCUsInPicture)) SliceGranularity), en donde "NumlCUsInPicture" es el número de CTB en una imagen.
En la sintaxis de ejemplo de la Tabla 3, el descodificador de vídeo 30 establece la variable LCUAddress a (slice_address >> SliceGranularity). La variable LCUAddress indica la parte de LCU de la dirección de corte del corte en un orden de exploración por filas. El descodificador de vídeo 30 establece la variable GranularityAddress a (slice_address -(LCUAddress ≤≤ SliceGranularity)). La variable GranularityAddress representa la parte sub-LCU de la dirección de corte. La variable GranularityAddress se expresa en un orden de exploración en z.
El descodificador de vídeo 30 establece la variable SliceAddress a (LCUAddress ≤≤ (log2_diff_max_min_coding_block_size ≤≤ 1)) (GranularityAddress ≤≤ ((log2_diff_max_min_codin g_block_size ≤≤ 1) - SliceGranularity)). El valor log2_diff_max_min_coding_block_size especifica una diferencia entre un tamaño de CU máximo y mínimo. El descodificador de vídeo 30 puede empezar a descodificar el corte con la CU más grande posible en la coordenada inicial de corte. La coordenada inicial de corte puede ser una coordenada de un píxel de arriba a la izquierda de una primera CU del corte.
Además, en la sintaxis de ejemplo de la Tabla 3, la sintaxis cabac_init_idc especifica un índice para determinar una tabla de inicialización usada en el proceso de inicialización para variables de contexto. El valor del elemento de sintaxis cabac_init_idc puede estar en el rango de 0 a 2, inclusive.
En la sintaxis de ejemplo de la Tabla 3, el elemento de sintaxis num_entry_offsets especifica el número de elementos de sintaxis entry_offset[i] en el encabezamiento de corte. En otras palabras, el número de elementos de sintaxis de desplazamiento de entrada en la pluralidad de elementos de sintaxis de desplazamiento de entrada es determinable basándose en el elemento de sintaxis num_entry_offsets. Cuando el elemento de sintaxis num_entry_offsets no está presente, el descodificador de vídeo 30 puede determinar que el valor del elemento de sintaxis num_entry_offsets es igual a 0. De esta forma, el descodificador de vídeo 30 puede determinar, basándose en el elemento de sintaxis num_entry_offsets, cuántos elementos de sintaxis de desplazamiento hay en la pluralidad de elementos de sintaxis de desplazamiento de entrada. El elemento de sintaxis offset_len_minus8, más 8, especifica la longitud, en bits, de los elementos de sintaxis entry_offset[i]. En otras palabras, una longitud, en bits, de cada uno de los elementos de sintaxis de desplazamiento de entrada es determinable basándose en el elemento de sintaxis offset_len_minus8. De esta forma, el descodificador de vídeo 30 puede determinar, basándose en el elemento de sintaxis offset_len_minus8, una longitud, en bits, de los elementos de sintaxis de desplazamiento. El elemento de sintaxis entry_offset[i] especifica el i-ésimo desplazamiento de entrada, en bytes.
El decodificador 30 de vídeo puede analizar, basándose al menos en parte en cuántos elementos de sintaxis de desplazamiento hay en la pluralidad de elementos de sintaxis de desplazamiento y la longitud, en bits, de los elementos de sintaxis de desplazamiento, los elementos de sintaxis de desplazamiento del flujo de bits. El número de subflujos en la unidad de NAL de corte codificado puede ser igual a num_entry_offsets 1. Los valores de índice de los subflujos pueden estar en el rango de 0 a num_entry_offsets, inclusive. El subflujo 0 de la unidad de NAL de corte codificado puede consistir en los bytes 0 a entry_offset[0] - 1, inclusive, de los datos de corte de la unidad de NAL de corte codificado. El subflujo k de la unidad de NAL de corte codificado, con k en el rango de 1 a num_entry_offsets - 1, inclusive, puede consistir en los bytes entry_offset[^ - 1] a entry_offset[^] - 1, inclusive, de los datos de corte de la unidad de NAL de corte codificado. El último subflujo de la unidad de NAL de corte codificado (con un índice de subflujo igual a num_entry_offsets) puede consistir en el resto de los bytes de los datos de corte de la unidad de NAL de corte codificado.
En la sintaxis de ejemplo de la Tabla 3, si el elemento de sintaxis tile_mode es mayor que 0, cada subflujo con un índice de subflujo en el rango de 1 a num_entry_offsets - 1 contiene cada bit codificado de una tesela y el subflujo con un índice de subflujo 0 contiene o bien cada bit codificado de una tesela o bien un número de los bits codificados finales de una tesela. Los bits codificados finales de la tesela son los bits codificados que se codifican al final de la tesela. Además, si el elemento de sintaxis tile_mode es mayor que 0, el último subflujo (es decir, el subflujo con un índice de subflujo igual a num_entry_offsets) contiene o bien todos los bits codificados de una tesela o bien el número de los bits codificados iniciales de una tesela. Los bits codificados iniciales de la tesela son los bits codificados que se codifican al inicio de la tesela. Un subflujo no contiene bits codificados de más de una tesela. En la sintaxis de ejemplo de la Tabla 3, el encabezamiento de unidad de NAL y el encabezamiento de corte de una unidad de NAL de corte codificado se incluyen siempre en el subflujo 0. Si el elemento de sintaxis tile_mode es igual a 0 y el elemento de sintaxis entropy_slice_enabled_flag es igual a 1, cada subflujo contiene cada bit codificado de un corte de entropía y no contiene ningún bit codificado de otro corte de entropía.
En la sintaxis de ejemplo de la Tabla 3, el elemento de sintaxis entropy_slice_address[i] especifica una dirección de inicio, en una resolución de granularidad de corte, del (i 1)-ésimo corte de entropía en la unidad de NAL de corte codificado. El tamaño en bits de cada uno de los elementos de sintaxis entropy_slice_address[i] puede ser igual a (Techo (Log2 (NumlCUsInPicture)) SliceGranularity).
Además, en la sintaxis de ejemplo de la Tabla 3, el elemento de sintaxis "entropy_slice_cabac_init_idc[i]" especifica un índice para determinar una tabla de inicialización usada en un proceso de inicialización para variables de contexto para el (i 1)-ésimo corte de entropía en la unidad de NAL de corte codificado. El valor de entropy_slice_cabac_init_idc[i] está en el rango de 0 a 2, inclusive. La semántica para otros elementos de sintaxis del encabezamiento de corte puede ser igual que la semántica definida en el WD5 de HEVC.
En algunos ejemplos, los elementos de sintaxis entry_offset[i] indican desplazamientos de subflujos en términos de bits. Además, en algunos ejemplos, un encabezamiento de corte puede incluir una bandera que indica si la unidad de "entry_offset[i]" son bytes (cuando es igual a 1) o bits (cuando es igual a 0). Esta bandera puede ubicarse en el encabezamiento de corte después del elemento de sintaxis offset_len_minus8.
Además, en algunos ejemplos, un encabezamiento de corte puede incluir un elemento de sintaxis para cada subflujo, incluyendo el subflujo 0, para indicar un tipo de subflujo del subflujo respectivo. En este ejemplo, si el elemento de sintaxis para un subflujo tiene un primer valor, el subflujo es una tesela. Si el elemento de sintaxis para un subflujo tiene un segundo valor, el subflujo es un corte de entropía.
Como se ha mencionado anteriormente, una representación codificada puede incluir un encabezamiento de corte y datos de corte. Los datos de corte pueden incluir uno o más subflujos. Si el elemento de sintaxis de modo de codificación tiene un primer valor (por ejemplo, 3), cada fila de CTB de la imagen es representada por uno solo de los subflujos. Si el elemento de sintaxis tiene un segundo valor (por ejemplo, 0, 1 o 2), cada tesela de la imagen que tiene uno o más CTB en el corte es representada por uno solo de los subflujos. Para facilitar WPP o descodificar teselas del corte en paralelo, los subflujos en los datos de corte pueden incluir bits de relleno que aseguran la alineación en bytes de los subflujos. Sin embargo, en los casos en los que solo hay una tesela en una imagen y no se habilitan cortes de entropía, puede que no haya ninguna necesidad de incluir tales bits de relleno. Por consiguiente, el descodificador de vídeo 30 puede determinar, basándose al menos en parte en el elemento de sintaxis de modo de codificación (por ejemplo, tile_mode) si los subflujos en los datos de corte incluyen bits de relleno que aseguran la alineación en bytes de los subflujos.
Los datos de corte pueden ser conformes con la sintaxis de ejemplo de la Tabla 4, a continuación.
TABLA 4 - Sintaxis de datos de corte
Figure imgf000022_0001
continuación
Figure imgf000023_0001
En la sintaxis de ejemplo de la Tabla 4, los datos de corte incluyen una función coding_tree( ). Cuando el descodificador de vídeo 30 analiza los datos de corte, el descodificador de vídeo 30 puede realizar un bucle. Durante cada iteración del bucle, el descodificador de vídeo 30 invoca la función coding_tree( ) para analizar un CTB codificado en los datos de corte. Cuando el descodificador de vídeo 30 invoca la función de coding_tree( ) para analizar un CTB codificado particular, el descodificador de vídeo 30 puede analizar un elemento de sintaxis end_of_slice_flag a partir de los datos de corte. Si el elemento de sintaxis end_of_slice_flag es igual a 0, hay otro CTB a continuación del CTB codificado particular en el corte o en el corte de entropía. Si el elemento de sintaxis end_of_slice_flag es igual a 1, el CTB codificado particular es el último CTB codificado del corte o del corte de entropía.
Además, la sintaxis de ejemplo de la Tabla 4 incluye una función byte_index( ). La función byte_index( ) puede devolver un índice de byte de una posición actual dentro de los bits de la unidad de NAL. La posición actual dentro de los bits de la unidad de NAL puede ser un primer bit no analizado de la unidad de NAL. Si un bit siguiente en el flujo de bits es cualquier bit del primer byte de un encabezamiento de unidad de NAL, la función byte_index( ) devuelve un valor igual a 0.
La sintaxis de datos de corte de la Tabla 4 es un ejemplo. En otro ejemplo de sintaxis de datos de corte, la condición "si (tile_mode != 0 || entropy_slice_enabled_flag)" de la Tabla 4 se sustituye por la condición "si (tile_mode == 1 || tile_mode == 2 || entropy_slice_enabled_flag)".
La figura 4 es un diagrama de flujo que ilustra una operación 200 de ejemplo del codificador de vídeo 20 para codificar datos de vídeo en la que no se permiten combinaciones de teselas y ondas de WPP dentro de una única imagen, de acuerdo con uno o más aspectos de esta divulgación. La figura 4 se proporciona como un ejemplo. En otros ejemplos, las técnicas de esta divulgación pueden implementarse usando más, menos o diferentes etapas que las mostradas en el ejemplo de la figura 4.
En el ejemplo de la figura 4, el codificador de vídeo 20 genera una primera imagen codificada codificando una imagen de acuerdo con un primer modo de codificación (202). Cuando el codificador de vídeo 20 codifica la imagen de acuerdo con el primer modo de codificación, la imagen se codifica completamente usando WPP. Además, el codificador de vídeo 20 puede generar una segunda imagen codificada codificando la imagen de acuerdo con un segundo modo de codificación (204). Cuando el codificador de vídeo 20 codifica la imagen de acuerdo con el segundo modo de codificación, el codificador de vídeo 20 puede subdividir la imagen en una o más teselas. El codificador de vídeo 20 puede codificar cada tesela de la imagen (es decir, codificar cada CTB en cada una de las teselas) sin usar WPP. Por ejemplo, el codificador de vídeo 20 puede codificar los CTB de cada una de las teselas de acuerdo con un orden de exploración por filas sin usar WPP. El codificador de vídeo 20 puede seleccionar entonces la primera imagen codificada o la segunda imagen codificada (206). En algunos ejemplos, el codificador de vídeo 20 puede seleccionar la primera imagen codificada o la segunda imagen codificada basándose en un análisis de tasa/distorsión de la primera y la segunda imágenes codificadas. El codificador de vídeo 20 puede generar un flujo de bits que incluye la imagen codificada seleccionada y un elemento de sintaxis que indica si la imagen se codifica de acuerdo con o bien el primer modo de codificación o bien el segundo modo de codificación (208).
La figura 5 es un diagrama de flujo que ilustra una operación 220 de ejemplo del descodificador de vídeo 30 para descodificar datos de vídeo en la que no se permiten combinaciones de teselas y WPP dentro de una única imagen, de acuerdo con uno o más aspectos de esta divulgación. La figura 5 se proporciona como un ejemplo.
En el ejemplo de la figura 5, el descodificador de vídeo 30 puede analizar, a partir de un flujo de bits que incluye una representación codificada de una imagen en los datos de vídeo, un elemento de sintaxis (222). El descodificador de vídeo 30 puede determinar si el elemento de sintaxis tiene un valor particular (224). En respuesta a determinar que el elemento de sintaxis tiene el valor particular ("SÍ" de 224), el descodificador de vídeo 30 puede descodificar la imagen completamente usando WPP (226). En respuesta a determinar que el elemento de sintaxis no tiene el valor particular ("NO" de 224), el descodificador de vídeo 30 puede descodificar cada tesela de la imagen sin usar WPP, en donde la imagen tiene una o más teselas (228).
La figura 6 es un diagrama de flujo que ilustra una operación 230 de ejemplo del descodificador de vídeo 30 para descodificar datos de vídeo en la que no se permiten combinaciones de teselas y WPP dentro de una única imagen, de acuerdo con uno o más aspectos de esta divulgación. La figura 6 se proporciona como un ejemplo. En otros ejemplos, las técnicas de esta divulgación pueden implementarse usando más, menos o diferentes etapas que las mostradas en el ejemplo de la figura 6. La figura 6 puede ser un ejemplo más específico de la operación 220 de la figura 5.
En el ejemplo de la figura 6, el descodificador de vídeo 30 recibe un flujo de bits (231). El descodificador de vídeo 30 puede analizar, a partir del flujo de bits, un elemento de sintaxis (232). En algunos ejemplos, el flujo de bits incluye un SPS que incluye el elemento de sintaxis. En otros ejemplos, el flujo de bits incluye un PPS que incluye el elemento de sintaxis.
Posteriormente, el descodificador de vídeo 30 puede determinar si el elemento de sintaxis tiene un primer valor, por ejemplo, 0 (234). En el ejemplo de la figura 6, si el elemento de sintaxis tiene el primer valor ("SÍ" de 234), la imagen tiene una única tesela y el descodificador de vídeo 30 puede descodificar la única tesela de la imagen sin usar WPP (236).
Sin embargo, si el elemento de sintaxis no tiene el primer valor ("NO" de 234), el descodificador de vídeo 30 puede determinar si el elemento de sintaxis tiene un segundo valor, por ejemplo, 1 (238). En respuesta a determinar que el elemento de sintaxis tiene el segundo valor ("SÍ" de 238), el descodificador de vídeo 30 puede determinar que la imagen tiene múltiples teselas separadas uniformemente y el descodificador de vídeo 30 puede descodificar cada una de las teselas separadas uniformemente sin usar WPP (238).
Por otro lado, si el elemento de sintaxis no tiene el segundo valor ("NO" de 238), el descodificador de vídeo 30 puede determinar si el elemento de sintaxis tiene un tercer valor, por ejemplo, 2 (242). En respuesta a determinar que el elemento de sintaxis tiene el tercer valor ("SÍ" de 242), el descodificador de vídeo 30 puede determinar que la imagen tiene múltiples teselas separadas no uniformemente y el descodificador de vídeo 30 puede descodificar las teselas separadas no uniformemente de la imagen sin usar WPP (244). Sin embargo, en respuesta a determinar que el elemento de sintaxis no tiene el tercer valor ("NO" de 242), el descodificador de vídeo 30 puede descodificar la imagen completamente usando WPP (246). De esta forma, si el elemento de sintaxis tiene un primer valor (por ejemplo, 3), la imagen se codifica completamente usando WPP y, si el elemento de sintaxis tiene un segundo valor diferente del primer valor (por ejemplo, 0, 1 o 2), la imagen se subdivide en una o más teselas y la imagen se codifica sin usar WPP.
La figura 7 es un diagrama de flujo que ilustra una operación 270 de ejemplo del codificador de vídeo 20 para codificar datos de vídeo en la que cada fila de CTB de una imagen está en un subflujo separado, de acuerdo con uno o más aspectos de esta divulgación. En algunos sistemas de codificación de vídeo, existen diferentes formas de señalizar puntos de entrada para teselas y ondas de WPP. Esto puede añadir complejidad a estos sistemas de codificación de vídeo. Las técnicas de esta divulgación, y como se explica con respecto a las figuras 7 y 8, pueden resolver estas cuestiones proporcionando una sintaxis unificada para indicar puntos de entrada de teselas, ondas de WPP y, en algunos ejemplos, cortes de entropía.
En el ejemplo de la figura 7, el codificador de vídeo 20 señaliza que se usa WPP para codificar una imagen de una secuencia de imágenes de vídeo (272). El codificador de vídeo 20 puede señalizar de diversas formas que se usa WPP para codificar la imagen. Por ejemplo, el codificador de vídeo 20 puede generar un SPS que incluye un elemento de sintaxis (por ejemplo, "tile_mode") que indica si se va a usar WPP para descodificar completamente la imagen. En otro ejemplo, el codificador de vídeo 20 puede generar un PPS que incluye un elemento de sintaxis (por ejemplo, "tile_mode") que indica si se va a usar w Pp para descodificar la imagen.
Además, el codificador de vídeo 20 puede realizar WPP para generar una pluralidad de subflujos (274). Cada uno de los subflujos puede incluir una serie consecutiva de bits que representa una fila codificada de CTB en un corte de la imagen. Por lo tanto, cada fila de CTB se codifica como un subflujo. El codificador 20 de vídeo puede generar una unidad de NAL de corte codificado que incluye la pluralidad de subflujos (276). La unidad de NAL de corte codificado puede incluir un encabezamiento de corte y datos de corte que son conformes con las sintaxis de ejemplo de las Tablas 3 y 4, anteriormente.
La figura 8 es un diagrama de flujo que ilustra una operación 280 de ejemplo del descodificador de vídeo 30 para descodificar datos de vídeo en la que cada fila de CTB de una imagen está en un subflujo separado, de acuerdo con uno o más aspectos de esta divulgación. En el ejemplo de la figura 8, el descodificador de vídeo 30 recibe un flujo de bits que incluye una unidad de NAL de corte codificado (282). La unidad de NAL de corte codificado incluye una pluralidad de subflujos. Cada uno de los subflujos puede incluir una serie consecutiva de bits que representa una fila de CTB en un corte de una imagen. Además, en el ejemplo de la figura 8, el descodificador de vídeo 30 determina, basándose en uno o más elementos de sintaxis en el flujo de bits, que el corte se codifica usando WPP (284). Por ejemplo, el descodificador de vídeo 30 puede determinar, basándose en que un elemento de sintaxis tile_mode sea igual a 3, que el corte se codifica usando WPP. En este ejemplo, si el elemento de sintaxis tile_mode no es igual a 3, el descodificador de vídeo 30 puede descodificar cada una de las una o más teselas de la imagen sin usar WPP.
A continuación, el descodificador de vídeo 30 puede descodificar el corte usando WPP (286). Cuando el descodificador de vídeo 30 descodifica el corte, el descodificador de vídeo 30 puede analizar elementos de sintaxis asociados con los CTB del corte. El descodificador de vídeo 30 puede realizar un proceso de análisis de CABAC sobre algunos de los elementos de sintaxis como parte del análisis de los elementos de sintaxis asociados con los CTB.
La figura 9A es un diagrama de flujo que ilustra una primera porción de un proceso de análisis de CABAC 300 de ejemplo para analizar datos de corte, de acuerdo con uno o más aspectos de esta divulgación. El descodificador de vídeo 30 puede realizar el proceso de la figura 9A cuando se analizan elementos de sintaxis con un descriptor ae(v) en datos de corte y en una sintaxis de árbol de codificación. El proceso de la figura 9A puede generar un valor de un elemento de sintaxis.
En el ejemplo de la figura 9A, la unidad de descodificación por entropía 150 del descodificador de vídeo 30 realiza una inicialización del proceso de análisis de CABAC (302). En algunos ejemplos, la inicialización del proceso de análisis de CABAC es igual que la descrita en la subcláusula 9.2.1 del WD5 de HEVC.
Además, la unidad de descodificación por entropía 150 puede determinar una dirección de un CTB vecino (304). El CTB vecino puede ser un CTB que contiene un bloque que es vecino del CTB actual (es decir, el CTB que el descodificador de vídeo 30 está descodificando actualmente) a la izquierda, arriba a la izquierda, arriba o arriba a la derecha. En algunos ejemplos, la unidad de descodificación por entropía 150 puede determinar la dirección del CTB vecino como:
tbAddrT = cuAddress(x0 2 * (1 ≤≤ Log2MaxCUSize) - 1, y0 - 1)
En la fórmula anterior, tbAddrT denota la dirección del CTB vecino, x0 denota la coordenada x de una muestra de luma de arriba a la izquierda del CTB actual, y0 denota la coordenada y de la muestra de luma de arriba a la izquierda del CTB actual y Log2MaxCUSize denota el logaritmo, base 2, del tamaño máximo de una CU. La función cuAddress devuelve una dirección de una CU que incluye una coordenada x especificada por el primer parámetro y una coordenada y especificada por el segundo parámetro.
A continuación, la unidad de descodificación por entropía 150 puede usar la dirección del CTB vecino para determinar la disponibilidad del CTB vecino para una predicción dentro de la imagen (306). En otras palabras, la unidad de descodificación por entropía 150 puede determinar si la información asociada con el CTB vecino está disponible para su uso en la selección de un contexto de CABAC.
La unidad de descodificación por entropía 150 puede determinar la disponibilidad del CTB vecino para una predicción dentro de la imagen de diversas formas. Por ejemplo, la unidad de descodificación por entropía 150 puede realizar el proceso descrito en la subcláusula 6.4.3 del WD5, con tbAddrT como entrada, para determinar la disponibilidad del CTB vecino para una predicción dentro de la imagen. En otro ejemplo, la unidad de descodificación por entropía 150 puede determinar que un CTB está disponible para una predicción dentro de la imagen, a menos que una de las siguientes condiciones sea verdadera. Si una de las siguientes condiciones es verdadera, la unidad de descodificación por entropía 150 puede determinar que un CTB no está disponible para una predicción dentro de la imagen. En primer lugar, la unidad de descodificación por entropía 150 puede determinar que un CTB no está disponible para una predicción dentro de la imagen si la dirección del CTB es menor que 0. En segundo lugar, la unidad de descodificación por entropía 150 puede determinar que un CTB no está disponible para una predicción dentro de la imagen si la dirección del CTB es mayor que la dirección del CTB que la unidad de descodificación por entropía 150 está analizando actualmente. En tercer lugar, la unidad de descodificación por entropía 150 puede determinar que un CTB particular no está disponible para una predicción dentro de la imagen si el CTB particular pertenece a un corte diferente al del CTB que la unidad de descodificación por entropía 150 está analizando actualmente. Por ejemplo, si la dirección del CTB particular se denota como tbAddr y la dirección del CTB que la unidad de descodificación por entropía 150 está analizando actualmente se denota como CurrTbAddr, la unidad de descodificación por entropía 150 puede determinar que el CTB con la dirección tbAddr pertenece a un corte diferente al del CTB con la dirección CurrTbAddr. En cuarto lugar, la unidad de descodificación por entropía 150 puede determinar que un CTB no está disponible para una predicción dentro de la imagen si uno o más elementos de sintaxis en el flujo de bits indican que las teselas de la imagen que el descodificador de vídeo 30 está descodificando actualmente son descodificables de forma independiente y el CTB está en una tesela diferente a la del CTB que la unidad de descodificación por entropía 150 está analizando actualmente. Por ejemplo, la unidad de descodificación por entropía 150 puede determinar que un CTB no está disponible para una predicción dentro de la imagen si el elemento de sintaxis tile_boundary_independence_flag de la sintaxis de ejemplo de la Tabla 1 es igual a 1 y el CTB con la dirección tbAddr está contenido en una tesela diferente a la del CTB con la dirección CurrTbAddr.
Además, la unidad de descodificación por entropía 150 puede determinar si el elemento de sintaxis que la unidad de descodificación por entropía 150 está analizando actualmente (es decir, el elemento de sintaxis actual) está en una estructura de sintaxis de árbol de codificación (308). Si el elemento de sintaxis actual no está en una estructura de sintaxis de árbol de codificación ("NO" de 308), la unidad de descodificación por entropía 150 puede realizar la porción del proceso de análisis de CABAC 300 mostrado en la figura 9B. Por otro lado, si el elemento de sintaxis actual está en una estructura de árbol de codificación ("SÍ" de 308), la unidad de descodificación por entropía 150 puede determinar si las teselas de la imagen actual (es decir, la imagen que incluye el CTB actual) son descodificables de forma independiente (310). Por ejemplo, en la sintaxis de SPS de ejemplo de la Tabla 1, la unidad de descodificación por entropía 150 puede determinar que las teselas de la imagen actual son descodificables de forma independiente si un SPS asociado con la imagen actual incluye un elemento de sintaxis tile_boundary_independence_flag que es igual a 1. En respuesta a determinar que las teselas de la imagen actual son descodificables de forma independiente ("SÍ" de 310), la unidad de descodificación por entropía 150 puede realizar la porción del proceso de análisis de CABAC 300 mostrado en la figura 9B.
Sin embargo, en respuesta a determinar que las teselas de la imagen actual son descodificables de forma independiente ("NO" de 310), la unidad de descodificación por entropía 150 puede determinar si tbAddr % picWidthInLCUs es igual a 0, en donde tbAddr es la dirección del CTB vecino, % denota el operador módulo y picWidthInLCUs indica la anchura de la imagen actual en CTB (es decir, LCU) (312).
En respuesta a determinar que tbAddr % picWidthInLCUs es igual a 0 ("SÍ" de 312), la unidad de descodificación por entropía 150 puede determinar si el CTB vecino está disponible para una predicción dentro de la imagen (314). En algunos ejemplos, la unidad de descodificación por entropía 150 puede realizar, en la acción 306, un proceso para determinar un valor de una variable availableFlagT que indica si el CTB vecino está disponible para una predicción dentro de la imagen. Si la variable availableFlagT es igual a 1, el CTB vecino está disponible para una predicción dentro de la imagen. En la acción 314, la unidad de descodificación por entropía 150 puede determinar si la variable availableFlagT es igual a 1.
En respuesta a determinar que el CTB vecino está disponible para una predicción dentro de la imagen ("SÍ" de 314), la unidad de descodificación por entropía 150 puede realizar un proceso de sincronización del proceso de análisis de CABAC (316). En algunos ejemplos, la unidad de descodificación por entropía 150 puede realizar el proceso de sincronización descrito en la subcláusula 9.2.1.3 del WD5 de HEVC. Después de realizar el proceso de sincronización o en respuesta a determinar que el CTB vecino no está disponible para una predicción dentro de la imagen ("NO" de 314), la unidad de descodificación por entropía 150 puede realizar un proceso de descodificación para decisiones binarias antes de la terminación (318). En general, el proceso de descodificación para decisiones binarias antes de la terminación es un proceso de descodificación especial para descodificar por entropía los elementos de sintaxis end_of_slice_flag y pcm_flag. El descodificador de vídeo 30 puede usar la end_of_slice_flag y la pcm_flag para tomar decisiones binarias antes de la terminación del proceso de análisis de datos de corte. En algunos ejemplos, la unidad de descodificación por entropía 150 puede realizar el proceso de descodificación para decisiones binarias antes de la terminación, como se especifica en la subcláusula 9.2.3.2.4 del WD5 de HEVC.
Después de realizar el proceso de descodificación para decisiones binarias antes de la terminación (318), la unidad de descodificación por entropía 150 puede realizar un proceso de inicialización para un motor de descodificación aritmética (320). En algunos ejemplos, la unidad de descodificación por entropía 150 puede realizar el proceso de inicialización definido en la subcláusula 9.2.1.4 del WD5 de HEVC. Después de realizar el proceso de inicialización para el motor de descodificación aritmética, la unidad de descodificación por entropía 150 puede realizar la porción del proceso de análisis de CABAC 300 mostrada en la figura 9B.
Si tbAddr % picWidthInLCUs no es igual a 0 ("NO" de 312), la unidad de descodificación por entropía 150 puede determinar si tbAddr % picWidthInLCUs es igual a 2 (322). En otras palabras, la unidad de descodificación por entropía 150 puede determinar si la dirección de CTB del CTB vecino módulo la anchura de la imagen actual en CTB es igual a 2. En respuesta a determinar que tbAddr % picWidthInLCUs no es igual a 2, la unidad de descodificación por entropía 150 puede realizar la porción del proceso de análisis de CABAC 300 mostrada en la figura 9B. Sin embargo, en respuesta a determinar que tbAddr % picWidthInLCUs es igual a 2 ("SÍ" de 322), la unidad de descodificación por entropía 150 puede realizar un proceso de memorización (324). En general, el proceso de memorización emite variables usadas en el proceso de inicialización de variables de contexto que se asignan a elementos de sintaxis que no sean el elemento de sintaxis end_of_slice_flag. En algunos ejemplos, la unidad de descodificación por entropía 150 puede realizar el proceso de memorización definido en la subcláusula 9.2.1.2 del WD5 de HEVC. Después de realizar el proceso de memorización, la unidad de descodificación por entropía 150 puede realizar la porción del proceso de análisis de CABAC 300 mostrada en la figura 9B.
La figura 9B es un diagrama de flujo que ilustra una continuación del proceso de análisis de CABAC 300 de ejemplo de la figura 9A. Como se muestra en la figura 9B, la unidad de descodificación por entropía 150 puede binarizar el elemento de sintaxis actual (330). En otras palabras, la unidad de descodificación por entropía 150 puede derivar una binarización del elemento de sintaxis actual. La binarización de un elemento de sintaxis puede ser un conjunto de cadenas de valores binarios para todos los valores posibles del elemento de sintaxis. Una cadena de valores binarios es una cadena de valores binarios que es una representación intermedia de valores de elementos de sintaxis a partir de la binarización del elemento de sintaxis. En algunos ejemplos, la unidad de descodificación por entropía 150 puede realizar el proceso definido en la subcláusula 9.2.2 del WD5 de HEVC para derivar la binarización del elemento de sintaxis actual.
Además, la unidad de descodificación por entropía 150 puede determinar el flujo de proceso de codificación (332). La unidad de descodificación por entropía 150 puede determinar el flujo de proceso de codificación basándose en la binarización del elemento de sintaxis actual y en la secuencia de valores binarios analizados. En algunos ejemplos, la unidad de descodificación por entropía 150 puede determinar el flujo de proceso de codificación como se describe en la subcláusula 9.2.2.9 del WD5 de HEVC.
Además, la unidad de descodificación por entropía 150 puede determinar un índice de contexto para cada valor binario de la binarización del elemento de sintaxis actual (334). Cada uno de los valores binarios de la binarización del elemento de sintaxis actual se indexa mediante la variable binIdx y el índice de contexto para un valor binario de la binarización del elemento de sintaxis actual puede denotarse como ctxIdx. En algunos ejemplos, la unidad de descodificación por entropía 150 puede determinar el índice de contexto para un valor binario de la binarización del elemento de sintaxis actual como se especifica en la subcláusula 9.2.3.1 del WD5 de HEVC.
La unidad de descodificación por entropía 150 puede realizar un proceso de descodificación aritmética para cada índice de contexto (336). En algunos ejemplos, la unidad de descodificación por entropía 150 puede realizar el proceso de descodificación aritmética para cada índice de contexto como se especifica en la subcláusula 9.2.3.2 del WD5 de HEVC. Al realizar el proceso de descodificación aritmética para cada índice de contexto, la unidad de descodificación por entropía 150 puede generar una secuencia de valores binarios analizados.
La unidad de descodificación por entropía 150 puede determinar si la secuencia de valores binarios analizados coincide con una cadena de valores binarios en el conjunto de cadenas de valores binarios producidas por la binarización del elemento de sintaxis actual (340). Si la secuencia de valores binarios analizados coincide con una cadena de valores binarios en el conjunto de cadenas de valores binarios producidas por la binarización del elemento de sintaxis actual ("SÍ" de 340), la unidad de descodificación por entropía 150 puede asignar un valor correspondiente al elemento de sintaxis actual (342). Después de asignar el valor correspondiente al elemento de sintaxis actual o en respuesta a determinar que la secuencia de valores binarios analizados no coincide con ninguna cadena de valores binarios en el conjunto de cadenas de valores binarios producidas por la binarización del elemento de sintaxis actual ("NO" de 340), la unidad de descodificación por entropía 150 ha finalizado el análisis del elemento de sintaxis actual.
En algunos ejemplos, si el elemento de sintaxis actual es el elemento de sintaxis mb_type y el valor descodificado del elemento de sintaxis mb_type es igual a I_PCM, la unidad de descodificación por entropía 150 puede inicializarse después de descodificar cualquier elemento de sintaxis pcm_alignment_zero_bit y todos los datos de pcm_sample_luma y de pcm_sample_chroma como se especifica en la subcláusula 9.2.1.2 del WD5 de HEVC.
La figura 10 es un diagrama conceptual que ilustra un ejemplo de WPP. Como se ha descrito anteriormente, una imagen puede subdividirse en bloques de píxeles, cada uno de los cuales se asocia a un CTB. La figura 10 ilustra los bloques de píxeles asociados con los CTB como una cuadrícula de cuadrados blancos. La imagen incluye las filas de CTB 350A-350E (colectivamente, las "filas de CTB 350").
Un primer subproceso de procesamiento paralelo (por ejemplo, ejecutado por uno de una pluralidad de núcleos de procesamiento paralelo) puede estar codificando los CTB en la fila de CTB 350A. Concurrentemente, otros subprocesos (por ejemplo, ejecutados por otros núcleos de procesamiento paralelo) pueden estar codificando los CTB en las filas de CTB 350B, 350C y 350D. En el ejemplo de la figura 10, el primer subproceso está codificando actualmente un CTB 352A, un segundo subproceso está codificando actualmente un CTB 352B, un tercer subproceso está codificando actualmente un CTB 352C y un cuarto subproceso está codificando actualmente un CTB 352D. Esta divulgación puede referirse a los CTB 352A, 352B, 352C y 352D colectivamente como los "CTB 352 actuales". Debido a que el codificador de vídeo puede comenzar a codificar una fila de CTB después de que se hayan codificado más de dos CTB de una fila inmediatamente superior, los CTB 352 actuales se desplazan horizontalmente entre sí las anchuras de dos CTB.
En el ejemplo de la figura 10, los subprocesos pueden usar datos de CTB indicados por las flechas grises gruesas para realizar una intra predicción o inter predicción para las CU sobre los CTB actuales 352 (los subprocesos también pueden usar datos de uno o más fotogramas de referencia para realizar inter predicción para las CU). Para codificar un CTB dado, un subproceso puede seleccionar uno o más contextos de CABAC basándose en información asociada con CTB previamente codificados. El subproceso puede usar los uno o más contextos de CABAC para realizar una codificación CABAC sobre elementos de sintaxis asociados con la primera CU del CTB dado. Si el CTB dado no es el CTB más a la izquierda de una fila, el subproceso puede seleccionar los uno o más contextos de CABAC basándose en información asociada con una última CU del CTB a la izquierda del CTB dado. Si el CTB dado es el CTB más a la izquierda de una fila, el subproceso puede seleccionar los uno o más contextos de CABAC basándose en información asociada con una última CU de un CTB que está arriba y dos CTB a la derecha del CTB dado. Los subprocesos pueden usar datos a partir de las últimas CU de los CTB indicados por las flechas negras delgadas para seleccionar contextos de CABAC para las primeras CU de los CTB 352 actuales.
La figura 11 es un diagrama conceptual que ilustra un orden de codificación de CTB de ejemplo para una imagen 400 que se subdivide en múltiples teselas 402A, 402B, 402C, 402D, 402E y 402F (colectivamente, las "teselas 402"). Cada bloque cuadrado en la imagen 400 representa un bloque de píxeles asociado con un CTB. Las líneas de trazo discontinuo y grueso indican los límites de tesela de ejemplo. Los diferentes tipos de entramado cruzado corresponden a diferentes cortes.
Los números en los bloques de píxeles indican posiciones de los CTB (LCU) correspondientes en un orden de codificación de tesela para la imagen 400. Como se ilustra en el ejemplo de la figura 11, los CTB en la tesela 402A se codifican en primer lugar, seguidos de los CTB en la tesela 402B, los CTB en la tesela 402C, los CTB en la tesela 402D, los CTB en la tesela 402E y los CTB en la tesela 402F. Dentro de cada una de las teselas 402, los CTB se codifican de acuerdo con un orden de exploración por filas.
Un codificador de vídeo puede generar cuatro unidades de NAL de corte codificado para la imagen 400. La primera unidad de NAL de corte codificado puede incluir representaciones codificadas de los CTB 1-18. Los datos de corte de la primera unidad de NAL de corte codificado pueden incluir dos subflujos. El primer subflujo puede incluir las representaciones codificadas de los CTB 1-9. El segundo subflujo puede incluir las representaciones codificadas de los CTB 10-18. Por lo tanto, la primera unidad de NAL de corte codificado puede incluir una representación codificada de un corte que contiene múltiples teselas.
Una segunda unidad de NAL de corte codificado puede incluir representaciones codificadas de los CTB 19-22. Los datos de corte de la segunda unidad de NAL de corte codificado pueden incluir un único subflujo. Una tercera unidad de NAL de corte codificado puede incluir representaciones codificadas de los CTB 23-27. Los datos de corte de la tercera unidad de NAL de corte codificado pueden incluir solo un único subflujo. Por lo tanto, la tesela 402C puede contener múltiples cortes.
Una cuarta unidad de NAL de corte codificado puede incluir representaciones codificadas de los CTB 28-45. Los datos de corte de la cuarta unidad de NAL de corte codificado pueden incluir tres subflujos, uno para cada una de las teselas 402D, 402E y 402F. Por lo tanto, la cuarta unidad de NAL de corte codificado puede incluir una representación codificada de un corte que contiene múltiples teselas.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través de, como una o más instrucciones o código, un medio legible por ordenador, y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que son no 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 puedan acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no como limitación, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda acceder un ordenador. Además, cualquier conexión se denomina apropiadamente medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces se incluyen en la definición de medio el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio y microondas. Sin embargo, debería entenderse que medios de almacenamiento legibles por ordenador y medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en su lugar, se refieren a medios de almacenamiento tangibles no transitorios. Disco magnético y disco óptico, como se usan en el presente documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, en donde los discos magnéticos normalmente reproducen datos magnéticamente, mientras que los discos ópticos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior deberían incluirse también dentro del alcance de medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables en campo (FPGA) u otra circuitería integrada o de lógica discreta equivalente. Por consiguiente, el término "procesador", como se usa en el presente documento, puede hacer referencia a cualquiera de la estructura anterior o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software especializados configurados para codificar y descodificar, o incorporarse en un códec combinado. Asimismo, las técnicas podrían implementarse totalmente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, incluyendo un microteléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos o unidades en esta divulgación para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su materialización por diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware inter operativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.
Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (15)

REIVINDICACIONES
1. Un método (220, 230) para descodificar datos de vídeo, comprendiendo el método:
analizar (222, 232) un elemento de sintaxis a partir de un flujo de bits, incluyendo el flujo de bits una unidad de capa de abstracción de red (NAL) de corte codificado para un corte de una imagen (400) de los datos de vídeo, incluyendo el corte un encabezamiento de corte seguido de datos de corte, subdividiéndose la imagen en una cuadrícula de bloques de árbol de codificación (CTB) (352A-D), estando asociado cada CTB con un bloque de píxeles diferente de igual tamaño dentro de la imagen, incluyendo la unidad de NAL de corte codificado una pluralidad de subflujos, en donde, cuando el elemento de sintaxis tiene un valor particular, esto indica que cada fila respectiva de CTB de la imagen forma una tesela respectiva de la imagen, en donde cada subflujo respectivo de la pluralidad de subflujos contiene o bien todos los bits codificados de una tesela respectiva de la imagen, o bien un número de bits codificados finales de la tesela respectiva, o bien un número de bits codificados iniciales de la tesela respectiva, y ninguno de los subflujos contiene bits codificados de más de una tesela de la imagen; determinar, basándose en el elemento de sintaxis, si los subflujos incluyen bits de relleno que aseguran la alineación en bytes de los subflujos;
determinar, basándose en el elemento de sintaxis, si un encabezamiento de corte incluye una pluralidad de elementos de sintaxis de desplazamiento; y
en respuesta a determinar (224) que el elemento de sintaxis tiene el valor particular, usar la pluralidad de elementos de sintaxis de desplazamiento para determinar puntos de entrada de subflujos en los datos de corte y descodificar (226, 246) cada tesela de la imagen usando un procesamiento paralelo de frente de onda (WPP), en donde descodificar usando WPP comprende descodificar CTB de una fila (350A-E) de la imagen de izquierda a derecha después de que se hayan descodificado dos o más CTB de una fila inmediatamente superior de la imagen, en donde, cuando el elemento de sintaxis tiene el valor particular, se invoca un proceso de memorización después de descodificar dos CTB de una fila de CTB de la imagen y se invoca un proceso de sincronización antes de descodificar el primer CTB de una fila de CTB,
en donde, cuando el elemento de sintaxis no tiene el valor particular, la imagen tiene una o más teselas (402A-F) y cada tesela de la imagen se descodifica (228, 236, 240, 244) sin usar WPP.
2. El método de la reivindicación 1, en donde, en respuesta a determinar que el elemento de sintaxis no tiene el valor particular, comprende además:
analizar un segundo elemento de sintaxis a partir del flujo de bits, incluyendo el flujo de bits una representación codificada de una segunda imagen de los datos de vídeo, subdividiéndose la segunda imagen en una cuadrícula de CTB, en donde la segunda imagen se subdivide en al menos una primera tesela y una segunda tesela; en respuesta a determinar que el segundo elemento de sintaxis no tiene el valor particular, descodificar, en paralelo, un CTB de la primera tesela y un CTB de la segunda tesela.
3. El método de la reivindicación 1, que comprende además:
determinar que un conjunto de parámetros incluye un elemento de sintaxis de número de columnas de teselas y un elemento de sintaxis de número de filas de teselas;
determinar, basándose en el elemento de sintaxis de número de columnas de teselas, un número especificado de columnas de teselas, en donde un número de columnas de teselas de cada imagen asociada con el conjunto de parámetros es igual al número especificado de columnas de teselas; y
determinar, basándose en el elemento de sintaxis de número de filas de teselas, un número especificado de filas de teselas, en donde un número de filas de teselas de cada imagen asociada con el conjunto de parámetros es igual al número especificado de filas de teselas.
4. El método de la reivindicación 1, en donde el elemento de sintaxis es un primer elemento de sintaxis, el valor particular es un primer valor, y el método comprende además determinar, basándose en que el primer elemento de sintaxis tenga un segundo valor, que la imagen incluye solo una tesela y que el flujo de bits incluye un segundo elemento de sintaxis, indicando el segundo elemento de sintaxis si los cortes de entropía están habilitados para representaciones codificadas de las imágenes que se refieren a un conjunto de parámetros que incluye el primer y el segundo elementos de sintaxis.
5. El método de la reivindicación 1, en donde descodificar la imagen usando WPP comprende:
en respuesta a determinar que un primer CTB está separado de un límite izquierdo de la imagen por un único CTB, almacenar variables de contexto asociadas con el primer CTB; y
descodificar por entropía, basándose al menos en parte en las variables de contexto asociadas con el primer CTB, uno o más elementos de sintaxis de un segundo CTB, siendo el segundo CTB adyacente al límite izquierdo de la imagen y estando una fila de CTB más abajo que el primer CTB.
6. Un método (200) para codificar datos de vídeo, comprendiendo el método:
generar, en un flujo de bits, una unidad de capa de abstracción de red (NAL) de corte codificado para un corte de una imagen (400) de los datos de vídeo que se subdivide en una cuadrícula de bloques de árbol de codificación (CTB) (352A-D), estando asociado cada uno con un bloque de píxeles diferente de igual tamaño dentro de la imagen, incluyendo el corte un encabezamiento de corte seguido de datos de corte, incluyendo la unidad de NAL de corte codificado una pluralidad de subflujos
generar (208) un elemento de sintaxis en el flujo de bits;
en donde que el elemento de sintaxis tenga un valor particular indica que cada fila respectiva de CTB de la imagen forma una tesela respectiva de la imagen, en donde cada subflujo respectivo contiene o bien todos los bits codificados de una tesela respectiva de la imagen, o bien un número de bits codificados finales de la tesela respectiva, o bien un número de bits de codificación iniciales de la tesela respectiva, y ninguno de los subflujos contiene bits codificados de más de una tesela de la imagen,
en donde que el elemento de sintaxis no tenga el valor particular indica que la imagen tiene una o más teselas (402A-F) y cada tesela de la imagen que tiene uno o más CTB en el corte es representada por uno solo de los subflujos y cada tesela de la imagen se codifica sin usar WPP, en donde codificar usando WPP comprende codificar CTB de una fila (350A-E) de izquierda a derecha después de que se hayan codificado dos o más CTB de una fila inmediatamente superior;
en donde, cuando el elemento de sintaxis tiene el valor particular, incluir bits de relleno en los subflujos para asegurar la alineación en bytes de los subflujos; en donde, cuando el elemento de sintaxis tiene el valor particular, incluir una pluralidad de elementos de sintaxis de desplazamiento en el encabezamiento de corte, identificando, la pluralidad de elementos de sintaxis de desplazamiento, puntos de entrada de subflujos en los datos de corte; y en donde, cuando el elemento de sintaxis tiene el valor particular, se invoca un proceso de memorización después de descodificar dos CTB de una fila de CTB de la imagen y se invoca un proceso de sincronización antes de descodificar el primer CTB de una fila de CTB.
7. El método de la reivindicación 6, que comprende además incluir un segundo elemento de sintaxis en el flujo de bits, incluyendo el flujo de bits una representación codificada de una segunda imagen de los datos de vídeo, subdividiéndose la segunda imagen en una cuadrícula de CTB, no teniendo el segundo elemento de sintaxis el valor particular, en donde la segunda imagen se subdivide en al menos una primera tesela y una segunda tesela y codificar, en paralelo, un bloque de árbol de codificación (CTB) de la primera tesela y un CTB de la segunda tesela.
8. El método de la reivindicación 6, en donde generar el flujo de bits comprende generar un conjunto de parámetros que incluye un elemento de sintaxis de número de columnas de teselas y un elemento de sintaxis de número de filas de teselas, siendo determinable el número de columnas de teselas basándose en el elemento de sintaxis de número de columnas de teselas y el número de columnas de teselas de cada imagen asociada con el conjunto de parámetros es igual al número de columnas de teselas, y siendo determinable el número de filas de teselas basándose en el elemento de sintaxis de número de filas de teselas y el número de filas de teselas de cada imagen asociada con el conjunto de parámetros es igual al número de filas de teselas.
9. El método de la reivindicación 6, en donde el elemento de sintaxis es un primer elemento de sintaxis, el elemento de sintaxis indica que la imagen se codifica de acuerdo con el segundo modo de codificación, la imagen se subdivide en una única tesela, y el flujo de bits incluye un segundo elemento de sintaxis, indicando el segundo elemento de sintaxis si los cortes de entropía están habilitados para una representación codificada de las imágenes que se refieren a un conjunto de parámetros que incluye el primer y el segundo elementos de sintaxis.
10. El método de la reivindicación 6, que comprende además usar WPP para codificar la imagen, en donde usar WPP para codificar la imagen comprende:
en respuesta a determinar que un primer CTB está separado de un límite izquierdo de la imagen por un único CTB, almacenar variables de contexto asociadas con el primer CTB; y
codificar por entropía, basándose al menos en parte en las variables de contexto asociadas con el primer CTB, uno o más elementos de sintaxis de un segundo CTB, siendo el segundo CTB adyacente al límite izquierdo de la imagen y estando una fila de CTB más abajo que el primer CTB.
11. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando son ejecutadas por uno o más procesadores, hace que un dispositivo lleve a cabo un método de acuerdo con cualquiera de las reivindicaciones 1 a 10.
12. Un dispositivo de descodificación de vídeo (14) que comprende:
unos medios para analizar (222, 232) un elemento de sintaxis a partir de un flujo de bits, incluyendo el flujo de bits una unidad de capa de abstracción de red (NAL) de corte codificado para un corte de una imagen (400) de datos de vídeo, incluyendo el corte un encabezamiento de corte seguido de datos de corte, subdividiéndose la imagen en una cuadrícula de bloques de árbol de codificación (CTB) (352A-D), estando asociado cada CTB con un bloque de píxeles diferente de igual tamaño dentro de la imagen, incluyendo la unidad de NAL de corte codificado una pluralidad de subflujos, en donde, cuando la sintaxis tiene un valor particular, esto indica que cada fila respectiva de CTB de la imagen forma una tesela respectiva de la imagen, en donde cada subflujo respectivo de la pluralidad de subflujos contiene o bien todos los bits codificados de una tesela respectiva de la imagen, o bien un número de bits codificados finales de la tesela respectiva, o bien un número de bits codificados iniciales de la tesela respectiva, y ninguno de los subflujos contiene bits codificados de más de una tesela de la imagen;
unos medios para determinar, basándose en el elemento de sintaxis, si un encabezamiento de corte incluye una pluralidad de elementos de sintaxis de desplazamiento;
unos medios para determinar, basándose en el elemento de sintaxis, si los subflujos incluyen bits de relleno que aseguran la alineación en bytes de los subflujos; y
unos medios para, en respuesta a determinar (224) que el elemento de sintaxis tiene el valor particular, usar la pluralidad de elementos de sintaxis de desplazamiento para determinar puntos de entrada de subflujos en los datos de corte y descodificar (226, 246) cada tesela de la imagen usando un procesamiento paralelo de frente de onda (WPP), en donde descodificar usando WPP comprende descodificar CTB de una fila de la imagen de izquierda a derecha después de que se hayan descodificado dos o más CTB de una fila inmediatamente superior de la imagen, en donde, cuando el elemento de sintaxis tiene el valor particular, se invoca un proceso de memorización después de descodificar dos CTB de una fila de CTB de la imagen y se invoca un proceso de sincronización antes de descodificar el primer CTB de una fila de CTB; y
en donde, cuando el elemento de sintaxis no tiene el valor particular, la imagen tiene una o más teselas (402A-F) y cada tesela de la imagen se descodifica (228, 236, 240, 244) sin usar WPP.
13. El dispositivo de descodificación de vídeo de la reivindicación 12, que comprende unos medios para llevar a cabo un método de acuerdo con cualquiera de las reivindicaciones 2 a 5.
14. Un dispositivo de codificación de vídeo (12) que comprende:
unos medios para generar, en un flujo de bits, una unidad de capa de abstracción de red (NAL) de corte codificado para un corte de una imagen (400) de datos de vídeo que se subdivide en una cuadrícula de bloques de árbol de codificación (CTB) (352A-D), incluyendo el corte un encabezamiento de corte seguido de datos de corte, estando asociado cada uno con un bloque de píxeles diferente de igual tamaño dentro de la imagen, incluyendo la unidad de NAL de corte codificado una pluralidad de subflujos; y
unos medios para generar (208) un elemento de sintaxis en el flujo de bits,
en donde que el elemento de sintaxis tenga un valor particular indica que cada fila respectiva de CTB de la imagen forma una tesela respectiva de la imagen, en donde cada subflujo respectivo contiene o bien todos los bits codificados de una tesela respectiva de la imagen, o bien un número de bits codificados finales de la tesela respectiva, o bien un número de bits de codificación iniciales de la tesela respectiva, y ninguno de los subflujos contiene bits codificados de más de una tesela de la imagen y los subflujos incluyen bits de relleno que aseguran la alineación en bytes, e incluyendo una pluralidad de elementos de sintaxis de desplazamiento en el encabezamiento de corte, identificando, la pluralidad de elementos de sintaxis de desplazamiento, puntos de entrada de subflujos en los datos de corte y en donde, cuando el elemento de sintaxis tiene el valor particular, se invoca un proceso de memorización después de descodificar dos CTB de una fila de CTB de la imagen y se invoca un proceso de sincronización antes de descodificar el primer CTB de una fila de CTB,
en donde que el elemento de sintaxis no tenga el valor particular indica que la imagen tiene una o más teselas (402A-F) y cada tesela de la imagen que tiene uno o más CTB en el corte es representada por uno solo de los subflujos y cada tesela de la imagen se codifica sin usar WPP, en donde codificar usando WPP comprende codificar CTB de una fila (350A-E) de izquierda a derecha después de que se hayan codificado dos o más CTB de una fila inmediatamente superior.
15. El dispositivo de descodificación de vídeo de la reivindicación 14, que comprende unos medios para llevar a cabo un método de acuerdo con cualquiera de las reivindicaciones 7 a 10.
ES12809552T 2012-01-18 2012-12-19 Indicación de uso de un procesamiento paralelo de frente de onda en una codificación de vídeo Active ES2952775T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261588096P 2012-01-18 2012-01-18
US13/718,883 US9332259B2 (en) 2012-01-18 2012-12-18 Indication of use of wavefront parallel processing in video coding
PCT/US2012/070680 WO2013109382A2 (en) 2012-01-18 2012-12-19 Indication of use of wavefront parallel processing in video coding

Publications (1)

Publication Number Publication Date
ES2952775T3 true ES2952775T3 (es) 2023-11-06

Family

ID=48779951

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12809552T Active ES2952775T3 (es) 2012-01-18 2012-12-19 Indicación de uso de un procesamiento paralelo de frente de onda en una codificación de vídeo

Country Status (20)

Country Link
US (2) US9332259B2 (es)
EP (2) EP2805489B1 (es)
JP (2) JP6151276B2 (es)
KR (2) KR102057352B1 (es)
CN (2) CN104054348B (es)
AU (2) AU2012366143B2 (es)
BR (2) BR112014017379B1 (es)
CA (2) CA2860762C (es)
ES (1) ES2952775T3 (es)
HK (2) HK1198236A1 (es)
IL (2) IL233321B (es)
MY (2) MY165064A (es)
PH (2) PH12014501531A1 (es)
PL (1) PL2805488T3 (es)
RU (2) RU2609073C2 (es)
SG (3) SG10201605295XA (es)
TW (2) TWI478588B (es)
UA (2) UA111879C2 (es)
WO (2) WO2013109383A1 (es)
ZA (1) ZA201406023B (es)

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8971656B2 (en) * 2009-12-10 2015-03-03 Sk Telecom Co., Ltd. Encoding/decoding method and apparatus using a tree structure
US8767824B2 (en) 2011-07-11 2014-07-01 Sharp Kabushiki Kaisha Video decoder parallelization for tiles
KR102417101B1 (ko) * 2011-12-29 2022-07-05 엘지전자 주식회사 비디오 인코딩 및 디코딩 방법과 이를 이용하는 장치
US9332259B2 (en) 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
KR101673021B1 (ko) 2012-01-30 2016-11-04 삼성전자 주식회사 공간 서브영역별로 비디오를 부호화하는 방법 및 그 장치, 공간 서브영역별로 비디오를 복호화하는 방법 및 그 장치
CN104285444B (zh) 2012-02-04 2017-11-14 Lg 电子株式会社 视频编码方法、视频解码方法和使用其的设备
KR102489001B1 (ko) 2012-03-22 2023-01-18 엘지전자 주식회사 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
ES2961943T3 (es) 2012-06-26 2024-03-14 Lg Electronics Inc Método de decodificación de vídeo, método de codificación de vídeo y medio de almacenamiento que almacena información de video codificada
US9621905B2 (en) * 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
EP2941868B1 (en) * 2013-01-07 2020-07-08 Nokia Technologies Oy Method and apparatus for video coding and decoding
KR102107270B1 (ko) * 2013-07-15 2020-05-06 소니 주식회사 상호작용성을 위한 모션-구속된 타일 세트들 sei 메시지의 확장들
US11425395B2 (en) 2013-08-20 2022-08-23 Google Llc Encoding and decoding using tiling
US9270999B2 (en) 2013-09-25 2016-02-23 Apple Inc. Delayed chroma processing in block processing pipelines
US9305325B2 (en) 2013-09-25 2016-04-05 Apple Inc. Neighbor context caching in block processing pipelines
US9299122B2 (en) 2013-09-25 2016-03-29 Apple Inc. Neighbor context processing in block processing pipelines
US9571846B2 (en) 2013-09-27 2017-02-14 Apple Inc. Data storage and access in block processing pipelines
US9215472B2 (en) 2013-09-27 2015-12-15 Apple Inc. Parallel hardware and software block processing pipelines
US9218639B2 (en) 2013-09-27 2015-12-22 Apple Inc. Processing order in block processing pipelines
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
US10506254B2 (en) 2013-10-14 2019-12-10 Microsoft Technology Licensing, Llc Features of base color index map mode for video and image coding and decoding
JP6359101B2 (ja) 2013-10-14 2018-07-18 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像の符号化及び復号のためのイントラブロックコピー予測モードの特徴
KR101718830B1 (ko) * 2013-10-30 2017-03-23 한국전자통신연구원 부호화 모드에 따른 적응적 병렬처리가 적용된 고속 비디오 복호화 방법 및 장치
RU2669005C2 (ru) 2014-01-03 2018-10-05 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Предсказание вектора блока в кодировании/декодировании видео и изображений
US9860540B2 (en) * 2014-01-03 2018-01-02 Qualcomm Incorporated Inference of nooutputofpriorpicsflag in video coding
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
KR102311815B1 (ko) 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
WO2015194394A1 (ja) * 2014-06-20 2015-12-23 ソニー株式会社 画像符号化装置および方法、並びに画像復号装置および方法
US10257529B2 (en) * 2014-06-30 2019-04-09 Intel Corporation Techniques for generating wave front groups for parallel processing a video frame by a video encoder
US9807410B2 (en) 2014-07-02 2017-10-31 Apple Inc. Late-stage mode conversions in pipelined video encoders
US20160014415A1 (en) * 2014-07-08 2016-01-14 Mediatek Inc. Method and apparatus for performing wave-front parallel encoding procedure with constraint on coding mode and/or quantization parameter selection
KR20230156433A (ko) 2014-08-07 2023-11-14 디빅스, 엘엘씨 독립적으로 인코딩된 타일을 포함한 기본 비트스트림을 보호하는 시스템 및 방법
WO2016041507A1 (en) * 2014-09-17 2016-03-24 Mediatek Inc. Syntax parsing apparatus with multiple syntax parsing circuits for processing multiple image regions within same frame or processing multiple frames and related syntax parsing method
EP3202150B1 (en) 2014-09-30 2021-07-21 Microsoft Technology Licensing, LLC Rules for intra-picture prediction modes when wavefront parallel processing is enabled
GB2531001B (en) * 2014-10-06 2019-06-05 Canon Kk Method and apparatus for vector encoding in video coding and decoding
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing
US20160105678A1 (en) * 2014-10-13 2016-04-14 Microsoft Technology Licensing, Llc Video Parameter Techniques
CN105847825A (zh) * 2015-01-16 2016-08-10 杭州海康威视数字技术股份有限公司 视频编码码流的编码、索引存储和访问方法及相应装置
US9942551B2 (en) * 2015-01-30 2018-04-10 Qualcomm Incorporated Palette index grouping for video coding
JP6717562B2 (ja) * 2015-02-06 2020-07-01 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 画像符号化方法、画像復号方法、画像符号化装置及び画像復号装置
US10958927B2 (en) * 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
US10334248B2 (en) * 2015-05-29 2019-06-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
EP3308540B1 (en) 2015-06-09 2020-04-15 Microsoft Technology Licensing, LLC Robust encoding/decoding of escape-coded pixels in palette mode
US20170019679A1 (en) * 2015-07-15 2017-01-19 Mediatek Inc. Hybrid video decoding apparatus for performing hardware entropy decoding and subsequent software decoding and associated hybrid video decoding method
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US9451291B1 (en) * 2015-08-31 2016-09-20 Radmilo Bozinovic Fast DWT-based intermediate video codec optimized for massively parallel architecture
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
US10855989B2 (en) * 2016-06-09 2020-12-01 Qualcomm Incorporated Substream multiplexing for display stream compression
US20190253624A1 (en) * 2017-07-17 2019-08-15 Ki Baek Kim Image data encoding/decoding method and apparatus
JP6767691B2 (ja) * 2016-10-18 2020-10-14 パナソニックIpマネジメント株式会社 画像符号化方法、伝送方法および画像符号化装置
JP2018107500A (ja) * 2016-12-22 2018-07-05 キヤノン株式会社 符号化装置、符号化方法及びプログラム、復号装置、復号方法及びプログラム
US10999602B2 (en) 2016-12-23 2021-05-04 Apple Inc. Sphere projected motion estimation/compensation and mode decision
US11259046B2 (en) 2017-02-15 2022-02-22 Apple Inc. Processing of equirectangular object data to compensate for distortion by spherical projections
US10924747B2 (en) 2017-02-27 2021-02-16 Apple Inc. Video coding techniques for multi-view video
US11093752B2 (en) 2017-06-02 2021-08-17 Apple Inc. Object tracking in multi-view video
US20190005709A1 (en) * 2017-06-30 2019-01-03 Apple Inc. Techniques for Correction of Visual Artifacts in Multi-View Images
US10754242B2 (en) 2017-06-30 2020-08-25 Apple Inc. Adaptive resolution and projection format in multi-direction video
KR102654647B1 (ko) * 2017-10-20 2024-04-04 인텔렉추얼디스커버리 주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN111837397B (zh) * 2018-04-03 2023-09-22 华为技术有限公司 基于子图像码流的视角相关视频编码中的错误消除的码流指示
WO2019234604A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Extended quad-tree with asymmetric sub-blocks
CN116781935A (zh) 2018-09-14 2023-09-19 华为技术有限公司 视频译码中的分块指示
US11653010B2 (en) * 2018-12-21 2023-05-16 Sharp Kabushiki Kaisha Moving image encoding device and moving image decoding device
CN113273193A (zh) 2018-12-31 2021-08-17 华为技术有限公司 用于分块配置指示的编码器,解码器及对应方法
HRP20230682T1 (hr) * 2019-01-09 2023-10-13 Huawei Technologies Co., Ltd. Ograničenja položaja podslike kod kodiranja videa
BR112020022109A2 (pt) * 2019-01-16 2021-07-27 Telefonaktiebolaget Lm Ericsson (Publ) método para decodificação de uma figura, programa de computador, portadora, e, aparelho de decodificação para decodificação de uma figura.
KR20210121072A (ko) * 2019-02-07 2021-10-07 인터디지털 브이씨 홀딩스 인코포레이티드 포인트 클라우드의 처리
JP7427688B2 (ja) * 2019-03-06 2024-02-05 シャープ株式会社 ビデオ符号化におけるタイルグループ情報をシグナリングするためのシステム及び方法
CN113574541A (zh) * 2019-03-11 2021-10-29 华为技术有限公司 视频译码中的基于子图像的条带地址
AU2019201649A1 (en) * 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
CN117255200A (zh) 2019-04-24 2023-12-19 字节跳动有限公司 编解码视频的量化残差差分脉冲编解码调制表示
CN117857783A (zh) 2019-05-01 2024-04-09 字节跳动有限公司 使用量化残差差分脉冲码调制编解码的帧内编解码视频
EP3948663A4 (en) 2019-05-02 2022-06-08 ByteDance Inc. CODING MODE BASED ON A CODING TREE STRUCTURE TYPE
EP3957071B1 (en) * 2019-05-03 2024-04-03 Huawei Technologies Co., Ltd. Wavefront parallel processing for tile, brick, and slice
US11197009B2 (en) * 2019-05-30 2021-12-07 Hulu, LLC Processing sub-partitions in parallel using reference pixels
US11202070B2 (en) * 2019-05-30 2021-12-14 Hulu, LLC Parallel bi-directional intra-coding of sub-partitions
US11212530B2 (en) * 2019-06-24 2021-12-28 Tencent America LLC Method for slice, tile and brick signaling
EP4307665A2 (en) 2019-08-10 2024-01-17 Beijing Bytedance Network Technology Co., Ltd. Buffer management in subpicture decoding
US11153576B2 (en) * 2019-09-20 2021-10-19 Qualcomm Incorporated Scaling matrices and signaling for video coding
US11356685B2 (en) * 2019-09-23 2022-06-07 Qualcomm Incorproated Signaling number of sub-pictures in high-level syntax for video coding
CN114556952A (zh) * 2019-10-02 2022-05-27 北京字节跳动网络技术有限公司 包括子图片的视频比特流中的条带级信令通知
EP4333431A1 (en) * 2019-10-18 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Syntax constraints in parameter set signaling of subpictures
CN113038140A (zh) * 2019-12-24 2021-06-25 扬智电子科技(中国)有限公司 视频解码方法与视频解码装置
WO2021164782A1 (en) * 2020-02-21 2021-08-26 Beijing Bytedance Network Technology Co., Ltd. Slice and tile partitioning in video coding
WO2021169859A1 (en) * 2020-02-28 2021-09-02 Huawei Technologies Co., Ltd. A decoder and corresponding methods to signal picture partitioning information for slices
CN115606183A (zh) 2020-04-07 2023-01-13 抖音视界有限公司(Cn) 参考图片环绕的剪裁操作
KR20220163392A (ko) 2020-04-09 2022-12-09 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 디블로킹 시그널링
CN115486064A (zh) 2020-04-10 2022-12-16 抖音视界有限公司 标头语法元素和自适应参数集的使用
WO2021209061A1 (en) 2020-04-17 2021-10-21 Beijing Bytedance Network Technology Co., Ltd. Presence of adaptation parameter set units
EP4128775A4 (en) 2020-04-26 2024-03-27 Bytedance Inc CONDITIONAL SIGNALING OF SYNTAX ELEMENTS OF A VIDEO CODING
US11924435B2 (en) * 2020-05-15 2024-03-05 Intel Corporation High quality advanced neighbor management encoder architecture
CN117356095A (zh) * 2021-04-21 2024-01-05 抖音视界有限公司 用于视频处理的方法、设备和介质
CN114339291A (zh) * 2021-12-31 2022-04-12 杭州当虹科技股份有限公司 流媒体视频缩放播放的方法
CN117676146A (zh) * 2022-09-08 2024-03-08 华为技术有限公司 一种编解码方法及装置
CN115499667B (zh) * 2022-11-17 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种视频处理方法、装置、设备及可读存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2831728B1 (fr) * 2001-10-25 2004-03-12 Canon Kk Procede et dispositif de formation d'un signal numerique derive a partir d'un signal numerique compresse
US8000388B2 (en) 2006-07-17 2011-08-16 Sony Corporation Parallel processing apparatus for video compression
US8582663B2 (en) 2006-08-08 2013-11-12 Core Wireless Licensing S.A.R.L. Method, device, and system for multiplexing of video streams
US7991236B2 (en) 2006-10-16 2011-08-02 Nokia Corporation Discardable lower layer adaptations in scalable video coding
PL3758381T3 (pl) 2007-04-12 2021-07-05 Dolby International Ab Dzielenie na kafelki w kodowaniu i dekodowaniu wideo
JP2010526515A (ja) 2007-05-04 2010-07-29 クゥアルコム・インコーポレイテッド 推定されたコーディングコストを用いた映像コーディングモード選択
US8150172B2 (en) 2007-05-04 2012-04-03 Qualcomm Incorporated Video coding mode selection using estimated coding costs
US8265144B2 (en) 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US8311111B2 (en) 2008-09-11 2012-11-13 Google Inc. System and method for decoding using parallel processing
US20110280314A1 (en) 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
CN101867821B (zh) 2010-06-18 2011-11-16 上海交通大学 基于稀疏采样和纹理重建的视频编码系统
US9313514B2 (en) 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
US8604951B2 (en) * 2010-10-05 2013-12-10 Massachusetts Institute Of Technology System and method for optimizing context-adaptive binary arithmetic coding
US9300976B2 (en) * 2011-01-14 2016-03-29 Cisco Technology, Inc. Video encoder/decoder, method and computer program product that process tiles of video data
US9325999B2 (en) 2011-03-10 2016-04-26 Sharp Kabushiki Kaisha Video decoder for slices
KR20140074369A (ko) 2011-11-08 2014-06-17 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 비디오 코딩의 타일 크기
US9332259B2 (en) 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding

Also Published As

Publication number Publication date
WO2013109383A1 (en) 2013-07-25
EP2805488B1 (en) 2023-08-02
HK1198403A1 (en) 2015-04-17
IL233321A0 (en) 2014-08-31
US20130182775A1 (en) 2013-07-18
JP2015507906A (ja) 2015-03-12
AU2012366143A1 (en) 2014-08-07
UA112675C2 (uk) 2016-10-10
WO2013109382A3 (en) 2013-10-10
EP2805489C0 (en) 2024-02-14
RU2014133720A (ru) 2016-03-10
TWI561064B (en) 2016-12-01
IL233360A0 (en) 2014-08-31
JP6151276B2 (ja) 2017-06-21
BR112014017521A2 (pt) 2017-06-13
BR112014017379B1 (pt) 2022-09-27
KR20140120339A (ko) 2014-10-13
CN104054347A (zh) 2014-09-17
RU2612616C1 (ru) 2017-03-09
IL233321B (en) 2018-04-30
AU2012366142B2 (en) 2017-05-18
SG11201403351VA (en) 2014-08-28
EP2805489A1 (en) 2014-11-26
US9332259B2 (en) 2016-05-03
CA2860840C (en) 2019-12-31
KR20140120338A (ko) 2014-10-13
IL233360B (en) 2018-03-29
RU2609073C2 (ru) 2017-01-30
PH12014501531B1 (en) 2014-10-08
MY165064A (en) 2018-02-28
BR112014017521A8 (pt) 2017-07-04
TW201338560A (zh) 2013-09-16
BR112014017379A8 (pt) 2017-07-04
SG11201403349SA (en) 2014-09-26
AU2012366143B2 (en) 2017-04-20
MY168215A (en) 2018-10-15
TWI478588B (zh) 2015-03-21
CN104054347B (zh) 2018-08-28
CN104054348A (zh) 2014-09-17
CA2860762A1 (en) 2013-07-25
BR112014017379A2 (pt) 2017-06-13
PH12014501528A1 (en) 2014-10-08
AU2012366142A1 (en) 2014-08-07
KR102057352B1 (ko) 2019-12-18
EP2805488C0 (en) 2023-08-02
ZA201406023B (en) 2017-09-27
PH12014501528B1 (en) 2014-10-08
CA2860762C (en) 2019-07-02
EP2805489B1 (en) 2024-02-14
UA111879C2 (uk) 2016-06-24
HK1198236A1 (en) 2015-03-13
US20130182774A1 (en) 2013-07-18
TW201336312A (zh) 2013-09-01
EP2805488A2 (en) 2014-11-26
JP6203755B2 (ja) 2017-09-27
BR112014017521B1 (pt) 2022-09-20
CA2860840A1 (en) 2013-07-25
PL2805488T3 (pl) 2023-12-04
WO2013109382A2 (en) 2013-07-25
SG10201605295XA (en) 2016-08-30
PH12014501531A1 (en) 2014-10-08
CN104054348B (zh) 2017-10-31
JP2015507907A (ja) 2015-03-12
KR101676547B1 (ko) 2016-11-15
US9749661B2 (en) 2017-08-29

Similar Documents

Publication Publication Date Title
ES2952775T3 (es) Indicación de uso de un procesamiento paralelo de frente de onda en una codificación de vídeo
ES2892341T3 (es) Codificación de vídeo con unidades de capa de abstracción de red que incluyen múltiples particiones de imagen codificada
ES2832607T3 (es) Intrapredicción y codificación intramodo
ES2794619T3 (es) Intrapredicción y codificación intramodo
ES2854699T3 (es) Intrapredicción y codificación intramodo
ES2828577T3 (es) Intrapredicción y codificación intramodo
ES2928248T3 (es) Relleno de segmentos en unidades NAL de la porción codificada
ES2727814T3 (es) Estructura sintáctica de parámetros de descodificador hipotético de referencia
ES2677522T3 (es) Series de codificación en codificación de vídeo basada en paleta
US9467701B2 (en) Coded block flag coding
US9386307B2 (en) Grouping of bypass-coded bins for SAO syntax elements