ES2928690T3 - Almacenamiento en memoria intermedia de vídeo con bajo retardo en la codificación de video - Google Patents

Almacenamiento en memoria intermedia de vídeo con bajo retardo en la codificación de video Download PDF

Info

Publication number
ES2928690T3
ES2928690T3 ES13710661T ES13710661T ES2928690T3 ES 2928690 T3 ES2928690 T3 ES 2928690T3 ES 13710661 T ES13710661 T ES 13710661T ES 13710661 T ES13710661 T ES 13710661T ES 2928690 T3 ES2928690 T3 ES 2928690T3
Authority
ES
Spain
Prior art keywords
decoding
units
cpb
unit
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
Application number
ES13710661T
Other languages
English (en)
Inventor
Ye-Kui Wang
Ying Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2928690T3 publication Critical patent/ES2928690T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

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)

Abstract

Como ejemplo, un método para codificar datos de video incluye almacenar una o más unidades de decodificación de datos de video en una memoria intermedia de imágenes. El método incluye además obtener un tiempo de eliminación del búfer respectivo para una o más unidades de decodificación, en donde obtener el tiempo de eliminación del búfer respectivo comprende recibir un valor señalado respectivo indicativo del tiempo de eliminación del búfer respectivo para al menos una de las unidades de decodificación. El método incluye además la eliminación de las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación. El método incluye además la codificación de datos de video correspondientes a las unidades de decodificación eliminadas, en donde la codificación de los datos de video comprende la decodificación de al menos una de las unidades de decodificación. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Almacenamiento en memoria intermedia de vídeo con bajo retardo en la codificación de video
La presente solicitud reivindica el beneficio de Solicitud Provisional de los Estados Unidos Núm. 61/620,266, presentada el 4 de abril de 2012, y Solicitud Provisional de los Estados Unidos Núm. 61/641,063, presentada el 1 de mayo de 2012.
Campo técnico
Esta divulgación se refiere a la codificación de vídeo.
Antecedentes
Las capacidades de vídeo digital pueden incorporarse en un amplio rango de dispositivos, incluidos televisores digitales, sistemas de difusión digital directa, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o satelitales, dispositivos de teleconferencia por vídeo y similares. Los estándares de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC), que incluye sus extensiones Codificación de Video Escalable (SVC) y Codificación de Video Multivista (MVC). Además, la Codificación de vídeo de Alta Eficiencia (HEVC) es una norma de codificación de vídeo que está desarrollando el Equipo de Colaboración Conjunta sobre Codificación de vídeo (JCT-VC) del Grupo de Expertos en Codificación de vídeo (VCEG) del UIT-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de la ISO/CEI. Un proyecto reciente del próximo estándar HEVC, denominado "HEVC Working Draft 6" o "HEVC WD6", se describe en el documento JCTVC-H1003, Bross y otros, "High efficiency video coding (HEVC) text specification draft 6," Equipo de Colaboración Conjunta para la Codificación de Video (JCT-VC) de ITU-T SG16 WP3 y ISO/IEC JTC1/SC29/WG11, 8vo Encuentro: San José, California, EE.UU., febrero de 2012, que, a partir del 1 de mayo de 2012, puede descargarse en http://phenix.intevry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip.
Las técnicas de compresión de vídeo realizan predicciones espaciales y/o predicciones temporales para reducir o eliminar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo en base a bloques, una trama o porción de vídeo se puede particionar en macrobloques. Cada macrobloque se puede particionar aún más. Los macrobloques de una trama o porción intracodificado (I) se codifican usando la predicción espacial con respecto a los macrobloques vecinos. Los macrobloques en una trama o porción intercodificado (P o B) pueden usar la predicción espacial con respecto a los macrobloques vecinos en la misma trama o porción o la predicción temporal con respecto a otras tramas de referencia.
Kazui K y otros en "Market needs and practicality of sub-picture based CPB operation" (JCTVC-H0125) del 21 de enero de 2012analiza el funcionamiento basado en subimágenes de CPB para la transmisión de vídeo interoperable con retardo ultra bajo. Específicamente, la divulgación propone la introducción en la especificación HRD del tiempo de eliminación de una subimagen (por ejemplo, una línea Treeblock).
YK WANG Y OTROS, "AHG11: Sub-picture-level low-delay CPB behavior", 100. ENCUENTRO MPEG; 30-4-2012 -4-5-2012; GINEBRA; (GRUPO DE EXPERTOS EN IMAGEN EN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), (20120417), núm. m24596 divulga un comportamiento de CPB basado en subimagen que incluye dividir la imagen en unidades de decodificación. Donde una unidad de decodificación consta de una porción codificada y las unidades NAL no VCL asociadas. El tiempo de eliminación de una unidad de decodificación de la CPB se deriva de un retardo de eliminación de CPB inicial señalado y el retardo de eliminación de CPB señalado para la unidad de decodificación, sin requerir que cada subimagen se codifique con la misma cantidad de bits.
Sumario
En general, esta divulgación describe varias técnicas para lograr un retardo de códec reducido de manera interoperable. En un ejemplo, estas técnicas pueden lograrse a través de un comportamiento de memoria intermedia de imágenes codificadas (CPB) basado en subimagen genérica.
La invención se define en las reivindicaciones independientes. Las características opcionales se definen en las reivindicaciones dependientes.
Los detalles de uno o más ejemplos se establecen en los dibujos adjuntos y la descripción a continuación. Otras características, objetivos y ventajas serán evidentes a partir de la divulgación y los dibujos y a partir de las reivindicaciones.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y decodificación de vídeo que puede utilizar técnicas de desbloqueo de bordes entre bloques de vídeo, de acuerdo con las técnicas de esta divulgación.
La Figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas para desbloquear bordes entre bloques de vídeo, de acuerdo con las técnicas de esta divulgación. La Figura 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de vídeo, que decodifica una secuencia de vídeo codificada, de acuerdo con las técnicas de esta divulgación.
La Figura 4 es un diagrama de bloques que ilustra un ejemplo de dispositivo de destino que puede implementar alguna o todas las técnicas de esta divulgación.
La Figura 5 es un diagrama de flujo que ilustra un procedimiento de ejemplo que incluye la eliminación de unidades de decodificación de datos de vídeo de una memoria intermedia de imágenes de acuerdo con un tiempo de eliminación de memoria intermedia obtenido, de acuerdo con las técnicas de esta divulgación.
La Figura 6 es un diagrama de flujo que ilustra otro procedimiento de ejemplo que incluye la eliminación de unidades de decodificación de datos de vídeo de una memoria intermedia de imágenes de acuerdo con un tiempo de eliminación de memoria intermedia obtenido, de acuerdo con las técnicas de esta divulgación.
La Figura 7 es un diagrama de flujo que ilustra otro procedimiento de ejemplo de procesamiento de datos de vídeo que incluye la salida de una imagen recortada en un procedimiento de salto, de acuerdo con las técnicas de esta divulgación.
Descripción detallada
Las aplicaciones de vídeo pueden incluir reproducción local, transmisión, difusión/multidifusión y aplicaciones conversacionales. Las aplicaciones conversacionales pueden incluir vídeo telefonía y conferencia por vídeo y también se denomina como aplicaciones de bajo retardo. Las aplicaciones conversacionales requieren un retardo de extremo a extremo relativamente bajo de todos los sistemas, es decir, el retardo entre el momento en que se captura una trama de vídeo y el momento en que se muestra la trama de vídeo. Por lo general, el retardo de extremo a extremo aceptable para aplicaciones conversacionales debe ser inferior a 400 milisegundos (ms), y un retardo de extremo a extremo de alrededor de 150 ms puede considerarse muy bueno. Cada etapa de procesamiento puede contribuir al retardo total de extremo a extremo, por ejemplo, retardo de captura, retardo de preprocesamiento, retardo de codificación, retardo de transmisión, retardo de almacenamiento en memoria intermedia de recepción (para eliminar fluctuaciones), retardo de decodificación, retardo de salida de imagen decodificada, retardo de postprocesamiento y retardo de visualización. Así, normalmente, el retardo del códec (retardo de codificación, retardo de decodificación y retardo de salida de la imagen decodificada) debería minimizarse en aplicaciones conversacionales. En particular, la estructura de codificación debería garantizar que el orden de decodificación y el orden de salida de las imágenes sean idénticos, de modo que el retardo de salida de la imagen decodificada sea igual a cero.
Las normas de codificación de vídeo pueden incluir una especificación de un modelo de almacenamiento en memoria intermedia de vídeo. En AVC y HEVC, el modelo de almacenamiento en memoria intermedia se denomina decodificador de referencia hipotético (HRD), que incluye un modelo de almacenamiento en memoria intermedia tanto de la memoria intermedia de imágenes codificada (CPB) como de la memoria intermedia de imágenes decodificada (DPB), y los comportamientos de CPB y DPB son especificados matemáticamente. El HRD impone directamente restricciones sobre los diferentes tiempos, tamaños de memoria intermedia y tasa de bits, e indirectamente impone restricciones sobre las características y estadísticas del flujo de bits. Un conjunto completo de parámetros de 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. Aunque se denomina como un tipo de decodificador, HRD generalmente se necesita en el lado del codificador para garantizar la conformidad del flujo de bits, mientras que normalmente no se necesita en el lado del decodificador. Se especifican dos tipos de conformidad con el flujo de bits o HRD, llamados Tipo I y Tipo II. Además, se especifican dos tipos de conformidad del decodificador, la conformidad del decodificador de tiempo de salida y la conformidad del decodificador de orden de salida.
En los modelos AVC y HEVC HRD, la decodificación o eliminación de la CPB se basa en la unidad de acceso, y se asume que la decodificación de la imagen es instantánea. En aplicaciones prácticas, si un decodificador conforme sigue estrictamente los tiempos de decodificación señalados, por ejemplo, en los mensajes de información de mejora complementaria (SEI) de temporización de imágenes, para iniciar la decodificación de las unidades de acceso, entonces el tiempo más temprano posible para emitir una imagen decodificada en particular es igual al tiempo de decodificación de esa imagen en particular más el tiempo necesario para decodificar esa imagen en particular. A diferencia de los modelos AVC y HEVC HRD, el tiempo necesario para decodificar una imagen en el mundo real no es igual a cero. Los términos "instantánea" e "instantáneamente" tal como se usan en esta divulgación pueden referirse a cualquier duración de tiempo que pueda suponerse instantánea en uno o más modelos de codificación o un aspecto idealizado de uno o más modelos de codificación, en el entendimiento de que esto puede diferir de ser "instantáneo" en un sentido físico o literal. Por ejemplo, para los fines de esta divulgación, una función o procedimiento puede considerarse nominalmente "instantáneo" si tiene lugar en o dentro de un margen práctico de un tiempo hipotético o idealizado más temprano posible para que se realice la función o el procedimiento. La sintaxis y los nombres de variables que se usan en la presente memoria pueden entenderse en algunos ejemplos de acuerdo con su significado dentro del modelo HEVC.
Se propuso un comportamiento de CPB basado en subimágenes en "Enhancement on operation of coded picture buffer,", Kazui y otros, Equipo de Colaboración Conjunta para la Codificación de Video (JCT-VC) de ITU-T SG16 WP3 y ISO/IEC JTC1/SC29/WG11, 7mo Encuentro: Ginebra, CH 21-30, noviembre de 2011, JCTVC-G188 (disponible en http://phenix.int-evry.fr/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G188-v2.zip) para lograr un retardo de codificación de menos de un período de imagen de manera interoperable. El procedimiento JCTVC-G188 se puede resumir de la siguiente manera: una imagen se puede dividir uniformemente en M grupos de bloques de árboles, es decir, los primeros M bloques de árboles en un escaneo de trama de bloques de árboles de la imagen pertenecen al primer grupo de bloques de árboles, los segundos M bloques de árboles en el escaneo de trama de bloques de árboles de la imagen pertenece al segundo grupo de bloques de árboles, y así sucesivamente. El valor M puede señalizarse en mensajes SEI de período de almacenamiento en memoria intermedia. Este valor puede usarse para derivar el tiempo de eliminación de CPB (es decir, el tiempo de decodificación) de cada grupo de bloques de árbol. En este sentido, el comportamiento de la CPB del JCTVC-G188 se basa en subimágenes, en las que cada subimágenes es un grupo de bloques de árbol. En algunos ejemplos, una subimagen puede corresponder a uno o más cortes, una o más ondas (para la división del frente de onda de una imagen) o una o más mosaicos. En este procedimiento de JCTVC-G188 se supone que los tiempos de eliminación de CPB a nivel de unidad de acceso se señalan como de costumbre (usando mensajes SEI de temporización de imágenes), y dentro de cada unidad de acceso, se supone que los tiempos de eliminación de CPB para los grupos de bloques de árbol se dividen lineal o uniformemente el intervalo desde el tiempo de eliminación de CPB de la unidad de acceso anterior hasta el tiempo de eliminación de CPB de la unidad de acceso actual.
Este procedimiento de JCTVC-G188 implica además las siguientes suposiciones o requisitos de flujo de bits: (1) dentro de cada imagen, cada grupo de bloques de árboles se codifica de una manera que requiere la misma cantidad de tiempo de decodificación (no solo en el modelo HRD sino también para los decodificadores del mundo real), en el que se considera que los datos codificados del primer grupo de bloques de árboles incluir todas las unidades NAL (capa de abstracción de red) que no sean VCL (capa de codificación de vídeo) en la misma unidad de acceso y antes de la primera unidad NAL de VCL; (2) dentro de cada imagen, el número de bits para cada grupo de bloques de árboles es idéntico, en el que se considera que los datos codificados del primer grupo de bloques de árboles incluyen todas las unidades NAL no VCL en la misma unidad de acceso y antes de la primera unidad NAL VCL.
Los procedimientos existentes para especificar un comportamiento de CPB basado en subimágenes se asocian con al menos los siguientes problemas: (1) El requisito de que la cantidad de datos codificados para cada grupo de bloques de árboles en una imagen codificada sea idéntica es difícil de lograr con un rendimiento de codificación equilibrado (en el que los grupos de bloques de árboles para áreas con textura más detallada o actividad de movimiento en una imagen pueden usar más bits). (2) Cuando se incluye más de un grupo de bloques de árbol en una porción, puede que no haya una manera fácil de dividir los bits codificados de bloques de árbol que pertenecen a diferentes grupos de bloques de árbol y enviarlos por separado al lado del codificador y eliminarlos por separado de la CPB (es decir, decodificarlos por separado).
Para abordar los problemas anteriores, esta divulgación describe un diseño genérico para soportar el comportamiento de CPB basado en subimagen, con varias alternativas. En algunos ejemplos, las características de las técnicas de CPB basadas en subimágenes de esta divulgación pueden incluir aspectos de las siguientes técnicas: (1) Cada subimagen puede incluir varios bloques de codificación de una imagen codificada continua en orden de decodificación. Un bloque de codificación puede ser idéntico a un bloque de árbol o a un subconjunto de un bloque de árbol; (2) La codificación de subimágenes y la asignación de bits a diferentes subimágenes en una imagen se puede realizar como de costumbre, sin suponer ni requerir que cada subimagen (es decir, grupo de bloques de árboles) en una imagen se codifique con la misma cantidad de bits. En consecuencia, el tiempo de eliminación de CPB para cada subimagen puede señalizarse en el flujo de bits en lugar de derivarse de acuerdo con los tiempos de eliminación de CPB de nivel de imagen señalados; (3) Cuando se incluye más de una subimagen en una porción, la alineación de bits se puede aplicar al final de cada subimagen, en contraste, por ejemplo, con la alineación de bits para mosaicos en HEVC WD6. Además, el punto de entrada de cada subimagen, excepto la primera en la imagen codificada, puede señalizarse, en contraste, por ejemplo, con la alineación de bits para mosaicos en HEVC WD6. El valor señalado recibido puede indicarse de la alineación de bits de al menos una de las subimágenes dentro de un conjunto más grande de datos de vídeo, como una porción, un mosaico o una trama, por ejemplo. Cada una de las características (1)-(3) puede aplicarse de forma independiente o en combinación con las otras.
En un ejemplo, la operación HRD, incluido el comportamiento CPB basado en la subimagen, se puede resumir de la siguiente manera: Cuando la señalización indica que se está utilizando el comportamiento de CPB basado en subimagen, por ejemplo, a través de una señalización a nivel de secuencia de un elemento de sintaxis sub_pic_cpb_flag igual a 1, la eliminación o decodificación de CPB es en base a la subimagen o, de manera equivalente, en la unidad de decodificación, que puede ser una unidad de acceso o un subconjunto de una unidad de acceso. En otras palabras, cada vez que una unidad de decodificación, ya sea una unidad de acceso o un subconjunto de una unidad de acceso, se retira de la CPB para su decodificación, el tiempo de eliminación de una unidad de decodificación de CPB puede derivarse de un retardo de eliminación inicial de CPB señalado y el retardo de eliminación de CPB señalado para la unidad de decodificación. Un subdesbordamiento de CPB se especifica como la condición en la que el tiempo de eliminación nominal de CPB de la unidad de decodificación mtr,n( m ) es menor que el tiempo de eliminación final de CPB de la unidad de decodificación m taf(m) para cualquier valor de m. En un ejemplo, cuando un elemento de sintaxis low_delay_hrd_flag es igual a 0, se requiere que la CPB nunca se desborde.
En un ejemplo, los procedimientos de salida y eliminación de DPB pueden seguir funcionando a nivel de imagen o a nivel de unidad de acceso, es decir, cada vez que una imagen decodificada completa se envía o elimina de DPB. La eliminación de imágenes decodificadas del DPB puede ocurrir instantáneamente en el tiempo de eliminación de CPB de la primera unidad de decodificación de la unidad de acceso n (que contiene la imagen actual).
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo 10 que puede utilizar técnicas para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obteniendo un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminando la decodificación unidades de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación, y la codificación de datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones.
Como se muestra en la Figura 1, el sistema 10 incluye un dispositivo de origen 12 que transmite vídeo codificado a un dispositivo de destino 14 a través de un canal de comunicación 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender dispositivos de comunicación inalámbricos, como teléfonos inalámbricos, los llamados radioteléfonos celulares o satelitales, o cualquier dispositivo inalámbrico que pueda comunicar información de vídeo a través de un canal de comunicación 16, en cuyo caso el canal de comunicación 16 es inalámbrico. Sin embargo, las técnicas de esta divulgación no se limitan necesariamente a las aplicaciones o configuraciones inalámbricas. Por ejemplo, estas técnicas pueden aplicarse a la difusión de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo por Internet, vídeo digital codificado que se codifica en un medio de almacenamiento u otros escenarios. En consecuencia, el canal de comunicación 16 puede comprender cualquier combinación de medios inalámbricos, alámbricos o de almacenamiento adecuados para la transmisión o el almacenamiento de datos de vídeo codificados.
Alternativamente, los datos codificados pueden emitirse del transmisor 24 a un dispositivo de almacenamiento 34. Del mismo modo, el receptor 26 puede acceder a los datos codificados desde el dispositivo de almacenamiento 34. El dispositivo de almacenamiento 34 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o de acceso local, 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 34 puede corresponder a un servidor de archivos, un servidor virtual, un centro de datos, una red redundante de centros de datos 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 34 mediante la transmisión o descarga. Una implementación de servidor de archivos del dispositivo de almacenamiento 34 o una parte del mismo puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados 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, que incluye 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 los datos de vídeo codificados almacenados en un dispositivo de almacenamiento remoto o no local 34. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 34 puede ser una transmisión en directo, una transmisión de descarga o una combinación de ambas.
En el ejemplo de la Figura 1, el dispositivo de origen 12 incluye un origen de vídeo 18, un codificador de vídeo 20, un modulador/demodulador (módem) 22 y un transmisor 24. El dispositivo de destino 14 incluye un receptor 26, un módem 28, un decodificador de vídeo 30 y un dispositivo de visualización 32. De acuerdo con esta divulgación, el codificador de vídeo 20 del dispositivo de origen 12 puede configurarse para aplicar las técnicas para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obteniendo un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminando las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación, y la codificación de datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo de un origen de vídeo externo en lugar del origen de vídeo integrado 18, como una cámara externa. Asimismo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado 32.
El sistema 10 que se ilustra de la Figura 1 es simplemente un ejemplo. Técnicas para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obteniendo un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminando las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de memoria intermedia obtenido para cada una de las unidades de decodificación, y la codificación de datos de vídeo correspondientes a las unidades de decodificación eliminadas puede realizarse por cualquier dispositivo de codificación y/o decodificación de vídeo digital. Aunque generalmente las técnicas de esta divulgación se realizan mediante un dispositivo de codificación de vídeo, las técnicas también se pueden realizar mediante un codificador/decodificador de vídeo, típicamente denominado "CODEC". Además, las técnicas de esta divulgación también se pueden realizar por un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de codificación en los que el dispositivo de origen 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de una manera sustancialmente simétrica de manera que cada uno de los dispositivos 12, 14 incluya los componentes de codificación y decodificación de vídeo. De ahí que, el sistema 10 puede admitir la transmisión de vídeo unidireccional o bidireccional entre dispositivos de vídeo 12, 14, por ejemplo, para transmisión de vídeo, reproducción de vídeo, difusión de vídeo o videotelefonía.
El origen de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, como una cámara de vídeo, un archivo de vídeo que contenga vídeo previamente capturado, y/o un origen de vídeo de un proveedor de contenido de vídeo. Como una alternativa adicional, el origen de vídeo 18 puede generar datos basados en gráficos de ordenador como la fuente de vídeo, o una combinación de vídeo en vivo, vídeo que se archiva y vídeo que se genera por ordenador. En algunos casos, si el origen de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los llamados teléfonos con cámara o videoteléfonos. Sin embargo, como se mencionó anteriormente, las técnicas que se describen en esta divulgación pueden aplicarse a la codificación de vídeo en general, y pueden aplicarse a las aplicaciones inalámbricas y/o por cable. En cada caso, el vídeo que se captura, se precaptura o se genera por ordenador puede codificarse mediante el codificador de vídeo 20. La información de vídeo codificada puede entonces ser modulada por el módem 22 de acuerdo con un estándar de comunicación, y transmitida al dispositivo de destino 14 a través del transmisor 24. El módem 22 puede incluir varios mezcladores, filtros, amplificadores u otros componentes diseñados para la modulación de la señal. El transmisor 24 puede incluir circuitos diseñados para la transmisión de datos, incluyendo amplificadores, filtros y una o más antenas.
El receptor 26 del dispositivo de destino 14 recibe información a través del canal 16, y el módem 28 demodula la información. Nuevamente, el procedimiento de codificación de vídeo puede implementar una o más de las técnicas descritas en la presente memoria para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación, y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones. La información comunicada a través del canal 16 puede incluir información de sintaxis definida por el codificador de vídeo 20, que también puede utilizarse por el decodificador de vídeo 30, que incluye elementos de sintaxis que describen las características y/o el procesamiento de macrobloques, unidades de árbol de codificación, porciones y otras unidades codificadas, por ejemplo, grupos de imágenes (GOP). El dispositivo de visualización 32 muestra los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo orgánico de emisión de luz (OLED), u otro tipo de dispositivo de visualización.
En el ejemplo de la Figura 1, el canal de comunicación 16 puede comprender cualquier medio de comunicación inalámbrico o alámbrico, como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas, o cualquier combinación de medios inalámbricos y alámbricos. El canal de comunicación 16 puede formar parte de una red basada en paquetes, como una red de área local, una red de área amplia o una red global como Internet. El canal de comunicación 16 generalmente representa cualquier medio de comunicación adecuado, o colección de diferentes medios de comunicación, para transmitir datos de vídeo desde el dispositivo de origen 12 al dispositivo de destino 14, que incluye cualquier combinación adecuada de medios alámbricos o inalámbricos. El canal de comunicación 16 puede incluir enrutadores, conmutadores, estaciones base, o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14. En otros ejemplos, el dispositivo de origen 12 puede almacenar datos codificados en un medio de almacenamiento como el dispositivo de almacenamiento 24, en lugar de transmitir los datos. Asimismo, el dispositivo de destino 14 puede configurarse para recuperar datos codificados del dispositivo de almacenamiento 24 u otro medio o dispositivo de almacenamiento.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con un estándar de compresión de vídeo, como los descritos en la presente memoria. Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación particular. Aunque no se muestra en la Figura 1, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 se pueden integrar cada uno con un codificador y decodificador de audio y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para manejar la codificación de audio y de vídeo en un flujo de datos común o en flujos de datos separados. Si corresponde, las unidades MUX-DEMUX se pueden ajustar al protocolo multiplexor ITU H.223, o a 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 codificación adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), dispositivos de comunicación inalámbricos que incluyen un dispositivo de codificación de vídeo, como codificador o decodificador, lógica discreta, software, hardware, microprograma o cualquier combinación de los mismos. 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 una cámara respectiva, un ordenador, un dispositivo móvil, un dispositivo de abonado, un dispositivo de difusión, un decodificador, un servidor u otro dispositivo.
Una secuencia de vídeo normalmente incluye una serie de tramas de vídeo. Un grupo de imágenes (GOP) generalmente comprende una serie de una o más tramas de vídeo. Un GOP puede incluir datos de sintaxis en una cabecera del GOP, en una cabecera de una o más tramas del GOP, o en otra parte, que describe un número de tramas incluidas en el GOP. Cada trama puede incluir datos de sintaxis de trama que describen un modo de codificación para la trama respectiva. El codificador de vídeo 20 normalmente opera con bloques de vídeo, también denominados unidades de codificación (CU), dentro de tramas de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a una unidad de codificación más grande (LCU) o una partición de una LCU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con un estándar de codificación específico. Cada trama de vídeo puede incluir una pluralidad de porciones. Cada porción puede incluir una pluralidad de LCU, que pueden organizarse en particiones, también denominadas sub-CU. Una LCU también puede denominarse unidad de árbol de codificación.
Como ejemplo, la norma UIT-T H.264 admite la intrapredicción en varios tamaños de bloque, como 16 por 16, 8 por 8, o 4 por 4 para los componentes lumínicos, y 8x8 para los componentes cromáticos, así como la interpredicción en varios tamaños de bloque, como 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 y 4x4 para los componentes lumínicos y los correspondientes tamaños a escala para los componentes cromáticos. En esta divulgación, "NxN" y "N por N" se pueden usar indistintamente para referirse a las dimensiones de los píxeles del bloque en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Del mismo modo, un bloque NxN de manera general 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 se pueden organizar en filas y columnas. Además, los bloques no necesitan tener necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
Los bloques de vídeo pueden comprender bloques de datos de píxeles en el dominio de los píxeles, o bloques de coeficientes de transformada en el dominio de la transformada, por ejemplo, tras la aplicación de una transformada como una transformada discreta del coseno (DCT), una transformada entera, una transformada ondículas o una transformada conceptualmente similar a los datos de bloques de vídeo residuales que representan las diferencias de píxeles entre los bloques de vídeo codificados y los bloques de vídeo predictivos. En algunos casos, un bloque de vídeo puede comprender bloques de coeficientes de transformada cuantificados en el dominio de transformada.
Los bloques de vídeo más pequeños pueden proporcionar una mejor resolución y se pueden usar para las ubicaciones de una trama de vídeo que incluyen altos niveles de detalle. En general, los bloques y las distintas particiones, a veces denominadas subbloques, pueden considerarse bloques de vídeo. Además, se puede considerar que una porción es una pluralidad de bloques de vídeo, como bloques y/o subbloques. Cada porción puede ser una unidad decodificable de manera independiente de una trama de vídeo. Alternativamente, las tramas en sí mismas pueden ser unidades decodificables, u otras porciones de una trama se pueden definir como unidades decodificables. El término "unidad codificada" puede referirse a cualquier unidad decodificable de forma independiente de una trama de vídeo, como una trama completa o una porción de una trama, un grupo de imágenes (GOP) también denominado secuencia de vídeo codificada, u otra unidad decodificable de forma independiente definida de acuerdo con las técnicas de codificación aplicables.
Seguir la codificación intrapredictiva o interpredictiva para producir datos predictivos y datos residuales, y seguir cualquier transformada (como la transformada de enteros 4x4 u 8x8 usada en H.264/AVC o una transformada de coseno discreta DCT) para producir coeficientes de transformada, cuantificación de coeficientes de transformada se puede realizar. La cuantificación generalmente se refiere a un procedimiento en el que los coeficientes de la transformada se cuantifican para posiblemente reducir la cantidad de datos utilizados para representar los coeficientes. El procedimiento de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. Por ejemplo, un valor de n bits puede redondearse a un valor de m bits durante la cuantificación, cuando n es mayor que m.
HEVC se refiere a un bloque de datos de vídeo como una unidad de codificación (CU), que puede incluir una o más unidades de predicción (PU) y/o una o más unidades de transformada (TU). Esta divulgación también puede utilizar el término "bloque" para referirse a cualquiera de las CU, PU o TU. Los datos de sintaxis dentro de un flujo de bits pueden definir una unidad de codificación mayor (LCU), que es una unidad de codificación mayor en términos de número de píxeles. En general, una CU tiene un propósito similar a un macrobloque de H.264, excepto que una CU no tiene una distinción de tamaño. Por lo tanto, una CU puede dividirse en sub-CU. En general, las referencias en esta divulgación a una CU pueden referirse a una unidad de codificación más grande de una imagen o una sub-CU de una LCU. Una LCU puede dividirse en sub-CU, y cada sub-CU puede dividirse, además, en sub-CU. Las sintaxis de datos para un flujo de bits pueden definir un número máximo de veces que puede dividirse una LCU, que se denomina como profundidad de CU. En consecuencia, un flujo de bits también puede definir una unidad de codificación más pequeña (SCU).
Una LCU puede asociarse con una estructura de datos de árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, donde un nodo raíz corresponde a la LCU. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU. Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar sintaxis de datos para la correspondiente CU. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división, que indica si la CU correspondiente al nodo se divide en sub-CU. Los elementos de sintaxis para una CU pueden definirse recursivamente y pueden depender de si la CU se divide en sub-CU. Si una CU no se divide más, se refiere a ella como una CU hoja. En esta divulgación, 4 sub-CU de una CU hoja también puede denominarse como CU hojas, aunque no hay una división explícita de la CU hoja original. Por ejemplo, si una CU de tamaño 16x16 no se divide aún más, las cuatro sub-CU de 8x8 también pueden denominarse CU hoja, aunque la CU de 16x16 no se haya dividido.
Además, las TU de las CU hoja también pueden asociarse con las respectivas estructuras de datos de árbol cuaternario. Es decir, una CU hoja puede incluir un árbol cuaternario que indica cómo se particiona la CU hoja en las TU. Esta divulgación se refiere al árbol cuaternario que indica cómo se divide una LCU como un árbol cuaternario de CU y al árbol cuaternario que indica cómo una CU hoja se divide en TU como un árbol cuaternario de TU. El nodo raíz de un árbol cuaternario TU corresponde generalmente a una CU hoja, mientras que el nodo raíz de un árbol cuaternario CU corresponde generalmente a un LCU. Las UT del árbol cuaternario de UT que no se dividen pueden denominarse UT hoja.
Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa toda o una porción de la Cu correspondiente y puede incluir datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU se codifica intermodo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una trama de referencia al que apunta el vector de movimiento, y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento. Los datos para la CU hoja que define las PU también pueden describir, por ejemplo, la partición de la CU en una o más PU. Los modos de particionamiento pueden diferir en función de si la CU no se codifica, se codifica en modo de intrapredicción o se codifica en modo interpredicción. Para la intracodificación, una PU puede tratarse igual que una unidad de transformada de hoja descrita más abajo.
Una CU hoja puede incluir una o más unidades de transformada (TU). Las unidades de transformada pueden especificarse utilizando una estructura de árbol cuaternario de TU, como se discutió anteriormente. Es decir, un indicador de división puede indicar si una CU hoja se divide en cuatro unidades de transformada. A continuación, cada unidad de transformada puede dividirse en 4 sub TU. Cuando una TU no se divide más, puede denominarse TU hoja. En general, un indicador dividido puede indicar que una TU de hoja se divide en TU de forma cuadrada. Para indicar que una TU se divide en TU de forma no cuadrada, se pueden incluir otros datos de sintaxis, por ejemplo, datos de sintaxis que indican que las TU se dividirán de acuerdo con la transformada de árbol cuaternario no cuadrada (NSQT).
Generalmente, para la intracodificación, todas las TU hojas pertenecientes a una CU hoja comparten el mismo modo de intrapredicción. Es decir, el mismo modo de intrapredicción se aplica generalmente para calcular los valores pronosticados para todas las TU de una CU hoja. Para la intracodificación, un codificador de vídeo puede calcular un valor residual para cada TU hoja utilizando el modo de intrapredicción, como una diferencia entre la porción de los valores de predicción correspondientes a la TU y el bloque original. El valor residual puede transformarse, cuantificarse y escanearse. Para la inter codificación, un codificador de vídeo puede realizar una predicción al nivel de PU y puede calcular un residuo para cada PU. Los valores residuales correspondientes a una CU hoja pueden transformarse, cuantificarse y escanearse. Para la intercodificación, una TU hoja puede ser más grande o más pequeña que una PU. Para la intracodificación, una PU puede coubicarse con su correspondiente TU hoja. En algunos ejemplos, el tamaño máximo de una TU hoja puede ser el tamaño de la CU hoja correspondiente.
En general, esta divulgación utiliza los términos CU y TU para referirse a CU hoja y TU hoja, respectivamente, a menos que se indique lo contrario. En general, las técnicas de esta divulgación se relacionan con la transformación, cuantificación, exploración y codificación de entropía de datos de una CU. Como ejemplo, las técnicas de esta divulgación incluyen la selección de una transformada para usar para transformar un valor residual de un bloque intrapredecible en base a un modo de intrapredicción usado para predecir el bloque. Esta divulgación también utiliza el término "transformada direccional" o "transformada diseñada" para referirse a dicha transformada que depende de la dirección del modo de predicción interna. Es decir, un codificador de vídeo puede seleccionar una transformada direccional para aplicarla a una unidad de transformada (TU). Como se indicó anteriormente, la intrapredicción incluye predecir una TU de una CU actual de una imagen a partir de CU y TU codificadas previamente de la misma imagen. Más específicamente, un codificador de vídeo puede intrapredecir una TU actual de una imagen usando un modo de intrapredicción particular.
Después de la cuantificación, se puede realizar la codificación de entropía de los datos cuantificados, por ejemplo, de acuerdo con la codificación de longitud variable adaptable al contenido (CAVLC), la codificación aritmética binaria adaptable al contexto (CABAC), la codificación de entropía de partición de intervalo de probabilidad (PIPE) u otra metodología de codificación de entropía. Una unidad de procesamiento configurada para la codificación de entropía, u otra unidad de procesamiento, puede realizar otras funciones de procesamiento, como la codificación de longitud de ejecución cero de coeficientes cuantificados y/o la generación de información de sintaxis, como valores de patrón de bloque codificado (CBP), tipo de macrobloque, modo de codificación, tamaño máximo de macrobloque para una unidad codificada (como una trama, porción, macrobloque o secuencia) u otra información de sintaxis.
El codificador de vídeo 20 puede configurarse para realizar una cuantificación inversa y una transformación inversa para almacenar bloques decodificados que se utilizarán como referencia para predecir bloques posteriores, por ejemplo, en el mismo trama o tramas que se van a predecir temporalmente. El codificador de vídeo 20 puede enviar además datos de sintaxis, como datos de sintaxis basados en bloques, datos de sintaxis basados en tramas y datos de sintaxis basados en GOP, al decodificador de vídeo 30, por ejemplo, en un encabezado de trama, un encabezado de bloque, un encabezado de porción, o un encabezado republicano. Los datos de sintaxis de GOP pueden describir una serie de tramas en el GOP respectivo, y los datos de sintaxis de trama pueden indicar un modo de codificación/predicción utilizado para codificar la trama correspondiente.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse cada uno como cualquiera de una variedad de circuitos de codificador o decodificador adecuados, según corresponda, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicaciones específicas (ASIC), matrices de puertas lógicas programables en campo (FPGA), circuitos lógicos discretos, software, hardware, microprograma o cualquier combinación de los mismos. Cada uno del codificador de vídeo 20 y decodificador de vídeo 30 se puede incluir en uno o más codificadores o decodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/decodificador combinado (CODEC). Un aparato que incluye el codificador de vídeo 20 y/o el decodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, como un teléfono celular.
De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de memoria intermedia obtenido para cada una de las unidades de decodificación, y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones.
Las siguientes definiciones se proporcionan con respecto a un ejemplo de codificador de vídeo 20 y/o decodificador de vídeo 30 configurado para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación, y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones.
En la definición de acuerdo con el segundo conjunto de ejemplos proporcionado anteriormente, cuando se incluye más de una subimagen en una porción, la alineación de bits se puede aplicar al final de cada subimagen, en contraste, por ejemplo, con la alineación de bits para mosaicos en h Ev C WD6. Además, se puede señalizar el punto de entrada de cada subimagen, excepto la primera en la imagen codificada.
En algunas alternativas, cuando el flujo de bits contiene múltiples vistas o capas escalables, una unidad de decodificación puede definirse como una representación de capa o un componente de vista. Todas las unidades que no son VCL que preceden a la primera unidad VCL NAL de una representación de capa o componente de vista también pertenecen a la unidad de decodificación que contiene la representación de capa o componente de vista.
Las siguientes descripciones de ejemplo de operación de decodificador de referencia hipotético (HRD), ejemplo de operación de una memoria intermedia de imágenes codificadas, ejemplo de tiempo de llegada de un flujo de bits, ejemplo de tiempo de eliminación de la unidad de decodificación, ejemplo de decodificación de una unidad de decodificación, ejemplo de operación de una memoria intermedia de imágenes decodificadas, ejemplo de eliminación de imágenes de una memoria intermedia de imágenes decodificadas, ejemplo de salida de imágenes y ejemplo de marcado y almacenamiento de imágenes decodificadas actuales se proporcionan para ilustrar ejemplos de codificador de vídeo 20 y/o decodificador de vídeo 30 que pueden configurarse para almacenar una o más unidades de decodificación de vídeo datos en una memoria intermedia de imágenes, obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de memoria intermedia obtenido para cada una de las unidades de decodificación, y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones. Las operaciones pueden definirse o realizarse de manera diferente, en otros ejemplos. De esta manera, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para operar de acuerdo con los diversos ejemplos de operaciones HRD que se describen a continuación.
Como ejemplo, una operación HRD puede describirse en el sumario como sigue: el tamaño CPB (número de bits) es CpbSize[SchedSelIdx]. El tamaño de DPB (número de memorias intermedias de almacenamiento de imágenes) para la capa temporal X es max_dec_pic_buffering[ X ]+ 1 para cada X en el rango de 0 a max_temporal_layers_minus1, inclusive. En este ejemplo, el HRD puede operar como sigue: los datos asociados con las unidades de acceso que fluyen hacia la CPB de acuerdo con un horario de llegada específico pueden ser entregados por el programador de flujos hipotético (HSS), es decir, un programador de entrega. Los datos asociados con cada unidad de decodificación pueden eliminarse y decodificarse instantáneamente mediante el procedimiento de decodificación instantánea en tiempos de eliminación de CPB. Cada imagen decodificada puede colocarse en el DPB. Una imagen decodificada puede eliminarse de la DPB en el último tiempo de salida de la DPB o en el momento en que ya no se necesita para la referencia entre predicciones.
La aritmética en estos ejemplos se puede hacer con valores reales, de modo que no se propaguen errores de redondeo. Por ejemplo, el número de bits en una CPB justo antes o después de la eliminación de una unidad de decodificación no es necesariamente un número entero.
La variable tc se puede derivar de la siguiente manera y se le puede llamar un tictac de reloj:
tc = num_units_in_tick ^ time_scale (C-1)
Se puede especificar lo siguiente para expresar las restricciones en un ejemplo de modificación de anexo a HEVC:
sea la unidad de acceso n la n-ésima unidad de acceso en el orden de decodificación, siendo la primera unidad de acceso la unidad de acceso 0;
sea la imagen n la imagen codificada o la imagen decodificada de la unidad de acceso n;
sea la unidad de decodificación m la m-ésima unidad de decodificación en el orden de decodificación, siendo la primera unidad de decodificación la unidad de decodificación 0.
Algunas técnicas de ejemplo para el funcionamiento de una memoria intermedia de imágenes codificadas (CPB) se describen a continuación. De acuerdo con algunas técnicas de codificación de vídeo, se pueden implementar varios procedimientos de operación de CPB. Las especificaciones en la sección de HEVC WD6 sobre operaciones de CPB pueden modificarse por esta divulgación y pueden aplicarse independientemente a cada conjunto de parámetros de CPB que esté presente y a los puntos de conformidad de Tipo I y Tipo II.
A continuación, se describen algunos ejemplos que implican la temporización de la llegada del flujo de bits. El HRD puede inicializarse en cualquiera de los mensajes de información de mejora suplementaria (s Ei) del período de almacenamiento en memoria intermedia. Antes de la inicialización, la CPB puede estar vacío. Después de la inicialización, el HRD no puede inicializarse de nuevo por los mensajes SEI del período de almacenamiento en memoria intermedia posterior.
La unidad de acceso que se asocia con el mensaje SEI del período de almacenamiento en memoria intermedia que inicializa la CPB puede denominarse como unidad de acceso 0. Cada unidad de decodificación puede denominarse unidad de decodificación m, donde el número m identifica la unidad de decodificación concreta. La primera unidad de decodificación en orden de decodificación en la unidad de acceso 0 puede denominarse unidad de decodificación 0. El valor de m puede incrementarse en 1 para cada unidad de decodificación posterior en el orden de decodificación.
El momento en que el primer bit de la unidad de decodificación m comienza a entrar en la CPB puede denominarse tiempo de llegada inicial tai( m ). El tiempo de llegada inicial de las unidades de decodificación puede derivarse como sigue:
si la unidad de decodificación es la unidad de decodificación 0, tai( 0 ) = 0,
de lo contrario (la unidad de decodificación es la unidad de decodificación m con m > 0), se puede aplicar lo siguiente:
si cbr_flag[ SchedSelIdx ]es igual a 1, la hora de llegada inicial de la unidad de decodificación m es igual a la hora de llegada final (que se deriva más adelante) de la unidad de decodificación m - 1, es decir,
tai( m ) = taf( m - 1) (C-2) de lo contrario (cbr_flag[ SchedSelIdx ]es igual a 0), la hora de llegada inicial para la unidad de decodificación m se deriva por:
tai( m ) = Max( taf( m - 1 ), tai,earliest( m ) ) (C-3) donde tai,earliest ( m ) se deriva de la siguiente manera.
Si la unidad de decodificación m no es la primera unidad de decodificación de un período de almacenamiento en memoria intermedia posterior, tai,earliest ( m ) puede derivarse como:
tai .cari icst( m ) = tr,n( m ) — ( initial_cpb_rcmoval_dcluy[ SchedSelIdx J +
initial_cpb_removal_delay_offsel|
SchedSelIdx ] ) 90.000 (C-4)
con tr,n(m) siendo el tiempo de eliminación nominal de la unidad de decodificación m de la CPB como se especifica e initial_cpb_removal_delay[ SchedSelIdx ] y initial_cpb_removal_delay_offset[ SchedSelIdx ] especificados en el mensaje SEI del período de almacenamiento en memoria intermedia anterior;
de lo contrario (la unidad de decodificación m es la primera unidad de decodificación de un período de almacenamiento en memoria intermedia posterior), tai,earliest( m ) puede derivarse como:
tai,eariíest( m ) = t r.n ( m ) — ( initial_cpb_remo val delay [ SchedSelIdx ] a-
90.000) (C-5)
estando especificado initial_cpb_removal_delay[ SchedSelIdx ] en el mensaje SEI del período de almacenamiento en memoria intermedia asociado con la unidad de acceso que contiene la unidad de decodificación m.
El tiempo de llegada final para la unidad de decodificación m puede derivarse por:
taf( m ) = tai( m ) b( m j -h BitRate[ SchedSelIdx ] (C-6) donde b( m ) puede ser el tamaño en bits de la unidad de decodificación m, contando los bits de las unidades VCL NAL y las unidades NAL de datos de carga para el punto de conformidad Tipo I o todos los bits del flujo de bits Tipo II para el punto de conformidad Tipo II.
En algunos ejemplos, los valores de SchedSelIdx, BitRate[ SchedSelIdx ], y CpbSize[ SchedSelIdx ] pueden restringirse como sigue:
Si el contenido de los conjuntos de parámetros de secuencia activa para la unidad de acceso que contiene la unidad de decodificación m y la unidad de acceso anterior difieren, el HSS selecciona un valor SchedSelIdx1 de SchedSelIdx entre los valores de SchedSelIdx proporcionados en el conjunto de parámetros de secuencia activa para la unidad de acceso que contiene unidad de decodificación m que da como resultado una BitRate[ SchedSelIdx1 ]o CpbSize[ SchedSelIdx1 ]para la unidad de acceso que contiene la unidad de decodificación m. El valor de BitRate[ SchedSelIdx1 ] o CpbSize[ SchedSelIdx1 ] puede diferir del valor de BitRate[ SchedSelIdx0 ] o CpbSize[ SchedSelIdx0 ] para el valor SchedSelIdx0 de SchedSelIdx que estaba en uso para la unidad de acceso anterior;
de lo contrario, el HSS continúa operando con los valores anteriores de SchedSelIdx, BitRate [ SchedSelIdx ] y CpbSize [ SchedSelIdx ].
Cuando el HSS selecciona valores de BitRate[ SchedSelIdx ] o CpbSize[ SchedSelIdx ] que difieren de los de la unidad de acceso anterior, puede aplicarse lo siguiente en algunos ejemplos:
la variable BitRate[ SchedSelIdx ] entra en vigor en el momento tai( m )
la variable CpbSize[ SchedSelIdx ] entra en vigor de la siguiente manera:
si el nuevo valor de CpbSize[ SchedSelIdx ] supera el antiguo tamaño de CPB, entra en vigor en el momento tai( m ),
de lo contrario, el nuevo valor de CpbSize[ SchedSelIdx ] entra en vigor en el tiempo de eliminación de la CPB de la última unidad de decodificación de la unidad de acceso que contiene la unidad de decodificación m.
Cuando sub_pic_cpb_flag es igual a 1, el tiempo de llegada inicial de CPB de la unidad de acceso n tai( n ) puede establecerse en el tiempo de llegada CPB inicial de la primera unidad de decodificación en la unidad de acceso n, y el tiempo de llegada c Pb final de la unidad de acceso n taf( n ) puede establecerse en el tiempo de llegada final de CPB de la última unidad de decodificación en la unidad de acceso n.
A continuación, se describen algunos ejemplos que implican la temporización de la eliminación de la unidad de decodificación y la decodificación de una unidad de decodificación. Cuando una unidad de decodificación m es la unidad de decodificación con m igual a 0 (la primera unidad de decodificación de la unidad de acceso que inicializa el HRD), el tiempo de eliminación nominal de la unidad de decodificación de la CPB puede especificarse mediante:
tr.„( 0 ) = initial_cpb_removal_delay[ SchedSelIdx 1 90.000 (C-7) Cuando una unidad de decodificación m es la primera unidad de decodificación de la primera unidad de acceso de un período de almacenamiento en memoria intermedia que no inicializa el HRD, el tiempo de eliminación nominal de la unidad de decodificación de la CPB se puede especificar por:
tr,n( m ) = tr,n( mb ) tc * cpb_removal_delay( m ) (C-8) donde tr,n( mb ) es el tiempo de eliminación nominal de la primera unidad de decodificación del período de almacenamiento en memoria intermedia anterior y cpb_removal_delay( m ) es el valor de cpb_removal_delay[ i ] para la unidad de decodificación m especificada en el mensaje SEI de temporización de imágenes asociado con la unidad de acceso que contiene la unidad de decodificación m.
Cuando una unidad de decodificación n es la primera unidad de decodificación de un período de almacenamiento en memoria intermedia, mb puede establecerse igual a m en el tiempo de eliminación tr,n( m ) de la unidad decodificadora n. El tiempo de eliminación nominal tr, n(m) de una unidad de decodificación m que no es la primera unidad de decodificación de un período de almacenamiento en memoria intermedia puede darse por:
tr,n( m ) = tr,n( mb ) tc * cpb_removal_delay( m ) (C-9) donde tr,n( mb ) es el tiempo de eliminación nominal de la primera unidad de decodificación del período de almacenamiento en memoria intermedia actual y cpb_removal_delay( m ) es el valor de cpb_removal_delay[ i ] para la unidad de decodificación m especificada en el mensaje SEI de temporización de imágenes asociado con la unidad de acceso que contiene la unidad de decodificación m.
El tiempo de eliminación de la unidad de decodificación m puede especificarse como sigue:
si low_delay_hrd_flag es igual a 0 o tr,n( m ) >= taf( m ), el tiempo de eliminación de la unidad de decodificación n puede especificarse mediante:
tr( m ) = tr,n( m ) (C-10) de lo contrario (low_delay_hrd_flag es igual a 1 y tr,n( m ) < taf( m )), el tiempo de eliminación de la unidad de decodificación m se especifica mediante:
tr( m ) = tr,n( m ) tc * Ceil( ( taf( m ) - tr,n( m ) ) 4- tc ) (C-l 1) El último caso indica que el tamaño de la unidad de decodificación m, b( m ), es tan grande que impide la eliminación en el tiempo de eliminación nominal.
Cuando sub_pic_cpb_flag es igual a 1, el tiempo de eliminación nominal de CPB de la unidad de acceso n tr,n( n ) se puede establecer en el tiempo normal de eliminación de CPB de la última unidad de decodificación en la unidad de acceso n, el tiempo de eliminación de CPB de la unidad de acceso n tr( n ) puede establecerse en el tiempo de eliminación de CPB de la última unidad de decodificación en la unidad de acceso n.
En algunos ejemplos, en el tiempo de eliminación de la CPB de la unidad de decodificación m, la unidad de decodificación puede decodificarse instantáneamente.
A continuación, se describen algunos ejemplos de funcionamiento de la memoria intermedia de imágenes decodificadas (DPB). La memoria intermedia de imágenes decodificadas puede contener memorias intermedias de almacenamiento de imágenes. Cada una de las memorias intermedias de almacenamiento de imágenes puede contener una imagen decodificada que se marca como "usada como referencia" o se mantiene para salida futura. Antes de la inicialización, el DPB puede estar vacío (la plenitud del DPB se establece en cero). Las siguientes etapas de estos ejemplos de las técnicas de esta divulgación pueden ocurrir en la secuencia enumerada.
A continuación, se describen algunos ejemplos de eliminación de imágenes de la memoria intermedia de imágenes decodificadas (DPB). En algunos ejemplos, la eliminación de imágenes del DPB antes de decodificar la imagen actual (pero después de analizar el encabezado de porción de la primera porción de la imagen actual) puede ocurrir instantáneamente en el tiempo de eliminación de CPB de la primera unidad de decodificación de la unidad de acceso n (que contiene la imagen actual) y puede proceder de la siguiente manera.
Se puede invocar el procedimiento de decodificación para el conjunto de imágenes de referencia como se especifica en la subcláusula 8.3.2 de HEVC WD6. Si la imagen actual es una imagen de actualización instantánea del decodificador (IDR), se puede aplicar lo siguiente:
1. Cuando la imagen IDR no es la primera imagen IDR decodificada (por ejemplo, cuando un indicador de no salida de imágenes anteriores tiene un valor distinto de 1) y el valor de pic_width_in_luma_samples (por ejemplo, un ancho de imagen en muestras lumínicas) o pic_height_in_luma_samples o max_dec_pic_buffering derivado del conjunto de parámetros de secuencia activo es diferente del valor de pic_width_in_luma_samples o pic_height_in_luma_samples o max_dec_pic_buffering derivado del conjunto de parámetros de secuencia que estaba activo para la imagen anterior, respectivamente, se puede inferir que no_output_of_prior_pics_flag es igual a 1 o establecerse como igual a 1 por el HRD, independientemente del valor real de no_output_of_prior_pics_flag. Las implementaciones del decodificador pueden manejar los cambios de tamaño de imagen o DPB con más gracia que el HRD con respecto a los cambios en pic_width_in_luma_samples o pic_height_in_luma_samples.
2. Cuando no_output_of_prior_pics_flag es igual a 1 o se establece o se infiere que es igual a 1, todas las memorias intermedias de almacenamiento de imágenes en la DPB pueden vaciarse sin salida de las imágenes que contienen, y la plenitud de la DPB puede establecerse en 0.
Todas las imágenes k en la DPB, para las que se cumplen todas las condiciones siguientes, pueden eliminarse de la DPB: la imagen k se marca como "no usada como referencia"; la imagen k tiene PicOutputFlag igual a 0 o su tiempo de salida de DPB es menor o igual que el tiempo de eliminación de CPB de la primera unidad de decodificación (indicada como unidad de decodificación m) de la imagen actual n; es decir,
lo.dpbí k ) <= tr( m )
Cuando se elimina una imagen de la DPB, la plenitud de la DPB puede reducirse en uno.
A continuación, se describen algunos ejemplos de salida de imágenes. Lo siguiente puede ocurrir instantáneamente en el tiempo de eliminación de CPB de la última unidad de decodificación (indicada como unidad de decodificación m) de la unidad de acceso n (que contiene la imagen actual), tr(m). La imagen n puede considerarse decodificada después de que se decodifique la última unidad de decodificación de la imagen.
La variable maxPicOrderCnt (para el recuento máximo de pedidos de imágenes (POC)) se puede establecer igual al valor máximo de PicOrderCntVal (para el valor del recuento de pedidos de imágenes (POC)) para la imagen actual y todas las imágenes en el DPB que actualmente se marcan como " usadas para referencia a corto plazo" o que tienen un tiempo de salida DPB mayor que tr(m). La variable minPicOrderCnt (para el conteo mínimo de pedidos de imágenes (POC), es decir, el conteo de pedidos de imágenes más pequeño (POC)) se puede establecer igual al mínimo de PicOrderCntVal para la imagen actual y todas las imágenes en el DPB que actualmente se marcan como "usadas para referencia a corto plazo" o que tienen un tiempo de salida DPB superior a tr(m). Puede ser un requisito de la conformidad del flujo de bits que el valor de maxPicOrderCnt - minPicOrderCnt sea menor que MaxPicOrderCntLsb /2.
Cuando la imagen n tiene PicOutputFlag igual a 1, su tiempo de salida DPB to,dpb( n ) puede derivarse por:
to,dpb( n) = tr( m ) t c * dpb_output_delay( n ) (C-12)
donde dpb_output_delay( n ) es el valor de dpb_output_delay especificado en el mensaje SEI de temporización de imágenes asociado con la unidad de acceso n. La salida de la imagen actual se puede especificar de la siguiente manera:
si PicOutputFlag es igual a 1 y to,dpb( n ) = tr( m ), se emite la imagen actual;
de lo contrario, si PicOutputFlag es igual a 0, la imagen actual no se emite, pero se puede almacenar en el DPB como se especifica más adelante;
de lo contrario (PicOutputFlag es igual a 1 y to,dpb( n ) > tr( m ) ), la imagen actual se emite más tarde y se almacenará en el DPB (como se especifica más adelante) y se emite en el momento to,dpb( n ) a menos que se indique que no se generará mediante la decodificación o la inferencia de no_output_of_prior_pics_flag igual a 1 en un momento que precede a to,dpb(n).
Cuando se emite, la imagen actual o seleccionada puede recortarse, utilizando un rectángulo de recorte especificado en el conjunto de parámetros de secuencia activa, generando así una imagen recortada en base a la imagen seleccionada, es decir, la imagen actual. Cuando la imagen n es una imagen que se emite y no es la última imagen del flujo de bits que se emite, el valor de Ato,dpb( n ) se define como:
Figure imgf000014_0001
donde nn indica la imagen que sigue a la imagen n en orden de salida y tiene PicOutputFlag igual a 1. A continuación, se proporcionan más detalles de un procedimiento de salto y un procedimiento de recorte.
A continuación, se describen algunos ejemplos que implican el marcado y el almacenamiento de imágenes decodificadas actuales. Lo siguiente puede ocurrir instantáneamente en el tiempo de eliminación de CPB de la última unidad de decodificación de la unidad de acceso n (que contiene la imagen actual), tr(m). La imagen decodificada actual puede almacenarse en el DPB en una memoria intermedia de almacenamiento de imágenes vacío, y la plenitud del DPB puede incrementarse en uno. Si la imagen actual es una imagen de referencia, se puede marcar como "usada como referencia", de lo contrario, se puede marcar como "no usada como referencia".
Los siguientes ejemplos de sintaxis y semántica para la señalización del modo de comportamiento de CPB se proporcionan con respecto a un ejemplo de codificador de vídeo 20 y/o decodificador de vídeo 30 configurado para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de memoria intermedia obtenido para cada una de las unidades de decodificación y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones.
A continuación, se describen algunos ejemplos de sintaxis y semántica para la señalización del modo de comportamiento CPB. La sintaxis de los parámetros de información de usabilidad de vídeo (VUI) se puede cambiar agregando un indicador CPB de subimagen, sub_pic_cpb_flag, como se muestra en la Tabla 1 a continuación:
Tabla 1
Figure imgf000014_0002
_________________________________________________________________
En este ejemplo, la Tabla 1 incluye un indicador agregado "sub_pic_cpb_flag", relativo al HEVC convencional. Este indicador de CPB de subimagen, "sub_pic_cpb_flag", puede usarse para señalar si un conjunto de datos de vídeo proporcionados a él memoria intermedia de imágenes de codificación (CPB) incluye parámetros de subimagen para la decodificación de subimagen. Dichos parámetros de subimagen cuya presencia puede señalar el indicador "sub_pic_cpb_flag" pueden incluir tiempos de eliminación de memoria intermedia, incluidos los tiempos de eliminación de memoria intermedia respectivos (es decir, tiempos de eliminación de CPB) para cada una o más unidades de decodificación. Un ejemplo de la semántica de sub_pic_cpb_flag es el siguiente. El elemento de sintaxis sub_pic_cpb_flag siendo igual a 0 puede especificar que la CPB opera a nivel de unidad de acceso. El elemento de sintaxis sub_pic_cpb_flag siendo igual a 1 puede especificar que la CPB opera a un nivel de unidad de decodificación que puede ser al nivel de unidades de acceso o de subconjuntos de unidades de acceso, que pueden corresponder a subimágenes. Cuando sub_pic_cpb_flag no está presente, su valor puede establecerse para que sea igual a 0, lo que puede indicar un estado predeterminado en el que los datos de vídeo no incluyen parámetros de subimagen para la decodificación de subimagen.
A continuación, se describen algunos ejemplos de sintaxis y semántica para la señalización de tiempos de eliminación de CPB de unidades de decodificación. La sintaxis del mensaje SEI del período de almacenamiento en memoria intermedia puede permanecer sin cambios como en HEVC WD6, mientras que la semántica de los elementos de sintaxis initial_cpb_removal_delay[ SchedSelIdx ] e initial_cpb_removal_delay_offset[ SchedSelIdx ] puede cambiarse de la siguiente manera. En este ejemplo, el elemento de sintaxis initial_cpb_removal_delay[ SchedSelIdx ] puede especificar el retardo para el SchedSelIdx-th CPB entre el tiempo de llegada al CPB del primer bit de los datos codificados asociados con la primera unidad de decodificación en la unidad de acceso asociada con el período de almacenamiento en memoria intermedia temporal del mensaje SEI y el tiempo de eliminación de la CPB de los datos codificados asociados con la misma unidad de decodificación, durante el primer período de almacenamiento en memoria intermedia temporal después de la inicialización del HRD. Este elemento de sintaxis puede tener una longitud en bits dada por initial_cpb_removal_length_minus1 1. Esto puede referirse a unidades de un reloj de 90 kHz. En este ejemplo, este elemento de sintaxis initial_cpb_removal_delay[ SchedSelIdx ] puede no ser igual a 0 y no puede exceder 90000*( CpbSize[ SchedSelIdx ]* BitRate[ SchedSelIdx ]), el equivalente de tiempo del tamaño de CPB en unidades de reloj de 90 kHz.
En este ejemplo, el elemento de sintaxis initial_cpb_removal_delay_offset[ SchedSelIdx ] puede usarse para la CPB SchedSelIdx-th en combinación con el elemento de sintaxis cpb_removal_delay para especificar el tiempo de entrega inicial de las unidades de decodificación al CPB. Además, el elemento de sintaxis initial_cpb_removal_delay_offset[ SchedSelIdx ] puede estar en unidades de un reloj de 90 kHz. El elemento de sintaxis initial_cpb_removal_delay_offset[ SchedSelIdx ] puede ser un código de longitud fija cuya longitud en bits viene dada por initial_cpb_removal_delay_length_minus1 1. Este elemento de sintaxis puede no utilizarse por los decodificadores y puede ser necesario sólo para el programador de entrega (HSS) especificado en el anexo C de HEVC WD6.
En algunos ejemplos, la sintaxis y la semántica del mensaje SEI de temporización de imágenes pueden cambiarse como se muestra en la Tabla 2 a continuación:
Tabla 2
Figure imgf000015_0001
_____________________________________________________________
En el ejemplo de la Tabla 2, el mensaje pic_timing SEI incluye una señal agregada num_decoding_units_minus1 y un bucle for sobre el número de unidades de decodificación, que señala un retardo de eliminación respectivo de una unidad de decodificación de la memoria intermedia de imágenes codificada, cuando el sub_pic_cpb_flag de la VUI parámetros, por ejemplo, de acuerdo con la Tabla 1 anterior, es verdadero. De esta manera, el mensaje pic_timing SEI puede incluir información que indica un número de ciclos del reloj para esperar hasta eliminar cada una de una pluralidad de unidades de decodificación de la memoria intermedia de imágenes codificadas cuando los parámetros VUI indican que la CPB opera en el nivel de unidad de decodificación. El retardo de eliminación de una unidad de decodificación puede ser el mismo retardo para cada unidad de decodificación en una carga útil u otra unidad de datos. En otros ejemplos, se pueden aplicar diferentes retardos de eliminación a diferentes unidades de decodificación. El retardo de eliminación puede expresarse en términos de un número de bits, con una conversión de tiempo implícita del número de bits con respecto a la tasa de procesamiento de bits para el reloj aplicable.
La sintaxis del mensaje SEI de temporización de imágenes puede depender del contenido del conjunto de parámetros de secuencia que se activó para la imagen codificada asociada con el mensaje SEI de temporización de imágenes. Sin embargo, a menos que el mensaje SEI de temporización de imágenes de una unidad de acceso de actualización de decodificación instantánea (IDR) se preceda por un mensaje SEI de período de almacenamiento en memoria intermedia dentro de la misma unidad de acceso, la activación del conjunto de parámetros de secuencia asociado (y, para imágenes IDR que no son las primera imagen en el flujo de bits, la determinación de que la imagen codificada es una imagen IDR) puede no ocurrir hasta la decodificación de la primera unidad de capa de abstracción de red (NAL) de la porción codificada de la imagen codificada. Dado que la unidad NAL de porción codificada de la imagen codificada sigue al mensaje SEI de temporización de imágenes en el orden de las unidades NAL, puede haber casos en los que sea necesario que un decodificador almacene la carga útil de la secuencia de bits sin procesar (RBSP) que contiene el mensaje SEI de temporización de imágenes hasta determinar los parámetros del conjunto de parámetros de secuencia que estarán activos para la imagen codificada, y luego realizar el análisis sintáctico del mensaje SEI de temporización de imágenes. El decodificador puede almacenar una o más unidades de decodificación de datos de vídeo en un orden de decodificación continuo en la memoria intermedia de imágenes. La presencia de un mensaje SEI de temporización de imágenes en el flujo de bits puede especificarse en un ejemplo como sigue: si CpbDpbDelaysPresentFlag es igual a 1, puede estar presente un mensaje SEI de temporización de imágenes en cada unidad de acceso de la secuencia de vídeo codificada. De lo contrario, CpbDpbDelaysPresentFlag es igual a 0, y no puede haber mensajes SEI de temporización de imágenes en ninguna unidad de acceso de la secuencia de vídeo codificada.
En este ejemplo, el elemento de sintaxis num_decoding_units_minus1 más 1 puede especificar el número de unidades de decodificación en la unidad de acceso a la que se asocia el mensaje SEI de temporización de imágenes. Cuando sub_pic_cpb_flag es igual a 0, el elemento de sintaxis num_decoding_units_minus1 puede no estar presente y el valor puede establecerse o inferirse que es 0.
En este ejemplo, el elemento de sintaxis cpb_removal_delay[ i ] especifica cuántos ciclos del reloj esperar 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 memoria intermedia más reciente en una unidad de acceso anterior antes de eliminarlo de la CPB la i-ésima unidad de decodificación en la unidad de acceso asociada con el mensaje SEI de temporización de imágenes. 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 HSS. El elemento de sintaxis puede ser un código de longitud fija cuya longitud en bits viene dada por cpb_removal_length_lay_minus1 1. El cpb_removal_delay[ i ] puede ser el resto de un módulo 2(cpb- removal-delay- length-minus1 1) encimera.
El valor de cpb_removal-delay-length_minus1 que determina la longitud (en bits) del elemento de sintaxis cpb_removal-delay[i] puede ser el valor de cpb_removal-delay-length_minus1 codificado en el conjunto de parámetros de secuencia que se activa para la imagen codificada asociada con el mensaje SEI de temporización de imágenes. Sin embargo, cpb_removal_delay[ i ] especifica un número de ciclos del reloj 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 memoria intermedia, que puede ser una unidad de acceso de una secuencia de vídeo codificada diferente.
En este ejemplo, el elemento de sintaxis dpb_output_delay puede usarse para calcular el tiempo de salida DPB de la imagen. El elemento de sintaxis dpb_output_delay especifica cuántos ciclos del reloj hay que esperar tras la retirada de la última unidad de decodificación de una unidad de acceso de la CPB antes de que la imagen decodificada se emita del DPB.
Una imagen no puede retirarse de la DPB en su momento de salida cuando todavía se marca como "usada para referencia a corto plazo" o "usada para referencia a largo plazo". Solo se puede especificar un dpb_output_delay para una imagen decodificada. La longitud del elemento de sintaxis dpb_output_delay puede venir dada en bits por dpb_output-delay-length_minus1 1. Cuando max-dec_pic_buffering[ max_temporal_layers_minus1 ] es igual a 0, dpb_output_delay puede ser igual a 0.
El tiempo de salida derivado del retardo dpb_output_delay de cualquier imagen que salga de un decodificador conforme a la temporización de salida puede preceder al tiempo de salida derivado del retardo dpb_output_delay de todas las imágenes de cualquier secuencia de vídeo codificada posterior en el orden de decodificación. El orden de salida de las imágenes establecido por los valores de este elemento de sintaxis puede ser el mismo que el establecido por los valores de PicOrderCnt(). En el caso de las imágenes que no se emiten mediante el procedimiento de "salto" porque preceden, en el orden de decodificación, a una imagen IDR con el indicador no_output-of-prior_pics-flag igual a 1 o que se infiere que es igual a 1, los tiempos de salida derivados de dpb_output_delay pueden aumentar con el valor creciente de PicOrderCnt( ) en relación con todas las imágenes dentro de la misma secuencia de vídeo codificada. En un ejemplo alternativo, se puede especificar un nuevo mensaje SEI, que puede denominarse mensaje SEI de temporización de unidad de decodificación, cada uno asociado con una unidad de decodificación, para transmitir el retardo de eliminación de CPB para la unidad de decodificación asociada.
De esta manera, implementando cualquier combinación de definiciones de ejemplo, ejemplo de operación de HRD, ejemplo de operación de una memoria intermedia de imágenes codificada, ejemplo de temporización de la llegada de un flujo de bits, ejemplo de temporización de la eliminación de la unidad de decodificación, ejemplo de decodificación de una unidad de decodificación, ejemplo de operación de un decodificador memoria intermedia de imágenes decodificadas, ejemplo de eliminación de imágenes de una memoria intermedia de imágenes decodificadas, ejemplo de salida de imágenes y ejemplo de marcado y almacenamiento de imágenes decodificadas actuales, y ejemplo de sintaxis y semántica para la señalización del modo de comportamiento CPB, se puede configurar el codificador de vídeo 20 y/o el decodificador de vídeo 30 para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de memoria intermedia obtenido para cada una de las unidades de decodificación unidades y codificar datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones.
Una unidad de decodificación se puede definir de la siguiente manera: "Una unidad de acceso o un subconjunto de una unidad de acceso". Si SubPicCpbFlag es igual a 0, una unidad de decodificación es una unidad de acceso. De lo contrario, una unidad de decodificación incluye una o más unidades NAL VCL y las unidades NAL no VCL asociadas en una unidad de acceso. Para la primera unidad NAL VCL en una unidad de acceso, las unidades NAL no VCL asociadas son todas las unidades nAl no VCL en la unidad de acceso y antes de la primera unidad NAL VCL y las unidades NAL de datos de carga, si las hay, inmediatamente después de la primera unidad NAL no VCL. Para una unidad NAL VCL que no es la primera unidad NAL VCL en una unidad de acceso, las unidades NAL no VCL asociadas son las unidades NAL de datos de carga, si las hay, inmediatamente después de la unidad NAL no VCL."
En este ejemplo, las operaciones del decodificador de referencia hipotético (HRD) pueden resumirse como sigue. El tamaño de CPB (número de bits) es CpbSize[ SchedSelIdx ]. El tamaño de DPB (número de memorias intermedias de almacenamiento de imágenes) para la capa temporal X puede ser max_dec_pic_buffering[X]+ 1 para cada X en el rango de 0 a max_temporal_layers_minus1, incluido. Se puede utilizar una variable SubPicCpbPreferredFlag como indicador preferido de la memoria intermedia de imágenes codificadas de subimagen, y se puede especificar por medios externos o, cuando no se especifica por medios externos, se puede poner a 0. Puede utilizarse un indicador de presencia de parámetros de imagen codificada de subimagen independiente, sub_pic_cpb_params_present_flag, para indicar si están disponibles los parámetros necesarios para codificar subconjuntos de una o más unidades de acceso. Un único indicador de memoria intermedia de imágenes codificadas de subimagen, SubPicCpbFlag, puede indicar si tanto el indicador preferido de la memoria intermedia de imágenes codificadas de subimagen como el indicador presente de parámetros de imagen codificada de subimagen son positivos o se fijan a 1. Un codificador de vídeo puede usar este indicador de memoria intermedia de imágenes codificadas de subimagen, SubPicCpbFlag, para determinar si codificar unidades de acceso de datos de vídeo o codificar subconjuntos de una o más unidades de acceso, como subimágenes, de datos de vídeo, como el vídeo los datos se eliminan de la CPB.
La variable SubPicCpbFlag se puede derivar de la siguiente manera:
SubPicCpbFlag = SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag
(C-l)
Si SubPicCpbFlag es igual a 0, la CPB puede operar a nivel de unidad de acceso, y cada unidad de decodificación puede ser una unidad de acceso. De lo contrario, la CPB puede funcionar a nivel de subimagen y cada unidad de decodificación puede ser un subconjunto de una unidad de acceso.
El decodificador de vídeo 30/108 puede determinar que una o más unidades de decodificación comprenden unidades de acceso determinando que un indicador preferido de la memoria intermedia de imágenes codificadas de subimagen (por ejemplo, SubPicCpbPreferredFlag) tiene un valor de cero o que un indicador de presencia de parámetros de la memoria intermedia de imágenes codificadas de subimagen (por ejemplo, sub_pic_cpb_params_present_flag) tiene un valor de cero.
El HRD (por ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30) puede funcionar de la siguiente manera. Los datos asociados con las unidades de decodificación que fluyen hacia la CPB de acuerdo con un horario de llegada específico pueden entregarse por el HSS. En un ejemplo, los datos asociados con cada unidad de decodificación pueden eliminarse y decodificarse instantáneamente mediante el procedimiento de decodificación instantánea en tiempos de eliminación de CPB. Cada imagen decodificada puede colocarse en el DPB. Una imagen decodificada puede eliminarse de la DPB en el último tiempo de salida de la DPB o en el momento en que ya no se necesita para la referencia entre predicciones.
Las operaciones aritméticas descritas en esta divulgación se pueden realizar con valores reales, de modo que no se propaguen errores de redondeo. Por ejemplo, el número de bits en una CPB justo antes o después de la eliminación de una unidad de decodificación puede no ser necesariamente un número entero.
La variable tc puede derivarse de la siguiente manera y llamarse tic de reloj:
tc - num_units_in_tick ^ time_scale (C-l)
Se puede especificar lo siguiente para expresar las restricciones en este ejemplo de las técnicas de esta divulgación:
sea la unidad de acceso n la n-ésima unidad de acceso en el orden de decodificación, siendo la primera unidad de acceso la unidad de acceso 0;
sea la imagen n la imagen codificada o la imagen decodificada de la unidad de acceso n;
sea la unidad de decodificación m la m-ésima unidad de decodificación en el orden de decodificación, siendo la primera unidad de decodificación la unidad de decodificación 0.
Las operaciones de la memoria intermedia de imágenes codificadas (CPB) pueden definirse como sigue. Las especificaciones de este ejemplo pueden aplicarse independientemente a cada conjunto de parámetros CPB que esté presente y a los puntos de conformidad de Tipo I y Tipo II.
Con respecto a la temporización de la llegada del flujo de bits, el HRD puede inicializarse en cualquiera de los mensajes SEI del período de almacenamiento en memoria intermedia. Antes de la inicialización, la CPB puede estar vacío. Después de la inicialización, el HRD no puede inicializarse de nuevo por los mensajes SEI del período de almacenamiento en memoria intermedia posterior.
Cada unidad de acceso puede denominarse unidad de acceso respectiva n, donde el número n identifica la unidad de acceso particular. La unidad de acceso que se asocia con el mensaje SEI del período de almacenamiento en memoria intermedia que inicializa la CPB puede denominarse unidad de acceso 0. El valor de n puede incrementarse en 1 para cada unidad de acceso posterior en el orden de decodificación.
Cada unidad de decodificación puede denominarse, respectivamente, unidad de decodificación m, donde el número m identifica la unidad de decodificación concreta. La primera unidad de decodificación en orden de decodificación en la unidad de acceso 0 puede denominarse unidad de decodificación 0. El valor de m puede incrementarse en 1 para cada unidad de decodificación posterior en el orden de decodificación.
En este ejemplo, si la variable SubPicCpbFlag es igual a 0, la variable InitCpbRemovalDelay[ SchedSelIdx ] puede establecerse en initial_cpb_removal_delay[ SchedSelIdx ]del mensaje SEI del período de almacenamiento en memoria intermedia asociado, e InitCpbRemovalDelayOffset[ SchedSelIdx ] puede establecerse en initial_cpb_removal_delay_offset[SchedSelIdx]del mensaje SEI del período de almacenamiento en memoria intermedia asociado. De lo contrario, la variable InitCpbRemovalDelay[ SchedSelIdx ] puede establecerse en initial_du_cpb_removal_delay[ SchedSelIdx ]del mensaje SEI del período de almacenamiento en memoria intermedia asociado, e InitCpbRemovalDelayOffset[ SchedSelIdx ] puede establecerse en initial_du_cpb_removal_delay_offset[ SchedSelIdx ]del mensaje SEI del período de almacenamiento en memoria intermedia asociado.
El momento en que el primer bit de la unidad de decodificación n comienza a entrar en la CPB puede denominarse tiempo de llegada inicial tai( m ). El tiempo de llegada inicial de las unidades de decodificación puede derivarse como sigue:
si la unidad de decodificación es la unidad de decodificación 0, tai( 0 ) = 0;
de lo contrario (la unidad de decodificación es la unidad de decodificación m con m > 0), se puede aplicar lo siguiente:
si cbr_flag[ SchedSelIdx ]es igual a 1, la hora de llegada inicial de la unidad de decodificación m, puede ser igual a la hora de llegada final (que se deriva más adelante) de la unidad de acceso m - 1, es decir,
tai( m ) = taf( m - 1) (C-2)
de lo contrario (cbr_flag[ SchedSelIdx ]es igual a 0), la hora de llegada inicial de la unidad de decodificación m puede derivarse por
tai( m ) = Max( taf( m - 1 ), tai,earliest( m ) ) (C-3)
donde tai,earliest( m ) puede derivarse de la siguiente manera:
si la unidad de decodificación n no es la primera unidad de decodificación de un período de almacenamiento en memoria intermedia posterior, tai,earliest( m ) puede derivarse como:
tai,earüesi( m ) = lr,n( m ) -( InilCpbRcmovalDclayl SchedSelIdx J
InitCpbRemovalDelayOffset[ SchedSelIdx ] ) 90.000 (C-4)
siendo tr,n( m ) el tiempo de eliminación nominal de la unidad de decodificación m de la CPB;
de lo contrario (la unidad de decodificación m es la primera unidad de decodificación de un período de almacenamiento en memoria intermedia), tai,earliest( m ) puede derivarse como
ta¡,eariiest( n i ) = tr,n( m ) - ( InitCphReiiiovalDelay [ SchedSelIdx J * 90.000 )
(C-5)
La hora final de llegada taf para la unidad de decodificación m puede derivarse por
taf( m ) = tai( m ) b( m ) BitRate[ SchedSelIdx ] (C-6)
donde b( m ) es el tamaño en bits de la unidad de decodificación m, contando los bits de las unidades VCL NAL y las unidades nAl de datos de carga para el punto de conformidad Tipo I o todos los bits del flujo de bits de Tipo II para el punto de conformidad Tipo II.
En algunos ejemplos, los valores de SchedSelIdx, BitRate[ SchedSelIdx ] y CpbSize[ SchedSelIdx ] pueden ser restringidos de la siguiente manera
si el contenido de los conjuntos de parámetros de secuencia activa para la unidad de acceso que contiene la unidad de decodificación m y la unidad de acceso anterior difieren, el HSS puede seleccionar un valor SchedSelIdx1 de SchedSelIdx de entre los valores de SchedSelIdx proporcionados en el conjunto de parámetros de secuencia activa para la unidad de acceso que contiene la unidad de decodificación m que da como resultado una BitRate[ SchedSelIdx1 ]o CpbSize[ SchedSelIdx1 ]para la unidad de acceso que contiene la unidad de decodificación m. El valor de BitRate[ SchedSelIdx1 ] o CpbSize[ SchedSelIdx1 ] puede diferir del valor de BitRate[ SchedSelIdx0 ] o CpbSize[ SchedSelIdx0 ] para el valor SchedSelIdx0 de SchedSelIdx que estaba en uso para la unidad de acceso anterior;
de lo contrario, el HSS podrá seguir operando con los valores anteriores de SchedSelIdx, BitRate[ SchedSelIdx ]y CpbSize[ SchedSelIdx ].
Cuando el HSS selecciona valores de BitRate[ SchedSelIdx ]o CpbSize[ SchedSelIdx ] que difieren de los de la unidad de acceso anterior, puede aplicarse lo siguiente:
la variable BitRate[ SchedSelIdx ] puede entrar en vigor en el momento tai( m );
la variable CpbSize[ SchedSelIdx ] puede entrar en vigor de la siguiente manera:
si el nuevo valor de CpbSize[ SchedSelIdx ] supera el antiguo tamaño de CPB, puede entrar en vigor en el momento tai( m );
de lo contrario, el nuevo valor de CpbSize[ SchedSelIdx ] puede entrar en vigor en el tiempo de eliminación de la CPB de la última unidad de decodificación de la unidad de acceso que contiene la unidad de decodificación m.
Cuando la variable SubPicCpbFlag es igual a 1, el tiempo de llegada CPB inicial de la unidad de acceso n tai( n ) puede establecerse en el tiempo de llegada CPB inicial de la primera unidad de decodificación en la unidad de acceso n, y el tiempo de llegada CPB final de la unidad de acceso n taf( n ) puede establecerse en el tiempo de llegada final de CPB de la última unidad de decodificación en la unidad de acceso n. Cuando SubPicCpbFlag es igual a 0, cada unidad de decodificación puede ser una unidad de acceso, de manera que los tiempos de llegada CPB inicial y final de la unidad de acceso n pueden ser los tiempos de llegada CPB inicial y final de la unidad de decodificación m.
La siguiente discusión proporciona un ejemplo para la temporización de la eliminación de la unidad de decodificación y la decodificación de una unidad de decodificación. Si SubPicCpbFlag es igual a 0, la variable CpbRemovalDelay(m) puede establecerse en el valor de cpb_removal_delay especificado en el mensaje SEI de temporización de imágenes asociado con la unidad de acceso que es la unidad de decodificación m. De lo contrario, la variable CpbRemovalDelay( m ) puede establecerse en el valor de du_cpb_removal_delay[ i ] para la unidad de decodificación m especificada en el mensaje SEI de temporización de imágenes asociado con la unidad de acceso que contiene la unidad de decodificación m.
Cuando una unidad de decodificación m es la unidad de decodificación con m igual a 0 (la primera unidad de decodificación de la unidad de acceso que inicializa el HRD), el tiempo de eliminación nominal de la unidad de decodificación de la CPB puede especificarse mediante:
tr,n( 0 ) = InitCpbRemovalDelay[ SchedSelIdx ] h- 90000 (C-7)
Cuando una unidad de decodificación m es la primera unidad de decodificación de la primera unidad de acceso de un período de almacenamiento en memoria intermedia que no inicializa el HRD, el tiempo de eliminación nominal de la unidad de decodificación de la CPB puede especificarse por
tr,n( m ) = tr.ní mb ) tc * CpbRemovalDelay( m ) (C-8)
donde tr,n( mb ) es el tiempo de eliminación nominal de la primera unidad de decodificación del período de almacenamiento en memoria intermedia anterior.
Cuando una unidad de decodificación m es la primera unidad de decodificación de un período de almacenamiento en memoria intermedia, mb puede establecerse igual a m en el tiempo de eliminación tr,n( m ) de la unidad de decodificación m.
El tiempo de eliminación nominal tr,n(m) de una unidad de decodificación m que no es la primera unidad de decodificación de un período de almacenamiento en memoria intermedia puede darse por:
tr,n( m ) = tr,n( m b ) tc * CpbRemovalDelay( m ) (C-9)
donde tr,n( mb ) es el tiempo de eliminación nominal de la primera unidad de decodificación del período de almacenamiento en memoria intermedia actual.
El tiempo de eliminación de la unidad de decodificación m puede especificarse como sigue:
Si low_delay_hrd_flag es igual a 0 o tr,n( m ) >= taf( m ), el tiempo de eliminación de la unidad de decodificación m puede especificarse mediante:
tr( m ) = tr,n( m ) (C -10 )
De lo contrario (low_delay_hrd_flag es igual a 1 y tr,n( m ) < taf( m )), y el tiempo de eliminación de la unidad de decodificación m puede especificarse mediante:
Figure imgf000020_0001
El último caso, en este ejemplo, indica que el tamaño de la unidad de decodificación m, b(m), es tan grande que impide la eliminación en el tiempo de eliminación nominal.
Cuando SubPicCpbFlag es igual a 1, el tiempo de eliminación nominal de CPB de la unidad de acceso n, tr,n( n ), puede establecerse en el tiempo normal de eliminación de CPB de la última unidad de decodificación en la unidad de acceso n; el tiempo de extracción de CPB de la unidad de acceso n, tr( n ), puede establecerse en el tiempo de eliminación de CPB de la última unidad de decodificación en la unidad de acceso n. Cuando SubPicCpbFlag es igual a 0, cada unidad de decodificación m es una unidad de acceso n, en este ejemplo, y, por lo tanto, el tiempo de eliminación nominal de CPB y el tiempo de eliminación de CPB de la unidad de acceso n son el tiempo de eliminación de CPB nominal y el tiempo de eliminación de CPB de unidad de decodificación m. En el tiempo de eliminación de la CPB de la unidad de decodificación m, en algunos ejemplos, la unidad de decodificación puede decodificarse instantáneamente.
En este ejemplo, la memoria intermedia de imágenes decodificadas (DPB) puede funcionar como sigue. La memoria intermedia de imágenes decodificadas puede contener uno o más memorias intermedias de almacenamiento de imágenes. Cada uno de las memorias intermedias de almacenamiento de imágenes puede contener una imagen decodificada que se marca como "usada como referencia" o se mantiene para salida futura. Antes de la inicialización, el DPB puede estar vacío (la variable de plenitud del DPB puede establecerse en cero). Las siguientes etapas de este ejemplo pueden ocurrir en la secuencia indicada.
Primero, las imágenes pueden eliminarse del DPB. La eliminación de imágenes de la DPB antes de decodificar la imagen actual (pero después de analizar el encabezado de porción de la primera porción de la imagen actual) puede ocurrir instantáneamente en el tiempo de eliminación de CPB de la primera unidad de decodificación de la unidad de acceso n (que contiene la imagen actual) y puede proceder de la siguiente manera. Se puede invocar el procedimiento de decodificación para el conjunto de imágenes de referencia como se especifica en la subcláusula 8.3.2 de HEVC WD6. Si la imagen actual es una imagen IDR, se puede aplicar lo siguiente: cuando la imagen IDR no es la primera imagen IDR decodificada y el valor de pic_width_in_luma_samples o pic_height_in_luma_samples o max_dec_pic_buffering derivados del conjunto de parámetros de secuencia activa es diferente del valor de pic_width_in_luma_samples o pic_height_in_luma_samples o max_dec_pic_buffering derivados del conjunto de parámetros de secuencia que estaba activo para la imagen anterior, respectivamente, no_output_of_prior_pics_flag (es decir, un indicador de no salida de imágenes anteriores) puede inferirse que es igual a 1 por el HRD, o establecerse en 1 para su propio procesamiento por el HRD, independientemente del valor real de no_output_of_prior_pics_flag. Las implementaciones del decodificador pueden tratar de manejar los cambios de tamaño de imagen o DPB con más gracia que el HRD con respecto a los cambios en pic_width_in_luma_samples o pic_height_in_luma_samples.
Cuando no_output_of_prior_pics_flag es igual a 1 o se infiere que es igual a 1, todas las memorias intermedias de almacenamiento de imágenes en la DPB pueden vaciarse sin salida de las imágenes que contienen, y la plenitud de la DPB puede establecerse en 0. (El procesamiento adicional que se puede realizar si no_output_of_prior_pics_flag tiene un valor que no es igual a 1 se describe más adelante.) Todas las imágenes k en el DPB, para las cuales se cumplen las siguientes condiciones, se pueden eliminar del DPB:
la imagen k se marca como "sin usar como referencia";
la imagen k tiene PicOutputFIag igual a 0 o su tiempo de salida de DPB es menor o igual que el tiempo de eliminación de CPB de la primera unidad de decodificación (indicada como unidad de decodificación m) de la imagen actual n; es decir, to,dpb( k ) <= tr( m ).
Cuando se elimina una imagen de la DPB, la plenitud de la DPB puede reducirse en uno. Para la salida de imagen, lo siguiente puede ocurrir instantáneamente en el tiempo de eliminación de CPB de la unidad de acceso n, tr( n ): La imagen n puede considerarse decodificada después de que se decodifique la última unidad de decodificación de la imagen.
Cuando la imagen n tiene PicOutputFlag igual a 1, su tiempo de salida DPB a,dpb( n ) puede derivarse por:
to,dPb( n ) = tr( n ) tc * dpb_output_delay( n ) (C-12)
donde dpb_output_delay( n ) es el valor de dpb_output_delay especificado en el mensaje SEI de temporización de imágenes asociado con la unidad de acceso n.
La salida de la imagen actual se puede especificar de la siguiente manera:
si PicOutputFlag es igual a 1 y a,dpb( n ) = tr( n ), se puede emitir la imagen actual;
de lo contrario, si PicOutputFlag es igual a 0, la imagen actual puede no emitirse, pero puede almacenarse en el DPB;
de lo contrario (PicOutputFlag es igual a 1 y to,dpb( n ) > tr( n )), la imagen actual puede generarse más tarde y puede almacenarse en el DPB (como se especifica en la subcláusula C.3.3 de HEVC WD6 modificada por esta divulgación), y puede generarse en el momento to,dpb( n ) a menos que se indique que no se generará mediante la decodificación o la inferencia de no_output_of_prior_pics_flag igual a 1 en un momento que precede a to, dpb(n). En otras palabras, la imagen actual se puede almacenar en el DPB y se puede emitir más tarde, por ejemplo, en el momento to,dpb( n ), si el indicador de no salida de imágenes anteriores no es igual a 1.
Cuando se emite, la imagen se puede recortar, utilizando el rectángulo de recorte especificado en el conjunto de parámetros de secuencia activa.
Cuando la imagen n es una imagen que se emite y no es la última imagen del flujo de bits que se emite, el valor de un intervalo de tiempo de salida DPB Ato,dpb( n ) puede definirse como sigue:
Ato,dpb( fl ) — to,dpb( fln ) to,dpb( fl ) (C -13 )
donde nn puede indicar la imagen que sigue a la imagen n en orden de salida y tiene PicOutputFlag igual a 1, de modo que el intervalo de tiempo de salida DPB Ato,dpb( n ) puede definirse como la diferencia entre el tiempo de salida DPB de una imagen posterior después de imagen n en el orden de salida y el tiempo de salida DPB de la imagen n.
Para el marcado y almacenamiento de imágenes decodificadas actuales, se puede implementar lo siguiente instantáneamente en el tiempo de eliminación de CPB de la unidad de acceso n, tr(n): la imagen decodificada actual se puede almacenar en la DPB en una memoria intermedia de almacenamiento de imágenes vacío, y la DPB completa puede incrementarse en uno; si la imagen actual es una imagen de referencia, puede marcarse como "usada como referencia", de lo contrario, puede marcarse como "no usada como referencia."
Para el funcionamiento del orden de salida del DPB, la memoria intermedia de imágenes decodificadas puede contener uno o más memorias intermedias de almacenamiento de imágenes. Cada uno de las memorias intermedias de almacenamiento de imágenes puede contener una imagen decodificada que se marca como "usada como referencia" o se mantiene para salida futura. En la inicialización de HRD, el DPB puede estar vacío. Las siguientes etapas pueden suceder en el orden indicado.
Las imágenes se pueden eliminar de la DPB de la siguiente manera. La eliminación de imágenes del DPB antes de decodificar la imagen actual (pero después de analizar el encabezado de porción de la primera porción de la imagen actual) puede implementarse instantáneamente cuando la primera unidad de decodificación de la unidad de acceso que contiene la imagen actual se elimina de la CPB y puede proceder de la siguiente manera.
Se puede invocar el procedimiento de decodificación para el conjunto de imágenes de referencia como se especifica en la subcláusula 8.3.4.3 de HEVC WD6, modificado de acuerdo con esta divulgación (como se describe parcialmente más arriba y como se describe más detalladamente a continuación).
Si la imagen actual es una imagen IDR, se puede aplicar lo siguiente:
cuando la imagen IDR no es la primera imagen IDR decodificada y el valor de pic_width_in_luma_samples o pic_height_in_luma_samples o max_dec_pic_buffering derivados del conjunto de parámetros de secuencia activa es diferente del valor de pic_width_in_luma_samples o pic_height_in_luma_samples o max_dec_pic_buffering derivados del conjunto de parámetros de secuencia que estaban activos para la imagen anterior, respectivamente, no_output_of_prior_pics_flag puede establecerse o inferirse que sea igual a 1 por el HRD, independientemente del valor real de no_output_of_prior_pics_flag. Las implementaciones del decodificador pueden tratar de manejar los cambios en el valor de pic_width_in_luma_samples o pic_height_in_luma_samples o max_dec_pic_buffering con más gracia que el HRD;
cuando no_output_of_prior_pics_flag es igual a 1 o se infiere que es igual a 1, todas las memorias intermedias de almacenamiento de imágenes en la DPB pueden vaciarse sin salida de las imágenes que contienen;
de lo contrario, las memorias intermedias de almacenamiento de imágenes que contengan una imagen marcada como "no necesaria para la salida" y "no usada como referencia" pueden vaciarse (sin salida).
Cuando cualquiera de las siguientes condiciones es verdadera, se puede invocar repetidamente un procedimiento de "salto" especificado en la subcláusula C.5.2.1 de HEVC WD6 modificado por esta divulgación hasta que haya una memoria intermedia de almacenamiento de imágenes vacío para almacenar la imagen decodificada actual:
el número de imágenes en el DPB que se marcan como "necesarias para la salida" es mayor que un número de imágenes reordenadas en una capa temporal actual, es decir, num_reorder_pics[temporal_id]; o,
el número de imágenes en la DPB con el número de imágenes en la DPB con valores de identificador de capa temporal, temporal_id, inferior o igual a un valor de identificador de capa temporal, temporal_id, de la imagen actual es igual a un valor máximo de almacenamiento en memoria intermedia de imágenes de la actual capa temporal más uno, es decir, max_dec_pic_buffering[ temporal_id ]+ 1; o,
cuando la imagen actual es una imagen IDR para la cual el indicador de no salida de imágenes anteriores, no_output_of_prior_pics_flag, tiene un valor distinto de 1 y no se infiere que sea igual a 1.
Se pueden realizar las siguientes etapas: las memorias intermedias de almacenamiento de imágenes que contienen una imagen que se marcan como "no necesarias para la salida" y "no usadas como referencia" se pueden vaciar (sin salida); y todas las memorias intermedias de almacenamiento de imágenes que no estén vacías en la DPB pueden vaciarse invocando repetidamente el procedimiento de “salto” especificado a continuación.
Por lo tanto, se podrá invocar un procedimiento de "salto" en cualquiera de los siguientes casos:
la imagen actual es una imagen IDR y no_output_of_prior_pics_flag no es igual a 1 y no se establece ni se supone que sea igual a 1, como se especifica en la subcláusula C.5.2 de HEVC WD6 modificada por esta divulgación; o,
la cantidad de imágenes en el DPB que se marcan como "necesarias para la salida" es mayor que una cantidad de imágenes reordenadas en una capa temporal actual, es decir, num_reorder_pics[ temporal_id ], como se especifica en la subcláusula C.5.2 de HEVC WD6 modificado por esta divulgación; o,
el número de imágenes en el DPB con temporal_id inferior o igual a un valor de identificador de capa temporal, temporal_id, de la imagen actual es igual al valor máximo de almacenamiento en memoria intermedia de imágenes de la capa temporal actual más uno, es decir, max_dec_pic_buffering[ temporal_id ]+ 1, como se especifica en la subcláusula C.5.2 de HEVC WD6 modificada por esta divulgación.
El procedimiento de "salto" puede incluir las siguientes etapas ordenadas:
1. La imagen que es la primera para la salida puede seleccionarse como la que tiene el valor más pequeño de PicOrderCntVal de todas las imágenes en el DPB marcadas como "necesarias para la salida".
2. La imagen se recorta, usando el rectángulo de recorte especificado en el conjunto de parámetros de secuencia activa para la imagen, la imagen recortada puede emitirse y la imagen puede marcarse como "no necesaria para la salida".
3. Si la memoria intermedia de almacenamiento de imágenes que incluía la imagen que se recortó y emitió contiene una imagen marcada como "no usada como referencia", la memoria intermedia de almacenamiento de imágenes puede vaciarse.
Lo siguiente puede suceder instantáneamente para la decodificación, marcación y almacenamiento de imágenes, cuando la última unidad de decodificación de la unidad de acceso n que contiene la imagen actual se retira de la CPB.
La imagen actual puede considerarse como decodificada después de que se haya decodificado la última unidad de decodificación de la imagen. La imagen decodificada actual se puede almacenar en una memoria intermedia de almacenamiento de imágenes vacía en la DPB, y se puede aplicar lo siguiente:
si la imagen decodificada actual tiene PicOutputFlag igual a 1, puede marcarse como "necesaria para la salida"; de lo contrario (la imagen decodificada actual tiene PicOutputFlag igual a 0), puede marcarse como "no necesaria para la salida".
Si la imagen decodificada actual es una imagen de referencia, puede marcarse como "usada como referencia"; de lo contrario (la imagen decodificada actual es una imagen que no es de referencia), puede marcarse como "no usada como referencia".
Por lo tanto, un procedimiento de salto puede incluir: seleccionar una imagen que tenga un valor de recuento de orden de imágenes (POC) más pequeño de imágenes en el DPB y que se marque como necesaria para la salida como una imagen seleccionada; recortar la imagen seleccionada como se especifica en un conjunto de parámetros de secuencia activa para la imagen seleccionada, generando así una imagen recortada en base a la imagen seleccionada; salida de la imagen recortada; y marcar la imagen seleccionada como no necesaria para la salida. Los elementos de sintaxis pueden usarse para señalar un modo de comportamiento CPB, usando la semántica definida a continuación. La sintaxis de los parámetros y la semántica de VUI se puede cambiar para que se muestre en la Tabla 3 a continuación (la semántica de los elementos de sintaxis existentes no se cambia en relación con HEVC WD6, en este ejemplo):
Tabla 3
Figure imgf000023_0001
________________________________________________________
(continuación)
Figure imgf000024_0001
___________________________________________________________
En el ejemplo de la Tabla 3, los parámetros de VUI incluyen un indicador agregado sub_pic_cpb_params_present_flag, relativa a HEVC convencional. La semántica para este indicador puede definirse como sigue: sub_pic_cpb_params_present_flag siendo igual a 1 puede especificar que los parámetros de retardo de eliminación de CPB de nivel de subimagen están presentes y la CPB puede operar a nivel de unidad de acceso o nivel de subimagen. La variable sub_pic_cpb_flag que es igual a 0 puede especificar que los parámetros de retardo de eliminación de CPB de nivel de subimagen no están presentes y que la CPB tiene que operar a nivel de unidad de acceso. Cuando sub_pic_cpb_params_present_flag no está presente, su valor puede establecerse o inferirse como igual a 0.
Los elementos de sintaxis también se pueden usar para señalar los tiempos de eliminación de CPB de las unidades de decodificación, usando la semántica que se describe a continuación. Los elementos de sintaxis se señalizan en un mensaje SEI de período de almacenamiento en memoria intermedia, por ejemplo, de acuerdo con el ejemplo de la Tabla 4:
Tabla 4
Figure imgf000024_0002
_________________________________________________________________
En el ejemplo de la Tabla 4, el mensaje SEI del período de almacenamiento en memoria intermedia incluye un condicional adicional relativo al HEVC convencional, que además incluye, cuando sub_pic_cpb_flag es verdadero, se agregan dos elementos de sintaxis, initial_du_cpb_removal_delay [SchedSelIdx] e initial_du_cpb_removal_delay_offset [SchedSelIdx]. Estos elementos de sintaxis condicional y agregado pueden agregarse dentro de uno o ambos condicionales para cuando NalHrdBpPresentFlag es verdadero y/o cuando VclHardBpPresentFlag es verdadero.
La Tabla 5 proporciona un ejemplo alternativo en el que se define un mensaje SEI diferente para señalar el retardo de eliminación inicial de CPB y el desplazamiento del retardo de eliminación inicial de CPB para la operación de CPB de nivel de subimagen:
Tabla 5
Figure imgf000025_0001
_________________________________________________________________
En el ejemplo de la Tabla 4 anterior, cuando NalHrdBpPresentFIag o VcIHrdBpPresentFIag son iguales a 1, se puede asociar un mensaje SEI de período de almacenamiento en memoria intermedia con cualquier unidad de acceso en el flujo de bits, y se puede asociar un mensaje SEI de período de almacenamiento en memoria intermedia con cada unidad de acceso IDR, con cada unidad de acceso c Ra , y con cada unidad de acceso asociada con un mensaje SEI de punto de recuperación. Para algunas aplicaciones, la presencia frecuente de un mensaje SEI de período de almacenamiento en memoria intermedia puede ser deseable. En algunos ejemplos, un período de almacenamiento en memoria intermedia puede especificarse como el conjunto de unidades de acceso entre dos instancias del mensaje SEI de período de almacenamiento en memoria intermedia en orden de decodificación.
En los ejemplos de las Tablas 4 y 5 anteriores, la variable seq_parameter_set_id puede especificar el conjunto de parámetros de secuencia que contiene los atributos HRD de secuencia. El valor de seq_parameter_set_id puede ser igual al valor de seq_parameter_set_id en el conjunto de parámetros de imagen al que hace referencia la imagen codificada primaria asociada al mensaje SEI del período de almacenamiento en memoria intermedia. En algunos ejemplos, el valor de seq_parameter_set_id puede estar en el rango de 0 a 31, inclusive.
En el ejemplo de la Tabla 4 anterior, initial_cpb_removal_delay[ SchedSelIdx ] puede especificar el retardo para el SchedSelIdx-th CPB entre el tiempo de llegada al CPB del primer bit de los datos codificados asociados con la unidad de acceso asociada con el mensaje SEI del período de almacenamiento en memoria intermedia y el tiempo de eliminación de la CPB de los datos codificados asociados con la misma unidad de acceso, durante el primer período de almacenamiento temporal después de la inicialización de HRD. Este elemento de sintaxis puede tener una longitud en bits dada por initial_cpb_removal_length_minus1 1. Puede estar en unidades de un reloj de 90 kHz en este ejemplo. El elemento de sintaxis initial_cpb_removal_delay[ SchedSelIdx ] puede no ser igual a 0, en este ejemplo, y no puede exceder 90000*( CpbSize[ SchedSelIdx ]□ BitRate[ SchedSelIdx ]), el equivalente de tiempo del tamaño de CPB en unidades de reloj de 90 kHz, en este ejemplo.
En el ejemplo de la Tabla 4 anterior, el elemento de sintaxis
initial_cpb_removal_delay_offset[ SchedSelIdx ] puede usarse para el SchedSelIdx-th CPB en combinación con cpb_removal_delay para especificar el tiempo de entrega inicial de las unidades de acceso codificadas al CPB. El elemento de sintaxis
initial_cpb_removal_delay_offset[ SchedSelIdx ] puede estar en unidades de un reloj de 90 kHz en este ejemplo. El elemento de sintaxis initial_cpb_removal_delay_offset[ SchedSelIdx ] puede ser un código de longitud fija cuya longitud en bits viene dada por
initial_cpb_removal_delay_length_minus1 1. Este elemento de sintaxis puede no utilizarse por los decodificadores y puede ser necesario sólo para el programador de entrega (HSS) especificado en el anexo C de HEVC WD6. En toda la secuencia de vídeo codificada, la suma de initial_cpb_removal_delay[ SchedSelIdx ]y initial_cpb_removal_delay_offset[ SchedSelIdx ] puede ser constante para cada valor de SchedSelIdx.
En los ejemplos de las Tablas 4 y 5 anteriores, el elemento de sintaxis initial_du_cpb_removal_delay[ SchedSelIdx ] puede especificar el retardo para el SchedSelIdx-th CPB entre el tiempo de llegada al CPB del primer bit de los datos codificados asociados con la primera unidad de decodificación en la unidad de acceso asociada con el mensaje SEI del período de almacenamiento en memoria intermedia, y el tiempo de eliminación de la CPB de los datos codificados asociados con la misma unidad de decodificación, para el primer período de almacenamiento en memoria intermedia después de la inicialización de HRD. Este elemento de sintaxis puede tener una longitud en bits dada por initial_cpb_removal_length_minus1 1. Este elemento de sintaxis puede estar en unidades de un reloj de 90 kHz en este ejemplo. En este ejemplo, el elemento de sintaxis initial_du_cpb_removal_delay[ SchedSelIdx ] no puede ser igual a 0 y no puede exceder 90000*( CpbSize[ SchedSelIdx ]* BitRate[ SchedSelIdx ]), el equivalente de tiempo del tamaño de CPB en unidades de reloj de 90 kHz.
En los ejemplos de las Tablas 4 y 5 anteriores, el elemento de sintaxis
initial_du_cpb_removal_delay_offset[ SchedSelIdx ] puede usarse para el SchedSelIdx-th CPB en combinación con cpb_removal_delay para especificar el tiempo de entrega inicial de las unidades de decodificación al CPB. El elemento de sintaxis
initial_cpb_removal_delay_offset[ SchedSelIdx ] puede estar en unidades de un reloj de 90 kHz en este ejemplo. El elemento de sintaxis initial_du_cpb_removal_delay_offset[ SchedSelIdx ] puede ser un código de longitud fija cuya longitud en bits viene dada por
initial_cpb_removal_delay_length_minus1 1. Este elemento de sintaxis puede no utilizarse por los decodificadores y puede ser necesario sólo para el programador de entrega (HSS) especificado en el Anexo C de HEVC WD6, en este ejemplo.
En toda la secuencia de vídeo codificada, la suma de
initial_du_cpb_removal_delay[ SchedSelIdx ] y
initial_du_cpb_removal_delay_offset[ SchedSelIdx ] puede ser constante para cada valor de SchedSelIdx.
La Tabla 6, a continuación, proporciona una temporización de imágenes de la sintaxis de los mensajes SEI:
Tabla 6
Figure imgf000026_0001
_____________________________________________________________
El mensaje SEI de temporización de imágenes incluye una declaración condicional adicional para sub_pic_cpb_flag, que cuando es verdadero señala un elemento de sintaxis num_decoding_units_minus1 y un bucle for que señala, para cada una de las unidades de decodificación, un número correspondiente numb_nalus_in_du_minus1 y un du_cpb_removal_delay.
La sintaxis del mensaje SEI de temporización de imágenes en el ejemplo de la Tabla 6 puede depender del contenido del conjunto de parámetros de secuencia que se activa para la imagen codificada asociada con el mensaje SEI de temporización de imágenes. Sin embargo, a menos que el mensaje SEI de temporización de imágenes de una unidad de acceso IDR se preceda por un mensaje SEI de período de almacenamiento en memoria intermedia dentro de la misma unidad de acceso, la activación del conjunto de parámetros de secuencia asociado (y, para imágenes IDR que no son la primera imagen en el flujo de bits, la determinación de que la imagen codificada es una imagen IDR) puede no ocurrir hasta la decodificación de la primera unidad NAL de porción codificada de la imagen codificada. Dado que la unidad NAL de porción codificada de la imagen codificada puede seguir al mensaje SEI de temporización de imágenes en el orden de la unidad NAL, puede haber casos en los que un decodificador almacene la RBSP que contiene el mensaje SEI de temporización de imágenes hasta determinar los parámetros del parámetro de secuencia que estará activo para la imagen codificada, y luego realice el análisis sintáctico del mensaje SEI de temporización de imágenes.
La presencia de un mensaje SEI de temporización de imágenes, según el ejemplo de la Tabla 6, en el flujo de bits puede especificarse como sigue.
si CpbDpbDelaysPresentFlag es igual a 1, un mensaje SEI de temporización de imágenes puede estar presente en cada unidad de acceso de la secuencia de vídeo codificada;
de lo contrario (CpbDpbDelaysPresentFlag es igual a 0), no es necesario que haya mensajes SEI de temporización de imágenes en ninguna unidad de acceso de la secuencia de vídeo codificada.
La variable cpb_removal_delay especifica cuántos ciclos del reloj (véase la subcláusula E.2.1 de HEVC WD6) se deben esperar después de la eliminación de la CPB de la unidad de acceso asociada con el mensaje SEI de período de almacenamiento en memoria intermedia más reciente en una unidad de acceso precedente antes de eliminar de la memoria intermedia los datos de la unidad de acceso asociados con el mensaje SEI de temporización de imágenes. Este valor también puede utilizarse para calcular el tiempo más temprano posible de llegada de los datos de la unidad de acceso al CPB para el HSS, tal como se especifica en el anexo C de HEVC WD6. El elemento de sintaxis puede ser un código de longitud fija cuya longitud en bits viene dada por cpb_removal_length_lay_minus1 1. El cpb_removal_delay puede ser el resto de un contador de módulo 2 (cpb_removal_delay_length_minus1 1). El valor de cpb_removal_delay_length_minus1 que determina la longitud (en bits) del elemento de sintaxis cpb_removal_delay puede ser el valor de cpb_removal_delay_length_minus1 codificado en el conjunto de parámetros de secuencia que se activa para la imagen codificada primaria asociada con el mensaje SEI de temporización de imágenes. Sin embargo, cpb_removal_delay especifica un número de ciclos del reloj en relación con el tiempo de eliminación de la unidad de acceso anterior que contiene un mensaje SEI de período de almacenamiento en memoria intermedia, que puede ser una unidad de acceso de una secuencia de vídeo codificada diferente.
La variable dpb_output_delay puede usarse para calcular el tiempo de salida DPB de la imagen. Esta variable especifica cuántos ciclos del reloj esperar después de la eliminación de la última unidad de decodificación en una unidad de acceso de la CPB antes de que la imagen decodificada se emita del DPB (consulte la subcláusula C.2 de HEVC WD6). Una imagen no puede eliminarse de la DPB en su momento de salida cuando todavía se marca como "usada para referencia a corto plazo" o "usada para referencia a largo plazo" en este ejemplo. Solo se puede especificar una variable dpb_output_delay para una imagen decodificada en este ejemplo.
La longitud del elemento de sintaxis dpb_output_delay puede venir dada en bits por dpb_output_delay_length_minus1 1. Cuando max_dec_pic_buffering[ max_temporal_layers_minus1 ] es igual a 0, dpb_output_delay también puede ser igual a 0.
El tiempo de salida derivado del retardo dpb_output_delay de cualquier imagen emitida por un decodificador conforme a la temporización de salida, tal como se especifica en la subcláusula C.2 de HEVC WD6, modificada por la presente divulgación, puede preceder al tiempo de salida derivado del retardo dpb_output_delay de todas las imágenes de cualquier secuencia de vídeo codificada posterior en el orden de decodificación.
El orden de salida de imágenes establecido por los valores de este elemento de sintaxis puede ser el mismo orden establecido por los valores de PicOrderCnt() como se especifica en la subcláusula C.5 de HEVC WD6.
En el caso de las imágenes que no se emiten mediante el procedimiento de "salto" de la subcláusula C.5 de HEVC WD6, modificada por esta divulgación, porque preceden, en el orden de decodificación, a una imagen IDR con el indicador no_output_of_prior_pics_flag igual a 1 o establecido o deducido como igual a 1, los tiempos de salida derivados de dpb_output_delay pueden aumentar con el valor creciente de PicOrderCnt() en relación con todas las imágenes dentro de la misma secuencia de vídeo codificada.
La variable num_decoding_units_minus1 más 1 puede especificar el número de unidades de decodificación en la unidad de acceso a la que se asocia el mensaje SEI de temporización de imágenes. El valor de num_decoding_units_minus1 puede estar en el rango de 0 a X, inclusive, por ejemplo.
La variable num_nalus_in_du_minus1[ i ] más 1 especifica el número de unidades NAL en la unidad de decodificación i-ésima de la unidad de acceso a la que se asocia el mensaje SEI de temporización de imágenes. El valor de num_nalus_in_du_minus1[ i ] puede estar en el rango de 0 a X, inclusive, por ejemplo.
La primera unidad de decodificación de la unidad de acceso incluye el primer número_nalus_in_du_minus1[ 0 ]+ 1 unidades NAL consecutivas en orden de decodificación en la unidad de acceso. La i-ésima (con i mayor que 0) unidad de decodificación de la unidad de acceso incluye num_nalus_in_du_minus1[ i ]+ 1 unidades NAL consecutivas inmediatamente después de la última unidad NAL en la unidad de decodificación anterior de la unidad de acceso, en orden de decodificación.
La variable du_cpb_removal_delay[ i ] puede especificar cuántos ciclos del reloj (véase la subcláusula E.2.1 de HEVC WD6) se deben esperar 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 de período de almacenamiento en memoria intermedia más reciente en una unidad de acceso precedente antes de eliminar de la CPB la i-ésima unidad de decodificación en la unidad de acceso asociada con el mensaje SEI de temporización de imágenes. 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 HSS, tal como se especifica en el anexo C de HEVC WD6. El elemento de sintaxis puede ser un código de longitud fija cuya longitud en bits puede venir dada por cpb_removal_length_lay_minus1 1. El du_cpb_removal_delay[ i ] puede ser el resto de un contador de módulo 2 (cpb_removal_delay_length_minus1 1). El valor de cpb_removal_delay_length_minus1 que determina la longitud (en bits) del elemento de sintaxis du_cpb_removal_delay[i] puede ser el valor de cpb_removal_delay_length_minus1 codificado en el conjunto de parámetros de secuencia que se activa para la imagen codificada asociada con el mensaje SEI de temporización de imágenes. Sin embargo, du_cpb_removal_delay[ i ] especifica un número de ciclos del reloj 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 memoria intermedia, que puede ser una unidad de acceso de una secuencia de vídeo codificada diferente.
La Figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar técnicas relacionadas con el almacenamiento de una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obteniendo un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminando las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación, y la codificación de datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones, como se describe en esta divulgación. El codificador de vídeo 20 puede realizar la codificación interna e interna de bloques dentro de las tramas de vídeo, incluidas las unidades de codificación (CU) o las sub-CU de las CU. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama de vídeo determinado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de las tramas adyacentes de una secuencia de vídeo. El modo interno (modo I) puede referirse a cualquiera de los diversos modos de compresión basados en el espacio y los modos internos, como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de los diversos modos de compresión basados en el tiempo. Aunque algunos componentes para la codificación intermodal se representan en la Figura 2, debe entenderse que el codificador de vídeo 20 puede incluir además componentes para la codificación intramodo, como la unidad de intrapredicción 46. Los componentes adicionales que también pueden incluirse no se ilustran en la Figura 2 en aras de la brevedad y la claridad.
Como se muestra en la Figura 2, el codificador de vídeo 20 recibe bloques de vídeo que incluyen un bloque de vídeo actual dentro de una trama de vídeo que debe codificarse. En el ejemplo de la Figura 2, el codificador de vídeo 20 incluye la unidad de compensación de movimiento 44, la unidad de estimación de movimiento 42, la memoria de imágenes de referencia 64, el sumador 50, la unidad de transformada 52, la unidad de cuantificación 54, la unidad de codificación de entropía 56, la memoria intermedia 90 y la memoria intermedia de imágenes codificadas 92. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye la unidad de cuantificación inversa 58, la unidad de transformada inversa 60, y el sumador 62.
Durante el procedimiento de codificación, el codificador de vídeo 20 recibe una trama o porción de vídeo a codificarse. La porción o trama puede dividirse en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan una codificación interpredictiva del bloque de vídeo recibido en relación con uno o más bloques en una o más tramas de referencia para proporcionar una compresión temporal. La unidad de intrapredicción 46 también puede realizar una codificación intrapredictiva del bloque de vídeo recibido en relación con uno o más bloques vecinos en el mismo trama o corte que el bloque a codificar para proporcionar una compresión espacial.
La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, en base a los resultados de los errores, y puede proporcionar el bloque intra o inter codificado resultante al sumador 50 para generar los datos del bloque residual y al sumador 62 para reconstruir el bloque codificado para su uso como trama de referencia.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar muy integradas, pero se ilustran por separado para propósitos conceptuales. La estimación de movimiento es el procedimiento de generación de vectores de movimiento, que estiman el movimiento de los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un bloque predictivo dentro de una trama de referencia predictivo (u otra unidad codificada) en relación con el bloque actual que se está codificando dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que coincide estrechamente con el bloque que se va a codificar, en términos de diferencia de píxeles, que puede determinarse mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia cuadrada (SSD) u otras métricas de diferencia. Un vector de movimiento también puede indicar el desplazamiento de una partición de un macrobloque. La compensación de movimiento puede implicar la obtención o generación del bloque predictivo en base al vector de movimiento determinado por la estimación de movimiento. Como se ha señalado, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar funcionalmente integradas, en algunos ejemplos.
En el caso de la intercodificación, la unidad de estimación de movimiento 42 calcula un vector de movimiento para el bloque de vídeo de una trama intercodificado comparando el bloque de vídeo con los bloques de vídeo de una trama de referencia en la memoria de imágenes de referencia 64. La unidad de compensación de movimiento 44 también puede interpolar píxeles subenteros de la trama de referencia, por ejemplo, una trama I o una trama P. Como ejemplo, los vectores de movimiento se pueden predecir a partir de dos listas de tramas de referencia: la lista 0, que incluye tramas de referencia que tienen un orden de visualización anterior a la trama actual que se está codificando, y la lista 1, que incluye tramas de referencia que tienen un orden de visualización posterior a la trama actual que se está codificando. Por lo tanto, los datos almacenados en la memoria de imágenes de referencia 64 pueden organizarse de acuerdo con estas dos listas de tramas de referencia.
La unidad de estimación de movimiento 42 compara bloques de una o más tramas de referencia de la memoria de imágenes de referencia 64 con un bloque a codificar de una trama actual, por ejemplo, una trama P o una trama B. Cuando las tramas de referencia en la memoria de imágenes de referencia 64 incluyen valores para píxeles subenteros, un vector de movimiento calculado por la unidad de estimación de movimiento 42 puede referirse a una ubicación de píxeles subenteros de una trama de referencia. La unidad de estimación de movimiento 42 y/o la unidad de compensación de movimiento 44 también pueden configurarse para calcular valores para posiciones de píxeles de subenteros de tramas de referencia almacenados en la memoria de imágenes de referencia 64 si no hay valores para posiciones de píxeles de subenteros almacenados en la memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación de entropía 56 y a la unidad de compensación de movimiento 44. El bloque de trama de referencia identificado por un vector de movimiento puede denominarse bloque predictivo.
La unidad de compensación de movimiento 44 puede calcular datos de predicción en base al bloque predictivo. El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción proporcionados por la unidad de compensación de movimiento 44 del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o componentes que realizan esta operación de sustracción. La unidad de transformada 52 aplica una transformada, como una transformada discreta del coseno (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residuales. La unidad de transformada 52 puede realizar otras transformaciones, como las definidas por el estándar H.264, que son conceptualmente similares a DCT. Como otros ejemplos, la unidad de transformada 52 puede realizar transformaciones de ondículas, transformaciones de enteros, transformaciones de subbanda u otros tipos de transformaciones. La unidad de transformada 52 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residual. La transformada puede convertir la información residual de un dominio de valor de píxel en un dominio de transformada, tal como un dominio de frecuencia. La unidad de cuantificación 54 cuantifica los coeficientes de transformada residuales para reducir aún más la tasa de bits. El procedimiento de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación puede modificarse mediante el ajuste de un parámetro de cuantificación.
Después de la cuantificación, la entropía de la unidad de codificación de entropía 56 codifica los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación de entropía 56 puede realizar una codificación de longitud variable adaptable al contenido (CAVLC), una codificación aritmética binaria adaptable al contexto (CABAC), una codificación de entropía de partición de intervalos de probabilidad (PIPE) u otra técnica de codificación de entropía. Tras la codificación de entropía por parte de la unidad de codificación de entropía 56, los datos de vídeo codificados pueden almacenarse de forma más o menos temporal en la memoria intermedia de imágenes codificadas 92, transmitidos a otro dispositivo, y/o archivados para su posterior transmisión o recuperación. En el caso de la codificación aritmética binaria adaptable al contexto, el contexto puede ser en base a macrobloques vecinos.
En algunos casos, la unidad de codificación de entropía 56 u otra unidad del codificador de vídeo 20 puede configurarse para realizar otras funciones de codificación, además de la codificación de entropía. Por ejemplo, la unidad de codificación de entropía 56 puede estar configurada para determinar los valores del patrón de bloque codificado (CBP) para los macrobloques y las particiones. Además, en algunos casos, la unidad de codificación de entropía 56 puede realizar una codificación de longitud de ejecución de los coeficientes en una unidad de codificación más grande (LCU) o una sub-CU de una LCU. En particular, la unidad de codificación de entropía 56 puede aplicar un escaneo en zigzag u otro patrón de escaneo para escanear los coeficientes de transformada en una LCU o partición y codificar series de ceros para una mayor compresión. La unidad de codificación de entropía 56 y/u otros elementos del codificador de vídeo 20 también pueden formar unidades de decodificación a partir de datos de vídeo codificados. Las unidades de decodificación pueden ser subimágenes, como una secuencia de bloques de árbol, uno o más cortes, una o más ondas y/o uno o más mosaicos, por ejemplo. La unidad de codificación de entropía 56 y/u otros elementos del codificador de vídeo 20 también pueden agregar datos de carga para subimágenes con diferentes tamaños para lograr la alineación de bits. La unidad de codificación de entropía 56 también puede construir información de encabezado con elementos de sintaxis apropiados para la transmisión en el flujo de bits de vídeo codificado. Por ejemplo, la información de cabecera puede incluir datos de señalización que indiquen si las unidades de decodificación son unidades de acceso o unidades de subacceso. Esto puede incluir la señalización de un valor para un indicador preferido de la memoria intermedia de imágenes codificadas de subimagenes, señalada en parámetros HRD. La unidad de codificación de entropía 56 y/u otros elementos del codificador de vídeo 20 también pueden agregar elementos de sintaxis tales como mensajes SEI de período de almacenamiento en memoria intermedia, señalización de parámetros de VUI, señalización de datos indicativos de puntos de entrada para las diversas subimágenes y/o tiempos de eliminación de memoria intermedia para las unidades de decodificación, por ejemplo.
La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican la cuantificación inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para su uso posterior como bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia al añadir el bloque residual a un bloque predictivo de uno de las tramas de la memoria de imágenes de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad de compensación de movimiento 44 para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria de imágenes de referencia 64. El bloque de vídeo reconstruido puede usarse mediante la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para intercodificar un bloque en una trama de vídeo posterior.
La memoria de imágenes de referencia 64 puede incluir la memoria intermedia 90. La memoria intermedia 90 puede ser o incluir o incluirse en un dispositivo de almacenamiento de datos tal como cualquier memoria permanente o volátil capaz de almacenar datos, tal como memoria de acceso aleatorio dinámica síncrona (SDRAM), memoria de acceso aleatorio dinámica integrada (eDRAM) o acceso aleatorio estático memoria (SRAM). La memoria intermedia 90 puede incluir memorias intermedias de imágenes y/o memorias intermedias de imágenes decodificadas y puede operar de acuerdo con cualquier combinación de comportamientos de la memoria intermedia de imágenes codificadas de ejemplo y/o memoria intermedia de la imagen decodificada descritos en esta divulgación. Por ejemplo, el codificador de vídeo 20 puede realizar la gestión del patrón de bloques decodificados (DPB) usando la memoria intermedia 90 y/o la gestión del patrón de bloques codificados (CPB) de la memoria intermedia de imágenes codificadas 92 de acuerdo con las técnicas de esta divulgación.
La memoria intermedia de imágenes codificadas 92 puede ser o incluir o incluirse en un dispositivo de almacenamiento de datos tal como cualquier memoria permanente o volátil capaz de almacenar datos, tal como memoria de acceso aleatorio dinámica síncrona (SDRAM), memoria de acceso aleatorio dinámica integrada (eDRAM), o memoria estática memoria de acceso aleatorio (SRAM). Aunque se muestra como parte del codificador de vídeo 20, en algunos ejemplos, la memoria intermedia de imágenes codificadas 92 puede formar parte de un dispositivo, unidad o módulo externo al codificador de vídeo 20. Por ejemplo, la memoria intermedia de imágenes codificadas 92 puede formar parte de una unidad de programación de flujos (o programador de entrega o programador de flujo hipotético (HSS)) externa al codificador de vídeo 20. El codificador de vídeo 20 puede formar unidades de decodificación a partir de datos de vídeo codificados y proporcionar las unidades de decodificación a la unidad de programación de flujo. El codificador de vídeo 20 puede formar las unidades de decodificación con números variables de bits o números variables de bloques, en algunos ejemplos. La unidad de programación de flujos puede implementar técnicas de esta divulgación para enviar las unidades de decodificación, incluidas las subimágenes, como una secuencia de bloques de árbol, uno o más porciones, una o más ondas y/o uno o más mosaicos, a un decodificador de vídeo para la decodificación, en momentos que pueden indicarse mediante un tiempo de eliminación de memoria intermedia obtenido (por ejemplo, señalado). El codificador de vídeo 20 puede formar las unidades de decodificación, cada una de las cuales incluye un número de bloques de codificación dispuestos de forma continua en orden de decodificación, en algunos ejemplos. La unidad de programación de flujos puede desencapsular además unidades de acceso para extraer una o más unidades de capa de abstracción de red (NAL) que incluyen las unidades de decodificación. Asimismo, la unidad de programación de flujos puede desencapsular las unidades NAL para extraer las unidades de decodificación.
El codificador de vídeo 20 puede almacenar unidades de acceso y eliminar unidades de acceso de la memoria intermedia de imágenes codificadas 92 de acuerdo con el comportamiento del decodificador de referencia hipotético (HRD) modificado por las técnicas de esta divulgación. El codificador de vídeo 20 puede aplicar parámetros HRD que incluyen el retardo de eliminación inicial de CPB, el tamaño de CPB, la tasa de bits, el retardo de salida inicial de DPB y el tamaño de DPB, así como los tiempos de eliminación de memoria intermedia para las unidades de decodificación y valores para los indicadores preferidos de la memoria intermedia de imágenes codificadas de subimagen para indicar si las unidades de decodificación de datos de vídeo son unidades de acceso o subconjuntos de unidades de acceso, por ejemplo. El codificador de vídeo 20 puede formar mensajes SEI en las unidades de acceso que señalan períodos de almacenamiento en memoria intermedia y tiempos de eliminación de memoria intermedia para las unidades de decodificación. Por ejemplo, el codificador de vídeo 20 puede proporcionar parámetros de información de usabilidad de vídeo (VUI) con una sintaxis que incluye un indicador CPB de subimagen, como en el ejemplo de la Tabla 1 anterior.
Las unidades de decodificación pueden incluir subimágenes de una imagen común, y el codificador de vídeo 20 puede incluir tiempos de eliminación de memoria intermedia para cada una de las subimágenes de la imagen común en los mensajes SEI para las unidades de acceso. Las diferentes subimágenes pueden codificarse con diferentes cantidades de datos, con algunas subimágenes codificadas en diferentes números de bits o bloques, y el codificador de vídeo 20 puede formar un tiempo de eliminación de la memoria intermedia respectivo correspondiente para cada una de las subimágenes de una imagen común. El codificador de vídeo 20 también puede codificar algunas imágenes con subimágenes del mismo tamaño de datos. Otros componentes también pueden realizar una o más de las funciones atribuidas anteriormente al codificador de vídeo 20. Por ejemplo, una unidad de encapsulación de un dispositivo de origen (como el dispositivo de origen 12 de la Figura 1) también puede formar mensajes SEI que incluyan cualquiera de los parámetros anteriores.
Por lo tanto, el codificador de vídeo 20 puede proporcionar que cada subimagen pueda incluir varios bloques de codificación de una imagen codificada continua en orden de decodificación, y tal que un bloque de codificación pueda ser idéntico a un bloque de árbol o un subconjunto de un bloque de árbol. El codificador de vídeo 20 puede proporcionar que la codificación de subimágenes y la asignación de bits a diferentes subimágenes en una imagen se puedan realizar sin requerir que cada subimagen (es decir, grupo de bloques de árbol) en una imagen se codifique con la misma cantidad de bits. El codificador de vídeo 20 puede señalar el tiempo de eliminación de CPB para cada subimagen en el flujo de bits, en lugar de que los tiempos de eliminación de CPB se deriven de acuerdo con los tiempos de eliminación de CPB de nivel de imagen señalados. El codificador de vídeo 20 también puede incluir más de una subimagen en una porción y aplicar la alineación de bits al final de cada subimagen. El codificador de vídeo 20 también puede señalar el punto de entrada de cada subimagen con un valor que indica la alineación de bits de al menos una de las subimágenes dentro de un conjunto más grande de datos de vídeo, como una porción, un mosaico o una trama, por ejemplo. El codificador de vídeo 20 puede aplicar cualquiera o más de estas características en diferentes ejemplos de acuerdo con esta divulgación.
Las ubicaciones mostradas para la memoria de imágenes de referencia 64, la memoria intermedia 90 y la memoria intermedia de imágenes codificadas 92 en la Figura 2 son para fines ilustrativos. La memoria de imágenes de referencia 64, la memoria intermedia 90 y la memoria intermedia de imágenes codificadas 92 pueden ubicarse en un único dispositivo de almacenamiento o en cualquier número de dispositivos de almacenamiento distintos. Los dispositivos de almacenamiento pueden incluir cualquier combinación de medios legibles por ordenador volátiles y/o no volátiles.
De esta manera, el codificador de vídeo 20 representa un ejemplo de un codificador de vídeo configurado para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación, y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas, entre otras funciones.
La Figura 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de vídeo 30, que decodifica una secuencia de vídeo codificada. En el ejemplo de la Figura 3, el decodificador de vídeo 30 incluye una unidad de decodificación de entropía 70, una unidad de compensación de movimiento 72, una unidad de intrapredicción 74, una unidad de cuantificación inversa 76, una unidad de transformada inversa 78, una memoria de imágenes de referencia 82, un sumador 80, memoria intermedia de imágenes codificadas 94 y una memoria intermedia 96. 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 (Figura 2). La unidad de compensación de movimiento 72 puede generar datos de predicción en base a vectores de movimiento recibidos de la unidad de decodificación de entropía 70.
La unidad de compensación de movimiento 72 puede usar vectores de movimiento recibidos en el flujo de bits para identificar un bloque de predicción en tramas de referencia en la memoria de imágenes de referencia 82. La unidad de intrapredicción74 puede usar modos de intrapredicción recibidos en el flujo de bits para formar un bloque de predicción a partir de bloques espacialmente adyacentes. La unidad de cuantificación inversa 76 cuantifica de forma inversa, es decir, descuantiza, los coeficientes de bloque cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación de entropía 70. El procedimiento de cuantificación inversa puede incluir un procedimiento convencional, por ejemplo, el definido por el estándar de decodificación H.264. El procedimiento de cuantificación inversa también puede incluir el uso de un parámetro de cuantificación QPy calculado por el codificador 20 para cada macrobloque a fin de determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debe aplicarse.
La unidad de transformada inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un procedimiento de transformada inversa conceptualmente similar, a los coeficientes de la transformada para producir bloques residuales en el dominio del píxel. La unidad de compensación de movimiento 72 produce bloques compensados de movimiento, posiblemente realizando una interpolación en base a filtros de interpolación. Los identificadores para los filtros de interpolación a usarse para la estimación de movimiento con precisión de subpíxeles pueden incluirse en los elementos de sintaxis. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación del bloque de vídeo para calcular valores interpolados para píxeles sub-enteros de un bloque de referencia. La unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 de acuerdo con la información de sintaxis que se recibe y usar los filtros de interpolación para producir bloques predictivos.
La unidad de compensación de movimiento 72 utiliza parte de la información de sintaxis para determinar los tamaños de los macrobloques utilizados para codificar tramas de la secuencia de vídeo codificada, la información de partición que describe cómo se divide cada macrobloque de una trama de la secuencia de vídeo codificada, los modos que indican cómo se codifica cada partición, una o más tramas de referencia (y listas de tramas de referencia) para cada macrobloque o partición intercodificados, y otra información para decodificar la secuencia de vídeo codificada. El sumador 80 suma los bloques residuales con los correspondientes bloques de predicción generados por la unidad de compensación de movimiento 72 o la unidad de intrapredicción para formar bloques decodificados.
La memoria de imágenes de referencia 82 puede incluir la memoria intermedia 96. La memoria intermedia 96 puede ser o incluir un dispositivo de almacenamiento de datos, como cualquier memoria permanente o volátil capaz de almacenar datos, como una memoria de acceso aleatorio dinámica síncrona (SDRAM), una memoria de acceso aleatorio dinámica integrada (eDRAM) o una memoria de acceso aleatorio estática (SRAM). La memoria intermedia 96 puede incluir uno o más memorias intermedias de imágenes y/o uno o más memorias intermedias de imágenes decodificadas y puede operar de acuerdo con cualquier combinación de comportamientos de memoria intermedia de imágenes codificadas de ejemplo y/o memoria intermedia de imágenes decodificadas descritos en esta divulgación. Por ejemplo, el decodificador de vídeo 30 puede realizar la gestión de DPB utilizando la memoria intermedia 96 y/o la gestión CPB de la memoria intermedia de imágenes codificadas 94 de acuerdo con las técnicas de esta divulgación.
La memoria intermedia de imágenes codificadas 94 puede implementarse como un dispositivo de almacenamiento de datos, como cualquier memoria permanente o volátil capaz de almacenar datos, como la memoria de acceso aleatorio dinámica síncrona (SDRAM), la memoria de acceso aleatorio dinámica integrada (eDRAM) o la memoria de acceso aleatorio estática (SRAM). La memoria intermedia de imágenes codificadas 94 puede funcionar de acuerdo con cualquier combinación de comportamientos de memoria intermedia de imágenes codificadas de ejemplo divulgados en la presente memoria.
Aunque se muestra como parte del decodificador de vídeo 30, en algunos ejemplos, la memoria intermedia de imágenes codificadas 94 puede formar parte de un dispositivo, unidad o módulo externo al decodificador de vídeo 30. Por ejemplo, la memoria intermedia de imágenes codificadas 94 puede formar parte de una unidad de programación de flujos externa al decodificador de vídeo 30. La unidad de programación de flujos puede implementar las técnicas de esta divulgación para enviar unidades de decodificación que incluyan subimágenes, como una secuencia de bloques de árbol, una o más porciones, una o más ondas, y/o uno o más mosaicos al decodificador de vídeo 30 para su decodificación en los momentos indicados por un tiempo de eliminación de la memoria intermedia obtenido (por ejemplo, una señalización). La unidad de programación de flujos puede desencapsular además unidades de acceso para extraer una o más unidades de capa de abstracción de red (NAL) que incluyen las unidades de decodificación. Asimismo, la unidad de programación de flujos puede desencapsular las unidades NAL para extraer las unidades de decodificación.
El decodificador de vídeo 30 puede recibir y almacenar unidades de acceso y eliminar unidades de acceso de la memoria intermedia de imágenes codificadas 94 de acuerdo con el decodificador de referencia hipotético (HRD) modificado por las técnicas de esta divulgación. El decodificador de vídeo 30 puede decodificar y obtener los parámetros de HRD, incluyendo el retardo de eliminación inicial de CPB, el tamaño de CPB, la tasa de bits, el retardo de salida inicial de DPB y el tamaño de DPB, así como los tiempos de eliminación de la memoria intermedia para las unidades de decodificación, y los valores de los indicadores preferidos de la memoria intermedia de imágenes codificadas de subimágenes que señalan si las unidades de decodificación de datos de vídeo son unidades de acceso o subconjuntos de unidades de acceso, por ejemplo. El decodificador de vídeo 30 puede decodificar y obtener mensajes SEI en las unidades de acceso que señalan períodos de almacenamiento en memoria intermedia y tiempos de eliminación de la memoria intermedia para las unidades de decodificación. Por ejemplo, el decodificador de vídeo 30 puede decodificar y obtener parámetros de información de usabilidad de vídeo (VUI) con una sintaxis que incluye un indicador CPB de subimagen, como en el ejemplo de la Tabla 1 anterior.
Las unidades de decodificación pueden incluir subimágenes de una imagen común, y el decodificador de vídeo 30 puede decodificar y obtener tiempos de eliminación de la memoria intermedia para cada una de las subimágenes de la imagen común en los mensajes SEI para las unidades de acceso. Las diferentes subimágenes pueden codificarse con diferentes cantidades de datos, con algunas subimágenes codificadas en diferentes números de bits o bloques, y el decodificador de vídeo 30 puede decodificar y obtener un tiempo de eliminación de memoria intermedia correspondiente para cada una de las subimágenes de una imagen común. El decodificador de vídeo 30 también puede decodificar y obtener algunas imágenes con subimágenes del mismo tamaño de datos.
Por lo tanto, el decodificador de vídeo 30 puede decodificar y obtener subimágenes que pueden incluir varios bloques de codificación de una imagen codificada continua en orden de decodificación, y tal que un bloque de codificación puede ser idéntico a un bloque de árbol o un subconjunto de un bloque de árbol. El decodificador de vídeo 30 puede, en algunos ejemplos, decodificar y obtener tiempos de eliminación de CPB para cada subimagen en el flujo de bits, en lugar de derivar tiempos de eliminación de CPB de acuerdo con tiempos de eliminación de CPB de nivel de imagen señalados. El decodificador de vídeo 30 también puede decodificar y obtener más de una subimagen en una porción, y puede recibir información de compensación de bits indicativa de los puntos de inicio para cada unidad de decodificación, para determinar dónde comienza cada unidad de decodificación, y decodificar y obtener información adicional sin señal de datos o señal de relleno que proporciona alineación de bits al final de cada subimagen. El decodificador de vídeo 30 también puede obtener el punto de entrada de cada subimagen con un valor que indica la alineación de bits de al menos una de las subimágenes dentro de un conjunto más grande de datos de vídeo, como una porción, un mosaico o una trama, por ejemplo. El decodificador de vídeo 30 puede aplicar cualquiera o más de estas características en diferentes ejemplos de acuerdo con esta divulgación.
Las ubicaciones mostradas para la memoria de imágenes de referencia 82, la memoria intermedia 96 y la memoria intermedia de imágenes codificadas 94 en la Figura 3 son para fines ilustrativos. La memoria de imágenes de referencia 82, la memoria intermedia 96 y la memoria intermedia de imágenes codificadas 94 pueden ubicarse en un único dispositivo de almacenamiento o en cualquier número de dispositivos de almacenamiento distintos. Los dispositivos de almacenamiento pueden incluir cualquier combinación de medios legibles por ordenador volátiles y/o no volátiles.
De esta manera, el decodificador de vídeo 30 representa un ejemplo de un codificador de vídeo configurado para almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes, obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación, y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas.
La Figura 4 es un diagrama de bloques que ilustra un ejemplo de dispositivo de destino 100 que puede implementar alguna o todas las técnicas de esta divulgación. En este ejemplo, el dispositivo de destino 100 incluye la interfaz de entrada 102, el programador de flujo 104, la memoria intermedia de imágenes codificadas 106, el decodificador de vídeo 108, la memoria intermedia de imágenes decodificadas 110, la unidad de reproducción 112 y la interfaz de salida 114. El dispositivo de destino 100 puede corresponder sustancialmente al dispositivo de destino 14 (Figura 1). La interfaz de entrada 102 puede comprender cualquier interfaz de entrada capaz de recibir un flujo de bits codificado de datos de vídeo. Por ejemplo, la interfaz de entrada 102 puede comprender un receptor 26 y/o un módem 28 como en la Figura 1, una interfaz de red, como una interfaz con cable o inalámbrica, una memoria o una interfaz de memoria, una unidad para leer datos de un disco, como una interfaz de unidad óptica o una interfaz de medios magnéticos, u otro componente de interfaz.
La interfaz de entrada 102 puede recibir un flujo de bits codificado que incluye datos de vídeo y proporcionar el flujo de bits al programador de flujos 104. De acuerdo con las técnicas de esta divulgación, el programador de flujos 104 extrae unidades de datos de vídeo, como unidades de acceso y/o unidades de decodificación, del flujo de bits y almacena las unidades extraídas en la memoria intermedia de imágenes codificadas 106. De esta manera, el programador de flujo 104 representa una implementación de ejemplo de un HSS como se discutió en los ejemplos anteriores. La memoria intermedia de imágenes codificadas 106 puede ajustarse sustancialmente a la memoria intermedia de imágenes codificadas 94 (Figura 3), excepto que, como se muestra en la Figura 4, la memoria intermedia de imágenes codificadas 106 se separa del decodificador de vídeo 108. La memoria intermedia de imágenes codificadas 106 puede separarse o integrarse como parte del decodificador de vídeo 108 en diferentes ejemplos.
El decodificador de vídeo 108 incluye la memoria intermedia de imágenes decodificadas 110. El decodificador de vídeo 108 puede ajustarse sustancialmente al decodificador de vídeo 30 de las Figuras 1 y 3. La memoria intermedia de imágenes decodificadas 110 puede ajustarse sustancialmente a la memoria intermedia 96. Por lo tanto, el decodificador de vídeo 108 puede decodificar unidades de decodificación de la memoria intermedia de imágenes codificadas 106 de acuerdo con las técnicas de esta divulgación.
Además, el decodificador de vídeo 108 puede generar imágenes decodificadas desde la memoria intermedia de imágenes decodificadas 110 de acuerdo con las técnicas de esta divulgación, como se discutió anteriormente. El decodificador de vídeo 108 puede pasar imágenes de salida a la unidad de reproducción 112. La unidad de reproducción 112 puede recortar imágenes como se discutió anteriormente de acuerdo con las técnicas de esta divulgación, luego pasar las imágenes recortadas a la interfaz de salida 114. La interfaz de salida 114, a su vez, puede proporcionar las imágenes recortadas a un dispositivo de visualización, que puede ajustarse sustancialmente al dispositivo de visualización 32. El dispositivo de visualización puede formar parte del dispositivo de destino 100, o puede acoplarse comunicativamente al dispositivo de destino 100. Por ejemplo, el dispositivo de visualización puede comprender una pantalla, una pantalla táctil, un proyector u otra unidad de visualización integrada con el dispositivo de destino 100, o puede comprender una pantalla independiente, como un televisor, un monitor, un proyector, una pantalla táctil u otro dispositivo que se acople comunicativamente a dispositivo de destino 100. El acoplamiento comunicativo puede comprender un acoplamiento alámbrico o inalámbrico, como un cable coaxial, un cable de vídeo compuesto, un cable de vídeo componente, un cable de interfaz multimedia de alta definición (HDMI), una difusión de radiofrecuencia u otro acoplamiento alámbrico o inalámbrico.
La Figura 5 es un diagrama de flujo que ilustra un procedimiento de ejemplo que incluye la eliminación de unidades de decodificación de datos de vídeo de una memoria intermedia de imágenes de acuerdo con un tiempo de eliminación de memoria intermedia obtenido, por ejemplo, por el decodificador de vídeo 30 de las Figuras 1 o 3 o el decodificador de vídeo 108 de la Figura 4 (colectivamente "decodificador de vídeo 30/108"), de acuerdo con las técnicas de esta divulgación. El procedimiento de ejemplo de la Figura 5 puede describirse como realizado por el decodificador de vídeo 30/108 como un ejemplo, entendiendo que uno o más aspectos del procedimiento de la Figura 5 también puede realizarse o implementarse con otros dispositivos o componentes. En el ejemplo de la Figura 5, el decodificador de vídeo 30/108 puede almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes (202). El decodificador de vídeo 30/108 puede obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación, en el que obtener el tiempo de eliminación de la memoria intermedia respectivo comprende recibir un valor señalado respectivo indicativo del tiempo de eliminación de la memoria intermedia respectivo para al menos una de las unidades de decodificación (204). El decodificador de vídeo 30/108 puede eliminar las unidades de decodificación de la memoria intermedia de imágenes de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación (206). El decodificador de vídeo 30/108 también puede codificar datos de vídeo correspondientes a las unidades de decodificación eliminadas, en el que codificar los datos de vídeo comprende decodificar al menos una de las unidades de decodificación (208). El decodificador de vídeo 30/108 y/u otros dispositivos o elementos también pueden realizar funciones diferentes o adicionales en otros ejemplos.
La Figura 6 es un diagrama de flujo que ilustra otro procedimiento de ejemplo, similar en algunos aspectos al procedimiento de la Figura 5, que incluye la eliminación de unidades de decodificación de datos de vídeo de una memoria intermedia de imágenes de acuerdo con un tiempo de eliminación de memoria intermedia obtenido, por ejemplo, mediante el decodificador de vídeo 30 de las Figuras 1 o 3 o el decodificador de vídeo 108 de la Figura 4 (colectivamente "decodificador de vídeo 30/108"), de acuerdo con las técnicas de esta divulgación. El procedimiento de ejemplo de la Figura 6 también puede describirse como realizado por el decodificador de vídeo 30/108 como un ejemplo, con el entendimiento de que uno o más aspectos del procedimiento de la Figura 6 también puede realizarse o implementarse con otros dispositivos o componentes. En el ejemplo de la Figura 6, el decodificador de vídeo 30/108 puede almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imágenes codificadas (CPB) (402), obtener un tiempo de eliminación de la memoria intermedia respectivo para una o más unidades de decodificación (404), eliminar las unidades de decodificación de la CPB de acuerdo con el tiempo de eliminación de la memoria intermedia obtenido para cada una de las unidades de decodificación (406), determinando si la CPB opera al nivel de la unidad de acceso o al nivel de la subimagen (408), y codifica los datos de vídeo correspondientes a las unidades de decodificación eliminadas ( 410). Si la CPB opera a nivel de unidad de acceso, la codificación de los datos de vídeo incluye la codificación de unidades de acceso comprendidas en las unidades de decodificación (412). Si la CPB opera a nivel de subimagen, la codificación de los datos de vídeo incluye la codificación de subconjuntos de unidades de acceso comprendidas en las unidades de decodificación (414).
Por ejemplo, si el decodificador de vídeo 30/108 determina que la CPB opera a nivel de unidad de acceso, el decodificador de vídeo 30/108 puede codificar unidades de acceso de datos de vídeo correspondientes a las unidades de decodificación eliminadas (412). Si el decodificador de vídeo 30/108 determina que la CPB opera a nivel de subimagen, el decodificador de vídeo 30/108 puede codificar subconjuntos de unidades de acceso de datos de vídeo correspondientes a las unidades de decodificación eliminadas (414). Por ejemplo, el decodificador de vídeo 30/108 puede determinar que una o más unidades de decodificación comprenden unidades de acceso al determinar que un indicador preferido de la memoria intermedia de imágenes codificadas de subimagen (por ejemplo, SubPicCpbPreferredFlag) es negativo o tiene un valor de cero, o que el indicador de presencia de parámetros de la memoria intermedia de imágenes codificadas de subimagen (por ejemplo, sub_pic_cpb_params_present_flag) es negativo o tiene un valor de cero. El decodificador de vídeo 30/108 puede determinar que una o más unidades de decodificación comprenden subconjuntos de unidades de acceso determinando que tanto un indicador preferido de la memoria intermedia de imágenes codificadas de subimagen (por ejemplo, SubPicCpbPreferredFlag) es positivo o tiene un valor de uno, y que un indicador de presencia de parámetros de la memoria intermedia de imágenes codificadas de subimagen (por ejemplo, sub_pic_cpb_params_present_flag) es positivo o tiene un valor de uno. El decodificador de vídeo 30/108 también puede usar un solo indicador de memoria intermedia de imágenes codificadas con subimagen, SubPicCpbFlag, que puede establecerse en SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag, para determinar si ambos indicadores subyacentes son positivos y que el decodificador de vídeo 30/108 puede codificar subconjuntos de acceso unidades.
La Figura 7 es un diagrama de flujo que ilustra otro procedimiento de ejemplo de procesamiento de datos de vídeo que incluye la salida de una imagen recortada en un procedimiento de salto, por ejemplo, mediante el decodificador de vídeo 30 de las Figuras 1 o 3 o el decodificador de vídeo 108 de la Figura 4 (colectivamente "decodificador de vídeo 30/108"), de acuerdo con las técnicas de esta divulgación. En el ejemplo de la Figura 7, el decodificador de vídeo 30/108 puede realizar un procedimiento de salto si se cumple alguna de ciertas condiciones, como se describe anteriormente con referencia a los ejemplos del procedimiento de salto. En particular, el decodificador de vídeo 30/108 puede realizar un procedimiento de salto si una imagen actual es una imagen de actualización de decodificación instantánea (IDR) (302) y un indicador de no salida de imágenes anteriores tiene un valor que no es igual a uno (304), que puede incluir si el indicador de no salida de imágenes anteriores tiene un valor que no se infiere que sea igual a 1 o que no se establece como igual a 1, por ejemplo, por el HRD. El decodificador de vídeo 30/108 también puede realizar un procedimiento de salto si una cantidad de imágenes en una memoria intermedia de imágenes decodificadas (DPB) que se marcan como necesarias para la salida es mayor que una cantidad de imágenes reordenadas en una capa temporal actual (306). El decodificador de vídeo 30/108 también puede realizar un procedimiento de salto si un número de imágenes en el DPB con valores de identificador de capa temporal inferiores o iguales al valor de identificador de capa temporal de una imagen actual es igual a un valor máximo de almacenamiento en memoria intermedia de imágenes de la capa temporal actual más uno (308).
Si se cumple cualquiera de las condiciones especificadas (302 y 304, 306 o 308), el decodificador de vídeo 30/108 puede realizar un procedimiento de salto de la siguiente manera. El decodificador de vídeo 30/108 puede seleccionar una imagen que tenga un valor de conteo de orden de imagen (POC) más pequeño de imágenes en el DPB y que se marca como necesaria para emitirla como una imagen seleccionada (312). El decodificador de vídeo 30/108 puede recortar la imagen seleccionada como se especifica en un conjunto de parámetros de secuencia activa para la imagen seleccionada, generando así una imagen recortada en base a la imagen seleccionada (314). El decodificador de vídeo 30/108 puede emitir a la imagen recortada (316). El decodificador de vídeo 30/108 puede marcar la imagen seleccionada como no necesaria para emitirla (318).
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, microprograma o cualquiera de sus combinaciones. Si se implementan en software, las funciones pueden almacenarse en o transmitirse como una o más instrucciones o código en un medio legible por ordenador y que se ejecutan mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible, tal como los medios de almacenamiento de datos o los medios de comunicación, que incluyen cualquier medio que facilite transferir 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 legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A manera de ejemplo, y no de limitación, tales medios legibles por ordenador pueden comprender RAM, ROM, EPROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnéticos, memoria flash o cualquier otro medio que pueda utilizarse para almacenar el código del programa deseado en forma de instrucciones o estructuras de datos y al que puede accederse por un ordenador. Además, cualquier conexión se denomina apropiadamente como un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota mediante el uso de un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de suscriptor digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas 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, pero en cambio se dirigen a medios de almacenamiento tangibles y no transitorios. Disco, como se usa en la presente memoria, incluye el disco compacto (CD), el disco de láser, el disco óptico, el disco digital versátil (DVD), el disquete, y el disco Blu-ray donde existen los discos que usualmente reproducen los datos de manera magnética, mientras que otros discos reproducen los datos de manera óptica con láseres. Las combinaciones de los medios anteriores pueden incluirse además dentro del ámbito de los medios legibles por ordenador.
Las instrucciones pueden ejecutarse 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 aplicaciones específicas (ASIC), matrices lógicas programables en campo (FPGA) u otro circuito integrado lógico o discreto equivalente. En consecuencia, el término "procesador", como se utiliza en la presente memoria puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en la presente memoria. Además, en algunos aspectos, la funcionalidad descrita en la presente memoria puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para la codificación y decodificación, o incorporarse en un códec combinado. Asimismo, las técnicas se podrían implementar 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, que incluyen un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se describió anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o microprograma adecuados.

Claims (10)

REIVINDICACIONES
1. Un procedimiento de decodificación de datos de vídeo, comprendiendo el procedimiento:
almacenar (202), en una memoria intermedia de imágenes codificadas, CPB, una pluralidad de unidades de decodificación de datos de vídeo incluidas en un flujo de bits, en el que la pluralidad de unidades de decodificación son subconjuntos de una unidad de acceso de manera que la unidad de acceso incluye una pluralidad de unidades de decodificación, incluyendo cada unidad de decodificación una pluralidad de unidades de capa de abstracción de red, NAL, incluyendo una o más unidades de capa de codificación de vídeo, VCL, NAL y una o más unidades NAL no VCL asociadas;
recibir un mensaje de información de mejora complementaria, SEI, de temporización de imágenes asociado con la unidad de acceso, en el que el mensaje SEI de temporización de imágenes incluye una primera declaración condicional para un primer indicador, en el que, cuando el primer indicador es verdadero, el mensaje SEI de temporización de imágenes incluye, además:
un valor señalado indicativo de un número de ciclos del reloj en relación con un tiempo de eliminación de la memoria intermedia de una unidad de acceso anterior que contiene un mensaje SEI de período de almacenamiento en memoria intermedia;
un valor señalado indicativo de un número de ciclos del reloj a esperar después de la eliminación de una última unidad de decodificación en una unidad de acceso de una CPB antes de que la imagen decodificada se emita de una memoria intermedia de imágenes decodificadas, DPB; y una segunda declaración condicional para un segundo indicador, en el que, cuando el segundo indicador es verdadero, el mensaje SEI de temporización de imágenes incluye además: un valor señalado que especifica el número de unidades de decodificación incluidas en la unidad de acceso; y, para cada una del número especificado de unidades de decodificación:
un valor señalado indicativo de un tiempo de eliminación de CPB para cada unidad de decodificación respectiva de la pluralidad de unidades de decodificación; y
un valor señalado para un elemento de sintaxis num_nalus_in_du_minus1[ i ], donde num_nalus_in_du_minus1[i]+ 1 especifica el número de unidades NAL incluidas en una unidad de decodificación respectiva i;
obtener (204) un tiempo de eliminación de CPB respectivo para cada una de la pluralidad de unidades de decodificación almacenadas en base a los valores de tiempo de eliminación de CPB señalados; eliminar (206) una o más unidades de decodificación almacenadas de la pluralidad de unidades de decodificación almacenadas de la CPB de acuerdo con los tiempos de eliminación de CPB obtenidos, en el que la primera unidad de decodificación de la unidad de acceso incluye las primeras num_nalus_in_du_minus1[0]+1 unidades NAL consecutivas en el orden de decodificación en la unidad de acceso, y en el que, cuando i es mayor que 0, la i-ésima unidad de decodificación de la unidad de acceso incluye las num_nalus_in_du_minus1[0]+1 unidades NAL consecutivas que siguen inmediatamente a la última unidad NAL en la unidad de decodificación anterior de la unidad de acceso, en orden de decodificación; y decodificar (208) datos de vídeo correspondientes a las unidades de decodificación eliminadas, en el que codificar los datos de vídeo comprende decodificar las unidades de decodificación eliminadas.
2. El procedimiento de la reivindicación 1, en el que almacenar (202) la pluralidad de unidades de decodificación de datos de vídeo en la memoria intermedia de imágenes comprende almacenar la pluralidad de unidades de decodificación de datos de vídeo en un orden de decodificación continuo en la CPB.
3. El procedimiento de la reivindicación 2, que comprende además recibir la pluralidad de unidades de decodificación de datos de vídeo en el orden de decodificación continuo antes de almacenar la pluralidad de unidades de decodificación.
4. El procedimiento de la reivindicación 1, en el que el procedimiento comprende además eliminar una primera unidad de decodificación de la pluralidad de unidades de decodificación almacenadas de la memoria intermedia de imágenes codificadas antes de eliminar una segunda unidad de decodificación de la pluralidad de unidades de decodificación almacenadas de la memoria intermedia de imágenes codificadas, en el que la primera unidad de decodificación y la segunda unidad de decodificación comprenden subconjuntos respectivos de una unidad de acceso común.
5. El procedimiento de la reivindicación 1, en el que cada una de la pluralidad de unidades de decodificación es una subimagen.
6. El procedimiento de la reivindicación 1, en el que cada una de las unidades de decodificación almacenadas comprende una subimagen, comprendiendo además el procedimiento recibir un valor señalado indicativo de una alineación de bits de al menos una subimagen dentro de un conjunto más grande de datos de vídeo, el conjunto más grande de datos de vídeo que comprende al menos una subimagen.
7. El procedimiento de la reivindicación 1, en el que:
al menos dos unidades de decodificación de la pluralidad de unidades de decodificación incluyen diferentes números de bloques de codificación, y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas comprende codificar los diferentes números de bloques de codificación en al menos dos unidades de decodificación que incluyen los diferentes números de bloques de codificación.
8. El procedimiento de la reivindicación 1, en el que al menos dos unidades de decodificación de la pluralidad de unidades de decodificación incluyen diferentes números de bits, y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminadas comprende codificar los diferentes números de bits en al menos dos unidades de decodificación que incluye los diferentes números de bits.
9. Un dispositivo para decodificar datos de vídeo, comprendiendo el dispositivo un decodificador de vídeo configurado para:
almacenar (202), en una memoria intermedia de imágenes codificadas, CPB, una pluralidad de unidades de decodificación de datos de vídeo incluidas en un flujo de bits, en el que la pluralidad de unidades de decodificación son subconjuntos de una unidad de acceso de manera que la unidad de acceso incluye una pluralidad de unidades de decodificación, incluyendo cada unidad de decodificación una pluralidad de unidades de capa de abstracción de red, NAL, incluyendo una o más unidades de capa de codificación de vídeo, VCL, NAL y una o más unidades NAL no VCL asociadas;
recibir un mensaje de información de mejora complementaria, SEI, de temporización de imágenes asociado con la unidad de acceso, en el que el mensaje SEI de temporización de imágenes incluye una primera declaración condicional para un primer indicador, en el que, cuando el primer indicador es verdadero, el mensaje SEI de temporización de imágenes incluye, además:
un valor señalado indicativo de un número de ciclos del reloj en relación con un tiempo de eliminación de la memoria intermedia de una unidad de acceso anterior que contiene un mensaje SEI de período de almacenamiento en memoria intermedia;
un valor señalado indicativo de un número de ciclos del reloj a esperar después de la eliminación de una última unidad de decodificación en una unidad de acceso de una CPB antes de que la imagen decodificada se emita de una memoria intermedia de imágenes decodificadas, DPB; y una segunda declaración condicional para un segundo indicador, y en el que, cuando el indicador es verdadero, el mensaje SEI de temporización de imágenes incluye, además:
un valor señalado que especifica el número de unidades de decodificación incluidas en la unidad de acceso; y, para cada uno del número especificado de unidades de decodificación:
obtener (204) un tiempo de eliminación de CPB respectivo para cada una de la pluralidad de unidades de decodificación almacenadas en base a los valores de tiempo de eliminación de CPB señalados;
eliminar (206) una o más unidades de decodificación almacenadas de la pluralidad de unidades de decodificación almacenadas de la CPB de acuerdo con los tiempos de eliminación de CPB obtenidos, en el que la primera unidad de decodificación de la unidad de acceso incluye las primeras num_nalus_in_du_minus1[0]+1 unidades NAL consecutivas en el orden de decodificación en la unidad de acceso, y en el que, cuando i es mayor que 0, la i-ésima unidad de decodificación de la unidad de acceso incluye las num_nalus_in_du_minus1[0]+1 unidades NAL consecutivas que siguen inmediatamente a la última unidad NAL en la unidad de decodificación anterior de la unidad de acceso, en orden de decodificación; y
decodificar (208) datos de vídeo correspondientes a las unidades de decodificación eliminadas, en el que codificar los datos de vídeo comprende decodificar las unidades de decodificación eliminadas.
10. Un producto de programa de ordenador que comprende un medio de almacenamiento legible por ordenador que comprende instrucciones almacenadas en el mismo que, si se ejecutan, hacen que un procesador realice el procedimiento de cualquiera de las reivindicaciones de 1 a 8.
ES13710661T 2012-04-04 2013-02-26 Almacenamiento en memoria intermedia de vídeo con bajo retardo en la codificación de video Active ES2928690T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261620266P 2012-04-04 2012-04-04
US201261641063P 2012-05-01 2012-05-01
US13/776,063 US9578326B2 (en) 2012-04-04 2013-02-25 Low-delay video buffering in video coding
PCT/US2013/027808 WO2013151634A1 (en) 2012-04-04 2013-02-26 Low-delay video buffering in video coding

Publications (1)

Publication Number Publication Date
ES2928690T3 true ES2928690T3 (es) 2022-11-22

Family

ID=49292282

Family Applications (2)

Application Number Title Priority Date Filing Date
ES13710661T Active ES2928690T3 (es) 2012-04-04 2013-02-26 Almacenamiento en memoria intermedia de vídeo con bajo retardo en la codificación de video
ES13710663.9T Active ES2592182T3 (es) 2012-04-04 2013-02-26 Almacenamiento intermedio de vídeo de bajo retardo en codificación de vídeo

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES13710663.9T Active ES2592182T3 (es) 2012-04-04 2013-02-26 Almacenamiento intermedio de vídeo de bajo retardo en codificación de vídeo

Country Status (23)

Country Link
US (2) US9578326B2 (es)
EP (2) EP2834975B1 (es)
JP (3) JP6377603B2 (es)
KR (2) KR101739633B1 (es)
CN (2) CN104221387B (es)
AU (3) AU2013244010A1 (es)
BR (2) BR112014024850B1 (es)
CA (2) CA2866665C (es)
DK (1) DK2834975T3 (es)
ES (2) ES2928690T3 (es)
HK (2) HK1201112A1 (es)
HU (2) HUE060226T2 (es)
IL (2) IL234520A (es)
MY (2) MY168712A (es)
PH (2) PH12014502034B1 (es)
PL (2) PL2834974T3 (es)
PT (1) PT2834975T (es)
RU (2) RU2633165C2 (es)
SG (3) SG10201608270VA (es)
SI (1) SI2834975T1 (es)
TW (2) TWI543621B (es)
WO (2) WO2013151635A1 (es)
ZA (1) ZA201408023B (es)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9578326B2 (en) 2012-04-04 2017-02-21 Qualcomm Incorporated Low-delay video buffering in video coding
PL2842313T3 (pl) 2012-04-13 2017-06-30 Ge Video Compression, Llc Skalowalny strumień danych i obiekt sieciowy
EP2843945B1 (en) 2012-04-23 2020-03-11 Sun Patent Trust Image encoding method, image decoding method, image encoding device, image decoding device, and image encoding/decoding device
HRP20231318T1 (hr) * 2012-06-26 2024-02-16 Lg Electronics Inc. Postupak dekodiranja videozapisa, postupak kodiranja videozapisa i medija za pohranu na kojem se pohranjuju kodirane video informacije
EP2868103B1 (en) 2012-06-29 2016-12-07 GE Video Compression, LLC Video data stream concept
US9912941B2 (en) * 2012-07-02 2018-03-06 Sony Corporation Video coding system with temporal layers and method of operation thereof
US10110890B2 (en) 2012-07-02 2018-10-23 Sony Corporation Video coding system with low delay and method of operation thereof
US8989508B2 (en) * 2012-09-28 2015-03-24 Sharp Kabushiki Kaisha Electronic device for signaling a sub-picture buffer parameter
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
SG10201913551WA (en) * 2013-04-07 2020-03-30 Dolby Int Ab Signaling change in output layer sets
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
JP6156497B2 (ja) * 2013-07-16 2017-07-05 富士通株式会社 動画像符号化装置、動画像符号化方法、及び動画像復号装置ならびに動画像復号方法
US9641862B2 (en) * 2013-10-15 2017-05-02 Nokia Technologies Oy Video encoding and decoding
US9794558B2 (en) 2014-01-08 2017-10-17 Qualcomm Incorporated Support of non-HEVC base layer in HEVC multi-layer extensions
CN105163120B (zh) * 2014-06-09 2018-09-25 浙江大学 一种假设解码器中输入码流缓冲区的输入和输出/从缓冲区获取数据的方法及装置、传输视频码流的方法
US10623755B2 (en) * 2016-05-23 2020-04-14 Qualcomm Incorporated End of sequence and end of bitstream NAL units in separate file tracks
WO2019027241A1 (ko) * 2017-07-31 2019-02-07 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US10798402B2 (en) * 2017-10-24 2020-10-06 Google Llc Same frame motion estimation and compensation
AU2020205179B2 (en) * 2019-01-02 2022-07-14 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and device for processing video signal by using inter prediction
KR20240056798A (ko) 2019-01-09 2024-04-30 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 코딩의 서브 픽처 식별자 시그널링
CN111479111B (zh) 2019-01-23 2024-04-09 华为技术有限公司 图像显示顺序的确定方法、装置和视频编解码设备
KR20210118183A (ko) * 2019-02-01 2021-09-29 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 서브픽처 또는 영역 단위 랜덤 액세스가 가능한 비디오 코덱 및 이를 이용한 비디오 합성을 위한 개념
MX2021010393A (es) * 2019-03-01 2021-11-12 Fraunhofer Ges Forschung Decodificador de referencia hipotetico.
CN110062130B (zh) * 2019-03-14 2021-06-08 叠境数字科技(上海)有限公司 基于预处理文件结构的千兆级像素视频渲染方法及装置
WO2020256048A1 (ja) * 2019-06-18 2020-12-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
CN118317098A (zh) * 2019-06-18 2024-07-09 松下电器(美国)知识产权公司 编码装置、编码方法、解码装置和解码方法
WO2021061493A1 (en) 2019-09-24 2021-04-01 Futurewei Technologies, Inc. Temporal identifier constraints for sei messages
CN114631317B (zh) 2019-10-18 2024-03-15 北京字节跳动网络技术有限公司 子图片的参数集信令中的语法约束
WO2021107637A1 (ko) * 2019-11-27 2021-06-03 엘지전자 주식회사 영상 정보를 시그널링하는 방법 및 장치
CN115152211A (zh) * 2019-12-31 2022-10-04 皇家Kpn公司 视频编码中解码图片缓冲区的部分输出
US20210306650A1 (en) * 2020-03-31 2021-09-30 Tencent America LLC Method for signaling subpicture partitioning in coded video stream
CR20230152A (es) * 2020-05-22 2023-05-15 Ge Video Compression Llc Codificador de video, decodificador de video, métodos para codificar y decodificar y flujo de datos de video para realizar conceptos avanzados de codificación de video (divisional exp. n°2022-0589)
WO2021252525A1 (en) * 2020-06-08 2021-12-16 Bytedance Inc. Constraints of slice count in a coded video picture
US20220086457A1 (en) 2020-09-17 2022-03-17 Lemon Inc. Subpicture track referencing and processing
US11695965B1 (en) 2022-10-13 2023-07-04 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video coding using a coded picture buffer

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003247605A1 (en) 2002-07-02 2004-01-23 Conexant Systems, Inc. Hypothetical reference decoder for compressed image and video
US7532670B2 (en) 2002-07-02 2009-05-12 Conexant Systems, Inc. Hypothetical reference decoder with low start-up delays for compressed image and video
MY134659A (en) * 2002-11-06 2007-12-31 Nokia Corp Picture buffering for prediction references and display
KR100855466B1 (ko) * 2004-01-27 2008-09-01 삼성전자주식회사 비디오 코딩 및 디코딩 방법, 및 이를 위한 장치
US20060002479A1 (en) * 2004-06-22 2006-01-05 Fernandes Felix C A Decoder for H.264/AVC video
JP4902358B2 (ja) * 2004-12-02 2012-03-21 ソニー株式会社 符号化装置および方法、並びにプログラム
US8615038B2 (en) * 2004-12-06 2013-12-24 Nokia Corporation Video coding, decoding and hypothetical reference decoder
RU2377736C2 (ru) * 2005-04-13 2009-12-27 Нокиа Корпорейшн Кодирование, хранение и передача информации о масштабируемости
US7974341B2 (en) * 2005-05-03 2011-07-05 Qualcomm, Incorporated Rate control for multi-layer video design
WO2008018626A2 (en) 2006-08-10 2008-02-14 Canon Kabushiki Kaisha Image decoding apparatus
ES2721506T3 (es) * 2007-01-04 2019-08-01 Interdigital Madison Patent Holdings Métodos y aparato para la información de vistas múltiples, expresada en sintaxis de alto nivel
CN102984544A (zh) 2007-01-08 2013-03-20 汤姆森特许公司 用于视频流拼接的方法及装置
GB0700381D0 (en) 2007-01-09 2007-02-14 Mitsubishi Electric Inf Tech Generalised Hypothetical Reference Decoder for Scalable Video Coding with Bitstream Rewriting
JP4823090B2 (ja) 2007-02-01 2011-11-24 パナソニック株式会社 画像符号化装置
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
TWI408965B (zh) * 2007-10-15 2013-09-11 Qualcomm Inc 可調節視訊編碼之改良加強層編碼之方法、設備及電腦可讀媒體
JP4577357B2 (ja) * 2007-12-27 2010-11-10 ソニー株式会社 符号化装置及び方法、並びにプログラム
JP5462259B2 (ja) * 2008-07-16 2014-04-02 シズベル インターナショナル エス.アー. トラックおよびトラックサブセットグループ化の方法および装置
WO2010021665A1 (en) 2008-08-20 2010-02-25 Thomson Licensing Hypothetical reference decoder
WO2010057027A1 (en) 2008-11-14 2010-05-20 Transvideo, Inc. Method and apparatus for splicing in a compressed video bitstream
JP5072893B2 (ja) * 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
US8724710B2 (en) 2010-02-24 2014-05-13 Thomson Licensing Method and apparatus for video encoding with hypothetical reference decoder compliant bit allocation
KR20110124161A (ko) 2010-05-10 2011-11-16 삼성전자주식회사 계층 부호화 영상의 송수신 방법 및 장치
CN103098462A (zh) * 2010-08-06 2013-05-08 松下电器产业株式会社 编码方法、显示装置以及解码方法
US20120075436A1 (en) * 2010-09-24 2012-03-29 Qualcomm Incorporated Coding stereo video data
US9578326B2 (en) 2012-04-04 2017-02-21 Qualcomm Incorporated Low-delay video buffering in video coding

Also Published As

Publication number Publication date
HK1203009A1 (en) 2015-10-09
TW201347553A (zh) 2013-11-16
CA2866665A1 (en) 2013-10-10
PH12014502225A1 (en) 2015-01-12
SG11201405544YA (en) 2014-10-30
TWI549481B (zh) 2016-09-11
JP6529904B2 (ja) 2019-06-12
MY168712A (en) 2018-11-29
KR101794398B1 (ko) 2017-11-06
TW201349872A (zh) 2013-12-01
PL2834975T3 (pl) 2017-03-31
JP2015515823A (ja) 2015-05-28
PH12014502225B1 (en) 2015-01-12
IL234520A (en) 2017-07-31
WO2013151635A1 (en) 2013-10-10
AU2013244010A1 (en) 2014-10-02
HUE029350T2 (en) 2017-02-28
DK2834975T3 (en) 2016-08-22
KR101739633B1 (ko) 2017-05-24
PL2834974T3 (pl) 2022-12-05
SG10201608270VA (en) 2016-11-29
IL234569A (en) 2017-09-28
BR112014024849B1 (pt) 2023-02-14
HUE060226T2 (hu) 2023-02-28
EP2834975A1 (en) 2015-02-11
US9578326B2 (en) 2017-02-21
AU2013244011A1 (en) 2014-10-02
RU2014143786A (ru) 2016-05-27
WO2013151634A1 (en) 2013-10-10
KR20150003235A (ko) 2015-01-08
ZA201408023B (en) 2017-08-30
AU2013244011B2 (en) 2017-05-18
CA2867024A1 (en) 2013-10-10
CN104221387A (zh) 2014-12-17
EP2834975B1 (en) 2016-06-15
PH12014502034A1 (en) 2014-11-24
JP6377603B2 (ja) 2018-08-22
JP2018093514A (ja) 2018-06-14
JP2015515822A (ja) 2015-05-28
EP2834974A1 (en) 2015-02-11
HK1201112A1 (en) 2015-08-21
PH12014502034B1 (en) 2014-11-24
RU2630176C2 (ru) 2017-09-05
MY169717A (en) 2019-05-13
RU2014144282A (ru) 2016-05-27
EP2834974B1 (en) 2022-09-21
US20130266075A1 (en) 2013-10-10
CN104221387B (zh) 2018-06-26
ES2592182T3 (es) 2016-11-28
KR20150003236A (ko) 2015-01-08
SI2834975T1 (sl) 2016-10-28
BR112014024850A8 (pt) 2021-06-22
CA2867024C (en) 2018-08-14
CA2866665C (en) 2018-09-18
BR112014024849A2 (pt) 2017-06-20
TWI543621B (zh) 2016-07-21
BR112014024850A2 (pt) 2017-06-20
CN104205849A (zh) 2014-12-10
BR112014024850B1 (pt) 2023-02-14
CN104205849B (zh) 2019-01-04
RU2633165C2 (ru) 2017-10-11
US20130266076A1 (en) 2013-10-10
SG11201405547TA (en) 2014-11-27
PT2834975T (pt) 2016-09-23
US9565431B2 (en) 2017-02-07
BR112014024849A8 (pt) 2021-06-22
AU2017202638A1 (en) 2017-05-11
AU2017202638B2 (en) 2019-02-07

Similar Documents

Publication Publication Date Title
ES2928690T3 (es) Almacenamiento en memoria intermedia de vídeo con bajo retardo en la codificación de video
ES2884724T3 (es) Definición de unidad de decodificación ampliada
ES2854274T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2895442T3 (es) Dispositivo y método para la codificación escalable de información de video
ES2778463T3 (es) Inferencia mejorada de indicador de no emisión de imagen previa en codificación de video
ES2698554T3 (es) Acceso aleatorio con gestión avanzada de memoria intermedia de imágenes codificadas en 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
ES2684546T3 (es) Codificación de vídeo con comportamientos de imagen de punto de acceso aleatorio mejorados
BR112016029668B1 (pt) Sinalização de parâmetros de hrd para partições de fluxo de bits