ES2899642T3 - Procesamiento en paralelo de mosaicos y de frente de onda - Google Patents

Procesamiento en paralelo de mosaicos y de frente de onda Download PDF

Info

Publication number
ES2899642T3
ES2899642T3 ES13737502T ES13737502T ES2899642T3 ES 2899642 T3 ES2899642 T3 ES 2899642T3 ES 13737502 T ES13737502 T ES 13737502T ES 13737502 T ES13737502 T ES 13737502T ES 2899642 T3 ES2899642 T3 ES 2899642T3
Authority
ES
Spain
Prior art keywords
video
wpp
entry points
allowed
bits
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
ES13737502T
Other languages
English (en)
Inventor
Muhammed Zeyd Coban
Ye-Kui Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2899642T3 publication Critical patent/ES2899642T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process

Landscapes

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

Abstract

Un procedimiento de decodificación de datos de video, el procedimiento que comprende: recibir un conjunto de parámetros que comprende uno o más primeros bits y uno o más segundos bits, en donde el uno o más primeros bits indican si se permiten mosaicos para una serie de bloques de vídeo, en donde el uno o más segundos bits son diferentes del uno o más primeros bits, y en donde el uno o más segundos bits indican si se permite un procesamiento en paralelo de frente de onda (WPP) para la serie de bloques de video; en respuesta a que se estén permitiendo tanto mosaicos como el WPP para un fragmento, un mosaico inicia el fragmento, los frentes de onda están presentes completamente dentro de los mosaicos, los frentes de onda no se extienden a través de múltiples mosaicos y los puntos de entrada señalizados en la cabecera de fragmento se interpretan como puntos de entrada del WPP; en respuesta a que sólo se estén permitiendo mosaicos, interpretar los puntos de entrada señalizados en una cabecera de fragmento como correspondientes a los puntos de entrada de mosaico; en respuesta a que sólo se esté permitiendo el WPP, interpretar los puntos de entrada señalizados en la cabecera de fragmento como correspondientes a los puntos de entrada del WPP; decodificar la serie de bloques de video basándose en el conjunto de parámetros.

Description

DESCRIPCIÓN
Procesamiento en paralelo de mosaicos y de frente de onda
Campo técnico
Esta divulgación se refiere a codificación de video.
Antecedentes
Las capacidades de video digital se pueden incorporar en un amplio rango de dispositivos, incluyendo televisiones digitales, sistemas de radiodifusión digital directa, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles u ordenadores de sobremesa, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, denominados “teléfonos inteligentes”, dispositivos de videoconferencia, dispositivos de transmisión continua de video 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, H.263 de ITU-T, H.264/MPEG-4 de ITU-T, parte 10, Codificación Avanzada de Vídeo (AVC), la norma de Codificación de Vídeo de Alta Eficacia (HEVC) en desarrollo en la actualidad y las extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital con más eficacia implementando dichas técnicas de compresión de vídeo. Las técnicas de compresión de vídeo realizan una predicción espacial (intraimagen) y/o una predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (es decir, una trama de vídeo o una porción de una trama de vídeo) se puede dividir en bloques de vídeo, que también se pueden denominar bloques arbolados, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de vídeo en un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia de bloques contiguos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia.
La predicción espacial o temporal tiene como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxel entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado es codificado de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado es codificado de acuerdo con un modo de intracodificación y los datos residuales. Para una mejor comprensión, los datos residuales se pueden transformar desde el dominio de píxel a un dominio de transformada, teniendo como resultado coeficientes de transformada residuales, que se pueden cuantificar. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes de transformada y se puede aplicar una codificación por entropía para lograr incluso más compresión. En la simplificación JCTVC-H0348 de mosaicos y fragmentos del Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) de SG16 WP3 de ITU-T y JTC1/SC29/WG11 de ISO/IEC, 8a reunión: San José, CA, E.E.U.U., 1-10 de febrero de 2012 se propuso un diseño para la simplificación de fragmentos y mosaicos. En el diseño, no hay separación entre mosaico independiente y mosaico independiente y en todos los extremos de los mosaicos se termina un fragmento. Resumen
La invención se define en las reivindicaciones independientes adjuntas, a las cuales se hace ahora referencia. Modos de realización de la invención se definen en las reivindicaciones dependientes. Esta divulgación describe técnicas que pueden permitir a un codificador de vídeo implementar de forma simultánea mecanismos de procesamiento en paralelo múltiples, incluyendo dos o más procesamientos en paralelo de frente de onda (WPP), mosaicos y fragmentos de entropía. Esta divulgación describe técnicas de señalización que son compatibles tanto con las normas de codificación que sólo permiten que se implemente un mecanismo de procesamiento en paralelo en un instante sino que también son compatibles con futuras normas de codificación potenciales que puedan permitir que se implemente más de un mecanismo de procesamiento en paralelo de forma simultánea.
Breve descripción de los dibujos
La figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y decodificación de vídeo que puede utilizar las técnicas descritas en esta divulgación.
La figura 2 es un diagrama conceptual que ilustra una imagen de ejemplo dividida en frentes de onda.
La figura 3 es un diagrama conceptual que muestra mosaicos de una trama.
La figura 4 es un diagrama conceptual que ilustra un flujo de bits de ejemplo.
La figura 5 muestra un diagrama conceptual que ilustra la coexistencia de mosaicos y un procesamiento en paralelo de frente de onda (WPP), de acuerdo con las técnicas de esta divulgación.
La figura 6 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 7 es un diagrama de bloques que ilustra un decodificador de video de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 8 es un diagrama de flujo que ilustra técnicas de esta divulgación.
Descripción detallada
Esta divulgación describe técnicas de diseño que pueden permitir la coexistencia de mecanismos de procesamiento en paralelo múltiples en la nueva norma emergente de codificación de vídeo de alta eficacia (HEVC), que está siendo desarrollada por el Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC. Varias propuestas para HEVC implementan varios mecanismos de procesamiento en paralelo, incluyendo un procesamiento en paralelo de frente de onda (WPP), mosaicos y fragmentos de entropía, pero estos mecanismos de procesamiento en paralelo se implementan de forma general independientemente entre sí. Por ejemplo, una serie de bloques de vídeo puede codificarse utilizando un WPP o mosaicos pero no utilizando a la vez WPP y mosaicos. Esta divulgación introduce técnicas de señalización que pueden permitir a un codificador de vídeo (por ejemplo, un codificador de vídeo o un decodificador de video) codificar imágenes utilizando WPP, mosaicos y fragmentos de entropía de forma independiente entre sí tal y como se especifica en HEVC a la vez que también permite al codificador de vídeo implementar versiones futuras potenciales y extensiones de la norma HEVC que puedan permitir dos o más de, un WPP, mosaicos y fragmentos de entropía al mismo tiempo. Como un ejemplo, utilizando las técnicas de esta divulgación, un codificador de vídeo puede configurarse para implementar de forma simultánea tanto mosaicos como un WPP en oposición a únicamente uno de, mosaicos y un WPP.
Cuando se implementa un WPP, un codificador de vídeo (por ejemplo un codificador de vídeo o un decodificador de vídeo) puede dividir una imagen en una pluralidad de frentes de onda, en donde cada frente de onda corresponde a una fila de bloques (por ejemplo, unidades de codificación más grandes (LCU)) de la imagen. A través de esta divulgación, los frentes de onda también pueden denominarse subflujos de WPP, flujos de WPP o subflujos de frente de onda. Un codificador de vídeo puede codificar los frentes de onda sustancialmente en paralelo. Por ejemplo, el codificador de video puede codificar un bloque en un primer frente de onda de una imagen en paralelo con un bloque de un segundo frente de onda de la imagen.
En algunos ejemplos, un codificador de vídeo puede dividir la unidad de codificación (CU) de un fragmento en agrupaciones más pequeñas referidas como “subflujos” o “subfragmentos”. El codificador de vídeo puede dividir las CU de un fragmento en varios tipos de subflujos. Por ejemplo, el codificador de vídeo puede dividir las CU de un fragmento en una pluralidad de mosaicos. El codificador de vídeo puede dividir las CU en mosaicos definiendo dos o más límites horizontales para una imagen y dos o más límites verticales para la imagen. Los límites horizontales pueden incluir los bordes superior e inferior de la imagen. Los límites verticales pueden incluir los lados izquierdo y derecho de la imagen. Cuando el decodificador de video no utiliza mosaicos, el codificador de vídeo puede codificar todos los bloques arbolados de la trama en un orden de exploración en retícula. Sin embargo, cuando el codificador de vídeo utiliza mosaicos, el codificador de video puede codificar los mosaicos en un orden de exploración en retícula. Cuando el codificador de vídeo codifica un mosaico, el codificador de vídeo puede codificar los bloques arbolados (es decir, las LCU) dentro del mosaico en un orden de exploración en retícula. Por tanto, el codificador de video puede utilizar mosaicos para cambiar el orden de codificación de los bloques arbolados de la imagen.
En HEVC WD 7, no se permite la coexistencia de mosaicos, frentes de onda y fragmentos de entropía. Sin embargo, esta divulgación contempla que puede haber casos en los que la coexistencia de dos o más de estos mecanismos (por ejemplo, mosaicos y frentes de onda) podría mejorar potencialmente la codificación de vídeo y podría añadirse potencialmente a futuras versiones o extensiones de HEVC. Por consiguiente, esta divulgación describe técnicas de señalización para soportar el uso coexistente de mecanismos de procesamiento en paralelo múltiples dentro del marco de trabajo de HEVC. Entre las diversas técnicas introducidas en esta divulgación, esta divulgación describe técnicas para la señalización con uno o más primeros bits en un conjunto de parámetros para una porción de datos de video si se permiten mosaicos para la porción de datos de video, la señalización con uno o más segundos bits si se permite un WPP para la porción de datos de video y/o la señalización con uno o más terceros bits si se permiten fragmentos de entropía para la porción de datos de video.
Estas técnicas de señalización son compatibles con versiones de HEVC que limitan la codificación de datos de video a únicamente un mecanismo de procesamiento en paralelo (por ejemplo, uno de, mosaicos, un WPP y fragmentos de entropía), a la vez que también se permite que futuras versiones y extensiones de HEVC permitan de forma simultánea más de un mecanismo de procesamiento en paralelo. Por tanto, si futuras versiones y extensiones de HEVC permiten que se implemente más de un mecanismo de procesamiento en paralelo de forma simultánea, la sintaxis utilizada para mosaicos de señal, WPP y fragmentos de entropía puede que no se necesite alterar, por lo tanto reduciendo la cantidad de reconfiguración que podría ser necesaria para hacer un codificador de vídeo compatible con la versión o extensión futura y potencialmente incluso haciendo que el codificador de vídeo sea retro compatible sin la necesidad de una reconfiguración.
En el HEVC WD7, la presencia de mosaicos o un WPP se señaliza en un conjunto de parámetros de imagen (PPS). Un elemento sintáctico de dos bits se utiliza para identificar uno de cuatro escenarios posibles - 1) se permite WPP, 2) se permiten mosaicos, 3) se permiten fragmentos de entropía o 4) no se permite ninguno de 1-3. Para analizar o decodificar múltiples mosaicos o frentes de onda, un decodificador de video puede necesitar determinar las ubicaciones dentro de una unidad de capa de abstracción de red (NAL) de fragmento codificado de los elementos sintácticos codificados asociados con los frentes de onda o mosaicos. En otras palabras, el decodificador de video puede que necesite determinar los “puntos de entrada” de los frentes de onda o mosaicos. Por ejemplo, el decodificador puede que necesite determinar dónde comienzan los elementos sintácticos codificados asociados con un primer frente de onda o el primer mosaico, donde comienzan los elementos sintácticos codificados asociados con un segundo frente de onda o mosaico y así sucesivamente. En WD7, debido a que no se permite la coexistencia de mosaicos y un WPP, no existe ambigüedad en los tipos de puntos de entrada señalizados en una cabecera de fragmento. Si se permiten los mosaicos en el PPS, entonces un decodificador de video sabe que los puntos de entrada en la cabecera de fragmento son los puntos de entrada de mosaico. Si se permite un WPP en el PPS, el decodificador de video sabe que los puntos de entrada en la cabecera de fragmento son los puntos de entrada del WPP.
Para permitir de forma eficiente la coexistencia de mosaicos y un frente de onda, esta divulgación propone la implementación de una restricción que, cuando se permitan tanto un WPP como los mosaicos, los mosaicos comienzan un nuevo fragmento (con una cabecera de fragmento), los frentes de onda están presentes completamente dentro de los mosaicos y los frentes de onda no se extienden a través de mosaicos múltiples. Si no está presente una coexistencia de mosaicos y de un WPP, entonces estas restricciones no necesitan imponerse y se pueden utilizar técnicas existentes. Por tanto, de acuerdo con las técnicas de esta divulgación. Si se permiten tanto mosaicos como un WPP en una imagen, entonces los frentes de onda están completamente presentes dentro de los mosaicos y no se extienden a través de mosaicos múltiples.
Los puntos de entrada señalizados en las cabeceras de fragmento son los puntos de entrada del WPP si tanto los mosaicos como los frentes de onda coexisten en una imagen. Si únicamente se permite uno de los mosaicos y un WPP en una imagen, entonces los puntos de entrada señalizados en la cabecera de fragmento corresponden a cualquiera de los mosaicos o del WPP indicados en el PPS como en la norma HEVC WD7.
Para permitir la coexistencia de tanto el WPP como los mosaicos, esta divulgación además propone la señalización, por ejemplo, en un PPS, de que se permiten tanto los mosaicos como el WPP. Dicha señalización puede, por ejemplo, incluir el reemplazo de un elemento sintáctico de 2 bits descrito anteriormente con un elemento sintáctico de 3 bits que puede señalizar adicionalmente la presencia de tanto el WPP como los mosaicos así como la presencia de sólo los mosaicos o sólo el WPP.
La figura 1 es un diagrama de bloques que ilustra una codificación de vídeo de ejemplo y un sistema 10 de codificación que puede utilizar las técnicas descritas en esta divulgación. Tal y como se explicará con más detalle posteriormente, el sistema 10 puede codificar (tanto codificar como decodificar) bloques de video de forma simultánea utilizando mecanismos de procesamiento en paralelo múltiples, tal como tanto mosaicos como un WPP. Tal y como se muestra en la figura 1, el sistema 10 incluye un dispositivo 12 de origen que genera datos de video codificados que se van a codificar en un momento posterior mediante un dispositivo 14 de destino. El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de un amplio rango de dispositivos, incluyendo ordenadores de sobremesa, un ordenadores portátiles ligeros (es decir, un ordenador portátil), ordenadores de tableta, decodificadores, equipos telefónicos de mano tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión continua de vídeo o similares. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden estar equipados para la comunicación inalámbrica.
El dispositivo 14 de destino puede recibir los datos de vídeo codificados que se van a decodificar por medio del enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de transferir los datos de vídeo codificados desde el dispositivo 12 de origen al dispositivo 14 de destino. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo 12 de origen transmita datos de vídeo codificados directamente a un dispositivo 14 de destino en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo 14 de destino. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o por cable, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo 12 de origen al dispositivo 14 de destino.
De forma alternativa, la interfaz de salida 22 puede emitir datos codificados a un dispositivo 34 de almacenamiento. De forma similar, se puede acceder a los datos codificados desde el dispositivo 34 de almacenamiento mediante una interfaz de entrada. El dispositivo 34 de almacenamiento puede incluir cualquiera de una variedad de medios de almacenamiento de datos de acceso distribuido o local, tales como una unidad de disco duro, discos Blu-ray, DVD, CD-ROM, una memoria flash, una memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En otro ejemplo, el dispositivo 34 de almacenamiento puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo 12 de origen. El dispositivo 14 de destino puede acceder a datos de vídeo almacenados en el dispositivo 34 de almacenamiento por medio de transmisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo 14 de destino. Los servidores de archivos de ejemplo incluyen un servidor de red (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento adjuntos a la red (NAS) o una unidad de disco local. El dispositivo 14 de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión por cable (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo 34 de almacenamiento puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como soporte a cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo por transmisión continua, por ejemplo, por medio de Internet, codificación de datos de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, decodificación de datos de vídeo digital almacenados en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para soportar una transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o videotelefonía.
En el ejemplo de la figura 1, el dispositivo 12 de origen incluye una fuente 18 de video, un codificador 20 de vídeo y una interfaz 22 de salida. En algunos casos, la interfaz 22 de salida puede incluir un modulador/demodulador (módem) y/o un transmisor. En el dispositivo 12 de origen, la fuente 18 de video puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una cámara de video, un archivo de vídeo que contiene vídeo previamente capturado, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de video y/o un sistema de datos gráficos de ordenador para generar gráficos de ordenador como la fuente de vídeo o una combinación de dichas fuentes. Como ejemplo, si la fuente 18 de video es una cámara de vídeo, el dispositivo 12 de origen y el dispositivo 14 de destino pueden formar denominados teléfonos con cámara o teléfonos con vídeo. Sin embargo, las técnicas descritas en esta divulgación se pueden aplicar a codificación de vídeo en general y se pueden aplicar a aplicaciones inalámbricas y/o por cable.
El video generado por ordenador capturado, capturado previamente puede codificarse por el codificador 20 de video. Los datos de video codificados pueden trasmitirse directamente al dispositivo 14 de destino a través de la interfaz 22 de salida del dispositivo 12 de origen. Los datos de video codificados también pueden (o de forma alternativa) almacenarse en un dispositivo 34 de almacenamiento para un acceso posterior por el dispositivo 14 de destino u otros dispositivos, para la decodificación y/a la reproducción.
El dispositivo 14 de destino incluye una interfaz 28 de entrada, un decodificador 30 de vídeo y un dispositivo 32 de visualización. En algunos casos, la interfaz 28 de entrada puede incluir un receptor y/o un módem. La interfaz 28 de entrada del dispositivo 14 de destino recibe los datos de video codificados sobre el enlace 16. Los datos de video codificados comunicados sobre el enlace 16 o proporcionados en el dispositivo 34 de almacenamiento, pueden incluir diversos elementos sintácticos generados por el codificador 20 de vídeo para el uso por un decodificador de video tal como un decodificador 30 de vídeo, al decodificar los datos de video. Dichos elementos sintácticos pueden incluirse con los datos de video codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos.
El dispositivo 32 de visualización puede estar integrado con, o ser externo a, el dispositivo 14 de destino. En algunos ejemplos, el dispositivo 14 de destino puede incluir un dispositivo de visualización integrado y también puede estar configurado para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo 14 de destino puede ser un dispositivo de visualización. En general, el dispositivo 32 de visualización muestra los datos de video de codificados a un usuario y puede comprender cualquier variedad de dispositivos de visualización tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos emisores de luz orgánicos (OLED) u otro tipo de dispositivo de visualización.
El sistema 10 puede funcionar de acuerdo con diferentes normas de codificación de video. Por ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la inclusión de H.261 de ITU-T, MPEG-1 Visual de ISO/IEC, H.262 de ITU-T o MPEG-2 de ISO/IEC Visual, H.263 de ITU-T, MPEG-4 Visual de ISO/IEC e H.264 de ITU-T (también conocida como MPEG-4 AVC de ISO/IEC), incluyendo sus extensiones de codificación de vídeo escalable (SVC) y de codificación de vídeo multivista (MVC). El borrador conjunto públicamente disponible reciente de la extensión MVC se describe en “Advanced video coding for generic audiovisual services, (codificación de vídeo avanzada para servicios audiovisuales genéricos” recomendación H.264 de ITU-T, Marzo de 2010. Un borrador conjunto públicamente disponible más reciente de la extensión MVC se describe en “Advanced video coding for generic audiovisual services (codificación de vídeo avanzada para servicios audiovisuales genéricos)”, recomendación H.264 de ITU-T de junio de 2011. Un borrador conjunto de la extensión MVC se ha aprobado en enero de 2012.
Adicionalmente, hay una nueva norma de codificación de video, en particular la norma de Codificación de Vídeo de Alta Eficacia (HEVC) en desarrollo en la actualidad por el Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC. Un borrador de trabajo de HVEC es el documento HCTVC-I1003, Bross y otros, “High Efficiency Video Coding (HEVC) Text Specification Draft 7, (codificación de vídeo de alta eficiencia (HEVC) borrador 7 de especificación de texto)" Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) SG16 WP3 de ITU-T y JTC1/SC29/WG11 de ISO/IEC, 9a Reunión: Ginebra, Suiza, 27 de abril de 2012 a 7 de mayo de 2012. Este documento se denomina HEVC DW7, y desde el 14 de marzo de 2013 se puede descargar de http://phenix.intevry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip.
Con propósitos de descripción, el codificador 20 de vídeo y el decodificador 30 de vídeo se describen en el contexto de la norma HEVC o la H.264 y las extensiones de dichas normas. Las técnicas de esta divulgación, sin embargo, no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de compresión de vídeo incluyen MPEG-2 y H.263 de ITU-T. Técnicas de codificación propietarias, tales como aquellas referidas como On2 VP6/VP7/VP8, también pueden implementar una o más de las técnicas descritas en el presente documento.
Aunque no se muestra en la figura 1, en algunos aspectos, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden, cada uno, estar integrados con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas u otro hardware o software para manejar la codificación tanto del audio como del video en un flujo de datos común o flujos de datos separados. Si es aplicable, en algunos ejemplos, las unidades MUX-DEMUX pueden adaptarse al protocolo de multiplexor H.223 de ITU u otros protocolos tales como el protocolo de datagramas de usuario (UDP).
El codificador 20 de vídeo y el decodificador 30 de vídeo se pueden implementar, cada uno, como cualquiera de una variedad de circuitos codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio adecuado no transitorio legible por ordenador y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno de, el codificador 20 de vídeo y el decodificador 30 de vídeo se pueden incluir en uno o más codificadores o decodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/decodificador (CÓDEC) combinado en un dispositivo respectivo. El JCT-VC está trabajando en el desarrollo de la norma HEVC. Los esfuerzos de normalización de HEVC se basan en un modelo de evolución de un dispositivo de codificación de vídeo referido como el Modelo de Ensayo (HM) de HEVC. El HM presume de varias capacidades adicionales de dispositivos de codificación de vídeo con respecto a los dispositivos existentes de acuerdo con, por ejemplo, H.264/AVC de ITU-T. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intrapredicción, el HM puede proporcionar tantos como treinta y tres modos de codificación de intrapredicción.
En general, el modelo de trabajo del HM describe que una trama o imagen de vídeo se puede dividir en una secuencia de bloques arbolados o unidades de codificación más grandes (LCU) que incluyen muestras tanto de luma como de croma. Un bloque arbolado tiene un propósito similar a un macrobloque de la norma H.264. Un fragmento incluye un número de bloques arbolados consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada bloque arbolado puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuaternario. Por ejemplo, un bloque arbolado, como un nodo raíz del árbol cuaternario, se puede dividir en cuatro nodos hijo, y cada nodo hijo puede, a su vez, ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no dividido, como un nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces que se puede dividir un bloque arbolado, y también pueden definir un tamaño mínimo de los nodos de codificación.
Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe tener conformación cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque arbolado con un máximo de 64x64 píxeles o mayor. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir entre si la CU está codificada en modo directo o de salto, codificada en modo de intrapredicción o codificada en modo de interpredicción. Las PU se pueden dividir para tener una conformación no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuaternario. Una TU puede tener una conformación cuadrada o no cuadrada. La norma HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU se basa típicamente en el tamaño de las PU dentro de una CU dada definida para una LCU dividida, aunque puede que no sea siempre así. Las TU son típicamente del mismo tamaño o más pequeñas que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU se pueden subdividir en unidades más pequeñas usando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). Los nodos hoja del RQT se pueden denominar como unidades de transformada (TU). Los valores de diferencias de píxeles asociados a las TU se pueden transformar para producir coeficientes de transformada, que se pueden cuantificar.
En general, una PU incluye datos relacionados con el procedimiento de predicción. Por ejemplo, cuando la PU se codifica en intramodo, la PU puede incluir datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU se codifica en intermodo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, la lista 0, la lista 1 o la lista C) para el vector de movimiento.
En general, se usa una TU para los procedimientos de transformada y de cuantificación. Una CU dada que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Seguidamente a la predicción, el codificador 20 de vídeo puede calcular valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencias de píxeles que se pueden transformar en coeficientes de transformada, cuantificar y explorar usando las TU, para producir coeficientes de transformada en serie para la codificación por entropía. Esta divulgación usa típicamente el término "bloque de vídeo" para referirse a un nodo de codificación de una Cu . En algunos casos específicos, esta divulgación también puede usar el término "bloque de vídeo" para referirse a un bloque arbolado, es decir, una LCU o una CU, que incluye un nodo de codificación y las PU y las TU. Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Un grupo de imágenes (GOP) en general comprende una serie de una o más imágenes de video. Un GOP puede incluir datos sintácticos en una cabecera del GOP, una cabecera de una o más de las imágenes o en cualquier lugar, que describe un número de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. El codificador 20 de vídeo funciona típicamente en bloques de vídeo dentro de fragmentos de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
Como un ejemplo, el HM soporta la predicción en varios tamaños de PU. Asumiendo que el tamaño de una CU particular es 2Nx2N, el HM soporta una intrapredicción en tamaños de PU de 2Nx2N o NxN, y una interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también soporta una división para interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En división asimétrica, se divide una dirección de una CU, mientras que la otra dirección se divide en un 25% y un 75%. La porción de la CU correspondiente a la división del 25% se indica mediante una “n” seguida de una indicación de “Arriba”, “Abajo”, “Izquierda” o “Derecha”. Por tanto, por ejemplo, “2NxnU “se refiere a una CU de 2Nx2N que se divide horizontalmente con una PU de 2Nx0,5N en la parte superior y una PU de 2Nx1,5N en la parte inferior.
En esta divulgación, “NxN” y “N por N” se puede utilizar de forma intercambiable para referirse a las dimensiones de píxel de un bloque de vídeo en términos de dimensiones vertical y horizontal, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Del mismo modo, un bloque de NxN tiene en general N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles en un bloque pueden disponerse en filas y columnas. Además, los bloques no necesitan necesariamente tener el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
Seguidamente a la codificación de intrapredicción o interpredicción usando las PU de una CU, el codificador 20 de vídeo puede calcular los datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio espacial (también denominado dominio de píxel) y las TU pueden comprender coeficientes en el dominio de transformada seguidamente a la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de números enteros, una transformada de ondículas o una transformada conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El codificador 20 de vídeo puede formar las TU, incluyendo los datos residuales para la CU y, entonces, transformar las TU para producir coeficientes de transformada para la CU.
Seguidamente a cualquier transformada para producir coeficientes de transformada, el codificador 20 de vídeo puede realizar una cuantificación de los coeficientes de transformada. La cuantificación en general se refiere a un proceso en el cual los coeficientes de transformada son cuantificados para reducir posiblemente la cantidad de datos utilizados para representar los coeficientes, proporcionando una compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos o todos los coeficientes. Por ejemplo, un valor de n bits puede ser redondeado hacia abajo a un valor de m bits durante la cuantificación, donde n es mayor que m.
En algunos ejemplos, el codificador 20 de vídeo puede utilizar una orden de exploración predefinida para explorar los coeficientes de transformada cuantificados para producir un vector en serie que puede ser codificado por entropía. En otros ejemplos, el codificador 20 de vídeo puede realizar una exploración adaptativa. Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador 20 de vídeo puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la Codificación por Entropía por División en Intervalos de Probabilidad (PIPE) o con otra metodología de codificación por entropía. El codificador 20 de vídeo también puede codificar por entropía los elementos sintácticos asociados a los datos de vídeo codificados, para el uso por el decodificador 30 de vídeo en la decodificación de los datos de vídeo.
Para realizar la CABAC, el codificador 20 de vídeo puede asignar un contexto dentro de un modelo de contexto a un símbolo que se va a transmitir. El contexto puede relacionarse con, por ejemplo, si los valores contiguos del símbolo son nulos o no. Para realizar la CAVLC, el codificador 20 de vídeo puede seleccionar un código de longitud variable para un símbolo que se va a transmitir. Se pueden construir palabras clave en la VLC de tal manera que códigos relativamente más cortos corresponden a símbolos más probables, mientras que códigos más largos corresponden a símbolos menos probables. De esta manera, el uso de la VLC puede lograr un ahorro de bits respecto a, por ejemplo, la utilización de palabras clave de igual longitud para cada símbolo que se va a transmitir. La determinación de probabilidad puede basarse en un contexto asignado al símbolo.
Esta divulgación introduce técnicas que permiten una coexistencia restringida de mecanismos de procesamiento en paralelo múltiples, tal como un procesamiento en paralelo de tanto mosaicos como un frente de onda en HEVC. El WPP permite el procesamiento de múltiples filas de las LCU en paralelo a modo de un frente de onda donde hay un retardo de dos bloques arbolados de codificación (CTB) entre el inicio de los frentes de onda. En WD7, hay una restricción de un frente de onda por cada fila de CTB, con puntos de entrada de flujo de bits al inicio de los subflujos de frente de onda que se están señalizando en la cabecera de fragmento, que preceden a los frentes de onda en la misma unidad de NAL de fragmento codificado. Un CTB también se denomina una unidad de codificación más grande (LCU).
La figura 2 es un diagrama conceptual que ilustra una imagen 100 de ejemplo dividida en frentes 150-60 de onda. Cada uno de los frentes 150-160 de onda incluye varios bloques. Debería observarse que la imagen 100 puede incluir frentes de onda adicionales y que cada frente de onda puede incluir bloques adicionales a los mostrados. Cada uno de los bloques puede corresponderse a, por ejemplo, una LCU.
Un codificador de vídeo, tal como un codificador 20 de vídeo o un decodificador 30 de vídeo, pueden estar configurados para codificar frentes 150-160 de onda en paralelo. El codificador 20 de vídeo puede comenzar codificando un frente de onda después de que se hayan codificado dos bloques del frente de onda anterior. La figura 2 ilustra los bloques después de los cuales se puede haber codificado un frente de onda utilizando puntos negros conectados a una flecha curvada relativamente horizontal. Por ejemplo, el bloque 134 del frente 156 de onda puede ser codificado después de que se haya codificado el bloque 128 del frente 154 de onda. Como un ejemplo, un codificador de vídeo puede codificar cada uno de los bloques marcados con una “X”, es decir, los bloques 116, 124, 132 y 136 en paralelo. Las líneas 102, 104, 106 y 108 discontinuas representan bloques que han sido analizados y de los cuales está disponible la información para la recuperación en un instante de codificación particular, en el ejemplo de la figura 2. El instante de codificación particular puede corresponderse con el instante en el cual se codifican los bloques marcados con una “X”, es decir los bloques 116, 124, 132 y 136.
Por consiguiente, el codificador de vídeo puede recuperar información de contexto para un bloque marcado con una “X” de los bloques apuntados por flechas blancas sólidas en la figura 4. Tal y como se muestra en la figura 2, cada uno de los bloques a los cuales apunta una flecha blanca sólida está dentro de una de las líneas 102, 104, 106 y 108 discontinuas. Por ejemplo, un codificador de vídeo puede recuperar información de contexto para el bloque 116 del bloque 114; el codificador de vídeo puede recuperar información de contexto para el bloque 124 de los bloques 110, 112, 114 y/o 122; el codificador de vídeo puede recuperar información de contexto para el bloque 132 de los bloques 118, 120, 122 y/o 130; y el codificador de video puede recuperar información de contexto para el bloque 136 de los bloques 126, 128, 130 y/o 134.
De acuerdo con las técnicas de esta divulgación, cada uno de los frentes 150-160 de onda puede incluir uno o más fragmentos. De forma alternativa, un fragmento puede incluir uno o más frentes de onda completos, tales como uno o más de los frentes 150-160 de onda. Por ejemplo, un primer fragmento puede incluir bloques de los frentes 150 y 152 de onda, un segundo fragmento puede incluir bloques de los frentes 154 y 156 de onda y un tercer fragmento puede incluir bloques de los frentes 158 y 160 de onda. De esta manera, cuando un fragmento cruza un límite entre dos frentes de onda, el fragmento puede incluir todos los bloques de los dos frentes de onda.
De esta manera, cuando se codifica un bloque en una posición particular, el esquema de codificación descrito en el presente documento puede asegurar que todos los datos necesarios para codificar el bloque, por ejemplo, utilizando una CABAC, están disponibles. Se supone, por ejemplo, que un codificador de vídeo es para codificar el bloque 132. Para inicializar un estado de contexto para el frente 154 de onda, que incluye el bloque 132, un codificador de vídeo puede necesitar uno o más parámetros de una cabecera de fragmento para un fragmento que incluye el bloque 132. Si el fragmento se permite que comience en un bloque en el medio del frente 152 de onda y cruce el límite entre el frente 152 de onda y el frente 154 de onda, el codificador de vídeo puede necesitar esperar para codificar el primer bloque en el fragmento para recuperar la información de la cabecera de fragmento. Por ejemplo, si el fragmento fuese a empezar en la posición horizontal del bloque en el frente 152 de onda por debajo del bloque 116, este bloque podría ser que todavía no estuviese analizado, y por tanto, el codificador de vídeo podría necesitar esperar hasta que el bloque fuese analizado antes de que el codificador de vídeo pudiese comenzar la codificación del frente 154 de onda. Sin embargo, en uno o más ejemplos de esta divulgación, puede que se requiera que un fragmento incluya uno o más frentes de onda completos o puede que se requiera que un frente de onda incluya uno o más fragmentos completos. Por tanto, se puede reducir o evitar que ocurra una situación de retardo de codificación.
De esta manera, un codificador de vídeo puede codificar de forma segura un primer bloque de un primer frente de onda de una imagen de datos de video, en donde el primer bloque tiene una posición horizontal de X+N, donde X y N son números enteros, antes de codificar un segundo bloque del primer frente de onda, el segundo bloque de onda que tiene una posición horizontal de X+K, en donde K>N y en donde K es un número entero, determinar uno o más parámetros de fragmento de un fragmento que incluye un tercer bloque de un segundo frente de onda, el tercer bloque que tiene una posición horizontal de X, en donde el segundo frente de onda está por debajo del primer frente de onda, inicializar un contexto para el segundo frente de onda basándose al menos en parte en el uno o más parámetros de fragmento y codificar el tercer bloque del segundo frente de onda basándose en un contexto actual para el segundo frente de onda, en donde la codificación del tercer bloque comprende la codificación del tercer bloque sustancialmente en paralelo con un cuarto bloque del primer frente de onda, el cuarto bloque que tiene una posición horizontal menor de X+K.
Como ejemplo, se supone que el codificador de vídeo codifica un bloque 124 del frente 152 de onda. Dejemos que el bloque 132 represente un bloque en una posición horizontal de X en el frente 154 de onda. En este ejemplo, el bloque 124 podría representar un bloque en una posición horizontal de X+2 (por ejemplo, X+N donde N=2). Los bloques a la derecha del bloque 124 (en el exterior de la línea 104 discontinua) en el frente 152 de onda representan ejemplos de bloques que tienen una posición horizontal de X+K donde K>N. De acuerdo con las técnicas de esta divulgación, un fragmento que incluye el bloque 132 podría o bien comenzar en el inicio del frente 154 de onda o podría incluir todos los bloques (incluyendo el bloque 124) del frente 152 de onda. En cualquier caso, el codificador de vídeo habrá determinado uno o más parámetros de fragmento del fragmento que incluye el bloque 132 de la codificación antes de codificar el bloque 132. Por lo tanto, el codificador de vídeo puede inicializar un contexto para el frente 154 de onda basándose al menos en parte en el uno o más parámetros de fragmento. La inicialización del contexto para el frente 154 de onda también puede basarse en los datos de los bloques en el frente 152 de onda por encima de los bloques 126 y 128. Además, el codificador de vídeo puede codificar el bloque 132 basándose en un contexto actual. En este ejemplo, el contexto actual para el frente 154 de onda podría determinarse después de codificar los bloques 126, 128 y 130. Como un ejemplo alternativo, el codificador de vídeo puede codificar el bloque 126 basándose en el contexto inicializado para el frente 154 de onda.
Los mosaicos ofrecen una división rectangular (con granularidad CTB) de una imagen en regiones que se pueden decodificar de forma independiente, múltiples (incluyendo un análisis y una reconstrucción). Cada punto de entrada de flujo de bits de mosaico está señalizado en la cabecera de fragmento, precediendo a los datos de mosaico en la misma unidad de NAL codificada.
La figura 3 es un diagrama conceptual que muestra mosaicos de ejemplo de una trama. La trama 160 puede dividirse en múltiples unidades 161 de codificación más grandes (LCU). Dos o más LCU se pueden agrupar en mosaicos con forma rectangular. Cuando se permite la codificación basada en mosaicos, las unidades de codificación dentro de cada mosaico son codificadas (es decir, codificadas o decodificadas) juntas antes de la codificación de mosaicos posteriores. Tal y como se muestra para la trama 160, los mosaicos 162 y 163 se orientan de una manera horizontal y tienen tanto límites horizontal como vertical. Tal y como se muestra para la trama 170, los mosaicos 172 y 173 se orientan de una manera vertical y tienen tanto límites horizontal como vertical.
La figura 4 es un diagrama conceptual que ilustra un flujo de bits de ejemplo con mosaicos. En algunos ejemplos, un codificador de vídeo puede dividir las Cu de un fragmento en agrupaciones más pequeñas. Dichas agrupaciones pueden referirse como “subflujos” o “subfragmentos”. El codificador de vídeo puede dividir las CU de un fragmento en varios tipos de subflujos. Por ejemplo, el codificador de vídeo puede dividir las CU de un fragmento en una pluralidad de mosaicos. El codificador de vídeo puede dividir las Cu en mosaicos definiendo dos o más límites horizontales para una imagen y dos o más límites verticales para la imagen. Los límites horizontales pueden incluir los bordes superior e inferior de la imagen. Los límites verticales pueden incluir los lados izquierdo y derecho de la imagen. Cuando el codificador de vídeo no usa mosaicos, el codificador de vídeo puede codificar todos los bloques arbolados de la trama en un orden de exploración en retícula. Sin embargo, cuando el codificador de vídeo utiliza mosaicos, el codificador de vídeo puede codificar los mosaicos en el orden de exploración en retícula. Cuando el codificador de vídeo codifica un mosaico, el codificador de vídeo puede codificar los bloques arbolados (es decir, las LCU dentro del mosaico en un orden de exploración en retícula. Por tanto, el codificador de vídeo puede utilizar mosaicos para cambiar el orden de codificación de los bloques arbolados de la imagen.
Además, en algunos casos, cuando el codificador de vídeo está codificando una CU dada, el codificador de vídeo puede únicamente utilizar información asociada con las CU en el mismo mosaico como la CU dada para realizar la intra o interpredicción en la CU dada. De forma similar, en algunos casos, cuando el codificador de vídeo está codificando una CU dada, el codificador de vídeo puede únicamente usar información asociada con las CU en el mismo mosaico como la CU dada para seleccionar un contexto para la codificación por entropía de un elemento sintáctico para la CU dada. Debido a estas restricciones, el codificador de vídeo puede ser capaz de codificar dos o más de los mosaicos en paralelo.
Una unidad de NAL de fragmento codificada con un fragmento dado puede incluir datos codificados asociados con cada uno de los mosaicos del fragmento dado. Por ejemplo, la unidad de NAL de fragmento codificada puede incluir elementos sintácticos codificados asociados con cada uno de los mosaicos. Para analizar o decodificar múltiples subflujos del fragmento en paralelo, un decodificador de video puede necesitar determinar las ubicaciones dentro de la unidad de NAL de fragmento codificada de los elementos sintácticos codificados asociados con los mosaicos. En otras palabras, el decodificador de video puede necesitar determinar los “puntos de entrada” de los mosaicos. Por ejemplo, el decodificador puede necesitar determinar dónde los elementos sintácticos codificados se asocian con un primer inicio de mosaico, donde los elementos sintácticos codificados se asocian con un segundo inicio de fragmento, y así sucesivamente.
En la norma HEVC WD7, los puntos de entrada de mosaico son señalizados de dos o más maneras diferentes. Una primera de estas maneras es el uso de desplazamiento de unidad de NAL de punto de entrada con respecto a los puntos de entrada previos comenzando desde el inicio de la unidad de NAL. Otra manera de codificar los puntos de entrada de mosaico puede utilizar marcadores de código de inicio de mosaico (entry_point_marker_two_3bytes = 0x000002) en posiciones alineadas de bytes antes del inicio de cada mosaico (excepto para el primer mosaico que comienza con la cabecera de fragmento. También, cuando se utilizan marcadores de código de inicio de mosaico un elemento sintáctico tile_idx_minus1 es señalizado como TilelD. En la norma HEVC WD7, puede que no sea necesario para cada mosaico tener un punto de entrada señalizado. Puede haber más mosaicos que el número de puntos de entrada señalizados (considerando que el primer mosaico en un fragmento tiene un punto de entrada señalizado implícitamente).
La norma HEVC WD7 permite la existencia de ambos tipos de señalización al mismo tiempo o de forma separada. También, cuando ambos procedimientos se utilizan al mismo tiempo, las dos maneras de señalización de puntos de entrada no tienen que estar alineadas. Esto significa que un flujo de bits puede tener un primer mosaico cuyo punto de entrada se señaliza únicamente con un marcador de punto de entrada, un segundo mosaico cuyo punto de entrada se señaliza únicamente con un desplazamiento de punto de entrada, un tercer mosaico cuyo punto de entrada se señaliza mediante tanto un marcador de punto de entrada como un marcador de punto de entrada y un cuarto mosaico cuyo punto de entrada no se señaliza.
En la norma HEVC WD7, la coexistencia de mosaicos y frentes de onda no está soportada. Sin embargo, podría haber casos en los que la coexistencia de mosaicos y frentes de onda puede ser útil. Para dichos casos, esta divulgación describe un esquema restringido simple para soportar el procesamiento en paralelo de tanto mosaicos como un frente de onda en el marco de trabajo de HEVC.
En la norma HEVC WD7, la presencia de mosaicos o un WPP se señaliza en el conjunto de parámetros de imagen como se muestra más abajo en la tabla 1. En la tabla 1, así como las otras tablas en esta divulgación, la columna de Descriptor identifica cuántos bits son utilizados para un elemento sintáctico particular. Por ejemplo, el descriptor “u(2)” indica dos bits, el descriptor “u(4)” indica cuatro bits y así sucesivamente. El descriptor “ue(v)” indica que el número de bits es variable y un decodificador implementa una decodificación por entropía para interpretar el elemento sintáctico.
Tabla 1 - 7.3.2.3 Sintaxis de RBSP de conjunto de parámetros de imagen
Figure imgf000011_0002
Tal y como se introdujo anteriormente, el elemento sintáctico “tiles_or_entropy_coding_syncjdc" es un elemento sintáctico de dos bits que puede tener cuatro valores posibles. El elemento sintáctico de dos bits se utiliza para identificar uno de cuatro escenarios posibles - 1) se permite WPP, 2) se permiten mosaicos, 3) se permiten fragmentos de entropía o 4) no se permite ninguno de 1-3. Puede que no se permita más de uno de, un WPP, mosaicos y fragmentos de entropía utilizando la sintaxis mostrada en la tabla 1.
También en la cabecera de fragmento, los puntos de entrada para mosaicos y frentes de onda se señalizan tal y como se muestra más abajo en la tabla 2.
Tabla 2 - 7.3.3 Sintaxis de cabecera de fragmento
Figure imgf000011_0001
En HEVC WD7, debido a que no se soporta la coexistencia de mosaicos y WPP, no hay ambigüedad en los tipos de puntos de entrada señalizados en la cabecera de fragmento. Si la presencia de mosaicos es señalizada en el conjunto de parámetros de imagen (PPS), entonces los puntos de entrada en la cabecera de fragmento son conocidos para ser puntos de entrada de mosaico. Si el WPP se señaliza en el PPS, entonces los puntos de entrada son conocidos para ser puntos de entrada del WPP.
Si se permite la coexistencia de mosaicos y un frente de onda, entonces una manera simple de soportar ambos mecanismos de paralelismo es tener mosaicos que comiencen un nuevo fragmento (con una cabecera de fragmento) si tanto los mosaicos como el WPP existen en una imagen, y para tener frentes de onda presentes completamente dentro de los mosaicos y que no se extiendan a través de múltiples mosaicos. Si no está presente la coexistencia de mosaicos y WPP, entonces no necesita imponerse dicha restricción y se pueden implementar las restricciones existentes de HEVC WD7. Si están presentes tanto los mosaicos como el WPP en una imagen, entonces las técnicas de esta divulgación incluyen tener frentes de onda que estén presentes dentro de los mosaicos y que eviten que el frente de onda se extienda a través de los mosaicos. Por tanto, los puntos de entrada señalizados en la cabecera de fragmento son los puntos de entrada del WPP si coexisten tanto mosaicos como frentes de onda en una imagen. Si sólo está presente uno de los mosaicos o el WPP en una imagen, entonces los puntos de entrada señalizados en la cabecera de fragmento corresponden a cualquiera de los mosaicos o el WPP tal y como se indica en el PPS, al igual que en la norma HEVC WD7.
La figura 5 ilustra un esquema propuesto para la coexistencia de mosaicos y un WPP de acuerdo con las técnicas de esta divulgación. La figura 5 muestra una imagen 501, y la imagen 501 incluye cuatro mosaicos etiquetados Mosaico 0, Mosaico 1, Mosaico 2 y Mosaico 3. La imagen 501 también está dividida en cuatro fragmentos, con cada fragmento que tiene una cabecera de fragmento (SH). Tal y como se puede apreciar en el ejemplo de la figura 5, cada mosaico corresponde a un fragmento. Por tanto, el inicio de cada mosaico también inicia un nuevo fragmento, los frentes de onda están presentes completamente dentro de los mosaicos y los frentes de onda no se extienden a través de múltiples mosaicos.
La figura 5 también muestra dieciséis flujos de WPP coexistentes dentro de la imagen 501. Los dieciséis flujos de WPP están etiquetados como Subflujo 0 a Subflujo 15. Tal y como se muestra en la figura 5, cada mosaico incluye cuatro flujos de WPP. Por ejemplo, el Mosaico 0 incluye los subflujos 0 a 3; el Mosaico 1 incluye los subflujos 4 a 7; el Mosaico 2 incluye los subflujos 8 a 11; y el Mosaico 3 incluye los subflujos 12 a 15. Cada subflujo incluye seis LCU. Por ejemplo, el subflujo 0 incluye las LCU 0 a 5; el subflujo 4 incluye las LCU 24 a 29; el subflujo 8 incluye las LCU 48 a 53 y así sucesivamente. Para simplificar la ilustración, no todas las LCU en la figura 4 están etiquetadas. Tal y como se muestra en la figura 5, los frentes de onda (por ejemplo, los subflujos) están presentes dentro de mosaicos y no se extienden a través de múltiples mosaicos. Por ejemplo, las LCU que comprende el subflujo 2 son todas las LCU que están todas ellas dentro del Mosaico 0; las LCU que comprende el subflujo 7 son todas las LCU que están dentro del Mosaico 1, y así sucesivamente.
Un ejemplo de la sintaxis propuesta para soportar tanto mosaicos como un WPP puede describirse mediante el siguiente PPS modificado y la sintaxis de cabecera de fragmento mostrada en las tablas 3 y 4, respectivamente.
Tabla 3-7.3.2.3 Sintaxis de RBSP del conjunto de parámetros de imagen
Figure imgf000012_0001
(continuación)
Figure imgf000013_0001
Tabla 4 - 7.3.3 Sintaxis de cabecera de fragmento
Figure imgf000013_0002
El elemento sintáctico “parallelismjdc" de la tabla 3 se describirá ahora. El elemento sintáctico indica la posible presencia de mosaicos, frentes de onda o fragmentos de entropía en una imagen que se refiere al conjunto de parámetros de imagen. El bit menos significativo (bit 0) de este elemento sintáctico igual a uno especifica que puede haber más de un mosaico en la imagen, y este bit igual a 0 especifica que no hay más de un mosaico en la imagen. El bit 1 del elemento sintáctico igual a 1 especifica que pueden estar presentes los frentes de onda y este bit igual a 0 especifica que no están presentes los frentes de onda. El bit 2 de este elemento sintáctico igual a 1 especifica que pueden estar presentes los fragmentos de entropía, y este bit igual a 0 especifica que no están presentes los fragmentos de entropía. Cuando el bit 0 o el bit 1 del elemento sintáctico es igual a 1, el bit 2 del elemento sintáctico será igual a 0.
Aunque se muestra como un elemento sintáctico de tres bits en la tabla 3, el elemento sintáctico “parallelismjdc" puede comprender esencialmente tres elementos sintácticos de 1 bit separados, con el primer bit que indica si se permiten mosaicos, el segundo que indica si se permite un WPP y el tercer bit que indica si se permiten fragmentos de entropía. Para esquemas de codificación en los que no se pueden permitir de forma simultánea mecanismos de procesamiento en paralelos múltiples, uno de los tres bits puede ser un 1 con el 1 que identifica cual esquema de procesamiento en paralelo se permite. Por ejemplo, un valor de 100 para el elemento sintáctico “parallelismjdc" puede significar que se permiten mosaicos. Un valor de 010 del elemento sintáctico “parallelismjdc" puede significar que se permite un WPP y un valor de 001 del elemento sintáctico “parallelismjdc" puede significar que se permiten fragmentos de entropía. Un valor de 000 para el elemento sintáctico “parallelismjdc" puede significar que no se permiten ni mosaicos, ni el WPP, ni fragmentos de entropía. De esta manera, las técnicas de señalización de esta divulgación son compatibles con las normas de codificación que permiten únicamente que se implemente un mecanismo de procesamiento en paralelo al mismo tiempo.
Las técnicas de señalización de esta divulgación, sin embargo, también son compatibles con una norma de codificación futura potencial que permite que se implemente más de un mecanismo de procesamiento en paralelo de forma simultánea. Por ejemplo, si se implementan de forma simultánea mosaicos y un WPP, se puede utilizar un valor de 110 para el elemento sintáctico “parallelismjdc", donde el 1 del primer bit indica que se permiten mosaicos y el 1 del segundo bit indica que se permite el WPP. La señalización de que se permiten tanto mosaicos como un WPP aun así sólo necesita tres bits y señaliza que se permite sólo uno de, los mosaicos y el WPP. Por lo tanto, sería mínima la cantidad de rediseño que podría ser necesaria para hacer que un codificador de vídeo capaz de analizar un conjunto de parámetros donde tanto los mosaicos como el WPP son capaces de ser permitidos de forma simultánea.
Tal y como se puede ver comparando las tablas 2 y 4, los elementos sintácticos utilizados para señalizar puntos de entrada para las técnicas de esta divulgación no cambian, pero puede cambiar cómo un decodificador de video interpreta esos elementos sintácticos. Por ejemplo, de acuerdo con las técnicas de esta divulgación, si se permiten tanto mosaicos como un WPP en una imagen, entonces el codificador de video interpreta los puntos de entrada señalizados en las cabeceras de fragmento como puntos de entrada del WPP. Si sólo se permite uno de, los mosaicos y el WPP en una imagen, entonces los puntos de entrada señalizados en la cabecera de fragmento se corresponden con cualquiera de los mosaicos o el WPP tal y como se indica en el PPS como en la norma HEVC WD7. Por ejemplo, en respuesta a que sólo se permitan mosaicos, el codificador 30 de video puede interpretar puntos de entrada señalizados en una cabecera de fragmento como correspondientes a los puntos de entrada de mosaico y en respuesta a que se permita únicamente el WPP, el decodificador 30 de video interpreta los puntos de entrada señalizados en la cabecera de fragmento como correspondientes a los puntos de entrada del WPP.
La figura 6 es un diagrama de bloques que ilustra un codificador 20 de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación. El codificador 20 de video puede realizar una inter o intracodificación de bloques de video dentro de fragmentos de video. La intracodificación se basa en una predicción espacial para reducir o retirar la redundancia espacial en el video dentro de una trama o imagen de vídeo dadas. La intercodificación se basa en una predicción temporal para reducir o retirar la redundancia temporal en video dentro de tramas o imágenes adyacentes de una secuencia de vídeo. El intramodo (modo I) puede referirse a cualquiera de varios modos de compresión basados en el espacio. Intermodos tales como una predicción unidireccional (modo P) o una bipredicción (modo B) pueden referirse a cualquiera de diversos modos de compresión basados en el tiempo.
En el ejemplo de la figura 6, el codificador 20 de video incluye una unidad 35 de división, una unidad 41 de procesamiento de predicción, una unidad 63 de filtro, una memoria 64 de imagen de referencia, un sumador 50, una unidad 52 de procesamiento de transformada inversa, una unidad 54 de cuantificación y una unidad 56 de codificación por entropía. La unidad 41 de procesamiento de predicción incluye una unidad 42 de estimación de movimiento, una unidad 44 de compensación de movimiento y una unidad 46 de procesamiento de intrapredicción. Para la reconstrucción de un bloque de video, el codificador 20 de video también incluye una unidad 58 de cuantificación inversa, una unidad 60 de procesamiento de transformada inversa y un sumador 62. La unidad 63 de filtro está destinada a representar uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de bucle adaptativo (ALF) y un filtro de desplazamiento adaptativo demuestras (SAO). Aunque la unidad 63 de filtro se muestra en la figura 6 siendo un filtro de bucle, en otras configuraciones, la unidad 63 de filtro puede implementarse como un filtro posbucle.
Como se muestra en la figura 6, el codificador 20 de vídeo recibe datos de vídeo, y la unidad 35 de división divide los datos en bloques de vídeo. Esta división también puede incluir la división en fragmentos, mosaicos u otras unidades más grandes, así como la división en bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de las LCU y las CU. El codificador 20 de vídeo ilustra, en general, los componentes que codifican bloques de vídeo dentro de un fragmento de vídeo que se va a codificar. El fragmento se puede dividir en múltiples bloques de vídeo (y posiblemente en conjuntos de bloques de video referidos como mosaicos). La unidad 41 de procesamiento de predicción puede seleccionar uno de una pluralidad de posibles modos de codificación, tal como uno de una pluralidad de modos de intracodificación, o uno de una pluralidad de modos de intercodificación, para el bloque de vídeo actual basándose en resultados de error (por ejemplo, la velocidad de codificación y el nivel de distorsión). La unidad 41 de procesamiento de predicción puede proporcionar el bloque intra o intercodificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia.
La unidad 46 de procesamiento de intrapredicción, dentro de la unidad 41 de procesamiento de predicción, puede realizar la codificación intrapredictiva del bloque de vídeo actual en relación con uno o más bloques contiguos en la misma trama o fragmento que el bloque actual que se va a codificar, para proporcionar una compresión espacial. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento dentro de la unidad 41 de procesamiento de predicción realizan la codificación interpredictiva del bloque de vídeo actual en relación con uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar una compresión temporal.
La unidad 42 de estimación de movimiento se puede configurar para determinar el modo de interpredicción para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo en la secuencia como fragmentos P, fragmentos B o fragmentos GPB. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar altamente integradas, pero se ilustran por separado para propósitos conceptuales. La estimación del movimiento, realizada por la unidad 42 de estimación de movimiento, es el procedimiento de generación de vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual en relación con un bloque predictivo dentro de una imagen de referencia.
Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, lo que se puede determinar por la suma de las diferencias absolutas (SAD), la suma de las diferencias al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador 20 de vídeo puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria 64 de imágenes de referencia. Por ejemplo, el codificador 20 de vídeo puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, la unidad 42 de estimación de movimiento puede realizar una búsqueda de movimiento en relación con las posiciones de píxel completo y las posiciones de píxel fraccionario, y emitir un vector de movimiento con una precisión de píxel fraccionario.
La unidad 42 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento intercodificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia se puede seleccionar de una primera lista (lista 0) de imágenes de referencia o de una segunda lista (lista 1) de imágenes de referencia, cada una de las cuales identifica una o más imágenes de referencia almacenadas en una memoria 64 de imágenes de referencia. La unidad 42 de estimación de movimiento envía elementos sintácticos a partir de los que se puede determinar el vector de movimiento calculado a la unidad 56 de codificación por entropía y la unidad 44 de compensación de movimiento.
La compensación del movimiento, realizada por la unidad 44 de compensación de movimiento, puede implicar obtener o generar el bloque predictivo basándose en el vector de movimiento determinado por la estimación del movimiento, posiblemente realizando interpolaciones a una precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad 44 de compensación de movimiento puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador 20 de vídeo forma un bloque de vídeo residual restando valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luma como de croma. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad 44 de compensación de movimiento también puede generar elementos sintácticos asociados a los bloques de vídeo y al fragmento de vídeo para su uso por el decodificador 30 de vídeo en la decodificación de los bloques de vídeo del fragmento de vídeo.
La unidad 46 de intrapredicción puede intrapredecir un bloque actual, como alternativa a la interpredicción realizada por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, como se describió anteriormente. En particular, la unidad 46 de intrapredicción puede determinar un modo de intrapredicción para usar para codificar un bloque actual. En algunos ejemplos, la unidad 46 de intrapredicción puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pases de codificación separados, y la unidad 46 de intrapredicción (o unidad 40 de selección de modo, en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado para usar a partir de los modos comprobados. Por ejemplo, la unidad 46 de intrapredicción puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción comprobados, y seleccionar el modo de intrapredicción que tenga las mejores características de velocidad-distorsión entre los modos comprobados. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se codificó para producir el bloque codificado, así como una velocidad de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad 46 de intrapredicción puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
En cualquier caso, después de seleccionar un modo de intrapredicción para un bloque, la unidad 46 de intrapredicción puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad 56 de codificación por entropía. La unidad 56 de codificación por entropía puede codificar la información que indica el modo de intrapredicción seleccionado de acuerdo con las técnicas de esta divulgación. El codificador 20 de vídeo puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices del modo de intrapredicción y una pluralidad de tablas de índices del modo de intrapredicción modificadas (también denominadas tablas de correlación de palabras clave), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índices del modo de intrapredicción y una tabla de índices del modo de intrapredicción modificada para usar para cada uno de los contextos.
Después de que la unidad 41 de procesamiento de predicción genera el bloque predictivo para el bloque de vídeo actual, por medio de interpredicción o bien intrapredicción, el codificador 20 de vídeo forma un bloque de vídeo residual restando el bloque predictivo al bloque de vídeo actual. Los datos de vídeo residuales del bloque residual se pueden incluir en una o más TU y aplicarse a la unidad 52 de procesamiento de transformada inversa. La unidad 52 de procesamiento de transformada inversa transforma los datos de vídeo residuales en coeficientes de transformada residuales usando una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. La unidad 52 de procesamiento de transformada inversa puede convertir los datos de vídeo residuales de un dominio de píxel a un dominio de transformada, tal como un dominio de frecuencia.
La unidad 52 de procesamiento de transformada inversa puede enviar los coeficientes de transformada resultantes a la unidad 54 de cuantificación. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir además la velocidad de bits. El procedimiento de cuantificación puede reducir la profundidad de bits asociada a algunos o a todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad 54 de cuantificación puede realizar a continuación una exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad 56 de codificación por entropía puede realizar la exploración.
Seguidamente a la cuantificación, la unidad 56 de codificación por entropía codifica los coeficientes de transformada cuantificados. Por ejemplo, la unidad 56 de codificación por entropía puede realizar una codificación de longitud variable adaptativa al contexto (CAVLC), una codificación aritmética binaria adaptativa al contexto (CABAC), una codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), una codificación por entropía por división de intervalos de probabilidad (PIPE) u otra metodología o técnica de codificación por entropía. Seguidamente a la codificación por entropía por la unidad 56 de codificación por entropía, el flujo de bits codificado se puede transmitir al decodificador 30 de vídeo, o archivarse para su posterior transmisión o recuperación por el decodificador de vídeo 30. La unidad 56 de codificación por entropía también puede codificar por entropía los vectores de movimiento y los otros elementos sintácticos para el fragmento de vídeo actual que se está codificando.
La unidad 58 de cuantificación inversa y la unidad 60 de procesamiento de transformada inversa aplican una cuantificación inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, para su posterior uso como un bloque de referencia de una imagen de referencia. La unidad 44 de compensación de movimiento puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. La unidad 44 de compensación de movimiento también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles fraccionarios, para su uso en la estimación del movimiento. El sumador 62 puede añadir el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad 44 de compensación de movimiento para producir un bloque de referencia para su almacenamiento en la memoria 64 de imágenes de referencia. El bloque de referencia se puede usar por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento como un bloque de referencia para realizar una interpredicción de un bloque en una trama o imagen de vídeo subsiguiente.
Tal y como se describió anteriormente, el codificador 20 de vídeo puede estar configurado para implementar las técnicas de esta divulgación, incluyendo técnicas que pueden permitir que se implementen mecanismos de procesamiento en paralelo múltiples de forma simultánea. El codificador 20 de vídeo de la figura 6 puede, por ejemplo, generar para inclusión en un flujo de bits codificado el elemento sintáctico “parallelismjdc" descrito anteriormente. Cuando los datos de video se codifican utilizando más de un mecanismo de procesamiento en paralelo, el codificador 20 de vídeo de la figura 6 también puede codificar los datos de video utilizando una o más de las diversas restricciones descritas en esta divulgación para permitir a un codificador de vídeo analizar de forma apropiada el conjunto de parámetros y los datos de cabecera de fragmento. Por ejemplo, el codificador 20 de vídeo codifica datos de video de tal manera que los frentes de onda están completamente dentro de un fragmento y no se extienden a través de una pluralidad de mosaicos y que un mosaico inicia el fragmento.
De esta manera, el codificador 20 de video de la figura 6, representa un ejemplo de codificador de vídeo configurado para generar uno o más primeros bits en un conjunto de parámetros que indican si se permiten mosaicos para una serie de bloques de vídeo y generar uno o más segundos bits en el conjunto de parámetros que son diferentes del uno o más primeros bits y que indican si se permite un WPP para la serie de bloques de video. Los bits generados pueden incluirse en un flujo de bits codificado de datos de video.
La figura 7 es un diagrama de bloques que ilustra un decodificador 30 de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación. En el ejemplo de la figura 7, el decodificador 30 de vídeo incluye una unidad 80 de decodificación por entropía, una unidad 81 de procesamiento de predicción, una unidad 86 de cuantificación inversa, una unidad 88 de transformación inversa, un sumador 90, una unidad 91 de filtro y una memoria 92 de imagen de referencia. La unidad 81 de procesamiento de predicción incluye una unidad 82 de compensación de movimiento y una unidad 84 de procesamiento de intrapredicción. El codificador 30 de vídeo puede, en algunos ejemplos, realizar un paso de decodificación generalmente recíproco al paso de codificación descrito con respecto al codificador 20 de video de la figura 6.
Durante el proceso de decodificación, el decodificador 30 de vídeo recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un fragmento de vídeo codificado y elementos sintácticos asociados del codificador 20 de vídeo. La unidad 80 de decodificación por entropía del decodificador 30 de vídeo decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. La unidad 80 de decodificación por entropía envía el vector de movimiento y otros elementos sintácticos a la unidad 81 de procesamiento de predicción. El decodificador 30 de vídeo puede recibir los elementos sintácticos en el nivel de fragmento de vídeo y/o el nivel de bloque de vídeo.
Cuando el fragmento de video es codificado en un fragmento intracodificado (I), la unidad 84 de procesamiento de intrapredicción de la unidad 81 de procesamiento de predicción puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual basándose en un modo de intrapredicción señalado y datos de los bloques de codificados previamente de la trama o imagen actual. Cuando la trama de vídeo es codificada en un fragmento intercodificado (es decir, B, P o GPB), la unidad 82 de compensación de movimiento de la unidad 81 de procesamiento de predicción produce bloques predictivos para un bloque de vídeo del fragmento de vídeo actual basándose en vectores de movimiento y otros elementos sintácticos recibidos de la unidad 80 de decodificación por entropía. Los bloques predictivos pueden producirse desde una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador 30 de vídeo puede construir las listas de tramas de referencia, lista 0 y lista 1, utilizando técnicas de construcción por defecto basadas en imágenes de referencia almacenadas en la memoria 92 de imagen de referencia.
La unidad 82 de compensación de movimiento determina información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando los vectores de movimiento y otros elementos sintácticos y utiliza la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que está siendo codificado. Por ejemplo, la unidad 82 de compensación de movimiento utiliza algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) utilizado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de interpredicción (por ejemplo, fragmento B, fragmento P o fragmento GPB), una información de construcción para una o más de las listas de imágenes de referencia del fragmento, vectores de movimiento para cada bloque de vídeo intercodificado del fragmento, estado de interpredicción para cada bloque de vídeo intercodificado del fragmento y otra información para decodificar los bloques de vídeo en el fragmento de vídeo actual.
La unidad 82 de compensación de movimiento también puede realizar una interpolación basándose en filtros de interpolación. La unidad 82 de compensación de movimiento puede utilizar filtros de interpolación como los utilizados por el codificador 20 de vídeo durante la codificación de los bloques de vídeo para calcular valores interpola 2 para píxeles fraccionarios de bloques de referencia. En este caso, la unidad 82 de compensación de movimiento puede determinar los filtros de interpolación utilizados por el codificador 20 de vídeo de los elementos sintácticos recibidos y utilizar los filtros de interpolación para producir bloques predictivos.
La unidad 86 de cuantificación inversa cuantifica de forma inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y de codificados por la unidad 80 de decodificación por entropía. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador 20 de vídeo para cada bloque de vídeo en el fragmento de vídeo para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa que debería aplicarse. La unidad 88 de procesamiento de transformada inversa aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de píxel.
Después de que la unidad 82 de compensación de movimiento genera el bloque predictivo para el bloque de vídeo actual basándose en vectores de movimiento y otros elementos sintácticos, el decodificador 30 de vídeo forma un bloque de vídeo de codificado sumando los bloques residuales de la unidad 88 de procesamiento de transformada inversa con los bloques predictivos correspondientes generados por la unidad 82 de compensación de movimiento. El sumador 90 representa el componente o componentes que realizan esta operación de suma. Si se desea, se pueden también utilizar filtros de bucle (o bien en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxel o de otro modo mejorar la calidad de vídeo. La unidad 91 de filtro está destinada a representar uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de bucle adaptativo (ALF) y un filtro de desplazamiento adaptativo de muestras (SAO). Aunque la unidad 91 de filtro se muestra en la figura 5, siendo un filtro de bucle, en otras configuraciones, la unidad 91 de filtro se puede implementar como un filtro de posbucle. Los bloques de vídeo de codificados en una trama o imagen dadas son después almacenados en la memoria 92 de imagen de referencia, que almacena imágenes de referencia utilizadas para una compensación de movimiento subsiguiente. La memoria 92 de imagen de referencia también almacena vídeo de codificado para una presentación posterior en un dispositivo de visualización, tal como el dispositivo 32 de visualización de la figura 1.
De esta manera, el decodificador 30 de vídeo de la figura 7 representa un ejemplo de un decodificador de video configurado para recibir un conjunto de parámetros que comprende uno o más primeros bits y uno o más segundos bits, en donde el uno o más primeros bits indica si se permiten mosaicos para una serie de bloques de vídeo, en donde el uno o más segundos bits son diferentes del uno o más primeros bits y en donde el uno o más segundos bits indican si se permite un procesamiento en paralelo de frente de onda (WPP) para la serie de bloques de vídeo; y decodificar la serie de bloques de vídeo basándose en el conjunto de parámetros. El decodificador 30 de video puede decodificar la serie de bloques de vídeo utilizando tanto mosaicos como un WPP. El decodificador 30 de vídeo es entonces configurado para analizar un flujo de bits donde los frentes de onda están presentes completamente dentro de mosaicos, los frentes de onda no se extienden a través de múltiples mosaicos y un mosaico inicia el fragmento.
El decodificador 30 de video también puede recibir puntos de entrada de WPP señalizados en una cabecera de fragmento. El codificador 30 de vídeo puede, por ejemplo, recibir, para una segunda serie de bloques de vídeo, un conjunto de parámetros que indica que se permite sólo uno de, mosaicos o un WPP para una imagen y en respuesta a que sólo se están permitiendo mosaicos, interpreta los puntos de entrada señalizados en una cabecera de fragmento como correspondientes a los puntos de entrada de mosaico y en respuesta a que sólo se permita un WPP, interpreta los puntos de entrada señalizados en la cabecera de fragmento como correspondientes a los puntos de entrada del WPP.
La figura 8 es un diagrama de flujo que ilustra una técnica de ejemplo de esta divulgación. La figura 8 se describirá con referencia al decodificador 30 de vídeo, aunque el procedimiento podría realizarse por otros tipos de decodificadores u otros dispositivos. Para una primera serie de bloques de video asociada con un conjunto de parámetros común, el decodificador 30 de vídeo decodifica los bloques de vídeo utilizando tanto mosaicos como un WPP (801). El conjunto de parámetros común puede comprender un conjunto de parámetros de imagen. El decodificador 30 de vídeo recibe uno o más elementos sintácticos (802) que indican si se permite uno de los mosaicos para la serie de bloques de vídeo, si se permite un WPP para las series de bloques de vídeo y si se permiten tanto mosaicos como el WPP para la serie de bloques de vídeo.
En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en o transmitir sobre, 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 facilita la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) medios de almacenamiento legibles por ordenador tangibles que son no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender rAm , ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, un almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, una memoria flash o cualquier otro medio que se pueda usar para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder desde un ordenador. Además, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otro origen remoto usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en cambio, se refieren a medios de almacenamiento tangibles no transitorios. Un disco y un disco, como se usa en el presente documento, incluye el disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos reproducen normalmente los datos magnéticamente, mientras que otros discos reproducen los datos ópticamente con láseres. Las combinaciones de lo anterior se deberían incluir también dentro del alcance de los medios legibles por ordenador.
Las instrucciones se pueden ejecutar 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 de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos discretos o integrados equivalentes. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o de software dedicados configurados para la codificación y la decodificación, o incorporarse en un códec combinado. Además, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización por diferentes unidades de hardware. En su lugar, como se describió anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar por un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o firmware adecuados.

Claims (8)

REIVINDICACIONES
1. Un procedimiento de decodificación de datos de video, el procedimiento que comprende:
recibir un conjunto de parámetros que comprende uno o más primeros bits y uno o más segundos bits, en donde el uno o más primeros bits indican si se permiten mosaicos para una serie de bloques de vídeo, en donde el uno o más segundos bits son diferentes del uno o más primeros bits, y en donde el uno o más segundos bits indican si se permite un procesamiento en paralelo de frente de onda (WPP) para la serie de bloques de video;
en respuesta a que se estén permitiendo tanto mosaicos como el WPP para un fragmento, un mosaico inicia el fragmento, los frentes de onda están presentes completamente dentro de los mosaicos, los frentes de onda no se extienden a través de múltiples mosaicos y los puntos de entrada señalizados en la cabecera de fragmento se interpretan como puntos de entrada del WPP;
en respuesta a que sólo se estén permitiendo mosaicos, interpretar los puntos de entrada señalizados en una cabecera de fragmento como correspondientes a los puntos de entrada de mosaico;
en respuesta a que sólo se esté permitiendo el WPP, interpretar los puntos de entrada señalizados en la cabecera de fragmento como correspondientes a los puntos de entrada del WPP;
decodificar la serie de bloques de video basándose en el conjunto de parámetros.
2. El método de la reivindicación 1, en donde el conjunto de parámetros es un conjunto de parámetros de imagen.
3. Un dispositivo para decodificación de datos de video, el dispositivo que comprende:
medios para recibir un conjunto de parámetros que comprende uno o más primeros bits y uno o más segundos bits, en donde el uno o más primeros bits indican si se permiten mosaicos para una serie de bloques de vídeo, en donde el uno o más segundos bits son diferentes del uno o más primeros bits, y en donde el uno o más segundos bits indican si se permite un procesamiento en paralelo de frente de onda (WPP) para la serie de bloques de video, medios para interpretar los puntos de entrada señalizados en una cabecera de fragmento, en donde, en respuesta a que se estén permitiendo tanto mosaicos como el WPP para un fragmento, un mosaico inicia el fragmento, los frentes de onda están presentes completamente dentro de los mosaicos, los frentes de onda no se extienden a través de múltiples mosaicos y los puntos de entrada se interpretan como los puntos de entrada del WPP; medios para interpretar los puntos de entrada señalizados en la cabecera de fragmento como correspondientes a los puntos de entrada de mosaico en respuesta a que sólo se estén permitiendo mosaicos;
medios para interpretar los puntos de entrada señalizados en la cabecera de fragmento como correspondientes a los puntos de entrada del WPP en respuesta a que sólo se esté permitiendo el WPP; y
medios para la decodificación de la serie de bloques de video basándose en el conjunto de parámetros.
4. El dispositivo de la reivindicación 3, en donde el conjunto de parámetros es un conjunto de parámetros de imagen.
5. Un procedimiento de codificación de datos de video, el procedimiento que comprende:
generar uno o más primeros bits en un conjunto de parámetros, en donde el uno o más primeros bits indican si se permiten mosaicos para una serie de bloques de video;
generar uno o más segundos bits en el conjunto de parámetros, en donde el uno o más segundos bits son diferentes del uno o más primeros bits y en donde el uno o más segundos bits indican si se permite un procesamiento en paralelo de frente de onda (WPP) para la serie de bloques de video,
señalizar puntos de entrada en una cabecera de fragmento para la serie de bloques de video, en donde: cuando se permiten tanto mosaicos como un WPP para un fragmento, el mosaico inicia el fragmento, los frentes de onda están presentes completamente dentro de los mosaicos, los frentes de onda no se extienden a través de múltiples mosaicos y los puntos de entrada señalizados en la cabecera de fragmento son los puntos de entrada del WPP;
cuando sólo se permiten mosaicos, los puntos de entrada señalizados en la cabecera de fragmento son los puntos de entrada de mosaico;
cuando sólo se permite el WPP, los puntos de entrada señalizados en la cabecera de fragmento son los puntos de entrada del Wp P.
6. El método de la reivindicación 5, en donde el conjunto de parámetros es un conjunto de parámetros de imagen.
7. Un dispositivo para la codificación de datos de video, el dispositivo que comprende:
medios para generar uno o más primeros bits en un conjunto de parámetros, en donde el uno o más primeros bits indican si se permiten mosaicos para una serie de bloques de video;
medios para generar uno o más segundos bits en el conjunto de parámetros, en donde el uno o más segundos bits son diferentes del uno o más primeros bits y en donde el uno o más segundos bits indican si se permite un procesamiento en paralelo de frente de onda (WPP) para la serie de bloques de video; medios para señalizar puntos de entrada en una cabecera de fragmento para la serie de bloques de video, en donde:
cuando se permiten tanto mosaicos como un WPP para un fragmento, un mosaico inicia el fragmento, los frentes de onda están presentes completamente dentro de los mosaicos, los frentes de onda no se extienden a través de múltiples mosaicos y los puntos de entrada señalizados en la cabecera de fragmento son los puntos de entrada del WPP;
cuando sólo se permiten mosaicos, los puntos de entrada señalizados en la cabecera de fragmento son los puntos de entrada de mosaico;
cuando sólo se permite el WPP, los puntos de entrada señalizados en la cabecera de fragmento son los puntos de entrada del Wp P.
8. Un medio de almacenamiento legible por ordenador que almacena instrucciones que cuando se ejecutan por uno o más procesadores provocan que el uno o más procesadores lleven a cabo el método de cualquiera de las reivindicaciones 1 a 2 o 5 a 6.
ES13737502T 2012-06-29 2013-06-28 Procesamiento en paralelo de mosaicos y de frente de onda Active ES2899642T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261666617P 2012-06-29 2012-06-29
US13/841,253 US9621905B2 (en) 2012-06-29 2013-03-15 Tiles and wavefront parallel processing
PCT/US2013/048707 WO2014005087A2 (en) 2012-06-29 2013-06-28 Tiles and wavefront parallel processing

Publications (1)

Publication Number Publication Date
ES2899642T3 true ES2899642T3 (es) 2022-03-14

Family

ID=49778151

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13737502T Active ES2899642T3 (es) 2012-06-29 2013-06-28 Procesamiento en paralelo de mosaicos y de frente de onda

Country Status (14)

Country Link
US (1) US9621905B2 (es)
EP (1) EP2868102B1 (es)
JP (1) JP6174139B2 (es)
KR (1) KR102124225B1 (es)
CN (1) CN104488267B (es)
AR (1) AR092851A1 (es)
DK (1) DK2868102T3 (es)
ES (1) ES2899642T3 (es)
HU (1) HUE056893T2 (es)
PL (1) PL2868102T3 (es)
PT (1) PT2868102T (es)
SI (1) SI2868102T1 (es)
TW (1) TWI520583B (es)
WO (1) WO2014005087A2 (es)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104685886B (zh) * 2012-06-29 2018-12-07 瑞典爱立信有限公司 用于视频处理的装置及其方法
JP6376719B2 (ja) * 2012-06-29 2018-08-22 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP6214235B2 (ja) * 2012-07-02 2017-10-18 キヤノン株式会社 ファイル生成方法、ファイル生成装置、及びプログラム
US9241163B2 (en) * 2013-03-15 2016-01-19 Intersil Americas LLC VC-2 decoding using parallel decoding paths
US20150023410A1 (en) * 2013-07-16 2015-01-22 Arcsoft Hangzhou Co., Ltd. Method for simultaneously coding quantized transform coefficients of subgroups of frame
US9224187B2 (en) * 2013-09-27 2015-12-29 Apple Inc. Wavefront order to scan order synchronization
WO2015054813A1 (en) 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Encoder-side options for intra block copy prediction mode for video and image coding
CN105659606B (zh) 2013-10-14 2019-06-18 微软技术许可有限责任公司 用于视频和图像编码和解码的方法、系统和介质
CA2928495C (en) 2013-10-14 2020-08-18 Microsoft Technology Licensing, Llc Features of intra block copy prediction mode for video and image coding and decoding
GB2520310A (en) * 2013-11-15 2015-05-20 Sony Corp A method, server, client and software
EP3085083B1 (en) 2013-12-18 2021-12-15 HFI Innovation Inc. Method and apparatus for palette initialization and management
CN110225345B (zh) 2013-12-27 2022-07-19 寰发股份有限公司 用于主颜色索引图编码的方法及装置
EP3087738B1 (en) 2013-12-27 2019-10-02 MediaTek Inc. Method and apparatus for palette coding with cross block prediction
WO2015096808A1 (en) 2013-12-27 2015-07-02 Mediatek Inc. Method and apparatus for syntax redundancy removal in palette coding
KR102353787B1 (ko) 2014-01-03 2022-01-19 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
EP3061247A4 (en) 2014-01-07 2016-08-31 Mediatek Inc METHOD AND DEVICE FOR COLOR CODE EXPERIENCE
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
EP3253059A1 (en) 2014-03-04 2017-12-06 Microsoft Technology Licensing, LLC Block flipping and skip mode in intra block copy prediction
US10785486B2 (en) 2014-06-19 2020-09-22 Microsoft Technology Licensing, Llc Unified intra block copy and inter prediction modes
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
WO2016004850A1 (en) * 2014-07-07 2016-01-14 Mediatek Singapore Pte. Ltd. Method of intra block copy search and compensation range
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
MX379020B (es) * 2014-09-30 2025-03-11 Microsoft Technology Licensing Llc Reglas para modos de prediccion intra-imagen cuando se habilita el procesamiento paralelo de onda frontal.
US20160105678A1 (en) * 2014-10-13 2016-04-14 Microsoft Technology Licensing, Llc Video Parameter Techniques
US10277913B2 (en) 2014-10-22 2019-04-30 Samsung Electronics Co., Ltd. Application processor for performing real time in-loop filtering, method thereof and system including the same
GB2532420A (en) * 2014-11-18 2016-05-25 Sony Corp Data encoding and decoding
KR102273670B1 (ko) 2014-11-28 2021-07-05 삼성전자주식회사 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
JP6613618B2 (ja) * 2015-05-20 2019-12-04 株式会社ソシオネクスト 画像処理装置および画像処理方法
CN106664405B (zh) 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
US10382793B2 (en) * 2015-06-23 2019-08-13 Integrated Device Technology, Inc. Apparatuses and methods for performing information extraction and insertion on bitstreams
US10291923B2 (en) * 2016-05-24 2019-05-14 Qualcomm Incorporated Mapping of tile grouping and samples in HEVC and L-HEVC file formats
WO2018061550A1 (ja) * 2016-09-28 2018-04-05 シャープ株式会社 画像復号装置及び画像符号化装置
WO2018097577A1 (ko) * 2016-11-25 2018-05-31 경희대학교 산학협력단 영상 병렬 처리 방법 및 장치
CN107197296B (zh) * 2017-06-22 2019-08-13 华中科技大学 一种基于COStream的HEVC并行编码方法和系统
KR20190024212A (ko) * 2017-08-31 2019-03-08 세종대학교산학협력단 타일 구조의 구성 방법 및 이의 장치
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
JP7220223B6 (ja) 2018-01-25 2023-03-10 フラウンホファー ゲセルシャフト ツール フェールデルンク ダー アンゲヴァンテン フォルシュンク エー.ファオ. 効率的なサブピクチャ抽出
CN118138779A (zh) * 2018-06-01 2024-06-04 夏普株式会社 图像解码装置以及图像编码装置
EP3624450A1 (en) * 2018-09-17 2020-03-18 InterDigital VC Holdings, Inc. Wavefront parallel processing of luma and chroma components
WO2020005758A1 (en) * 2018-06-29 2020-01-02 Interdigital Vc Holdings, Inc. Wavefront parallel processing of luma and chroma components
US10440378B1 (en) 2018-07-17 2019-10-08 Tencent America LLC Method and apparatus for history-based motion vector prediction with parallel processing
KR20200033194A (ko) 2018-09-19 2020-03-27 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2021096057A1 (ko) * 2019-11-14 2021-05-20 엘지전자 주식회사 비디오 또는 영상 코딩 시스템에서의 엔트리 포인트 관련 정보에 기반한 영상 코딩 방법
US12155854B2 (en) * 2019-12-12 2024-11-26 Lg Electronics Inc. Image coding method based on partial entry point-associated information in video or image coding system
JP7431330B2 (ja) 2019-12-26 2024-02-14 バイトダンス インコーポレイテッド ビデオコーディングにおけるプロファイル、層及びレイヤの指示
JP7425204B2 (ja) 2019-12-26 2024-01-30 バイトダンス インコーポレイテッド ビデオビットストリームにおける仮想参照デコーダパラメータのシグナリングに対する制約
JP7422881B2 (ja) 2019-12-27 2024-01-26 バイトダンス インコーポレイテッド パラメータセットにおけるサブピクチャシグナリング
WO2021142364A1 (en) 2020-01-09 2021-07-15 Bytedance Inc. Signalling of high level syntax indication
US12206874B1 (en) 2022-06-27 2025-01-21 Amazon Technologies, Inc. Spatially lapped encoding

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000059792A (ja) 1998-08-06 2000-02-25 Pioneer Electron Corp 動画像信号の高能率符号化装置
US6963608B1 (en) 1998-10-02 2005-11-08 General Instrument Corporation Method and apparatus for providing rate control in a video encoder
US7227589B1 (en) 1999-12-22 2007-06-05 Intel Corporation Method and apparatus for video decoding on a multiprocessor system
US7158571B2 (en) 2000-12-11 2007-01-02 Sony Corporation System and method for balancing video encoding tasks between multiple processors
WO2004030369A1 (en) 2002-09-27 2004-04-08 Videosoft, Inc. Real-time video coding/decoding
US20060104351A1 (en) 2004-11-15 2006-05-18 Shu-Wen Teng Video/image processing devices and methods
US8315466B2 (en) 2006-12-22 2012-11-20 Qualcomm Incorporated Decoder-side region of interest video processing
TWI468015B (zh) 2007-10-26 2015-01-01 Ind Tech Res Inst 視訊解碼的平行處理裝置及方法
US20120163457A1 (en) 2010-12-28 2012-06-28 Viktor Wahadaniah Moving picture decoding method, moving picture coding method, moving picture decoding apparatus, moving picture coding apparatus, and moving picture coding and decoding apparatus
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
US8995523B2 (en) * 2011-06-03 2015-03-31 Qualcomm Incorporated Memory efficient context modeling
US9699456B2 (en) * 2011-07-20 2017-07-04 Qualcomm Incorporated Buffering prediction data in video coding
US9146728B2 (en) * 2011-08-03 2015-09-29 Cinemotion, Llc Mobile application creation platform
PL3742735T3 (pl) * 2011-10-19 2022-11-14 Sun Patent Trust Sposób kodowania obrazów, sposób dekodowania obrazów, urządzenie do kodowania obrazów, urządzenie do dekodowania obrazów, i urządzenie do kodowania i dekodowania obrazów
US9584819B2 (en) * 2011-10-24 2017-02-28 Qualcomm Incorporated Grouping of tiles for video coding
US9247258B2 (en) * 2011-10-26 2016-01-26 Qualcomm Incorporated Unified design for picture partitioning schemes
JP2013098735A (ja) * 2011-10-31 2013-05-20 Canon Inc 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
US9077998B2 (en) * 2011-11-04 2015-07-07 Qualcomm Incorporated Padding of segments in coded slice NAL units
US9124895B2 (en) * 2011-11-04 2015-09-01 Qualcomm Incorporated Video coding with network abstraction layer units that include multiple encoded picture partitions
US9332259B2 (en) * 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
BR112014017915B1 (pt) * 2012-01-20 2021-03-16 Ge Video Compression, Llc conceito de codificação que permite o processamento parelelo, desmultiplexador de transporte e fluxo de bites de vídeo
SG11201405874RA (en) * 2012-01-20 2014-10-30 Samsung Electronics Co Ltd Video encoding method and apparatus and video decoding method and apparatus using unified syntax for parallel processing
CA3056122C (en) * 2012-04-13 2021-05-04 Robert SKUPIN Low delay picture coding
JP6080405B2 (ja) * 2012-06-29 2017-02-15 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
WO2014047134A1 (en) * 2012-09-18 2014-03-27 Vid Scale, Inc. Region of interest video coding using tiles and tile groups
EP2903270B1 (en) * 2012-09-26 2022-04-27 Sun Patent Trust Image encoding method, image decoding method
MY181830A (en) * 2012-09-26 2021-01-08 Panasonic Ip Corp America Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
US10178400B2 (en) * 2012-11-21 2019-01-08 Dolby International Ab Signaling scalability information in a parameter set
US9462287B2 (en) * 2013-01-04 2016-10-04 Dolby International Ab Implicit signaling of scalability dimension identifier information in a parameter set
US8973142B2 (en) * 2013-07-02 2015-03-03 Imperva, Inc. Compromised insider honey pots using reverse honey tokens
KR101930817B1 (ko) * 2013-07-15 2018-12-19 지이 비디오 컴프레션, 엘엘씨 다계층식 비디오 코딩에서의 저지연 개념
GB2516824A (en) * 2013-07-23 2015-02-11 Nokia Corp An apparatus, a method and a computer program for video coding and decoding
EP3056008A4 (en) * 2013-10-10 2017-03-22 Sharp Kabushiki Kaisha Alignment of picture order count
EP3085083B1 (en) * 2013-12-18 2021-12-15 HFI Innovation Inc. Method and apparatus for palette initialization and management
WO2015102441A1 (ko) * 2014-01-03 2015-07-09 삼성전자 주식회사 효율적인 파라미터 전달을 사용하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
US11323733B2 (en) * 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization in palette-based video coding
WO2015184067A1 (en) * 2014-05-28 2015-12-03 Arris Enterprises, Inc. Content aware scheduling in a hevc decoder operating on a multi-core processor platform
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
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing
GB2532420A (en) * 2014-11-18 2016-05-25 Sony Corp Data encoding and decoding
US20160234498A1 (en) * 2015-02-05 2016-08-11 Sharp Laboratories Of America, Inc. Methods and systems for palette table coding

Also Published As

Publication number Publication date
KR20150036169A (ko) 2015-04-07
DK2868102T3 (da) 2021-12-13
JP2015526969A (ja) 2015-09-10
CN104488267B (zh) 2019-04-05
HUE056893T2 (hu) 2022-03-28
EP2868102B1 (en) 2021-11-03
US20140003531A1 (en) 2014-01-02
KR102124225B1 (ko) 2020-06-17
JP6174139B2 (ja) 2017-08-02
WO2014005087A3 (en) 2014-07-03
US9621905B2 (en) 2017-04-11
PT2868102T (pt) 2021-12-17
CN104488267A (zh) 2015-04-01
WO2014005087A2 (en) 2014-01-03
TW201404174A (zh) 2014-01-16
EP2868102A2 (en) 2015-05-06
PL2868102T3 (pl) 2022-01-31
AR092851A1 (es) 2015-05-06
SI2868102T1 (sl) 2022-01-31
TWI520583B (zh) 2016-02-01

Similar Documents

Publication Publication Date Title
ES2899642T3 (es) Procesamiento en paralelo de mosaicos y de frente de onda
ES2895270T3 (es) Codificación de mensajes SEI de MCTS-EIS de una unidad de acceso
ES2978906T3 (es) Asociación de unidades de decodificación resiliente a errores
ES2897708T3 (es) Modelado de contexto eficiente en memoria
ES2884723T3 (es) Señalización de regiones de interés y actualización de decodificación gradual en la codificación de video
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
ES2707892T3 (es) Operaciones de almacenamiento en memoria intermedia de vídeo para acceso aleatorio en la codificación de vídeo
ES2701786T3 (es) Procesamiento de memoria intermedia de imágenes descodificadas para imágenes de punto de acceso aleatorio en secuencias de vídeo
ES2715555T3 (es) Predicción residual de componentes cruzadas adaptativa
ES2901503T3 (es) Decodificación de datos de vídeo usando una estructura de árbol de múltiples tipos de dos niveles
ES2611349T3 (es) Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo
ES2977203T3 (es) Restricción de unidades de predicción en segmentos B a interpredicción unidireccional
ES2928248T3 (es) Relleno de segmentos en unidades NAL de la porción codificada
ES2864623T3 (es) Codificación de parámetros de cuantificación (QP) en codificación de video
ES2750124T3 (es) Elementos sintácticos de señalización para coeficientes de transformada para subconjuntos de una unidad de codificación a nivel de hoja
ES2992040T3 (es) Número de reducción de contexto para la codificación aritmética binaria adaptativa al contexto
ES2748561T3 (es) Unidades de acceso IRAP y conmutación y empalme de flujos de bits
ES2833149T3 (es) Refresco gradual de descodificación con soporte de adaptabilidad temporal a escala en la codificación de vídeo
ES2887368T3 (es) Derivación de la información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas
ES2684546T3 (es) Codificación de vídeo con comportamientos de imagen de punto de acceso aleatorio mejorados
ES2656470T3 (es) Mejora de los diseños de formato de la carga útil de RTP
ES2856099T3 (es) Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
ES2703342T3 (es) Selección de imagen de referencia
KR20140130466A (ko) B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한