ES2996260T3 - Supplemental enhancement information message coding - Google Patents
Supplemental enhancement information message coding Download PDFInfo
- Publication number
- ES2996260T3 ES2996260T3 ES13759055T ES13759055T ES2996260T3 ES 2996260 T3 ES2996260 T3 ES 2996260T3 ES 13759055 T ES13759055 T ES 13759055T ES 13759055 T ES13759055 T ES 13759055T ES 2996260 T3 ES2996260 T3 ES 2996260T3
- Authority
- ES
- Spain
- Prior art keywords
- sei message
- unit
- decoding
- sei
- video
- 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
Links
- 230000000153 supplemental effect Effects 0.000 title claims description 16
- 238000000034 method Methods 0.000 claims abstract description 123
- 238000003860 storage Methods 0.000 claims description 25
- 230000005540 biological transmission Effects 0.000 claims description 23
- 230000000750 progressive effect Effects 0.000 claims 8
- 238000013507 mapping Methods 0.000 claims 4
- 238000012856 packing Methods 0.000 claims 4
- 238000011084 recovery Methods 0.000 claims 4
- 230000011664 signaling Effects 0.000 abstract description 11
- 238000012545 processing Methods 0.000 description 59
- 239000010410 layer Substances 0.000 description 34
- 239000013598 vector Substances 0.000 description 28
- 238000013139 quantization Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 21
- 230000009466 transformation Effects 0.000 description 21
- 238000004891 communication Methods 0.000 description 15
- 230000006835 compression Effects 0.000 description 13
- 238000007906 compression Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- FMYKJLXRRQTBOR-UBFHEZILSA-N (2s)-2-acetamido-4-methyl-n-[4-methyl-1-oxo-1-[[(2s)-1-oxohexan-2-yl]amino]pentan-2-yl]pentanamide Chemical group CCCC[C@@H](C=O)NC(=O)C(CC(C)C)NC(=O)[C@H](CC(C)C)NC(C)=O FMYKJLXRRQTBOR-UBFHEZILSA-N 0.000 description 11
- 238000000638 solvent extraction Methods 0.000 description 10
- 230000003139 buffering effect Effects 0.000 description 9
- 230000002123 temporal effect Effects 0.000 description 9
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 241000238876 Acari Species 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000009469 supplementation Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/188—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/65—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods 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/895—Methods 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)
- Detection And Prevention Of Errors In Transmission (AREA)
- Error Detection And Correction (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
Codificación de mensaje de información de mejora suplementaria
Campo técnico
Esta divulgación se refiere generalmente al procesamiento de datos de vídeo y, más particularmente, a las técnicas aplicables a uno o más estándares de codificación de vídeo.
Antecedentes
Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluidos televisores digitales, sistemas de transmisión directa digital, sistemas de transmisión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, tabletas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos celulares o satelitales, los llamados "teléfonos inteligentes", dispositivos de videoteleconferencia, dispositivos de transmisión 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, 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 en desarrollo, estándares propietarios, formatos de compresión de vídeo abiertos como VP8 y extensiones de dichos 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 mediante la implementación de dichas técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicciones espaciales (imagen intra) y/o temporales (imagen inter) para reducir o eliminar la redundancia inherente a las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un segmento de vídeo (es decir, un fotograma de vídeo o una porción de un fotograma de vídeo) se puede particionar en bloques de vídeo, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un segmento intracodificado (I) de una imagen se codifican mediante predicción espacial con respecto a las muestras de referencia en bloques vecinos de la misma imagen. Los bloques de vídeo en un segmento intercodificado (P o B) de una imagen pueden utilizar la predicción espacial con respecto a las muestras de referencia en bloques vecinos de la misma imagen o la predicción temporal con respecto a las muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse fotogramas y las imágenes de referencia pueden denominarse fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para que se codifique un bloque. Los datos residuales representan las diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de codificación intra y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar del dominio de píxeles a un dominio de transformación, lo que da como resultado coeficientes de transformación residuales, que luego pueden ser cuantizados. Los coeficientes de transformación cuantizados, inicialmente dispuestos en una matriz bidimensional, se pueden escanear para producir un vector unidimensional de coeficientes de transformación, y se puede aplicar codificación de 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 (10th JCT-VC meeting; 101st MPEG meeting; 11-7-2012 - 20-7-2012; Stockholm; document no. JCTVC-J0255), se propone aplicar mensajes SEI, así como elementos de sintaxis de alto nivel adicionales, más allá de los incluidos en el encabezado de la unidad NAL, a nivel de cada segmento. Se describe una unidad NAL de prefijo de segmento. Se describen la sintaxis y la semántica de los mensajes SEI de prefijo de segmento y nivel de segmento/subimagen, así como casos de uso para operaciones CPB de bajo retardo/subimagen, señalización de mosaicos y señalización de región de interés.
En el documento titulado "Signaling of Timestamps" of Hannuksela (3rd JVT meeting; 60th MPEG meeting; 06 05-2002 - 10-05-2002; Fairfax, US; document no. JVT-C070), existe una propuesta sobre los procesos de imagen de referencia en HEVC. Se propone que las imágenes que deberían estar disponibles como referencia se describan de manera absoluta en el encabezado del segmento de una imagen en lugar de hacerlo de manera relativa (a través del MMCO y el proceso de ventana deslizante). Se propone además que las operaciones de búfer (marcado de imágenes) se realicen directamente después del análisis sintáctico del primer encabezado de segmento de una imagen en lugar de después de que la imagen haya sido decodificada, y que un mensaje SEI de marca de tiempo se pueda repetir con propósitos de resistencia a errores. El documento reivindica que los cambios propuestos mejoran la resistencia a errores, simplifican la escalabilidad temporal y permiten la decodificación en un número mínimo de intervalos de búfer de imagen decodificadas.
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 forma única cada una de las unidades de decodificación dentro de la unidad de acceso. En algunos ejemplos, las técnicas permiten incrustar una o más copias de un mensaje dentro de la unidad de acceso.
La invención está definida por las reivindicaciones independientes. Las características de algunas realizaciones se citan en las reivindicaciones dependientes.
La FIG. 7 ilustra un ejemplo de acuerdo con la invención.
Esta realización también incluye materia objeto que, por sí misma, no incluye todas las características de las reivindicaciones independientes, pero puede ayudar al lector a comprender o implementar la invención. Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la descripción a continuación. Otras características, objetos y ventajas serán evidentes en la descripción y los dibujos, y en las reivindicaciones.
Breve descripción de los dibujos
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y decodificación de vídeo que puede utilizar las técnicas descritas en esta divulgación.
Las FIG. 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 FIG. 3 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de decodificador de vídeo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 5 es un diagrama de flujo que ilustra un ejemplo de codificación de datos de vídeo.
La FIG. 6 es un diagrama de flujo que ilustra un ejemplo de decodificación de datos de vídeo.
La FIG. 7 es un diagrama de flujo que ilustra un ejemplo de codificación de datos de vídeo de acuerdo con la invención.
Descripción detallada
Esta divulgación describe diversos métodos para la señalización y asociación de unidades de decodificación resistentes a errores en la codificación de vídeo. En la codificación multivista o la 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 se codifican 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 utiliza la codificación multivista o una pluralidad de imágenes de la misma instancia de tiempo para la codificación multivista. 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 nivel de subimagen, 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. Dado que una unidad de acceso incluye datos de vídeo para una o más imágenes, la operación a nivel de la unidad de decodificación puede considerarse como una operación a nivel de sub-Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la descripción a continuación. Otras características, objetos y ventajas serán evidentes en la descripción y los dibujos, y en las reivindicaciones.
Breve descripción de los dibujos
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y decodificación de vídeo que puede utilizar las técnicas descritas en esta divulgación.
Las FIG. 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 FIG. 3 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de decodificador de vídeo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 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 FIG. 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 FIG. 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 resistentes a errores en la codificación de vídeo. En la codificación multivista o la 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 se codifican 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 utiliza la codificación multivista o una pluralidad de imágenes de la misma instancia de tiempo para la codificación multivista.
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 nivel de subimagen, 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. Dado que una unidad de acceso incluye datos de vídeo para una o más imágenes, la operación en el nivel de la unidad de decodificación puede considerarse como una operación en un nivel de subimagen. Si no se permite la operación a nivel de subimagen, 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 NAL de capa de codificación de vídeo (VCL) y las unidades NAL no VCL asociadas. Un ejemplo de una unidad NAL es un fragmento de una imagen (es decir, los datos encapsulados en la unidad NAL incluyen los datos de vídeo necesarios para decodificar un segmento de una imagen). Otro ejemplo de una unidad NAL es un conjunto de parámetros. Por ejemplo, una unidad 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 otro ejemplo, una unidad NAL puede incluir información adicional, como mensajes de información de mejora suplementaria (SEI) que se utilizan con el fin de determinar los tiempos de procesamiento y eliminación de las unidades de decodificación de 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 emisión (por ejemplo, señales), en un flujo de bits codificado, un identificador para cada unidad de decodificación dentro de la unidad de acceso. Cada identificador (denominados identificadores DU) identifica de forma única una unidad de decodificación dentro de la unidad de acceso. El decodificador de vídeo recibe, desde el flujo de bits codificado, los identificadores de las unidades de decodificación dentro de la unidad de acceso. El decodificador de vídeo determina qué unidades NAL están asociadas a qué unidades de decodificación basado en los identificadores de unidades de decodificación.
De esta manera, las técnicas descritas en esta divulgación pueden asegurar que las unidades 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 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 NAL con las unidades de decodificación basado en el orden en que el decodificador de vídeo recibió las unidades NAL y la información señalizada que indica el número de unidades NAL que incluye cada unidad de decodificación.
Sin embargo, en este caso, asegurarse de que las unidades NAL estén asociadas con las unidades de decodificación correctas no es resistente a errores. Por ejemplo, si una unidad NAL se pierde durante la transmisión (por ejemplo, del codificador de vídeo al decodificador de vídeo, del codificador de vídeo a un dispositivo de almacenamiento intermedio o del dispositivo de almacenamiento intermedio al decodificador de vídeo), el decodificador de vídeo puede no ser capaz de determinar qué unidades NAL están asociadas a qué unidades de decodificación.
Como otro ejemplo de los posibles problemas para garantizar que las unidades NAL estén asociadas con las unidades de decodificación correctas, puede ser posible que el codificador de vídeo señale las unidades 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 mensaje de información de mejora suplementaria (SEI), seguida de una o más unidades NAL para una primera unidad de decodificación, seguida de una segunda instancia del tipo particular de mensaje SEI, seguida de una o más unidades NAL de una segunda unidad de decodificación, y así sucesivamente. El decodificador de vídeo puede determinar que cada unidad NAL recibida después de la primera instancia de este tipo de mensaje SEI y antes de la segunda instancia de este tipo de mensaje SEI se asocie con la primera unidad de decodificación, cada unidad NAL recibida después de la segunda instancia de este tipo de mensaje SEI y antes de la tercera instancia de este tipo de mensaje SEI se asocie con la segunda unidad de decodificación, y así sucesivamente.
Este tipo de mensaje SEI puede incluir información adicional pertinente a la sincronización adecuada de la codificación y decodificación. Sin embargo, debido a que las posiciones de este tipo de mensajes SEI indican qué unidades NAL están asociadas con qué unidades de decodificación, puede no ser posible que el codificador de vídeo incluya múltiples copias de este tipo de mensaje SEI dentro de la unidad de decodificación. Por lo tanto, incluso si uno de estos mensajes SEI se pierde en la transmisión, el decodificador de vídeo puede no ser capaz de determinar qué unidades NAL están asociadas con qué unidades de decodificación, y puede no ser capaz de determinar la información adicional transportada por el mensaje SEI perdido.
En las técnicas descritas en esta divulgación, el codificador de vídeo puede generar para salida e información de salida (por ejemplo, con identificadores de unidad de decodificación en un mensaje SEI o encabezado de segmento) que indica qué unidades NAL están asociadas con qué unidades de decodificación. De esta manera, incluso si una unidad NAL se pierde en la transmisión, el decodificador de vídeo puede ser capaz de determinar qué unidades NAL están asociadas con qué unidades de decodificación. Además, dado que el decodificador de vídeo puede no necesitar depender de las posiciones de los mensajes SEI para determinar qué unidades NAL están asociadas a qué unidades de decodificación, el codificador de vídeo puede generar para salida y emisión una o más copias del mensaje SEI en la unidad de decodificación. Dichas técnicas pueden proporcionar una manera comparativamente más resistente a los errores en la que el decodificador de vídeo determina qué unidades 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 la repetición de mensajes SEI de cierto tipo (un problema que las técnicas descritas en esta divulgación pueden abordar). En algunos casos, en estas otras técnicas, no sólo se prohíbe la repetición de ciertos tipos de mensajes SEI, sino que se restringe la repetición de los mensajes SEI en general en la unidad de acceso después de la primera unidad NAL VCL de la unidad de acceso y antes de la última unidad NAL de 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 basado en la ubicación de los mensajes SEI. Por ejemplo, los mensajes SEI se ubicarían al comienzo de la unidad de acceso, y después de determinar que el decodificador de vídeo está procesando un mensaje SEI, el decodificador de vídeo determinaría que el decodificador de vídeo está procesando una nueva unidad de acceso. En consecuencia, existe una restricción de incluir múltiples copias de mensajes SEI dentro de la misma unidad de acceso.
En un entorno propenso a errores, puede ser beneficioso incluir copias de los mensajes SEI para que, si el mensaje SEI se pierde, estén disponibles otras copias del mensaje SEI. En algunos ejemplos, las técnicas permiten que se repitan diversos tipos de mensajes SEI dentro de la unidad de acceso, lo que permite aún más la resistencia a errores. A modo de ejemplo, las técnicas pueden especificar lo siguiente para todos los mensajes SEI: (1) un alcance de solicitud al que se aplica la información transportada en un mensaje SEI; (2) donde puede estar presente un mensaje SEI; y (3) una restricción en el contenido de múltiples instancias de un tipo particular de mensaje 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 incluye normalmente una o más unidades NAL, pero en algunos casos, un paquete puede incluir un subconjunto de una unidad NAL. En un entorno propenso a errores, se pueden perder uno o más paquetes, y si los paquetes perdidos incluían un mensaje SEI, el mensaje SEI puede perderse. En las técnicas descritas en esta divulgación, el codificador de vídeo puede generar para salida y emisión (por ejemplo, señal) una o más copias del mensaje SEI en la unidad de acceso. De esta manera, incluso si se pierde un paquete que incluye uno de los mensajes SEI, el mensaje SEI puede seguir estando disponible como copia en un paquete que no se pierda.
Como otro ejemplo, el codificador de vídeo puede codificar un flujo de bits de vídeo con múltiples capas, 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 que no son base. Una capa no base puede ser una capa de mejora espacial o de calidad, la textura de una vista diferente, la profundidad de una vista diferente y otros dichos ejemplos. El codificador de vídeo puede transportar las diferentes capas en diferentes canales (por ejemplo, utilizando la transmisión 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 NAL SEI dentro de dos unidades NALU VCL dentro de la unidad de acceso, donde la unidad NAL SEI incluye los mensajes SEI, y después de la primera unidad NAL VCL de la unidad de acceso. En otras palabras, las técnicas descritas en esta divulgación para incluir el mensaje SEI después de la primera unidad NAL VCL en una unidad de acceso también son aplicables a ejemplos de transmisión 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 SEI para determinar que el decodificador de vídeo está procesando una nueva unidad de acceso. Por ejemplo, el decodificador de vídeo puede estar basado en otra información de cabecera para determinar que se está procesando una nueva unidad de acceso. En consecuencia, en las técnicas descritas en esta divulgación, el codificador de vídeo puede generar para salida y emisión un mensaje SEI en la unidad de acceso y una o más copias del mensaje SEI en la unidad de acceso, y el decodificador de vídeo puede recibir el mensaje SEI y una o más copias del mensaje SEI. Dado que el decodificador de vídeo no necesita depender del mensaje SEI para determinar cuándo se está procesando una nueva unidad de acceso, el decodificador de vídeo puede configurarse para procesar múltiples copias de mensajes SEI dentro de la misma unidad de acceso sin determinar que se está procesando una nueva unidad de acceso diferente.
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo del sistema de codificación y decodificación de vídeo 10 que puede utilizar las técnicas descritas en esta divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo fuente 12 que genera datos de vídeo codificados para ser decodificados posteriormente por un dispositivo de destino 14. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluidos ordenadores de escritorio, notebooks (es decir, laptops), tabletas, decodificadores, teléfonos como los llamados teléfonos "inteligentes", las llamadas tabletas "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo o similares. En algunos casos, el dispositivo fuente 12 y el dispositivo destino 14 pueden estar equipados para la comunicación inalámbrica.
El dispositivo de destino 14 puede recibir los datos de vídeo codificados para 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 hasta el dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo fuente 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, 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ámbrico o cableado, 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, como una red de área local, una red de área amplia o una red global como Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
Alternativamente, los datos codificados pueden emitirse desde la interfaz de salida 22 a un dispositivo de almacenamiento 32. Del mismo modo, 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, como un disco duro, discos Blu-ray, DVD, CD-ROM, 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 otro ejemplo, 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 emisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectado a la red (NAS) o una unidad de disco 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, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión por cable (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 32 puede ser una transmisión en emisión continua, 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 pueden aplicarse a la codificación de vídeo en soporte de cualquiera de una variedad de aplicaciones multimedia, como las transmisiones de televisión por aire, las transmisiones de televisión por cable, las transmisiones de televisión por satélite, las transmisiones de vídeo en emisión continua, por ejemplo, a través de Internet, la codificación de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, la 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 la transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones como vídeo en emisión continua, la reproducción de vídeo, la transmisión de vídeo y/o la telefonía de vídeo.
En el ejemplo de La FIG. 1, el dispositivo fuente 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/demodulador (módem) y/o un transmisor. En el dispositivo fuente 12, la fuente de vídeo 18 puede incluir una fuente 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 anteriormente, una interfaz de alimentación de vídeo para recibir vídeo de 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 vídeo de origen, o una combinación de dichas fuentes. Por ejemplo, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo fuente 12 y el dispositivo de destino 14 pueden formar los llamados 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, pregrabado o generado por ordenador puede ser codificado por 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 fuente 12. Los datos de vídeo codificados también pueden (o alternativamente) almacenarse en el dispositivo de almacenamiento 32 para su posterior acceso por el dispositivo de destino 14 u otros dispositivos, para su 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 su uso por un decodificador de vídeo, como el decodificador de vídeo 30, para decodificar los datos de vídeo. Estos elementos de sintaxis pueden incluirse con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenarse en un medio de almacenamiento o almacenarse en un servidor de archivos.
El dispositivo de visualización 31 puede estar integrado con el dispositivo de destino 14 o ser externo a él. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también configurarse para interactuar 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, como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánica (OLED) u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden formarse como microprocesadores individuales o circuitos integrados (IC) o pueden formar parte de microprocesadores o IC más grandes. En algunos ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden formar parte de un dispositivo de comunicación inalámbrica.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con una estándar de compresión de vídeo. Ejemplos de 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 e ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC), incluidas sus extensiones de codificación de vídeo escalable (SVC) y codificación de vídeo multivista (MVC).
Además, existe un nuevo estándar de codificación de vídeo de acuerdo con la que pueden operar el codificador de vídeo 20 y el decodificador de vídeo 30, de acuerdo con el estándar de codificación de vídeo de alta eficiencia (HEVC) que está elaborando el Equipo Mixto de Colaboración en Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) del ITU-T y el Grupo de Expertos en Películas Cinematográficas (MPEG) de la ISO/IEC. El codificador de vídeo 20 y el decodificador de vídeo 30 pueden ajustarse al modelo de prueba HEVC (HM). Un borrador reciente del estándar HEVC, denominado "HEVC Working Draft 8" o "WD8", se describe en el documento JCTVC-H1003, Bross et al., "High efficiency video coding (HEVC) text specification draft 8," Joint Collaborative Team on Video Coding (JCTVC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 10th Meeting: Stockholm, SE, July 11-20, 2012, que, a partir del 2 de abril de 2013, se puede descargar desde http://phenix.intevry.fr/jct/doc_end_user/documents/10_Stockholm/wgll/JCTVCJ1003-v8.zip. Un borrador de trabajo más reciente de HEVC, y denominado "HEVC Working Draft 9" o "WD9" en adelante, está disponible, a partir del 2 de abril de 2013, en http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg 11 /JCTVCK1003 -v 10 .zip.
Alternativamente, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con otros estándares propietarios o de la industria, como el estándar ITU-T H.264, denominado alternativamente MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), o extensiones de dichos estándares. Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación en particular. Otros ejemplos de estándares de compresión de vídeo incluyen MPEG-2 e ITU-T H.263, así como formatos abiertos como VP8.
Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación en particular. Por ejemplo, el codificador de vídeo 20 y el decodificador de vídeo 30 no tienen por qué ajustarse necesariamente a ningún estándar de codificación de vídeo en particular. Además, incluso si las técnicas descritas en esta divulgación pueden no ajustarse necesariamente a un estándar en particular, las técnicas descritas en esta divulgación pueden ayudar aún más a la eficiencia de la codificación en relación con los diversos estándares. Además, las técnicas descritas en esta divulgación pueden formar parte de estándares futuros. Para facilitar la comprensión, las técnicas se describen con respecto al estándar HEVC en desarrollo, pero las técnicas no se limitan al estándar 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 FIG. 1, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar integrados con un codificador y un decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro hardware y software, para manejar la codificación de audio y vídeo en un flujo de datos común o en flujos de datos separados. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexor H.223 de la ITU u otros protocolos tales como el protocolo de datagramas de usuario (UDP).
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse como cualquiera de una variedad de circuitos de codificador adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicaciones específicas (ASIC), matrices de puertas programables en campo (FPGA), 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 el software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento adecuado, no transitorio y legible por ordenador y ejecutar las instrucciones en hardware utilizando uno o más procesadores para realizar las técnicas de esta divulgación. En otras palabras, cuando se implementa parcialmente en el software, el software se ejecuta en componentes de hardware subyacentes que ocasionan que los componentes de hardware implementen ciertas funciones. Cada uno de los codificadores de vídeo 20 y decodificadores de vídeo 30 puede estar incluido en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador combinado (CODEC) en un dispositivo respectivo.
Por ejemplo, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden incluirse en un dispositivo inalámbrico como el dispositivo de origen 12 y el dispositivo de destino 14, respectivamente. Como otro ejemplo, un dispositivo puede incluir un microprocesador o un circuito integrado. En algunos ejemplos, un dispositivo, como el microprocesador o el circuito integrado, puede incluir un decodificador de vídeo 30, y otro dispositivo puede incluir un codificador de vídeo 20.
El JCT-VC está trabajando en el desarrollo del estándar HEVC. Los esfuerzos de estandarización de HEVC basados en un modelo en evolución de un dispositivo de codificación de vídeo denominado como el Modelo de Prueba HEVC (HM). El HM presume 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 fotograma o imagen de vídeo puede dividirse en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU) que incluyen muestras de luminancia y croma. Un bloque de árbol puede servir para algunos propósitos similares a un macrobloque del estándar H.264, aunque un bloque de árbol tiene muchas diferencias en relación con un macrobloque. Un segmento incluye un número de bloques de árbol consecutivos en orden de codificación. Un fotograma de vídeo o una imagen se pueden particionar en uno o más segmentos. Cada bloque de árbol se puede dividir en unidades de codificación (CU) de acuerdo con un árbol cuaternario. Por ejemplo, un bloque de árbol, como nodo raíz del árbol cuaternario, puede dividirse en cuatro nodos hijos, y cada nodo hijo puede ser a su vez un nodo padre y dividirse en otros cuatro nodos hijos. Un nodo hijo final no dividido, como un nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos 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 (PU) y unidades de transformación (TU) asociadas con el nodo de codificación. Un tamaño de CU corresponde a un tamaño del nodo de codificación y debe tener forma cuadrada. El tamaño de la CU puede oscilar entre 8x8 píxeles hasta el tamaño del bloque de árbol con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos de sintaxis asociados a una CU pueden describir, por ejemplo, la partición de la CU en una o varias PU. Los modos de partición pueden diferir entre, si la CU está codificada en modo de omisión o en modo directo, codificada en modo de intrapredicción o codificada en modo de interpredicción. Las PU se pueden particionar para que no tengan forma cuadrada. 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 TU de acuerdo con un árbol cuaternario. Una TU puede tener forma cuadrada o no cuadrada.
El estándar HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. Normalmente, el tamaño de las TU está basado en el tamaño de las PU dentro de una CU dada definida para una LCU particionada, aunque no siempre es así. Las TU son normalmente del mismo tamaño o más pequeñas que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas utilizando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformación (TU). Los valores de diferencia de píxeles asociados con las TU se pueden transformar para producir coeficientes de transformación, que pueden ser cuantizados.
En general, una PU incluye datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU está codificada en modo intra (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 modo inter (es decir, codificada en 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, una precisión de un cuarto de píxel o una precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, RefPiclList0 o RefPicList1) para el vector de movimiento.
En general, se utiliza una TU para los procesos de transformación y cuantización. Una CU dada que tiene una o más PU también puede incluir una o más unidades de transformación (TU). Tras la predicción, el codificador de vídeo 20 puede calcular los valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencia de píxeles que se pueden transformar en coeficientes de transformación, cuantizados y escaneados mediante las TU para producir coeficientes de transformación serializados para la codificación de entropía. Esta divulgación normalmente utiliza 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 utilizar 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 las PU y las TU.
Una secuencia de vídeo normalmente incluye una serie de fotogramas de vídeo o imágenes. Un grupo de imágenes (GOP) generalmente comprende una serie de una o más de las 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 segmento de una imagen puede incluir datos de sintaxis de segmento que describen un modo de codificación para el segmento correspondiente. El codificador de vídeo 20 normalmente opera en bloques de vídeo dentro de segmentos de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables, y pueden diferir en tamaño de acuerdo con un estándar de codificación especificado.
A modo de 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 la partición asimétrica para la 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 particiona, mientras que la otra dirección se particiona en 25 % y 75 %. La porción de la CU correspondiente a la partición del 25 % se indica mediante una "n" seguida de una indicación de "Arriba", "Abajo", "Izquierda" o "Derecha". Así, por ejemplo, "2NxnU" se refiere a una CU de 2Nx2N que está particionada horizontalmente con una PU de 2Nx0.5N en la parte superior y una PU de 2Nx1.5N en la parte inferior.
En esta divulgación, "NxN" y "N por N" pueden utilizarse indistintamente 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 16x16 tendrá 16 píxeles en dirección vertical (y = 16) y 16 píxeles en dirección horizontal (x = 16). Del mismo modo, 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 de un bloque pueden estar dispuestos en filas y columnas. Además, los bloques no tienen por qué tener necesariamente el mismo número de píxeles en la dirección horizontal que en la 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 utilizando las PU de una UC, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio espacial (también denominado dominio de píxeles) y las TU pueden comprender coeficientes en el dominio de transformación después de la solicitud de una transformada, por ejemplo, una transformada discreta de coseno (DCT), una transformada de enteros, una transformada de ondículas o una transformada conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU, incluidos los datos residuales para la CU, y luego transformar las TU para producir coeficientes de transformación para la CU.
Después de cualquier transformación para producir coeficientes de transformación, el codificador de vídeo 20 puede realizar la cuantización de los coeficientes de transformación. La cuantización generalmente se refiere a un proceso en el que los coeficientes de transformación se cuantizan para posiblemente reducir la cantidad de datos utilizados para representar los coeficientes, proporcionando una mayor compresión. El proceso de cuantizació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 cuantizació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 transformación cuantizados para producir un vector serializado que se puede codificar con entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un escaneo adaptable o seleccionar un escaneo de una pluralidad de escaneos posibles. Después de escanear los coeficientes de transformación cuantizados para formar un vector unidimensional, el codificador de vídeo 20 puede codificar la entropía del vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptable al contexto (CAVLC), la codificación aritmética binaria adaptable al contexto (CABAC), la codificación aritmética binaria adaptable al contexto basada en sintaxis (SBA<c>), la codificación de Entropía de Partición de Intervalo de Probabilidad (PIPE) u otra metodología de codificación de entropía. El codificador de vídeo 20 también puede codificar la entropía de los elementos de sintaxis asociados a los datos de vídeo codificados para uso por el decodificador de vídeo 30 en la decodificación de 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 se va a transmitir. 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 un símbolo que se va a transmitir. Las palabras de código en VLC se pueden construir de tal manera que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta manera, el uso de VLC puede lograr un ahorro de bits sobre, por ejemplo, el uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad puede estar basada 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 del flujo de bits codificado, 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 la recíproca de las técnicas de codificador de vídeo 20 implementadas para codificar y generar los datos de vídeo.
Por ejemplo, el decodificador de vídeo 30 decodifica los datos de vídeo utilizando una técnica recíproca a la manera en que el codificador de vídeo 20 codificó los datos de vídeo. Además, el decodificador de vídeo 30 decodifica intrapredicción o decodifica interpredicción decodifica 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 utiliza 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 añade 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 añade el residuo al bloque previamente decodificado para reconstruir el bloque actual de la imagen actual.
De esta manera, 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 a la imagen incluye datos de vídeo para todas las capas múltiples.
Como otro ejemplo, en la codificación de vídeo multivista, 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 multivista, se muestra una imagen en cada vista dentro de la misma instancia de tiempo. Por ejemplo, la primera imagen de la primera vista se muestra en la misma instancia de tiempo que la primera imagen de la segunda vista, la primera imagen de la tercera vista, y así sucesivamente. En este ejemplo, una unidad de acceso incluye los datos de vídeo de todas las imágenes que se muestran en la misma instancia de tiempo. En los ejemplos en los que no se utiliza la codificación de vídeo escalable o la codificación de vídeo multivista, una unidad de acceso incluye los datos de vídeo de una imagen.
En consecuencia, en general, la decodificación y el procesamiento de una unidad de acceso por el decodificador de vídeo 30 dan como resultado una o más imágenes. Si la decodificación y el procesamiento de una unidad de acceso por el decodificador de vídeo 30 dan como resultado una imagen, los datos de vídeo de la unidad de acceso pueden incluir información para todas las capas de la imagen si se utiliza la codificación de vídeo escalable o incluir información para una sola capa si no se utiliza la codificación de vídeo escalable. Si la decodificación y el procesamiento de una unidad de acceso por el decodificador de vídeo 30 dan 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 multivista.
Una unidad de acceso incluye una o más unidades de decodificación. Por ejemplo, como se ha descrito anteriormente, la unidad de acceso puede incluir datos de vídeo para una imagen completa. Si no se permite la operación a nivel de subimagen, la unidad de acceso incluye solo una unidad de decodificación. Si se permite la operación en un nivel de subimagen, 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 los datos de vídeo recibidos del flujo de bits codificado y el DPB almacena las 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, como información que indica cuándo se deben eliminar las unidades de decodificación o las 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 SubPicCpbFlag) que indica si se permite la operación en un nivel de subimagen para unas 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, el decodificador de vídeo 30 puede determinar que la operación de la unidad de acceso no está permitido a 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 iguales. Si el decodificador de vídeo 30 determina que SubPicCpbFlag es 1, el decodificador de vídeo 30 puede determinar que se permite la operación de la unidad de acceso en 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 NAL es una estructura sintáctica que contiene una indicación del tipo de datos de vídeo que se van a seguir y los bytes que contienen esos datos de vídeo. Algunos ejemplos de una unidad NAL son una unidad NAL de capa de codificación de vídeo (VCL) y una unidad NAL que no es VCL. Por ejemplo, las unidades NAL de VCL pueden incluir datos de vídeo para segmentos dentro de una imagen (por ejemplo, información como índices de listas de imágenes de referencia, vectores de movimiento, modos de intrapredicción, etc. necesarios para predecir los segmentos) o unidades NAL de un tipo de unidad NAL particular. Por ejemplo, las unidades NAL que no son VCL pueden incluir datos de vídeo, 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 con la decodificación de vídeo.
En esta divulgación, una unidad de decodificación que incluye una o más unidades NAL puede considerarse como una o más unidades NAL asociadas o asignadas a una unidad de decodificación. En otras palabras, se puede considerar que una o más unidades NAL asociadas o asignadas a una unidad de decodificación son las mismas que una unidad de decodificación que incluye estas, una o más unidades NAL.
En consecuencia, 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 de una o más unidades NAL VCL en una unidad de acceso y las unidades NAL asociadas que no son VCLA.
Unidad NAL no VCL asociada: Una unidad NAL no VCL asociada a una unidad NAL VCL es una de las unidades NAL no VCL para las que la unidad NAL VCL es su unidad NAL VCL asociada. En otras palabras, una unidad NAL que no es VCL está asociada con una unidad NAL VCL, y esa unidad NAL VCL puede considerarse asociada con la unidad NAL que no es VCL (por ejemplo, la asociación entre la unidad NAL VLC y la unidad NAL no VCL va en ambos sentidos).
Unidad NAL VLC asociada: La unidad NAL VCL anterior más reciente en orden de decodificación para unidades NAL no VCL con nal_unit_type igual a UNSPEC0, 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 NAL VCL subsiguiente en orden de decodificación para unidades NAL no VCL con nal_unit_type iguales a otros valores.
Como se ha descrito anteriormente, en algunos ejemplos, el codificador de vídeo 20 codifica y emite unidades 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 el decodificador de vídeo 30 cumplan los requisitos de un estándar de codificación de vídeo, como el estándar de codificación de vídeo HEVC. En consecuencia, la inclusión de la información suplementaria es opcional, pero puede ser preferible, ya que dicha información ayuda a aumentar la eficiencia de la codificación de vídeo y la decodificación de vídeo.
Un ejemplo de unidades NAL que incluyen este tipo de información suplementaria son las unidades NAL de información de mejora suplementaria (SEI). El uso de unidades NAL<s>E<i>permite que el codificador de vídeo 20 incluya dichos metadatos en el flujo de bits codificado que no son requeridos para la decodificación correcta de las imágenes de salida, pero que se pueden utilizar para diversos otros propósitos, como la temporización de la salida de imágenes, la visualización, así como la detección de pérdidas y la ocultación (por ejemplo, para ayudar con la codificación y la decodificación). El codificador de vídeo 20 puede configurarse para incluir cualquier número de unidades NAL SEI en una unidad de acceso, y cada unidad NAL SEI puede incluir uno o más mensajes SEI.
El estándar HEVC incluye la sintaxis y la semántica de varios mensajes SEI, pero no se especifica el manejo de los mensajes SEI porque estos mensajes SEI generalmente no afectan el proceso de decodificación normativo. Una de las razones para incluir mensajes SEI en el estándar HEVC es garantizar que diversos tipos de decodificadores de vídeo (un ejemplo de los cuales es el decodificador de vídeo 30) interpreten los mensajes SEI de forma idéntica en diferentes sistemas que se ajustan al estándar HEVC. En consecuencia, las especificaciones o sistemas que se ajustan al estándar HEVC pueden requerir codificadores de vídeo (como el codificador de vídeo 20) para generar ciertos mensajes SEI o pueden definir el manejo específico de tipos particulares de mensajes sEl recibidos por decodificadores de vídeo (como el decodificador de vídeo 30).
En la siguiente Tabla 1 se enumeran los mensajes SEl especificados en HEVC y se describe brevemente su propósito. Debe entenderse que los mensajes SEl se describen con respecto al estándar HEVC solo con propósitos ilustrativos. Otros estándares de codificación de vídeo, incluidos los estándares de codificación de vídeo propietarios, pueden incluir mensajes SEl similares o diferentes a los descritos en la Tabla 1 o que se describen a continuación. Más aun, incluso las técnicas de codificación de vídeo no basadas en estándares pueden basarse en mensajes SEl similares o diferentes a los descritos en la Tabla 1 o de otra manera a los que se describen a continuación. Las técnicas descritas en esta divulgación pueden ser aplicables a todos estos casos.
En general, los mensajes SEl pueden ser considerados como características definitorias de los datos de vídeo. Por ejemplo, el período de almacenamiento en búfer y los mensajes SEl de temporización de imágenes definen las características de los datos de vídeo, como los retrasos iniciales y el tiempo de salida de la imagen o el tiempo de eliminación de la imagen/subimagen. Como ejemplos adicionales, el propósito de los mensajes SEl en la Tabla 1 proporciona ejemplos de características de los datos de vídeo que se definen mediante los mensajes SEl correspondientes.
Tabla 1. Resumen de los mensajes SEl
En algunos ejemplos, el codificador de vídeo 20 puede configurarse para limitar dónde se encuentran los mensajes SEI dentro de la unidad de acceso. Por ejemplo, entre los mensajes SEI, el mensaje SEI de temporización de subimagen puede seguir, en orden de decodificación, a la primera unidad NAL VCL de la unidad de acceso que contiene el mensaje SEI, pero no puede seguir, en orden de decodificación, a la última unidad NAL VCL de la unidad de acceso. Todos los demás mensajes SEI pueden preceder a la primera unidad NAL VCL en la unidad de acceso cuando nuh_reserved_zero_6bits es igual a 0 para la unidad NAL SEI que contiene el mensaje SEI.
El elemento de sintaxis nuh_reserved_zero_6bits identifica una capa en la codificación de vídeo escalable o una vista en la codificación de vídeo multivista. 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 la codificación de vídeo multivista. El elemento de sintaxis nuh_reserved_zero_6bits para las otras capas o vistas es un valor entero positivo que se utiliza para identificar la capa o vista. En los casos en los que no se utiliza la codificación de vídeo escalable o la codificación de vídeo multivista, nuh_reserved_zero_6bits se asume que sea 0.
Como se indica en la Tabla 1, diversos mensajes SEI, como el mensaje SEI del período de almacenamiento en búfer, el mensaje SEI de temporización de imagen y el mensaje SEI de temporización de subimagen, definen retrasos y tiempos de eliminación en un decodificador de referencia (HRD) hipotético. El HRD es un modelo utilizado para definir las características del búfer de imagen codificada (CPB) y el búfer de imagen decodificada (DPB). Como se ha descrito anteriormente, el CPB almacena los datos de vídeo del flujo de bits, como las imágenes codificadas, antes de la decodificación, y el DPB almacena los datos de vídeo decodificados, incluidas las 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 denomina decodificador de referencia hipotético (HRD), que incluye un modelo de almacenamiento en búfer de ambos, el búfer de imagen codificada (CPB) y búfer de imagen decodificada (DPB), y los comportamientos CPB y DPB se especifican matemáticamente. El HRD puede imponer directamente restricciones a diferentes temporizadores, tamaños de búfer y tasa de bits, e indirectamente imponer restricciones a las características y estadísticas del flujo de bits. Un conjunto completo de parámetros HRD incluye cinco parámetros básicos: retardo de eliminación inicial de CPB, tamaño de CPB, tasa de bits, retardo de salida inicial de DPB y tamaño de DPB.
En AVC y HEVC, la conformidad del flujo de bits y la conformidad del decodificador se especifican como partes de la especificación HRD. Debe entenderse que, aunque el HRD está etiquetado como un tipo de decodificador, el HRD es normalmente necesario en el lado del codificador de vídeo 20 para garantizar la conformidad del flujo de bits. El HRD puede no ser necesario en el lado del 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 el DPB como mensajes SEI, y el decodificador de vídeo 30 puede determinar la temporización y las características del CPB y el DPB basado en los mensajes SEI señalizados. Por ejemplo, los mensajes SEI pueden especificar dos tipos de conformidad de flujo de bits o HRD, a saber, Tipo I y Tipo II. Además, los mensajes SEI pueden especificar dos tipos de conformidad con el decodificador de vídeo 30: conformidad del decodificador de temporización de salida y conformidad del 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 a nivel de unidad de acceso o a nivel de unidad de subacceso (también denominado nivel de subimagen). Como se ha descrito 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, no se permite la operación CPB en un nivel de subimagen. Si el valor de SubPicCpbFlag es 1, se permite la operación CPB en un nivel de subimagen.
Los mensajes SEI pueden proporcionar información sobre las unidades de decodificación dentro de una unidad de acceso. Por ejemplo, el mensaje SEI de temporización de imágenes (mensaje 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 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 NAL están asociadas/asignadas a qué unidades de decodificación. Como un ejemplo ilustrativo, supongamos 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 a tres unidades NAL, la segunda unidad de decodificación, de la unidad de acceso, está asociada a dos unidades NAL, y la tercera unidad de decodificación, de la unidad de acceso, está asociada a dos unidades NAL.
En este ejemplo, el decodificador de vídeo 30 determina qué unidades NAL están asociadas a qué unidades de decodificación basado en el orden en que el CPB recibe las unidades NAL. Por ejemplo, el decodificador de vídeo 30 determina que las tres primeras unidades NAL que recibe el CPB están asociadas a la primera unidad de decodificación, las dos siguientes unidades NAL que recibe el CPB están asociadas a la segunda unidad de decodificación y las dos unidades NAL siguientes que recibe el CPB están asociadas a la tercera unidad de decodificación.
Sin embargo, el decodificador de vídeo 30 que determina qué unidades NAL están asociadas a qué unidades de decodificación basado en elementos de sintaxis que indican el número de unidades NAL asociadas a cada unidad de decodificación no es resistente a errores. En un enlace de comunicación propenso a errores o con pérdidas, es posible que se pierdan una o más de las unidades NAL. Por ejemplo, si el link 16 es propenso a errores o tiene pérdidas, entonces una o más de las unidades NAL pueden estar perdidas. Como otro ejemplo, si el enlace de la interfaz de salida 22 al dispositivo de almacenamiento 32 o el enlace de la interfaz de salida 32 a la interfaz de entrada 28 es propenso a errores o tiene pérdidas, luego una o más de las unidades NAL se pueden perder.
Cuando se pierde una unidad NAL, es posible que el decodificador de vídeo 30 no pueda determinar correctamente qué unidades NAL están asociadas a qué unidades de decodificación, a menos que se conozca la posición exacta y el número de pérdidas de unidades NAL consecutivas (qué el decodificador de vídeo 30 puede no ser capaz de determinar). Por ejemplo, supongamos que en el ejemplo anterior, se pierde la segunda unidad NAL. En este caso, el decodificador de vídeo 30 determina que las tres primeras unidades NAL recibidas son para la primera unidad de decodificación porque el elemento de sintaxis num_nalus_in_du_minus1[i] indica que la primera unidad de decodificación incluye tres unidades NAL. Sin embargo, el codificador de vídeo 20 asoció la tercera unidad NAL recibida, en este caso, con la segunda unidad de decodificación (de nuevo, la segunda unidad NAL se pierde). Por lo tanto, el decodificador de vídeo 30 asoció incorrectamente la tercera unidad NAL recibida con la primera unidad de decodificación, cuando el decodificador de vídeo 30 debería haber asociado la tercera unidad 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 NAL están asociadas a qué unidades de decodificación basado en las posiciones de los mensajes SEI. Como un ejemplo, el codificador de vídeo 20 puede utilizar las posiciones de los mensajes SEI de temporización de subimagen (SPT), dentro de la unidad de acceso, para indicar qué unidades NAL están asociadas a qué unidades de decodificación, y el decodificador de vídeo 30 puede utilizar las posiciones de los mensajes SEI SPT de temporización de subimagen, dentro de la unidad de acceso, para determinar qué unidades n Al están asociadas a qué unidades de decodificación.
Por ejemplo, el mensaje SEI SPT es parte de una unidad NAL SEI que está asociada con una unidad de decodificación. El mensaje SEI SPT puede proporcionar información que indique cuándo se debe eliminar una unidad de decodificación del CPB. En algunos ejemplos, todas las unidades NAL que siguen a la unidad NAL SEI que no incluyen el mensaje SEI SPT hasta el siguiente mensaje SEI SPT se consideran asociadas a la unidad de decodificación. En otras palabras, se considera que las unidades NAL intercaladas entre un primer mensaje SEI SPT y un segundo mensaje SEI SPT, y la unidad NAL SEI que incluye el primer mensaje s E i SPT están todas consideradas que están asociadas a una unidad de decodificación.
De esta manera, después de que el CPB del decodificador de vídeo 30 recibe una primera unidad NAL SEI con un primer mensaje SEI SPT, el decodificador de vídeo 30 puede determinar que la primera unidad NAL SEI y todas las unidades NAL hasta la siguiente unidad NAL SEI con el siguiente mensaje SEI SPT (es decir, la segunda unidad NAL SEI con el segundo mensaje SEI SPT) se asocien con la primera unidad de decodificación. El decodificador de vídeo 30 también puede determinar que la segunda unidad NAL SEI y todas las unidades NAL hasta la siguiente unidad NAL SEI con el siguiente mensaje SEI SPT (es decir, la tercera unidad NAL SEI con el tercer mensaje SEI SPT) estén asociadas con la segunda unidad de decodificación, y así sucesivamente.
En algunos casos, confiar en las posiciones de los mensajes SEI SPT para determinar qué unidades NAL están asociadas con qué unidades de decodificación también puede no ser resistente a errores. Como un ejemplo, dado que las posiciones de los mensajes SEI SPT definen qué unidades NAL están asociadas a una unidad de decodificación, un mensaje SEI SPT no puede repetirse dentro de una unidad de decodificación (es decir, después de la unidad NAL inmediatamente después del mensaje SEI SPT y antes de la última unidad NAL de la unidad de decodificación, en orden de decodificación). Por ejemplo, supongamos que una unidad de decodificación incluye cuatro unidades NAL. En este ejemplo, un primer mensaje SEI s Pt precedería a las cuatro unidades NAL y un segundo mensaje SEI SPT seguiría a las cuatro unidades NAL. Si se insertara un mensaje SEI SPT en medio de los dos mensajes SEI SPT, el decodificador de vídeo 30 determinaría incorrectamente que las dos primeras unidades nAl son para una primera unidad de decodificación, y las dos segundas unidades NAL son para una segunda unidad de decodificación diferente.
Sin embargo, puede ser beneficioso incluir una o más copias de un mensaje SEI SPT dentro de una unidad de decodificación, de modo que los datos de vídeo pertinentes puedan recuperarse de una de las copias si se pierde otra. Como se ha descrito anteriormente, el mensaje SEI SPT puede incluir información que indique cuándo se debe eliminar una unidad de decodificación del CBP. Por ejemplo, en un entorno propenso a errores o con pérdidas, un mensaje SEI SPT puede perderse y la información dentro del mensaje SEI SPT que indica cuándo se debe eliminar la unidad de decodificación puede perderse.
Por ejemplo, como se ha descrito 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 (suponiendo que SubPicCpbFlag es 1). En consecuencia, una unidad de decodificación puede, en algunos ejemplos, incluir datos de vídeo para uno o más segmentos de una imagen (es decir, una subporción de una imagen). El dispositivo fuente 12 puede emitir el uno o más segmentos 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 SEI SPT, es posible que el decodificador de vídeo 30 no pueda determinar con precisión la información de temporización de subimagen para los otros paquetes de la unidad de decodificación (por ejemplo, el tiempo de eliminación de la CPB).
Si cada paquete incluyera el mensaje SEI SPT, la pérdida de un paquete no afectaría al proceso de decodificación porque el decodificador de vídeo 30 puede determinar la información de temporización de subimagen del mensaje SEI SPT a partir de una copia del mensaje SEI SPT en otro de los paquetes. Sin embargo, en algunas otras técnicas, el mensaje SEI SPT no podía repetirse ya que el decodificador de vídeo 30 utilizaba la posición del mensaje SEI para determinar qué unidades NAL estaban asociadas a qué unidades de decodificación. En otras palabras, la prohibición de repetir mensajes SEI SPT en las unidades de decodificación da como resultado un esquema menos resistente a errores para determinar qué unidades NAL están asociadas con qué unidades de decodificación. En algunos ejemplos, las técnicas de divulgación pueden eliminar las prohibiciones de repetir mensajes SEI SPT en las unidades de decodificación.
Como se describe con más detalle a continuación, esta divulgación describe ejemplos de técnicas que permiten al decodificador de vídeo 30 determinar qué unidades NAL están asociadas con qué unidades de decodificación de una manera resistente a errores. Por ejemplo, el codificador de vídeo 20 puede generar para salida y emisión un identificador para las unidades de decodificación. El decodificador de vídeo 30 puede utilizar este identificador para determinar qué unidades NAL están asociadas a qué unidades de decodificación, en lugar de basarse en la información que indica el número de unidades NAL asociadas a una unidad de decodificación y el orden en que se reciben las unidades NAL, o en lugar de basarse en la posición del mensaje SEI SPT La emisión y recepción del identificador de unidad de decodificación también puede permitir múltiples copias del mensaje SEI SPT, lo que aumenta aún más la resistencia a errores de la capacidad del decodificador de vídeo 30 para determinar los tiempos de eliminación de las unidades de decodificación de la CPB.
Lo anterior describe el ejemplo en el que no se permite repetir el mensaje SEI SPT dentro de la unidad de decodificación. En algunos casos, diversos otros tipos de mensajes SEI pueden ser prohibidos de ser repetidos también dentro de la unidad de decodificación. Por ejemplo, cualquier mensaje SEI que no sea un mensaje SEI SPT y para el cual nuh_reserved_zero_6bits para la unidad NAL CEI que incluye el mensaje SEI es igual a 0 puede no permitirse que se repita dentro de la unidad de acceso que incluye el mensaje SEI después de la primera unidad NAL VCL y antes de la última unidad NAL en orden de decodificación.
Por ejemplo, en algunas otras técnicas, los mensajes SEI se utilizan para determinar que el decodificador de vídeo 30 está procesando una nueva unidad de acceso. En otras palabras, la ubicación del mensaje SEI en el flujo de bits codificado es indicativa del comienzo de una unidad de acceso. Si un mensaje SEI se repite dentro de una unidad de acceso, entonces el decodificador de vídeo 30 puede determinar incorrectamente que se está procesando una nueva unidad de acceso. Dado que los mensajes SEI indicaban una nueva unidad de acceso, las copias de los mensajes SEI pueden estar prohibidas en estas otras técnicas.
De manera similar a lo anterior, si una unidad de acceso incluye múltiples segmentos que se transmiten en un entorno propenso a errores, puede ser beneficioso incluir copias de los mensajes SEI en cada paquete para que si se pierde un paquete, los mensajes SEI puedan recuperarse de 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 SEI dentro de la unidad de acceso.
Por ejemplo, el decodificador de vídeo 30 no necesita depender de un mensaje SEI para determinar que se está procesando una nueva unidad de acceso. Más bien, el decodificador de vídeo 30 puede depender de alguna otra información de cabecera para determinar cuándo se está procesando una nueva unidad de acceso. Dado que la existencia de un mensaje SEI está desacoplada de la indicación de que se está procesando una nueva unidad de acceso, el codificador de vídeo 20 puede incluir múltiples copias de mensajes SEI en la unidad de acceso, y el decodificador de vídeo 30 puede procesar múltiples copias de mensajes SEI dentro de la misma unidad de acceso sin determinar que se está procesando 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 identificador de unidad de decodificación, identificador DU o ID DU). El identificador DU puede ser un identificador que identifique de forma única una unidad de decodificación. Por ejemplo, el identificador DU para la primera unidad de decodificación, en orden de decodificación, en la unidad de acceso puede ser 0, el identificador 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 DU para la primera unidad de decodificación es 0, y el valor del identificador DU aumenta en uno para cada unidad de decodificación subsiguiente). Son posibles otras formas de identificar de forma unívoca las unidades de decodificación con identificadores de unidad de decodificación, y las técnicas no deben considerarse limitadas a identificadores DU ascendentes para cada unidad de decodificación en orden de decodificación.
Puede haber diversas formas en las que el codificador de vídeo 20 señala el identificador DU. Por ejemplo, el codificador de vídeo 20 puede señalar el identificador DU en el encabezado de un segmento de un segmento de una unidad de decodificación y/o en un mensaje SEI (por ejemplo, el mensaje SEI SPT), o de cualquier otra manera. En este caso, la asociación de las unidades NAL a las unidades de decodificación está basada en los identificadores DU señalizados. También puede ser posible incluir el identificador DU en otras ubicaciones, como el encabezado de la unidad NAL.
Si la unidad NAL es para uno o más segmentos, el decodificador de vídeo 30 puede determinar para qué unidad de decodificación está asociada la unidad NAL a partir del identificador DU en el encabezado del segmento. En consecuencia, incluso si hay pérdidas en las unidades NAL, el decodificador de vídeo 30 puede ser capaz de determinar qué unidad NAL está asociada a cada unidad de decodificación basado en el identificador DU.
En los ejemplos en los que el mensaje SEI incluye el identificador DU, puede ser posible que el mensaje SEI (por ejemplo, el mensaje SEI SPT) se pierda, en cuyo caso, el identificador DU puede perderse. En algunos ejemplos, el codificador de vídeo 20 puede incluir copias del mensaje SEI SPT dentro de la unidad de decodificación para minimizar las posibilidades de que se pierda el identificador DU. Por ejemplo, como se ha descrito anteriormente, en algunos casos la posición del mensaje SEI SPT dentro de una unidad de decodificación puede indicar qué unidades NAL están asociadas con las unidades de decodificación, lo que significa que no puede haber múltiples copias de los mensajes SEI SPT. En las técnicas descritas en esta divulgación, el decodificador de vídeo 30 puede utilizar el identificador DU para determinar qué unidades NAL están asociadas a qué unidades de decodificación. En consecuencia, el decodificador de vídeo 30 no necesita basarse en la posición de los mensajes SEI SPT para determinar qué unidades NAL están asociadas a qué unidades de decodificación. Esto permite que el codificador de vídeo 20 incluya múltiples copias de los mensajes SEI SPT dentro de una unidad de decodificación dentro del flujo de bits codificado, lo que a su vez reduce la probabilidad de que se pierda el identificador DU si cada copia del mensaje SEI SPT incluye el identificador DU.
Como se ha descrito anteriormente, en algunos ejemplos, no se permite que los mensajes SEI sigan a la primera unidad NAL VCL en el orden de decodificación, en la unidad de acceso que contiene el mensaje SEI. En algunos ejemplos, el codificador de vídeo 20 puede permitir que todos los mensajes SEI sigan a la primera unidad NAL VCL en orden de decodificación, en la unidad de acceso que contiene el mensaje SEI. Sin embargo, el mensaje SEI puede no estar posicionado después de la última unidad NAL VCL, en orden de decodificación, en la unidad de acceso.
Como un ejemplo, el codificador de vídeo 20 puede incluir un mensaje SEI antes de la primera unidad NAL VCL en orden de decodificación. El codificador de vídeo 20 puede incluir una copia del mensaje SEI después de la primera unidad NAL 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 SEI después de la última unidad NAL VCL en orden de decodificación en la unidad de acceso.
En los ejemplos en los que el codificador de vídeo 20 permite repetir los diversos tipos de mensajes SEI en la unidad de decodificación o en la unidad de acceso, el codificador de vídeo 20 puede especificar información adicional sobre los mensajes SEI. Como un ejemplo, el codificador de vídeo 20 puede especificar un alcance de solicitud al que se aplica la información transportada en un mensaje SEI. Como otro ejemplo, el codificador de vídeo 20 puede especificar dónde puede estar presente un mensaje SEI en la unidad de acceso y/o en la unidad de decodificación. Como aún otro ejemplo, el codificador de vídeo 20 puede establecer una restricción en el contenido de las múltiples instancias de tipos particulares de mensajes SEI.
El decodificador de vídeo 30 utiliza esta información para los mensajes SEI para decodificar datos en las unidades NAL. En algunos ejemplos, el decodificador de vídeo 30 puede estar preconfigurado con información de los mensajes SEI, como información que indica la restricción del contenido de las múltiples instancias de tipos particulares de mensajes SEI, o preconfigurado con información sobre dónde se pueden ubicar los mensajes SEI dentro de la unidad de acceso y/o la unidad de decodificación. En estos casos, puede que no sea necesario que el codificador de vídeo 20 especifique dónde puede estar presente un mensaje SEI o que señale información que indique alguna restricción en el contenido de las múltiples instancias de tipos particulares de mensajes SEI.
Como se ha descrito 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, como en la extensión multicapa del estándar de codificación de vídeo de alta eficiencia (HEVC).
Las capas múltiples incluyen una capa base y una o más capas que no son 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, como en el caso de la codificación de vídeo multivista, 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 la textura de una vista diferente, la profundidad de una vista diferente y otros ejemplos similares.
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, utilizando la transmisión 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 se pueden extender a ejemplos en los que se utiliza la transmisión multisesión para codificar múltiples capas. Por ejemplo, las técnicas descritas en esta divulgación para incluir el mensaje SEI después de la primera unidad NAL VCL en una unidad de acceso también son aplicables a ejemplos de transmisión multisesión. Como un ejemplo, el codificador de vídeo 20 puede incluir unidades NAL SEI entre dos unidades NAL VCL consecutivas dentro de una unidad de acceso sin necesidad de mover las unidades NAL SEI antes de la primera unidad NAL VCL de la unidad de acceso.
Debido a que la unidad NAL SEI incluye mensajes SEI para las técnicas de transmisión multisesión, el decodificador de vídeo 30 puede ser capaz de implementar el proceso de desempaquetado de una manera más simplificada. Por ejemplo, el decodificador de vídeo 30 puede ser capaz de decodificar mensajes SEI para las técnicas de transmisión multisesión desde dentro de la unidad de acceso, en lugar de hacerlo todo desde el principio de la unidad de acceso. Debido a que hay múltiples copias del mensaje SEI disponibles en toda 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 conjuntamente o por separado. Por ejemplo, si el codificador de vídeo 20 incluye un identificador DU, entonces el codificador de vídeo 20 no necesita incluir necesariamente múltiples copias del mensaje SEI SPT en todos los ejemplos, pero puede incluir múltiples copias del mensaje SEI SPT en algunos ejemplos. Como otro ejemplo, el codificador de vídeo 20 puede incluir múltiples copias de diversos tipos de mensajes SEI, incluso si el codificador de vídeo 20 no incluye identificadores Du . Como aún otro ejemplo, en los ejemplos en los que el codificador de vídeo 20 incluye los identificadores DU, el codificador de vídeo 20 no necesita incluir necesariamente múltiples copias de los mensajes SEI distintos del mensaje SEI SPT. En general, las técnicas descritas en esta divulgación pueden ser ventajosas para proporcionar esquemas resistentes a errores para entornos propensos a errores en los que la información puede perderse en la señalización.
Como se ha descrito anteriormente, en un ejemplo, el codificador de vídeo 20 incluye el identificador DU en el encabezado del segmento. En la tabla 2, a continuación, se proporciona un ejemplo de pseudocódigo para la manera en que el codificador de vídeo 20 puede incluir el identificador DU en el encabezado del segmento, y la manera en que el decodificador de vídeo 30 puede analizar el encabezado del segmento para determinar el identificador DU.
Tabla 2. Señalización en el encabezado del se mento
En este ejemplo, decoding_unit_id hace referencia al identificador DU y especifica el identificador de la unidad de decodificación a la que pertenece el segmento. El valor de decoding_unit_id puede estar en el rango de 0 a PicSizeInCtbsY - 1, ambos incluidos. PicSizeInCtbsY puede indicar el número de unidades de árbol de codificación (CTU) en una imagen, que es igual al número de bloques de árbol de codificación (CTB) en el componente de luminancia de una imagen.
En el ejemplo en el que el codificador de vídeo 20 incluye el identificador de la unidad de decodificación en el encabezado del segmento, una unidad de decodificación identificada por un valor particular del identificador DU (por ejemplo, ID DU o duID) puede incluir y solo puede incluir todas las unidades NAL de segmentos codificados con decoding_unit_id igual al identificador DU y sus unidades NAL no VCL asociadas en la unidad de acceso. Dentro de una unidad de acceso, para dos unidades de decodificación cualesquiera (por ejemplo, la unidad de decodificación A y la 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 DU más pequeño precede a la unidad de decodificación con el identificador DU más grande en orden de decodificación. Además, una unidad NAL de una unidad de decodificación no puede residir, en orden de decodificación, entre dos unidades NAL de otra unidad de decodificación. En otras palabras, en el ejemplo anterior, las unidades NAL de una unidad de decodificación son contiguas.
Como se ha descrito anteriormente, en algunos ejemplos, el codificador de vídeo 20 puede incluir el identificador DU en un mensaje SEI (por ejemplo, el mensaje SEI SPT), y el mensaje SEI SPT incluye información que indica cuándo se debe eliminar la unidad de decodificación. A continuación se describen algunos ejemplos de técnicas para que el codificador de vídeo 20 incluya el identificador DU en un mensaje SEI. Para evitar confusiones, a continuación se cambia el nombre del mensaje SEI de temporización de subimagen (SPT) por el de mensaje SEI de información de la 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 DU en un mensaje SEI que también incluye información que indica el tiempo de eliminación de la unidad de decodificación de la CPB.
En la Tabla 3 se proporciona un ejemplo de pseudocódigo para la forma en que el codificador de vídeo 20 puede incluir el identificador DU en un mensaje SEI, y la forma en que el decodificador de vídeo 30 puede analizar el mensaje SEI para determinar el identificador DU. A continuación, el nombre del mensaje SEI de temporización de subimagen (SPT) se cambia a mensaje SEI de información de la unidad de decodificación, y la sintaxis y la semántica pueden ser las siguientes. Otras partes son las mismas que en HEVC WD8, con "mensaje SEI de temporización de subimagen" reemplazado por "mensaje SEI de información de la unidad de decodificación". El mensaje SEI de información de la unidad de decodificación puede proporcionar tiempo de eliminación de CPB (por ejemplo, información de retardo de eliminación de CPB) para la unidad decodificada asociada con el mensaje SEI.
T l . ñ liz i n n l m n EI
En HEVC WD8, el mensaje SEI de temporización de subimagen (SPT) puede ser similar a la Tabla 3. Sin embargo, el mensaje SEI SPT de HEVC WD8 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 SEI también incluye el decoding_unit_id, se cambia el nombre del mensaje SEI SPT a mensaje SEI de información de la unidad de decodificación.
En algunos ejemplos, el codificador de video 20 genera para salida y emite elementos de sintaxis, mientras que el decodificador de video 30 recibe elementos de sintaxis que indican la presencia del mensaje SEI de información de la unidad de decodificación en el flujo de bits. Como un 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 SEI de información de la unidad de decodificación está presente en cada unidad de decodificación de la secuencia de vídeo codificada (es decir, uno o más mensajes 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 hay mensajes SEI de información de la 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 NAL a las que se aplica el mensaje SEI de información de la unidad de decodificación, también denominadas unidades NAL asociadas con un mensaje SEI de información de la unidad de decodificación, consisten, en orden de decodificación, de la unidad NAL SEI que contiene el mensaje SEI de información de la unidad de decodificación y todas las unidades NAL subsiguientes en la unidad de acceso hasta, pero sin incluir, cualquier unidad NAL SEI subsiguiente que contenga un mensaje SEI de información de la 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 SEI (por ejemplo, el mensaje SEI de información de la unidad de decodificación). Por ejemplo, una unidad de decodificación identificada por un valor particular del identificador DU (por ejemplo, ID DU o duID) puede incluir y solo puede incluir todas las unidades NAL asociadas con todos los mensajes SEI de información de la unidad de decodificación que tienen decoding_unit_id un identificador DU igual al identificador de la unidad de acceso. Como se indicó anteriormente, una unidad de decodificación con un identificador de unidad de decodificación más pequeño es anterior en el orden de decodificación que una unidad de decodificación con un identificador de unidad de decodificación más grande. Como se indicó anteriormente, una unidad NAL de una unidad de decodificación puede no residir, en orden de decodificación, entre dos unidades NAL de otra unidad de decodificación.
du_cpb_removal_delay puede especificar cuántos tics de reloj de subimagen debe esperar el decodificador de vídeo 30 después de la eliminación de la CPB de la primera unidad de decodificación en la unidad de acceso asociada con el mensaje SEI del período de almacenamiento en búfer más reciente en una unidad de acceso anterior antes de que el decodificador de vídeo 30 elimine de la CPB la unidad de decodificación asociada con el mensaje SEI de información de la unidad de decodificación. Este valor también puede utilizarse para calcular el tiempo más temprano posible de llegada de los datos de la unidad de decodificación al CPB para el programador de flujo hipotético (HSS), tal como se especifica en el anexo C del HEVC WD8.
El elemento de sintaxis puede ser representado por un código de longitud fija cuya longitud en bits viene 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 menos1 que determina la longitud (en bits) del elemento de sintaxis du_cpb_removal_delay puede ser el valor de cpb_removal_delay_length menos1 codificado en el conjunto de parámetros de secuencia que está activo para la imagen codificada asociada con el mensaje SEI de información de la unidad de decodificación. Sin embargo, du_cpb_removal_delay especifica un número de tictac de reloj de subimagen en relación con el tiempo de eliminación de la primera unidad de decodificación en la unidad de acceso anterior que contiene un mensaje 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 proporciona un ejemplo de pseudocódigo para un ejemplo del mensaje SEI de información de la unidad de decodificación, en el que el nombre del mensaje SEI SPT se cambió por el mensaje SEI de información de la unidad de decodificación porque el mensaje SEI de información de la unidad de decodificación incluía información que anteriormente formaba parte del mensaje SEI SPT e incluía además el identificador DU para la unidad de decodificación asociada con el mensaje. En algunos ejemplos, puede haber potencialmente otras modificaciones en el mensaje SEI de temporización de subimagen (SPT).
Por ejemplo, la solicitud provisional de loa EE.UU. No. 61/705,119 (en adelante, la solicitud '119), presentada el 24 de septiembre de 2012, y la solicitud provisional d ellos EE.UU. No. 61/708,475 (en adelante, la solicitud '475), presentada el 1 de octubre de 2012, describen algunas posibles modificaciones del mensaje SEI SPT en relación con el mensaje SEI SPT descrito en HEVC WD8. La solicitud '119 y la solicitud '475 describen la inclusión de una estructura sintáctica de puntos de operación de solicitud en el mensaje SEI SPT y el cambio del 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 en los que el mensaje SEI SPT cambió de HEVC WD8 al mensaje SEI SPT en la solicitud '119 y la solicitud '475. La Tabla 4 proporciona un ejemplo de pseudocódigo para la manera en que el codificador de vídeo 20 puede señalar el identificador DU en un ejemplo alternativo de un mensaje SEI, y la manera en que el decodificador de vídeo 30 puede analizar el mensaje SEI para determinar el identificador DU. Al igual que en la Tabla 3, para evitar confusiones, el nombre del mensaje SEI SPT se cambia por el de mensaje SEI de información de la unidad de decodificación porque el mensaje SEI de información de la unidad de decodificación incluye el identificador DU además de la información del mensaje SEI SPT descrito en la solicitud 119 y en la solicitud 475.
Tabla 4. Señalización alternativa en el mensaje SEI
sub_pic_cpb_params_in_pic_timing_sei_flag igual a 1 especifica que los parámetros de retardo de eliminación de CPB a nivel de subimagen están presentes en los mensajes SEI de temporización de imagen y no hay ningún mensaje SEI de temporización de subimagen. sub_pic_cpb_params_in_pic_timing_sei_flag igual a 0 especifica que los parámetros de retardo de eliminación de CPB a nivel de subimagen están presentes en los mensajes SEI de temporización de subimagen y los mensajes SEI de temporización de imagen no incluyen los parámetros de retardo de eliminación de CPB a nivel de subimagen.
Al igual que en la Tabla 3, el mensaje SEI de información de la unidad de decodificación proporciona información sobre el retardo de eliminación de CPB para la unidad de decodificación asociada con el mensaje SEI. Lo siguiente puede aplicarse a la sintaxis y semántica del mensaje SEI de información de la 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 se pueden encontrar en o derivar de elementos de sintaxis que se encuentran en la estructura sintáctica hrd_parameters( ) y la estructura sintáctica sub_layer_hrd_parameters( ) aplicable a cualquiera de los puntos de operación a los que se aplica el mensaje SEI de información de la 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 SEI de información de la unidad de decodificación.
De manera similar a lo anterior con respecto a la Tabla 3, el codificador de vídeo 20 emite el CpbDpbDelaysPresentFlag y el sub_pic_cpb_params_present_flag que el decodificador de vídeo 30 utiliza para determinar la presencia del mensaje SEI de la 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 SEI de información de la unidad de decodificación aplicable a los puntos de operación especificados está presente en cada unidad de decodificación de la secuencia de vídeo codificada. De lo contrario (por ejemplo, o 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 hay mensajes SEI de información de unidad de decodificación aplicables a los puntos de operación especificados en la secuencia de vídeo codificada.
De manera similar a la descripción con respecto a la Tabla 3, las unidades NAL a las que se aplica el mensaje SEI de información de la unidad de decodificación, también denominadas unidades NAL asociadas con un mensaje SEI de información de la unidad de decodificación, consisten, en orden de decodificación, en la unidad NAL SEI que contiene el mensaje SEI de información de la unidad de decodificación y todas las unidades NAL subsiguientes en la unidad de acceso hasta, pero sin incluir, ninguna unidad NAL<s>E<i>posterior que contenga un mensaje SEI de información de la 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 DU más pequeño es anterior en el orden de decodificación que una unidad de decodificación con un identificador DU más grande. En el ejemplo de la Tabla 4, du_spt_cpb_removal_delay puede especificar la duración, en unidades de tictac de reloj de subimagen (ver la subcláusula E.2.1 de HEVC WD8), entre la eliminación de la CPB de la última unidad de decodificación en orden de decodificación en la unidad de acceso actual que contiene el mensaje SEI de información de la unidad de decodificación y la unidad de decodificación asociada con el mensaje SEI de información de la unidad de decodificación. Este valor también puede utilizarse para calcular el tiempo más temprano posible de llegada de los datos de la unidad de decodificación al CPB para el programador de secuencia hipotético (HSS), tal como se especifica en el anexo C del HEVC WD8. El elemento de sintaxis puede representarse mediante un código de longitud fija cuya longitud en bits viene dada por du_cpb_removal_delay_length_minus1 1. Cuando la unidad de decodificación asociada con el mensaje SEI de información de la unidad de decodificación, es la última unidad de decodificación de 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 tictac de reloj de subimagen (ver la subcláusula E.2.1), entre la eliminación de la CPB de la siguiente unidad de decodificación en orden de decodificación en la unidad de acceso actual que contiene el mensaje SEI de información de la unidad de decodificación y la unidad de decodificación asociada con el mensaje SEI de información de la unidad de decodificación. Este valor también puede utilizarse para calcular la hora más temprana posible de llegada de los datos de la unidad de decodificación al CPB para el HSS, tal como se especifica en el anexo C del HEVC WD8. El elemento de sintaxis está representado por un código de longitud fija cuya longitud en bits viene dada por du_cpb_removal_delay_length_minus1 1. Cuando la unidad de decodificación asociada con el mensaje SEI de información de la unidad de decodificación es la última unidad de decodificación de 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 SEI de información de la unidad de decodificación con la última unidad de decodificación de cada unidad de acceso.
En los ejemplos anteriores se 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 NAL están asociadas a qué unidades de decodificación. Por ejemplo, si el encabezado del segmento indica un identificador de unidad de decodificación, el decodificador de vídeo 30 puede determinar que la unidad NAL que incluye el segmento está asociada con la unidad de decodificación indicada en el encabezado del segmento. Como otro ejemplo, si un mensaje SEI (por ejemplo, el mensaje SEI de información de la unidad de decodificación) indica el identificador de la unidad de decodificación, entonces el decodificador de vídeo 30 determina que todas las unidades NAL que siguen el mensaje SEI hasta la siguiente unidad NAL SEI que incluye un mensaje SEI de información de la unidad de decodificación con un identificador de unidad de decodificación diferente del identificador de unidad de decodificación del mensaje SEI anterior. Esto permite que el codificador de vídeo 20 incluya múltiples copias del mensaje SEI de información de la unidad de decodificación, lo que a su vez permite que el decodificador de vídeo 30 determine el tiempo de eliminación de una unidad de decodificación del CPB de uno de una pluralidad de mensajes SEI de información de la unidad de decodificación en caso de que uno de los otros mensajes SEI de información de la unidad de decodificación se pierda en la transmisión.
En algunos ejemplos, el codificador de vídeo 20 puede generar para salida y emisión y el decodificador de vídeo 30 puede recibir múltiples copias de diversos tipos de mensajes SEI. Como se ha descrito anteriormente, se especifican los siguientes aspectos para todos los mensajes SEI: a) un alcance de solicitud al que se aplica la información transportada en un mensaje SEI; b) donde puede estar presente un mensaje SEI; y c) una restricción en el contenido de múltiples instancias de un tipo particular de mensaje SEI.
Se asumen las siguientes convenciones para describir el alcance de la solicitud, donde pueden estar presentes los mensajes y las restricciones sobre el contenido de los mensajes SEI de múltiples instancias. Un mensaje SEI se considera asociado con el valor de nuh_reserved_zero_6bits en el encabezado de la unidad NAL de la unidad NAL SEI que contiene el mensaje SEI. A continuación, "ID de capa" se usa indistintamente con "nuh_reserved_zero_6bits", porque nuh_reserved_zero_6bits identifica la capa en la codificación de vídeo escalable.
Al igual que en el caso anterior, el acrónimo AU significa unidad de acceso. Los puntos de operación aplicables para cada mensaje SEI de período de almacenamiento en búfer, mensaje SEI de temporización de imagen o mensaje SEI de temporización de subimagen son los especificados en la solicitud '119 y en la solicitud '475. Un punto de operación se identifica mediante un conjunto de valores de nuh_reserved_zero_6bits, denotados como OpLayerIdSet, y un valor de valor de identificación temporal (TemporalId), denotado como OpTid, y el subconjunto de flujo de bits asociado derivado como salida del proceso de eliminación de un subflujo de bits como se especifica en la subcláusula 10.1 de HEVC WD8 con OpTid y OpLayerIdSet como entradas que se pueden decodificar de forma independiente.
El valor TemporalId de las imágenes indica si las imágenes se pueden utilizar para interpredecir otras imágenes. Por ejemplo, no se puede utilizar una primera imagen para la interpredicción de una segunda imagen si el valor de TemporalId de la primera imagen es mayor que el valor de TemporalId de la segunda imagen. De esta manera, las imágenes con los valores TemporalId más altos se pueden eliminar (extraer) sin ningún efecto en la decodificación de vídeo, ya que las imágenes no se pueden utilizar para interpredecir cualquiera de las imágenes restantes. Del mismo modo, las imágenes con los valores TemporalId más grandes y los siguientes más grandes se pueden eliminar sin ningún efecto en la decodificación de vídeo, ya que estas imágenes no se pueden utilizar para interpredecir cualquiera de las imágenes restantes, y así sucesivamente. Aunque es posible que la eliminación de dichas imágenes basada en los valores de TemporalId no afecte a la decodificación del vídeo ni mejore el uso del ancho de banda (por ejemplo, debido a la eliminación de imágenes), puede haber un impacto negativo en la calidad del vídeo si se eliminan dichas imágenes.
El proceso de extracción del subflujo de bits especificado en la subcláusula 10.1 describe ciertos requisitos para la conformidad. Como un ejemplo, cualquier subflujo de bits extraído de un flujo de bits por el proceso con cualquier valor TemporalId más alto de objetivo en el rango de 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 un flujo de bits de confirmación.
Un período de escena puede incluir y solo puede incluir todas las AU que comienzan desde una AU que contiene un mensaje<s>E<i>de información de escena hasta la siguiente AU, en orden de decodificación, que contiene un mensaje SEI de información de escena o el final de la secuencia de vídeo codificada, lo que ocurra primero, en orden de decodificación. Un período de posfiltro puede incluir y solo puede incluir todas las AU que comienzan desde una AU que contiene un mensaje SEI de sugerencia de posfiltro hasta la siguiente AU, en orden de decodificación, que contiene un mensaje SEI de sugerencia de posfiltro o el final de la secuencia de vídeo codificada, lo que ocurra primero, en orden de decodificación.
Si el mensaje SEI de temporización de subimagen no incluye un ID de unidad de decodificación, una unidad de decodificación puede incluir y sólo puede incluir un conjunto de unidades NAL dentro de una AU desde una unidad NAL SEI que contiene un mensaje SEI de temporización de subimagen hasta la siguiente unidad NAL SEI que contiene un mensaje SEI de temporización de subimagen o el final de la UA, lo que ocurra primero, en orden de decodificación. De lo contrario, una unidad de decodificación puede incluir y solo puede incluir un conjunto de unidades NAL dentro de una AU desde una unidad NAL SEI que contiene un mensaje SEI de temporización de subimagen hasta la siguiente unidad NAL SEI que contiene un mensaje SEI de temporización de subimagen con un valor diferente de ID de unidad de decodificación o el final de la UA, lo que ocurra primero, en orden de decodificación.
continuación
(continuación)
La Tabla 5 ilustra los diferentes tipos de mensajes SEI, e ilustra la relación entre los diferentes tipos de mensajes SEI, el valor de identificación temporal de la unidad de acceso, y si existen restricciones y los tipos de restricciones en el mensaje SEI. Por ejemplo, el codificador de vídeo 20 puede determinar un tipo de mensaje SEI y puede determinar el valor de identificación temporal de la unidad de acceso. Basado en el valor de identificación temporal y el tipo de mensaje SEI, el codificador de vídeo 20 puede determinar si se permite la presencia del mensaje SEI.
Como un ejemplo, suponga que el tipo de mensaje SEI es el mensaje SEI del 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 SEI del período de búfer. Como otro ejemplo, suponga que el tipo de mensaje SEI es el mensaje 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 SEI de temporización de imagen.
De acuerdo con las técnicas descritas en esta divulgación, el codificador de vídeo 20 y el 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 de las unidades de decodificación), y el decodificador de vídeo 30 puede recibir los identificadores de las unidades de decodificación (por ejemplo, recibir y decodificar los identificadores de las unidades de decodificación). En este sentido, un codificador de vídeo, como el codificador de vídeo 20 y el 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 modo 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 de la unidad de acceso basado en el identificador único de cada una de las unidades de decodificación. Además, 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 un primer DU, y codificar un segundo identificador diferente para un segundo 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 segmento. En estos ejemplos, el identificador único puede identificar la unidad de decodificación a la que pertenece el segmento, y el codificador de vídeo puede determinar que la unidad NAL que incluye el segmento está asociada con la unidad de decodificación identificada por el identificador de la unidad de decodificación en el encabezado del segmento. En algunos ejemplos, el codificador de vídeo puede codificar el identificador único para la unidad de decodificación en un mensaje SEI. Por ejemplo, el codificador de vídeo puede codificar el identificador único en un mensaje SEI (por ejemplo, el mensaje SEI de información de la unidad de decodificación) que también incluye información sobre cuándo se debe eliminar la unidad de decodificación del búfer de imagen codificada (CPB). El identificador único de una unidad de decodificación puede identificar la unidad de decodificación que contiene el mensaje SEI de información de la 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 de cada unidad de decodificación como un índice de la unidad de decodificación en la lista de todas las unidades de decodificación de 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 NAL VLC en orden de decodificación. En algunos ejemplos, el codificador de vídeo también puede codificar el mensaje SEI de modo que el mensaje SEI preceda a la última unidad NAL VCL en la AU en orden de decodificación.
Las FIG. 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 FIG. 2A ilustra la unidad de acceso 34 y la FIG. 2B ilustra la unidad de acceso 50. La unidad de acceso 34 y la unidad de acceso 50 incluyen los 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 la 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 del dispositivo de almacenamiento 32.
En las FIG. 2A y 2B, la unidad de acceso 34 y la unidad de acceso 50 incluyen una pluralidad de unidades de decodificación, lo que 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 la operación en el nivel de subimagen está permitido para la unidad de acceso 34 y la unidad de acceso 50.
En la FIG. 2A, la unidad de acceso 34 incluye las unidades de decodificación 36A-36C (denominadas colectivamente "unidades de decodificación 36"). La unidad de decodificación 36A incluye una primera unidad NAL SEI 38A y una segunda unidad NAL SEI 38B. Las unidades NAL SEI 38A y 38B incluyen un mensaje SEI (por ejemplo, mensaje SEI de información de la unidad de decodificación) que indica información sobre el tiempo de eliminación 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 las unidades NAL 40A-40D.
La unidad de decodificación 36B incluye una tercera unidad NAL SEI 42 que incluye un mensaje SEI que indica información sobre el tiempo de eliminación 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 las unidades NAL 44A y 44B.
La unidad de decodificación 36C incluye una cuarta unidad NAL SEI 46A y una quinta unidad NAL SEI 46B. Tanto las unidades NAL SEI 46A como 46B incluyen un mensaje SEI (por ejemplo, mensaje SEI de información de la unidad de decodificación) que indica información sobre el tiempo de eliminación 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 36C también incluye las unidades NAL 48A y 48B.
El decodificador de vídeo 30 puede determinar qué unidades NAL están asociadas a qué unidades de decodificación basado en el mensaje SEI de información de la unidad de decodificación. Por ejemplo, el decodificador de vídeo 30 puede determinar que la unidad NAL SEI 38A y las unidades NAL (por ejemplo, las unidades NAL 40A y 40B) que siguen a la unidad NAL SEI 38A están asociadas con la unidad de decodificación 36A porque el mensaje SEI de información de la unidad de decodificación de la unidad NAL SEI 38A incluía el identificador de la unidad de decodificación para la unidad de decodificación 36A. Entonces, el decodificador de vídeo 30 puede determinar que la unidad NAL SEI 38B también es parte de la unidad de decodificación 36A porque el mensaje SEI de información de la unidad de decodificación de la unidad NAL SEI 38B es una copia del mensaje SEI de información de la unidad de decodificación de la unidad NAL SEI 38A (por ejemplo, incluye la misma información de tiempo de eliminación y el mismo identificador de unidad de decodificación). En este ejemplo, el decodificador de vídeo 30 puede determinar que las unidades NAL 40C y 40D también están asociadas con la unidad de decodificación 36A porque estas unidades NAL siguen a la unidad NAL SEI 38B y preceden a otra unidad NAL SEI con un mensaje s E i de información de la unidad de decodificación.
El decodificador de vídeo 30 puede determinar que la unidad NAL SEI 42 no pertenece a la unidad de decodificación 36A porque el identificador de la unidad de decodificación en el mensaje SEI de información de la unidad de decodificación de la unidad NAL SEI 42 es diferente del identificador de la unidad de decodificación en el mensaje SEI de información de la unidad de decodificación para las unidades NAL SEI 38A y 38B. En este caso, el decodificador de vídeo 30 puede determinar que la unidad NAL SEI 42 está asociada con otra unidad de decodificación (por ejemplo, la unidad de decodificación 36B), y las unidades NAL 44A y 44B también están asociadas con la unidad de decodificación 36B porque estas unidades NAL siguen a la unidad NAL SEI 42 y preceden a otra unidad NAL SEI con un mensaje SEI de información de la 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 NAL SEI 46A está asociada con una unidad de decodificación diferente (por ejemplo, la unidad de decodificación 36C) porque el identificador de la unidad de decodificación en el mensaje SEI de información de la unidad de decodificación de la unidad NAL SEI 46A es diferente de los identificadores de unidad de decodificación anteriores (por ejemplo, uno mayor que el anterior). El decodificador de vídeo 30 determina que la unidad NAL 48A está asociada con la unidad de decodificación 36C porque la unidad NAL 48A sigue a la unidad NAL SEI 46A y precede a la unidad NAL SEI 46B que incluye un mensaje SEI de información de la unidad de decodificación.
En este ejemplo, la unidad NAL SEI 46B incluye un mensaje SEI de información de la unidad de decodificación que incluye el mismo identificador de unidad de decodificación que el mensaje SEI de información de la unidad de decodificación de la unidad NAL SEI 46A (por ejemplo, los mensajes SEI de información de la unidad de decodificación son copias). El decodificador de vídeo 30 puede determinar entonces que la unidad NAL 48B está asociada con la unidad de decodificación 36C porque la unidad NAL 48B es la última unidad NAL en la unidad de acceso 34.
En la FIG. 2A, los ejemplos del mensaje SEI de información de la unidad de decodificación incluyen los ejemplos descritos anteriormente con respecto a las Tablas 3 y 4. Además, en la FIG. 2A, las unidades NAL que pertenecen a una unidad de decodificación son contiguas (es decir, las unidades NAL de otras unidades de decodificación no se intercalan con las unidades NAL de una unidad de decodificación).
En la FIG. 2A, el codificador de vídeo 20 puede generar para salida y emisión los identificadores de unidad de decodificación para cada unidad de decodificación en las correspondientes unidades de decodificación. Por ejemplo, el codificador de vídeo 20 incluye los identificadores de unidad de decodificación en los mensajes SEI de información de unidad de decodificación de la unidad NAL SEI 38A y la unidad NAL SEI 38B en la unidad de decodificación 36A correspondiente, y emite los identificadores de unidad de decodificación como parte de los mensajes SEI de información de unidad de decodificación de las unidades NAL SEI 38A y 38B. El codificador de vídeo 20 incluye los identificadores de unidad de decodificación en el mensaje SEI de información de la unidad de decodificación de la unidad NAL SEI 42 en la unidad de decodificación 36B correspondiente, e incluye los identificadores de unidad de decodificación en los mensajes SEI de la unidad de decodificación de la unidad NAL SEI 46A y la unidad NAL SEI 46B en la unidad de decodificación 36C correspondiente. En estos ejemplos, el codificador de vídeo 20 emite los identificadores de unidad de decodificación como parte de los mensajes SEI de la unidad de decodificación respectiva de las unidades NAL SEI 42, 46A y 46B.
La inclusión de los mensajes SEI de la unidad de decodificación permite al decodificador de vídeo 30 determinar qué unidades NAL están asociadas a qué unidades de decodificación basado en los identificadores de las unidades de decodificación, de modo que incluso si se pierde una unidad NAL, el decodificador de vídeo 30 todavía puede determinar qué unidades NAL están asociadas a qué unidades de decodificación. Por ejemplo, supongamos que se pierde la unidad NAL 40C. En este ejemplo, el decodificador de vídeo 30 todavía puede determinar que la unidad NAL 40D está asociada con la unidad de decodificación 36A porque la unidad NAL 40D es subsiguiente a la unidad NAL SEI 38B, cuyo mensaje SEI de información de la unidad de decodificación indicó un identificador de unidad de decodificación para la unidad de decodificación 36A, y precede a la unidad NAL SEI 42, cuyo mensaje SEI de información de la unidad de decodificación indicó un identificador de unidad de decodificación para la unidad de decodificación 36B. Además, dado que el mensaje SEI de la unidad de decodificación indica los identificadores de la unidad de decodificación, el codificador de vídeo 20 puede incluir múltiples copias del mensaje SEI de la unidad de decodificación en una unidad de decodificación.
Como se ilustra en la FIG. 2B, la unidad de acceso 50 incluye las unidades de decodificación 52A-52C (denominadas colectivamente "unidades de decodificación 52"). La unidad de decodificación 52A incluye las unidades NAL de segmento 54A y 54B, la unidad de decodificación 52B incluye las unidades NAL de segmento 64A-64C y la unidad de decodificación 52C incluye las unidades NAL de segmento 78A y 78B. Cada una de las unidades NAL de segmento incluye un encabezado de segmento y un cuerpo de segmento. El encabezado de segmento incluye información de encabezado, incluido un identificador de unidad de decodificación, y el cuerpo de segmento incluye datos de vídeo para decodificar el segmento.
Por ejemplo, la unidad NAL de segmento 54A incluye el encabezado de segmento 56 y el cuerpo de segmento 58, y la unidad NAL de segmento 54B incluye el encabezado de segmento 60 y el cuerpo de segmento 62. En este ejemplo, el encabezado de segmento 56 de la unidad NAL de segmento 54A y el encabezado de segmento 60 de la unidad NAL de segmento 54B incluyen el mismo identificador de unidad de decodificación, que el decodificador de vídeo 30 utiliza para determinar que la unidad NAL 54A y la unidad NAL 54B están asociadas con la misma unidad de decodificación (por ejemplo, la unidad de decodificación 52A).
La unidad NAL de segmento 64A incluye el encabezado de segmento 66 y el cuerpo de segmento 68, la unidad NAL de segmento 64B incluye el encabezado de segmento 70 y el cuerpo de segmento 72, y la unidad NAL de segmento 64C incluye el encabezado de segmento 74 y el cuerpo de segmento 76. En este ejemplo, el encabezado de segmento 66 de la unidad NAL de segmento 64A, el encabezado de segmento 70 de la unidad NAL de segmento 64B y el encabezado de segmento 74 de la unidad NAL de segmento 64C incluyen el mismo identificador de unidad de decodificación, que el decodificador de vídeo 30 utiliza para determinar que la unidad NAL 64A, la unidad NAL 64B y la unidad NAL 64C están asociadas con la misma unidad de decodificación (por ejemplo, unidad de decodificación 52B).
La unidad NAL de segmento 78A incluye el encabezado de segmento 80 y el cuerpo de segmento 82, y la unidad NAL de segmento 78B incluye el encabezado de segmento 84 y el cuerpo de segmento 86. En este ejemplo, el encabezado de segmento 80 de la unidad NAL de segmento 78A y el encabezado de segmento 84 de la unidad NAL de segmento 78B incluyen el mismo identificador de unidad de decodificación, que el decodificador de vídeo 30 utiliza para determinar que la unidad NAL 78A y la unidad NAL 78B están asociadas con la misma unidad de decodificación (por ejemplo, la unidad de decodificación 52C).
En la FIG. 2B, los ejemplos del mensaje SEI de información de la unidad de decodificación incluyen los ejemplos descritos anteriormente con respecto a la Tabla 2. Al igual que en la FIG. 2A, en la FIG. 2B, las unidades NAL que pertenecen a una unidad de decodificación son contiguas (es decir, las unidades NAL de otras unidades de decodificación no se intercalan con las unidades 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 segmento 56 y 60 para la correspondiente unidad de decodificación 52A, y emite el identificador de unidad de decodificación como parte de los encabezados de segmento 56 y 60. Además, el codificador de vídeo 20 incluye el identificador de unidad de decodificación en los encabezados de segmento 66, 70 y 74 para la unidad de decodificación correspondiente 52B, y emite el identificador de unidad de decodificación como parte de los encabezados de segmento 66, 70 y 74. Del mismo modo, el codificador de vídeo 20 incluye el identificador de unidad de decodificación en los encabezados de segmento 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 segmento 80 y 84.
En el ejemplo ilustrado en la FIG. 2B, el decodificador de vídeo 30 no necesita depender de las posiciones de los mensajes SEI SPT para determinar qué unidad NAL de segmento está asociada con qué unidad de decodificación. En su lugar, el decodificador de vídeo 30 utiliza el identificador de unidad de decodificación indicado en los encabezados de segmento de la unidad NAL de segmento para determinar qué unidad NAL de segmento está asociada a qué unidad de decodificación. En este caso, incluso si se pierde una unidad NAL de segmento (por ejemplo, la unidad NAL de segmento 56B), el decodificador de vídeo 30 puede seguir siendo capaz de determinar qué unidad NAL está asociada a qué unidades de decodificación basado en el encabezado del segmento.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar las técnicas descritas en esta divulgación. El codificador de vídeo 20 puede realizar codificación intra e inter (codificación o decodificación de intrapredicción y codificación o decodificación de interpredicción) de bloques de vídeo dentro de segmentos de vídeo. La codificación intra está basada en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de un fotograma o imagen de vídeo determinado. La codificación inter está basada en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de fotogramas o imágenes adyacentes de una secuencia de vídeo. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresión basados en el espacio. Los intermodos, como la predicción unidireccional (modo P) o la bipredicción (modo B), pueden hacer referencia a cualquiera de varios modos de compresión basados en el tiempo.
En el ejemplo de la FIG. 3, el codificador de vídeo 20 incluye una unidad de partición 135, una unidad de procesamiento de predicción 141, una unidad de filtro 163, una memoria de imagen de referencia 164 (a veces denominada búfer de imagen decodificada), un sumador 150, una unidad de procesamiento de transformación 152, una unidad de procesamiento de cuantización 154 y una unidad de codificación de entropía 156. La unidad de procesamiento de predicción 141 incluye la unidad de estimación de movimiento 142, la unidad de compensación de movimiento 144 y la unidad de intrapredicción 146. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye la unidad de procesamiento de cuantización inversa 158, la unidad de procesamiento de transformación inversa 160 y el sumador 162. La unidad de filtro 163 generalmente puede representar uno o más filtros de bucle, como un filtro de desbloqueo, un filtro de bucle adaptativo (ALF) y un filtro de desplazamiento adaptativo de muestra (SAO). Aunque la unidad de filtro 163 se muestra en la FIG. 3 como un filtro en bucle, en otras configuraciones, la unidad de filtro 163 puede implementarse como un filtro de bucle posterior, en cuyo caso se pueden utilizar datos sin filtrar en el bucle de codificación.
Como se muestra en La FIG. 3, el codificador de vídeo 20 recibe datos de vídeo y la unidad de partición 135 particiona los datos en bloques de vídeo. Esta partición también puede incluir la partición en segmentos, 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 cuaternario de las LCU y las CU. El codificador de vídeo 20 generalmente ilustra los componentes que codifican bloques de vídeo dentro de un segmento de vídeo que se va a codificar. El segmento se puede dividir en múltiples bloques de vídeo (y posiblemente en conjuntos de bloques de vídeo denominados mosaicos). La unidad de procesamiento de predicción 141 puede seleccionar uno de una pluralidad de modos de codificación posibles, como uno de una pluralidad de modos de codificación intra o uno de una pluralidad de modos de codificación inter, para el bloque de vídeo actual basado en los resultados de error (por ejemplo, la tasa de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 141 puede proporcionar el bloque resultante intra o inter codificado al sumador 150 para generar datos de bloques residuales y al sumador 162 para reconstruir el bloque codificado para su uso como imagen de referencia.
La unidad de intrapredicción 146 dentro de la unidad de procesamiento de predicción 141 puede realizar la codificación intrapredictiva del bloque de vídeo actual en relación con uno o más bloques vecinos en el mismo fotograma o segmento que el bloque actual que se va a codificar 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 la codificación interpredictiva del bloque de vídeo actual en relación con uno o más bloques predictivos en una o más imágenes de referencia para proporcionar compresión temporal.
La unidad de estimación de movimiento 142 puede configurarse para determinar el modo de interpredicción para un segmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar segmentos de vídeo en la secuencia como segmentos P, segmentos B o segmentos GPB. La unidad de estimación de movimiento 142 y la unidad de compensación de movimiento 144 pueden estar muy 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 de los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de un fotograma o imagen de vídeo actual en relación con un bloque predictivo dentro de una imagen de referencia.
Un bloque predictivo es un bloque que se encuentra muy cerca de la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, que puede determinarse por la suma de la diferencia absoluta (SAD), la suma de la diferencia al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para las posiciones de píxeles subenteros de las imágenes de referencia almacenadas en la memoria de imagen 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íxel de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 142 puede realizar una búsqueda de movimiento relativa a las posiciones de píxeles completos y las posiciones fraccionarias de píxeles y generar un vector de movimiento con precisión de píxeles fraccionarios.
La unidad de estimación de movimiento 142 calcula un vector de movimiento para una PU de un bloque de vídeo en un segmento intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse de una primera lista de imágenes de referencia (Lista 0) o de 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 de entropía 156 y a la unidad de compensación de movimiento 144.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 144, puede implicar la obtención o generación del bloque predictivo basado en el vector de movimiento determinado por estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxeles. Al recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 144 puede localizar el bloque predictivo al que 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íxel del bloque predictivo de los valores de píxel del bloque de vídeo actual que se está codificando, 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 de luminancia y croma. El sumador 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 el segmento de vídeo para su uso por el decodificador de vídeo 30 en la decodificación de los bloques de vídeo del segmento de vídeo.
La unidad de intrapredicción 146 puede intrapredecir un bloque actual, como 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 ha descrito anteriormente. En particular, la unidad de intrapredicción 146 puede determinar un modo de intrapredicción que se utilizará para codificar un bloque actual. En algunos ejemplos, la unidad de intrapredicción 146 puede codificar un bloque actual utilizando diversos modos de intrapredicción, por ejemplo, durante pasos de codificación separados, y la unidad de intrapredicción 146 (o una unidad de selección de modo (no ilustrada), en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado para utilizar de los modos probados. Por ejemplo, la unidad 146 de intrapredicción puede calcular los valores de distorsión de tasa utilizando 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 se codificó para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) utilizada para producir el bloque codificado. La unidad de intrapredicción 146 puede calcular relaciones a partir de las distorsiones y las tasas de los diversos bloques codificados para determinar qué modo de intrapredicción presenta 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 la unidad de codificación de bloque a entropía 156. La unidad de codificación de entropía 156 puede codificar la información que indica el modo de intrapredicción seleccionada de acuerdo con las técnicas de esta divulgación. El codificador de vídeo 20 puede incluir en el flujo de bits transmitidos datos de configuración, que pueden incluir una pluralidad de tablas de índices en modo de intrapredicción y una pluralidad de tablas de índices en modo de intrapredicción modificadas (también denominadas tablas de asignación de palabras codificadas), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índices en modo de intrapredicción, y una tabla de índices en modo de intrapredicción modificada para utilizar en cada uno de los contextos.
Después de que la unidad de procesamiento de predicción 141 genere el bloque predictivo para el bloque de vídeo actual a través de la interpredicción o la 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 TU y aplicarse a la unidad de procesamiento de transformación 152. La unidad de procesamiento de transformación 152 transforma los datos de vídeo residuales en coeficientes de transformación residuales mediante una transformación, como una transformada de coseno discreta (DCT) o una transformación conceptualmente similar. La unidad de procesamiento de transformación 152 puede convertir los datos de vídeo residuales de un dominio de píxeles a un dominio de transformación, como un dominio de frecuencia.
La unidad de procesamiento de transformación 152 puede enviar los coeficientes de transformación resultantes a la unidad de procesamiento de cuantización 154. La unidad de procesamiento de cuantización 154 cuantiza los coeficientes de transformación para reducir aún más la tasa de bits. El proceso de cuantización puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantización puede modificarse ajustando un parámetro de cuantización. En algunos ejemplos, la unidad de procesamiento de cuantización 154 puede entonces realizar un escaneo de la matriz, incluidos los coeficientes de transformación cuantizados. Alternativamente, la unidad de codificación de entropía 156 puede realizar el escaneo.
Después de la cuantización, la entropía de la unidad de codificación de entropía 156 codifica los coeficientes de transformación cuantizados. Por ejemplo, la unidad de codificación de entropía 156 puede realizar la codificación de longitud variable adaptable al contexto (CAVLC), la codificación aritmética binaria adaptable al contexto (CABAC), la codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), la codificación de entropía de partición de intervalos de probabilidad (PIPE) u otra metodología o técnica de codificación de entropía. Después de la codificación de entropía por la unidad de codificación de entropía 156, el flujo de bits codificado puede transmitirse al decodificador de vídeo 30 o archivarse para su posterior transmisión o recuperación por el decodificador de vídeo 30. La unidad de codificación de entropía 156 también puede codificar por entropía los vectores de movimiento y los demás elementos de sintaxis para el segmento de vídeo actual que se está codificando.
La unidad de procesamiento de cuantización inversa 158 y la unidad de procesamiento de transformación inversa 160 aplican la cuantización inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio del píxel para su uso posterior como bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 144 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. La unidad 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 su uso en la estimación de movimiento. El sumador 162 añade 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 el almacenamiento en la memoria de imagen de referencia 164. El bloque de referencia puede ser utilizado por la unidad de estimación de movimiento 142 y la unidad de compensación de movimiento 144 como bloque de referencia para interpredecir un bloque en un fotograma o imagen de vídeo posterior.
El codificador de vídeo 20 de La FIG. 3 representa un ejemplo de un codificador de vídeo configurado para implementar en 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 NAL y asociar las unidades 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 SEI de información de la unidad de decodificación de una unidad NAL SEI y/o incluir los identificadores de la unidad de decodificación en encabezados de segmento de segmentos de unidades NAL de segmento. La unidad de codificación de entropía 156 puede codificar la entropía de las unidades de decodificación (por ejemplo, las unidades 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 junto con una o más otras unidades del codificador de vídeo 20 puede implementar los ejemplos descritos anteriormente. En algunos ejemplos, un procesador o unidad de codificador de vídeo 20 (no mostrado en la Fig. 3) puede, solo o junto con otras unidades del codificador de vídeo 20, implementar los ejemplos descritos anteriormente.
La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de decodificador de vídeo 30 que puede implementar las técnicas de esta divulgación. En el ejemplo de La FIG. 4, el decodificador de vídeo 30 incluye una unidad de decodificación de entropía 180, una unidad de procesamiento de predicción 181, una unidad de procesamiento de cuantización inversa 186, una unidad de procesamiento de transformación inversa 188, un sumador 190, una unidad de filtro 191, una memoria de imagen de referencia 192 (a veces denominada búfer de imagen de decodificación (DBP)) y un búfer de imagen codificada (CPB) 194. La unidad de procesamiento de predicción 181 incluye la unidad de compensación de movimiento 182 y la unidad de intrapredicción 184. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 de la FIG. 3.
Durante el proceso de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa los bloques de vídeo de un segmento de vídeo codificado y los 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 de una entidad de red 29. La entidad de red 29 puede ser, por ejemplo, un servidor, un elemento de red compatible con medios (MANE), un editor/empalmador de vídeo u otro dispositivo similar configurado para implementar una o más de las técnicas descritas anteriormente. Como se ha descrito 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 el 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 ser realizada por el mismo dispositivo que comprende el decodificador de vídeo 30.
El búfer de imagen codificada 194 recibe las imágenes codificadas de 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 a CPB 194. Además, el flujo de bits codificado puede incluir mensajes SEI que definen la información para el procesamiento de las imágenes dentro de CPB 194 (por ejemplo, los tiempos de eliminación de las unidades de decodificación de una unidad de acceso).
La unidad de decodificación de entropía 180 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar coeficientes cuantizados, vectores de movimiento y otros elementos de sintaxis. La unidad de decodificación de entropía 180 enví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 segmento de vídeo y/o en el nivel de bloque de vídeo.
Cuando el segmento de vídeo se codifica como un segmento intracodificado (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 del segmento de vídeo actual basado en un modo de intrapredicción señalado y datos de bloques previamente decodificados del fotograma o imagen actual. Cuando el fotograma de vídeo se codifica como un segmento intercodificado (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 del segmento de vídeo actual basado en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación de 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 fotogramas de referencia (imágenes), Lista 0 y Lista 1, utilizando técnicas de construcción por defecto, basadas en imágenes de referencia almacenadas en la memoria de imagen de referencia 192.
La unidad de compensación de movimiento 182 determina la información de predicción para un bloque de vídeo del segmento de vídeo actual mediante el análisis de los vectores de movimiento y otros elementos de sintaxis, y utiliza la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad de compensación de movimiento 182 utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o inter) utilizado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, estado de interpredicción para cada bloque de vídeo intercodificado del segmento y otra información para decodificar los bloques de vídeo en el segmento de vídeo actual.
La unidad de compensación de movimiento 182 también puede realizar interpolación basada en filtros de interpolación. La unidad de compensación de movimiento 182 puede utilizar filtros de interpolación como los utilizados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular los valores interpolados de los píxeles subenteros de los bloques de referencia. En este caso, la unidad de compensación de movimiento 182 puede determinar los filtros de interpolación utilizados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y utilizar los filtros de interpolación para producir bloques predictivos.
La unidad de procesamiento de cuantización inversa 186 cuantiza inversamente, es decir, descuantiza, los coeficientes de transformación cuantizados proporcionados en el flujo de bits y decodificados por la unidad de decodificación de entropía 180. El proceso de cuantización inversa puede incluir el uso de un parámetro de cuantización calculado por el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo para determinar un grado de cuantización y, asimismo, un grado de cuantización inversa que debe aplicarse. La unidad de procesamiento de transformación inversa 188 aplica una transformación inversa, por ejemplo, una DCT inversa, una transformación entera inversa o un proceso de transformación inversa conceptualmente similar, a los coeficientes de transformación para producir bloques residuales en el dominio de píxeles.
Después de que la unidad de compensación de movimiento 182 genere el bloque predictivo para el bloque de vídeo actual basado 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 de la unidad de procesamiento de transformación inversa 188 con los bloques predictivos correspondientes generados por la unidad de compensación de movimiento 182. El sumador 190 representa el componente o componentes que realizan esta operación de sumatoria. Si se desea, también se pueden utilizar 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 la calidad del vídeo. La unidad de filtro 191 puede representar uno o más filtros de bucle, como un filtro de desbloqueo, un filtro de bucle adaptable (ALF) y un filtro de desplazamiento adaptativo de muestra (SAO). Aunque la unidad de filtro 191 se muestra en la FIG. 4 como un filtro en bucle, en otras configuraciones, la unidad de filtro 191 puede implementarse como un filtro de bucle posterior. Los bloques de vídeo decodificados en un fotograma o imagen dada se almacenan en la memoria de imagen de referencia 192, que almacena las imágenes de referencia utilizadas para la compensación de movimiento posterior. La memoria de imagen de referencia 192 también almacena vídeo decodificado para su posterior presentación en un dispositivo de visualización, como el dispositivo de visualización 31 de La FIG. 1.
El decodificador de vídeo 30 de La FIG. 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 de nivel de subimagen en CPB 194. Si se permite la operación a nivel de subimagen, la unidad de procesamiento de predicción 181 puede determinar qué unidades NAL están asociadas a 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 NAL SEI incluye el mensaje SEI de información de la unidad de decodificación. A partir del mensaje SEI de información de la unidad de decodificación, la unidad de procesamiento de predicción 181 puede determinar el tiempo de eliminación de la CPB 194 de la unidad de decodificación y el identificador de la unidad de decodificación. La unidad de procesamiento de predicción 181 puede determinar que la unidad NAL SEI y todas las unidades NAL que siguen a la unidad NAL SEI hasta que otra unidad NAL SEI que incluya un mensaje SEI de información de la unidad de decodificación con un identificador de unidad de decodificación diferente se asocien con la unidad de decodificación identificada por el mensaje SEI de información de la unidad de decodificación.
Como otro ejemplo, la unidad de procesamiento de predicción 181 puede determinar que un segmento de un encabezado de segmento 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 NAL del segmento que incluye el segmento y su encabezado de segmento basado en el identificador de decodificación.
De esta manera, incluso si una unidad 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 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 en que la unidad de decodificación debe eliminarse de CPB 194 porque puede haber múltiples copias del mensaje SEI de la unidad de decodificación dentro de la unidad de decodificación.
En algunos ejemplos, una unidad diferente a 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 junto con una o más otras unidades del decodificador de vídeo 30 puede implementar los ejemplos descritos anteriormente. En algunos ejemplos, un procesador o una unidad de decodificador de vídeo 30 (no mostrada en la Fig. 4) puede, solo o junto con otras unidades del decodificador de vídeo 30, implementar los ejemplos descritos anteriormente.
La FIG. 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, se describe el ejemplo de La FIG.
5 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 de 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 NAL están asociadas a qué unidades de decodificación (202) de la unidad de acceso. Por ejemplo, cada una de las unidades de decodificación puede representar datos de vídeo de una parte de una imagen, y las unidades 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 NAL y determinar que las unidades NAL que representan los datos de vídeo de la unidad de decodificación están asociadas a la unidad de decodificación.
El codificador de vídeo 20 genera para salida cada identificador único en las unidades de decodificación correspondientes para indicar qué unidades NAL están asociadas a 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 de cada una de las unidades de decodificación a través de la unidad de codificación de entropía 156. En estos ejemplos, se puede considerar que la codificación genera para emisión. Además, el codificador de vídeo 20 puede emitir (por ejemplo, señalar) cada identificador único en las correspondientes unidades de decodificación para indicar qué unidades NAL están asociadas a 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 SEI de información de la unidad de decodificación, y emitir todas las unidades 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 SEI de información de la 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 mensaje SEI de segunda unidad de decodificación. Después de la emisión de todas las unidades NAL asociadas a la primera unidad de decodificación, el codificador de vídeo 20 puede emitir el identificador de la segunda unidad de decodificación en el mensaje SEI de la segunda 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 los encabezados de segmento de las unidades NAL de segmento.
En algunos ejemplos, el codificador de vídeo 20 puede emitir, como parte de una unidad de decodificación, un mensaje SEI de la primera unidad de decodificación que indica información sobre el tiempo de eliminación 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 SEI de la unidad de decodificación que indica información sobre el tiempo de eliminación de la unidad de decodificación. En algunos casos, el segundo mensaje SEI de la unidad de decodificación es una copia del primer mensaje SEI de la unidad de decodificación. En algunos ejemplos, el codificador de vídeo 20 puede incluir un mensaje SEI en la unidad de acceso e incluir una copia del mensaje SEI en la unidad de acceso. El codificador de vídeo 20 puede emitir la unidad de acceso que incluye el mensaje SEI y la copia del mensaje SEI.
La FIG. 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. Para propósitos de ilustración, se describe el ejemplo de La FIG. 6 con respecto al decodificador de vídeo 30.
El decodificador de vídeo 30 puede decodificar 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 de la unidad de acceso. Por ejemplo, el decodificador de vídeo 30 puede decodificar un primer identificador para una primera unidad de decodificación en la unidad de acceso y decodificar 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 puede determinar qué unidades NAL están asociadas a qué unidades de decodificación basado en el identificador único de cada unidad de decodificación en la unidad de acceso (208). Por ejemplo, el decodificador de vídeo 30 puede decodificar un primer identificador único a partir de un primer mensaje SEI de información de la unidad de decodificación para una primera unidad de decodificación y decodificar un segundo mensaje SEI de la unidad de decodificación para una segunda unidad de decodificación. El decodificador de vídeo 30 puede determinar que una primera unidad NAL SEI que incluye el primer mensaje SEI de información de la unidad de decodificación y todas las unidades NAL que siguen a la primera unidad NAL SEI hasta una segunda unidad NAL SEI que incluye el segundo mensaje SEI de información de la unidad de decodificación están asociadas con la primera unidad de decodificación. Como otro ejemplo, el decodificador de vídeo 30 puede decodificar el identificador único en un encabezado de segmento de una unidad NAL de segmento y determinar a qué unidad de decodificación está asociada la unidad NAL de segmento basado en el identificador único en el encabezado de segmento.
El decodificador de vídeo 30 puede decodificar unidades NAL basado en la determinación de reconstruir al menos una imagen (210). Por ejemplo, el resultado de decodificar todas las unidades NAL asociadas a todas las unidades de decodificación puede ser la unidad de acceso decodificada. Como se ha descrito anteriormente, la decodificación de una unidad de acceso da como resultado al menos una imagen (por ejemplo, una imagen cuando no se utiliza la codificación de vídeo multivista y múltiples imágenes cuando se utiliza la codificación de vídeo multivista).
En algunos ejemplos, el decodificador de vídeo 30 puede decodificar un primer mensaje SEI de información de la unidad de decodificación que indica información sobre el tiempo de eliminación de una unidad de decodificación. El decodificador de vídeo 30 también puede decodificar un segundo mensaje SEI de información de la unidad de decodificación que se encuentra entre dos unidades NAL asociadas con la unidad de decodificación. En este ejemplo, el segundo mensaje SEI de información de la unidad de decodificación es una copia del primer mensaje SEI de información de la unidad de decodificación. En algunos ejemplos, el decodificador de vídeo 30 puede decodificar un mensaje SEI en la unidad de acceso y decodificar una copia del mensaje SEI en la unidad de acceso.
La FIG. 7 es un diagrama de flujo que ilustra un ejemplo de codificación de datos de vídeo de acuerdo con la invención. Con propósitos de ilustración, se describen las técnicas con respecto a un codificador de vídeo. Algunos ejemplos de codificador de vídeo son el codificador de vídeo 20 y el decodificador de vídeo 30. Por ejemplo, cuando se codifica vídeo, el ejemplo del codificador de vídeo es el codificador de vídeo 20. Al decodificar vídeo, el ejemplo del codificador de vídeo es el decodificador de vídeo 30.
Como se ilustra en La FIG. 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 ha descrito anteriormente, la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen, y el mensaje SEI define una característica de los datos de vídeo (por ejemplo, características como las descritas anteriormente en los Tablas 1 y 5). En algunos ejemplos, el codificador de vídeo puede codificar el mensaje SEI en la unidad de acceso para una transmisión multisesión. El codificador de vídeo está configurado para codificar una copia del mensaje SEI en la unidad de acceso (214). En algunos ejemplos, el codificador de vídeo puede codificar la copia del mensaje SEI en la unidad de acceso para la transmisión multisesión.
Por ejemplo, el codificador de vídeo 20 incluye el mensaje SEI antes de una primera unidad de capa de abstracción de red (NAL) de la capa de codificación de vídeo (VCL) en orden de decodificación en la unidad de acceso. El codificador de vídeo 20 incluye la copia del mensaje SEI después de la primera unidad NAL VCL en orden de decodificación y antes de una última unidad NAL VCL en orden de decodificación. En este ejemplo, el codificador de vídeo 20 codifica el mensaje SEI que se incluye antes de la primera unidad NAL VCL y codifica la copia del mensaje SEI que se incluye después de la primera unidad NAL VCL y antes de la última unidad NAL VCL.
Como otro ejemplo de la invención, el decodificador de vídeo 30 decodifica una primera unidad NAL VCL en orden de decodificación en la unidad de acceso y decodifica una última unidad NAL VCL en orden de decodificación en la unidad de acceso. En este ejemplo, el decodificador de vídeo 30 decodifica el mensaje SEI antes de decodificar la primera unidad NAL VCL y decodifica la copia del mensaje SEI después de decodificar la primera unidad NAL VCL y antes de decodificar la última unidad NAL VCL.
En algunos ejemplos, el codificador de vídeo puede determinar un tipo de mensaje 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 la presencia del mensaje SEI basado en el valor de identificación temporal de la unidad de acceso y el tipo de mensaje SEI. En estos ejemplos, el codificador de vídeo puede codificar el mensaje SEI basado en la determinación de si se permite la presencia del mensaje SEI.
En uno o más ejemplos, las funciones descritas pueden ser implementadas 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ódigos, a un medio legible por ordenador y ser ejecutadas por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible, como los medios de almacenamiento de datos, o medios de comunicación, incluido cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento tangibles legibles por ordenador que no son transitorios o (2) un medio de comunicación como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder una o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
En aún otros ejemplos, esta divulgación contempla un medio legible por ordenador que comprende una estructura de datos almacenada en él, en el que la estructura de datos incluye y comprende un flujo de bits codificado que está codificado de manera consistente con esta divulgación.
A modo de ejemplo, y sin limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda utilizar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder desde un ordenador. Además, cualquier conexión se denomina correctamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota mediante un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de suscriptor digital (DSL) o tecnologías inalámbricas como infrarrojos, radio y microondas, el cable coaxial, el cable de fibra óptica, el par trenzado, el DSL o las tecnologías inalámbricas como el infrarrojo, la radio y el microondas se incluyen en la definición de medio. Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que se dirigen a medios de almacenamiento tangibles no transitorios. El disco magnético y el disco óptico, tal como se utilizan en este documento, incluyen el disco compacto (CD), el disco láser, el disco óptico, el disco versátil digital (DVD), el disquete y el disco Blu-ray, donde los discos magnéticos suelen reproducir datos magnéticamente, mientras que los discos ópticos 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, como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de solicitud específica (ASIC), matrices lógicas programables en campo (FP-GA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", tal como se utiliza en este documento, puede referirse a cualquiera de las estructuras anteriores o a 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 codificación y decodificación, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por parte de diferentes unidades de hardware. Más bien, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, incluidos uno o más procesadores como se ha descrito anteriormente, junto con el software y/o el firmware adecuados.
Claims (7)
1. Un método para decodificar datos de video de codificación de vídeo de alta eficiencia (HEVC), el método comprende:
decodificar, a partir de un flujo de bits, una primera capa de codificación de vídeo, VCL, capa de abstracción de red, NAL, unidad en orden de decodificación dentro de una unidad de acceso, en donde la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen;
decodificar, desde el flujo de bits, la última unidad NAL VCL en orden de decodificación dentro de la unidad de acceso;
decodificar (212), del flujo de bits, un mensaje de información de mejora suplementaria, SEI, de un tipo particular en la unidad de acceso antes de decodificar la primera unidad NAL VCL, en el que el mensaje SEI del tipo particular define una característica de los datos de vídeo; y
decodificar (214), del flujo de bits, una copia del mensaje SEI del tipo particular en la unidad de acceso después de decodificar la primera unidad NAL VCL y antes de decodificar la última unidad NAL VCL, en el que el contenido de la copia del mensaje SEI del tipo particular en el flujo de bits está restringido para ser idéntico al contenido del mensaje SEI decodificado del tipo particular,
en el que el mensaje SEI comprende uno de:
un mensaje SEI rectangular de panescaneo;
un mensaje SEI de punto de recuperación;
un mensaje SEI de información de escena;
un mensaje SEI de instantánea de fotograma completo;
un mensaje SEI de inicio de segmento de refinamiento progresivo;
un mensaje SEI de final de segmento de refinamiento progresivo;
un mensaje SEI de las características del grano de la película;
un mensaje SEI de sugerencia de posfiltro;
un mensaje SEI de información de mapeo de tonos;
un mensaje SEI de arreglo de empaquetamiento de fotogramas;
un mensaje SEI de orientación de la pantalla; o
un parámetro activo establece el mensaje SEI.
2. Un método para codificar datos de video de codificación de vídeo de alta eficiencia, HEVC, el método comprende:
codificar (212), en una unidad de acceso, un mensaje de información de mejora suplementaria, SEI, de un tipo particular, en el que la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen, y el mensaje SEI del tipo particular define una característica de los datos de vídeo;
incluir el mensaje SEI del tipo particular antes de una primera unidad de capa de abstracción de red, NAL, de la capa de codificación de vídeo, VCL, en orden de decodificación en la unidad de acceso;
codificar (214), basado en una restricción en el contenido de múltiples instancias del mensaje SEI del tipo particular dentro de la unidad de acceso, una copia del mensaje SEI del tipo particular en la unidad de acceso, siendo la restricción que el contenido de la copia codificada del mensaje SEI del tipo particular sea idéntico al contenido del mensaje SEI codificado del tipo particular;
incluir la copia del mensaje SEI después de la primera unidad NAL VCL en orden de decodificación y antes de una última unidad NAL VCL en orden de decodificación en la unidad de acceso,
en el que el mensaje SEI comprende uno de los siguientes:
un mensaje SEI rectangular de panescaneo;
un mensaje SEI de punto de recuperación;
un mensaje SEI de información de escena;
un mensaje SEI de instantánea de fotograma completo;
un mensaje SEI de inicio de segmento de refinamiento progresivo;
un mensaje SEI de final de segmento de refinamiento progresivo;
un mensaje SEI de las características del grano de la película;
un mensaje SEI de sugerencia de posfiltro;
un mensaje SEI de información de mapeo de tonos;
un mensaje SEI de arreglo de empaquetamiento de fotogramas;
un mensaje SEI de orientación de la pantalla; o
un parámetro activo establece el mensaje SEI.
3. El método de la reivindicación 1 o de la reivindicación 2, en el que la decodificación o codificación del mensaje SEI comprende la decodificación o codificación del mensaje SEI en la unidad de acceso para una transmisión multisesión, y en la que la decodificación o codificación de la copia del mensaje SEI comprende la decodificación o codificación de la copia del mensaje SEI en la unidad de acceso para la transmisión multisesión.
4. Un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en él que, cuando son ejecutadas por uno o más procesadores de un dispositivo para codificar datos de vídeo, ocasionan que el uno o más procesadores lleven a cabo el método de cualquiera de las reivindicaciones 1 a 3.
5. Un dispositivo para decodificar codificación de vídeo de alta eficiencia, HEVC, datos de vídeo, el dispositivo que comprende:
medios para decodificar, a partir de un flujo de bits, una primera capa de codificación de vídeo, VCL, capa de abstracción de red, NAL, unidad en orden de decodificación en una unidad de acceso, en donde la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen;
medios para decodificar, del flujo de bits, una última unidad NAL VCL en orden de decodificación en la unidad de acceso;
medios para decodificar (212), del flujo de bits, un mensaje de información de mejora suplementaria, SEI, de un tipo particular en la unidad de acceso antes de decodificar la primera unidad NAL VCL, en el que el mensaje SEI del tipo particular define una característica de los datos de vídeo; y
medios para decodificar (214), del flujo de bits, una copia del mensaje SEI del tipo particular en la unidad de acceso después de decodificar la primera unidad NAL VCL y antes de decodificar la última unidad NAL VCL, en el que el contenido de la copia del mensaje SEI del tipo particular en el flujo de bits se restringe para ser idéntico al contenido del mensaje SEI decodificado del tipo particular,
en el que el mensaje SEI comprende uno de:
un mensaje SEI rectangular de panescaneo;
un mensaje SEI de punto de recuperación;
un mensaje SEI de información de escena;
un mensaje SEI de instantánea de fotograma completo;
un mensaje SEI de inicio de segmento de refinamiento progresivo;
un mensaje SEI de final de segmento de refinamiento progresivo;
un mensaje SEI de las características del grano de la película;
un mensaje SEI de sugerencia de posfiltro;
un mensaje SEI de información de mapeo de tonos;
un mensaje SEI de arreglo de empaquetamiento de fotogramas;
un mensaje SEI de orientación de la pantalla; o
un parámetro activo establece el mensaje SEI.
6. Un dispositivo para codificar datos de vídeo de codificación de vídeo de alta eficiencia, HEVC, el dispositivo comprende:
medios para codificar, en una unidad de acceso, un mensaje de información de mejora suplementaria, SEI, de un tipo determinado, en el que la unidad de acceso incluye los datos de vídeo para reconstruir al menos una imagen, y el mensaje SEI del tipo particular define una característica de los datos de vídeo;
medios para incluir el mensaje SEI del tipo particular antes de una primera capa de codificación de vídeo, VCL, capa de abstracción de red, NAL, unidad en orden de decodificación en la unidad de acceso;
medios para codificar, basado en una restricción en el contenido de múltiples instancias del mensaje SEI del tipo particular dentro de la unidad de acceso, una copia del mensaje SEI del tipo particular en la unidad de acceso, siendo la restricción que el contenido de la copia codificada del mensaje SEI del tipo particular sea idéntico al contenido del mensaje SEI codificado del tipo particular; y
medios para incluir la copia del mensaje SEI después de la primera unidad NAL VCL en orden de decodificación y antes de una última unidad NAL VCL en orden de decodificación en la unidad de acceso,
en el que el mensaje SEI comprende uno de:
un mensaje SEI rectangular de panescaneo;
un mensaje SEI de punto de recuperación;
un mensaje SEI de información de escena;
un mensaje SEI de instantánea de fotograma completo;
un mensaje SEI de inicio de segmento de refinamiento progresivo;
un mensaje SEI de final de segmento de refinamiento progresivo;
un mensaje SEI de las características del grano de la película;
un mensaje SEI de sugerencia de posfiltro;
un mensaje SEI de información de mapeo de tonos;
un mensaje SEI de arreglo de empaquetamiento de fotogramas;
un mensaje SEI de orientación de la pantalla; o
un parámetro activo establece el mensaje SEI.
7. El dispositivo de la reivindicación 6 o de la reivindicación 7, en el que los medios de decodificación o medios para codificar el mensaje SEI comprenden medios para decodificar o medios para codificar el mensaje SEI en la unidad de acceso para una transmisión multisesión, y en el que los medios para decodificar o medios para codificar la copia del mensaje SEI comprende medios para decodificar o medios para codificar la copia del mensaje SEI en la unidad de acceso para la transmisión multisesión.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201261707759P | 2012-09-28 | 2012-09-28 | |
| US13/926,543 US9479782B2 (en) | 2012-09-28 | 2013-06-25 | Supplemental enhancement information message coding |
| PCT/US2013/055865 WO2014051893A1 (en) | 2012-09-28 | 2013-08-20 | Supplemental enhancement information message coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2996260T3 true ES2996260T3 (en) | 2025-02-12 |
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 After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES13759597T Active ES2978906T3 (es) | 2012-09-28 | 2013-08-20 | Asociación de unidades de decodificación resiliente a errores |
Country Status (20)
| Country | Link |
|---|---|
| US (2) | US9479782B2 (es) |
| EP (2) | EP2901678B1 (es) |
| JP (2) | JP6235026B2 (es) |
| KR (2) | KR101741342B1 (es) |
| CN (2) | CN104704841B (es) |
| AR (1) | AR094447A1 (es) |
| AU (2) | AU2013324246B2 (es) |
| BR (2) | BR112015006849B1 (es) |
| CA (2) | CA2884352C (es) |
| ES (2) | ES2996260T3 (es) |
| IL (2) | IL237770B (es) |
| MY (2) | MY173902A (es) |
| PH (2) | PH12015500509A1 (es) |
| PL (1) | PL2901676T3 (es) |
| RU (2) | RU2618942C2 (es) |
| SG (2) | SG11201501632SA (es) |
| TW (3) | TW201424404A (es) |
| UA (2) | UA117355C2 (es) |
| WO (2) | WO2014051893A1 (es) |
| ZA (1) | ZA201502307B (es) |
Families Citing this family (52)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012078001A2 (ko) | 2010-12-08 | 2012-06-14 | 엘지전자 주식회사 | 인트라 예측 방법과 이를 이용한 부호화 장치 및 복호화 장치 |
| JP2015510354A (ja) * | 2012-02-08 | 2015-04-02 | トムソン ライセンシングThomson Licensing | 仮想参照復号器の超低遅延モードを用いるための方法および装置 |
| KR101687092B1 (ko) * | 2012-06-25 | 2016-12-15 | 닛본 덴끼 가부시끼가이샤 | 비디오 인코딩/디코딩 장치, 방법 및 프로그램 |
| HK1204515A1 (en) * | 2012-07-09 | 2015-11-20 | Vid Scale, Inc. | Codec architecture for multiple layer video coding |
| US9479782B2 (en) | 2012-09-28 | 2016-10-25 | Qualcomm Incorporated | Supplemental enhancement information message coding |
| US9374585B2 (en) * | 2012-12-19 | 2016-06-21 | Qualcomm Incorporated | Low-delay buffering model in video coding |
| CN111510725B (zh) * | 2013-07-15 | 2022-12-16 | Ge视频压缩有限责任公司 | 网络装置和差错处理 |
| WO2015009693A1 (en) * | 2013-07-15 | 2015-01-22 | Sony Corporation | Layer based hrd buffer management for scalable hevc |
| EP3055998A1 (en) * | 2013-10-11 | 2016-08-17 | Telefonaktiebolaget LM Ericsson (publ) | Method and arrangement for video transcoding using mode or motion or in-loop filter information |
| WO2015058397A1 (en) | 2013-10-25 | 2015-04-30 | Microsoft Technology Licensing, Llc | Representing blocks with hash values in video and image coding and decoding |
| EP3061253A4 (en) | 2013-10-25 | 2016-08-31 | Microsoft Technology Licensing Llc | PAIRING OF BLOCKS BY HASHING VIDEO AND IMAGE CODING |
| WO2015131325A1 (en) * | 2014-03-04 | 2015-09-11 | Microsoft Technology Licensing, Llc | Hash table construction and availability checking for hash-based block matching |
| US10368092B2 (en) | 2014-03-04 | 2019-07-30 | Microsoft Technology Licensing, Llc | Encoder-side decisions for block flipping and skip mode in intra block copy prediction |
| US10645404B2 (en) * | 2014-03-24 | 2020-05-05 | Qualcomm Incorporated | Generic use of HEVC SEI messages for multi-layer codecs |
| US10063867B2 (en) * | 2014-06-18 | 2018-08-28 | Qualcomm Incorporated | Signaling HRD parameters for bitstream partitions |
| EP3598758B1 (en) * | 2014-06-23 | 2021-02-17 | Microsoft Technology Licensing, LLC | Encoder decisions based on results of hash-based block matching |
| US10244242B2 (en) | 2014-06-25 | 2019-03-26 | Qualcomm Incorporated | Multi-layer video coding |
| EP3416386B1 (en) | 2014-09-30 | 2021-01-13 | Microsoft Technology Licensing, LLC | Hash-based encoder decisions for video coding |
| 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 |
| WO2016117964A1 (ko) * | 2015-01-23 | 2016-07-28 | 엘지전자 주식회사 | 풀 다운된 신호 복원을 위한 방송 신호 송수신 방법 및 장치 |
| 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 | ソニーグループ株式会社 | 送信装置、送信方法、受信装置および受信方法 |
| KR20230021187A (ko) | 2018-02-14 | 2023-02-13 | 돌비 레버러토리즈 라이쎈싱 코오포레이션 | 레이트 왜곡 최적화를 이용한 비디오 코딩에서의 이미지 재성형 |
| CN112585973A (zh) * | 2018-08-17 | 2021-03-30 | 华为技术有限公司 | 视频译码中的参考图像管理 |
| US11140403B2 (en) * | 2018-12-20 | 2021-10-05 | Tencent America LLC | Identifying tile from network abstraction unit header |
| WO2020130922A1 (en) * | 2018-12-20 | 2020-06-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Normative indication of recovery point |
| 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数据的码流转换方法及系统 |
| CN114467116A (zh) | 2019-09-24 | 2022-05-10 | 华为技术有限公司 | 视频译码中的图像头指示 |
| US11395007B2 (en) * | 2019-12-12 | 2022-07-19 | Tencent America LLC | Method for signaling dependent and independent picture header |
| EP4066500A4 (en) | 2019-12-26 | 2023-01-18 | ByteDance Inc. | SETS OF DECODING PARAMETERS IN A VIDEO CODING |
| CN114846786B (zh) | 2019-12-26 | 2025-07-08 | 字节跳动有限公司 | 对视频比特流中的假设参考解码器参数的信令的约束 |
| EP4310796A3 (en) | 2019-12-26 | 2024-04-10 | ByteDance Inc. | Profile, tier and layer indication in video coding |
| KR20220121804A (ko) | 2019-12-27 | 2022-09-01 | 바이트댄스 아이엔씨 | 파라미터 세트들에서의 서브픽처 시그널링 |
| CN115280781A (zh) * | 2020-01-02 | 2022-11-01 | Lg电子株式会社 | 图像解码方法及其装置 |
| KR20250158073A (ko) * | 2020-01-02 | 2025-11-05 | 엘지전자 주식회사 | 픽처 헤더를 포함하는 영상 정보를 코딩하는 영상 디코딩 방법 및 그 장치 |
| KR20220100063A (ko) | 2020-01-02 | 2022-07-14 | 엘지전자 주식회사 | Ph nal 유닛 코딩 관련 영상 디코딩 방법 및 그 장치 |
| WO2021138652A1 (en) * | 2020-01-04 | 2021-07-08 | Bytedance Inc. | Restrictions on inter prediction for subpicture |
| 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 |
| WO2021252471A1 (en) | 2020-06-09 | 2021-12-16 | Bytedance Inc. | Handling of supplemental enhancement information in subpicture sub-bitstream extraction process |
| 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 |
| US12041386B2 (en) | 2020-09-29 | 2024-07-16 | Lemon Inc. | Dependent random access point indication in video bitstreams |
| US11930222B1 (en) * | 2021-03-30 | 2024-03-12 | Amazon Technologies, Inc. | Encoding video for film grain synthesis |
| AU2022257959B2 (en) * | 2021-04-12 | 2024-06-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Message referencing |
| CN114745600B (zh) * | 2022-06-10 | 2022-09-27 | 中国传媒大学 | 一种基于sei的视频标签标注方法及装置 |
| EP4637160A1 (en) * | 2022-11-17 | 2025-10-22 | 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 |
Family Cites Families (24)
| 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 |
| WO2008087602A1 (en) * | 2007-01-18 | 2008-07-24 | Nokia Corporation | Carriage of sei messages in rtp payload format |
| CN101796846B (zh) * | 2007-04-17 | 2013-03-13 | 诺基亚公司 | 基于反馈的可缩放视频编码 |
| US20080291999A1 (en) | 2007-05-24 | 2008-11-27 | Julien Lerouge | Method and apparatus for video frame marking |
| WO2009130561A1 (en) | 2008-04-21 | 2009-10-29 | Nokia Corporation | Method and device for video coding and decoding |
| CA2924651C (en) | 2008-04-25 | 2020-06-02 | Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. | Flexible sub-stream referencing within a transport data stream |
| US20100153395A1 (en) * | 2008-07-16 | 2010-06-17 | Nokia Corporation | Method and Apparatus For Track and Track Subset Grouping |
| TWI371214B (en) | 2008-12-03 | 2012-08-21 | Himax Media Solutions Inc | Decoding testing device and decoding testing method |
| EP2635033A1 (en) * | 2010-10-25 | 2013-09-04 | Panasonic Corporation | Encoding method, display device, decoding method |
| PL3700212T3 (pl) * | 2011-01-14 | 2022-07-18 | Sun Patent Trust | Sposób, urządzenie i program komputerowy do predykcji czasowej w skalowalnym kodowaniu wideo |
| CA2829290C (en) * | 2011-03-10 | 2017-10-17 | 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 |
| CN110536136B (zh) * | 2012-06-29 | 2022-08-05 | Ge视频压缩有限责任公司 | 视频数据流、编码器、编码视频内容的方法以及解码器 |
| US9479782B2 (en) | 2012-09-28 | 2016-10-25 | Qualcomm Incorporated | Supplemental enhancement information message coding |
-
2013
- 2013-06-25 US US13/926,543 patent/US9479782B2/en active Active
- 2013-06-25 US US13/926,478 patent/US9565452B2/en active Active
- 2013-08-20 KR KR1020157010819A patent/KR101741342B1/ko active Active
- 2013-08-20 JP JP2015534495A patent/JP6235026B2/ja active Active
- 2013-08-20 ES ES13759055T patent/ES2996260T3/es active Active
- 2013-08-20 WO PCT/US2013/055865 patent/WO2014051893A1/en not_active Ceased
- 2013-08-20 CA CA2884352A patent/CA2884352C/en active Active
- 2013-08-20 RU RU2015115894A patent/RU2618942C2/ru active
- 2013-08-20 MY MYPI2015700788A patent/MY173902A/en unknown
- 2013-08-20 KR KR1020157010810A patent/KR101762521B1/ko active Active
- 2013-08-20 ES ES13759597T patent/ES2978906T3/es active Active
- 2013-08-20 JP JP2015534496A patent/JP6125643B2/ja active Active
- 2013-08-20 CA CA2884560A patent/CA2884560C/en active Active
- 2013-08-20 UA UAA201504078A patent/UA117355C2/uk unknown
- 2013-08-20 BR BR112015006849-9A patent/BR112015006849B1/pt active IP Right Grant
- 2013-08-20 SG SG11201501632SA patent/SG11201501632SA/en unknown
- 2013-08-20 SG SG11201501636WA patent/SG11201501636WA/en unknown
- 2013-08-20 AU AU2013324246A patent/AU2013324246B2/en active Active
- 2013-08-20 EP EP13759597.1A patent/EP2901678B1/en active Active
- 2013-08-20 CN CN201380050616.3A patent/CN104704841B/zh active Active
- 2013-08-20 PL PL13759055.0T patent/PL2901676T3/pl unknown
- 2013-08-20 BR BR112015006856-1A patent/BR112015006856B1/pt active IP Right Grant
- 2013-08-20 AU AU2013324245A patent/AU2013324245B2/en active Active
- 2013-08-20 EP EP13759055.0A patent/EP2901676B1/en active Active
- 2013-08-20 WO PCT/US2013/055858 patent/WO2014051892A1/en not_active Ceased
- 2013-08-20 UA UAA201504076A patent/UA114343C2/uk unknown
- 2013-08-20 RU RU2015115896A patent/RU2628250C2/ru active
- 2013-08-20 MY MYPI2015700786A patent/MY194740A/en unknown
- 2013-08-20 CN CN201380050601.7A patent/CN104685888B/zh active Active
- 2013-09-04 TW TW102131849A patent/TW201424404A/zh unknown
- 2013-09-04 TW TW102131851A patent/TWI556630B/zh active
- 2013-09-04 TW TW104142535A patent/TWI569633B/zh active
- 2013-09-27 AR ARP130103511A patent/AR094447A1/es active IP Right Grant
-
2015
- 2015-03-09 PH PH12015500509A patent/PH12015500509A1/en unknown
- 2015-03-16 IL IL237770A patent/IL237770B/en active IP Right Grant
- 2015-03-16 IL IL237771A patent/IL237771A/en active IP Right Grant
- 2015-03-23 PH PH12015500645A patent/PH12015500645A1/en unknown
- 2015-04-07 ZA ZA2015/02307A patent/ZA201502307B/en unknown
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2996260T3 (en) | Supplemental enhancement information message coding | |
| ES2777214T3 (es) | Refresco gradual de descodificación con soporte de adaptabilidad temporal a escala en la codificación de vídeo | |
| ES2897708T3 (es) | Modelado de contexto eficiente en memoria | |
| KR101969631B1 (ko) | 다중-계층 비디오 코덱들에 대한 특정 hevc sei 메시지들의 이용 | |
| ES2750957T3 (es) | Señalización de predictores de paleta con código de longitud de ejecución para codificación de vídeo | |
| ES2701786T3 (es) | Procesamiento de memoria intermedia de imágenes descodificadas para imágenes de punto de acceso aleatorio en secuencias de vídeo | |
| ES2748561T3 (es) | Unidades de acceso IRAP y conmutación y empalme de flujos de bits | |
| 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 | |
| ES2637515T3 (es) | Indicación y activación de conjuntos de parámetros para codificación de vídeo | |
| ES2744235T3 (es) | Actualizaciones de conjuntos de parámetros en la codificación de vídeo | |
| ES2707892T3 (es) | Operaciones de almacenamiento en memoria intermedia de vídeo para acceso aleatorio en la codificación de vídeo | |
| ES2842082T3 (es) | Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa | |
| ES2684546T3 (es) | Codificación de vídeo con comportamientos de imagen de punto de acceso aleatorio mejorados | |
| ES2877048T3 (es) | Diseño de valor de Poc para 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 | |
| HK1208580B (zh) | 编码和解码视频数据的方法和装置及计算机可读存储介质 |