ES2978906T3 - Asociación de unidades de decodificación resiliente a errores - Google Patents

Asociación de unidades de decodificación resiliente a errores Download PDF

Info

Publication number
ES2978906T3
ES2978906T3 ES13759597T ES13759597T ES2978906T3 ES 2978906 T3 ES2978906 T3 ES 2978906T3 ES 13759597 T ES13759597 T ES 13759597T ES 13759597 T ES13759597 T ES 13759597T ES 2978906 T3 ES2978906 T3 ES 2978906T3
Authority
ES
Spain
Prior art keywords
decoding
unit
decoding unit
units
sei message
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
ES13759597T
Other languages
English (en)
Inventor
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 ES2978906T3 publication Critical patent/ES2978906T3/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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • H04N19/895Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)

Abstract

Se describen técnicas para señalar identificadores de unidad de decodificación para unidades de decodificación de una unidad de acceso. El decodificador de vídeo determina qué unidades de capa de abstracción de red (NAL) están asociadas con qué unidades de decodificación en función de los identificadores de unidad de decodificación. También se describen técnicas para incluir una o más copias de mensajes de información de mejora suplementaria (SEI) en una unidad de acceso. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Asociación de unidades de decodificación resiliente a errores
Campo técnico
Esta divulgación generalmente se relaciona con el procesamiento de datos de vídeo y, más particularmente, con técnicas aplicables a uno o más estándares de codificación de vídeo.
Antecedentes
Las capacidades de vídeo digital se pueden incorporar a un amplio rango de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbricos, asistentes digitales personales (PDAs), ordenadores portátiles o de escritorio, ordenadores tipo tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos celulares o satelitales, los denominados "teléfonos inteligentes", dispositivos de teleconferencia por vídeo, dispositivos de transferencia de datos de vídeo, transcodificadores, enrutadores u otros dispositivos de red, y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en los estándares definidos por MPEG-2, MP<e>G-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), el estándar de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente bajo desarrollo, estándares registrados, formatos abiertos de compresión de vídeo tales como VP8, y extensiones de tales estándares, técnicas o formatos. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar, y/o almacenar información de vídeo digital de manera más eficiente implementando tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o retirar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, una sección de vídeo (es decir, un marco de vídeo o una porción de un marco de vídeo) puede dividirse en bloques de vídeo, que también pueden denominarse como bloques de árbol, unidades de codificación (CUs) y/o nodos de codificación. Los bloques de vídeo en una sección intracodificada (I) de una imagen se codifican mediante predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en una sección intercodificada (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse como marcos, y las imágenes de referencia pueden denominarse como marcos de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que va a ser codificado. Los datos residuales representan diferencias de píxeles entre el bloque original que va a ser codificado y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para compresión adicional, los datos residuales pueden transformarse desde el dominio de píxeles a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que luego pueden cuantificarse. Los coeficientes de transformada cuantificados, inicialmente dispuestos en un arreglo bidimensional, se pueden escanear con el fin de producir un vector unidimensional de coeficientes de transformada, y se puede aplicar codificación por entropía para lograr aún más compresión.
En el documento titulado "AHG9: Slice Prefix for sub-picture and slice level HLS signalling" de Schierl et al (10° reunión JCT-VC; 101° reunión MPEG; 11-7-2012 - 20-7-20l2; Estocolmo; documento no. JCTVC-J0255), se propone aplicar mensajes de SEI así como ítems de sintaxis de alto nivel adicionales, además de los incluidos en el encabezado de unidad de NAL, sobre una base de nivel por sección. Se describe una Unidad de NAL de Prefijo de sección. Se describen la sintaxis y semántica de los mensajes de SEI de prefijo de sección y de nivel de sección/subimagen así como casos de uso para operaciones de CPB de bajo retraso/subimagen, señalización de mosaicos y señalización de región de interés.
En el documento titulado "Absolute signaling of reference pictures" de Sjoberg et al (6ta reunión JCT-VC; 97° reunión MPEG; 14-7-2011 - 22-7-2011; Turín; documento no. JCTVC-F493), se propuso para señalar la frecuencia de reloj de marca de tiempo, referencias temporales, marcas de tiempo de decodificación, y marcas de tiempo de presentación.
En el documento titulado "Signaling of Timestamps" de Hannuksela (3ra reunión JVT; 60° reunión MPEG; 06-05-2002 - 10-05-2002; Fairfax, EE.UU.; documento no. JVT-C070), hay una propuesta con respecto a los procesos de imágenes de referencia en HEVC. Se propone que las imágenes que deberían estar disponibles como referencia se describan de una manera absoluta en el encabezado de sección de una imagen en lugar de en una manera relativa (a través de MMCO y proceso de ventana deslizante). Se propone además que las operaciones de búfer (marcado de imágenes) se realicen directamente después de análisis sintáctico del primer encabezado de sección de una imagen en lugar de después de que haya sido decodificada la imagen. El documento reivindica que los cambios propuestos mejoran la resiliencia a errores, simplifican la escalabilidad temporal y permiten la decodificación en un número mínimo de ranuras de búfer de imagen decodificada.
Resumen
En general, esta divulgación describe técnicas para procesar unidades de decodificación dentro de una unidad de acceso. Una unidad de acceso se refiere a los datos de vídeo de una o más imágenes dentro de la misma instancia de tiempo. Por ejemplo, la decodificación de unas unidades de acceso da como resultado una o más imágenes decodificadas, donde todas las imágenes decodificadas son para la misma instancia de tiempo.
Una unidad de acceso incluye una o más unidades de decodificación. Como se describe con más detalle, en algunos ejemplos, las técnicas descritas en esta divulgación identifican de manera única cada una de las unidades de decodificación dentro de la unidad de acceso. En algunos ejemplos, las técnicas permiten que se embeban una o más copias de un mensaje dentro de la unidad de acceso.
Las reivindicaciones independientes que acompañan a esta divulgación definen la invención. Las características de algunas realizaciones preferidas se citan en las reivindicaciones dependientes. Esta divulgación también incluye otros ejemplos que, por sí solos, no caen dentro de la redacción de las reivindicaciones independientes. Estos otros ejemplos se proporcionan con propósitos de información y pueden ayudar al lector a entender o implementar la invención reivindicada.
En otro ejemplo, la divulgación describe un método para codificar datos de vídeo. Comprendiendo el método determinar un identificador único para cada unidad de decodificación en una unidad de acceso. En este ejemplo, un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso. El método también incluye determinar qué unidades de capa de acceso a red (NAL) están asociadas con qué unidades de decodificación de la unidad de acceso, y generar para la salida cada identificador único en las unidades de decodificación correspondientes para indicar qué unidades de NAL están asociadas con qué unidades de decodificación de la unidad de acceso.
En otro ejemplo, la divulgación describe un dispositivo para decodificar datos de vídeo. El dispositivo comprende un decodificador de vídeo configurado para decodificar un identificador único para cada unidad de decodificación en una unidad de acceso. En este ejemplo, un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso. El decodificador de vídeo está configurado para determinar qué unidades de capa de acceso a red (NAL) están asociadas con qué unidades de decodificación con base en el identificador único para cada unidad de decodificación en la unidad de acceso, y decodificar las unidades de NAL de cada una de las unidades de decodificación en la unidad de acceso, con base en la determinación, para reconstruir al menos una imagen.
En otro ejemplo, la divulgación describe un dispositivo para codificar datos de vídeo. El dispositivo comprende un codificador de vídeo configurado para determinar un identificador único para cada unidad de decodificación en una unidad de acceso. En este ejemplo, un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso. El codificador de vídeo está configurado para determinar qué unidades de capa de acceso a red (NAL) están asociadas con qué unidades de decodificación de la unidad de acceso, y generar para la salida cada identificador único en las unidades de decodificación correspondientes para indicar qué unidades de NAL están asociadas con qué unidades de decodificación de la unidad de acceso.
En otro ejemplo, la divulgación describe un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo que cuando se ejecutan hacen que uno o más procesadores de un dispositivo para decodificar datos de vídeo decodifiquen un identificador único para cada unidad de decodificación en una unidad de acceso, en donde un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso, determinen qué unidades de capa de acceso a red (NAL) están asociadas con qué unidades de decodificación con base en el identificador único para cada unidad de decodificación en la unidad de acceso, y decodifiquen las unidades de NAL de cada una de las unidades de decodificación en la unidad de acceso, con base en la determinación, para reconstruir al menos una imagen.
En otro ejemplo, la divulgación describe un dispositivo para decodificar datos de vídeo, comprendiendo el dispositivo medios para decodificar un identificador único para cada unidad de decodificación en una unidad de acceso, en donde un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso, medios para determinar qué unidades de capa de acceso a red (NAL) están asociadas con qué unidades de decodificación con base en el identificador único para cada unidad de decodificación en la unidad de acceso, y medios para decodificar las unidades de NAL de cada una de las unidades de decodificación en la unidad de acceso, con base en la determinación, para reconstruir al menos una imagen.
En otro ejemplo, la divulgación describe un método para codificar datos de vídeo, comprendiendo el método codificar un mensaje de información de mejora suplementaria (SEI) en una unidad de acceso. En este ejemplo, la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen, y el mensaje de SEI define una característica de los datos de vídeo. El método también incluye codificar una copia del mensaje de SEI en la unidad de acceso.
En otro ejemplo, la divulgación describe un dispositivo para codificar datos de vídeo, comprendiendo el dispositivo un codificador de vídeo configurado para codificar un mensaje de información de mejora suplementaria (SEI) en una unidad de acceso. En este ejemplo, la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen, y el mensaje de SEI define una característica de los datos de vídeo. El codificador de vídeo también está configurado para codificar una copia del mensaje de SEI en la unidad de acceso.
En otro ejemplo, la divulgación describe un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo que cuando se ejecutan por uno o más procesadores de un dispositivo para codificar datos de vídeo hacen que el uno o más procesadores codifiquen un mensaje de información de mejora suplementaria (SEI) en un unidad de acceso. En este ejemplo, la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen, y el mensaje de SEI define una característica de los datos de vídeo. Las instrucciones también hacen que el uno o más procesadores codifiquen una copia del mensaje de SEI en la unidad de acceso.
En otro ejemplo, la divulgación describe un dispositivo para codificar datos de vídeo, comprendiendo el dispositivo medios para codificar un mensaje de información de mejora suplementaria (SEI) en una unidad de acceso. En este ejemplo, la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen, y el mensaje de SEI define una característica de los datos de vídeo. El dispositivo también incluye medios para codificar una copia del mensaje de SEI en la unidad de acceso.
Los detalles de uno o más ejemplos se establecen en los dibujos acompañantes y en la descripción a continuación. Otras características, objetos, y ventajas serán evidentes a partir de la descripción y dibujos, y a partir de las reivindicaciones.
Breve descripción de dibujos
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
Las figuras 2A y 2B son diagramas conceptuales que ilustran ejemplos de unidades de acceso que incluyen identificadores de unidades de decodificación de acuerdo con las técnicas descritas en esta divulgación.
La figura 3 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 4 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 5 es un diagrama de flujo que ilustra un ejemplo de codificación de datos de vídeo de acuerdo con uno o más ejemplos descritos en esta divulgación.
La figura 6 es un diagrama de flujo que ilustra un ejemplo de decodificación de datos de vídeo de acuerdo con uno o más ejemplos descritos en esta divulgación.
La figura 7 es un diagrama de flujo que ilustra un ejemplo de codificación de datos de vídeo de acuerdo con uno o más ejemplos descritos en esta divulgación.
Descripción detallada
Esta divulgación describe diversos métodos para la señalización y asociación de unidades de decodificación resilientes a errores en la codificación de vídeo. En la codificación de múltiples vistas o codificación de vídeo escalable, se pueden codificar múltiples imágenes o capas para una instancia de tiempo dada. Las imágenes de la misma instancia de tiempo están codificadas en una única unidad de acceso (AU). Por ejemplo, la decodificación de una unidad de acceso da como resultado una imagen para cuando no se usa codificación de múltiples vistas o una pluralidad de imágenes de la misma instancia de tiempo para codificación de múltiples vistas.
Una unidad de decodificación (DU) generalmente se refiere a un subconjunto de una unidad de acceso o a la totalidad de la unidad de acceso. Por ejemplo, si se permite la operación a un nivel de subimagen, entonces una unidad de decodificación es un subconjunto de la unidad de acceso, y la unidad de acceso incluye una pluralidad de unidades de decodificación. Debido a que una unidad de acceso incluye datos de vídeo para una o más imágenes, la operación en el nivel de unidad de decodificación puede considerarse como operación en un nivel de subimagen. Si no se permite la operación en el nivel de subimagen, entonces una unidad de decodificación es la totalidad de la unidad de acceso.
Una unidad de decodificación incluye una o más unidades de capa de abstracción de red (NAL). Por ejemplo, una unidad de decodificación incluye una o más unidades de NAL de capa de codificación de vídeo (VCL) y las unidades de NAL de no VCL asociadas. Un ejemplo de una unidad de NAL es una sección de una imagen (es decir, los datos encapsulados en la unidad de NAL incluyen los datos de vídeo necesarios para decodificar una sección de una imagen). Otro ejemplo de una unidad de NAL es un conjunto de parámetros. Por ejemplo, una unidad de NAL puede incluir datos de vídeo de un conjunto de parámetros de imagen, un conjunto de parámetros de secuencia, y otros ejemplos de un conjunto de parámetros. Como aún otro ejemplo, una unidad de NAL puede incluir información adicional tal como mensajes de información de mejora suplementaria (SEI) usados con propósitos de determinar los tiempos de procesamiento y retiro de las unidades de decodificación desde un búfer (por ejemplo, un búfer de imagen codificada).
En algunos ejemplos descritos en esta divulgación, el codificador de vídeo genera para salida y emite (por ejemplo, señala), en un flujo de bits codificado, un identificador para cada unidad de decodificación dentro de la unidad de acceso. Cada identificador (denominado como identificadores de DU) identifica de manera única una unidad de decodificación dentro de la unidad de acceso. El decodificador de vídeo recibe, a partir del flujo de bits codificado, los identificadores para las unidades de decodificación dentro de la unidad de acceso. El decodificador de vídeo determina qué unidades de NAL están asociadas con qué unidades de decodificación con base en los identificadores de unidad de decodificación.
De esta manera, las técnicas descritas en esta divulgación pueden asegurar que las unidades de NAL estén asociadas con las unidades de decodificación correctas. Por ejemplo, es posible que el codificador de vídeo señale información (por ejemplo, información de salida) que indique el número de unidades de NAL que incluye cada unidad de decodificación. En lugar de utilizar identificadores de unidades de decodificación, el decodificador de vídeo, puede determinar la asociación de las unidades de NAL a las unidades de decodificación con base en el orden en el cual el decodificador de vídeo recibió las unidades de NAL y la información señalizada que indica el número de unidades de NAL que incluye cada unidad de decodificación.
Sin embargo, en este caso, asegurar que las unidades de NAL estén asociadas con las unidades de decodificación correctas no es resiliente a errores. Por ejemplo, si una unidad de NAL se pierde durante la transmisión (por ejemplo, desde el codificador de vídeo al decodificador de vídeo, desde el codificador de vídeo a un dispositivo de almacenamiento intermedio, o desde el dispositivo de almacenamiento intermedio al decodificador de vídeo), el decodificador de vídeo puede no ser capaz de determinar qué unidades de NAL están asociadas con qué unidades de decodificación.
Como otro ejemplo de posibles problemas con asegurar que las unidades de NAL estén asociadas con las unidades de decodificación correctas, puede ser posible que el codificador de vídeo señale las unidades de NAL asociadas con una unidad de decodificación entre dos tipos de mensajes. Por ejemplo, el codificador de vídeo puede señalar una primera instancia de un tipo particular de un mensaje de información de mejora suplementaria (SEI), seguida de una o más unidades de NAL para una primera unidad de decodificación, seguida de una segunda instancia del tipo particular de mensaje de SEI, seguida de una o más unidades de NAL de una segunda unidad de decodificación, y así sucesivamente. El decodificador de vídeo puede determinar que cada unidad de NAL recibida después de la primera instancia de este tipo de mensaje de SEI y antes de la segunda instancia de este tipo de mensaje de SEI esté asociada con la primera unidad de decodificación, cada unidad de NAL recibida después de la segunda instancia de este tipo de mensaje de SEI y antes de la tercera instancia de este tipo de mensaje de SEI esté asociada con la segunda unidad de decodificación, y así sucesivamente.
Este tipo de mensaje de SEI puede incluir información adicional pertinente a la temporización adecuada de la codificación y decodificación. Sin embargo, debido a que las posiciones de este tipo de mensajes de SEI indican qué unidades de NAL están asociadas con qué unidades de decodificación, puede que no sea posible que el codificador de vídeo incluya múltiples copias de este tipo de mensaje de SEI dentro de la unidad de decodificación. Por lo tanto, incluso si uno de estos mensajes de SEI se pierde en la transmisión, el decodificador de vídeo puede no ser capaz de determinar qué unidades de NAL están asociadas con qué unidades de decodificación, y puede no ser capaz de determinar la información adicional portada por el mensaje de SEI perdido.
En las técnicas descritas en esta divulgación, el codificador de vídeo puede generar para salida y emitir información (por ejemplo, con identificadores de unidad de decodificación en un mensaje de SEI o encabezado de sección) que indica qué unidades de NAL están asociadas con qué unidades de decodificación. De esta manera, incluso si una unidad de NAL se pierde en la transmisión, el decodificador de vídeo puede ser capaz de determinar qué unidades de NAL están asociadas con qué unidades de decodificación. También, debido a que el decodificador de vídeo puede no necesitar depender de las posiciones de los mensajes de SEI para determinar qué unidades de NAL están asociadas con qué unidades de decodificación, el codificador de vídeo puede generar para salida y emitir una o más copias del mensaje de SEI en la unidad de decodificación. Tales técnicas pueden proporcionar una manera comparativamente más resiliente a errores en la cual el decodificador de vídeo determina qué unidades de NAL están asociadas con qué unidades de decodificación en comparación con algunas otras técnicas descritas anteriormente.
Además, en algunas de las otras técnicas descritas anteriormente, se prohíbe que se repitan mensajes de SEI de un cierto tipo (una cuestión que las técnicas descritas en esta divulgación pueden abordar). En algunos casos, en estas otras técnicas, no solo se prohíbe que se repitan ciertos tipos de mensajes de SEI, sino que en general se restringe que se repitan mensajes de SEI en la unidad de acceso después de la primera unidad de NAL de VCL en la unidad de acceso y antes de la última unidad de NAL en la unidad de acceso.
Por ejemplo, en algunas de estas otras técnicas, un decodificador de vídeo determinaría el comienzo de una unidad de acceso con base en la ubicación de los mensajes de SEI. Por ejemplo, los mensajes de SEI estarían ubicados al comienzo de la unidad de acceso, y después de determinar que el decodificador de vídeo está procesando un mensaje de SEI, el decodificador de vídeo determinaría que el decodificador de vídeo está procesando una nueva unidad de acceso. Por consiguiente, hay una restricción de incluir múltiples copias de mensajes de SEI dentro de la misma unidad de acceso.
En un entorno propenso a errores, puede ser beneficioso incluir copias de los mensajes de SEI de tal manera que si el mensaje de SEI se pierde, otras copias del mensaje de SEI estén disponibles. En algunos ejemplos, las técnicas permiten que se repitan diversos tipos de mensajes de SEI dentro de la unidad de acceso, lo cual permite además resiliencia a errores. Como ejemplo, las técnicas pueden especificar lo siguiente para todos los mensajes de SEI: (1) un alcance de aplicación al que se aplica la información portada en un mensaje de SEI; (2) dónde puede estar presente un mensaje de SEI; y (3) una restricción sobre el contenido de múltiples instancias de un tipo particular de mensaje de SEI.
Por ejemplo, la unidad de acceso puede empaquetarse en una pluralidad de paquetes (por ejemplo, un paquete de protocolo de transporte en tiempo real (RTP)). Cada paquete típicamente incluye una o más unidades de NAL, pero en algunos casos, un paquete puede incluir un subconjunto de una unidad de<n>A<l>. En un entorno propenso a errores, se pueden perder uno o más paquetes, y si los paquetes perdidos incluían un mensaje de SEI, se puede perder el mensaje de SEI. En las técnicas descritas en esta divulgación, el codificador de vídeo puede generar para salida y emitir (por ejemplo, señalar) una o más copias del mensaje de SEI en la unidad de acceso. De esta forma, incluso si se pierde un paquete que incluye uno de los mensajes de SEI, el mensaje de SEI aún puede estar disponible como una copia en un paquete que no se pierde.
Como otro ejemplo, el codificador de vídeo puede codificar un flujo de bits de vídeo con múltiples capas, tales como en la extensión multicapa de estándar de codificación de vídeo de alta eficiencia (HEVC). Las múltiples capas incluyen una capa base y una o más capas no base. Una capa no base puede ser una capa de mejora espacial o de calidad, textura de una vista diferente, profundidad de una vista diferente, y otros de tales ejemplos. El codificador de vídeo puede transportar las diferentes capas en diferentes canales (por ejemplo, usando transmisión de multisesión (MST) definida de manera similar en IETF RFC 6190 (disponible públicamente en http://tools.ietf.org/rfc/rfc6190.txt). En las técnicas descritas en esta divulgación, el codificador de vídeo puede incluir una unidad de NAL de SEI dentro de dos unidades de NALU de VCL dentro de una unidad de acceso, donde la unidad de NAL de SEI incluye los mensajes de SEI, y después de la primera unidad de NAL de VCL de la unidad de acceso. En palabras, las técnicas descritas en esta divulgación para incluir un mensaje de SEI después de la primera unidad de NAL de VCL en una unidad de acceso también son aplicables a ejemplos de transmisión de multisesión.
En las técnicas descritas en esta divulgación, el decodificador de vídeo no necesita depender necesariamente de la ubicación de los mensajes de SEI para determinar que el decodificador de vídeo está procesando una nueva unidad de acceso. Por ejemplo, el decodificador de vídeo puede depender de alguna otra información de encabezado para determinar que está siendo procesada una nueva unidad de acceso. Por consiguiente, en las técnicas descritas en esta divulgación, el codificador de vídeo puede generar para salida y emitir un mensaje de SEI en la unidad de acceso y una o más copias del mensaje de SEI en la unidad de acceso, y el decodificador de vídeo puede recibir el mensaje de SEI y una o más copias del mensaje de SEI. Debido a que el decodificador de vídeo no necesita depender del mensaje de SEI para determinar cuándo está siendo procesada una nueva unidad de acceso, el decodificador de vídeo puede configurarse para procesar múltiples copias de mensajes de SEI dentro de la misma unidad de acceso sin determinar que está siendo procesada una nuevo unidad de acceso, diferente.
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo 10 de ejemplo que puede utilizar las técnicas descritas en esta divulgación. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de vídeo codificados para ser decodificados en un momento posterior por un dispositivo de destino 14. El dispositivo de origen 12 y dispositivo de destino 14 pueden comprender cualquiera de un amplio rango de dispositivos, incluyendo ordenadores de escritorio, ordenadores portables (es decir, portátiles), ordenadores tipo tableta, decodificadores, aparatos telefónicos tales como los denominados teléfonos "inteligentes", las denominadas almohadillas "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transferencia de datos de vídeo, o similares. En algunos casos, el dispositivo de origen 12 y dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo de destino 14 puede recibir los datos de vídeo codificados que van a ser decodificados a través de un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia, o una red global tal como el 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 de origen 12 al dispositivo de destino 14.
Alternativamente, los datos codificados pueden emitirse desde la interfaz de salida 22 a un dispositivo de almacenamiento 32. De manera similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 32 mediante la interfaz de entrada. El dispositivo de almacenamiento 32 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o a los que se accede localmente tales como un disco duro, discos Blu-ray, DVDs, CD-ROMs, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento 32 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de vídeo almacenados desde el dispositivo de almacenamiento 32 a través de transferencia de datos 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 de destino 14. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectado a red (NAS), o una unidad de disquete local. El dispositivo de destino 14 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 cableada (por ejemplo, DSL, módem por cable, etc.), o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 32 puede ser una transmisión de transferencia de datos, una transmisión de descarga, o una combinación de ambas.
Las técnicas de esta divulgación no se limitan necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo en soporte de 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 transferencia de datos, por ejemplo, a través del Internet, codificación de vídeo digital para almacenamiento en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para soportar transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como transferencia de datos 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 de origen 12 incluye una fuente de vídeo 18, codificador de vídeo 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo, y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el vídeo fuente, o una combinación de tales fuentes. Como ejemplo, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o teléfonos de vídeo. Sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas.
El vídeo capturado, precapturado, o generado por ordenador puede codificarse mediante el codificador de vídeo 20. Los datos de vídeo codificados pueden transmitirse directamente al dispositivo de destino 14 a través de la interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados también pueden (o alternativamente) almacenarse en el dispositivo de almacenamiento 32 para posterior acceso por el dispositivo de destino 14 u otros dispositivos, para decodificación y/o reproducción.
El dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de vídeo 30, y un dispositivo de visualización 31. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de vídeo codificados a través del enlace 16. Los datos de vídeo codificados comunicados a través del enlace 16, o proporcionados en el dispositivo de almacenamiento 32, pueden incluir una variedad de elementos de sintaxis generados por el codificador de vídeo 20 para uso por un decodificador de vídeo, tal como decodificador de vídeo 30, al decodificar los datos de vídeo. Tales elementos de sintaxis pueden incluirse con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento, o almacenados en un servidor de archivos.
El dispositivo de visualización 31 puede estar integrado con, o externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 31 muestra los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánico (OLED), u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y decodificador de vídeo 30 pueden formarse como microprocesadores o circuitos integrados (ICs) individuales o pueden ser parte de microprocesadores o ICs más grandes. En algunos ejemplos, el codificador de vídeo 20 y decodificador de vídeo 30 pueden ser parte de un dispositivo de comunicación inalámbrica.
El codificador de vídeo 20 y decodificador de vídeo 30 pueden operar de acuerdo con un estándar de compresión de vídeo. Ejemplos de los estándares de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual y ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC) incluyendo sus extensiones de codificación de vídeo escalable (SVC) y codificación de vídeo de múltiples vistas (MVC).
Además, hay un nuevo estándar de codificación de vídeo de acuerdo con el cual el codificador de vídeo 20 y decodificador de vídeo 30 pueden operar, a saber estándar de Codificación de Vídeo de Alta Eficiencia (HEVC) que se desarrolla por el Equipo Conjunto de Colaboración sobre Codificación de Vídeo (JCT-VC) de Grupo de Expertos en Codificación de vídeo (VCEG) UIT-T y Grupo de Expertos en Imágenes en Movimiento (MPEG) ISO/IEC. El codificador de vídeo 20 y decodificador de vídeo 30 pueden ajustarse al Modelo de Prueba de HEVC (HM). Un borrador reciente del estándar de HEVC, denominado como "Borrador de Trabajo 8 de HEVC" o "WD8", se describe en el documento JCTVC-H1003, Bross et al., "High efficiency video coding (HEVC) text specification draft 8", Equipo Conjunto Colaborativo sobre Codificación de Vídeo (JCT-VC) de UIT-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10° Reunión: Estocolmo, SE, 11-20 de julio de 2012, que, a partir del 2 de abril de 2013, es descargable desde http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip. Un borrador de trabajo más reciente de HEVC, y denominado como "HEVC Working Draft 9" or "WD9" o "WD9" de aquí en adelante, está disponible, a partir del 2 de abril de 2013, desde http://phenix.int-evry.fr/jct/doc_end_user/documents/11 _Shanghai/wg 11 /JCTVC-K1003 -v 10 .zip.
Alternativamente, el codificador de vídeo 20 y decodificador de vídeo 30 pueden operar de acuerdo con otros estándares registrados o industriales, tales como el estándar ITU-T H.264, denominado alternativamente como MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), o extensiones de tales estándares. Sin embargo, las técnicas de esta divulgación no se limitan a ningún estándar de codificación particular. Otros ejemplos de estándares de compresión de vídeo incluyen MPEG-2 y ITU-T H.263, así como formatos abiertos tales como VP8.
Sin embargo, las técnicas de esta divulgación no se limitan a ningún estándar de codificación particular. Por ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 no necesitan ajustarse necesariamente a ningún estándar de codificación de vídeo particular. Además, incluso si las técnicas descritas en esta divulgación no pueden ajustarse necesariamente a un estándar particular, las técnicas descritas en esta divulgación pueden ayudar además a la eficiencia de codificación en relación con los diversos estándares. También las técnicas descritas en esta divulgación pueden ser parte de estándares futuros. Para facilidad de entendimiento, las técnicas se describen con respecto al estándar de HEVC bajo desarrollo, pero las técnicas no se limitan al estándar de HEVC, y pueden extenderse a otros estándares de codificación de vídeo o técnicas de codificación de vídeo que no están definidas por un estándar en particular.
Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de vídeo 20 y decodificador de vídeo 30 pueden integrarse cada uno con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para manejar la codificación tanto de audio como vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, en algunos ejemplos, las unidades MUX-DEMUx pueden ajustarse al protocolo multiplexor ITU H.223, u otros protocolos tales como el protocolo de datagramas de usuario (UDP).
El codificador de vídeo 20 y decodificador de vídeo 30 pueden implementarse cada uno como cualquiera de una variedad de circuitería codificadora adecuada, tal como uno o más microprocesadores, procesadores de señales digitales (DSPs), circuitos integrados de aplicación específica (ASICs), arreglos de puertas programables en campo (FPGAs), lógica discreta, individual o parte de un circuito integrado (IC), software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento 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. En otras palabras, cuando se implementa parcialmente en software, el software se ejecuta en componentes de hardware subyacentes que hacen que los componentes de hardware implementen ciertas funciones. Cada uno del codificador de vídeo 20 y decodificador de vídeo 30 puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CÓDEC) en un dispositivo respectivo.
Por ejemplo, el codificador de vídeo 20 y decodificador de vídeo 30 pueden incluirse en un dispositivo inalámbrico tal como dispositivo de origen 12 y dispositivo de destino 14, respectivamente. Como otro ejemplo, un dispositivo puede incluir un microprocesador o un circuito integrado. En algunos ejemplos, un dispositivo, tal como el microprocesador o el circuito integrado, puede incluir decodificador de vídeo 30, y otro dispositivo puede incluir codificador de vídeo 20.
El JCT-VC está trabajando en el desarrollo del estándar de HEVC. Los esfuerzos de estandarización de HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo denominado como el Modelo de Prueba de HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo en relación con los dispositivos existentes de acuerdo con, por ejemplo, ITU-T H.264/AVC.
En general, el modelo de trabajo del HM describe que un marco de vídeo o imagen se puede dividir en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU) que incluyen tanto muestras de luma como croma. Un bloque de árbol puede servir a algunos propósitos similares como un macrobloque del estándar H.264, aunque un bloque de árbol tiene muchas diferencias en relación con un macrobloque. Una sección incluye un número de bloques de árbol consecutivos en orden de codificación. Un marco de vídeo o imagen se puede dividir en una o más secciones. Cada bloque de árbol se puede dividir en unidades de codificación (CUs) de acuerdo con un árbol cuádruple. Por ejemplo, un bloque de árbol, como un nodo raíz del árbol cuádruple, puede dividirse en cuatro nodos hijo, y cada nodo hijo puede a su vez ser un nodo progenitor y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no dividido, como nodo hoja del árbol cuádruple, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos de sintaxis asociados con un flujo de bits codificado pueden definir un número máximo de veces que se puede dividir un bloque de árbol, 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 (PUs) y unidades de transformada (TU) asociadas con el nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser cuadrada en conformación. El tamaño de la CU puede oscilar desde 8x8 píxeles hasta el tamaño del bloque de árbol con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PUs y una o más TUs. Los datos de sintaxis asociados con una CU pueden describir, por ejemplo, la partición de la CU en una o más PUs. Los modos de partición pueden diferir entre si la CU está codificada en modo directo o de salto, codificada en modo intrapredicción, o codificada en modo interpredicción. Las PUs pueden dividirse para que no sean cuadradas en conformación. Los datos de sintaxis asociados con una CU también pueden describir, por ejemplo, la partición de la CU en una o más TUs de acuerdo con un árbol cuádruple. Una TU puede ser cuadrada o no cuadrada en conformación.
El estándar de HEVC permite transformaciones de acuerdo con TUs, que pueden ser diferentes para diferentes CUs. Las TUs típicamente están dimensionadas con base en el tamaño de PUs dentro de una CU dada definida para una LCU dividida, aunque puede que este no sea siempre el caso. Las TUs típicamente son del mismo tamaño o más pequeñas que las PUs. En algunos ejemplos, las muestras residuales que corresponde a una CU se pueden subdividir en unidades más pequeñas usando una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos hoja del RQT pueden denominarse como unidades de transformada (TUs). Los valores de diferencia de píxeles asociados con las TUs pueden transformarse para producir coeficientes de transformada, que pueden cuantificarse.
En general, una PU incluye datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU está codificada en intramodo (es decir, codificada en intrapredicción), la PU puede incluir datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU está codificada en intermodo (es decir, codificada in interpredicción), la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la cual apunta el vector de movimiento, y/o una lista de imágenes de referencia (por ejemplo, RefPiclList0 o RefPicList1) para el vector de movimiento.
En general, se usa una TU para los procesos de transformada y cuantificación. Una CU dada que tiene una o más PUs también puede incluir una o más unidades de transformada (TUs). Después de la predicción, el codificador de vídeo 20 puede calcular valores residuales que corresponde a la PU. Los valores residuales comprenden valores de diferencia de píxeles que pueden transformarse en coeficientes de transformada, cuantificarse, y escanearse usando las TUs para producir coeficientes de transformada serializados para codificación por entropía. Esta divulgación típicamente usa 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 de árbol, es decir, LCU, o una CU, que incluye un nodo de codificación y PUs y TUs.
Una secuencia de vídeo típicamente incluye una serie de marcos de vídeo o imágenes. Un grupo de imágenes (GOP) generalmente comprende una serie de una o más imágenes de vídeo. Un GOP puede incluir datos de sintaxis en un encabezado del GOP, un encabezado de una o más de las imágenes, o en cualquier otro lugar, que describa un número de imágenes incluidas en el GOP. Cada sección de una imagen puede incluir datos de sintaxis de sección que describen un modo de codificación para la sección respectiva. El codificador de vídeo 20 típicamente opera en bloques de vídeo dentro de secciones de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación 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 un estándar de codificación específico.
Como ejemplo, el HM soporta la predicción en diversos tamaños de PU. Suponiendo que el tamaño de una CU particular es 2Nx2N, el HM soporta la intrapredicción en tamaños de PU de 2Nx2N o NxN, y la interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, o NxN. El HM también soporta partición asimétrica para interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N, y nRx2N. En la partición asimétrica, una dirección de una CU no se divide, mientras que la otra dirección se divide en 25% y 75%. La porción de la CU que corresponde a la partición de 25% se indica mediante una "n" seguida de una indicación de "Arriba", "Abajo", "Izquierda", o "Derecha". De este modo, por ejemplo, "2NxnU" se refiere a una CU 2Nx2N que está dividida horizontalmente con una PU 2Nx0.5N en la parte superior y una PU 2Nx1.5N en la parte inferior.
En esta divulgación, "NxN" y "N por N" pueden usarse de manera intercambiable para referirse a las dimensiones en píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Igualmente, un bloque NxN generalmente tiene 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 se pueden disponer en filas y columnas. Además, los bloques no necesitan tener necesariamente el mismo número de píxeles en la dirección horizontal que en dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
Después de la codificación intrapredictiva o interpredictiva usando las PUs de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TUs de la CU. Las PUs pueden comprender datos de píxeles en el dominio espacial (también denominado como el dominio de píxeles) y las TUs pueden comprender coeficientes en el dominio de transformada después de la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de entero, una transformada de ondícula, o una transformada conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción que corresponde a las PUs. El codificador de vídeo 20 puede formar las TUs que incluyen los datos residuales para la CU, y luego transformar las TUs para producir coeficientes de transformada para la CU.
Después de cualquier transformada para producir coeficientes de transformada, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformada. La cuantificación generalmente se refiere a un proceso en el cual los coeficientes de transformada se cuantifican para posiblemente reducir la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. Por ejemplo, un valor de n bits puede redondearse hacia abajo a un valor de m bits durante la cuantificación, donde n es mayor que m.
En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de escaneo predefinido para escanear los coeficientes de transformada cuantificados para producir un vector serializado que puede codificarse por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un escaneo adaptativo o puede seleccionar un escaneo a partir de una pluralidad de escaneos posibles. Después de escanear los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación por Entropía de Partición de Intervalo de Probabilidad (PIPE) u otra metodología de codificación por entropía. El codificador de vídeo 20 también puede codificar por entropía elementos de sintaxis asociados con los datos de vídeo codificados para uso por el decodificador de vídeo 30 al decodificar los datos de vídeo.
Para realizar CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo de contexto a un símbolo que va a ser transmitido. El contexto puede relacionarse, por ejemplo, con si los valores vecinos del símbolo son distintos de cero o no. Para realizar CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para que se transmita un símbolo. Las palabras de código en VLC pueden construirse de tal manera que códigos relativamente más cortos correspondan a símbolos más probables, mientras que códigos más largos correspondan a símbolos menos probables. De esta forma, el uso de VLC puede lograr un ahorro de bits sobre, por ejemplo, usar contraseñas de igual longitud para cada símbolo que va a ser transmitido. La determinación de probabilidad puede basarse en un contexto asignado al símbolo.
El codificador de vídeo 20 genera datos de vídeo que definen la manera en que las imágenes deben ser reconstruidas por el decodificador de vídeo 30, codifica los datos de vídeo (por ejemplo, genera para salida), y emite (por ejemplo, señala) los datos de vídeo al decodificador de vídeo 30 en un flujo de bits codificado. El decodificador de vídeo 30 recibe los datos de vídeo codificados desde el flujo de bits codificados, decodifica los datos de vídeo, y procesa los datos de vídeo para reconstruir las imágenes. En general, el decodificador de vídeo 30 implementa el recíproco de las técnicas que el codificador de vídeo 20 implementa para codificar y generar los datos de vídeo.
Por ejemplo, el decodificador de vídeo 30 decodifica los datos de vídeo usando una técnica recíproca a la manera en que el codificador de vídeo 20 codificó los datos de vídeo. También, el decodificador de vídeo 30 decodifica en intrapredicción o decodifica en interpredicción las imágenes para reconstruir las imágenes. Por ejemplo, el decodificador de vídeo 30 procesa los datos de vídeo para determinar una imagen previamente decodificada que se usa para la decodificación de interpredicción, y para determinar el residuo entre la imagen previamente decodificada y la imagen actual para la decodificación de interpredicción. El decodificador de vídeo 30 agrega el residuo a la imagen previamente decodificada para reconstruir la imagen actual. De manera similar, el decodificador de vídeo 30 procesa los datos de vídeo para determinar un bloque previamente decodificado dentro de la imagen actual, y para determinar el residuo entre el bloque previamente decodificado dentro de la imagen actual y el bloque actual dentro de la imagen actual para la decodificación de intrapredicción. El decodificador de vídeo 30 agrega el residuo al bloque previamente decodificado para reconstruir el bloque actual de la imagen actual.
De esta forma, el codificador de vídeo 20 emite datos de vídeo que el decodificador de vídeo 30 utiliza para reconstruir las imágenes. En algunos ejemplos, el codificador de vídeo 20 emite los datos de vídeo en unidades de acceso. Una unidad de acceso es una unidad conceptual que incluye los datos de vídeo de una o más imágenes dentro de la misma instancia de tiempo. Por ejemplo, en la codificación de vídeo escalable, el codificador de vídeo 20 genera datos de vídeo en múltiples capas para una imagen. En este ejemplo, la unidad de acceso para la imagen incluye datos de vídeo para todas las múltiples capas.
Como otro ejemplo, en la codificación de vídeo de múltiples vistas, el codificador de vídeo 20 genera datos de vídeo para múltiples vistas, donde cada vista incluye múltiples imágenes. En la codificación de vídeo de múltiples vistas, se muestra una imagen en cada vista en la misma instancia de tiempo. Por ejemplo, la primera imagen en la primera vista se muestra en la misma instancia de tiempo que la primera imagen en la segunda vista, la primera imagen en la tercera vista, y así sucesivamente. En este ejemplo, una unidad de acceso incluye los datos de vídeo para todas las imágenes que se muestran en la misma instancia de tiempo. En ejemplos en los cuales no se usan codificación de vídeo escalable o codificación de vídeo de múltiples vistas, una unidad de acceso incluye los datos de vídeo para una imagen.
Por consiguiente, en general, la decodificación y procesamiento de una unidad de acceso mediante el decodificador de vídeo 30 da como resultado una o más imágenes. Si la decodificación y procesamiento de una unidad de acceso mediante el decodificador de vídeo 30 da como resultado una imagen, entonces los datos de vídeo de la unidad de acceso pueden incluir información para todas las capas de la imagen si se utiliza codificación de vídeo escalable o incluir información para solo una capa si no se utiliza codificación de vídeo escalable. Si la decodificación y procesamiento de una unidad de acceso mediante el decodificador de vídeo 30 da como resultado múltiples imágenes, los datos de vídeo de la unidad de acceso pueden incluir información para todas las imágenes en la misma instancia de tiempo para la codificación de vídeo de múltiples vistas.
Una unidad de acceso incluye una o más unidades de decodificación. Por ejemplo, como se describió anteriormente, la unidad de acceso puede incluir datos de vídeo para una imagen completa. Si no se permite la operación en un nivel de subimagen, entonces la unidad de acceso incluye solo una unidad de decodificación. Si se permite la operación en un nivel de subimagen, entonces la unidad de acceso incluye una o más unidades de decodificación.
Por ejemplo, el decodificador de vídeo 30 incluye un búfer de imagen codificada (CPB) y un búfer de imagen decodificada (DPB). El CPB almacena datos de vídeo recibidos desde el flujo de bits codificados y el DPB almacena imágenes reconstruidas. Como se describe con más detalle, el codificador de vídeo 20 genera y emite información que describe el comportamiento del CPB, tal como información que indica cuándo se deben retirar las unidades de decodificación o unidades de acceso del CPB. En algunos ejemplos, el codificador de vídeo 20 codifica y emite un elemento de sintaxis (por ejemplo, un indicador denominado como el SubPicCpbFlag) que indica si se permite la operación a un nivel de subimagen para unidades de acceso (por ejemplo, para cada una de las unidades de decodificación dentro de la unidad de acceso).
Si el decodificador de vídeo 30 determina que SubPicCpbFlag es 0, entonces el decodificador de vídeo 30 puede determinar que la operación de la unidad de acceso no está permitida a un nivel de subimagen, y también puede determinar que la unidad de acceso incluye una unidad de decodificación. En otras palabras, cuando SubPicCpbFlag es 0, la unidad de decodificación y la unidad de acceso son la misma. Si el decodificador de vídeo 30 determina que SubPicCpbFlag es 1, entonces el decodificador de vídeo 30 puede determinar que la operación de la unidad de acceso está permitida a un nivel de subimagen, y también puede determinar que la unidad de acceso incluye una o más unidades de decodificación.
Una unidad de decodificación incluye una o más unidades de capa de abstracción de red (NAL). Una unidad de NAL es una estructura de sintaxis que contiene una indicación del tipo de datos de vídeo a seguir y los bytes que contienen esos datos de vídeo. Ejemplos de una unidad de NAL incluyen una unidad de NAL de capa de codificación de vídeo (VCL) y una unidad de NAL de no VCL. Como ejemplo, las unidades de NAL de VCL pueden incluir datos de vídeo para secciones dentro de una imagen (por ejemplo, información tal como índices de lista de imágenes de referencia, vectores de movimiento, modos de intrapredicción, etc. necesarios para predecir las secciones) o unidades de NAL de un tipo de unidad de NAL particular. Como ejemplo, las unidades de NAL de no VCL pueden incluir datos de vídeo tales como información de un conjunto de parámetros (por ejemplo, conjunto de parámetros de imagen, conjunto de parámetros de secuencia, etc.) o información suplementaria para ayudar con la codificación de vídeo o decodificación de vídeo.
En esta divulgación, una unidad de decodificación que incluye una o más unidades de NAL puede considerarse como una o más unidades de NAL asociadas con o asignadas a una unidad de decodificación. En otras palabras, una o más unidades de NAL que están asociadas con o asignadas a una unidad de decodificación pueden considerarse como iguales que una unidad de decodificación que incluye estas una o más unidades de NAL.
Por consiguiente, las técnicas descritas en esta divulgación pueden utilizar los siguientes términos con las siguientes definiciones.
unidad de decodificación: Una unidad de acceso cuando SubPicCpbFlag es igual a 0 o un subconjunto de una unidad de acceso cuando SubPicCpbFlag es igual a 1, que consiste en una o más unidades de NAL de VCL en una unidad de acceso y las unidades de NAL de VCLA asociadas.
unidad de NAL de no VCL asociada: Una unidad de NAL de no VCL asociada de una unidad de NAL de VCL es una de las unidades de NAL de no VCL para las cuales la Unidad de NAL de VCL es su unidad de NAL de VCL asociada. En otras palabras, una unidad de NAL de no VCL está asociada con una unidad de NAL de VCL, y esa unidad de NAL de VCL puede considerarse como que está asociada con la unidad de NAL de no VCL (por ejemplo, la asociación entre unidad de NAL de VLC y una unidad de NAL de no VCL va en ambos sentidos).
unidad de NAL de VLC asociada: La unidad de NAL de VCL precedente más reciente en orden de decodificación para unidades de NAL de no VCL con nal_unit_type igual a Un Sp EC0, EOS_NUT, EOB_NUT, FD_NUT, en el rango de RSV_NVCL44..RSV_NVCL47, o en el rango de UNSPEC48.. UNSPEC63, o la primera unidad de NAL de VCL subsecuente en orden de decodificación para unidades de NAL de no VCL con nal_unit_type igual a otros valores.
Como se describió anteriormente, en algunos ejemplos, el codificador de vídeo 20 codifica y emite unidades de NAL que incluyen información suplementaria para ayudar con la codificación de vídeo o decodificación de vídeo. Esta información suplementaria no es necesaria para que el codificador de vídeo 20 y decodificador de vídeo 30 se ajusten a los requisitos de un estándar de codificación de vídeo tal como el estándar de codificación de vídeo de HEVC. Por consiguiente, la inclusión de la información suplementaria es opcional, pero puede ser preferible ya que tal información ayuda a aumentar la eficiencia de la codificación de vídeo y decodificación de vídeo.
Un ejemplo de unidades de NAL que incluyen tal información suplementaria son las unidades de NAL de información de mejora suplementaria (SEI). El uso de unidades de NAL de SEI permite al codificador de vídeo 20 incluir tales metadatos en el flujo de bits codificados que no son necesarios para la decodificación correcta de las imágenes de salida, pero que pueden usarse para diversos otros propósitos, tales como temporización de salida de imágenes, visualización, así como detección y ocultación de pérdidas (por ejemplo, para ayudar con la codificación y decodificación). El codificador de vídeo 20 puede configurarse para incluir cualquier número de unidades de NAL de SEI en una unidad de acceso, y cada unidad de NAL de SEI puede incluir uno o más mensajes de SEI.
El estándar de HEVC incluye la sintaxis y semántica de varios mensajes de SEI, pero el manejo de los mensajes de SEI no se especifica debido a que estos mensajes de SEI generalmente no afectan el proceso de decodificación normativa. Una de las razones para incluir mensajes de SEI en el estándar de HEVC es asegurar que diversos tipos de decodificadores de vídeo (un ejemplo de los cuales es el decodificador de vídeo 30) interpreten los mensajes de SEI de manera idéntica en diferentes sistemas que se ajusten al estándar de HEVC. Por consiguiente, las especificaciones o sistemas que se ajustan al estándar de HEVC pueden requerir codificadores de vídeo (tal como codificador de vídeo 20) para generar ciertos mensajes de SEI o pueden definir un manejo específico de tipos particulares de mensajes de SEI recibidos por decodificadores de vídeo (tal como decodificador de vídeo 30).
La siguiente Tabla 1 enumera el mensaje de SEI especificado en HEVC y describe brevemente su propósito. Debe entenderse que los mensajes de SEI se describen con respecto al estándar de HEVC solo con propósitos de ilustración. Otros estándares de codificación de vídeo, incluyendo estándares de codificación de vídeo registrados, pueden incluir mensajes de SEI similares o diferentes a los descritos en la Tabla 1 o descritos de otro modo a continuación. Además, incluso las técnicas de codificación de vídeo no basadas en estándares pueden depender de mensajes de SEI similares o diferentes a los descritos en la Tabla 1 o descritos de otro modo a continuación. Las técnicas descritas en esta divulgación pueden ser aplicables a todos de tales casos.
En general, los mensajes de SEI pueden considerarse como características definitorias de los datos de vídeo. Por ejemplo, el período de almacenamiento en búfer y los mensajes de SEI de temporización de imagen definen características de datos de vídeo tales como retrasos iniciales y tiempo de salida de imagen o tiempo de retiro de imagen/subimagen. Como ejemplos adicionales, el propósito de los mensajes de SEI en la Tabla 1 proporciona ejemplos de características de los datos de vídeo que están definidos por los mensajes de SEI correspondientes.
Tabla 1. Visión general de mensajes de SEI
En algunos ejemplos, el codificador de vídeo 20 puede configurarse para limitar dónde se ubican los mensajes de SEI dentro de la unidad de acceso. Por ejemplo, entre los mensajes de SEI, el mensaje de SEI de temporización de subimagen puede seguir, en orden de decodificación, a la primera unidad de NAL de VCL en la unidad de acceso que contiene el mensaje de SEI, pero puede no seguir, en orden de decodificación, a la última unidad de NAL de VCL en la unidad de acceso. Todos los otros mensajes de SEI pueden preceder a la primera unidad de NAL de VCL en la unidad de acceso cuando nuh_reserved_zero_6bits es igual a 0 para la unidad de NAL de SEI que contiene el mensaje de SEI.
El elemento de sintaxis nuh_reserved_zero_6bits identifica una capa en codificación de vídeo escalable o una vista en codificación de vídeo de múltiples vistas. Por ejemplo, el elemento de sintaxis nuh_reserved_zero_6bits es 0 para la capa base en el codificador de vídeo escalable o 0 para la vista base en codificación de vídeo de múltiples vistas. El elemento de sintaxis nuh_reserved_zero_6bits para las otras capas o vistas es un valor entero positivo usado para identificar la capa o vista. En los casos donde no se usa codificación de vídeo escalable o codificación de vídeo de múltiples vistas, se supone que nuh_reserved_zero_6bits es 0.
Como se indica en la Tabla 1, diversos mensajes de SEI, tales como el mensaje de SEI de período de almacenamiento en búfer, mensaje de SEI de temporización de imagen, y mensaje de SEI de temporización de subimagen definen retrasos y tiempos de retiro en un decodificador de referencia hipotético (HRD). El HRD es un modelo usado para definir las características del búfer de imagen codificada (CPB) y del búfer de imagen decodificada (DPB). Como se describió anteriormente, el CPB almacena datos de vídeo desde el flujo de bits tales como las imágenes codificadas, antes de la decodificación, y el DPB almacena datos de vídeo decodificados que incluyen imágenes decodificadas.
En general, cada estándar de codificación de vídeo incluye una especificación para el modelo de almacenamiento en búfer de vídeo. En AVC y HEVC, el modelo de almacenamiento en búfer se conoce como decodificador de referencia hipotético (HRD), que incluye un modelo de almacenamiento en búfer tanto del búfer de imagen codificada (CPB) como del búfer de imagen decodificada (DPB), y los comportamientos de CPB y DPB son matemáticamente especificados. El HRD puede imponer restricciones directamente en diferentes temporización, tamaños de búfer y tasas de bits, e imponer restricciones indirectamente en las características y estadísticas de flujo de bits. Un conjunto completo de parámetros de HRD incluye cinco parámetros básicos: retraso de retiro inicial de CPB, tamaño de CPB, tasa de bits, retraso de salida inicial de DPB, y tamaño de DPB.
En AVC y HEVC, la conformidad de flujo de bits y conformidad de decodificador se especifican como partes de la especificación de HRD. Debe entenderse que aunque el HRD está etiquetado como un tipo de decodificador, típicamente se necesita el HRD en el lado de codificador de vídeo 20 para garantizar la conformidad de flujo de bits. El HRD puede no ser necesario en el lado de decodificador de vídeo 30. Por ejemplo, el codificador de vídeo 20 puede señalar la información de temporización y otras características del CPB y DPB como mensajes de SEI, y el decodificador de vídeo 30 puede determinar la temporización y características del CPB y DPB con base en los mensajes de SEI señalizados. Por ejemplo, los mensajes de SEI pueden especificar dos tipos de flujo de bits o conformidad de HRD, a saber Tipo I y Tipo II. También, los mensajes de SEI pueden especificar dos tipos de conformidad de decodificador de vídeo 30: conformidad de decodificador de temporización de salida y conformidad de decodificador de orden de salida.
En las técnicas descritas en esta divulgación, el codificador de vídeo 20 puede especificar si el CPB del decodificador de vídeo 30 puede operar ya sea en el nivel de unidad de acceso o en el nivel de unidad de subacceso (también denominado como nivel de subimagen). Como se describió anteriormente, el codificador de vídeo 20 codifica y emite (por ejemplo, señala) un elemento de sintaxis (por ejemplo, SubPicCpbFlag). Si el valor de SubPicCpbFlag es 0, entonces no se permite la operación de CPB en un nivel de subimagen. Si el valor de SubPicCpbFlag es 1, entonces se permite la operación de CPB en un nivel de subimagen.
Los mensajes de SEI pueden proporcionar información sobre las unidades de decodificación dentro de una unidad de acceso. Por ejemplo, el mensaje de SEI de temporización de imagen (mensaje de SEI PT) incluye los elementos de sintaxis num_nalus_in_du_minus1[i]. El elemento de sintaxis num_nalus_in_du_minus1[i] más uno indica el número de unidades de NAL dentro de la iésima unidad de decodificación.
En algunos casos, el decodificador de vídeo 30 puede utilizar la información de los elementos de sintaxis num_nalus_in_du_minus1[i], emitidos por el codificador de vídeo 20, para determinar qué unidades de NAL están asociadas/asignadas a qué unidades de decodificación. Como ejemplo ilustrativo, suponer que los elementos de sintaxis num_nalus_in_du_minus1[i] indican que la primera unidad de decodificación, de una unidad de acceso, está asociada con tres unidades de NAL, la segunda unidad de decodificación, de la unidad de acceso, está asociada con dos unidades de NAL, y la tercera unidad de decodificación, de la unidad de acceso, está asociada con dos unidades de NAL.
En este ejemplo, el decodificador de vídeo 30 determina qué unidades de NAL están asociadas con qué unidades de decodificación con base en el orden en que el CPB recibe las unidades de NAL. Por ejemplo, el decodificador de vídeo 30 determina que las primeras tres unidades de NAL que recibe el CPB están asociadas con la primera unidad de decodificación, las dos unidades de NAL siguientes que recibe el CPB están asociadas con la segunda unidad de decodificación, y las dos unidades de NAL siguientes que recibe el CPB están asociadas con la tercera unidad de decodificación.
Sin embargo, el decodificador de vídeo 30 que determina qué unidades de NAL están asociadas con qué unidades de decodificación con base en elementos de sintaxis que indican el número de unidades de NAL que están asociadas con cada unidad de decodificación no es resiliente a errores. En un enlace de comunicación propenso a errores o tiene pérdidas, pueden perderse una o más de las unidades de NAL. Por ejemplo, si el enlace 16 es propenso a errores o tiene pérdidas, entonces se pueden perder una o más de las unidades de NAL. Como otro ejemplo, si el enlace desde la interfaz de salida 22 al dispositivo de almacenamiento 32 o el enlace desde la interfaz de salida 32 a la interfaz de entrada 28 es propenso a errores o tiene pérdidas, entonces una o más de las unidades de NAL pueden perderse.
Cuando se pierde una unidad de NAL, el decodificador de vídeo 30 puede no ser capaz de determinar correctamente qué unidades de NAL están asociadas con qué unidades de decodificación, a menos que se conozcan la posición exacta y número de pérdidas de unidades de NAL consecutivas (que el decodificador de vídeo 30 puede no ser capaz de determinar). Por ejemplo, suponer que en el ejemplo previo, se pierde la segunda unidad de NAL. En este caso, el decodificador de vídeo 30 determina que las primeras tres unidades de NAL recibidas son para la primera unidad de decodificación debido a que el elemento de sintaxis num_nalus_in_du_minus1[i] indicó que la primera unidad de decodificación incluye tres unidades de NAL. Sin embargo, el codificador de vídeo 20 asoció la tercera unidad de NAL recibida, en este caso, con la segunda unidad de decodificación (de nuevo, la segunda unidad de NAL se pierde). Por lo tanto, el decodificador de vídeo 30 asoció incorrectamente la tercera unidad de NAL recibida con la primera unidad de decodificación cuando el decodificador de vídeo 30 debería haber asociado la tercera unidad de NAL recibida con la segunda unidad de decodificación.
En algunos ejemplos, además de o en lugar de, los elementos de sintaxis num_nalus_in_du_minus1[i], el decodificador de vídeo 30 puede determinar qué unidades de NAL están asociadas con qué unidades de decodificación con base en las posiciones de los mensajes de SEI. Como ejemplo, el codificador de vídeo 20 puede utilizar las posiciones de los mensajes de SEI de temporización de subimagen (SPT), dentro de la unidad de acceso, para indicar qué unidades de NAL están asociadas con qué unidades de decodificación, y el decodificador de vídeo 30 puede utilizar las posiciones de los mensajes de SEI de SPT de temporización de subimagen, dentro de la unidad de acceso, para determinar qué unidades de NAL están asociadas con qué unidades de decodificación.
Por ejemplo, el mensaje de SEI de SPT es parte de una unidad de NAL de SEI que está asociada con una unidad de decodificación. El mensaje de SEI de SPT puede proporcionar información que indique cuándo se debe retirar una unidad de decodificación del CPB. En algunos ejemplos, todas las unidades de NAL que siguen a la unidad de NAL de SEI que no incluyen el mensaje de SEI de SPT hasta el siguiente mensaje de SEI de SPT se consideran asociadas con la unidad de decodificación. En otras palabras, las unidades de NAL en sándwich entre un primer mensaje de SEI de SPT y un segundo mensaje de SEI de SPT, y la unidad de NAL de SEI que incluye el primer mensaje de SEI de SPT se consideran todas como asociadas con una unidad de decodificación.
De esta forma, después de que el CPB de decodificador de vídeo 30 recibe una primera unidad de NAL de SEI con un primer mensaje de SEI de SPT, el decodificador de vídeo 30 puede determinar que la primera unidad de NAL de SEI y todas las unidades de NAL hasta la siguiente unidad de NAL de SEI con el siguiente mensaje de SEI de SPT (es decir, la segunda unidad de NAL de SEI con el segundo mensaje de SEI de SPT) están asociadas con la primera unidad de decodificación. El decodificador de vídeo 30 también puede determinar que la segunda unidad de NAL de SEI y todas las unidades de NAL hasta la siguiente unidad de NAL de SEI con el siguiente mensaje de SEI de SPT (es decir, la tercera unidad de NAL de SEI con el tercer mensaje de SEI de SPT) están asociadas con la segunda unidad de decodificación, y así sucesivamente.
En algunos casos, depender de las posiciones de los mensajes de SEI de SPT para determinar qué unidades de NAL están asociadas con qué unidades de decodificación tampoco puede ser resiliente a errores. Como ejemplo, debido a que las posiciones de los mensajes de SEI de SPT definen qué unidades de NAL están asociadas con una unidad de decodificación, un mensaje de SEI de SPT no puede repetirse dentro de una unidad de decodificación (es decir, después de la unidad de NAL inmediatamente después del mensaje de SEI de SPT y antes del última unidad de NAL en la unidad de decodificación, en orden de decodificación). Por ejemplo, suponer que una unidad de decodificación incluye cuatro unidades de NAL. En este ejemplo, un primer mensaje de SEI de SPT precedería a las cuatro unidades de NAL y un segundo mensaje de SEI de SPT seguiría a las cuatro unidades de NAL. Si se insertara un mensaje de SEI de SPT en medio de los dos mensajes de SEI de SPT, entonces el decodificador de vídeo 30 determinaría incorrectamente que las dos primeras unidades de NAL son para una primera unidad de decodificación, y las dos segundas unidades de NAL son para una segunda unidad decodificación diferente.
Sin embargo, puede ser beneficioso incluir una o más copias de un mensaje de SEI de SPT dentro de una unidad de decodificación de tal manera que los datos de vídeo pertinentes puedan recuperarse desde una de las copias si se pierde otra. Como se describió anteriormente, el mensaje de SEI de SPT puede incluir información que indique cuándo se debe retirar una unidad de decodificación del CBP. Por ejemplo, en un entorno propenso a errores o tiene pérdidas, se puede perder un mensaje de SEI de SPT, y se puede perder la información dentro del mensaje de SEI de SPT que indica cuándo se debe retirar la unidad de decodificación.
Por ejemplo, como se describió anteriormente, una unidad de acceso incluye datos de vídeo para una imagen, y una unidad de decodificación es un subconjunto de la unidad de acceso (asumiendo que SubPicCpbFlag es 1). Por consiguiente, una unidad de decodificación puede, en algunos ejemplos, incluir datos de vídeo para una o más secciones de una imagen (es decir, una subporción de una imagen). El dispositivo de origen 12 puede emitir la una o más secciones de una unidad de decodificación en paquetes (por ejemplo, paquetes de protocolo de transporte en tiempo real (RTP)). Si se pierde el paquete que incluye el mensaje de SEI de SPT, el decodificador de vídeo 30 puede no ser capaz de determinar con precisión la información de temporización de la subimagen para los otros paquetes de la unidad de decodificación (por ejemplo, el tiempo de retiro del CPB).
Si cada paquete incluyera el mensaje de SEI de SPT, entonces la pérdida de un paquete no afectaría el proceso de decodificación debido a que el decodificador de vídeo 30 puede determinar la información de temporización de subimagen del mensaje de SEI de SPT a partir de una copia del mensaje de SEI de SPT en otro de los paquetes. Sin embargo, en algunas otras técnicas, el mensaje de SEI de SPT no se pudo repetir dado que el decodificador de vídeo 30 usó la posición del mensaje de SEI para determinar qué unidades de NAL estaban asociadas con qué unidades de decodificación. En otras palabras, la prohibición de repetir mensajes de SEI de SPT en las unidades de decodificación da como resultado un esquema menos resiliente a errores para determinar qué unidades de NAL están asociadas con qué unidades de decodificación. En algunos ejemplos, las técnicas de divulgación pueden retirar las prohibiciones de repetir mensajes de SEI de SPT en las unidades de decodificación.
Como se describe con más detalle a continuación, esta divulgación describe técnicas de ejemplo que permiten al decodificador de vídeo 30 determinar qué unidades de NAL están asociadas con qué unidades de decodificación de una manera resiliente a errores. Por ejemplo, el codificador de vídeo 20 puede generar para salida y emitir un identificador para las unidades de decodificación. El decodificador de vídeo 30 puede utilizar este identificador para determinar qué unidades de NAL están asociadas con qué unidades de decodificación, en lugar de depender en la información que indica el número de unidades de NAL asociadas con una unidad de decodificación y el orden en el cual se reciben las unidades de NAL, o en lugar de depender de la posición del mensaje de SEI de SPT. La emisión y recepción del identificador de unidad de decodificación también puede permitir múltiples copias del mensaje de SEI de SPT, lo cual aumenta además la resiliencia a errores de la capacidad del decodificador de vídeo 30 para determinar los tiempos de retiro de las unidades de decodificación del CPB.
Lo anterior describió el ejemplo donde no se permite que el mensaje de SEI de SPT se repita dentro de la unidad de decodificación. En algunos casos, se puede prohibir que también se repitan otros tipos de mensajes de SEI dentro de la unidad de decodificación. Por ejemplo, no se puede permitir que cualquier mensaje de SEI que no sea un mensaje de SEI de SPT y para el cual nuh_reserved_zero_6bits para la unidad de NAL de SEI que incluye el mensaje de SEI es igual a 0 se repita dentro de la unidad de acceso que incluye el mensaje de SEI después de la primera unidad de NAL de VCL y antes de la última unidad de NAL en orden de decodificación.
Por ejemplo, en algunas otras técnicas, los mensajes de SEI se usan para determinar que el decodificador de vídeo 30 está procesando una nueva unidad de acceso. En otras palabras, la ubicación del mensaje de SEI en el flujo de bits codificado es indicativa del comienzo de una unidad de acceso. Si un mensaje de SEI se repite dentro de una unidad de acceso, entonces el decodificador de vídeo 30 puede determinar incorrectamente que está siendo procesada una nueva unidad de acceso. Dado que los mensajes de SEI indicaron una nueva unidad de acceso, las copias de mensajes de SEI pueden estar prohibidas en estas otras técnicas.
Similar a lo anterior, si una unidad de acceso incluye múltiples secciones que se transmiten en un entorno propenso a errores, puede ser beneficioso incluir copias de los mensajes de SEI en cada paquete de tal manera que si se pierde un paquete, los mensajes de SEI se puedan recuperar desde uno o más de los otros paquetes de la unidad de acceso. Como se describe con más detalle, las técnicas descritas en esta divulgación pueden permitir que se repitan múltiples copias de los diversos mensajes de SEI dentro de la unidad de acceso.
Por ejemplo, el decodificador de vídeo 30 no necesita depender de un mensaje de SEI para determinar que está siendo procesada una nueva unidad de acceso. Más bien, el decodificador de vídeo 30 puede depender de alguna otra información de encabezado para determinar cuándo está siendo procesada una nueva unidad de acceso. Dado que la existencia de un mensaje de SEI está desacoplada de la indicación de que está siendo procesada una nueva unidad de acceso, el codificador de vídeo 20 puede incluir múltiples copias de mensajes de SEI en la unidad de acceso, y el decodificador de vídeo 30 puede procesar múltiples copias de mensajes de SEI dentro de la misma unidad de acceso sin determinar que está siendo procesada una nueva unidad de acceso.
En las técnicas descritas en esta divulgación, el codificador de vídeo 20 puede señalar un identificador en cada unidad de decodificación (denominado como un identificador de unidad de decodificación, identificador de DU, o ID de DU). El identificador de DU puede ser un identificador que identifica de manera única una unidad de decodificación. Por ejemplo, el identificador de DU para la primera unidad de decodificación, en orden de decodificación, en la unidad de acceso puede ser 0, el identificador de DU para la segunda unidad de decodificación, en orden de decodificación, en la unidad de acceso puede ser 1, y así sucesivamente (es decir, el identificador de DU para la primera unidad de decodificación es 0, y el valor del identificador de DU aumenta en uno para cada unidad de decodificación subsecuente). Son posibles otras formas de identificar de manera única las unidades de decodificación con identificadores de unidad de decodificación, y las técnicas no deberían considerarse limitadas a identificadores de DU ascendentes para cada unidad de decodificación en orden de decodificación.
Puede haber diversas formas en las cuales el codificador de vídeo 20 señaliza el identificador de DU. Por ejemplo, el codificador de vídeo 20 puede señalar el identificador de DU en el encabezado de sección de una sección de una unidad de decodificación y/o en un mensaje de SEI (por ejemplo el mensaje de SEI de SPT), o de cualquier otra manera. En este caso, la asociación de unidades de NAL a las unidades de decodificación se basa en los identificadores de DU señalizados. También puede ser posible incluir el identificador de DU en otras ubicaciones, tales como el encabezado de unidad de NAL.
Si la unidad de NAL es para una o más secciones, el decodificador de vídeo 30 puede determinar a qué unidad de decodificación está asociada la unidad de NAL a partir del identificador de DU en el encabezado de sección. Por consiguiente, incluso si hay pérdidas en las unidades de NAL, el decodificador de vídeo 30 puede ser capaz de determinar qué unidad de NAL está asociada con qué unidad de decodificación con base en el identificador de DU.
En ejemplos donde el mensaje de SEI incluye el identificador de DU, puede ser posible que el mensaje de SEI (por ejemplo, el mensaje de SEI de SPT) se pierda, en cuyo caso, se puede perder el identificador de DU. En algunos ejemplos, el codificador de vídeo 20 puede incluir copias del mensaje de SEI de SPT dentro de la unidad de decodificación para minimizar las posibilidades de que se pierda el identificador de DU. Por ejemplo, como se describió anteriormente, en algunos casos la posición del mensaje de SEI de SPT dentro de una unidad de decodificación puede indicar qué unidades de NAL están asociadas con las unidades de decodificación, lo cual significaba que no podría haber múltiples copias de los mensajes de SEI de SPT. En las técnicas descritas en esta divulgación, el decodificador de vídeo 30 puede utilizar el identificador de DU para determinar qué unidades de NAL están asociadas con qué unidades de decodificación. Por consiguiente, el decodificador de vídeo 30 no necesita depender de la posición de los mensajes de SEI de SPT para determinar qué unidades de NAL están asociadas con qué unidades de decodificación. Esto permite que el codificador de vídeo 20 incluya múltiples copias de los mensajes de SEI de SPT dentro de una unidad de decodificación dentro del flujo de bits codificado, lo cual a su vez reduce la probabilidad de que el identificador de DU se pierda si cada copia del mensaje de SEI de SPT incluye el identificador de DU.
Como se describió anteriormente, en algunos ejemplos, no se permite que los mensajes de SEI sigan a la primera unidad de NAL de VCL en el orden de decodificación, en la unidad de acceso que contiene el mensaje de SEI. En algunos ejemplos, el codificador de vídeo 20 puede permitir que todos los mensajes de SEI sigan a la primera unidad de NAL de VCL en orden de decodificación, en la unidad de acceso que contiene el mensaje de SEI. Sin embargo, el mensaje de SEI no puede posicionarse después de la última unidad de NAL de VCL, en orden de decodificación, en la unidad de acceso.
Como ejemplo, el codificador de vídeo 20 puede incluir un mensaje de SEI antes de la primera unidad de NAL de VCL en orden de decodificación. El codificador de vídeo 20 puede incluir una copia del mensaje de SEI después de la primera unidad de NAL de VCL en orden de decodificación en la unidad de acceso. En este ejemplo, el codificador de vídeo 20 puede no incluir una copia del mensaje de SEI después de la última unidad de NAL de VCL en orden de decodificación en la unidad de acceso.
En los ejemplos donde el codificador de vídeo 20 permite que los diversos tipos de mensajes de SEI se repitan en la unidad de decodificación o unidad de acceso, el codificador de vídeo 20 puede especificar información adicional con respecto a los mensajes de SEI. Como ejemplo, el codificador de vídeo 20 puede especificar un alcance de aplicación al cual se aplica la información portada en un mensaje de SEI. Como otro ejemplo, el codificador de vídeo 20 puede especificar dónde puede estar presente un mensaje de SEI en la unidad de acceso y/o unidad de decodificación. Como aún otro ejemplo, el codificador de vídeo 20 puede establecer una restricción en los contenidos de las múltiples instancias de tipos particulares de mensajes de SEI.
El decodificador de vídeo 30 utiliza tal información para los mensajes de SEI para decodificar datos en las unidades de NAL. En algunos ejemplos, el decodificador de vídeo 30 puede preconfigurarse con información de los mensajes de SEI tal como información que indica restricción sobre los contenidos de las múltiples instancias de tipos particulares de mensajes de SEI o preconfigurarse con información de dónde se pueden ubicar los mensajes de SEI dentro de la unidad de acceso y/o unidad de decodificación. En estos casos, puede no ser necesario que el codificador de vídeo 20 especifique dónde puede estar presente un mensaje de SEI o señale información que indique cualquier restricción sobre el contenido de las múltiples instancias de tipos particulares de mensajes de SEI.
Como se describió anteriormente, una unidad de acceso incluye datos de vídeo para al menos una imagen. En algunos ejemplos, la unidad de acceso puede incluir datos de vídeo para múltiples capas, y el codificador de vídeo 20 puede codificar un flujo de bits de vídeo con múltiples capas, tal como en la extensión multicapa del estándar de codificación de vídeo de alta eficiencia (HEVC).
Las múltiples capas incluyen una capa base y una o más capas no base. En algunos ejemplos, una capa base puede incluir datos de vídeo para construir una imagen, y una capa no base puede ser una capa de mejora espacial o de calidad que incluye datos de vídeo para mejorar la calidad de la imagen en la capa base. En algunos ejemplos, tal para la codificación de vídeo de múltiples vistas, la capa base puede incluir datos de vídeo para imágenes de una vista particular (por ejemplo, una vista base que no requiere ninguna otra vista de interpredicción), y una capa no base puede incluir textura de una vista diferente, profundidad de una vista diferente, y otros de tales ejemplos.
En las técnicas descritas en esta divulgación, el codificador de vídeo 20 puede transportar las diferentes capas en diferentes canales (por ejemplo, usando transmisión de multisesión (MST) definida de manera similar en IETF RFC 6190 (disponible públicamente en http://tools.ietf.org/rfc/rfc6190.txt). Las técnicas descritas en esta divulgación son extensibles a ejemplos en los cuales se utiliza la transmisión de multisesión para codificar múltiples capas. Por ejemplo, las técnicas descritas en esta divulgación para incluir el mensaje de SEI después de la primera unidad de NAL de VCL en una unidad de acceso también son aplicables a ejemplos de transmisión de multisesión. Como ejemplo, el codificador de vídeo 20 puede incluir unidades de NAL de SEI entre dos unidades de NAL de VCL consecutivas dentro de una unidad de acceso sin la necesidad de mover las unidades de NAL de SEI antes de la primera unidad de NAL de VCL de la unidad de acceso.
Debido a que la unidad de NAL de SEI incluye mensajes de SEI para las técnicas de transmisión de multisesión, el decodificador de vídeo 30 puede ser capaz de implementar el proceso de despaquetización de una manera más simplificada. Por ejemplo, el decodificador de vídeo 30 puede ser capaz de decodificar mensajes de SEI para las técnicas de transmisión de multisesión desde dentro de la unidad de acceso, en lugar de todo desde el principio de la unidad de acceso. Debido a que están disponibles múltiples copias del mensaje de SEI a lo largo de la unidad de acceso, el decodificador de vídeo 30 puede ser capaz de desempaquetar los paquetes recibidos de una manera más eficiente.
Las técnicas de esta divulgación pueden aplicarse en conjunto entre sí o por separado. Por ejemplo, si el codificador de vídeo 20 incluye un identificador de DU, entonces el codificador de vídeo 20 no necesita incluir necesariamente múltiples copias del mensaje de SEI de SPT en todos los ejemplos, pero puede incluir múltiples copias del mensaje de SEI de SPT en algunos ejemplos. Como otro ejemplo, el codificador de vídeo 20 puede incluir múltiples copias de diversos tipos de mensajes de SEI incluso si el codificador de vídeo 20 no incluye identificadores de DU. Como aún otro ejemplo, en ejemplos donde el codificador de vídeo 20 incluye los identificadores de DU, el codificador de vídeo 20 no necesita incluir necesariamente múltiples copias de los mensajes de SEI distintos del mensaje de SEI de SPT. En general, las técnicas descritas en esta divulgación pueden ser ventajosas al proporcionar esquemas resilientes a errores para entorno propenso a errores en el cuales la información puede perderse en la señalización.
Como se describió anteriormente, en un ejemplo, el codificador de vídeo 20 incluye el identificador de DU en el encabezado de sección. La Tabla 2 a continuación proporciona un pseudocódigo de ejemplo para la manera en que el codificador de vídeo 20 puede incluir el identificador de DU en el encabezado de sección, y la manera en que el decodificador de vídeo 30 puede analizar sintácticamente el encabezado de sección para determinar el identificador de DU.
Tabla 2. Señalización en encabezado de sección
___________________________________
En este ejemplo, decoding_unit_id se refiere al identificador de DU y especifica el identificador de la unidad de decodificación a la que pertenece la sección. El valor de decoding_unit_id puede estar en el rango de 0 a PicSizeInCtbsY - 1, inclusive. PicSizeInCtbsY puede indicar el número de unidades de árbol de codificación (CTUs) en una imagen, que es igual al número de bloques de árbol de codificación (CTB) en el componente luma de una imagen.
En el ejemplo donde el codificador de vídeo 20 incluye el identificador de unidad de decodificación en el encabezado de sección, una unidad de decodificación identificada por un valor particular del identificador de DU (por ejemplo, ID de DU o duID) puede incluir y solo puede incluir todas las unidades de NAL de secciones codificadas con decoding_unit_id igual al identificador de DU y sus unidades de NAL de no VCL asociadas en la unidad de acceso. Dentro de una unidad de acceso, para dos cualesquiera unidades de decodificación (por ejemplo, unidad de decodificación A y unidad de decodificación B) con decoding_unit_id igual a duIDa y duIDb, respectivamente, donde dulDa es menor que duIDb, la unidad de decodificación A puede preceder a la unidad de decodificación B en orden de decodificación. En otras palabras, la unidad de decodificación con el identificador de DU más pequeño precede a la unidad de decodificación con el identificador de DU más grande en orden de decodificación. Además, una unidad de NAL de una unidad de decodificación no puede residir, en orden de decodificación, entre dos unidades de NAL de otra unidad de decodificación. En otras palabras, en el ejemplo anterior, las unidades de NAL de una unidad de decodificación son contiguas.
Como se describió anteriormente, en algunos ejemplos, el codificador de vídeo 20 puede incluir el identificador de DU en un mensaje de SEI (por ejemplo, el mensaje de SEI de SPT), y el mensaje de SEI de SPT incluye información que indica cuándo se debe retirar la unidad de decodificación. A continuación se describen algunas técnicas de ejemplos para que el codificador de vídeo 20 incluya el identificador de DU en un mensaje de SEI. Para evitar confusión, a continuación el nombre del mensaje de SEI de temporización de subimagen (SPT) se cambia a mensaje de SEI de información de unidad de decodificación. En otras palabras, en algunos ejemplos, el codificador de vídeo 20 emite y el decodificador de vídeo 30 recibe el identificador de DU en un mensaje de SEI que también incluye información que indica el tiempo de retiro de la unidad de decodificación del CPB.
La Tabla 3 a continuación proporciona un pseudocódigo de ejemplo para la manera en que el codificador de vídeo 20 incluye el identificador de DU en un mensaje de SEI, y la manera en que el decodificador de vídeo 30 analiza sintácticamente el mensaje de SEI para determinar el identificador de DU. A continuación, el nombre del mensaje de SEI de temporización de subimagen (SPT) se cambia a mensaje de SEI de información de unidad de decodificación, y la sintaxis y semántica son como sigue. Otras partes son las mismas que en WD8 de HEVC, con el "mensaje de SEI de temporización de subimagen" reemplazado por "mensaje de SEI de información de unidad de decodificación". El mensaje de SEI de información de unidad de decodificación proporciona el tiempo de retiro de CPB (por ejemplo, información de retraso de retiro de CPB) para la unidad decodificada asociada con el mensaje de SEI.
Tabla 3. Señalización en mensaje de SEI
______________________________
En WD8 de HEVC, el mensaje de SEI de temporización de subimagen (SPT) puede ser similar a la Tabla 3. Sin embargo, el mensaje de SEI de SPT de WD8 de HEVC no incluía el elemento de sintaxis decoding_unit_id, y solo incluía el elemento de sintaxis du_cpb_removal_delay. En algunas de las técnicas de ejemplo descritas en esta divulgación, debido a que el mensaje de SEI también incluye el decoding_unit_id, el mensaje de SEI de SPT se renombra a mensaje de SEI de información de unidad de decodificación.
En algunos ejemplos, el codificador de vídeo 20 genera para salida y emite elementos de sintaxis y el decodificador de vídeo 30 recibe elementos de sintaxis que indican la presencia del mensaje de SEI de información de unidad de decodificación en el flujo de bits. Como ejemplo, el codificador de vídeo 20 emite el CpbDpbDelaysPresentFlag y el sub_pic_cpb_params_present_flag. Si CpbDpbDelaysPresentFlag es igual a 1 y sub_pic_cpb_params_present_flag es igual a 1, el decodificador de vídeo 30 puede determinar que uno o más de un mensaje de SEI de información de unidad de decodificación está presente en cada unidad de decodificación en la secuencia de vídeo codificada (es decir, uno o más mensajes de SEI de información de unidad de decodificación). Si CpbDpbDelaysPresentFlag es igual a 0 o sub_pic_cpb_params_present_flag es igual a 0, el decodificador de vídeo 30 puede determinar que no están presentes mensajes de SEI de información de unidad de decodificación en ninguna unidad de acceso de la secuencia de vídeo codificada.
De acuerdo con uno o más ejemplos descritos en esta divulgación, las unidades de NAL a las cuales se aplica el mensaje de SEI de información de unidad de decodificación, también denominadas como las unidades de NAL asociadas con un mensaje de SEI de información de unidad de decodificación, consisten, en orden de decodificación, en la unidad de NAL de SEI que contiene el mensaje de SEI de información de unidad de decodificación y todas las unidades de NAL subsecuentes en la unidad de acceso hasta pero sin incluir cualquier unidad de NAL de SEI subsecuente que contenga un mensaje de SEI de información de unidad de decodificación con un valor diferente de decoding_unit_id. En estos ejemplos, la definición de decoding_unit_id puede ser la misma que la definición de decoding_unit_id descrita anteriormente con respecto a la Tabla 2, pero se incluye en el mensaje de SEI (por ejemplo, el mensaje de SEI de información de unidad de decodificación). Por ejemplo, una unidad de decodificación identificada por un valor particular del identificador de DU (por ejemplo, ID de d U o duID) puede incluir y solo puede incluir todas las unidades de NAL asociadas con todos los mensajes de SEI de información de unidad de decodificación que tienen decoding_unit_id igual al identificador de DU en la unidad de acceso. Como anteriormente, una unidad de decodificación con un identificador de unidad de decodificación más pequeño es anterior en orden de decodificación que una unidad de decodificación con un identificador de unidad de decodificación más grande. Como anteriormente, una unidad de NAL de una unidad de decodificación no puede residir, en orden de decodificación, entre dos unidades de NAL de otra unidad de decodificación.
du_cpb_removal_delay puede especificar cuántos tictacs de reloj de subimagen debe esperar el decodificador de vídeo 30 después del retiro del CPB de la primera unidad de decodificación en la unidad de acceso asociada con el mensaje de SEI de período de almacenamiento en búfer más reciente en una unidad de acceso precedente antes de que el decodificador de vídeo 30 retire del CPB la unidad de decodificación asociada con el mensaje de SEI de información de unidad de decodificación. Este valor también se puede usar para calcular el tiempo de llegada más temprano posible de los datos de unidad de decodificación al CPB para el programador de flujo hipotético (HSS), como se especifica en el Anexo C de WD8 de HEVC.
El elemento de sintaxis puede representarse mediante un código de longitud fija cuya longitud en bits es dada por cpb_removal_delay_length_minus1 1. El du_cpb_removal_delay puede ser el resto de un contador de módulo 2<(cpb_removal_delay_length_minus1 1)>
En algunos ejemplos, el valor de cpb_removal_delay_length_minus1 que determina la longitud (en bits) del elemento de sintaxis du_cpb_removal_delay puede ser el valor de cpb_removal_delay_length_minus1 codificado en el conjunto de parámetros de secuencia que está activo para la imagen codificada asociada con el mensaje de SEI de información de unidad de decodificación. Sin embargo, du_cpb_removal_delay especifica un número de tictacs de reloj de subimagen relativos al tiempo de retiro de la primera unidad de decodificación en la unidad de acceso precedente que contiene un mensaje de SEI de período de almacenamiento en búfer, que puede ser una unidad de acceso de una secuencia de vídeo codificada diferente.
La Tabla 3 proporcionó un pseudocódigo de ejemplo para un ejemplo del mensaje de SEI de información de unidad de decodificación, en el cual el nombre del mensaje de SEI de SPT fue cambiado a mensaje de SEI de información de unidad de decodificación debido a que el mensaje de SEI de información de unidad de decodificación incluía información que previamente era una parte del mensaje de SEI de SPT y además incluía el identificador de DU para la unidad de decodificación asociada con el mensaje. En algunos ejemplos, puede haber potencialmente otras modificaciones en el mensaje de SEI de temporización de subimagen (SPT).
Por ejemplo, la Solicitud Provisional de los Estados Unidos No. 61/705,119 (en este documento después de solicitud '119), presentada el 24 de septiembre de 2012 y la Solicitud Provisional de los Estados Unidos No. 61/708,475 (en este documento después de solicitud '475), presentada el 1 de octubre de 2012, describen algunas posibles modificaciones al mensaje de SEI de SPT en relación con el mensaje de SEI de SPT descrito en WD8 de HEVC. La solicitud '119 y la solicitud '475 describen incluir una estructura de sintaxis de puntos de operación de solicitud en el mensaje de SEI de SPT y cambiar el elemento de sintaxis du_cpb_removal_delay a du_spt_cpb_removal_delay, que se define a continuación.
Las técnicas descritas en esta divulgación también son aplicables a ejemplos donde el mensaje de SEI de SPT cambió desde WD8 de HEVC al mensaje de SEI de SPT en la solicitud '119 y solicitud '475. La Tabla 4 a continuación proporciona un pseudocódigo de ejemplo para la manera en que el codificador de vídeo 20 puede señalar el identificador de DU en un ejemplo alternativo de un mensaje de SEI, y la manera en que el decodificador de vídeo 30 puede analizar sintácticamente el mensaje de SEI para determinar el identificador de DU. Al igual que con la Tabla 3, para evitar confusión, el nombre del mensaje de SEI de SPT se cambia a mensaje de SEI de información de unidad de decodificación debido a que el mensaje de SEI de información de unidad de decodificación incluye el identificador DU además de la información en el mensaje de SEI de SPT como se describe en la solicitud '119 y solicitud '475.
Tabla 4. Señalización alternativa en mensaje de SEI
____________________________________________
sub_pic_cpb_params_in_pic_timing_sei_flag igual a 1 especifica que los parámetros de retraso de retiro de CPB a nivel de subimagen están presentes en los mensajes de SEI de temporización de imagen y no está presente ningún mensaje de SEI de temporización de subimagen. El indicador sub_pic_cpb_params_in_pic_timing_sei igual a 0 especifica que los parámetros de retraso de retiro de CPB a nivel de subimagen están presentes en los mensajes de SEI de temporización de subimagen y los mensajes de SEI de temporización de imagen no incluyen parámetros de retraso de retiro de CPB a nivel de subimagen.
Como anteriormente con respecto a la Tabla 3, el mensaje de SEI de información de unidad de decodificación proporciona información de retraso de retiro de CPB para la unidad de decodificación asociada con el mensaje de SEI. Lo siguiente puede aplicarse a la sintaxis y semántica de mensaje de SEI de información de unidad de decodificación.
Los elementos de sintaxis sub_pic_cpb_params_present_flag, sub_pic_cpb_params_in_pic_timing_sei_flag, y cpb_removal_delay_length_minus1, y la variable CpbDpbDelaysPresentFlag pueden encontrarse en o derivarse de elementos de sintaxis que se encuentran en la estructura de sintaxis hrd_parameters( ) y la estructura de sintaxis sub_layer_hrd_parameters( ) aplicable a cualquiera de los puntos de operación a los que se aplica el mensaje de SEI de información de unidad de decodificación. El flujo de bits (o una parte del mismo) se refiere al subconjunto de flujo de bits (o una parte del mismo) asociado con cualquiera de los puntos de operación a los que se aplica el mensaje de SEI de información de unidad de decodificación.
Similar a lo anterior con respecto a la Tabla 3, el codificador de vídeo 20 emite el CpbDpbDelaysPresentFlag y el indicador sub_pic_cpb_params_present que el decodificador de vídeo 30 utiliza para determinar la presencia del mensaje de SEI de unidad de decodificación en el flujo de bits. En el ejemplo de la Tabla 4, si CpbDpbDelaysPresentFlag es igual a 1 y sub_pic_cpb_params_present_flag es igual a 1, el decodificador de vídeo 30 puede determinar que un mensaje de SEI de información de unidad de decodificación aplicable a los puntos de operación especificados está presente en cada unidad de decodificación en la secuencia de vídeo codificada. De lo contrario (por ejemplo, ya sea que CpbDpbDelaysPresentFlag es igual a 0 o indicador sub_pic_cpb_params_present es igual a 0), el decodificador de vídeo 30 puede determinar que no están presentes mensajes de SEI de información de unidad de decodificación aplicables a los puntos de operación especificados en la secuencia de vídeo codificada.
Similar a la descripción con respecto a la Tabla 3, las unidades de NAL a las cuales se aplica el mensaje de SEI de información de unidad de decodificación, también denominadas como las unidades de NAL asociadas con un mensaje de SEI de información de unidad de decodificación, consisten, en orden de decodificación, en la unidad de NAL de SEI que contiene el mensaje de SEI de información de unidad de decodificación y todas las unidades de NAL subsecuentes en la unidad de acceso hasta pero sin incluir cualquier unidad de NAL de SEI subsecuente que contenga un mensaje de SEI de información de unidad de decodificación con un valor diferente de decoding_unit_id. La definición de decoding_unit_id puede ser la misma que la descrita anteriormente con respecto a la Tabla 3, y una unidad de decodificación con un identificador de DU más pequeño es anterior en orden de decodificación que una unidad de decodificación con un identificador de DU más grande. En el ejemplo de la Tabla 4, du_spt_cpb_removal_delay puede especificar la duración, en unidades de tictacs de reloj de subimagen (véase subcláusula E.2.1 de WD8 de HEVC), entre el retiro desde el CPB de la última unidad de decodificación en orden de decodificación en la unidad de acceso actual que contiene el mensaje de SEI de información de unidad de decodificación y la unidad de decodificación asociada con el mensaje de SEI de información de unidad de decodificación. Este valor también se puede usar para calcular un tiempo de llegada más temprano posible de los datos de unidad de decodificación al CPB para el programador de secuencia hipotética (HSS), como se especifica en el Anexo C de WD8 de HEVC. El elemento de sintaxis puede representarse mediante un código de longitud fija cuya longitud en bits está dada por du_cpb_removal_delay_length_minus1 1. Cuando la unidad de decodificación asociada con el mensaje de SEI de información de unidad de decodificación es la última unidad de decodificación en la unidad de acceso actual. El valor de du_spt_cpb_removal_delay puede ser igual a 0.
Alternativamente, du_spt_cpb_removal_delay puede especificar la duración, en unidades de tictacs de reloj de subimagen (véase subcláusula E.2.1), entre el retiro desde el CPB de la siguiente unidad de decodificación en orden de decodificación en la unidad de acceso actual que contiene el mensaje de SEI de información de unidad de decodificación y la unidad de decodificación asociada con el mensaje de SEI de información de unidad de decodificación. Este valor también se puede usar para calcular el tiempo de llegada más temprano posible de los datos de unidad de decodificación al CPB para el HSS, como se especifica en el Anexo C de WD8 de HEVC. El elemento de sintaxis está representado por un código de longitud fija cuya longitud en bits está dada por du_cpb_removal_delay_length_minus1 1. Cuando la unidad de decodificación asociada con el mensaje de SEI de información de unidad de decodificación es la última unidad de decodificación en la unidad de acceso actual, el valor de du_spt_cpb_removal_delay puede ser igual a 0. Alternativamente, no se puede asociar ningún mensaje de SEI de información de unidad de decodificación con la última unidad de decodificación en cada unidad de acceso.
Los ejemplos anteriores describen técnicas para señalar un identificador de unidad de decodificación que el decodificador de vídeo 30 utiliza para determinar qué unidades de NAL están asociadas con qué unidades de decodificación. Por ejemplo, si el encabezado de sección indica un identificador de unidad de decodificación, entonces el decodificador de vídeo 30 puede determinar que la unidad de NAL que incluye la sección está asociada con la unidad de decodificación indicada en el encabezado de sección. Como otro ejemplo, si un mensaje de SEI (por ejemplo, el mensaje de SEI de información de unidad de decodificación) indica el identificador de unidad de decodificación, entonces el decodificador de vídeo 30 determina que todas las unidades de NAL que siguen al mensaje de SEI hasta la siguiente unidad de NAL de SEI que incluye un mensaje de SEI de información de unidad de decodificación con un identificador de unidad de decodificación diferente del identificador de unidad de decodificación del mensaje de SEI anterior. Esto permite que el codificador de vídeo 20 incluya múltiples copias del mensaje de SEI de información de unidad de decodificación, lo cual a su vez permite que el decodificador de vídeo 30 determine el tiempo de retiro de una unidad de decodificación desde el CPB de uno de una pluralidad de mensajes de SEI de información de unidad de decodificación en caso de que uno del otro mensaje de SEI de información de unidad de decodificación se pierde en la transmisión.
En algunos ejemplos, el codificador de vídeo 20 puede generar para salida y emitir y el decodificador de vídeo 30 puede recibir múltiples copias de diversos tipos de mensajes de SEI. Como se describió anteriormente, se especifican los siguientes aspectos para todos los mensajes de SEI: a) un alcance de aplicación al que se aplica la información portada en un mensaje de SEI; b) dónde puede estar presente un mensaje de SEI; y c) una restricción sobre el contenido de múltiples instancias de un tipo particular de mensaje de SEI.
Se asumen las siguientes convenciones para describir el alcance de aplicación, dónde pueden estar presentes mensajes, y las restricciones sobre el contenido de mensajes de SEI de múltiples instancias. Un mensaje de SEI se considera asociado con el valor de nuh_reserved_zero_6bits en el encabezado de unidad de NAL de la unidad de NAL de SEI que contiene el mensaje de SEI. A continuación, "ID de capa" se usa de manera intercambiable con "nuh_reserved_zero_6bits", debido a que nuh_reserved_zero_6bits identifica la capa en la codificación de vídeo escalable.
Como anteriormente, el acrónimo AU significa unidad de acceso. Los puntos de operación aplicables para cada mensaje de SEI de período de almacenamiento en búfer, mensaje de SEI de temporización de imagen o mensaje de SEI de temporización de subimagen son como se especifican en la solicitud '119 y solicitud '475. Un punto de operación se identifica mediante un conjunto de valores nuh_reserved_zero_6bits, denotado como OpLayerIdSet, y un valor de identificación temporal (TemporalId), denotado como OpTid, y el subconjunto de flujo de bits asociado derivado como la salida del proceso de extracción de subflujo de bits como se especifica en la subcláusula 10.1 de WD8 de HEVC con OpTid y OpLayerIdSet como entradas que son decodificables de manera independiente.
El valor TemporalId de las imágenes indica si las imágenes se pueden usar para interpredecir otras imágenes. Por ejemplo, una primera imagen no se puede usar para la interpredicción de una segunda imagen si el valor TemporalId de la primera imagen es mayor que el valor TemporalId de la segunda imagen. De esta forma, las imágenes con los valores TemporalId más grandes se pueden retirar (extraer) sin ningún efecto en la decodificación de vídeo debido a que las imágenes no se pueden usar para interpredecir ninguna de las imágenes restantes. De manera similar, las imágenes con los valores TemporalId más grandes y siguientes más grandes se pueden retirar sin ningún efecto en la decodificación de vídeo debido a que estas imágenes no se pueden usar para interpredecir ninguna de las imágenes restantes, y así sucesivamente. Aunque retirar tales imágenes con base en los valores TemporalId puede no afectar la decodificación de vídeo y mejorar la utilización de ancho de banda (por ejemplo, debido al retiro de imágenes), puede haber un impacto negativo en la calidad del vídeo si se retiran tales imágenes.
El proceso de extracción de subflujos de bits especificado en la subcláusula 10.1 describe ciertos requisitos de conformidad. Como ejemplo, cualquier subflujo de bits extraído desde un flujo de bits por el proceso con cualquier valor TemporalId objetivo más alto en el rango desde 0 a 6, inclusive, y la lista de identificadores de capa objetivo que solo incluye el valor de nuh_reserved_zero_6bits igual a cero se considera que es un flujo de bits de confirmación.
Un período de escena puede incluir y solo puede incluir todas las AUs empezando por una AU que contiene un mensaje de SEI de información de escena hasta la siguiente AU, en orden de decodificación, que contiene un mensaje de SEI de información de escena o el final de la secuencia de vídeo codificada, cualquiera que sea antes, en orden de decodificación. Un período de posfiltro puede incluir y solo puede incluir todas las AUs empezando por una AU que contiene un mensaje de SEI de indicio de posfiltro hasta la siguiente AU, en orden de decodificación, que contiene un mensaje de SEI de indicio de posfiltro o el final de la secuencia de vídeo codificada, cualquiera que sea antes, en orden de decodificación.
Si el mensaje de SEI de temporización de subimagen no incluye un ID de unidad de decodificación, una unidad de decodificación puede incluir y solo puede incluir un conjunto de unidades de NAL dentro de una AU desde una unidad de NAL de SEI que contiene un mensaje de SEI de temporización de subimagen hasta la siguiente unidad de NAL de SEI que contiene un mensaje de SEI de temporización de subimagen o el final de la AU, cualquiera que sea antes, en orden de decodificación. De lo contrario, una unidad de decodificación puede incluir y solo puede incluir un conjunto de unidades de NAL dentro de una AU desde una unidad de NAL de SEI que contiene un mensaje de s Ei de temporización de subimagen hasta la siguiente unidad de NAL de SEI que contiene un mensaje de SEI de temporización de subimagen con una valor diferente del ID de unidad de decodificación o el final de la A u , cualquiera que sea antes, en orden de decodificación.
Tabla 5. Asociación, presencia, y restricción para mensajes de SEI
_ _____________
La Tabla 5 ilustra diferentes tipos de mensajes de SEI, e ilustra la relación entre los diferentes tipos de mensajes de SEI, el valor de identificación temporal de la unidad de acceso, y si hay cualquier restricción y los tipos de restricciones en el mensaje de SEI. Por ejemplo, el codificador de vídeo 20 puede determinar un tipo de mensaje de SEI y puede determinar el valor de identificación temporal de la unidad de acceso. Con base en el valor de identificación temporal y el tipo de mensaje de SEI, el codificador de vídeo 20 puede determinar si se permite la presencia del mensaje de SEI.
Como ejemplo, suponer que el tipo de mensaje de SEI es el mensaje de SEI de período de búfer. En este ejemplo, si el valor de identificación temporal no es igual a 0, el codificador de vídeo 20 puede determinar que no se permite la presencia del mensaje de SEI de período de búfer. Como otro ejemplo, suponer que el tipo de mensaje de SEI es el mensaje de SEI de temporización de imagen. En este ejemplo, independientemente del valor de identificación temporal, el codificador de vídeo 20 puede determinar que se permite la presencia del mensaje de SEI de temporización de imagen.
De acuerdo con las técnicas descritas en esta divulgación, el codificador de vídeo 20 y decodificador de vídeo 30 son ejemplos de un codificador de vídeo configurado para implementar una o más técnicas de ejemplo descritas en esta divulgación. Por ejemplo, el codificador de vídeo 20 puede señalar identificadores para las unidades de decodificación (por ejemplo, codificar y señalar los identificadores para las unidades de decodificación), y el decodificador de vídeo 30 puede recibir los identificadores para las unidades de decodificación (por ejemplo, recibir y decodificar los identificadores para las unidades de decodificación). En este sentido, un codificador de vídeo, tal como codificador de vídeo 20 y decodificador de vídeo 30, puede configurarse para codificar (por ejemplo, codificar o decodificar) identificadores para unidades de decodificación.
El codificador de vídeo puede configurarse para codificar un identificador único para cada unidad de decodificación en una unidad de acceso de tal manera que un identificador para una unidad de decodificación en la unidad de acceso sea diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso. En algunos ejemplos, el codificador de vídeo puede asociar unidades de capa de abstracción de red (NAL) a las unidades de decodificación en la unidad de acceso con base en el identificador único para cada una de las unidades de decodificación. También, en algunos ejemplos, el codificador de vídeo puede repetir mensajes de información de mejora suplementaria (SEI) dentro de una unidad de decodificación o una unidad de acceso.
Para codificar cada DU, el codificador de vídeo puede codificar un primer identificador para una primera DU, y codificar un segundo identificador diferente para una segunda DU diferente. En este ejemplo, el segundo identificador puede ser el primer identificador incrementado en uno.
En algunos ejemplos, el codificador de vídeo puede codificar el identificador único para cada decodificación en un encabezado de sección. En estos ejemplos, el identificador único puede identificar la unidad de decodificación a la que pertenece la sección, y el codificador de vídeo puede determinar que la unidad de NAL que incluye la sección está asociada con la unidad de decodificación identificada por el identificador de unidad de decodificación en el encabezado de sección. En algunos ejemplos, el codificador de vídeo puede codificar el identificador único para la unidad de decodificación en un mensaje de SEI. Por ejemplo, el codificador de vídeo puede codificar el identificador único en un mensaje de SEI (por ejemplo, el mensaje de SEI de información de unidad de decodificación) que también incluye información sobre cuándo va a ser retirada la unidad de decodificación del búfer de imagen codificada (CPB). El identificador único para una unidad de decodificación puede identificar la unidad de decodificación que contiene el mensaje de SEI de información de unidad de decodificación.
En una o más técnicas de ejemplo, el codificador de vídeo puede codificar un primer identificador para una primera unidad de decodificación en la unidad de acceso, y codificar un segundo identificador diferente para una segunda unidad de decodificación diferente en la unidad de acceso. En algunos ejemplos, cuando un valor del primer identificador es menor que un valor del segundo identificador, la primera unidad de decodificación puede preceder a la segunda unidad de decodificación en orden de decodificación. En algunos ejemplos, el codificador de vídeo puede codificar el identificador único para cada unidad de decodificación como un índice de la unidad de decodificación en la lista de todas las unidades de decodificación en la unidad de acceso en orden de decodificación.
En algunos casos, el codificador de vídeo puede codificar una primera unidad de capa de abstracción de red (NAL) de capa de codificación de vídeo (VCL) en una unidad de acceso (AU). El codificador de vídeo también puede codificar un mensaje de información de mejora de suplementación (SEI) que sigue a la primera unidad de NAL de VLC en orden de decodificación. En algunos ejemplos, el codificador de vídeo también puede codificar el mensaje de SEI de tal manera que el mensaje de SEI preceda a la última unidad de NAL de VCL en la AU en orden de decodificación.
Las figuras 2A y 2B son diagramas conceptuales que ilustran ejemplos de unidades de acceso que incluyen identificadores de unidades de decodificación de acuerdo con las técnicas descritas en esta divulgación. La figura 2A ilustra la unidad de acceso 34 y la figura 2B ilustra la unidad de acceso 50. La unidad de acceso 34 y unidad de acceso 50 incluyen datos de vídeo necesarios para decodificar al menos una imagen (por ejemplo, una o más capas para decodificar una imagen o múltiples imágenes de diferentes vistas para la misma instancia de tiempo). El codificador de vídeo 20 emite la unidad de acceso 34 o unidad de acceso 50 como parte del flujo de bits codificado que el decodificador de vídeo 30 recibe a través del enlace 16 o dispositivo de almacenamiento 32.
En las figuras 2A y 2B, la unidad de acceso 34 y unidad de acceso 50 incluyen una pluralidad de unidades de decodificación, lo cual significa que el codificador de vídeo 20 emitió el SubPicCpbFlag para la unidad de acceso 34 y la unidad de acceso 50 como 1 para indicar al decodificador de vídeo 30 que se permite la operación en el nivel de subimagen para la unidad de acceso 34 y unidad de acceso 50.
En la figura 2A, la unidad de acceso 34 incluye unidades de decodificación 36A-36C (denominadas colectivamente como "unidades de decodificación 36"). La unidad de decodificación 36A incluye una primera unidad de NAL de SEI 38A y una segunda unidad de NAL de SEI 38B. Ambas unidades de NAL de SEI 38A y 38B incluyen un mensaje de SEI (por ejemplo, mensaje de SEI de información de unidad de decodificación) que indica información con respecto al tiempo de retiro de la unidad de decodificación 36A y también incluye un identificador de unidad de decodificación para la unidad de decodificación 36A. La unidad de decodificación 36A también incluye unidades de NAL40A-40D.
La unidad de decodificación 36B incluye una tercera unidad de NAL de SEI 42 que incluye un mensaje de SEI que indica información con respecto al tiempo de retiro de la unidad de decodificación 36B y también incluye un identificador de unidad de decodificación para la unidad de decodificación 36B. El identificador de unidad de decodificación para la unidad de decodificación 36B es diferente del identificador de unidad de decodificación para la unidad de decodificación 36A (por ejemplo, uno más que el identificador de unidad de decodificación para la unidad de decodificación 36A). La unidad de decodificación 36B también incluye unidades de NAL 44A y 44B.
La unidad de decodificación 36C incluye una cuarta unidad de NAL de SEI 46A y una quinta unidad de NAL de SEI 46B. Ambas unidades de NAL de SEI 46A y 46B incluyen un mensaje de SEI (por ejemplo, mensaje de SEI de información de unidad de decodificación) que indica información con respecto al tiempo de retiro de la unidad de decodificación 36C y también incluye un identificador de unidad de decodificación para la unidad de decodificación 36C. La unidad de decodificación 36<c>también incluye unidades de NAL 48A y 48B.
El decodificador de vídeo 30 puede determinar qué unidades de NAL están asociadas con qué unidades de decodificación con base en el mensaje de SEI de información de unidad de decodificación. Por ejemplo, el decodificador de vídeo 30 puede determinar que la unidad de NAL de SEI 38A y las unidades de NAL (por ejemplo, unidades de NAL 40A y 40B) que siguen a la unidad de NAL de SEL 38A están asociadas con la unidad de decodificación 36A debido a que el mensaje de SEI de información de unidad de decodificación de unidad de NAL de SEI 38A incluía el identificador de unidad de decodificación para la unidad de decodificación 36A. Entonces, el decodificador de vídeo 30 puede determinar que la unidad de NAL de SEI 38B también es parte de la unidad de decodificación 36A debido a que el mensaje de SEI de información de unidad de decodificación de la unidad de NAL de SEI 38B es una copia del mensaje de SEI de información de unidad de decodificación de la unidad de NAL de SEI 38A (por ejemplo, incluye la misma información de tiempo de retiro y el mismo identificador de unidad de decodificación). En este ejemplo, el decodificador de vídeo 30 puede determinar que las unidades de NAL 40C y 40D también están asociadas con la unidad de decodificación 36A debido a que estas unidades de NAL siguen a la unidad de NAL de SEL 38B y preceden a otra unidad de NAL de SEI con un mensaje de SEI de información de unidad de decodificación.
El decodificador de vídeo 30 puede determinar que la unidad de NAL de SEI 42 no pertenece a la unidad de decodificación 36A debido a que el identificador de unidad de decodificación en el mensaje de SEI de información de unidad de decodificación de la unidad de NAL de SEI 42 es diferente del identificador de unidad de decodificación en el mensaje de SEI de información de unidad de decodificación para unidades de NAL de SEI 38A y 38B. En este caso, el decodificador de vídeo 30 puede determinar que la unidad de NAL de SEI 42 está asociada con otra unidad de decodificación (por ejemplo, unidad de decodificación 36B), y las unidades de NAL 44A y 44B también están asociadas con la unidad de decodificación 36B debido a que estas unidades de NAL siguen a la unidad de NAL de SEI 42 y preceden a otra unidad de NAL de SEI con un mensaje de SEI de información de unidad de decodificación que incluye un identificador de unidad de decodificación diferente.
El decodificador de vídeo 30 puede determinar que la unidad de NAL de SEI 46A está asociada con una unidad de decodificación diferente (por ejemplo, unidad de decodificación 36C) debido a que el identificador de unidad de decodificación en el mensaje de SEI de información de unidad de decodificación de la unidad de NAL de SEI 46A es diferente de los identificadores de unidad de decodificación previos (por ejemplo, uno mayor que el previo). El decodificador de vídeo 30 determina que la unidad de NAL 48A está asociada con la unidad de decodificación 36C debido a que la unidad de NAL 48A sigue a la unidad de NAL de SEI 46A y precede a la unidad de NAL de SEI 46B que incluye un mensaje de SEI de información de unidad de decodificación.
En este ejemplo, la unidad de NAL de SEI 46B incluye un mensaje de SEI de información de unidad de decodificación que incluye el mismo identificador de unidad de decodificación que el mensaje de SEI de información de unidad de decodificación de la unidad de NAL de SEI 46A (por ejemplo, los mensajes de SEI de información de unidad de decodificación son copias). El decodificador de vídeo 30 puede entonces determinar que la unidad de NAL 48B está asociada con la unidad de decodificación 36C debido a que la unidad de NAL 48B es la última unidad de NAL en la unidad de acceso 34.
En la figura 2A, ejemplos del mensaje de SEI de información de unidad de decodificación incluyen los ejemplos descritos anteriormente con respecto a las Tablas 3 y 4. También, en la figura 2A, las unidades de NAL que pertenecen a una unidad de decodificación son contiguas (es decir, unidades de NAL para otras unidades de decodificación no se intercalan con las unidades de NAL de una unidad de decodificación).
En la figura 2A, el codificador de vídeo 20 puede generar para salida y emitir los identificadores de unidad de decodificación para cada unidad de decodificación en las unidades de decodificación correspondientes. Por ejemplo, el codificador de vídeo 20 incluye los identificadores de unidad de decodificación en los mensajes de SEI de información de unidad de decodificación de la unidad de NAL de SEI 38A y unidad de NAL de SEI 38B en la correspondiente unidad de decodificación 36A, y emite los identificadores de unidad de decodificación como parte de los mensajes de SEI de información de unidad de decodificación de las unidades de NAL de SEI 38A y 38B. El codificador de vídeo 20 incluye los identificadores de unidad de decodificación en el mensaje de SEI de información de unidad de decodificación de la unidad de NAL de SEI 42 en la unidad de decodificación 36B correspondiente, e incluye los identificadores de unidad de decodificación en los mensajes de SEI de unidad de decodificación de la unidad de NAL de SEI 46A y unidad de NAL de SEI 46B en la correspondiente unidad de decodificación 36C. En estos ejemplos, el codificador de vídeo 20 emite los identificadores de unidad de decodificación como parte de los respectivos mensajes de SEI de unidad de decodificación de las unidades de NAL de SEI 42, 46A, y 46B.
La inclusión de los mensajes de SEI de unidad de decodificación permite al decodificador de vídeo 30 determinar qué unidades de NAL están asociadas con qué unidades de decodificación con base en los identificadores de unidad de decodificación de tal manera que incluso si se pierde una unidad de NAL, el decodificador de vídeo 30 todavía puede determinar qué unidades de NAL están asociadas con qué unidades de decodificación. Por ejemplo, suponer que se pierde la unidad de NAL 40C. En este ejemplo, el decodificador de vídeo 30 aún puede determinar que la unidad de NAL 40D está asociada con la unidad de decodificación 36A debido a que la unidad de NAL 40D es subsecuente a la unidad de NAL de SEI 38B, cuyo mensaje de SEI de información de unidad de decodificación indicó un identificador de unidad de decodificación para la unidad de decodificación 36A, y precede a la unidad de NAL de SEI 42, cuyo mensaje de SEI de información de unidad de decodificación indicó un identificador de unidad de decodificación para la unidad de decodificación 36B. Además, con el mensaje de SEI de unidad de decodificación indicando los identificadores de unidad de decodificación, el codificador de vídeo 20 puede incluir múltiples copias del mensaje de SEI de unidad de decodificación en una unidad de decodificación.
Como se ilustra en la figura 2B, la unidad de acceso 50 incluye unidades de decodificación 52A-52C (denominadas colectivamente como "unidades de decodificación 52"). La unidad de decodificación 52A incluye unidades de NAL de sección 54A y 54B, la unidad de decodificación 52B incluye unidades de NAL de sección 64A-64C, y la unidad de decodificación 52C incluye unidades de NAL de sección 78A y 78B. Cada una de las unidades de NAL de sección incluye un encabezado de sección y un cuerpo de sección. El encabezado de sección incluye información de encabezado que incluye un identificador de unidad de decodificación, y el cuerpo de sección incluye datos de vídeo para decodificar la sección.
Por ejemplo, la unidad de NAL de sección 54A incluye el encabezado de sección 56 y cuerpo de sección 58, y la unidad de NAL de sección 54B incluye encabezado de sección 60 y cuerpo de sección 62. En este ejemplo, el encabezado de sección 56 de la unidad de NAL de sección 54A y encabezado de sección 60 de la unidad de NAL de sección 54B incluyen cada uno el mismo identificador de unidad de decodificación, que el decodificador de vídeo 30 utiliza para determinar que la unidad de NAL 54A y unidad de NAL 54B están asociadas con la misma unidad de decodificación (por ejemplo, unidad de decodificación 52A).
La unidad de NAL de sección 64A incluye el encabezado de sección 66 y cuerpo de sección 68, la unidad de NAL de sección 64B incluye el encabezado de sección 70 y cuerpo de sección 72, y la unidad de NAL de sección 64C incluye el encabezado de sección 74 y cuerpo de sección 76. En este ejemplo, el encabezado de sección 66 de unidad de NAL de sección 64A, el encabezado de sección 70 de unidad de NAL de sección 64B, y el encabezado de sección 74 de unidad de NAL de sección 64C incluyen cada uno el mismo identificador de unidad de decodificación, que el decodificador de vídeo 30 utiliza para determinar que la unidad de NAL 64A, unidad de NAL 64B, y unidad de NAL 64C están asociadas con la misma unidad de decodificación (por ejemplo, unidad de decodificación 52B).
La unidad de NAL de sección 78A incluye el encabezado de sección 80 y cuerpo de sección 82, y la unidad de NAL de sección 78B incluye el encabezado de sección 84 y cuerpo de sección 86. En este ejemplo, el encabezado de sección 80 de la unidad de NAL de sección 78A y encabezado de sección 84 de la unidad de NAL de sección 78B incluyen cada uno el mismo identificador de unidad de decodificación, que el decodificador de vídeo 30 utiliza para determinar que la unidad de NAL 78A y la unidad de NAL 78B están asociadas con la misma unidad de decodificación (por ejemplo, unidad de decodificación 52C).
En la figura 2B, los ejemplos del mensaje de SEI de información de unidad de decodificación incluyen los ejemplos descritos anteriormente con respecto a la Tabla 2. Similar a la figura 2A, en la figura 2B, las unidades de NAL que pertenecen a una unidad de decodificación son contiguas (es decir, unidades de NAL para otras las unidades de decodificación no se intercalan con unidades de NAL de una unidad de decodificación).
Como se ilustra, el codificador de vídeo 20 incluye el identificador de unidad de decodificación en los encabezados de sección 56 y 60 para la unidad de decodificación 52A correspondiente, y emite el identificador de unidad de decodificación como parte de los encabezados de sección 56 y 60. También, el codificador de vídeo 20 incluye el identificador de unidad de decodificación en encabezados de sección 66, 70, y 74 para la unidad de decodificación 52B correspondiente, y emite el identificador de unidad de decodificación como parte de los encabezados de sección 66, 70, y 74. De manera similar, el codificador de vídeo 20 incluye el identificador de unidad de decodificación en los encabezados de sección 80 y 84 para la unidad de decodificación correspondiente 52C, y emite el identificador de unidad de decodificación como parte de los encabezados de sección 80 y 84.
En el ejemplo ilustrado en la figura 2B, el decodificador de vídeo 30 no necesita depender de las posiciones de los mensajes de SEI de SPT para determinar qué unidad de NAL de sección está asociada con qué unidad de decodificación. Más bien, el decodificador de vídeo 30 utiliza el identificador de unidad de decodificación indicado en los encabezados de sección de la unidad de NAL de sección para determinar qué unidad de NAL de sección está asociada con qué unidad de decodificación. En este caso, incluso si se pierde una unidad de NAL de sección (por ejemplo, unidad de NAL de sección 56B), el decodificador de vídeo 30 aún puede ser capaz de determinar qué unidad de NAL está asociada con qué unidades de decodificación con base en el encabezado de sección.
La figura 3 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas descritas en esta divulgación. El codificador de vídeo 20 puede realizar intra e intercodificación (codificación o decodificación de intrapredicción y codificación o decodificación interpredicción) de bloques de vídeo dentro de secciones de vídeo. La intracodificación depende de la predicción espacial para reducir o retirar la redundancia espacial en el vídeo dentro de un marco o imagen de vídeo dado. La intercodificación depende de la predicción temporal para reducir o retirar la redundancia temporal en el vídeo dentro de marcos o imágenes adyacentes de una secuencia de vídeo. El intramodo (modo I) puede referirse a cualquiera de diversos modos de compresión basados en el espacio. Los intermodos, tales como la predicción unidireccional (modo P) o bipredicción (modo B), pueden referirse a cualquiera de varios modos de compresión basados en el tiempo.
En el ejemplo de la figura 3, el codificador de vídeo 20 incluye una unidad de partición 135, unidad de procesamiento de predicción 141, unidad de filtro 163, memoria de imágenes de referencia 164 (a veces denominada como un búfer de imagen decodificada), agregador 150, unidad de procesamiento de transformada 152, unidad de procesamiento de cuantificación 154, y unidad de codificación por entropía 156. La unidad de procesamiento de predicción 141 incluye una unidad de estimación de movimiento 142, unidad de compensación de movimiento 144, y unidad de intrapredicción 146. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye una unidad de procesamiento de cuantificación inversa 158, unidad de procesamiento de transformada inversa 160, y agregador 162. La unidad de filtro 163 puede representar generalmente uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de bucle adaptativo (ALF), y un filtro de compensación adaptativa de muestra (SAO). Aunque la unidad de filtro 163 se muestra en la figura 3 como un filtro de bucle, en otras configuraciones, la unidad de filtro 163 puede implementarse como un filtro de posbucle, en cuyo caso se pueden usar datos no filtrados en el bucle de codificación.
Como se muestra en la figura 3, el codificador de vídeo 20 recibe datos de vídeo, y la unidad de partición 135 divide los datos en bloques de vídeo. Esta partición también puede incluir la partición en secciones, mosaicos, u otras unidades más grandes, así como la partición de bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuádruple de LCUs y CUs. El codificador de vídeo 20 generalmente ilustra los componentes que codifican bloques de vídeo dentro de una sección de vídeo que va a ser codificada. La sección se puede dividir en múltiples bloques de vídeo (y posiblemente en conjuntos de bloques de vídeo denominados como mosaicos). La unidad de procesamiento de predicción 141 puede seleccionar uno de una pluralidad de modos de codificación posibles, 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 con base en resultados de error (por ejemplo, tasa de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 141 puede proporcionar el bloque intra o intercodificado resultante al agregador 150 para generar datos de bloque residuales y al agregador 162 para reconstruir el bloque codificado para uso como imagen de referencia.
La unidad de intrapredicción 146 dentro de la unidad de procesamiento de predicción 141 puede realizar codificación intrapredictiva del bloque de vídeo actual en relación con uno o más bloques vecinos en el mismo marco o sección que el bloque actual que va a ser codificado para proporcionar compresión espacial. La unidad de estimación de movimiento 142 y la unidad de compensación de movimiento 144 dentro de la unidad de procesamiento de predicción 141 realizan 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 compresión temporal.
La unidad de estimación de movimiento 142 puede configurarse para determinar el modo de interpredicción para una sección de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar secciones de vídeo en la secuencia como secciones P, secciones B o secciones GPB. La unidad de estimación de movimiento 142 y unidad de compensación de movimiento 144 pueden estar altamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 142, es el proceso de generar vectores de movimiento, que estiman el movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de un marco de vídeo o imagen 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 va a ser codificado en términos de diferencia de píxeles, que puede determinarse mediante la suma de la diferencia absoluta (SAD), suma de diferencia cuadrada (SSD), u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxeles subenteros de imágenes de referencia almacenadas en la memoria de imágenes de referencia 164. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel, u otras posiciones fraccionarias de píxeles de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 142 puede realizar una búsqueda de movimiento en relación con las posiciones de píxeles completas y posiciones fraccionarias de píxeles y emitir un vector de movimiento con precisión fraccionaria de píxeles.
La unidad de estimación de movimiento 142 calcula un vector de movimiento para una PU de un bloque de vídeo en una sección intercodificada 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 desde una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de imágenes de referencia 164. La unidad de estimación de movimiento 142 envía el vector de movimiento calculado a la unidad de codificación por entropía 156 y unidad de compensación de movimiento 144.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 144, puede involucrar buscar o generar el bloque predictivo con base en el vector de movimiento determinado por la estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxeles. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 144 puede ubicar el bloque predictivo al cual apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxeles del bloque predictivo de los valores de píxeles del bloque de vídeo actual que se codifica, formando valores de diferencia de píxeles. Los valores de diferencia de píxeles forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luma como de croma. El agregador 150 representa el componente o componentes que realizan esta operación de resta. La unidad de compensación de movimiento 144 también puede generar elementos de sintaxis asociados con los bloques de vídeo y la sección de vídeo para uso por el decodificador 30 de vídeo al decodificar los bloques de vídeo de la sección de vídeo.
La unidad de intrapredicción 146 puede intrapredecir un bloque actual, como una alternativa a la interpredicción realizada por la unidad de estimación de movimiento 142 y la unidad de compensación de movimiento 144, como se describió anteriormente. En particular, la unidad de intrapredicción 146 puede determinar un modo de intrapredicción a usar para codificar un bloque actual. En algunos ejemplos, la unidad de intrapredicción 146 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pases de codificación separados, y la unidad de intrapredicción 146 (o una unidad de selección de modo (no se ilustra), en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado para a partir de los modos probados. Por ejemplo, la unidad de intrapredicción 146 puede calcular valores de distorsión de tasa usando un análisis de distorsión de tasa para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tenga las mejores características de distorsión de tasa entre los modos probados. El análisis de distorsión de tasa generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque original, no codificado que fue codificado para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de intrapredicción 146 puede calcular relaciones a partir de las distorsiones y tasas para los diversos bloques codificados para determinar qué modo de intrapredicción exhibe el mejor valor de distorsión de tasa para el bloque.
En cualquier caso, después de seleccionar un modo de intrapredicción para un bloque, la unidad de intrapredicción 146 puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación por entropía 156. La unidad de codificación por entropía 156 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 de vídeo 20 puede incluir en los datos de configuración de flujo de bits transmitidos, que pueden incluir una pluralidad de tablas de índice de modo de intrapredicción y una pluralidad de tablas de índice de modo de intrapredicción modificadas (también denominadas como tablas de mapeo de contraseñas), definiciones de contextos de codificación para diversos bloques, e indicaciones de un modo de intrapredicción más probable, una tabla de índice de modo de intrapredicción, y una tabla de índice de modo de intrapredicción modificada para usar para cada uno de los contextos.
Después de que la unidad de procesamiento de predicción 141 genera el bloque predictivo para el bloque de vídeo actual a través ya sea de interpredicción o intrapredicción, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo del bloque de vídeo actual. Los datos de vídeo residuales en el bloque residual pueden incluirse en una o más TUs y aplicarse a la unidad de procesamiento de transformada 152. La unidad de procesamiento de transformada 152 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 de procesamiento de transformada 152 puede convertir los datos de vídeo residuales desde un dominio de píxeles a un dominio de transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 152 puede enviar los coeficientes de transformada resultantes a la unidad de procesamiento de cuantificación 154. La unidad de procesamiento de cuantificación 154 cuantifica los coeficientes de transformada para reducir además la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de procesamiento de cuantificación 154 puede realizar entonces un escaneo de la matriz que incluye los coeficientes de transformada cuantificados. Alternativamente, la unidad de codificación por entropía 156 puede realizar el escaneo.
Después de la cuantificación, la unidad de codificación por entropía 156 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 156 puede realizar codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación por entropía de partición de intervalos de probabilidad (PIPE), u otra metodología o técnica de codificación por entropía. Después de la codificación por entropía por la unidad de codificación por entropía 156, el flujo de bits codificado puede transmitirse al decodificador de vídeo 30, o archivarse para posterior transmisión o recuperación mediante el decodificador de vídeo 30. La unidad de codificación por entropía 156 también puede codificar por entropía los vectores de movimiento y los otros elementos de sintaxis para la sección de vídeo actual que se codifica.
La unidad de procesamiento de cuantificación inversa 158 y la unidad de procesamiento de transformada inversa 160 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles para uso posterior como un bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 144 puede calcular un bloque de referencia agregando 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 de compensación de movimiento 144 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para uso en la estimación de movimiento. El agregador 162 agrega el bloque residual reconstruido al bloque de predicción con compensación de movimiento producido por la unidad de compensación de movimiento 144 para producir un bloque de referencia para almacenamiento en la memoria de imágenes de referencia 164. El bloque de referencia puede ser usado por la unidad de estimación de movimiento 142 y la unidad de compensación de movimiento 144 como un bloque de referencia para interpredecir un bloque en un marco de vídeo o imagen subsecuente.
El codificador de vídeo 20 de la figura 3 representa un ejemplo de un codificador de vídeo configurado para implementar una o más de las técnicas descritas en este documento. Por ejemplo, la unidad de procesamiento de predicción 141 representa una unidad de ejemplo para realizar las funciones de ejemplo descritas anteriormente. La unidad de procesamiento de predicción 141 puede generar las unidades de NAL y asociar las unidades de NAL a las unidades de decodificación de una unidad de acceso. La unidad de procesamiento de predicción 141 puede generar los identificadores de unidad de decodificación e incluir los identificadores de unidad de decodificación en el mensaje de SEI de información de unidad de decodificación de una unidad de NAL de SEI y/o incluir los identificadores de unidad de decodificación en encabezados de sección de secciones de unidades de NAL de sección. La unidad de codificación por entropía 156 puede codificar por entropía las unidades de decodificación (por ejemplo, las unidades de NAL dentro de las unidades de decodificación).
En algunos ejemplos, una unidad diferente a la unidad de procesamiento de predicción 141 puede implementar los ejemplos descritos anteriormente. En algunos ejemplos, la unidad de procesamiento de predicción 141 en conjunto con una u otras más unidades de codificador de vídeo 20 pueden implementar los ejemplos descritos anteriormente. En algunos ejemplos, un procesador o unidad de codificador de vídeo 20 (no se muestra en la figura 3) puede, solo o en conjunto con otras unidades de codificador de vídeo 20, implementar los ejemplos descritos anteriormente.
La figura 4 es un diagrama de bloques que ilustra un decodificador de vídeo 30 de ejemplo que puede implementar las técnicas de esta divulgación. En el ejemplo de la figura 4, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 180, unidad de procesamiento de predicción 181, unidad de procesamiento de cuantificación inversa 186, unidad de procesamiento de transformada inversa 188, agregador 190, unidad de filtro 191, memoria de imagen de referencia 192 (a veces denominada como un búfer de imágenes de decodificación (DBP)), y búfer de imagen codificada (CPB) 194. La unidad de procesamiento de predicción 181 incluye unidad de compensación de movimiento 182 y unidad de intrapredicción 184. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar un paso de decodificación generalmente recíproco al paso de codificación descrito con respecto al codificador de vídeo 20 de la figura 3.
Durante el proceso de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de una sección de vídeo codificada y elementos de sintaxis asociados del codificador de vídeo 20. El decodificador de vídeo 30 puede recibir el flujo de bits de vídeo codificado desde una entidad de red 29. La entidad de red 29 puede, por ejemplo, ser un servidor, un elemento de red consciente de medios (MANE), un editor/empalmadora de vídeo, u otro tal dispositivo configurado para implementar una o más de las técnicas descritas anteriormente. Como se describió anteriormente, algunas de las técnicas descritas en esta divulgación pueden ser implementadas por la entidad de red 29 antes de que la red 29 transmita el flujo de bits de vídeo codificado al decodificador de vídeo 30. En algunos sistemas de decodificación de vídeo, la entidad de red 29 y decodificador de vídeo 30 pueden ser partes de dispositivos separados, mientras que en otros casos, la funcionalidad descrita con respecto a la entidad de red 29 puede realizarse mediante el mismo dispositivo que comprende el decodificador de vídeo 30.
El búfer de imagen codificada 194 recibe las imágenes codificadas desde la entidad de red 29. Como se describe en esta divulgación, parte de los elementos de sintaxis en el flujo de bits codificado indican si se permite el acceso a nivel de subimagen al CPB 194. También, el flujo de bits codificado puede incluir mensajes de SEI que definen información para el procesamiento de las imágenes dentro del CPB 194 (por ejemplo, tiempos de retiro de unidades de decodificación de una unidad de acceso).
La unidad de decodificación por entropía 180 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento, y otros elementos de sintaxis. La unidad de decodificación por entropía 180 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de procesamiento de predicción 181. El decodificador de vídeo 30 puede recibir los elementos de sintaxis en el nivel de sección de vídeo y/o en el nivel de bloque de vídeo.
Cuando la sección de vídeo se codifica como una sección intracodificada (I), la unidad de intrapredicción 184 de la unidad de procesamiento de predicción 181 puede generar datos de predicción para un bloque de vídeo de la sección de vídeo actual con base en un modo de intrapredicción señalado y datos desde bloques previamente decodificados del marco o imagen actual. Cuando el marco de vídeo se codifica como una sección intercodificada (es decir, B, P o GPB), la unidad de compensación de movimiento 182 de la unidad de procesamiento de predicción 181 produce bloques predictivos para un bloque de vídeo de la sección de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de decodificación por entropía 180. Los bloques predictivos pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de marcos de referencia (imágenes), Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en la memoria de imágenes de referencia 192.
La unidad de compensación de movimiento 182 determina la información de predicción para un bloque de vídeo de la sección de vídeo actual analizando sintácticamente los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se decodifica. Por ejemplo, la unidad de compensación de movimiento 182 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) usado para codificar los bloques de vídeo de la sección de vídeo, un tipo de sección de interpredicción (por ejemplo, sección B, sección P, o sección GPB), información de construcción para una o más de las listas de imágenes de referencia para la sección, vectores de movimiento para cada bloque de vídeo intercodificado de la sección, estado de interpredicción para cada bloque de vídeo intercodificado de la sección, y otra información para decodificar los bloques de vídeo en la sección de vídeo actual.
La unidad de compensación de movimiento 182 también puede realizar una interpolación basada en filtros de interpolación. La unidad de compensación de movimiento 182 puede usar filtros de interpolación como se usan por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles subenteros de bloques de referencia. En este caso, la unidad de compensación de movimiento 182 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
La unidad de procesamiento de cuantificación inversa 186 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 180. El proceso de cuantificación inversa puede incluir uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo en la sección de vídeo para determinar un grado de cuantificación e, igualmente, un grado de cuantificación inversa que se debe aplicar. La unidad de procesamiento de transformada inversa 188 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de enteros inversa, o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada con el fin de producir bloques residuales en el dominio de píxeles.
Después de que la unidad de compensación de movimiento 182 genera el bloque predictivo para el bloque de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis, el decodificador de vídeo 30 forma un bloque de vídeo decodificado sumando los bloques residuales desde la unidad de procesamiento de transformada inversa 188 con los bloques predictivos correspondientes generados por unidad de compensación de movimiento 182. El agregador 190 representa el componente o componentes que realizan esta operación de suma. Si se desea, también se pueden usar filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxeles, o mejorar de otro modo la calidad de vídeo. La unidad de filtro 191 puede representar uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de bucle adaptativo (ALF), y un filtro de compensación adaptativa de muestra (SAO). Aunque la unidad de filtro 191 se muestra en la figura 4 como un filtro de bucle, en otras configuraciones, la unidad de filtro 191 puede implementarse como un filtro posbucle. Los bloques de vídeo decodificados en un marco o imagen dados se almacenan luego en la memoria de imágenes de referencia 192, que almacena imágenes de referencia usadas para la compensación de movimiento subsecuente. La memoria de imágenes de referencia 192 también almacena vídeo decodificado para posterior presentación en un dispositivo de visualización, tal como dispositivo de visualización 31 de la figura 1.
El decodificador de vídeo 30 de la figura 4 representa un ejemplo de un decodificador de vídeo configurado para implementar una o más de las técnicas descritas en este documento. Por ejemplo, la unidad de procesamiento de predicción 181 representa una unidad de ejemplo para realizar las funciones de ejemplo descritas anteriormente. Por ejemplo, la unidad de procesamiento de predicción 181 puede determinar si SubPicCpbFlag indica que se permite la operación a nivel de subimagen en el CPB 194. Si se permite la operación a nivel de subimagen, la unidad de procesamiento de predicción 181 puede determinar qué unidades de NAL están asociadas con qué unidades de decodificación de una unidad de acceso.
Por ejemplo, la unidad de procesamiento de predicción 181 puede determinar que una unidad de NAL de SEI incluye el mensaje de SEI de información de unidad de decodificación. A partir del mensaje de SEI de información de unidad de decodificación, la unidad de procesamiento de predicción 181 puede determinar el tiempo de retiro del CPB 194 de la unidad de decodificación, y el identificador de unidad de decodificación. La unidad de procesamiento de predicción 181 puede determinar que la unidad de NAL de SEI y todas las unidades de NAL que siguen a la unidad de NAL de SEI hasta que otra unidad de NAL de SEI que incluye un mensaje de SEI de información de unidad de decodificación con un identificador de unidad de decodificación diferente estén asociadas con la unidad de decodificación identificada por el mensaje de SEI de información de unidad de decodificación de la unidad de decodificación.
Como otro ejemplo, la unidad de procesamiento de predicción 181 puede determinar que una sección de un encabezado de sección incluye un identificador de unidad de decodificación. La unidad de procesamiento de predicción 181 puede determinar a qué unidad de decodificación está asociada la unidad de NAL de sección que incluye la sección y su encabezado de sección con base en el identificador de decodificación.
De esta manera, incluso si una unidad de NAL se pierde en la transmisión, la unidad de procesamiento de predicción 181 puede ser capaz de determinar a qué unidades de decodificación están asociadas las otras unidades de NAL (es decir, recibidas y no perdidas). En algunos ejemplos, la unidad de procesamiento de predicción 181 puede ser capaz de determinar el tiempo cuando la unidad de decodificación debe retirarse del CPB 194 debido a que puede haber múltiples copias del mensaje de SEI de unidad de decodificación dentro de la unidad de decodificación.
En algunos ejemplos, una unidad diferente de la unidad de procesamiento de predicción 181 puede implementar los ejemplos descritos anteriormente. En algunos ejemplos, la unidad de procesamiento de predicción 181 en conjunto con una u otras más unidades de decodificador de vídeo 30 pueden implementar los ejemplos descritos anteriormente. En algunos ejemplos, un procesador o unidad de decodificador de vídeo 30 (no se muestra en la figura 4) puede, solo o en conjunto con otras unidades de decodificador de vídeo 30, implementar los ejemplos descritos anteriormente.
La figura 5 es un diagrama de flujo que ilustra un ejemplo de codificación de datos de vídeo de acuerdo con uno o más ejemplos descritos en esta divulgación. Con propósitos de ilustración, el ejemplo de la figura 5 se describe con respecto al codificador de vídeo 20.
El codificador de vídeo 20 determina un identificador único para cada unidad de decodificación en la unidad de acceso (200). Un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso. Por ejemplo, el codificador de vídeo 20 determina un primer identificador para una primera unidad de decodificación en las unidades de acceso, y determina un segundo identificador diferente para una segunda unidad de decodificación diferente en la unidad de acceso. En este ejemplo, si el valor del primer identificador es menor que el valor del segundo identificador, la primera unidad de decodificación precede a la segunda unidad de decodificación en orden de decodificación.
El codificador de vídeo 20 determina qué unidades de NAL están asociadas con qué unidades de decodificación (202) de la unidad de acceso. Por ejemplo, cada unidad de decodificación puede representar datos de vídeo para parte de una imagen, y las unidades de NAL pueden representar parte de la unidad de decodificación. El codificador de vídeo 20 puede determinar qué partes de los datos de vídeo de la unidad de decodificación están representadas por qué unidades de NAL y determinar que las unidades de NAL que representan los datos de vídeo de la unidad de decodificación están asociadas con la unidad de decodificación.
El codificador de vídeo 20 genera para la salida cada identificador único en las unidades de decodificación correspondientes para indicar qué unidades de NAL están asociadas con qué unidades de decodificación de la unidad de acceso (204). Por ejemplo, el codificador de vídeo 20 puede codificar por entropía los identificadores únicos para cada una de las unidades de decodificación a través de la unidad de codificación por entropía 156. En estos ejemplos, se puede considerar que la codificación genera para la salida. Además, el codificador de vídeo 20 puede emitir (por ejemplo, señalar) cada identificador único en las unidades de decodificación correspondientes para indicar qué unidades de NAL están asociadas con qué unidades de decodificación de las unidades de acceso como parte de un flujo de bits codificado.
Por ejemplo, el codificador de vídeo 20 puede incluir un primer identificador único para una primera unidad de decodificación en un primer mensaje de SEI de información de unidad de decodificación, y emitir todas las unidades de NAL que están asociadas con la primera unidad de decodificación después de la emisión del primer identificador único como parte del primer mensaje de SEI de información de unidad de decodificación. El codificador de vídeo 20 puede incluir un segundo identificador de unidad de decodificación para una segunda unidad de decodificación en un segundo mensaje de SEI de unidad de decodificación. Después de la emisión de todas las unidades de NAL que están asociadas con la primera unidad de decodificación, el codificador de vídeo 20 puede emitir el segundo identificador de unidad de decodificación en el segundo mensaje de SEI de unidad de decodificación como parte de la emisión de la segunda unidad de decodificación. Como otro ejemplo, el codificador de vídeo 20 puede incluir y emitir cada uno de los identificadores únicos en encabezados de sección de unidades de NAL de sección.
En algunos ejemplos, el codificador de vídeo 20 puede emitir, como parte de una unidad de decodificación, un primer mensaje de SEI de unidad de decodificación que indica información para un tiempo de retiro de la unidad de decodificación. El codificador de vídeo 20 también puede emitir, como parte de la unidad de decodificación, un segundo mensaje de SEI de unidad de decodificación que indica información para el tiempo de retiro de la unidad de decodificación. En algunos casos, el segundo mensaje de SEI de unidad de decodificación es una copia del primer mensaje de SEI de unidad de decodificación. En algunos ejemplos, el codificador de vídeo 20 puede incluir un mensaje de SEI en la unidad de acceso, e incluir una copia del mensaje de SEI en la unidad de acceso. El codificador de vídeo 20 puede emitir la unidad de acceso que incluye el mensaje de SEI y la copia del mensaje de SEI.
La figura 6 es un diagrama de flujo que ilustra un ejemplo de decodificación de datos de vídeo de acuerdo con uno o más ejemplos descritos en esta divulgación. Con propósitos de ilustración, el ejemplo de la figura 6 se describe con respecto al decodificador de vídeo 30.
El decodificador de vídeo 30 decodifica un identificador único para cada unidad de decodificación en la unidad de acceso (206). En este ejemplo, un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso. Por ejemplo, el decodificador de vídeo 30 decodifica un primer identificador para una primera unidad de decodificación en la unidad de acceso, y decodifica un segundo identificador diferente para una segunda unidad de decodificación diferente en la unidad de acceso. En este ejemplo, si un valor del primer identificador es menor que un valor del segundo identificador, la primera unidad de decodificación precede a la segunda unidad de decodificación en orden de decodificación.
El decodificador de vídeo 30 determina qué unidades de NAL están asociadas con qué unidades de decodificación con base en el identificador único para cada unidad de decodificación en la unidad de acceso (208). Por ejemplo, el decodificador de vídeo 30 decodifica un primer identificador único desde un primer mensaje de SEI de información de unidad de decodificación para una primera unidad de decodificación y decodifica un segundo identificador único desde un segundo mensaje de SEI de unidad de decodificación para una segunda unidad de decodificación. El decodificador de vídeo 30 determina que una primera unidad de NAL de SEI que incluye el primer mensaje de SEI de información de unidad de decodificación y todas las unidades de NAL que siguen a la primera unidad de NAL de SEI hasta una segunda unidad de NLA de SEI que incluye el segundo mensaje de SEI de información de unidad de decodificación están asociadas con la primera unidad de decodificación. Como otro ejemplo, el decodificador de vídeo 30 decodifica el identificador único en un encabezado de sección de una unidad de NAL de sección, y determina con qué unidad de decodificación está asociada la unidad de NAL de sección con base en el identificador único en el encabezado de sección.
El decodificador de vídeo 30 decodifica unidades de NAL con base en la determinación de reconstruir al menos una imagen (210). Por ejemplo, el resultado de decodificar todas las unidades de NAL asociadas con todas las unidades de decodificación puede ser la unidad de acceso decodificada. Como se describió anteriormente, la decodificación de una unidad de acceso da como resultado al menos una imagen (por ejemplo, una imagen cuando no se usa codificación de vídeo de múltiples vistas y múltiples imágenes cuando se usa codificación de vídeo de múltiples vistas).
En algunos ejemplos, el decodificador de vídeo 30 decodifica un primer mensaje de SEI de información de unidad de decodificación que indica información para un tiempo de retiro de una unidad de decodificación. El decodificador de vídeo 30 también decodifica un segundo mensaje de SEI de información de unidad de decodificación que está ubicado entre dos unidades de NAL asociadas con la unidad de decodificación. En este ejemplo, el segundo mensaje de SEI de información de unidad de decodificación es una copia del primer mensaje de SEI de información de unidad de decodificación. En algunos ejemplos, el decodificador de vídeo 30 puede decodificar un mensaje de SEI en la unidad de acceso y decodificar una copia del mensaje de SEI en la unidad de acceso.
La figura 7 es un diagrama de flujo que ilustra un ejemplo de codificación de datos de vídeo de acuerdo con uno o más ejemplos descritos en esta divulgación. Con propósitos de ilustración, las técnicas se describen con respecto a un codificador de vídeo. Ejemplos del codificador de vídeo incluyen el codificador de vídeo 20 y decodificador de vídeo 30. Por ejemplo, cuando se codifica vídeo, el ejemplo del codificador de vídeo es codificador de vídeo 20. Cuando se decodifica vídeo, el ejemplo del codificador de vídeo es decodificador de vídeo 30.
Como se ilustra en la figura 7, un codificador de vídeo está configurado para codificar un mensaje de información de mejora suplementaria (SEI) en una unidad de acceso (212). Como se describió anteriormente, la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen, y el mensaje de SEI define una característica de los datos de vídeo (por ejemplo, características tales como las descritas anteriormente en las Tablas 1 y 5). En algunos ejemplos, el codificador de vídeo puede codificar el mensaje de SEI en la unidad de acceso para una transmisión de multisesión. El codificador de vídeo está configurado para codificar una copia del mensaje de SEI en la unidad de acceso (214). En algunos ejemplos, el codificador de vídeo puede codificar la copia del mensaje de SEI en la unidad de acceso para la transmisión de multisesión.
Por ejemplo, el codificador de vídeo 20 puede incluir el mensaje de SEI antes de una primera unidad de capa de abstracción de red (NAL) de capa de codificación de vídeo (VCL) en orden de decodificación en la unidad de acceso. El codificador de vídeo 20 puede incluir la copia del mensaje de SEI después de la primera unidad de NAL de VCL en orden de decodificación y antes de una última unidad de NAL de VCL en orden de decodificación. En este ejemplo, el codificador de vídeo 20 puede codificar el mensaje de SEI que se incluye antes de la primera unidad de NAL de VCL y codificar la copia del mensaje de SEI que se incluye después de la primera unidad de NAL de VCL y antes de la última unidad de NAL de VCL.
Como otro ejemplo, el decodificador de vídeo 30 puede decodificar una primera unidad de NAL de VCL en orden de decodificación en la unidad de acceso y decodificar una última unidad de NAL de VCL en orden de decodificación en la unidad de acceso. En este ejemplo, el decodificador de vídeo 30 puede decodificar el mensaje de SEI antes de decodificar la primera unidad de NAL de VCL, y decodificar la copia del mensaje de SEI después de decodificar la primera unidad de NAL de VCL y antes de decodificar la última unidad de NAL de VCL.
En algunos ejemplos, el codificador de vídeo puede determinar un tipo del mensaje de SEI. El codificador de vídeo también puede determinar un valor de identificación temporal de la unidad de acceso. El codificador de vídeo puede determinar si se permite una presencia del mensaje de SEI con base en el valor de identificación temporal de la unidad de acceso y el tipo del mensaje de SEI. En estos ejemplos, el codificador de vídeo puede codificar el mensaje de SEI con base en la determinación de si se permite la presencia del mensaje de SEI.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse o transmitirse, como una o más instrucciones o código, en un medio legible por ordenador y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa de ordenador desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento tangibles legibles por ordenador que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa de ordenador puede incluir un medio legible por ordenador.
En aún otros ejemplos, esta divulgación contempla un medio legible por ordenador que comprende una estructura de datos almacenada en el mismo, en donde la estructura de datos incluye comprende flujo de bits codificado que está codificado consistente con esta divulgación.
A modo de ejemplo, y sin limitación, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disquete óptico, almacenamiento en disquete magnético, u otros dispositivos de almacenamiento magnético, memoria flash, o cualquier otro medio que se pueda usar para almacenar código de programa deseado en la forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. También, cualquier conexión se denomina propiamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor, u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea de suscriptor digital (DSL), o tecnologías inalámbricas tales como infrarrojos, radio, y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL, o tecnologías inalámbricas tales como infrarrojos, radio, y microondas se incluyen en la definición de medio. Debe entenderse, sin embargo, que los medios de almacenamiento legibles por ordenador y medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales, u otros medios transitorios, sino que en cambio están dirigidos a medios de almacenamiento no transitorios, tangibles. Disquete y disco, como se usan en este documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete flexible y disco Blu-ray, donde los disquetes usualmente reproducen datos magnéticamente, mientras que los discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior también deben incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSPs), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASICs), arreglos lógicos programables en campo (FPGAs), u otras circuitería lógica integrada o discreta equivalente. Por consiguiente, el término "procesador", como se usa en este documento puede referirse a cualquiera de la estructura anterior o cualquier otra estructura adecuada para la implementación de las técnicas descritas en este documento. Además, en algunos aspectos, la funcionalidad descrita en este documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporados en un códec combinado. También, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, incluyendo un aparato telefónico inalámbrico, un circuito integrado (IC) o un conjunto de ICs (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos, o unidades para enfatizar los aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización mediante diferentes unidades de hardware. Más bien, como se describió anteriormente, se pueden combinar diversas unidades en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, incluyendo uno o más procesadores como se describió anteriormente, en conjunto con software y/o firmware adecuado.

Claims (13)

REIVINDICACIONES
1. Un método de decodificación de datos de vídeo, comprendiendo los datos de vídeo una unidad de acceso, comprendiendo la unidad de acceso una pluralidad de unidades de decodificación, comprendiendo el método:
para cada una de la pluralidad de unidades de decodificación dentro de la unidad de acceso, decodificar (206) a partir de un mensaje de información de mejora suplementaria, SEI, de información de unidad de decodificación que está asociado con la unidad de decodificación y que indica además información para un tiempo de retiro de búfer de imagen codificada, CPB, de la unidad de decodificación, un identificador único para la unidad de decodificación que es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso, en donde cada una de la pluralidad de unidades de decodificación está asociada con una o más unidades de capa de abstracción de red, NAL, en donde el identificador único para cada unidad de decodificación es un índice de la unidad de decodificación en la lista de todas las unidades de decodificación en la unidad de acceso en orden de decodificación, en donde dicha decodificación para cada una de la pluralidad de unidades de decodificación dentro de la unidad de acceso comprende: i) decodificar un primer identificador único a partir de un primer mensaje de SEI de información de unidad de decodificación para una primera unidad de decodificación de la pluralidad de unidades de decodificación, y ii) decodificar un segundo identificador único a partir de un segundo mensaje de SEI de información de unidad de decodificación para una segunda unidad de decodificación de la pluralidad de unidades de decodificación;
determinar (208) qué unidades de NAL están asociadas con qué unidades de decodificación con base en el identificador único para cada unidad de decodificación en la unidad de acceso, en donde dicha determinación comprende determinar que una primera unidad de NAL de SEI que incluye el primer mensaje de SEI de información de unidad de decodificación y todas las unidades de NAL que siguen a la primera unidad de NAL de SEI hasta una segunda unidad de NAL de SEI que incluye el segundo mensaje de SEI de información de unidad de decodificación están asociadas con la primera unidad de decodificación; y
decodificar (210) las unidades de NAL de cada una de las unidades de decodificación en la unidad de acceso, con base en la determinación, para reconstruir al menos una imagen.
2. El método de la reivindicación 1, que comprende además retirar cada unidad de decodificación en la unidad de acceso desde un CPB en un tiempo de retiro de CPB respectivo, el tiempo de retiro de CPB respectivo determinado al menos en parte a partir de la información para un tiempo de retiro de CPB incluido en un mensaje de SEI de información de unidad de decodificación asociado con la unidad de decodificación respectiva.
3. El método de la reivindicación 1, que comprende además:
decodificar un mensaje de SEI de información de unidad de decodificación adicional que está ubicado entre dos unidades de NAL asociadas con la primera unidad de decodificación, en donde el mensaje de SEI de información de unidad de decodificación adicional es una copia del primer mensaje de SEI de información de unidad de decodificación.
4. El método de la reivindicación 1,
en donde, si un valor del primer identificador único es menor que un valor del segundo identificador único, la primera unidad de decodificación precede a la segunda unidad de decodificación en orden de decodificación.
5. Un método para codificar datos de vídeo, comprendiendo los datos de vídeo una unidad de acceso, comprendiendo la unidad de acceso una pluralidad de unidades de decodificación, comprendiendo el método:
determinar (200) un identificador único para cada unidad de decodificación en la unidad de acceso, en donde un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso, en donde cada una de la pluralidad de unidades de decodificación está asociada con una o más unidades de capa de abstracción de red, NAL, y en donde el identificador único para cada unidad de decodificación es un índice de la unidad de decodificación en la lista de todas las unidades de decodificación en la unidad de acceso en orden de decodificación;
determinar (202) qué unidades de NAL están asociadas con qué unidades de decodificación de la unidad de acceso;
generar (204) para emitir un mensaje de información de mejora suplementaria, SEI, de información de unidad de decodificación asociado con cada unidad de decodificación en la unidad de acceso, indicando el mensaje de SEI de unidad de decodificación el identificador único para la unidad de decodificación asociada e indicando además información para un tiempo de retiro de búfer de imagen codificada, CPB, de la unidad de decodificación, en donde dicha generación comprende generar un primer mensaje de SEI de información de unidad de decodificación para una primera unidad de decodificación y generar un segundo mensaje de SEI de información de unidad de decodificación para una segunda unidad de decodificación, incluyendo el primer mensaje de SEI de información de unidad de decodificación un primer identificador único para la primera unidad de decodificación e incluyendo el segundo mensaje de SEI de información de unidad de decodificación un segundo identificador único para la segunda unidad de decodificación;
emitir todas las unidades de NAL que están asociadas con la primera unidad de decodificación después de emitir el primer mensaje de SEI de información de unidad de decodificación; y
después de emitir todas las unidades de NAL que están asociadas con la primera unidad de decodificación, emitir el segundo mensaje de SEI de información de unidad de decodificación.
6. El método de la reivindicación 5 que comprende además:
emitir, como parte de la primera unidad de decodificación, un mensaje de SEI de información de unidad de decodificación adicional, en donde el mensaje de SEI de información de unidad de decodificación adicional es una copia del primer mensaje de SEI de información de unidad de decodificación.
7. El método de la reivindicación 5
en donde, si un valor del primer identificador único es menor que un valor del segundo identificador único, la primera unidad de decodificación precede a la segunda unidad de decodificación en orden de decodificación.
8. Un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo que cuando se ejecutan hacen que uno o más procesadores de un dispositivo para decodificar datos de vídeo o un dispositivo para codificar datos de vídeo lleven a cabo los métodos respectivos de cualquiera de las reivindicaciones 1 a 4 o cualquiera de reivindicaciones 5 a 7.
9. Un dispositivo para decodificar datos de vídeo, comprendiendo los datos de vídeo una unidad de acceso, comprendiendo la unidad de acceso una pluralidad de unidades de decodificación, comprendiendo el dispositivo:
medios para, para cada una de la pluralidad de unidades de decodificación dentro de la unidad de acceso, decodificar desde un mensaje de información de mejora suplementaria, SEI, de información de unidad de decodificación que está asociado con la unidad de decodificación y que además indica información para un tiempo de retiro de búfer de imagen codificada, CPB, de la unidad de decodificación, un identificador único para la unidad de decodificación que es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso, en donde cada una de la pluralidad de unidades de decodificación está asociada con una o más unidades de capa de abstracción de red, NAL, y en donde el identificador único para cada unidad de decodificación es un índice de la unidad de decodificación en la lista de todas las unidades de decodificación en la unidad de acceso en orden de decodificación, en donde dicha decodificación para cada una de la pluralidad de unidades de decodificación dentro de la unidad de acceso comprende: i) decodificar un primer identificador único a partir de un primer mensaje de SEI de información de unidad de decodificación para una primera unidad de decodificación de la pluralidad de unidades de decodificación, y ii) decodificar un segundo identificador único a partir de un segundo mensaje de SEI de información de unidad de decodificación para una segunda unidad de decodificación de la pluralidad de unidades de decodificación;
medios para determinar qué unidades de NAL están asociadas con qué unidades de decodificación con base en el identificador único para cada unidad de decodificación en la unidad de acceso, en donde dicha determinación comprende determinar que una primera unidad de NAL de SEI que incluye el primer mensaje de SEI de información de unidad de decodificación y todas las unidades de NAL que siguen a la primera unidad de NAL de SEI hasta una segunda unidad de NAL de SEI que incluye el segundo mensaje de SEI de información de unidad de decodificación están asociadas con la primera unidad de decodificación; y
medios para decodificar las unidades de NAL de cada una de las unidades de decodificación en la unidad de acceso, con base en la determinación, para reconstruir al menos una imagen.
10. El dispositivo de la reivindicación 9, que comprende además medios para retirar cada unidad de decodificación en la unidad de acceso desde un CPB en un tiempo de retiro de CPB respectivo, el tiempo de retiro de CPB respectivo determinado al menos en parte a partir de la información para un tiempo de retiro de CPB incluido en un mensaje de SEI de información de unidad de decodificación asociado con la unidad de decodificación respectiva.
11. El dispositivo de la reivindicación 9, en donde, si un valor del primer identificador único es menor que un valor del segundo identificador único, la primera unidad de decodificación precede a la segunda unidad de decodificación en orden de decodificación.
12. Un dispositivo para codificar datos de vídeo, comprendiendo los datos de vídeo codificados una unidad de acceso, comprendiendo la unidad de acceso una pluralidad de unidades de decodificación, comprendiendo el dispositivo:
medios para determinar un identificador único para cada unidad de decodificación en la unidad de acceso, en donde un identificador para una unidad de decodificación es diferente de un identificador para cualquier otra unidad de decodificación en la unidad de acceso, en donde cada una de la pluralidad de unidades de decodificación está asociada con una o más unidades de capa de abstracción de red, NAL, y en donde el identificador único para cada unidad de decodificación es un índice de la unidad de decodificación en la lista de todas las unidades de decodificación en la unidad de acceso en orden de decodificación;
medios para determinar qué unidades de capa de acceso a red, NAL, están asociadas con qué unidades de decodificación de la unidad de acceso;
medios para generar para emitir un mensaje de información de mejora suplementaria, SEI, de información de unidad de decodificación asociado con cada unidad de decodificación en la unidad de acceso, indicando el mensaje de SEI de unidad de decodificación el identificador único para la unidad de decodificación asociada e indicando además información para un tiempo de retiro de búfer de imagen codificada, CPB, de la unidad de decodificación, en donde dicha generación comprende generar un primer mensaje de SEI de información de unidad de decodificación para una primera unidad de decodificación y generar un segundo mensaje de SEI de información de unidad de decodificación para una segunda unidad de decodificación, incluyendo el primer mensaje de SEI de información de unidad de decodificación un primer identificador único para la primera unidad de decodificación e incluyendo el segundo mensaje de SEI de información de unidad de decodificación un segundo identificador único para la segunda unidad de decodificación;
medios para emitir todas las unidades de NAL que están asociadas con la primera unidad de decodificación después de emitir el primer mensaje de SEI de información de unidad de decodificación; y
medios para, después de emitir todas las unidades de NAL que están asociadas con la primera unidad de decodificación, emitir el segundo mensaje de SEI de información de unidad de decodificación.
13. El dispositivo de la reivindicación 12,
en donde, si un valor del primer identificador único es menor que un valor del segundo identificador único, la primera unidad de decodificación precede a la segunda unidad de decodificación en orden de decodificación.
ES13759597T 2012-09-28 2013-08-20 Asociación de unidades de decodificación resiliente a errores Active ES2978906T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261707759P 2012-09-28 2012-09-28
US13/926,478 US9565452B2 (en) 2012-09-28 2013-06-25 Error resilient decoding unit association
PCT/US2013/055858 WO2014051892A1 (en) 2012-09-28 2013-08-20 Error resilient decoding unit association

Publications (1)

Publication Number Publication Date
ES2978906T3 true ES2978906T3 (es) 2024-09-23

Family

ID=50385188

Family Applications (2)

Application Number Title Priority Date Filing Date
ES13759055T Active ES2996260T3 (en) 2012-09-28 2013-08-20 Supplemental enhancement information message coding
ES13759597T Active ES2978906T3 (es) 2012-09-28 2013-08-20 Asociación de unidades de decodificación resiliente a errores

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES13759055T Active ES2996260T3 (en) 2012-09-28 2013-08-20 Supplemental enhancement information message coding

Country Status (20)

Country Link
US (2) US9565452B2 (es)
EP (2) EP2901676B1 (es)
JP (2) JP6235026B2 (es)
KR (2) KR101762521B1 (es)
CN (2) CN104685888B (es)
AR (1) AR094447A1 (es)
AU (2) AU2013324245B2 (es)
BR (2) BR112015006849B1 (es)
CA (2) CA2884352C (es)
ES (2) ES2996260T3 (es)
IL (2) IL237771A (es)
MY (2) MY194740A (es)
PH (2) PH12015500509A1 (es)
PL (1) PL2901676T3 (es)
RU (2) RU2628250C2 (es)
SG (2) SG11201501636WA (es)
TW (3) TWI556630B (es)
UA (2) UA114343C2 (es)
WO (2) WO2014051892A1 (es)
ZA (1) ZA201502307B (es)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101912307B1 (ko) 2010-12-08 2018-10-26 엘지전자 주식회사 인트라 예측 방법과 이를 이용한 부호화 장치 및 복호화 장치
WO2013119325A1 (en) * 2012-02-08 2013-08-15 Thomson Licensing Method and apparatus for using an ultra-low delay mode of a hypothetical reference decoder
KR101865014B1 (ko) * 2012-06-25 2018-06-05 닛본 덴끼 가부시끼가이샤 비디오 디코딩 장치, 방법 및 프로그램
US9998764B2 (en) * 2012-07-09 2018-06-12 Vid Scale, Inc. Codec architecture for multiple layer video coding
US9565452B2 (en) 2012-09-28 2017-02-07 Qualcomm Incorporated Error resilient decoding unit association
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
KR101930817B1 (ko) * 2013-07-15 2018-12-19 지이 비디오 컴프레션, 엘엘씨 다계층식 비디오 코딩에서의 저지연 개념
WO2015009693A1 (en) * 2013-07-15 2015-01-22 Sony Corporation Layer based hrd buffer management for scalable hevc
US10178398B2 (en) * 2013-10-11 2019-01-08 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for video transcoding using mode or motion or in-loop filter information
US10264290B2 (en) 2013-10-25 2019-04-16 Microsoft Technology Licensing, Llc Hash-based block matching in video and image coding
US11076171B2 (en) 2013-10-25 2021-07-27 Microsoft Technology Licensing, Llc Representing blocks with hash values in video and image coding and decoding
WO2015131325A1 (en) * 2014-03-04 2015-09-11 Microsoft Technology Licensing, Llc Hash table construction and availability checking for hash-based block matching
EP3114841B1 (en) 2014-03-04 2020-06-10 Microsoft Technology Licensing, LLC Encoder-side decisions for block flipping and skip mode in intra block copy prediction
US10178397B2 (en) * 2014-03-24 2019-01-08 Qualcomm Incorporated Generic use of HEVC SEI messages for multi-layer codecs
US9813719B2 (en) * 2014-06-18 2017-11-07 Qualcomm Incorporated Signaling HRD parameters for bitstream partitions
CN105706450B (zh) * 2014-06-23 2019-07-16 微软技术许可有限责任公司 根据基于散列的块匹配的结果的编码器决定
US9838697B2 (en) 2014-06-25 2017-12-05 Qualcomm Incorporated Multi-layer video coding
JP6462119B2 (ja) 2014-09-30 2019-01-30 マイクロソフト テクノロジー ライセンシング,エルエルシー コンピューティングデバイス
US9800898B2 (en) * 2014-10-06 2017-10-24 Microsoft Technology Licensing, Llc Syntax structures indicating completion of coded regions
US9516147B2 (en) 2014-10-30 2016-12-06 Microsoft Technology Licensing, Llc Single pass/single copy network abstraction layer unit parser
EP3249912A4 (en) * 2015-01-23 2018-10-24 LG Electronics Inc. Method and device for transmitting and receiving broadcast signal for restoring pulled-down signal
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
JP7026450B2 (ja) * 2017-04-24 2022-02-28 ソニーグループ株式会社 送信装置、送信方法、受信装置および受信方法
JP6982990B2 (ja) 2017-06-19 2021-12-17 ソニーグループ株式会社 送信装置、送信方法、受信装置および受信方法
AU2019222715B2 (en) 2018-02-14 2021-09-16 Dolby Laboratories Licensing Corporation Image reshaping in video coding using rate distortion optimization
PT3831064T (pt) * 2018-08-17 2024-05-10 Huawei Tech Co Ltd Gestão de imagens de referência em codificação de vídeo
US11956471B2 (en) 2018-12-20 2024-04-09 Telefonaktiebolaget Lm Ericsson (Publ) Normative indication of recovery point
US11140403B2 (en) * 2018-12-20 2021-10-05 Tencent America LLC Identifying tile from network abstraction unit header
US12113997B2 (en) * 2019-01-22 2024-10-08 Tencent America LLC Method for tile group identification
CN109905715B (zh) * 2019-02-26 2021-07-06 北京世纪好未来教育科技有限公司 插入sei数据的码流转换方法及系统
EP4026096A4 (en) 2019-09-24 2023-02-08 Huawei Technologies Co., Ltd. SIGNALING AN IMAGE HEAD IN VIDEO ENCODING
US11395007B2 (en) * 2019-12-12 2022-07-19 Tencent America LLC Method for signaling dependent and independent picture header
JP7425204B2 (ja) 2019-12-26 2024-01-30 バイトダンス インコーポレイテッド ビデオビットストリームにおける仮想参照デコーダパラメータのシグナリングに対する制約
JP7431330B2 (ja) 2019-12-26 2024-02-14 バイトダンス インコーポレイテッド ビデオコーディングにおけるプロファイル、層及びレイヤの指示
WO2021134047A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Profile tier level parameter set in video coding
JP7422881B2 (ja) 2019-12-27 2024-01-26 バイトダンス インコーポレイテッド パラメータセットにおけるサブピクチャシグナリング
KR20220100711A (ko) * 2020-01-02 2022-07-15 엘지전자 주식회사 영상 디코딩 방법 및 그 장치
KR20220100063A (ko) 2020-01-02 2022-07-14 엘지전자 주식회사 Ph nal 유닛 코딩 관련 영상 디코딩 방법 및 그 장치
JP7536876B2 (ja) * 2020-01-02 2024-08-20 エルジー エレクトロニクス インコーポレイティド ピクチャヘッダを含む映像情報をコーディングする映像デコーディング方法及びその装置
CN114930837B (zh) * 2020-01-04 2025-09-23 字节跳动有限公司 对子图片的帧间预测的限制
WO2021142364A1 (en) 2020-01-09 2021-07-15 Bytedance Inc. Signalling of high level syntax indication
WO2021193775A1 (ja) * 2020-03-27 2021-09-30 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
US11706428B2 (en) * 2020-04-06 2023-07-18 Tencent America LLC Method for signaling picture header in coded video stream
JP7511680B2 (ja) * 2020-06-09 2024-07-05 バイトダンス インコーポレイテッド サブピクチャサブビットストリーム抽出プロセスにおける補足エンハンスメント情報の処理
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks
US11770498B2 (en) 2020-09-29 2023-09-26 Lemon Inc. Supplemental enhancement information for multi-layer video streams
US11930222B1 (en) * 2021-03-30 2024-03-12 Amazon Technologies, Inc. Encoding video for film grain synthesis
US12513337B2 (en) * 2021-04-12 2025-12-30 Telefonaktiebolaget Lm Ericsson (Publ) Message referencing
US12542929B2 (en) 2021-06-29 2026-02-03 Dolby Laboratories Licensing Corporation Signaling of priority processing order for metadata messaging in video coding
CN114745600B (zh) * 2022-06-10 2022-09-27 中国传媒大学 一种基于sei的视频标签标注方法及装置
AU2023381356A1 (en) * 2022-11-17 2025-06-26 Lg Electronics Inc. Method for encoding/decoding image, method for transmitting bitstream, and recording medium storing bitstream
US20250119587A1 (en) * 2023-10-05 2025-04-10 Tencent America LLC Ai text for video streams
WO2025226607A1 (en) * 2024-04-21 2025-10-30 Bytedance Inc. Handling of a processing chain indicated by an sei processing order sei message

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2382940A (en) * 2001-11-27 2003-06-11 Nokia Corp Encoding objects and background blocks
US7831990B2 (en) * 2002-04-29 2010-11-09 Sony Corporation Generic adaptation layer for JVT video
US20050201471A1 (en) * 2004-02-13 2005-09-15 Nokia Corporation Picture decoding method
US7586924B2 (en) 2004-02-27 2009-09-08 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream
EP1773063A1 (en) 2005-06-14 2007-04-11 Thomson Licensing Method and apparatus for encoding video data, and method and apparatus for decoding video data
US20070230564A1 (en) 2006-03-29 2007-10-04 Qualcomm Incorporated Video processing with scalability
RU2395174C1 (ru) * 2006-03-30 2010-07-20 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ и устройство для декодирования/кодирования сигнала видео
US8520733B2 (en) 2006-06-30 2013-08-27 Core Wireless Licensing S.A.R.L Video coding
US8582663B2 (en) * 2006-08-08 2013-11-12 Core Wireless Licensing S.A.R.L. Method, device, and system for multiplexing of video streams
CN101502096B (zh) * 2006-08-10 2013-06-26 佳能株式会社 图像解码设备
AU2008204833A1 (en) * 2007-01-09 2008-07-17 Vidyo, Inc. Improved systems and methods for error resilience in video communication systems
CA2675955C (en) * 2007-01-18 2013-07-23 Nokia Corporation Carriage of sei messages in rtp payload format
RU2432703C2 (ru) * 2007-04-17 2011-10-27 Нокиа Корпорейшн Масштабируемое видеокодирование с обратной связью
US20080291999A1 (en) 2007-05-24 2008-11-27 Julien Lerouge Method and apparatus for video frame marking
US8855199B2 (en) * 2008-04-21 2014-10-07 Nokia Corporation Method and device for video coding and decoding
US20110110436A1 (en) 2008-04-25 2011-05-12 Thomas Schierl Flexible Sub-Stream Referencing Within a Transport Data Stream
KR101242472B1 (ko) * 2008-07-16 2013-03-12 노키아 코포레이션 트랙 및 트랙 서브세트의 그룹화를 위한 방법 및 장치
TWI371214B (en) 2008-12-03 2012-08-21 Himax Media Solutions Inc Decoding testing device and decoding testing method
WO2012057164A1 (ja) * 2010-10-25 2012-05-03 パナソニック株式会社 符号化方法、表示装置、復号方法
PL4250733T3 (pl) * 2011-01-14 2025-03-17 Sun Patent Trust Kodowanie oraz dekodowanie obrazów
AU2012226283B2 (en) * 2011-03-10 2016-09-15 Vidyo, Inc. Render-orientation information in video bitstream
US20120236115A1 (en) 2011-03-14 2012-09-20 Qualcomm Incorporated Post-filtering in full resolution frame-compatible stereoscopic video coding
TWI558182B (zh) * 2012-06-29 2016-11-11 Ge影像壓縮有限公司 視訊資料串流槪念技術
US9565452B2 (en) 2012-09-28 2017-02-07 Qualcomm Incorporated Error resilient decoding unit association

Also Published As

Publication number Publication date
EP2901676A1 (en) 2015-08-05
ES2996260T3 (en) 2025-02-12
HK1207927A1 (en) 2016-02-12
TW201611583A (zh) 2016-03-16
EP2901678C0 (en) 2024-05-15
PH12015500509B1 (en) 2015-04-27
JP2015534773A (ja) 2015-12-03
PL2901676T3 (pl) 2025-02-10
TWI556630B (zh) 2016-11-01
JP6235026B2 (ja) 2017-11-22
IL237770B (en) 2019-08-29
MY194740A (en) 2022-12-15
EP2901678B1 (en) 2024-05-15
KR101741342B1 (ko) 2017-05-29
CA2884560A1 (en) 2014-04-03
RU2015115896A (ru) 2016-11-20
US9565452B2 (en) 2017-02-07
HK1208580A1 (en) 2016-03-04
JP6125643B2 (ja) 2017-05-10
WO2014051892A1 (en) 2014-04-03
AU2013324245A1 (en) 2015-04-16
IL237770A0 (en) 2015-05-31
RU2015115894A (ru) 2016-11-20
MY173902A (en) 2020-02-26
PH12015500645A1 (en) 2015-05-11
TWI569633B (zh) 2017-02-01
CN104685888B (zh) 2018-02-06
BR112015006849A2 (pt) 2017-07-04
UA114343C2 (uk) 2017-05-25
AU2013324246B2 (en) 2017-09-14
AU2013324245B2 (en) 2017-08-10
RU2628250C2 (ru) 2017-08-15
KR20150063116A (ko) 2015-06-08
BR112015006849B1 (pt) 2022-08-02
SG11201501636WA (en) 2015-05-28
US20140092994A1 (en) 2014-04-03
US20140092993A1 (en) 2014-04-03
WO2014051893A1 (en) 2014-04-03
PH12015500645B1 (en) 2015-05-11
CA2884352A1 (en) 2014-04-03
UA117355C2 (uk) 2018-07-25
AU2013324246A1 (en) 2015-04-16
CA2884560C (en) 2019-05-14
AR094447A1 (es) 2015-08-05
US9479782B2 (en) 2016-10-25
RU2618942C2 (ru) 2017-05-11
KR20150063117A (ko) 2015-06-08
ZA201502307B (en) 2017-05-31
JP2015534774A (ja) 2015-12-03
CA2884352C (en) 2019-01-08
CN104704841A (zh) 2015-06-10
IL237771A (en) 2017-09-28
PH12015500509A1 (en) 2015-04-27
BR112015006856A2 (pt) 2017-07-04
EP2901676C0 (en) 2024-11-13
KR101762521B1 (ko) 2017-07-27
EP2901678A1 (en) 2015-08-05
CN104685888A (zh) 2015-06-03
CN104704841B (zh) 2018-10-26
SG11201501632SA (en) 2015-05-28
TW201424391A (zh) 2014-06-16
EP2901676B1 (en) 2024-11-13
BR112015006856B1 (pt) 2022-08-09
TW201424404A (zh) 2014-06-16

Similar Documents

Publication Publication Date Title
ES2978906T3 (es) Asociación de unidades de decodificación resiliente a errores
ES2777214T3 (es) Refresco gradual de descodificación con soporte de adaptabilidad temporal a escala en la codificación de vídeo
ES2884723T3 (es) Señalización de regiones de interés y actualización de decodificación gradual en la codificación de video
ES2701786T3 (es) Procesamiento de memoria intermedia de imágenes descodificadas para imágenes de punto de acceso aleatorio en secuencias de vídeo
ES2748561T3 (es) Unidades de acceso IRAP y conmutación y empalme de flujos de bits
ES2698554T3 (es) Acceso aleatorio con gestión avanzada de memoria intermedia de imágenes codificadas en codificación de vídeo
ES2897708T3 (es) Modelado de contexto eficiente en memoria
ES2780688T3 (es) Señalización para operaciones DPB basadas en un búfer de imágenes subdescodificadas (sub-DPB) en la codificación de vídeo
ES2684546T3 (es) Codificación de vídeo con comportamientos de imagen de punto de acceso aleatorio mejorados
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
ES2856099T3 (es) Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo
ES2703342T3 (es) Selección de imagen de referencia
KR20160034321A (ko) 인트라 랜덤 액세스 포인트 픽처들의 개선된 교차-계층 정렬
HK1208580B (zh) 编码和解码视频数据的方法和装置及计算机可读存储介质