ES2592182T3 - Almacenamiento intermedio de vídeo de bajo retardo en codificación de vídeo - Google Patents
Almacenamiento intermedio de vídeo de bajo retardo en codificación de vídeo Download PDFInfo
- Publication number
- ES2592182T3 ES2592182T3 ES13710663.9T ES13710663T ES2592182T3 ES 2592182 T3 ES2592182 T3 ES 2592182T3 ES 13710663 T ES13710663 T ES 13710663T ES 2592182 T3 ES2592182 T3 ES 2592182T3
- Authority
- ES
- Spain
- Prior art keywords
- cpb
- decoding
- image
- units
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
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
Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento: almacenar una o más unidades de decodificación de datos de vídeo en una memoria intermedia de imagen codificada (CPB); obtener un tiempo de eliminación de memoria intermedia respectivo para las una o más unidades de decodificación; eliminar las unidades de decodificación de la CPB de acuerdo con el tiempo de eliminación de memoria intermedia obtenido para cada una de las unidades de decodificación; determinar si la CPB funciona a nivel de unidad de acceso o nivel de subimagen; y codificar los datos de vídeo correspondientes a las unidades de decodificación eliminados, en el que, si la CPB funciona a nivel de unidad de acceso, la codificación de los datos de vídeo comprende la codificación de unidades de acceso comprendidas en las unidades de decodificación; y en el que, si la CPB funciona a nivel de subimagen, la codificación de los datos de vídeo comprende subconjuntos de unidades de acceso comprendidas en las unidades de decodificación.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Almacenamiento intermedio de video de bajo retardo en codificacion de video.
CAMPO TECNICO
Esta divulgacion se refiere a la codificacion de video.
ANTECEDENTES
Las capacidades de video digital pueden incorporarse en una amplia gama de dispositivos, incluyendo televisiones digitales, sistemas de radiodifusion directa digitales, sistemas de radiodifusion inalambricos, asistentes digitales personales (PDA), ordenadores portatiles o de escritorio, camaras digitales, dispositivos de grabacion digitales, reproductores multimedia digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos celulares o de radio por satelite, dispositivos de videoconferencia, etc. Las normas de codificacion de video 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 (tambien conocida como ISO/IEC MPEG-4 AVC), incluyendo sus ampliaciones de codificacion de video escalable (SVC) y de codificacion de video multivista (MVC). Ademas, la codificacion de video de alta eficiencia (HEVC) es una norma de codificacion de video que esta desarrollandose por el Equipo de Colaboracion Conjunta en Codificacion de Video (JCT-VC) del Grupo de Expertos en Codificacion de Video (VCEG) de ITU-T y el Grupo de Expertos en Imagenes en Movimiento (MPEG) de ISO/IEC. Ademas, un borrador reciente de la siguiente norma HEVC, denominado como “Borrador 6 de trabajo de la HEVC” o “WD6”, se describe en el documento JCTVC-H1003, de Bross y col., titulado "High Efficiency Video Coding (HEVC) Text Specification Draft 6" [“Especificacion textual de la Codificacion de Video de Alta Eficacia (HEVC), Borrador 6”], Equipo de Colaboracion Conjunta en Codificacion de Video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, octava conferencia: San Jose, California, Estados Unidos, febrero de 2012, que, a partir del martes, 1 de mayo de 2012 puede descargarse desde:
Las tecnicas de compresion de video llevan a cabo una prediccion espacial y/o una prediccion temporal para reducir o eliminar la redundancia presente en las secuencias de video. Para la codificacion de video basada en bloques, una trama de video o un fragmento pueden dividirse en macrobloques. Cada macrobloque se puede dividir aun mas. Los macrobloques de una trama o fragmento intra-codificado (I) se codifican usando prediccion espacial con respecto a macrobloques vecinos. Los macrobloques de una trama o fragmento inter-codificado (P o B) pueden usar prediccion espacial con respecto a macrobloques vecinos de la misma trama o fragmento, o prediccion temporal con respecto a otras tramas de referencia.
KAZUI K ET AL: "Market needs and practicality of sub-picture based CPB operation", 8. Conferencia de JCT; 99. Reunion MPEG; 1-2-2012 - 10-2-2012; SAN JOSE; (Joint Collaborative Team on Video Coding of ISO/IEC JTC1/SC29/WG11 and ITU-T SG.16), URL:,
http://wftp3.itu.int/av-arch/jctvc-site/, no.JCTVC-H0215, 21 de enero de 2012 (2012-01-21), XP030111242) divulga una operacion basada en subimagen de la memoria intermedia de imagen codificada (CPB), con el tiempo de eliminacion de una subimagen de reciente introduccion en la especificacion de HRD.
http://wftp3.itu.int/av-arch/jctvc-site/, no.JCTVC-H0215, 21 de enero de 2012 (2012-01-21), XP030111242) divulga una operacion basada en subimagen de la memoria intermedia de imagen codificada (CPB), con el tiempo de eliminacion de una subimagen de reciente introduccion en la especificacion de HRD.
RESUMEN
En general, esta divulgacion describe varias tecnicas para lograr un retardo de codec reducido de forma interoperable. En un ejemplo, estas tecnicas se pueden lograr a traves de un comportamiento de memoria intermedia de imagenes codificadas (CPB) en base a subimagen generica.
En un ejemplo, un procedimiento de codificacion de datos de video incluye almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagen codificada (CPB). El procedimiento incluye adicionalmente obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion. El procedimiento incluye adicionalmente eliminar las unidades de decodificacion de la CPB de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion. El procedimiento incluye adicionalmente determinar si la CPB funciona a nivel de unidad de acceso o nivel de subimagen. El procedimiento incluye adicionalmente codificar los datos de video correspondientes a las unidades de decodificacion eliminados. Si la CPB funciona a nivel de unidad de acceso, la codificacion de los datos de video comprende unidades de acceso comprendidas en las unidades de decodificacion. Si la CPB funciona a nivel de subimagen, la codificacion de los datos de video comprende subconjuntos de unidades de acceso comprendidas en las unidades de decodificacion.
En otro ejemplo, un dispositivo para codificar datos de datos de video esta configurado para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagen codificada (CPB). El dispositivo esta configurado adicionalmente para obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion. El dispositivo esta configurado adicionalmente para eliminar las unidades de decodificacion de la CPB de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion. El dispositivo esta configurado adicionalmente para determinar si la CPB funciona
5
10
15
20
25
30
35
40
45
50
55
60
65
a nivel de unidad de acceso o nivel de subimagen. El dispositivo esta configurado adicionalmente para codificar los datos de video correspondientes a las unidades de decodificacion eliminados. Si la CPB funciona a nivel de unidad de acceso, la codificacion de los datos de video comprende unidades de acceso comprendidas en las unidades de decodificacion. Si la CPB funciona a nivel de subimagen, la codificacion de los datos de video comprende subconjuntos de unidades de acceso comprendidas en las unidades de decodificacion.
En otro ejemplo, un aparato para codificar datos de datos de video incluye medios para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagen codificada (CPB). El aparato incluye adicionalmente medios para obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion. El aparato incluye adicionalmente medios para eliminar las unidades de decodificacion de la CPB de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion. El aparato incluye adicionalmente medios para determinar si la CPB funciona a nivel de unidad de acceso o nivel de subimagen. El aparato incluye adicionalmente medios para codificar los datos de video correspondientes a las unidades de decodificacion eliminados. Si la CPB funciona a nivel de unidad de acceso, la codificacion de los datos de video comprende unidades de acceso comprendidas en las unidades de decodificacion. Si la CPB funciona a nivel de subimagen, la codificacion de los datos de video comprende subconjuntos de unidades de acceso comprendidas en las unidades de decodificacion.
En otro ejemplo, un medio de almacenamiento legible por ordenador comprende instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que un procesador almacene una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagen codificada (CPB). Las instrucciones hacen adicionalmente que un procesador obtenga un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion. Las instrucciones hacen adicionalmente que un procesador elimine las unidades de decodificacion de la CPB de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion. Las instrucciones hacen adicionalmente que un procesador determine si la CPB funciona a nivel de unidad de acceso o nivel de subimagen. Las instrucciones hacen adicionalmente que un procesador codifique los datos de video correspondientes a las unidades de decodificacion eliminadas. Si la CPB funciona a nivel de unidad de acceso, la codificacion de los datos de video comprende unidades de acceso comprendidas en las unidades de decodificacion. Si la CPB funciona a nivel de subimagen, la codificacion de los datos de video comprende subconjuntos de unidades de acceso comprendidas en las unidades de decodificacion.
Los detalles de uno o mas ejemplos se exponen en los dibujos adjuntos y en la siguiente descripcion. Otras caractensticas, objetivos y ventajas resultaran evidentes a partir de la descripcion, los dibujos y las reivindicaciones.
BREVE DESCRIPCION DE LOS DIBUJOS
La figura 1 es un diagrama de bloques que ilustra un sistema de codificacion y decodificacion de video ejemplar que puede utilizar tecnicas para desbloquear bordes entre los bloques de video, segun tecnicas de esta divulgacion.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de video que puede implementar tecnicas para desbloquear bordes entre los bloques de video, segun tecnicas de esta divulgacion.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de video, que decodifica una secuencia de video codificada, segun tecnicas de esta divulgacion.
La figura 4 es un diagrama de bloques que ilustra un dispositivo de destino ejemplar que puede implementar cualquiera o todas las tecnicas de esta divulgacion.
La figura 5 es un diagrama de flujo que ilustra un procedimiento ejemplar que incluye la eliminacion de unidades de decodificacion de datos de video de una memoria intermedia de imagenes de acuerdo con un tiempo de eliminacion de memoria intermedia obtenido, segun las tecnicas de esta divulgacion.
La figura 6 es un diagrama de flujo que ilustra otro procedimiento ejemplar que incluye la eliminacion de unidades de decodificacion de datos de video de una memoria intermedia de imagenes de acuerdo con un tiempo de eliminacion de memoria intermedia obtenido, segun las tecnicas de esta divulgacion.
La figura 7 es un diagrama de flujo que ilustra otro procedimiento ejemplar de datos de video de procesamiento que incluye la salida de una imagen recortada en un proceso de abultamiento, de acuerdo con tecnicas de esta divulgacion.
DESCRIPCION DETALLADA
Las aplicaciones de video pueden incluir la reproduccion local, streaming, difusion/multidifusion y aplicaciones conversacionales. Las aplicaciones conversacionales pueden incluir videotelefoma y videoconferencia, y tambien se conocen como aplicaciones de bajo retardo. Las aplicaciones conversacionales requieren un retardo relativamente
5
10
15
20
25
30
35
40
45
50
55
60
65
bajo de extremo a extremo de la totalidad de los sistemas, es decir, el retardo entre el momento en que se captura una trama de video y el momento en que se muestra la trama de video. Tfpicamente, el retardo aceptable de extremo a extremo para aplicaciones conversacionales debe ser de menos de 400 milisegundos (ms), y se puede considerar muy bueno un retardo de extremo a extremo de alrededor de 150 ms. Cada etapa de procesamiento puede contribuir al retardo global de extremo a extremo, por ejemplo, retardo de captura, retardo de pre- procesamiento, retardo de codificacion, retardo de transmision, retardo de almacenamiento en memoria intermedia de recepcion (para anti-vibracion), retardo de decodificacion, retardo de la salida de imagen decodificada, retardo post-procesamiento y retardo de visualizacion. Por lo tanto, tfpicamente, el retardo de codec (retardo de codificacion, retardo de decodificacion y retardo de salida de imagen decodificada) debe reducirse al mmimo en las aplicaciones conversacionales. En particular, la estructura de codificacion debe garantizar que el orden de decodificacion de las imagenes y el orden de salida son identicos de tal forma que el retardo de salida de imagen decodificada es igual a cero.
Las normas de codificacion de video pueden incluir una especificacion de un modelo de almacenamiento temporal de video. En AVC y HEVC, el modelo de almacenamiento en memoria intermedia se refiere como un decodificador de referencia ficticio (HRD), que incluye un modelo de almacenamiento en memoria intermedia de tanto la memoria intermedia de imagen codificada (CPB) como la memoria intermedia de imagen decodificada (DPB), y los comportamientos de CPB y DPB se especifican matematicamente. El HRD impone directamente restricciones sobre temporizacion, tamanos de almacen temporal y velocidades de bits diferentes, e impone indirectamente restricciones sobre caractensticas y estadfsticas de flujos de bits. Un conjunto completo de parametros de HRD incluye cinco parametros basicos, el retardo inicial de eliminacion de la CPB, el tamano de la CPB, la velocidad de bits, el retardo inicial de salida del DPB y el tamano de la DPB.
En la AVC y la HEVC, la conformidad del flujo de bits y la conformidad del decodificador se especifican como partes de la especificacion del HRD. Aunque se nombra como un tipo de decodificador, el HRD se necesita tfpicamente en el sector codificador para garantizar la conformidad del flujo de bits, y habitualmente no se necesita en el sector decodificador. Se especifican dos tipos de conformidad de flujo de bits o de HRD, concretamente Tipo I y Tipo II. Ademas, se especifican dos tipos de conformidad de decodificador, la conformidad de decodificador de la temporizacion de salida y la conformidad de decodificador del orden de salida.
En los modelos de HRD de la AVC y la HEVC, la decodificacion o la eliminacion de la CPB esta basada en unidades de acceso, y se supone que la decodificacion de imagenes es instantanea. En aplicaciones practicas, si un decodificador en conformidad sigue estrictamente los tiempos de decodificacion senalizados, por ejemplo, en los mensajes de informacion de mejora complementaria (SEI) de temporizacion de imagenes, para iniciar la decodificacion de unidades de acceso, entonces el momento mas temprano posible para emitir una imagen decodificada espedfica es igual al momento de decodificacion de esa imagen espedfica, mas el tiempo necesario para decodificar esa imagen espedfica. 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 terminos "instantanea" e "instantaneamente" como se usan a lo largo de toda esta divulgacion pueden referirse a cualquier duracion de tiempo que puede asumirse como instantanea en uno o mas modelos de codificacion o un aspecto idealizado de una cualquiera uno o mas modelos de codificacion, con el entendimiento de que esto puede variar de ser "instantanea" en un sentido ffsico o literal. Por ejemplo, para los fines de esta divulgacion, una funcion o proceso pueden ser considerados como nominalmente "instantaneos" si esto tiene lugar en o dentro de un margen practico de un tiempo los mas temprano posible hipotetico o idealizado para la funcion o proceso a realizar. La sintaxis y nombres de las variables como se usan en el presente documento pueden entenderse en algunos ejemplos de acuerdo con su significado dentro del modelo HEVC.
Un comportamiento CPB basado en subimagen se propuso en “Enhancement on operation of coded picture buffer”, Kazui et al., Joint Collaborative Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 y ISO/IEC JTC1/SC29/WG11, 7a reunion: Ginebra, CH 21-30, Nov. 2011, JCTVC-G188 (disponible en
http://phenix.int- evry.fr/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G188-v2.zip) con el fin de lograr un retardo de codificacion de menos de un periodo de imagen en una forma interoperable. El procedimiento JCTVC-G188 se puede resumir como se indica a continuacion: una imagen puede dividirse uniformemente M grupos de bloques de arbol, es decir, los primeros M bloques de arbol en una exploracion de trama de bloque de arbol de la imagen pertenecen al primer grupo de bloques de arbol, los segundos M bloques de arbol en la exploracion de trama de bloque de arbol de la imagen pertenecen al segundo grupo de bloques de arbol, y asf sucesivamente. El valor M se puede senalizar en los mensajes SEI del periodo de almacenamiento intermedio. Este valor puede ser usado para derivar el tiempo de eliminacion de CPB (es decir, el tiempo de decodificacion) de cada grupo de bloques de arbol. En este sentido, el comportamiento JCTVC-G188 CPB se basa en subimagen, donde cada subimagen es un grupo de bloques de arbol. En algunos ejemplos, una subimagen puede corresponder a uno o mas fragmentos, uno o mas ondas (para la particion del frente de onda de una imagen), o una o mas piezas. Se asume en este procedimiento de JCTVC-G188 que los tiempos de eliminacion de CPB a nivel de unidad de acceso se senalizan como habituales (usando mensajes SEI de temporizacion de imagen), y dentro de cada unidad de acceso, los tiempos de eliminacion de CPB para los grupos bloques de arbol se asume que dividen de forma lineal o uniforme el intervalo del tiempo de eliminacion de CPB de la unidad de acceso anterior al tiempo de eliminacion de CPB de la unidad de acceso actual.
http://phenix.int- evry.fr/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G188-v2.zip) con el fin de lograr un retardo de codificacion de menos de un periodo de imagen en una forma interoperable. El procedimiento JCTVC-G188 se puede resumir como se indica a continuacion: una imagen puede dividirse uniformemente M grupos de bloques de arbol, es decir, los primeros M bloques de arbol en una exploracion de trama de bloque de arbol de la imagen pertenecen al primer grupo de bloques de arbol, los segundos M bloques de arbol en la exploracion de trama de bloque de arbol de la imagen pertenecen al segundo grupo de bloques de arbol, y asf sucesivamente. El valor M se puede senalizar en los mensajes SEI del periodo de almacenamiento intermedio. Este valor puede ser usado para derivar el tiempo de eliminacion de CPB (es decir, el tiempo de decodificacion) de cada grupo de bloques de arbol. En este sentido, el comportamiento JCTVC-G188 CPB se basa en subimagen, donde cada subimagen es un grupo de bloques de arbol. En algunos ejemplos, una subimagen puede corresponder a uno o mas fragmentos, uno o mas ondas (para la particion del frente de onda de una imagen), o una o mas piezas. Se asume en este procedimiento de JCTVC-G188 que los tiempos de eliminacion de CPB a nivel de unidad de acceso se senalizan como habituales (usando mensajes SEI de temporizacion de imagen), y dentro de cada unidad de acceso, los tiempos de eliminacion de CPB para los grupos bloques de arbol se asume que dividen de forma lineal o uniforme el intervalo del tiempo de eliminacion de CPB de la unidad de acceso anterior al tiempo de eliminacion de CPB de la unidad de acceso actual.
5
10
15
20
25
30
35
40
45
50
55
60
65
Este procedimiento de JCTVC-G188 implica ademas las siguientes suposiciones o requisitos de flujo de bits: (1) dentro de cada imagen, cada grupo de bloques de arbol se codifica de una manera que requiere la misma cantidad de tiempo de decodificacion (no solo en el modelo HRD, sino tambien para los decodificadores del mundo real), donde los datos codificados del primer grupo de bloques de arbol se considera que incluyen todas las unidades NAL (capa de abstraccion de red) no VCL (capa de codificacion de video) en la misma unidad de acceso y antes de la primera unidad NAL VCL; (2) dentro de cada imagen, el numero de bits para cada grupo de bloques de arbol es identico, en el que los datos codificados del primer grupo de bloques de arbol se considera que 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 la especificacion de un comportamiento CPB basado en subimagen estan asociados a al menos los siguientes problemas: (1) El requisito de que la cantidad de datos codificados para cada grupo de bloques de arbol en una imagen codificada es identica y dificil de lograr con un rendimiento de codificacion equilibrado (donde los grupos de bloques de arbol para areas con una textura mas detallada o actividad de movimiento en una imagen pueden usar mas bits). (2) Cuando se incluye mas de un grupo de bloques de arbol en una porcion, no puede haber ninguna manera facil de dividir los bits codificados de bloques de arbol pertenecientes a diferentes grupos de bloques de arbol y enviarlos por separado en el lado del codificador y eliminarlos por separado de la CPB (es decir, decodificarlos por separado).
Para hacer frente a los problemas anteriores, esta divulgacion describe un diseno generico para el apoyo del comportamiento CPB basado en subimagen, con diversas alternativas. En algunos ejemplos, las caracteristicas de las tecnicas CPB basadas en subimagen de esta divulgacion pueden incluir aspectos de las siguientes tecnicas: (1) Cada subimagen puede incluir varios bloques de una imagen codificada continua en orden de decodificacion. Un bloque de codificacion puede ser identico a un bloque de arbol o un subconjunto de un bloque de arbol; (2) La codificacion de subimagenes y la asignacion de bits en diferentes subimagenes en una imagen puede realizarse como de costumbre, sin asumir o requerir que cada subimagen (es decir, grupo de bloques de arbol) en una imagen se codifica con la misma cantidad de bits. En consecuencia, el tiempo de eliminacion de la CPB para cada subimagen se puede senalizar en el flujo de bits en lugar de derivarse de acuerdo a los tiempos de eliminacion de CPB a nivel de imagen senalados; (3) Cuando se incluye mas de una subimagen en una porcion, la alineacion de bytes se puede aplicar al final de cada subimagen, por el contrario, por ejemplo, de la alineacion de bytes para las piezas en HEVC WD6. Ademas, el punto de entrada de cada subimagen, excepto para el primero en la imagen codificada, se puede senalizar, a diferencia, de la alineacion de byte para las piezas en HEVC WD6. El valor senalado recibido puede ser indicativo de la alineacion de bytes de al menos una de las subimagenes dentro de un conjunto mayor de los datos de video, tales como una porcion, una pieza, o una trama, por ejemplo. Cada una de las caracteristicas (1 )-(3) se puede aplicar de forma independiente o en combinacion con las demas.
En un ejemplo, la operacion HRD, incluyendo el comportamiento CPB basado en subimagen, se puede resumir como se indica a continuacion: Cuando la senalizacion indica que el comportamiento CPB basado en subimagen esta en uso, por ejemplo, a traves de una senalizacion a nivel de secuencia de un elemento de sintaxis sub_pic_cpb_flag igual a 1, la eliminacion o decodificacion de la CPB se basa en la subimagen, o de forma equivalente, la unidad de decodificacion, que puede ser una unidad de acceso o un subconjunto de una unidad de acceso. En otras palabras, cada vez que una unidad de decodificacion, ya sea una unidad de acceso o un subconjunto de una unidad de acceso, se elimina de la CPB para la decodificacion, el tiempo de eliminacion de una unidad de decodificacion de la CPB puede obtenerse a partir de un retardo de eliminacion de CPB inicial senalado y el retardo de la eliminacion de CPB senalizado para la unidad de decodificacion. Se especifica una CPB de flujo inferior como la condicion en la que el tiempo de eliminacion de CPB nominal de la unidad de decodificacion m tr,n(m) es menor que el tiempo de eliminacion de CPB final de la unidad de decodificacion m taf(m) para cualquier valor de m. En un ejemplo, cuando un elemento de sintaxis lowdelayhrdflag es igual a 0, se requiere que la CPB no este nunca con un flujo inferior.
En un ejemplo, los procesos de salida y eliminacion de DPB todavfa pueden operar a nivel de imagen o nivel de unidad de acceso, es decir, cada vez que toda la imagen decodificada se emite o se elimina de la DPB. La eliminacion de imagenes decodificadas de la DPB puede suceder instantaneamente en el tiempo de eliminacion de la CPB de la primera unidad de decodificacion de la unidad de acceso n (que contiene la imagen actual).
La figura 1 es un diagrama de bloques que ilustra un sistema de codificacion y decodificacion de video ejemplar 10 que puede utilizar tecnicas para el almacenamiento de una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, para obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones.
Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que transmite video codificado a un dispositivo de destino 14 a traves de un canal de comunicacion 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 comunicacion inalambricos, tales como
5
10
15
20
25
30
35
40
45
50
55
60
65
microtelefonos inalambricos, los denominados radiotelefonos celulares o via satelite, o cualquier dispositivo inalambrico que pueda comunicar informacion de video a traves de un canal de comunicacion 16, donde el canal de comunicacion 16 es inalambrico en este caso. Sin embargo, las tecnicas de esta divulgacion no estan limitadas necesariamente a aplicaciones o configuraciones inalambricas. Por ejemplo, estas tecnicas pueden aplicarse a las radiodifusiones televisivas inalambricas, a las transmisiones televisivas por cable, a las transmisiones televisivas via satelite, a las transmision de video por Internet, al video digital codificado que esta codificado en un medio de almacenamiento y a otros escenarios. Por consiguiente, el canal de comunicacion 16 puede comprender cualquier combinacion de medios inalambricos, cableados o de almacenamiento adecuados para la transmision o el almacenamiento de datos de video codificados.
Como alternativa, los datos codificados pueden transmitirse del transmisor 24 a un dispositivo de almacenamiento 34. De forma similar, a los datos codificados se puede acceder desde el dispositivo de almacenamiento 34 mediante el receptor 26. El dispositivo de almacenamiento 34 puede incluir cualquiera de una diversidad de medios de almacenamiento de datos de acceso distribuido o local, tales como una unidad de disco, discos Blu-ray, discos DVD, discos CD-ROM, memoria flash, memoria volatil o no volatil, u otros medios adecuados cualesquiera de almacenamiento digital, para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento 34 puede corresponder a un servidor de ficheros, un servidor virtual, un centro de datos, una red redundante de centros de datos, u otro dispositivo de almacenamiento intermedio que pueda retener el video codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de video almacenados procedentes del dispositivo de almacenamiento 34, mediante flujos de transmision o descarga. Una implementacion del servidor de ficheros del dispositivo de almacenamiento 34, o una porcion del mismo, puede ser cualquier tipo de servidor capaz de almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo de destino 14. Los servidores ejemplares de ficheros incluyen un servidor de la Red (por ejemplo, para una sede de la Red), un servidor del 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 video codificados a traves de cualquier conexion de datos estandar, incluyendo una conexion a Internet. Esto puede incluir un canal inalambrico (por ejemplo, una conexion de Wi-Fi), una conexion cableada (por ejemplo, dSl, modem de cable, etc.), o una combinacion de ambos que sea adecuada para acceder a datos de video codificado almacenados en un dispositivo de almacenamiento remoto o no local 34. La transmision de datos de video codificado desde el dispositivo de almacenamiento 34 puede ser una transmision por flujo, una transmision de descarga o una combinacion de ambas.
En el ejemplo de la figura 1, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20, un modulador/demodulador (modem) 22 y un transmisor 24. El dispositivo de destino 14 incluye un receptor 26, un modem 28, un decodificador de video 30 y un dispositivo de visualizacion 32. De acuerdo con esta divulgacion, el codificador de video 20 del dispositivo de origen 12 puede configurarse para aplicar las tecnicas para el almacenamiento de una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, para obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion 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 video de una fuente de video externa en lugar de una fuente de video integrada 18, tal como una camara externa. Asimismo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualizacion externo, en lugar de incluir un dispositivo de visualizacion integrado 32.
El sistema ilustrado 10 de la figura 1 es simplemente un ejemplo. Las tecnicas para el almacenamiento de una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, para obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas pueden realizarse por cualquier dispositivo de codificacion y/o decodificacion de video digital. Aunque, por lo general, las tecnicas de esta divulgacion se llevan a cabo por un dispositivo de codificacion de video, las tecnicas tambien pueden llevarse a cabo mediante un codificador/decodificador de video, denominado habitualmente "codec". Ademas, las tecnicas de esta divulgacion tambien pueden llevarse a cabo por un preprocesador de video. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de tales dispositivos de codificacion, donde el dispositivo de origen 12 genera datos de video codificados para su transmision al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera casi simetrica, de modo que cada uno de los dispositivos 12, 14 incluye componentes de codificacion y de decodificacion de video. Por tanto, el sistema 10 puede soportar una transmision de video unidireccional o bidireccional entre los dispositivos de video 12, 14, por ejemplo para el flujo continuo de video, la reproduccion de video, la radiodifusion de video o la videotelefonfa.
La fuente de video 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de video, tal como una camara de video, un archivo de video que contiene video grabado previamente y/o video procedente de un proveedor de contenido de video. Como una alternativa adicional, la fuente de video 18 puede generar video fuente como datos basados en graficos de ordenador, o una combinacion de video en directo, video de un archivo y video
5
10
15
20
25
30
35
40
45
50
55
60
65
generado por ordenador. En algunos casos, si la fuente de video 18 es una videocamara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados telefonos con camara o videotelefonos. Sin embargo, como se ha mencionado anteriormente, las tecnicas descritas en esta divulgacion pueden aplicarse a la codificacion de video en general, y pueden aplicarse a aplicaciones inalambricas y/o cableadas. En cada caso, el video grabado, pregrabado o generado por ordenador puede codificarse por el codificador de video 20. La informacion de video codificado puede modularse despues por el modem 22, segun una norma de comunicacion, y transmitirse al dispositivo de destino 14 a traves del transmisor 24. El modem 22 puede incluir varios mezcladores, filtros, amplificadores u otros componentes disenados para la modulacion de senales. El transmisor 24 puede incluir circuitos disenados para transmitir datos, incluyendo amplificadores, filtros y una o mas antenas.
El receptor 26 del dispositivo de destino 14 recibe informacion a traves del canal 16, y el modem 28 desmodula la informacion. De nuevo, el proceso de codificacion de video puede implementar una o mas de las tecnicas descritas en el presente documento para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, para obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones. La informacion comunicada a traves del canal 16 puede incluir informacion sintactica definida por el codificador de video 20, que tambien puede usarse por el decodificador de video 30, que incluye elementos sintacticos que describen caracterfsticas y/o el procesamiento de macrobloques, unidades de arbol de codificacion, porciones, u otras unidades codificadas, por ejemplo grupos de imagenes (GOP). El dispositivo de visualizacion 32 muestra los datos de video decodificados a un usuario y puede comprender cualquiera de una variedad de dispositivos de visualizacion, tal como un tubo de rayos catodicos (CRT), una pantalla de cristal lfquido (LCD), una pantalla de plasma, una pantalla de diodos organicos de emision de luz (OLED) u otro tipo de dispositivo de visualizacion.
En el ejemplo de la figura 1, el canal de comunicacion 16 puede comprender cualquier medio de comunicacion inalambrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o mas lfneas de transmision ffsica, o cualquier combinacion de medios inalambricos y cableados. El canal de comunicacion 16 puede formar parte de una red basada en paquetes, tal como una red de area local, una red de area extensa o una red global tal como Internet. El canal de comunicacion 16 representa generalmente cualquier medio de comunicacion adecuado, o un conjunto de diferentes medios de comunicacion, para transmitir datos de video desde el dispositivo de origen 12 hasta el dispositivo de destino 14, incluyendo cualquier combinacion adecuada de medios cableados o inalambricos. El canal de comunicacion 16 puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion 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, tal como en el dispositivo de almacenamiento 34, en lugar de transmitir los datos. Asimismo, el dispositivo de destino 14 puede estar configurado para recuperar datos codificados del dispositivo de almacenamiento 34 o un medio o dispositivo de almacenamiento.
El codificador de video 20 y el decodificador de video 30 pueden funcionar segun una norma de compresion de video, tal como las descritas en el presente documento. Sin embargo, las tecnicas de esta divulgacion no estan limitadas a ninguna norma de codificacion particular. Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de video 20 y el decodificador de video 30 pueden estar integrados en un codificador y un decodificador de audio, y pueden incluir unidades de multiplexacion y desmultiplexacion adecuadas, u otro hardware y software, para llevar a cabo la codificacion tanto de audio como de video en un flujo de datos comun o en flujos de datos diferentes. Si procede, las unidades de multiplexacion y desmultiplexacion pueden ajustarse al protocolo de multiplexacion ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador de video 20 y el decodificador de video 30 pueden implementarse como cualquiera de una variedad de sistemas de circuitos de codificacion adecuados, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados de aplicacion especffica (ASIC), matrices de puertas de campo programable (FPGA), dispositivos de comunicacion inalambricos que incluyen un dispositivo de codificacion de video, tal como un codificador o un decodificador, logica discreta, software, hardware, firmware o cualquier combinacion de los mismos. El codificador de video 20 y el decodificador de video 30 pueden incluirse en uno o mas codificadores o decodificadores, donde cualquiera de los mismos puede estar integrado como parte de un codificador/decodificador combinado (codec) en una camara respectiva, ordenador, dispositivo movil, dispositivo de abonado, dispositivo de radiodifusion, codificador, servidor, u otro dispositivo.
Una secuencia de video incluye normalmente una serie de tramas de video. Un grupo de imagenes (GOP) comprende generalmente una serie de una o mas tramas de video. Un GOP puede incluir datos sintacticos en la cabecera del GOP, en la cabecera de uno o mas cuadros del GOP, o en otras ubicaciones, que indican el numero de tramas incluidas en el GOP. Cada trama puede incluir datos sintacticos de trama que describen el modo de codificacion de la trama respectiva. Un codificador de video 20 actua habitualmente sobre bloques de video, tambien denominados como unidades de codificacion (CU), en las tramas de video individuales con el fin de codificar los datos de video. Un bloque de video puede corresponder a una unidad de codificacion mayor (LCU) o una particion
5
10
15
20
25
30
35
40
45
50
55
60
65
de una LCU. Los bloques de video pueden tener tamanos fijos o variables y pueden tener un tamano diferente segun una norma de codificacion especffica. Cada trama de video puede incluir una pluralidad de fragmentos. Cada fragmento puede incluir una pluralidad de LCU, que pueden disponerse en particiones, tambien denominadas como subCUs. Una LCU tambien puede denominarse como una unidad de arbol de codificacion.
Como un ejemplo, la norma ITU-T H.264 soporta intra-prediccion para varios tamanos de bloque, tales como 16 x 16, 8 x 8 o 4 x 4 para componentes de luminancia, y 8 x 8 para componentes de crominancia, asf como inter- prediccion en varios tamanos de bloque, tales como 16 x 16, 16 x 8, 8 x 16, 8 x 8, 8 x 4, 4 x 8 y 4 x 4 para componentes de luminancia y tamanos escalados correspondientes para componentes de crominancia. En esta divulgacion, "NxN" y "N por N" pueden usarse de manera intercambiable para hacer referencia a las dimensiones de pixel del bloque en lo que respecta a la dimension vertical y la dimension horizontal, por ejemplo 16x16 pfxeles o 16 por 16 pfxeles. En general, un bloque 16 x 16 tendra 16 pfxeles en la direccion vertical (y = 16) y 16 pfxeles en la direccion horizontal (x = 16). Asimismo, un bloque NxN tiene generalmente N pfxeles en la direccion vertical y N pfxeles en la direccion horizontal, donde N representa un valor entero no negativo. Los pfxeles de un bloque pueden estar ordenados en filas y columnas. Ademas, los bloques no necesitan tener necesariamente el mismo numero de pfxeles en la direccion horizontal y en la direccion vertical. Por ejemplo, los bloques pueden comprender N x M pfxeles, donde M no es necesariamente igual a N.
Los bloques de video pueden comprender bloques de datos de pixel en el dominio de pixel, o bloques de coeficientes de transformada en el dominio de transformada, por ejemplo, tras la aplicacion de una transformada, tal como una transformada discreta del coseno (DCT), una transformada de numero entero, una transformada de ondfcula o una transformada conceptualmente similar, a los datos residuales de bloque de video que representan diferencias de pixel entre bloques de video codificados y bloques de video predictivos. En algunos casos, un bloque de video puede comprender bloques de coeficientes de transformada cuantificados en el dominio de transformada.
Bloques de video mas pequenos pueden proporcionar una mejor resolucion y pueden usarse en ubicaciones de una trama de video que incluyen altos niveles de detalle. En general, los bloques y las diversas particiones, denominadas en ocasiones subbloques, pueden considerarse bloques de video. Ademas, un fragmento puede considerarse una pluralidad de bloques de video, tales como bloques y/o subbloques. Cada fragmento puede ser una unidad de una trama de video que puede decodificarse de manera independiente. Como alternativa, las propias tramas pueden ser unidades decodificables, u otras partes de un cuadro pueden definirse como unidades decodificables. El termino "unidad codificada" puede referirse a cualquier unidad de una trama de video que puede decodificarse de manera independiente, tal como una trama completa o un fragmento de una trama, a un grupo de imagenes (GOP) denominado tambien como una secuencia de video codificada, o a otra unidad que pueda decodificarse de manera independiente definida segun tecnicas de codificacion aplicables.
Tras una codificacion intra-predictiva o inter-predictiva para generar datos predictivos y datos residuales, y tras cualquier transformada (tal como la transformada de numero entero 4x4 u 8x8 usada en la norma H.264/AVC o una transformada discreta del coseno DCT) para generar coeficientes de transformada, puede llevarse a cabo la cuantificacion de los coeficientes de transformada. La cuantificacion se refiere generalmente a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos o todos los coeficientes. Por ejemplo, un valor de n bits puede redondearse por lo bajo a un valor de m bits durante la cuantificacion, donde n es mayor que m.
HECV se refiere a un bloque de datos de video como una unidad de codificacion, que puede incluir una o mas unidades de prediccion (PU) y/o una o mas unidades de transformada (TU). Esta divulgacion tambien puede usar el termino "bloque" para referirse a una CU, una PU o una TU. Los datos sintacticos de un flujo de bits pueden definir la unidad de codificacion mas grande (LCU), que es la mayor unidad de codificacion en lo que respecta al numero de pfxeles. En general, una CU tiene un proposito similar a un macrobloque de H.264, excepto que una CU no tiene una distincion tamano. Por lo tanto, una CU puede dividirse en subCUs. En general, las referencias de esta divulgacion a una CU pueden referirse a la unidad de codificacion mas grande de una imagen o a una subCU de una LCU. Una LCU puede dividirse en varias subCUs y cada subCU puede dividirse adicionalmente en varias subCUs. Los datos sintacticos de un flujo de bits pueden definir el numero maximo de veces que puede dividirse una LCU, lo que se denomina profundidad de CU. Por consiguiente, los datos sintacticos tambien pueden definir la unidad de codificacion menor (SCU).
Una LCU puede asociarse a una estructura de datos de arbol cuaternario. En general, una estructura de datos de arbol cuaternario incluye un nodo por CU, donde el nodo rafz corresponde a la LCU. Si una CU se divide en cuatro subCUs, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las subCUs. Cada nodo de la estructura de datos de arbol cuaternario puede proporcionar datos sintacticos para la CU correspondiente. Por ejemplo, un nodo del arbol cuaternario puede incluir un indicador de division, que indica si la CU correspondiente al nodo esta dividida en varias subCUs. Los elementos sintacticos de una CU pueden definirse de manera recursiva y pueden depender de si la CU esta dividida en varias subCUs. Si una CU no esta dividida adicionalmente, se denomina CU hoja. En esta divulgacion, 4 subCUs de una CU hoja tambien se denominaran CU hoja aunque no haya una division explfcita de la CU hoja original. Por ejemplo, si una CU con un
5
10
15
20
25
30
35
40
45
50
55
60
65
tamano de 16 x 16 no se divide adicionalmente, las cuatro subCUs 8 x 8 tambien se denominaran CU hoja aunque la CU 16 x 16 no se haya dividido.
Ademas, las TU de las CUs hoja tambien pueden asociarse a estructuras de datos respectivas de arbol cuaternario. Es decir, una CU hoja puede incluir un arbol cuaternario que indica como la CU hoja esta dividida en varias TU. Esta divulgacion hace referencia al arbol cuaternario que indica como una LCU esta divida como un arbol cuaternario de CU, indicando el arbol cuaternario como una CU hoja esta dividida en varias TU como un arbol cuaternario de TU. El nodo rafz de un arbol cuaternario de TU corresponde generalmente a una CU hoja, mientras que el nodo rafz de un arbol cuaternario de CU corresponde generalmente a una LCU. Las TUs del arbol cuaternario de TU que no estan divididas pueden denominarse Tu hoja.
Una CU hoja puede incluir una o mas unidades de prediccion (PUs). En general, una PU representa la totalidad o una parte de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU esta codificada en el modo de inter-prediccion, 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 resolucion para el vector de movimiento (por ejemplo, precision de pfxeles de un cuarto o precision de pfxeles de un octavo), una trama de referencia a la que apunta el vector de movimiento y/o una lista de referencia (por ejemplo, la Lista 0 o la Lista 1) para el vector de movimiento. Los datos de la CU hoja que definen la(s) PU(s) tambien pueden describir, por ejemplo, una division de la CU en una o mas PUs. Los modos de division pueden diferir en funcion de si la CU esta sin codificar, del modo de intra-prediccion codificado o del modo de inter-prediccion codificado. En la intra- codificacion, una PU puede tratarse de mismo modo que una unidad de transformada de hoja descrita a continuacion.
Una CU hoja puede incluir una o mas unidades de transformada (TUs). Las unidades de transformada pueden especificarse usando una estructura de arbol cuaternario de TU, como la descrita anteriormente. Es decir, un indicador de division puede indicar si una CU hoja esta dividida en cuatro unidades de transformada. Despues, cada unidad de transformada puede dividirse adicionalmente en 4 subTUs. Cuando una TU no esta dividida adicionalmente, puede denominarse como TU hoja. En general, un indicador de division puede indicar que una TU hoja esta dividida en varias TUs de forma cuadrada. Con el fin de indicar que una TU esta dividida en varias TUs que no tienen una forma cuadrada, pueden incluirse otros datos sintacticos, por ejemplo datos sintacticos que indican que las TUs van a dividirse segun la transformada de arbol cuaternario no cuadrada (NSQT).
Generalmente, en lo que respecta a la intra-codificacion, todas las TU hoja que pertenecen a una CU hoja comparten el mismo modo de intra-prediccion. Es decir, el mismo modo de intra-prediccion se aplica generalmente para calcular valores predichos para todas las TUs de una CU hoja. En lo que respecta a la intra-codificacion, un codificador de video puede calcular un valor residual para cada TU hoja usando el modo de intra-prediccion, como una diferencia entre la parte de los valores predictivos correspondientes a la TU y el bloque original. El valor residual puede transformarse, cuantificarse y examinarse. En lo que respecta a la inter-codificacion, un codificador de video puede llevar a cabo la prediccion en el nivel de PU y puede calcular un valor residual para cada PU. Los valores residuales correspondientes a una CU hoja pueden transformarse, cuantificarse y examinarse. En lo que respecta a la inter-codificacion, una TU hoja puede ser mayor o menor que una PU. En lo que respecta a la intra-codificacion, una PU puede estar coubicada con una TU hoja correspondiente. En algunos ejemplos, el tamano maximo de una TU hoja puede ser el tamano de la CU hoja correspondiente.
En general, esta divulgacion usa los terminos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique lo contrario. En general, las tecnicas de esta divulgacion se refieren a transformar, cuantificar, escanear y codificar por entropfa datos de una CU. A modo de ejemplo, las tecnicas de esta divulgacion incluyen la seleccion de una transformada a utilizar para transformar un valor residual de un bloque de intra-prediccion basado en un modo de intra-prediccion utilizado para predecir el bloque. Esta divulgacion tambien usa la expresion "transformada direccional" o "transformada disenada" para referirse a tal transformada que depende de la direccion del modo intra-prediccion. Es decir, un codificador de video puede seleccionar una transformada direccional para aplicarse a una unidad de transformada (TU). Como se ha senalado anteriormente, la intra- prediccion incluye la prediccion de la TU de una CU actual de una imagen de CUs y TUs codificadas previamente de la misma imagen. Mas especfficamente, un codificador de video puede intra-predecir una TU actual de una imagen usando un modo de intra-prediccion particular.
Tras la cuantificacion puede llevarse a cabo la codificacion de entropfa de los datos cuantificados, por ejemplo segun la codificacion de longitud variable adaptable al contenido (CAVLC), la codificacion aritmetica binaria adaptable al contexto (CABAC), la codificacion de entropfa mediante division en intervalos de probabilidad (PIPE) u otra metodologfa de codificacion de entropfa. Una unidad de procesamiento configurada para la codificacion de entropfa, u otra unidad de procesamiento, puede llevar a cabo otras funciones de procesamiento, tal como la codificacion por longitud de series de cero de coeficientes cuantificados y/o la generacion de informacion sintactica, tal como valores de patron de bloque codificado (CBP), el tipo de macrobloque, el modo de codificacion, el tamano maximo de macrobloque para una unidad codificada (tal como una trama, un fragmento, un macrobloque o una secuencia), u otra informacion de sintaxis.
5
10
15
20
25
30
35
40
45
50
55
60
65
El codificador de video 20 puede configurarse para llevar a cabo una cuantificacion inversa y una transformacion inversa para almacenar bloques decodificados que van a usarse como referencia para predecir bloques posteriores, por ejemplo en la misma trama o tramas que van a predecirse de manera temporal. Ademas, el codificador de video 20 puede enviar datos sintacticos, tales como datos sintacticos basados en bloques, datos sintacticos basados en tramas y datos sintacticos basados en GOP, al decodificador de video 30, por ejemplo, en una cabecera de trama, una cabecera de bloque, una cabecera de fragmento o una cabecera de GOP. Los datos sintacticos de GOP pueden describir un cierto numero de tramas en el GOP respectivo, y los datos sintacticos de trama pueden indicar un modo de codificacion/prediccion usado para codificar la trama correspondiente.
El codificador de video 20 y el decodificador de video 30 pueden implementarse como cualquiera entre una amplia variedad de sistemas de circuitos codificadores o decodificadores adecuados, segun corresponda, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especfficos de la aplicacion (ASIC), matrices de compuertas de campo programable (FPGA), circuitos de logica discreta, software, hardware, firmware o cualquier combinacion de los mismos. Cada uno, entre el codificador de video 20 y el decodificador de video 30, puede estar incluido en uno o mas codificadores o decodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/decodificador (CODEC) de video combinado. Un aparato que incluye un codificador de video 20 y/o un decodificador de video 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicacion inalambrico, tal como un telefono celular.
De acuerdo con las tecnicas de esta divulgacion, el codificador de video 20 y/o el decodificador de video 30 pueden configurarse para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones.
Las siguientes definiciones se proporcionan con respecto al codificador de video 20 ejemplar y/o el decodificador de video 30 configurados para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones.
Para los fines de la descripcion de un conjunto de ejemplos, la expresion "unidad de decodificacion" se puede definir como se indica a continuacion:
Unidad de decodificacion: una unidad de acceso o un subconjunto de una unidad de acceso. Si sub_pic_cpb_flag es igual a 0, una unidad de decodificacion es una unidad de acceso; de otro modo, una unidad de decodificacion, es un subconjunto de una unidad de acceso. Cuando sub_pic_cpb_flag es igual a 1, la primera unidad de decodificacion en una unidad de acceso incluye todas las unidades NAL no VCL en la unidad de acceso y la primera unidad NAL VCL en la misma unidad de acceso, y cada otra unidad de decodificacion en la unidad de acceso es una unidad NAL de porcion codificada que no es la primera unidad NAL de porcion codificada en la unidad de acceso.
Para fines de descripcion de un segundo conjunto de ejemplos, la expresion "unidad de decodificacion" se puede definir como se indica a continuacion, con una definicion adicional del termino "subimagen", como se usa en la definicion ejemplar correspondiente de la "unidad de decodificacion":
Unidad de decodificacion: una unidad de acceso o un subconjunto de una unidad de acceso. Si sub_pic_cpb_flag es igual a 0, una unidad de decodificacion es una unidad de acceso; de otro modo, una unidad de decodificacion, es un subconjunto de una unidad de acceso. Cuando sub_pic_cpb_flag es igual a 1, la primera unidad de decodificacion en una unidad de acceso incluye todas las unidades NAL no VCL en la unidad de acceso y la primera subimagen de la imagen en la misma unidad de acceso, y cada otra unidad de decodificacion en la unidad de acceso es una subimagen que no es la primera subimagen en la unidad de acceso.
Sub-imagen: Varios bloques de una imagen codificada continua en orden de decodificacion.
En la definicion de acuerdo con el segundo conjunto de ejemplos proporcionados anteriormente, cuando se incluye mas de una subimagen en una porcion, la alineacion de bytes se puede aplicar al final de cada subimagen, por el contrario, por ejemplo, de la alineacion de bytes para las piezas en HEVC WD6. Ademas, se puede senalizar el punto de entrada de cada subimagen, excepto para el primero en la imagen codificada.
En algunas alternativas, cuando el flujo de bits contiene multiples capas o vistas escalables, una unidad de decodificacion puede ser definida como una representacion de capa o un componente de vista. Todas las unidades
5
10
15
20
25
30
35
40
45
50
55
60
65
no VCL anteriores a la primera unidad NAL VCL de una representacion de capa o un componente de vista tambien pertenecen a la unidad de decodificacion que contiene la representacion de capa o el componente de vista.
Las siguientes descripciones del funcionamiento del decodificador de referencia hipotetico (HRD) ejemplar, la operacion ejemplar de una memoria intermedia de imagen codificada, la temporizacion ejemplar de una llegada de flujo de bits, la temporizacion ejemplar de la eliminacion de la unidad de decodificacion, la decodificacion ejemplar de una unidad de decodificacion, la operacion ejemplar de una memoria intermedia de imagenes decodificadas, la eliminacion ejemplar de las imagenes de una memoria intermedia de imagenes decodificadas, la salida de imagen ejemplar, y el marcado y almacenamiento ejemplar de imagen decodificada actual se proporcionan para ilustrar ejemplos del codificador de video 20 y/o el decodificador de video 30 que pueden configurarse para almacenar una o mas de decodificacion de unidades de datos de video en una memoria intermedia de imagenes, obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar los datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones. Las operaciones pueden definirse o realizarse de manera diferente, en otros ejemplos. De esta manera, el codificador de video 20 y/o el decodificador de video 30 pueden estar configurados para funcionar de acuerdo con los diversos ejemplos de operaciones HRD que se describen a continuacion.
Como un ejemplo, una operacion HRD se puede describir en resumen como se indica a continuacion: el tamano CPB (numero de bits) es CpbSize[SchedSelldx]. El tamano DPB (numero de memorias intermedias de almacenamiento de imagenes) para la capa temporal X es max_dec_pic_buffering[X] + 1 para cada X en el intervalo de 0 a max_temporal_layers_minus1, inclusive. En este ejemplo, el HRD puede operar como se indica a continuacion: los datos asociados a las unidades de acceso que fluyen en la CPB de acuerdo con una programacion de llegada especificado pueden ser entregarse por el programador de flujo hipotetico (HSS), es decir, un programador de la entrega. Los datos asociados a cada unidad de decodificacion pueden eliminarse y decodificarse instantaneamente por el proceso de decodificacion instantanea en los tiempos de eliminacion de CPB. Cada imagen decodificada puede colocarse en la DPB. Una imagen decodificada puede eliminarse de la DPB por ultimo en el tiempo de salida de DPB o el momento en que ya no sea necesario para una referencia inter-prediccion.
La aritmetica en estos ejemplos se puede hacer con valores reales, de modo que no se propaguen errores de redondeo. Por ejemplo, el numero de bits en una CPB justo antes o despues de la eliminacion de una unidad de decodificacion no es necesariamente un numero entero.
La variable tc se puede derivar como se indica a continuacion y puede denominarse un pulso de reloj: tc = num_units_in_tick time_scale (C-1)
Lo siguiente puede especificarse para expresar las limitaciones en una modificacion anexo ejemplar de HEVC:
dejar que la unidad de acceso n sea la enesima unidad de acceso en el orden de decodificacion siendo la
primera unidad de acceso una unidad de acceso 0;
dejar que la imagen n sea la imagen codificada o la imagen decodificada de la unidad de acceso n;
dejar que la unidad de decodificacion m sea la m-esima unidad de decodificacion en el orden de decodificacion
siendo la primera unidad de decodificacion una unidad de decodificacion 0.
Algunas tecnicas de ejemplo para la operacion de una memoria intermedia de imagen codificada (CPB) se describen como se indica a continuacion. De acuerdo con algunas tecnicas de codificacion de video, pueden implementarse diversos procedimientos de operacion CPB. Las especificaciones en la seccion de HEVC WD6 en las operaciones del CPB pueden ser modificados por esta divulgacion, y se pueden aplicar de forma independiente a cada conjunto de parametros CPB que esta presente y a los puntos de conformidad tanto de Tipo I como de tipo II.
Algunos ejemplos que implican la temporizacion de llegada de flujo de bits se describen como se indica a continuacion. El HRD se puede inicializar en cualquiera de los mensajes de informacion de mejora complementaria del perfodo de almacenamiento en memoria intermedia. Antes de la inicializacion, la CPB puede estar vacfa. Despues de la inicializacion, el HRD puede no inicializarse de nuevo por los posteriores mensajes SEI del periodo de almacenamiento intermedio.
La unidad de acceso que se asocia al mensaje SEI del periodo de almacenamiento intermedio que inicializa la CPB puede denominarse como la unidad de acceso 0. Cada unidad de decodificacion puede denominarse como una unidad de decodificacion m, donde el numero m identifica la unidad de decodificacion particular. La primera unidad de decodificacion en orden de decodificacion en la unidad de acceso 0 puede denominarse como la unidad de decodificacion 0. El valor de m puede aumentarse en 1 para cada unidad de decodificacion posterior en orden de decodificacion.
5
10
15
20
25
30
35
40
45
50
55
60
65
El momento en el que el primer bit de la unidad de decodificacion m comienza a entrar en la CPB puede denominarse como el tiempo de llegada inicial tai(m). La hora de llegada inicial de las unidades de decodificacion puede obtenerse como se indica a continuacion:
si la unidad de decodificacion es la unidad decodificacion 0, tai(0) = 0,
de otro modo (la unidad de decodificacion en la unidad de decodificacion m con m> 0), puede aplicarse lo siguiente:
si cbr_flag[SchedSelldx] es igual a 1, el tiempo de llegada inicial para la unidad de decodificacion m, es igual al tiempo final de la llegada (que se obtiene a continuacion) de la unidad de decodificacion m - 1, es decir,
tai(m) = taf(m - 1) (C-2)
de otro modo (cbr_flag[SchedSelldx] es igual a 0), el tiempo de llegada inicial de la unidad de decodificacion m se obtiene por
tai(m) = Max(taf(m 1), tai,mastemprano(m)) (C-3)
donde tai,mastemprano(m) se obtiene como se indica a continuacion:
Si la unidad de decodificacion m no es la primera unidad de decodificacion de un perfodo de almacenamiento en memoria intermedia posterior, tai,mastemprano(m) puede obtenerse como:
tai mastemprano(m) = trn(m) - (initial_cpb_removal_delay[SchedSelldx] + initial_cpb_removal_delay_offset[ SchedSelldx]) - 90000 (C-4)
siendo tr,n(m) el tiempo de eliminacion nominal de la unidad de decodificacion m de la CPB como se especifica e initial_cpb_removal_delay[SchedSelldx] e initial_cpb_removal_delay_offset[SchedSelldx] especificandose en el mensaje SEI del periodo de almacenamiento intermedio anterior;
de otro modo (la unidad de decodificacion n no es la primera unidad de decodificacion de un perfodo de almacenamiento en memoria intermedia posterior), tai,mastemprano(m) puede obtenerse como
tai mastemprano(m) = trn(m) - (initial_cpb_removal_delay[SchedSelldx] - 90000) (C-5)
estando initial_cpb_removal_delay [SchedSelldx] especificado en el mensaje SEI del periodo de almacenamiento intermedio asociado a la unidad de acceso que contiene la unidad de decodificacion m.
El tiempo de llegada final para la unidad de decodificacion m puede obtenerse por:
taf( m ) = tai(m) + b(m) - BitRate[SchedSelldx] (C-6)
donde b (m) puede ser el tamano en bits de la unidad de decodificacion m, contando los bits de las unidades NAL VCL y las unidades NAL de datos de relleno para el punto de conformidad de Tipo I o todos los bits del flujo de bits de Tipo II para el punto de la conformidad de Tipo II.
En algunos ejemplos, los valores de SchedSelldx, BitRate[SchedSelldx], y CpbSize[SchedSelldx] pueden limitarse como se indica a continuacion:
Si el contenido de los conjuntos de parametros de secuencia activa para la unidad de acceso que contiene la unidad de decodificacion m y la unidad de acceso anterior difieren, el HSS selecciona un valor SchedSelldx1 de SchedSelldx de entre los valores de SchedSelldx proporcionados en el conjunto de parametros de secuencia activa para la unidad de acceso que contiene la unidad de decodificacion m que se traduce en BitRate[SchedSelldx1] o CpbSize [SchedSelldx1] para la unidad de acceso que contiene la unidad de decodificacion m. El valor de BitRate[SchedSelldx1] o CpbSize [SchedSelldx1] puede diferir del valor de BitRate[SchedSelldx0] o CpbSize [SchedSelldx0] para el valor de SchedSelldx0 de SchedSelldx que estaba en uso para la unidad de acceso anterior;
de otro modo, el HSS sigue funcionando con los valores anteriores de SchedSelldx, BitRate[SchedSelldx] y CpbSize[SchedSelldx].
Cuando el HSS selecciona los valores de BitRate[SchedSelldx] o CpbSize [SchedSelldx] que difieren de los de la unidad de acceso anterior, puede aplicarse lo siguiente en algunos ejemplos:
la variable BitRate[SchedSelldx] entra en vigor en el momento tai(m) la variable de CpbSize[SchedSelldx] entra
5
10
15
20
25
30
35
40
45
50
55
60
65
en vigor como se indica a continuacion:
si el nuevo valor de CpbSize[SchedSelldx] excede el tamano de CPB anterior, entra en vigor en el momento
tai(m),
de otro modo, el nuevo valor de CpbSize[SchedSelldx] entra en vigor en el momento de la eliminacion de la CPB de la ultima unidad de decodificacion de la unidad de acceso que contiene la unidad de decodificacion m.
Cuando sub_pic_cpb_flag es igual a 1, el tiempo de llegada de CPB inicial de la unidad de acceso n tai(n) puede ajustarse en el tiempo de llegada de CPB inicial de la primera unidad de decodificacion en la unidad de acceso n, y el tiempo de llegada de CPB final de la unidad de acceso n tai(n) puede ajustarse en el tiempo de llegada de CPB final de la ultima unidad de decodificacion en la unidad de acceso n.
Algunos ejemplos que implican la temporizacion de la eliminacion de la unidad de decodificacion y la decodificacion de una unidad de decodificacion se describen como se indica a continuacion. Cuando una unidad de decodificacion m es la unidad de decodificacion con m igual a 0 (la primera unidad de decodificacion de la unidad de acceso que inicializa el HRD), el tiempo de eliminacion nominal de la unidad de decodificacion de la CPB puede especificarse por:
tr,n( 0 ) = initial_cpb_removal_delay[SchedSelldx] - 90000 (C-7)
Cuando una unidad de decodificacion m es la primera unidad de decodificacion de la primera unidad de acceso de un perfodo de almacenamiento en memoria intermedia que no inicializa el HRD, el tiempo de eliminacion nominal de la unidad de decodificacion de la CPB puede especificarse por:
tr,n(m) = tr,n(mb) + tc * cpb_removal_delay(m) (C-8)
donde tr,n(mb) es el tiempo de eliminacion nominal de la primera unidad de decodificacion del perfodo de almacenamiento intermedio anterior y cpb_removal_delay (m) es el valor de cpb_removal_delay [i] para la unidad de decodificacion m que se especifica en el mensaje SEI de temporizacion de imagen asociado a la unidad de acceso que contiene la unidad de decodificacion m.
Cuando una unidad de decodificacion n es la primera unidad de decodificacion de un perfodo de almacenamiento en memoria intermedia, mb puede ajustarse igual am en el momento de la eliminacion tr,n(m) de la unidad de decodificacion n. El tiempo de eliminacion nominal tr,n(m) de una unidad de decodificacion m que no es la primera unidad de decodificacion de un perfodo 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 eliminacion nominal de la primera unidad de decodificacion del perfodo de almacenamiento intermedio actual y cpb_removal_delay (m) es el valor de cpb_removal_delay [i] para la unidad de decodificacion m que se especifica en el mensaje SEI de temporizacion de imagen asociado a la unidad de acceso que contiene la unidad de decodificacion m.
La hora de eliminacion de la unidad de decodificacion m puede especificarse como se indica a continuacion:
si low_delay_hrd_flag es igual a 0 o tr,n(m) >= taf(m), el tiempo de eliminacion de la unidad de decodificacion n puede especificarse por:
tr(m) = tr,n(m) (C-10)
de otro modo (low_delay_hrd_flag es igual a 1 y tr,n( m ) < taf(m)), el tiempo de eliminacion de la unidad de decodificacion m se especifica por:
tr(m) = tr,n(m) + tc * Ceil((taf(m) - tr,n(m)) - tc ) (C-11)
El ultimo caso indica que el tamano de la unidad de decodificacion m, b(m), es tan grande que se impide la eliminacion en el tiempo de eliminacion nominal.
Cuando sub_pic_cpb_flag es igual a 1, el tiempo de eliminacion de CPB nominal de la unidad de acceso n tr,n(n) puede ajustarse en el tiempo de eliminacion de CPB normal de la ultima unidad de decodificacion en la unidad de acceso n, el tiempo de eliminacion de CPB de la unidad de acceso n tr(n) puede ajustarse en el tiempo de eliminacion de CPB de la ultima unidad de decodificacion en la unidad de acceso n.
En algunos ejemplos, en el tiempo de eliminacion de CPB de la unidad de decodificacion m, la unidad de decodificacion puede decodificarse instantaneamente.
5
10
15
20
25
30
35
40
45
50
55
60
65
Algunos ejemplos de operacion de la memoria intermedia de imagen decodificada (DPB) se describen como se indica a continuacion. La memoria intermedia de imagenes decodificadas puede contener memorias intermedias de almacenamiento de imagenes. Cada una de las memorias intermedias de almacenamiento de imagenes puede contener una imagen decodificada que se marca como "usada para referenda" o se guarda para una salida futura. Antes del inicio, la DPB puede estar vacfa (la plenitud de la DPB se ajusta a cero). Las siguientes etapas de estos ejemplos de las tecnicas de esta divulgacion pueden suceder en la secuencia indicada.
Algunos ejemplos de eliminacion de imagenes de la memoria intermedia de imagen decodificada (DPB) se describen como se indica a continuacion. En algunos ejemplos, la eliminacion de imagenes de la DPB antes de la decodificacion de la imagen actual (pero despues de analizar el encabezado de fragmento del primer fragmento de la imagen actual) puede tener lugar instantaneamente en el momento de la eliminacion de la CPB de la primera unidad de decodificacion de la unidad de acceso n (que contiene la imagen actual) y puede avanzar como se indica a continuacion.
Puede invocarse el proceso de decodificacion para la imagen de referencia ajustada como se especifica en la subclausula 8.3.2 de HEVC WD6. Si la imagen actual es una imagen de regeneracion de decodificador instantaneo (IDR), puede aplicarse lo siguiente:
1. Cuando la imagen IDR no es la primera imagen IDR decodificada (por ejemplo, cuando ningun resultado del indicador de las imagenes anteriores tiene un valor no igual a 1) y el valor de pic_width_in_luma_samples (por ejemplo, un ancho de imagen en las muestras luma) pic_height_in_luma_samples o max_dec_pic_buffering que se obtiene a partir del conjunto de parametros de secuencia activa es diferente del valor de pic_width_in_luma_samples o pic_height_in_luma_samples o max_dec_pic_buffering obtenido a partir del conjunto de parametro de secuencia que era activo para la imagen anterior, respectivamente, no_output_of_prior_pics_flag puede inferirse para ser igual a 1 o ajustarse que sea igual a 1 por el HRD, independientemente del valor real de no_output_of_prior_pics_flag. Las implementaciones del decodificador pueden manipular los cambios en la imagen o del tamano de DPB mas facilmente que el HRD con respecto a 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 ajusta a o se deduce que es igual a 1, todas las memorias intermedias de almacenamiento de imagen en la dPb pueden estar vacfas sin salida de las imagenes que contienen, y la plenitud de DPB se puede ajustar a 0.
Todas las imagenes k en la DPB, para las cuales son ciertas cada una de las siguientes condiciones, pueden eliminarse de la DPB: la imagen k se marca como "no utilizada como referencia"; la imagen k tiene un PicOutputFlag igual a 0 o su tiempo de salida de DPB es menor que o igual al tiempo de eliminacion de CPB de la primera unidad de decodificacion (representada como la unidad de decodificacion m) de la imagen actual n; es decir,
to,dpb(k) <= tr(m)
Cuando una imagen se elimina de la DPB, la plenitud de la DPB puede reducirse en uno.
Algunos ejemplos de salida de imagen se describen como se indica a continuacion. Lo siguiente puede suceder instantaneamente en el tiempo de eliminacion de CPB de la ultima unidad de decodificacion (representada como unidad de decodificacion m) de la unidad de acceso n (que contiene la imagen actual), tr(m). La imagen n puede considerarse como decodificada despues de que se decodifique la ultima unidad de decodificacion de la imagen.
La variable maxPicOrderCnt variable (para el recuento de orden de imagen maximo (POC)) puede ajustarse igual al maximo de los valores PicOrderCntVal (para el valor de recuento de orden de imagenes (POC)) para la imagen actual y todas las imagenes en la DPB que estan marcadas actualmente como "usadas como referencia a corto plazo", o que tienen un tiempo de salida de DPB mayor de tr(m). La variable minPicOrderCnt (para el recuento de orden de imagen mfnimo (POC), es decir, el recuento de orden de imagen menor (POC)) puede ajustarse igual al mfnimo del valor PicOrderCntVal para la imagen actual y todas las imagenes en la DPB que estan marcadas actualmente como "usadas como referencia a corto plazo", o que tienen un tiempo de salida de DPB mayor de tr(m). Puede ser un requisito de la conformidad del flujo de bits que el valor de maxPicOrderCnt - minPicOrderCnt sea menor de MaxPicOrderCntLsb / 2.
Cuando la imagen n tiene PicOutputFlag igual a 1, su tiempo de salida de DPB to,dpb(n) puede obtenerse por:
to,dPb(n) = tr(m) + tc * dpb_output_delay(n) (C-12)
donde dpb_output_delay(n) es el valor de dpb_output_delay especificado en el mensaje de SEI de temporizacion de imagen asociado a la unidad de acceso n. La salida de la imagen actual puede especificarse como se indica a continuacion:
5
10
15
20
25
30
35
40
si PicOutputFlag es igual a 1 y t0,dpb(n) = tr(m), la imagen actual se transmite;
de otro modo, PicOutputFlag es igual a 0, la imagen actual no se emite, sino que puede almacenarse en la DPB como se especifica adicionalmente a continuacion;
de otro modo (PicOutputFlag es igual a 1 y t0,dpb(n) > tr(m)), la imagen actual se transmite mas tarde y se almacenara en la DPB (como se especifica adicionalmente a continuacion) y se transmite en el momento t0,dpb(n), a menos que se indique que no se transmite por la decodificacion o inferencia de no_output_of_prior_pics_flag igual a 1 en un momento que antecede a t0,dPb(n).
Al transmitirse, la imagen actual o seleccionada puede recortarse, usando un rectangulo de recorte especificado en el conjunto de parametros de secuencia activa, generando de este modo 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 ultima imagen del flujo de bits que se emite, el valor de Ato,dPb(n) se define como:
Ato,dpb(n) = to,dpb(nn) to,dpb(n) (C-13)
donde nn indica la imagen que sigue a la imagen n en orden de salida y tiene PicOutputFlag igual a 1. A continuacion, se proporcionan adicionalmente mas detalles de un proceso de abultamiento y un proceso de recorte.
Algunos ejemplos que implican el marcado y el almacenamiento de la imagen decodificada actual se describen como se indica a continuacion. Lo siguiente puede suceder instantaneamente en el tiempo de eliminacion de CPB de la ultima unidad de decodificacion de la unidad de acceso n (que contiene la imagen actual), tr(m). La imagen decodificada actual puede almacenarse en la DPB en una memoria de almacenamiento de imagen vacfa, y la plenitud de la DPB puede aumentarse en uno. Si la imagen actual es una imagen de referencia, puede ser marcada como "utilizada como referencia"; de lo contrario se puede marcar como "no utilizado como referencia".
La siguiente sintaxis y semantica ejemplar para senalizar el modo de comportamiento de la CPB se proporcionan con respecto al codificador de video ejemplar 20 y/o el decodificador de video 30 configurados para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones.
Algunos ejemplos de sintaxis y semantica para la senalizacion del modo de comportamiento de la CPB se describen como se indica a continuacion. La sintaxis de los parametros de informacion de usabilidad de video (VUI) puede cambiarse mediante la adicion de un indicador de CPB de subimagen, sub_pic_cpb_flag, como se muestra en la Tabla 1 a continuacion:
Tabla 1
- vui parameters( ) {
- Descriptor
- timing_info_present_flag
- u(1)
- if(timing info present flag) {
- num units in tick
- u(32)
- Time_scale
- u(32)
- fixed pic rate flag
- u(1)
- }
- nal hrd parameters present flag
- u(1)
- if(nal hrd parameters present flag)
- hrd parameters( )
- vcl_hrd_paramete rs_present_flag
- u(1)
- if(vcl hrd parameters present flag
- hrd parameters( )
- if(nal_hrd_parameters_present_flag) | | vcl hrd parameters present flag) {
- sub_pic_cpb_flag
- u(1)
- lowdelayhrdflag
- u(1)
- }
- ________________________________________________
En este ejemplo, la Tabla 1 incluye un indicador anadido "sub_pic_cpb_flag", con respecto al HEVC convencional.
5
10
15
20
25
30
35
40
45
50
55
Este indicador de CPB de subimagen, "sub_pic_cpb_flag", puede usarse para indicar si un conjunto de datos de video proporcionados a la memoria intermedia de imagenes codificacion (CPB) incluye o no parametros de subimagen para la decodificacion de subimagenes. Tales parametros de subimagen de los cuales el indicador "sub_pic_cpb_flag" pueden indicar la presencia pueden incluir los tiempos de eliminacion de la memoria intermedia, incluyendo tiempos de eliminacion de memoria intermedia respectivos (es decir, tiempos de eliminacion de CPB) para cada una de una o mas unidades de decodificacion. Un ejemplo de la semantica de sub_pic_cpb_flag es como se indica a continuacion. El elemento de sintaxis sub_pic_cpb_flag que es igual a 0 puede especificar que la CPB opera a nivel de la unidad de acceso. El elemento de sintaxis sub_pic_cpb_flag igual a 1 puede especificar que la CPB funciona a un nivel de la unidad de decodificacion que puede ser a nivel de las unidades de acceso o de subconjuntos de unidades de acceso, lo que puede corresponder a las subimagenes. Cuando el indicador sub_pic_cpb no esta presente, su valor puede ajustarse o deducirse como igual a 0, lo que puede indicar un estado predeterminado en el que los datos de video no incluyen parametros de subimagen para la decodificacion de subimagen.
Algunos ejemplos de sintaxis y semantica para la senalizacion de los tiempos de eliminacion de CPB de las unidades de decodificacion se describen como se indica a continuacion. La sintaxis del mensaje SEI del periodo de almacenamiento intermedio puede permanecer inalterada, al igual que en HEVC WD6, mientras que la semantica de los elementos de sintaxis initial_cpb_removal_delay[SchedSelldx] e initial_cpb_removal_delay_offset[SchedSelldx] pueden cambiarse como se indica a continuacion. En este ejemplo, el elemento de sintaxis initial_cpb_removal_delay[SchedSelldx] puede especificar el retardo para la SchedSelldx-esima CPB entre el momento de llegada a la CPB del primer bit de los datos codificados asociados a la primera unidad de decodificacion en la unidad de acceso asociada al mensaje SEI del periodo de almacenamiento intermedio y el momento de la eliminacion de la CPB de los datos codificados asociados a la misma unidad de decodificacion, para el primer periodo de memoria intermedia despues de la inicializacion HRD. Este elemento sintactico puede tener una longitud en bits dada por initial_cpb_removal_delay_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 [SchedSelldx] no puede ser igual a 0 y no podra ser superior a 90000 * (CpbSize [SchedSelldx] bitrate [SchedSelldx]), el tiempo equivalente del tamano de la CPB en unidades de reloj de 90 kHz.
En este ejemplo, el elemento de sintaxis initial_cpb_removal_delay_offset [SchedSelldx] puede ser utilizado para la SchedSelldx-esima CPB en combinacion con el elemento de sintaxis cpb_removal_delay para especificar el tiempo de entrega inicial de las unidades de decodificacion a la CPB. Ademas, el elemento de sintaxis initial_cpb_removal_delay_offset[SchedSelldx] puede ser en unidades de un reloj de 90 kHz. El elemento de sintaxis initial_cpb_removal_delay_offset[SchedSelldx] puede ser un codigo de longitud fija cuya longitud en bits se da por initial_cpb_removal_delay_length_minus1 + 1. Este elemento de sintaxis puede no usarse por los decodificadores y puede ser necesario solo para el programador de entrega (HSS) especificado en el Anexo C de HEVC WD6.
En algunos ejemplos, la sintaxis y la semantica del mensaje SEI de temporizacion de imagen se pueden cambiar como se muestra en la Tabla 2 a continuacion:
Tabla 2
- pic timing(payloadSize) {
- Descriptor
- if(CpbDpbDelaysPresentFlag) {
- if(sub pic cpb flag)
- num decoding units minusl
- ue(v)
- for(i = 0; i <= numdecodingunitsminusl;
- cpb_removal_delay[i]
- u(v)
- dpb output delay
- u(v)
- }
- J______________________________________________________
En el ejemplo de la Tabla 2, el mensaje SEI pictiming incluye una senal anadida num_decoding_units_minus1, y un bucle sobre el numero de unidades de decodificacion, lo que indica un retraso de eliminacion respectivo de una unidad de decodificacion de la memoria intermedia de imagen codificada, cuando el sub_pic_cpb_flag de los parametros VUI, por ejemplo, de acuerdo con la Tabla 1 anterior, es cierto. De esta manera, el mensaje SEI pic_timing puede incluir informacion que indica un numero de ciclos de reloj que esperar hasta la eliminacion de cada una de una pluralidad de unidades de decodificacion de la memoria intermedia de imagen codificada cuando los parametros VUI indican que la CPB opera a nivel de la unidad de decodificacion. El retardo de la eliminacion de una unidad de decodificacion puede ser el mismo retardo para cada unidad de decodificacion en una carga util u otra unidad de datos. En otros ejemplos, se pueden aplicar diferentes retardos de eliminacion a diferentes unidades de decodificacion. El retardo de eliminacion puede ser expresado en cuando a un numero de bits, con una conversion de tiempo implfcito del numero de bits con respecto a la tasa de procesamiento de bits para el reloj aplicable.
La sintaxis del mensaje SEI de temporizacion de imagen puede depender del contenido del conjunto de parametros
5
10
15
20
25
30
35
40
45
50
55
60
65
de secuencia que es activo para la imagen codificada asociada al mensaje SEI de temporizacion de imagen. Sin embargo, a menos que el mensaje SEI de temporizacion de imagen de una unidad de acceso de regeneracion de decodificacion instantanea (IDR) esta precedido de un mensaje SEI del perfodo de almacenamiento intermedio dentro de la misma unidad de acceso, la activacion del conjunto de parametros de secuencia asociado (y, para imagenes IDR que no son la primera imagen en el flujo de bits, la determinacion de que la imagen codificada es una imagen IDR) puede no producirse hasta la decodificacion de la primera unidad de capa de abstraccion de red (NAL) de porcion codificada de la imagen codificada. Dado que la unidad NAL de porcion codificada de la imagen codificada sigue al mensaje SEI de temporizacion de imagen en el orden de la unidad NAL, puede haber casos en los que es necesario para un decodificador almacenar la carga util de secuencia de bytes en bruto (RBSP) que contiene el mensaje SEI de temporizacion de imagen hasta la determinacion de los parametros del conjunto de parametros de secuencia que estaran activos para la imagen codificada, y despues realizar el analisis del mensaje SEI de temporizacion de imagen. El decodificador puede almacenar una o mas unidades de decodificacion de datos de video en un orden de decodificacion continuo en la memoria intermedia de imagen.
La presencia del mensaje SEI de temporizacion de imagen en el flujo de bits puede especificarse en un ejemplo como se indica a continuacion: si CpbDpbDelaysPresentFlag es igual a 1, un mensaje SEI de temporizacion de imagen puede estar presente en cada unidad de acceso de la secuencia de video codificada. De otro modo, CpbDpbDelaysPresentFlag es igual a 0, y ningun mensaje SEI de temporizacion de imagen puede estar presente en ninguna unidad de acceso de la secuencia de video codificada.
En este ejemplo, el elemento de sintaxis num_decoding_units_minus1 mas 1 puede especificar el numero de unidades de decodificacion en la unidad de acceso a la que esta asociado mensaje sEi de temporizacion de imagen. Cuando sub_pic_cpb_flag es igual a 0, el elemento de sintaxis numdecodingunitsminusl puede no estar presente y el valor puede ajustarse o deducirse como 0.
En este ejemplo, el elemento de sintaxis cpb_removal_delay[i] puede especificar el numero de ciclos de reloj a esperar despues de la eliminacion de la CPB de la primera unidad de decodificacion en la unidad de acceso asociada al mensaje SEI del perfodo de almacenamiento intermedio mas reciente en una unidad de acceso anterior antes de la eliminacion de la CPB de la i-esima unidad de decodificacion en la unidad de acceso asociada al mensaje SEI de temporizacion de imagen. Este valor tambien puede usarse para calcular un tiempo lo mas temprano posible de llegada de datos de la unidad de decodificacion a la CPB para el HSS. El elemento de sintaxis puede ser un codigo de longitud fija, cuya longitud en bits se da por cpb removal_delay length_minus1 + 1. El cpb_removal_delay[i] puede ser el resto de un contador de modulo 2(cpb removai_delay_length_minus +T).
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 parametros de secuencia que esta activo para la imagen codificada asociada al mensaje SEI de temporizacion de imagen. Sin embargo, cpb_removal_delay [i] puede especificar un numero de ciclos de reloj en relacion con el tiempo de eliminacion de la primera unidad de decodificacion en la unidad de acceso anterior que contiene un mensaje SEI del perfodo de almacenamiento intermedio, que puede ser una unidad de acceso de una secuencia de video codificado 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 dpboutputdelay puede especificar el numero de ciclos de reloj a esperar despues de la eliminacion de la ultima unidad de decodificacion de una unidad de acceso de la CPB antes de que la imagen decodificada se transmita desde la DPB.
Una imagen puede no eliminarse de la DPB en su tiempo de salida cuando todavfa esta marcada como "utilizada como referencia a corto plazo" o "utilizada como referencia a largo plazo". Solo se puede especificar un dpb_output_delay para una imagen decodificada. La longitud del elemento de sintaxis dpboutputdelay se puede dar 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 obtenido de dpb_output_delay de cualquier imagen que se transmite desde un tiempo de salida conforme al decodificador puede preceder al momento de salida obtenido de dpb_output_delay de todas las imagenes en cualquier secuencia de video codificada posterior en el orden de decodificacion. El orden de salida de imagen establecido por los valores de este elemento de sintaxis puede ser el mismo orden que se establece por los valores de PicOrderCnt(). Para las imagenes que no se transmiten por el proceso de "abultamiento" porque preceden, en orden de decodificacion, a una imagen IDR con no_output_of_prior_pics_flag igual a 1 o que se deduce como igual a 1, los tiempos de salida obtenidos de dpb_output_delay pueden estar aumentando con el valor en aumento de PicOrderCnt () con respecto a todas las imagenes dentro de la misma secuencia de video codificada. En un ejemplo alternativo, un nuevo mensaje SEI, que puede denominarse un mensaje SEI de temporizacion de la unidad de decodificacion, cada uno asociado a una unidad de decodificacion, puede especificarse, para transmitir el retardo de eliminacion de CPB para la unidad de decodificacion asociada.
De esta manera, implementando cualquier combinacion de las definiciones ejemplares, una operacion de HRD
5
10
15
20
25
30
35
40
45
50
55
60
65
ejemplar, la operacion ejemplar de una memoria intermedia de imagen codificada, la temporizacion ejemplar de una llegada de flujo de bits, la temporizacion ejemplar de la eliminacion de la unidad de decodificacion, la decodificacion ejemplar de una unidad de decodificacion, la operacion ejemplar de una memoria intermedia de imagenes decodificadas, la eliminacion ejemplar de las imagenes de una memoria intermedia de imagenes decodificadas, la salida de imagen ejemplar, y el marcado y almacenamiento ejemplar de imagen decodificada actual, y la sintaxis y semantica ejemplar para senalizar el modo de comportamiento de CPB, el codificador de video 20 y/o el decodificador de video 30 pueden configurarse para almacenar una o mas de decodificacion de unidades de datos de video en una memoria intermedia de imagenes, obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar los datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones.
Como una alternativa a las tecnicas descritas anteriormente, una unidad de decodificacion se puede definir como se indica a continuacion: "Una unidad de acceso o un subconjunto de una unidad de acceso. Si SubPicCpbFlag es igual a 0, una unidad de decodificacion es una unidad de acceso. De otro modo, una unidad de decodificacion incluye una o mas 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 relleno, en su caso, inmediatamente despues 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 relleno, en su caso, inmediatamente despues de la unidad NAL no VCL".
En este ejemplo, las operaciones del decodificador de referencia hipotetico (HRD) pueden resumirse como se indica a continuacion. El tamano de CPB (numero de bits) es CpbSize[SchedSelldx]. El tamano DPB (numero de memorias intermedias de almacenamiento de imagenes) para la capa temporal X puede ser max_dec_pic_buffering[X] + 1 para cada X en el intervalo de 0 a max_temporal_layers_minus1, inclusive. Una variable SubPicCpbPreferredFlag puede usarse como un indicador preferido de memoria intermedia de imagenes codificadas de subimagen, y puede especificarse por medios externos, o cuando no se especifica por medios externos, ajustarse a 0. Un indicador presente de parametros de imagen codificada de subimagen, sub_pic_cpb_params_present_flag, puede usarse para senalar si los parametros necesarios para los subconjuntos de codificacion de una o mas unidades de acceso estan disponibles. Un unico indicador de memoria intermedia de imagen codificada de subimagen, SubPicCpbFlag, puede indicar si tanto el indicador preferido de memoria intermedia de imagen codificada de subimagen como el indicador presente de parametros de imagen codificada de subimagen son positivos, o se ajustan a 1. Un codificador de video puede utilizar este indicador de memoria intermedia de imagen codificada de subimagen, SubPicCpbFlag, para determinar si codificar unidades de acceso de datos de video o codificar subconjuntos de una o mas unidades de acceso, tales como subimagenes, de datos de video, segun los datos de video se eliminan de la CPB.
La variable SubPicCpbFlag puede obtenerse como se indica a continuacion:
SubPicCpbFlag = SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag
(C-1)
Si SubPicCpbFlag es igual a 0, la CPB puede operar a nivel de unidad de acceso, y cada unidad de decodificacion puede ser una unidad de acceso. De otro modo, la CPB puede operar a nivel de subimagen, y cada unidad de decodificacion puede ser un subconjunto de una unidad de acceso.
El decodificador de video 30/108 puede determinar que la una o mas unidades de decodificacion comprenden unidades de acceso determinando que un indicador preferido de memoria intermedia de imagen codificada de subimagen (por ejemplo, SubPicCpbPreferredFlag) tiene un valor de cero o que un indicador presente de parametros de memoria intermedia de imagen codificada de subimagen (por ejemplo, sub_pic_cpb_params_present_flag) tiene un valor de cero.
El HRD (por ejemplo, el codificador de video 20 y/o el decodificador de video 30) puede funcionar como se indica a continuacion. Los datos asociados con las unidades de decodificacion que fluyen en la CPB de acuerdo con una programacion de llegada especificada pueden entregarse por el HSS. En un ejemplo, los datos asociados a cada unidad de decodificacion pueden eliminarse y decodificarse instantaneamente por el proceso de decodificacion instantanea en los tiempos de eliminacion de CPB. Cada imagen decodificada puede colocarse en la DPB. Una imagen decodificada puede eliminarse de la DPB por ultimo en el tiempo de salida de DPB o el momento en que ya no sea necesario para una referencia inter-prediccion.
Las operaciones aritmeticas descritas en esta divulgacion se pueden hacer con valores reales, de modo que no se propaguen los errores de redondeo. Por ejemplo, el numero de bits en un CPB justo antes o despues de la eliminacion de una unidad de decodificacion puede no ser necesariamente un numero entero.
5
10
15
20
25
30
35
40
45
50
55
60
65
La variable tc se puede derivar como se indica a continuacion y puede denominarse un pulso de reloj:
tc = num_units_in_tick - time_scale (C-1)
Lo siguiente puede especificarse para expresar las limitaciones en este ejemplo de las tecnicas de esta divulgacion:
dejar que la unidad de acceso n sea la enesima unidad de acceso en el orden de decodificacion siendo la primera unidad de acceso una unidad de acceso 0;
dejar que la imagen n sea la imagen codificada o la imagen decodificada de la unidad de acceso n;
dejar que la unidad de decodificacion m sea la m-esima unidad de decodificacion en el orden de decodificacion siendo la primera unidad de decodificacion una unidad de decodificacion 0.
Las operaciones de la memoria intermedia de imagen codificada (CPB) se pueden definir como se indica a continuacion. Las especificaciones en este ejemplo se pueden aplicar de forma independiente a cada conjunto de parametros CPB que esta presente y a los puntos de conformidad tanto de Tipo I como de Tipo II.
Con respecto al tiempo de llegada del flujo de bits, el HRD puede inicializarse en uno cualquiera de los mensajes SEI del perfodo de almacenamiento en memoria intermedia. Antes de la inicializacion, la CPB puede estar vacfa. Despues de la inicializacion, el HRD puede no inicializarse de nuevo por los posteriores mensajes SEI del periodo de almacenamiento intermedio.
Cada unidad de acceso puede denominarse como una unidad de acceso respectiva n, donde el numero n identifica la unidad de acceso particular. La unidad de acceso que se asocia al mensaje SEI del periodo de almacenamiento intermedio que inicializa la CPB puede denominarse como la unidad de acceso 0. El valor de n puede aumentarse en 1 para cada unidad de acceso posterior en el orden de decodificacion.
Cada unidad de decodificacion puede denominarse respectivamente como una unidad de decodificacion m, donde el numero m identifica la unidad de decodificacion particular. La primera unidad de decodificacion en orden de decodificacion en la unidad de acceso 0 puede denominarse como la unidad de decodificacion 0. El valor de m puede aumentarse en 1 para cada unidad de decodificacion posterior en orden de decodificacion.
En este ejemplo, si la variable SubPicCpbFlag es igual a 0, la variable InitCpbRemovalDelay[SchedSelldx] puede ajustarse en initial_cpb_removal_delay[SchedSelldx] del mensaje SEI del periodo de almacenamiento intermedio asociado, y InitCpbRemovalDelayOffset[SchedSelldx] puede ajustarse en
initial_cpb_removal_delay_offset[SchedSelldx] del mensaje SEI del periodo de almacenamiento intermedio asociado. De otro modo, la variable InitCpbRemovalDelay[SchedSelldx] puede ajustarse en initial_du_cpb_removal_delay[SchedSelldx] del mensaje SEI del periodo de almacenamiento intermedio asociado, y InitCpbRemovalDelayOffset[SchedSelldx] puede ajustarse en initial_du_cpb_removal_delay_offset[SchedSelldx] del mensaje SEI del periodo de almacenamiento asociado.
El momento en el que el primer bit de la unidad de decodificacion n comienza a entrar en la CPB puede denominarse como el tiempo de llegada inicial tai(m). La hora de llegada inicial de las unidades de decodificacion puede obtenerse como se indica a continuacion:
si la unidad de decodificacion es la unidad decodificacion 0, tai(0) = 0;
de otro modo (la unidad de decodificacion en la unidad de decodificacion m con m> 0), puede aplicarse lo siguiente:
si cbr_flag[SchedSelldx] es igual a 1, el tiempo de llegada inicial para la unidad de decodificacion m, puede ser igual al tiempo final de la llegada (que se obtiene a continuacion) de la unidad de acceso m - 1, es decir,
tai(m) = taf(m - 1) (C-2)
de otro modo (cbr_flag[SchedSelldx] es igual a 0), el tiempo de llegada inicial de la unidad de decodificacion m puede obtenerse por
tai(m) = Max(taf(m 1), tai,mastemprano(m)) (C-3)
donde tai,mastemprano(m) puede obtenerse como se indica a continuacion:
si la unidad de decodificacion n no es la primera unidad de decodificacion de un periodo de almacenamiento en memoria intermedia posterior, tai,mastemprano( m ) puede obtenerse como:
tai,mastemprano(m) = tr,n(m) - (InitCpbRemovalDelay[SchedSelldx] + InitCpbRemovalDelayOffset[SchedSelldx])
5
10
15
20
25
30
35
40
45
50
55
60
65
- 90000 (C-4)
siendo tr,n(m) el tiempo de eliminacion nominal de la unidad de decodificacion m de la CPB;
de otro modo (la unidad de decodificacion n no es la primera unidad de decodificacion de un penodo de almacenamiento en memoria intermedia posterior), tai,mastemprano(m) puede obtenerse como
tai,maastemprano(m) = tr,n(m) - (InitCpbRemovalDelay[SchedSelldx] - 90000) (C-5)
El tiempo de llegada final taf para la unidad de decodificacion m puede obtenerse por
taf(m) = tai(m) + b(m) - BitRate[SchedSelldx] (C-6)
donde b (m) es el tamano en bits de la unidad de decodificacion m, contando los bits de las unidades NAL VCL y las unidades NAL de datos de relleno para el punto de conformidad de Tipo I o todos los bits del flujo de bits de Tipo II para el punto de la conformidad de Tipo II.
En algunos ejemplos, los valores de SchedSelldx, BitRate[SchedSelldx], y CpbSize[SchedSelldx] pueden limitarse como se indica a continuacion:
si el contenido de los conjuntos de parametros de secuencia activa para la unidad de acceso que contiene la unidad de decodificacion m y la unidad de acceso anterior difieren, el HSS puede seleccionar un valor SchedSelldxl de SchedSelldx de entre los valores de SchedSelldx proporcionados en el conjunto de parametros de secuencia activa para la unidad de acceso que contiene la unidad de decodificacion m que se traduce en BitRate[SchedSelldx1] o CpbSize [SchedSelldxl] para la unidad de acceso que contiene la unidad de decodificacion m. El valor de BitRate[SchedSelldx1] o CpbSize [SchedSelldxl] puede diferir del valor de BitRate[SchedSelldx0] o CpbSize [SchedSelldx0] para el valor de SchedSelldx0 de SchedSelldx que estaba en uso para la unidad de acceso anterior;
de otro modo, el HSS puede continuar funcionando con los valores anteriores de SchedSelldx, BitRate[SchedSelldx] y CpbSize[SchedSelldx].
Cuando el HSS selecciona los valores de BitRate[SchedSelldx] o CpbSize [SchedSelldx] que difieren de los de la unidad de acceso anterior, puede aplicarse lo siguiente:
la variable BitRate[SchedSelldx] puede entrar en vigor en el momento tai(m)
la variable de CpbSize[SchedSelldx] puede entrar en vigor como se indica a continuacion:
si el nuevo valor de CpbSize[SchedSelldx] excede el tamano de CPB anterior, puede entrar en vigor en el momento tai(m),
de otro modo, el nuevo valor de CpbSize[SchedSelldx] puede entrar en vigor en el momento de la eliminacion de la CPB de la ultima unidad de decodificacion de la unidad de acceso que contiene la unidad de decodificacion m.
Cuando la variable SubPicCpbFlag es igual a 1, el tiempo de llegada de CPB inicial de la unidad de acceso n tai(n) puede ajustarse en el tiempo de llegada de CPB inicial de la primera unidad de decodificacion en la unidad de acceso n, y el tiempo de llegada de CPB final de la unidad de acceso n taf(n) puede ajustarse en el tiempo de llegada de CPB final de la ultima unidad de decodificacion en la unidad de acceso n. Cuando SubPicCpbFlag es igual a 0, cada unidad de decodificacion puede ser una unidad de acceso, de tal forma que los tiempos de llegada de CPB inicial y final de la unidad de acceso n pueden ser los tiempos de llegada de CPB inicial y final de la unidad de decodificacion m.
El siguiente analisis proporciona un ejemplo para la temporizacion de la eliminacion de la unidad de decodificacion y la decodificacion de una unidad de decodificacion. Si SubPicCpbFlag es igual a 0, la variable CpbRemovalDelay (m) se puede establecer en el valor de cpbremovaldelay especificado en el mensaje SEI de temporizacion de imagen asociado con la unidad de acceso que es la unidad de decodificacion m. De otro modo, CpbRemovalDelay variable (m) se puede establecer en el valor de du_cpb_removal_delay [i] para la unidad de decodificacion m especificada en el mensaje SEI de temporizacion de imagen asociado a la unidad de acceso que contiene unidad de decodificacion m.
Cuando una unidad de decodificacion m es la unidad de decodificacion con m igual a 0 (la primera unidad de decodificacion de la unidad de acceso que inicializa el HRD), el tiempo de eliminacion nominal de la unidad de decodificacion de la CPB puede especificarse por:
5
10
15
20
25
30
35
40
45
50
55
60
65
tr,n(0) = InitCpbRemovalDelay[SchedSelIdx] - 90000 (C-7)
Cuando una unidad de decodificacion m es la primera unidad de decodificacion de la primera unidad de acceso de un perfodo de almacenamiento en memoria intermedia que no inicializa el HRD, el tiempo de eliminacion nominal de la unidad de decodificacion 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 eliminacion nominal de la primera unidad de decodificacion del perfodo de almacenamiento en memoria intermedia anterior.
Cuando una unidad de decodificacion m es la primera unidad de decodificacion de un perfodo de almacenamiento en memoria intermedia, mb puede ajustarse igual a m en el momento de eliminacion tr,n(m) de la unidad de decodificacion m.
El tiempo de eliminacion nominal tr,n(m) de una unidad de decodificacion m que no es la primera unidad de decodificacion de un perfodo de almacenamiento en memoria intermedia puede darse por:
tr,n(m) = tr,n( mb ) + tc * CpbRemovalDelay(m) (C-9)
donde tr,n( mb) es el tiempo de eliminacion nominal de la primera unidad de decodificacion del periodo de almacenamiento en memoria intermedia actual.
La hora de eliminacion de la unidad de decodificacion m puede especificarse como se indica a continuacion:
Si low_delay_hrd_flag es igual a 0 o tr,n(m) > = taf(m), el tiempo de eliminacion de la unidad de decodificacion m puede especificarse por:
tr(m) = tr,n(m) (C-10)
De otro modo, (low_delay_hrd_flag es igual a 1 y tr,n(m) < taf(m)), y el tiempo de eliminacion de la unidad de decodificacion m puede especificarse por:
tr( m ) = tr,n( m ) + tc * Ceil( (taf( m ) - tr,n( m ) ) - tc ) (C-11)
El ultimo caso, este ejemplo, indica que el tamano de la unidad de decodificacion m, b(m), es tan grande que se impide la eliminacion en el tiempo de eliminacion nominal.
Cuando SubPicCpbFlag es igual a 1, el tiempo de eliminacion de CPB nominal de la unidad de acceso n, trn(n), puede ajustarse en el tiempo de eliminacion de CPB normal de la ultima unidad de decodificacion en la unidad de
acceso n; el tiempo de eliminacion de CPB de la unidad de acceso n, tr(n), puede ajustarse en el tiempo de
eliminacion de CPB de la ultima unidad de decodificacion en la unidad de acceso n. Cuando SubPicCpbFlag es igual a 0, cada unidad de decodificacion m es una unidad de acceso n, en este ejemplo y, por lo tanto, el tiempo de
eliminacion de CPB nominal y el tiempo de eliminacion de CPB de la unidad de acceso n son el tiempo de
eliminacion de CPB nominal y el tiempo de eliminacion de CPB de la unidad de decodificacion m. En el tiempo de eliminacion de CPB de la unidad de decodificacion m, en algunos ejemplos, la unidad de decodificacion puede decodificarse instantaneamente.
En este ejemplo, la memoria intermedia de imagen decodificada (DPB) puede operar como se indica a continuacion. La memoria intermedia de imagenes decodificadas puede contener una o mas memorias intermedias de almacenamiento de imagenes. Cada una de las memorias intermedias de almacenamiento de imagenes puede contener una imagen decodificada que se marca como "usada para referenda" o se guarda para una salida futura. Antes del inicio, la DPB puede estar vacfa (la variable de plenitud de la DPB puede ajustarse a cero). Las siguientes etapas de este ejemplo pueden tener lugar en la secuencia enumerada.
En primer lugar, las imagenes pueden eliminarse de la DPB. La eliminacion de imagenes de la DPB antes de la decodificacion de la imagen actual (pero despues de analizar el encabezado de fragmento del primer fragmento de la imagen actual) puede tener lugar instantaneamente en el momento de la eliminacion de la CPB de la primera unidad de decodificacion de la unidad de acceso n (que contiene la imagen actual) y puede avanzar como se indica a continuacion. Puede invocarse el proceso de decodificacion para la imagen de referencia ajustada como se especifica en la subclausula 8.3.2 de HEVC WD6. Si la imagen actual es una imagen imagen IDR, puede aplicarse 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 obtenido del conjunto de parametros de secuencia activos es diferente del valor de pic_width_in_luma_samples o
pic_height_in_luma_samples o max_dec_pic_buffering obtenido del conjunto de parametros de secuencia que estuvo activo para la imagen anterior, respectivamente, no_output_of_prior_pics_flag (es decir, una salida nula del
5
10
15
20
25
30
35
40
45
50
55
60
65
indicador de imageries anterior) puede deducirse como igual a 1 por el HRD, o ajustarse a 1 para su propio procesamiento por el HRD, independientemente del valor real de no_output_of_prior_pics_flag. Las implementaciones del decodificador pueden intentar manipular los cambios en la imagen o del tamano de DPB mas facilmente que el HRD con respecto a 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 deduce que es igual a 1, todas las memorias intermedias de almacenamiento de imagen en la DPB pueden estar vacfas sin salida de las imagenes que contienen, y la plenitud de DPB se ajusta a 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 adicionalmente mas adelante). Todas las imagenes k en la DPB, para las que las siguientes condiciones son verdaderas, se eliminan de la DPB:
la imagen k se marca como "no usada para referenda";
la imagen k tiene PicOutputFlag igual a 0 o su tiempo de salida DPB es menor de o igual al tiempo de eliminacion de la CPB de la primera unidad de decodificacion (representada como unidad de decodificacion m) de la imagen actual n; es decir to,dpb(k) <= tr(m).
Cuando una imagen se elimina de la DPB, la plenitud de la DPB puede reducirse en uno. Para la salida de imagen, lo siguiente puede suceder instantaneamente en el tiempo de eliminacion de la CPB de la unidad de acceso n, tr(n):
La imagen n puede considerarse como decodificada despues de que se decodifique la ultima unidad de decodificacion de la imagen.
Cuando la imagen n tiene PicOutputFlag igual a 1, su tiempo de salida de DPB to,dpb(n) puede obtenerse 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 de SEI de temporizacion de imagen asociado a la unidad de acceso n.
La salida de la imagen actual puede especificarse como se indica a continuacion.
si PicOutputFlag es igual a 1 y to,dpb(n) = tr(n), la imagen actual puede transmitirse;
por el contrario, si PicOutputFlag es igual a 0, la imagen actual puede no transmitirse, sino que puede almacenarse en la DPB;
de lo contrario (PicOutputFlag es igual a 1 y to,dpb(n) > tr(n)), la imagen actual puede transmitirse posteriormente y puede almacenarse en la DPB (como se especifica en la subclausula C.3.3 de HEVC WD6 como se modifica por esta divulgacion), y puede emitirse en el momento to,dpb(n), a menos que se indique que no se emite por la decodificacion o inferencia de no_output_of_prior_pics_flag igual 1 en un momento que antecede a to,dpb(n). En otras palabras, la imagen actual puede almacenarse en la DPB y puede transmitirse posteriormente, por ejemplo, en el momento to,dpb(n), si la no salida del indicador de imagenes anterior no es igual a 1.
Al transmitirse, la imagen puede recortarse, usando el rectangulo de recorte especificado en el conjunto de parametros de secuencia activa.
Cuando la imagen n es una imagen que se emite y no es la ultima imagen del flujo de bits que se emite, el valor de un intervalo de tiempo de salida de DPB Ato,dpb(n) puede definirse como se indica a continuacion:
Ato,dpb(n) = to,dpb(nn) — to,dpb(n) (C-13)
donde nn puede indicar la imagen que sigue despues de la imagen n en el orden de salida y tiene PicOutputFlag igual a 1, de tal forma que el intervalo del tiempo de salida de DPB Ato,dpb(n) puede definirse como la diferencia entre el tiempo de salida de DPB de una imagen posterior despues de la imagen n en orden de salida y el posterior tiempo de salida de DPB de la imagen n.
Para el marcado y almacenamiento de la imagen actual decodificada, puede implementarse lo siguiente de forma instantanea en el momento de la eliminacion de CPB de la unidad de acceso n, tr(n): la imagen decodificada actual puede almacenarse en la DPB en una memoria intermedia de almacenamiento de imagen vacfa, y la plenitud de DPB puede aumentarse en uno; si la imagen actual es una imagen de referencia, puede marcarse como "utilizada como referencia", de lo contrario, se puede marcar como "no utilizada como referencia".
Para la operacion de orden de salida de la DPB, la memoria intermedia de imagen decodificada puede contener una o mas memorias intermedias de almacenamiento de imagen. Cada una de las memorias intermedias de almacenamiento de imagenes puede contener una imagen decodificada que se marca como "usada para referencia"
5
10
15
20
25
30
35
40
45
50
55
60
65
o se guarda para una salida futura. En el inicio del HRD, la DPB puede estar vacfa. Las siguientes etapas pueden tener lugar en el orden enumerado.
Las imagenes pueden eliminarse de la DPB como se indica a continuacion. La eliminacion de imagenes de la DPB antes de la decodificacion de la imagen actual (pero despues de analizar el encabezado del fragmento del primer fragmento de la imagen actual) puede implementarse instantaneamente cuando la primera unidad de decodificacion de la unidad de acceso que contiene la imagen actual se elimina de la CPB y puede avanzar como se indica a continuacion.
El proceso de decodificacion para la imagen de referencia fijado como se especifica en la subclausula 8.3.4.3 de HEVC WD6, como se modifica de acuerdo con esta divulgacion, puede invocarse (como se ha descrito parcialmente anteriormente, y como se describe adicionalmente a continuacion).
Si la imagen actual es una imagen IDR, puede aplicarse 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 obtenido del conjunto de parametros de secuencia activos es diferente del valor de pic_width_in_luma_samples o pic_height_in_luma_samples o max_dec_pic_buffering obtenido del conjunto de parametros de secuencia que estuvo activo para la imagen anterior, respectivamente, no_output_of_prior_pics_flag puede ajustarse a o inferirse a ser igual a 1 por el HRD, independientemente del valor real de no_output_of_prior_pics_flag. Las implementaciones de 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 mas facilmente que el HRD;
cuando no_output_of_prior_pics_flag es igual a 1 o se deduce que es igual a 1, todas las memorias intermedias de almacenamiento de imagen en la DPB pueden estar vacfas estan vacfas sin salida de las imagenes que contienen;
de otro modo, las memorias intermedias de almacenamiento de imagenes que contienen una imagen que se marca como "no necesaria para la salida" y "no usada para referencia" pueden estar vacfas (sin salida).
Cuando cualquiera de las siguientes condiciones son verdaderas, el proceso de "abultamiento" especificado en la subclausula C.5.2.1 de HEVC WD6 como se modifica por esta divulgacion puede invocarse repetidamente hasta que hay una memoria intermedia de almacenamiento de imagenes vacfa para almacenar la imagen decodificada actual:
el numero de imagenes en la DPB que estan marcadas como "necesaria para la salida" es mayor que varias de las imagenes reordenadas en una capa temporal actual, es decir, num_reorder_pics [temporal_id]; o,
el numero de imagenes en la DPB con el numero de imagenes en la DPB con valores de identificador de capa temporal, temporal_id, inferior o igual a un valor identificador de capa temporal, temporal_id, de la imagen actual es igual a un valor maximo de almacenamiento intermedio de imagen de la capa temporal actual mas uno, es decir, max_dec_pic_buffering[temporal_id] + 1; o,
cuando la imagen actual es una imagen IDR para la que la no salida del indicador de imagenes anterior, no_output_of_prior_pics_flag, tiene un valor no igual a 1 y no inferido para ser igual a 1.
Pueden realizarse las siguientes etapas: Las memorias intermedias de almacenamiento de imagen que contienen una imagen que se marca como "no necesaria para la salida" y "no marcada para referencia" pueden estar vacfas (sin salida), y todas las memorias intermedias de almacenamiento de imagenes no vacfas en la DPB pueden vaciarse invocando repetidamente el proceso de "abultamiento" especificado a continuacion.
Por lo tanto, un proceso de "abultamiento" puede invocarse 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 ajusta a ni se infiere que es igual a 1, como se especifica en la subclausula C.5.2 de HEVC WD6 como se modifica por esta divulgacion; o,
que estan marcadas como "necesaria para la salida" es mayor que varias de las imagenes reordenadas en una capa temporal actual, es decir, num_reorder_pics [temporal_id], como se especifica en la subclausula C.5.2 de HEVC wD6 como se modifica por esta divulgacion; o,
el numero de cuadros en la DPB con temporal_id inferior o igual a un valor identificador de capa temporal, temporal_id, de la imagen actual es igual a un valor maximo de almacenamiento intermedio de imagen de la capa temporal actual mas uno, es decir, max_dec_pic_buffering[temporal-id] + 1, como se especifica en la subclausula C.5.2 de HEVC WD6 como se modifica por esta divulgacion.
5
10
15
20
25
30
35
40
El proceso de "abultamiento" puede incluir las siguientes etapas ordenadas:
1. La imagen que esta primero para la salida puede seleccionarse como la unica que tiene el valor mas pequeno de PicOrderCntVal de todas las imagenes en la DPB marcada como "necesaria para la salida".
2. La imagen se recorta, usando el rectangulo de recorte especificado en el conjunto de parametros de secuencia 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 imagen que inclufa la imagen que se recorto y se emitio contiene una imagen marcada como "no usada para referenda", la memoria intermedia de almacenamiento de imagenes puede estar vacfa.
Lo siguiente puede tener lugar instantaneamente para la decodificacion, marcado y almacenamiento de imagenes, cuando la ultima unidad de decodificacion de la unidad de acceso n que contiene la imagen actual se elimina de la CPB.
La imagen actual puede considerarse como decodificada despues de que se decodifique la ultima unidad de decodificacion de la imagen. La imagen decodificada actual puede almacenarse en una memoria de almacenamiento de imagen vacfa en la DPB, y puede aplicarse 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 ser marcada como "utilizada como referenda"; de lo contrario (la imagen decodificada actual es una imagen no de referencia), se puede marcar como "no utilizada como referencia".
Por lo tanto, un proceso de abultamiento puede incluir: seleccionar una imagen que tiene un menor valor de recuento de orden de imagenes (POC) de imagenes en la DPB y que esta marcado segun sea necesario para la salida como una imagen seleccionada; recortar la imagen seleccionada como se especifica en un conjunto de parametros de secuencia activa para la imagen seleccionada, generando de este modo una imagen recortada en base a la imagen seleccionada; transmitir la imagen recortada; y marcar la imagen seleccionada como no sea necesario para la emision.
Pueden usarse elementos de sintaxis para senalar un modo de comportamiento CPB, utilizando la semantica definida a continuacion. La sintaxis y de los parametros VUI y la semantica puede cambiarse para que sea como se muestra en la Tabla 3 a continuacion (la semantica de los elementos de sintaxis existentes no se cambian en relacion con HEVC WD6, en este ejemplo):
Tabla 3
- vui parameters( ) {
- Descriptor
- aspect ratio info present flag
- u(1)
- if(aspect ratio info present flag) {
- aspect_ratio_idc
- u(8)
- if(aspect ratio idc = = Extended SAR) {
- sar_width
- u(16)
- sar heiqht
- u(16)
- }
- }
- overscan_info_present_flag
- u(1)
- if(overscan info present flag)
- overscan_appropriate_flag
- u(1)
- video_signal_type_present_flag
- u(1)
- if(video signal type present flag) {
- video format
- u(3)
- video_full_range_flag
- u(1)
- colour_description_present_flag
- u(1)
- if(colour description present flag) {
- colour primaries
- u(8)
- transfer_characteristics
- 48)_______
- matrix coefficients
- u(8)
- }
- }
- chroma loc info present flag
- u(1)
- if(chroma loc info present flag) {
- chroma_sample_loc_type_top_field
- ue(v)
- chroma sample loc type bottom field
- ue(v)
- }
- neutral_chroma_indication_flag
- u(1)
- field_indication_presence_flag
- u(1)
- timing_info_present_flag
- u(1)
- if(timing info present flag) {
- num units in tick
- u(32)
- time_scale
- u(32)
- fixed pic rate flag
- u(1)
- }
- nal hrd parameters present flag
- u(1)
- if(nal hrd parameters present flag)
- hrd parameters( )
- vcl hrd parameters present flag
- u(1)
- if(vcl hrd parameters present flag)
- hrd parameters( )
- if(nal hrd parameters present flag || vcl hrd parameters present flag) {
- sub pic cpb params present flag
- u(1)
- low delay hrd flag
- u(1)
- }
- bitstream_restriction_flag
- u(1)
- if(bitstream restriction flag) {
- motion vectors over pic boundaries flag
- u(1)
- max_bytes_per_pic_denom
- ue(v)
- max_bits_per_mincu_denom
- ue(v)
- log2 max mv length horizontal
- ue(v)
- log2 max mv length vertical
- ue(v)
- }
- 1_________________________________________________________________
5
10
15
En el ejemplo de la Tabla 3, los parametros VUI incluyen un indicador anadido sub_pic_cpb_params_present_flag, en relacion con la HEVC convencional. La semantica para este indicador puede definirse como se indica a continuacion: sub_pic_cpb_params_present_flag que es igual a 1 puede especificar que los parametros de retardo de eliminacion de CPB a nivel de subimagen estan presentes y la CPB puede funcionar a nivel de unidad de acceso o a nivel de subimagen. La variable sub_pic_cpb_flag que es igual a 0 puede especificar que los parametros de retardo de eliminacion de CPB a nivel de subimagen no estan presentes y la CPB tiene que funcionar a nivel de unidad de acceso. Cuando sub_pic_cpb_params_present_flag no esta presente, su valor puede ajustarse a o inferirse para ser igual a 0.
Tambien pueden usarse elementos de sintaxis para indicar los tiempos de eliminacion de CPB de unidades de decodificacion, usando la semantica que se describe a continuacion. En este ejemplo, los elementos de sintaxis pueden indicarse en un mensaje SEI del perfodo de almacenamiento intermedio, por ejemplo, de acuerdo con el ejemplo de la Tabla 4:
Tabla 4
- buffering period(payloadSize) {
- Descriptor
- seq_parameter_set_id
- ue(v)
- if(IndicadorNalHrdBpPresente) {
- for(SchedSelIdx = 0; SchedSelldx <= cpb cnt minus1; SchedSelIdx++) {
- initial cpb removal delay[SchedSelIdxl
- u(v)
- initial_cpb_removal_delay_offset[SchedSelIdx]
- u(v)
- if(sub pic cpb flag) {
- initial_du_cpb_removal_delay[SchedSelIdx]
- u(v)
- initial du cpb removal delay offset[SchedSelIdxl
- u(v)
- ____}__________________________________________________________
5
10
15
20
25
30
35
- }
- }
- if(VclHrdBpPresentFlag) {
- for(SchedSelIdx = 0; SchedSelldx <= cpb cnt minus1; SchedSelIdx++) {
- initial_cpb_removal_delay[SchedSelIdx]
- u(v)
- initial_cpb_removal_delay_offset[SchedSelIdx]
- u(v)
- if(sub pic cpb flag) {
- initial du cpb removal delay[SchedSelIdx]
- u(v)
- initial du cpb removal delay offset[SchedSelIdx]
- u(v)
- }
- }
- }
- 1_______________________________________________________________
En el ejemplo de la Tabla 4, el mensaje SEI del perfodo de memoria intermedia incluye una condicional anadida con respecto a la HEVC convencional, que incluye ademas, cuando sub_pic_cpb_flag es cierto, que se anaden dos elementos de sintaxis, initial_du_cpb_removal_delay [SchedSelldx] e initial_du_cpb_removal_delay_offset [SchedSelldx]. Esta condicional y elementos de sintaxis anadidos pueden anadirse dentro de una o ambas de las condicionales para cuando NalHrdBpPresentFlag es cierta y/o cuando VclHardBpPresentFlag es cierta.
La Tabla 5 proporciona un ejemplo alternativo en el que se define un mensaje SEI diferente para senalar el retraso inicial de eliminacion de CPB y la compensacion de eliminacion de CPB inicial para la operacion de CPB a nivel de subimagen:
Tabla 5
- du buffering period(payloadSize) {
- Descriptor
- id_de_conjunto_de_parametros_secuenciales
- ue(v)
- if(NalHrdBpPresentFlag) {
- for(SchedSelIdx = 0; SchedSelldx <= cpb cnt minus1; SchedSelIdx++) {
- initial du cpb removal delay[SchedSelIdx]
- u(v)
- initial du cpb removal delay offset[SchedSelIdx]
- u(v)
- }
- }
- if(VclHrdBpPresentFlag) {
- for(SchedSelIdx = 0; SchedSelldx <= cpb cnt minus1; SchedSelIdx++) {
- initial_du_cpb_removal_delay[SchedSelIdx]
- u(v)
- initial du cpb removal delay offset[SchedSelIdx]
- u(v)
- }
- }
- 1__________________________________________________________________
En el ejemplo de la Tabla 4 anterior, cuando NalHrdBpPresentFlag o VclHrdBpPresentFlag son iguales a 1, un mensaje SEI del perfodo de almacenamiento intermedio puede asociarse a cualquier unidad de acceso en el flujo de bits, y un mensaje SEI del perfodo de almacenamiento intermedio puede estar asociado a cada unidad de acceso IDR, con cada unidad de acceso CRA, y con cada unidad de acceso asociado a un mensaje SEI del punto de recuperacion. Para algunas aplicaciones, la presencia frecuente de un mensaje SEI del periodo de almacenamiento intermedio puede ser deseable. En algunos ejemplos, se puede especificar un perfodo de memoria intermedia como el conjunto de unidades de acceso entre las dos casos del mensaje SEI del perfodo de almacenamiento intermedio en orden de decodificacion.
En los ejemplos de las Tablas 4 y 5 anteriores, la variable seq_parameter_set_id variable puede especificar el conjunto de parametros 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 parametros de imagen al que se hace referencia por la imagen codificada primaria asociada al mensaje sEi del periodo de almacenamiento intermedio. En algunos ejemplos, el valor de seq_parameter_set_id puede estar en el intervalo de 0 a 31, inclusive.
En el ejemplo de la Tabla 4 anterior, initial_cpb_removal_delay [SchedSelldx] puede especificar el retardo para la SchedSelldx-esima CPB entre la hora de llegada en la CPB del primer bit de los datos codificados asociados a la unidad de acceso asociada al mensaje SEI perfodo de almacenamiento intermedio y el momento de la eliminacion de la CPB de los datos codificados asociados a la misma unidad de acceso, para el primer perfodo de abultamiento despues de la inicializacion de HRD. Este elemento sintactico puede tener una longitud en bits dada por initial_cpb_removal_delay_length_minus1 + 1. Puede ser 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 puede no
5
10
15
20
25
30
35
40
45
50
exceder 90000 * (CpbSize[SchedSelIdx] BitRate[SchedSelIdx]), el tiempo equivalente del tamano de la CPB en unidades de reloj de 90 kHz, en este ejemplo.
En el ejemplo de la Tabla 4, el elemento de sintaxis initial_cpb_removal_delay_offset[SchedSelIdx] puede ser utilizado para la SchedSelIdx-esima CPB en combinacion con el cpb_removal_delay para especificar el tiempo de entrega inicial de las unidades de acceso codificado a la CPB. El elemento de sintaxis
initial_cpb_removal_delay_offset[SchedSelldx] puede ser en unidades de un reloj de 90 kHz en este ejemplo. El elemento de sintaxis initial_cpb_removal_delay_offset[SchedSelldx] puede ser un codigo de longitud fija cuya longitud en bits se da por initial_cpb_removal_delay_length_minus1 + 1. Este elemento de sintaxis puede no usarse por los decodificadores y puede ser necesario solo para el programador de entrega (HSS) especificado en el Anexo C de HEVC WD6. Durante toda la secuencia del video codificado, la suma de
initial_cpb_removal_delay[SchedSelIdx] e 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 retarde para la SchedSelIdx-esima CPB entre el momento de llegada a la CPB del primer bit de los datos codificados asociados a la primera unidad de decodificacion en la unidad de acceso asociada al mensaje SEI del periodo de almacenamiento intermedio y el momento de la eliminacion de la CPB de los datos codificados asociados a la misma unidad de decodificacion, para el primer periodo de almacenamiento intermedio despues de la inicializacion HRD. Este elemento sintactico puede tener una longitud en bits dada por
initial_cpb_removal_delay_length_minus1 + 1. Este elemento de sintaxis puede ser en unidades de un reloj de 90
kHz en este ejemplo. En este ejemplo, el elemento de sintaxis initial_du_cpb_removal_delay[SchedSelIdx] puede no ser igual a 0 y puede no exceder 90000 * (CpbSize[SchedSelIdx] BitRate[SchedSelIdx]), el tiempo equivalente del tamano de la 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 ser utilizado para la SchedSelIdx-esima CPB en combinacion con el cpb_removal_delay para especificar el tiempo de entrega inicial de las unidades de decodificacion a la CPB. El elemento de sintaxis initial_cpb_removal_delay_offset[SchedSelldx] puede ser 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 codigo de longitud fija cuya longitud en bits se da por initial_cpb_removal_delay_length_minus1 + 1. Este elemento de sintaxis puede no usarse por los decodificadores y puede ser necesario solo para el programador de entrega (HSS) especificado en el Anexo C de HEVC WD6 en este ejemplo.
Durante toda la secuencia del video codificado, la suma de initial_du_cpb_removal_delay[SchedSelIdx] e initial_du_cpb_removal_delay_offset[SchedSelIdx] puede ser constante para cada valor de SchedSelIdx.
La Tabla 6 a continuacion proporciona una sintaxis de mensaje SEI de temporizacion de imagen:
Tabla 6
- pic timing(payloadSize) {
- Descriptor
- if(CpbDpbDelaysPresentFlag) {
- cpb removal delay
- u(v)
- dpb output delay
- u(v)
- if(sub pic cpb flag) {
- num_decoding_units_minusl
- ue(v)
- for(i = 0; i <= num decoding units minus1; i++) {
- num nalus in du minus1[i]
- ue(v)
- du cpb removal delay[i]
- u(v)
- }
- }
- }
- 1_________________________________________________
En este ejemplo, el mensaje SEI de temporizacion de imagen incluye una declaracion condicional anadido para sub_pic_cpb_flag, que cuando es cierto indica un elemento de sintaxis num_decoding_units_minus1 y un bucle que senaliza, para cada una de las unidades de decodificacion, un numb_nalus_in_du_minus1 correspondiente y un du_cpb_removal_delay. Como alternativa, el mapeo de las unidades NAL a cada unidad de decodificacion se puede senalizar usando otros medios, por ejemplo, incluyendo un ID de unidad de decodificacion para cada unidad NAL VCL, por ejemplo, en la cabecera de la unidad nAl, la cabecera de la porcion, o un nuevo mensaje SEI. El ID de decodificacion para cada unidad NAL no VCL puede ser el mismo que la unidad NAL VCL asociada.
La sintaxis del mensaje SEI de temporizacion de imagen en el ejemplo de Tabla 6 puede depender del contenido del
5
10
15
20
25
30
35
40
45
50
55
60
65
conjunto de parametros de secuencia que es activo para la imagen codificada asociada al mensaje SEI de temporizacion de imagen. Sin embargo, a menos que el mensaje SEI de temporizacion de imagen de una unidad de acceso IDR esta precedido de un mensaje SEI del perfodo de almacenamiento intermedio dentro de la misma unidad de acceso, la activacion del conjunto de parametros de secuencia asociado (y, para imagenes IDR que no son la primera imagen en el flujo de bits, la determinacion de que la imagen codificada es una imagen IDR) puede no producirse hasta la decodificacion de la primera unidad NAL de porcion codificada de la imagen codificada. Dado que la unidad NAL de porcion codificada de la imagen codificada puede seguir al mensaje SEI de temporizacion de imagen en el orden de la unidad NAL, puede haber casos en los que un decodificador almacena la RBSP que contiene el mensaje SEI de temporizacion de imagen hasta la determinacion de los parametros del parametro de secuencia que estaran activos para la imagen codificada, y despues realiza el analisis del mensaje SEI de temporizacion de imagen.
La presencia del mensaje SEI de temporizacion de imagen, por el ejemplo de la Tabla 6, en el flujo de bits se puede especificar como se indica a continuacion.
si CpbDpbDelaysPresentFlag es igual a 1, un mensaje SEI de temporizacion de imagen puede estar en cada unidad de acceso de la secuencia de video codificada;
de otro modo, CpbDpbDelaysPresentFlag es igual a 0, ningun mensaje SEI de temporizacion de imagen ha de estar presente en ninguna unidad de acceso de la secuencia de video codificada.
La variable cpb_removal_delay puede especificar cuantos ciclos de reloj (vease la subclausula E.2.1 de HEVC WD6) esperar despues de la eliminacion de la CPB de la unidad de acceso asociada al mensaje SEI del periodo de almacenamiento intermedio mas reciente en una unidad de acceso anterior antes de eliminarse de la memoria intermedia los datos de la unidad de acceso asociados al mensaje SEI de temporizacion de imagen. Este valor tambien puede usarse para calcular un tiempo lo mas temprano posible de llegada de datos de la unidad de acceso a la CPB para el HSS, como se especifica en el Anexo C de HEVC WD6. El elemento de sintaxis puede ser un codigo de longitud fija, cuya longitud en bits se da por cpb_removal_delay_length_minus1 + 1. El cpb_removal_delay puede ser el resto de un contador de modulo (cpb_removal_delay_length_minusl + 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 parametros de secuencia que esta activo para la imagen codificada asociada al mensaje SEI de temporizacion de imagen. Sin embargo, cpb_removal_delay puede especificar un numero de ciclos de reloj en relacion con el tiempo de eliminacion de la unidad de acceso anterior que contiene un mensaje SEI del perfodo de almacenamiento intermedio, que puede ser una unidad de acceso de una secuencia de video codificado diferente.
La variable dpb_output_delay puede usarse para computar el tiempo de salida de DPB de la imagen. Esta variable puede especificar el numero de ciclos de reloj a esperar despues de la eliminacion de la ultima unidad de decodificacion de una unidad de acceso de la CPB antes de que la imagen decodificada se transmita desde la DPB (vease la subclausula C.2. de HEVC WD6). Una imagen puede no eliminarse de la DPB en su tiempo de salida cuando todavfa esta marcada como "utilizada como referencia a corto plazo" o "utilizada como 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 se puede dar 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 tambien puede ser igual a 0.
El tiempo de salida obtenido de dpb_output_delay de cualquier imagen que se transmite desde un tiempo de salida conforme al decodificador como se especifica en la subclausula C.2. de HEVC WD6 como se modifica por esta divulgacion, puede preceder al momento de salida obtenido de dpb_output_delay de todas las imagenes en cualquier secuencia de video codificada posterior en el orden de decodificacion.
El orden de salida de imagen establecido por los valores de este elemento de sintaxis puede ser el mismo orden que se establece por los valores de PicOrderCnt() como se especifica por la subclausula C.5 de HEVC WD6.
Para las imagenes que no se transmiten por el proceso de "abultamiento" de la subclausula C.5 de HEVC WD6 como se modifica por esta divulgacion, porque preceden, en orden de decodificacion, a una imagen IDR con no_output_of_prior_pics_flag igual a 1 o deducirse como igual a 1, los tiempos de salida obtenidos de dpb_output_delay pueden estar aumentando con el valor en aumento de PicOrderCnt () con respecto a todas las imagenes dentro de la misma secuencia de video codificada.
La variable num_decoding_units_minus1 mas 1 puede especificar el numero de unidades de decodificacion en la unidad de acceso a la que esta asociado mensaje SEI de temporizacion de imagen. El valor de num_decoding_units_minus1 puede estar en el intervalo de 0 a X, inclusive, por ejemplo.
5
10
15
20
25
30
35
40
45
50
55
60
65
La variable num_nalus_in_du_minus1[i] plus 1 puede especificar el numero de unidades NAL en la i-esima unidad de decodificacion de la unidad de acceso a la que esta asociado el mensaje SEI de temporizacion de imagen. El valor de num_nalus_in_du_minus1 [i] puede estar en el intervalo de 0 a X, inclusive, por ejemplo.
La primera unidad de decodificacion de la unidad de acceso puede incluir las primeras unidades NAL consecutivas num_nalus_in_du_minus1 [0] + 1 en el orden de decodificacion en la unidad de acceso. La i-esima (con i mayor que 0) unidad de decodificacion de la unidad de acceso puede incluir las unidades NAL consecutivas num_nalus_in_du_minus1 [i] + 1 inmediatamente despues de la ultima unidad NAL en la unidad de decodificacion anterior de la unidad de acceso, en orden de decodificacion. Puede haber al menos una unidad NAL VCL en cada unidad de decodificacion, por ejemplo.
La variable du_cpb_removal_delay[i] puede especificar cuantos ciclos de reloj (vease la subclausula E.2.1 de HEVC WD6) esperar despues de la eliminacion de la CPB de la primera unidad de decodificacion en la unidad de acceso asociada al mensaje SEI del periodo de almacenamiento intermedio mas reciente en una unidad de acceso anterior antes de eliminarse de la CPB la i-esima unidad de decodificacion en la unidad de acceso asociada al mensaje SEI de temporizacion de imagen. Este valor tambien puede usarse para calcular un tiempo lo mas temprano posible de llegada de datos de la unidad de decodificacion a la CPB para el HSS, como se especifica en el Anexo C de HEVC WD6. El elemento de sintaxis puede ser un codigo de longitud fija, cuya longitud en bits puede darse por cpb_removal_delay_length_minus1 + 1. El du_cpb_removal_delay[i] puede ser el resto de un contador de modulo (cpb_removal_delay_length_minusl + 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 parametros de secuencia que esta activo para la imagen codificada asociada al mensaje SEI de temporizacion de imagen. Sin embargo, du_cpb_removal_delay [i] especifica un numero de ciclos de reloj en relacion con el tiempo de eliminacion de la primera unidad de decodificacion en la unidad de acceso anterior que contiene un mensaje SEI del periodo de almacenamiento intermedio, que puede ser una unidad de acceso de una secuencia de video codificado diferente.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video 20 que puede implementar tecnicas implicadas en el almacenamiento de una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, para obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones, como se describe en esta divulgacion. El codificador de video 20 puede realizar la intra e inter- codificacion de bloques dentro de tramas de video, incluyendo unidades de codificacion (CU), o subCU de CU. La intra-codificacion se apoya en la prediccion espacial para reducir o eliminar la redundancia espacial en el video dentro de una trama de video dada. La inter-codificacion se apoya en la prediccion temporal para reducir o eliminar la redundancia temporal en el video dentro de tramas adyacentes de una secuencia de video. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresion con base espacial y los inter-modos tales como la prediccion unidireccional (modo P) o prediccion bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresion con base temporal. Aunque algunos componentes para la codificacion inter-modo se representan en la figura 2, se debe entender que el codificador de video 20 puede incluir ademas componentes para la codificacion intra-modo, tal como la unidad de intra-prediccion 46. Los componentes adicionales que tambien pueden incluirse no se ilustran en la figura 2 con fines de brevedad y claridad.
Como se muestra en la figura 2, el codificador de video 20 recibe bloques de video incluyendo un bloque de video actual en una trama de video que va a codificarse. En el ejemplo de la figura 2, el codificador de video 20 incluye una unidad de compensacion de movimiento 44, una unidad de estimacion de movimiento 42, una memoria de imagenes de referencia 64, un sumador 50, una unidad de transformacion 54, una unidad de cuantificacion 90, una unidad de codificacion por entropfa 56, una memoria intermedia 90, y una memoria intermedia de imagenes codificadas 92. Para la reconstruccion de bloques de video, el codificador de video 20 incluye ademas una unidad de cuantificacion inversa 58, una unidad de transformada inversa 60 y un sumador 62.
Durante el proceso de codificacion, el codificador de video 20 recibe una trama o un fragmento de video que va a codificarse. La trama o el fragmento puede estar dividido en multiples bloques de video. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 llevan a cabo una codificacion de inter-predictiva del bloque de video recibido con respecto a uno o mas bloques de uno o mas tramas de referencia para proporcionar una compresion temporal. La unidad de intra-prediccion 46 tambien puede llevar a cabo una codificacion intra- predictiva del bloque de video recibido con respecto a uno o mas bloques vecinos de la misma trama o fragmento que el bloque que va a codificarse para proporcionar compresion espacial.
La unidad de seleccion de modo 40 puede seleccionar uno de los modos de codificacion (intra o inter), por ejemplo en funcion de los resultados de error, y puede proporcionar el bloque intra-codificado o inter-codificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para usarse como una trama de referencia.
5
10
15
20
25
30
35
40
45
50
55
60
65
La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimacion de movimiento es el proceso de generar vectores de movimiento, que estiman el movimiento para los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un bloque predictivo de una trama de referencia predictiva (u otra unidad codificada) con respecto al bloque actual que esta codificandose en la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se corresponde estrechamente con el bloque que va a codificarse, en lo que respecta a la diferencia de pixeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), una suma de diferencia de cuadrados (SSD) u otras metricas de diferencia. Un vector de movimiento tambien puede indicar el desplazamiento de una particion de un macrobloque. La compensacion de movimiento puede implicar extraer o generar el bloque predictivo en funcion del vector de movimiento determinado por la estimacion de movimiento. Como se aprecia, la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden combinarse de manera funcional en algunos ejemplos.
En el caso de la inter-codificacion, la unidad de estimacion de movimiento 42 calcula un vector de movimiento para el bloque de video de una trama inter-codificada mediante la comparacion del bloque de video a los bloques de video de una trama de referencia en la memoria de imagenes de referencia 64. La unidad de compensacion de movimiento 44 tambien puede interpolar pixeles subenteros de la trama de referencia, por ejemplo, una trama I o una trama P. Como un ejemplo, los vectores de movimiento se pueden predecir a partir de dos listas de tramas de referencia: lista 0, que incluye las tramas de referencia que tienen un orden de visualizacion antes de la codificacion de una trama actual, y la lista 1, que incluye las tramas de referencia que tienen un orden de visualizacion posterior a la trama actual que se esta codificando. Por lo tanto, los datos almacenados en la memoria de imagenes de referencia 64 pueden organizarse de acuerdo con estas dos listas de tramas de referencia.
La unidad de estimacion de movimiento 42 compara bloques de una o mas tramas de referencia de la memoria de imagenes 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 imagenes de referencia 64 incluyen valores para pixeles de subnumeros entero, un vector de movimiento calculado por la unidad de estimacion de movimiento 42 puede referirse a una ubicacion de pixel subentero de una trama de referencia. La unidad de estimacion de movimiento 42 y/o la unidad de compensacion de movimiento 44 tambien puede configurarse para calcular valores de posiciones de pixeles subenteros de tramas de referencia almacenados en la memoria de imagenes de referencia 64 si no hay valores de posiciones de pixeles subenteros almacenados en la memoria de imagenes de referencia 64. La unidad de estimacion de movimiento 42 envfa el vector de movimiento calculado a la unidad de codificacion por entropfa 56 y a la unidad de compensacion de movimiento 44. El bloque de trama de referencia identificado por un vector de movimiento puede denominarse como un bloque predictivo.
La unidad de compensacion de movimiento 44 puede calcular los datos de prediccion en base al bloque predictivo. El codificador de video 20 forma un bloque de video residual sustrayendo los datos de prediccion proporcionados por la unidad de compensacion de movimiento 44 del bloque de video original que esta codificandose. El sumador 50 representa el componente o los componentes que llevan a cabo esta operacion de sustraccion. La unidad de transformada 52 aplica una transformada, tal como una transformada discreta del coseno (DCT) o una transformada conceptualmente similar, al bloque residual, generando un bloque de video que comprende valores de coeficientes de transformada residuales. La unidad de transformada 52 puede llevar a cabo otras transformadas, tales como las definidas por el estandar H.264, que son conceptualmente similares a la DCT. Como otros ejemplos, la unidad de transformada 52 puede realizar transformadas de ondfcula, las transformadas de numeros enteros, las transformadas de subbandas, u otros tipos de transformadas. La unidad de transformada 52 aplica la transformada al bloque residual, generando un bloque de coeficientes de transformada residuales. La transformada puede convertir la informacion residual desde un dominio de valor de pixel a un dominio de transformada, tal como un dominio de frecuencia. La unidad de cuantificacion 54 cuantifica los coeficientes de transformacion residuales para reducir adicionalmente la velocidad de bits. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos o todos los coeficientes. El grado de cuantificacion puede modificarse ajustando un parametro de cuantificacion.
Tras la cuantificacion, la unidad de codificacion por entropfa 56 codifica por entropfa los coeficientes de transformacion cuantificados. Por ejemplo, la unidad de codificacion por entropfa 56 puede realizar la codificacion de longitud variable adaptable al contenido (CAVLC), la codificacion aritmetica binaria adaptable al contexto (CABAC), la codificacion de entropfa mediante division en intervalos de probabilidad (PIPE) u otra tecnica de codificacion de entropfa. Despues de la codificacion por entropfa por la unidad de codificacion de entropfa 56, los datos de video codificados pueden almacenarse en memoria intermedia o almacenarse mas o menos temporalmente en un memoria intermedia de imagen codificada 92, transmitirse a otro dispositivo, y/o archivarse para su posterior transmision o recuperacion. En el caso de una codificacion aritmetica binaria adaptativa de contexto, el contexto puede basarse en macrobloques vecinos.
En algunos casos, la unidad de codificacion de entropfa 56 u otra unidad de codificador de video 20 pueden estar configuradas para realizar otras funciones de codificacion, ademas de la codificacion de entropfa. Por ejemplo, la unidad de codificacion de entropfa 56 puede estar configurada para determinar los valores de patron de bloque codificado (CBP) valores para los macrobloques y particiones. Ademas, en algunos casos, la unidad de codificacion
5
10
15
20
25
30
35
40
45
50
55
60
65
por entropfa 56 puede realizar una codificacion de longitud de ejecucion de los coeficientes en una unidad de codificacion mayor (LCU) o una subCU de una LCU. En particular, la unidad de codificacion de entropfa 56 puede aplicar una exploracion en zigzag u otro patron de exploracion para explorar los coeficientes de transformacion en una LCU o particion y codificar realizaciones de ceros para una mayor compresion. La unidad de codificacion por entropfa 56 y/o otros elementos de codificador de video 20 tambien pueden formar unidades de decodificacion de datos de video codificados. Las unidades de decodificacion pueden ser subimagenes, tal como una secuencia de bloques de arbol, una o mas porciones, una o mas ondas, y/o una o mas piezas, por ejemplo. La unidad de codificacion por entropfa 56 y/u otros elementos del codificador de video 20 tambien pueden anadir datos de relleno para las subimagenes con diferentes tamanos para lograr la alineacion de bytes. La unidad de codificacion por entropfa 56 tambien puede construir la informacion de cabecera con los elementos de sintaxis adecuados para la transmision en el flujo de bits de video codificado. Por ejemplo, la informacion de cabecera puede incluir datos de senalizacion que indican si las unidades de decodificacion son unidades de acceso o unidades de subacceso. Esto puede incluir la senalizacion de un valor para un indicador preferido de subimagen memoria intermedia de imagenes codificadas, senalado en los parametros HRD. La unidad de codificacion por entropfa 56 y/u otros elementos del codificador de video 20 tambien pueden anadir elementos de sintaxis tales como mensajes SEI del perfodo de almacenamiento en memoria intermedia, parametros VUI de senalizacion, datos de senalizacion indicativos de los puntos de entrada para las diversas subimagenes, y/o tiempos de eliminacion de memoria intermedia para las unidades de decodificacion, por ejemplo.
La unidad de cuantificacion inversa 58 y la unidad de transformada inversa 60 aplican una cuantificacion inversa y una transformacion inversa, respectivamente, para reconstruir el bloque residual en el dominio de pfxeles, por ejemplo para usarse posteriormente como un bloque de referencia. La unidad de compensacion de movimiento 44 puede calcular un bloque de referencia anadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria de imagenes de referencia 64. La unidad de compensacion de movimiento 44 tambien puede aplicar uno o mas filtros de interpolacion al bloque residual reconstruido para calcular valores de fracciones de pixel para su uso en la estimacion de movimiento. El sumador 62 anade el bloque residual reconstruido al bloque de prediccion compensado por movimiento generado por la unidad de compensacion de movimiento 44 para generar un bloque de video reconstruido para su almacenamiento en la memoria de imagenes de referencia 64. El bloque de video reconstruido puede usarse por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 como un bloque de referencia para inter-codificar un bloque en una trama de video posterior.
La memoria de imagenes 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 volatil capaz de almacenar datos, tal como la memoria sfncrona dinamica de acceso aleatorio (SDRAM), memoria de acceso aleatorio dinamica incorporada (eDRAM), o memoria de acceso aleatorio estatica (SRAM). La memoria intermedia 90 puede incluir memorias intermedias y/o memorias intermedias de imagen decodificada y puede operar de acuerdo con cualquier combinacion de comportamientos de memoria intermedia de imagen codificada ejemplar y/o memoria intermedia de imagenes decodificadas que se describen en esta divulgacion. Por ejemplo, el codificador de video 20 puede realizar la gestion de patrones de bloques decodificados (DPB) usando la memoria intermedia 90 y/o la gestion de patrones de bloques codificados (CPB) de la memoria intermedia de imagenes codificadas 92 de acuerdo con tecnicas de esta divulgacion.
La memoria intermedia de imagen codificada 92 puede ser o incluir o incluirse en un dispositivo de almacenamiento de datos, tal como cualquier memoria permanente o volatil capaz de almacenar datos, tal como la memoria sfncrona dinamica de acceso aleatorio (SDRAM), memoria de acceso aleatorio dinamica incorporada (eDRAM), o memoria de acceso aleatorio estatica (SRAM). Aunque se muestra como formando parte del codificador de video 20, en algunos ejemplos, la memoria intermedia de imagenes codificadas 92 puede formar parte de un dispositivo, unidad o modulo externo al codificador de video 20. Por ejemplo, la memoria intermedia de imagenes codificadas 92 puede formar parte de una unidad de programador de flujo (o programador de entrega o programador de flujo hipotetico (HSS)) externo al codificador de video 20. El codificador de video 20 puede formar unidades de decodificacion de datos de video codificados y proporcionar las unidades de decodificacion a la unidad de programador de flujo. El codificador de video 20 puede formar las unidades de decodificacion con diferentes numeros de bits o numeros variables de bloques, en algunos ejemplos. La unidad de programador de flujo puede implementar tecnicas de esta descripcion para enviar las unidades de decodificacion, incluyendo subimagenes, tal como una secuencia de bloques de arbol, una o mas porciones, una o mas ondas, y/o una mas piezas, a un decodificador de video para la decodificacion, en los momentos que pueden indicarse por un tiempo de eliminacion de memoria intermedia obtenidos (por ejemplo, senalados). El codificador de video 20 pueden formar las unidades de decodificacion incluyendo cada una una serie de bloques de codificacion dispuestos de forma continua en el orden de decodificacion, en algunos ejemplos. La unidad de programador de flujo puede desencapsular adicionalmente unidades de acceso para extraer una o mas unidades de capas de abstraccion de red (NAL), incluyendo las unidades de decodificacion. Asimismo, la unidad de programador de flujo puede desencapsular las unidades NAL para extraer las unidades de decodificacion.
El codificador de video 20 puede almacenar unidades de acceso a y eliminar las unidades de acceso de la memoria intermedia de imagen codificada 92 de acuerdo con el comportamiento del decodificador de referencia hipotetico (HRD) como se modifica por tecnicas de esta divulgacion. El codificador de video 20 puede aplicar parametros HRD, incluyendo retardo de eliminacion de CPB inicial, tamano de la CPB, velocidad de bits, retardo de la salida de DPB
5
10
15
20
25
30
35
40
45
50
55
60
65
inicial, y el tamano DPB, asf como los tiempos de eliminacion de la memoria intermedia para las unidades de decodificacion, y valores para los indicadores preferidos de memoria intermedia de imagen codificada de subimagen para indicar si las unidades de decodificacion de los datos de video son o no unidades de acceso o subconjuntos de unidades de acceso, por ejemplo. El codificador de video 20 puede formar mensajes SEI en las unidades de acceso que indican perfodos de almacenamiento intermedio y tiempos de eliminacion de memoria intermedia para las unidades de decodificacion. Por ejemplo, el codificador de video 20 puede proporcionar parametros de informacion de usabilidad de video (VUI) con la sintaxis que incluye un indicador de CPB de subimagen, tal como en el ejemplo de la Tabla 1 anterior.
Las unidades de decodificacion pueden incluir subimagenes de una imagen comun, y el codificador de video 20 puede incluir los tiempos de eliminacion de memoria intermedia para cada una de las subimagenes de la imagen comun en los mensajes SEI para las unidades de acceso. Las diferentes subimagenes se pueden codificar con diferentes cantidades de datos, codificandose algunas subimagenes en diferentes numeros de bits o bloques, y el codificador de video 20 puede formar un tiempo de eliminacion de memoria intermedia respectivo correspondiente para cada una de las subimagenes de una imagen comun. El codificador de video 20 tambien puede codificar algunas imagenes con subimagenes del mismo tamano de los datos. Otros componentes tambien pueden realizar una o mas de las funciones atribuidas anteriormente para el codificador de video 20. Por ejemplo, una unidad de encapsulacion de un dispositivo de origen (tal como el dispositivo de origen 12 de la figura 1) tambien pueden formar mensajes SEI que incluyen cualquiera de los parametros anteriores.
Por lo tanto, el codificador de video 20 puede disponer que cada subimagen puede incluir un numero de bloques de codificacion de una imagen codificada continua en orden de decodificacion, y de tal manera que un bloque de codificacion puede ser identico a un bloque de arbol o un subconjunto de bloques de arbol. El codificador de video 20 puede disponer que la codificacion de subimagenes y la asignacion de bits a diferentes subimagenes en una imagen puede llevarse a cabo sin necesidad de que cada subimagen (es decir, grupo de bloques de arbol) en una imagen se codifique con la misma cantidad de bits. El codificador de video 20 puede indicar el tiempo de eliminacion de la CPB para cada subimagen en el flujo de bits, en lugar de tiempos de eliminacion de CPB que se obtienen de acuerdo con los tiempos de eliminacion de CPB a nivel de imagen senalados. El codificador de video 20 tambien puede incluir mas de una subimagen en una porcion, y aplicar la alineacion de bytes al final de cada subimagen. El codificador de video 20 tambien puede senalizar el punto de entrada de cada subimagen con un valor que indica la alineacion de bytes de al menos una de las subimagenes dentro de un conjunto mayor de los datos de video, tales como una porcion, una pieza, o una trama, por ejemplo. El codificador de video 20 puede aplicar cualquiera una o mas de estas caracterfsticas en diferentes ejemplos de acuerdo con esta divulgacion.
Las ubicaciones que se muestran para la memoria de imagenes de referencia 64, la memoria intermedia 90, y la memoria intermedia de imagenes codificadas 92 en la figura 2 se muestran con fines ilustrativos. La memoria de imagen de referencia 64, la memoria intermedia 90, y la memoria intermedia de imagenes codificadas 92 pueden situarse en un dispositivo de almacenamiento unica o cualquier numero de dispositivos de almacenamiento distintos. Los dispositivos de almacenamiento pueden incluir cualquier combinacion de medios volatiles y/o no volatiles legibles por ordenador.
De esta manera, el codificador de video representa un ejemplo de un codificador de video configurado para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas, entre otras funciones.
La figura 3 es un diagrama de bloques que ilustra un ejemplo del decodificador de video 30, que decodifica una secuencia de video codificada. En el ejemplo de la figura 3, el decodificador de video 30 incluye una unidad de decodificacion de entropfa 70, una unidad de compensacion de movimiento 72, una unidad de intra-prediccion 74, una unidad de cuantificacion inversa 78, una unidad de transformada inversa 80, un sumador 80, una memoria intermedia de imagenes codificadas 94 y una memoria intermedia 96. En algunos ejemplos, el decodificador de video 30 puede llevar a cabo una pasada de decodificacion generalmente recfproca a la pasada de codificacion descrita con respecto al codificador de video 20 (figura 2). La unidad de compensacion de movimiento 72 puede generar datos de prediccion basandose en vectores de movimiento recibidos desde la unidad de decodificacion de entropfa 70.
La unidad de compensacion de movimiento 72 puede usar vectores de movimiento recibidos en el flujo de bits para identificar un bloque de prediccion en tramas de referencia de la memoria de imagenes de referencia 82. La unidad de intra-prediccion 74 puede usar modos de intra-prediccion recibidos en el flujo de bits para formar un bloque de prediccion a partir de bloques espacialmente adyacentes. La unidad de cuantificacion inversa 76 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de bloque cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificacion de entropfa 70. El proceso de cuantificacion inversa puede incluir un proceso convencional, por ejemplo, como el definido por la norma de decodificacion H.264. El proceso de cuantificacion inversa tambien puede incluir el uso de un parametro de cuantificacion QPY calculado por un
5
10
15
20
25
30
35
40
45
50
55
60
65
codificador 20 para cada macrobloque con el fin de determinar el grado de cuantificacion y, asimismo, el grado de cuantificacion inversa que deberfa aplicarse.
La unidad de transformada inversa 78 aplica una transformada inversa, por ejemplo una DCT inversa, una transformada inversa de numero entero o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada con el fin de generar bloques residuales en el dominio de pfxeles. La unidad de compensacion de movimiento 72 genera bloques compensados por movimiento, posiblemente llevando a cabo una interpolacion basada en filtros de interpolacion. Los identificadores de los filtros de interpolacion que van a usarse para la estimacion de movimiento con una precision de fraccion de pixel pueden incluirse en los elementos sintacticos. La unidad de compensacion de movimiento 72 puede usar filtros de interpolacion como los usados por el codificador de video 20 durante la codificacion del bloque de video para calcular valores interpolados para fracciones de pfxeles de un bloque de referencia. La unidad de compensacion de movimiento 72 puede determinar los filtros de interpolacion usados por el codificador de video 20 segun la informacion sintactica recibida y usar los filtros de interpolacion para generar bloques predictivos.
La unidad de compensacion de movimiento 72 usa parte de la informacion sintactica para determinar tamanos de macrobloques usados para codificar trama(s) de la secuencia de video codificada, informacion de division que describe como cada macrobloque de una trama de la secuencia de video codificada esta dividido, modos que indican como cada division esta codificada, una o mas tramas de referencia (y listas de tramas de referencia) para cada macrobloque o division inter-codificado/a y otra informacion para decodificar la secuencia de video codificada. El sumador 80 suma los bloques residuales a los bloques de prediccion correspondientes generados por la unidad de compensacion de movimiento 72 o por la unidad de intra-prediccion para generar bloques decodificados.
La memoria de imagenes de referencia 82 puede incluir la memoria intermedia 96. La memoria intermedia 96 puede ser o incluir en un dispositivo de almacenamiento de datos, tal como cualquier memoria permanente o volatil capaz de almacenar datos, tal como la memoria sfncrona dinamica de acceso aleatorio (SDRAM), memoria de acceso aleatorio dinamica incorporada (eDRAM), o memoria de acceso aleatorio estatica (SRAM). La memoria intermedia 96 puede incluir una o mas memorias intermedias de imagenes y/o una o mas memorias intermedias de imagen decodificada y puede operar de acuerdo con cualquier combinacion de comportamientos de memoria intermedia de imagen codificada ejemplar y/o memoria intermedia de imagenes decodificadas que se describen en esta divulgacion. Por ejemplo, el decodificador de video 30 puede realizar la gestion DPB usando la memoria intermedia 96 y/o la gestion CPB de la memoria intermedia de imagenes codificadas 94 de acuerdo con las tecnicas de esta divulgacion.
La memoria intermedia de imagenes codificadas 94 puede implementarse como un dispositivo de almacenamiento de datos, tal como cualquier memoria permanente o volatil capaz de almacenar datos, tal como la memoria sfncrona dinamica de acceso aleatorio (SDRAM), memoria de acceso aleatorio dinamica incorporada (eDRAM), o memoria de acceso aleatorio estatica (SRAM). La memoria intermedia de imagenes codificadas 94 puede operar de acuerdo con cualquier combinacion de comportamientos de memoria intermedia de imagenes codificadas ejemplares desvelados en el presente documento.
Aunque se muestra como formando parte del decodificador de video 30, en algunos ejemplos, la memoria intermedia de imagenes codificadas 94 puede formar parte de un dispositivo, unidad o modulo externo al decodificador de video 30. Por ejemplo, la memoria intermedia de imagenes codificadas 94 puede formar parte de una unidad de programador de flujo externo al decodificador de video 30. La unidad de programador de flujo puede implementar las tecnicas de esta descripcion para enviar las unidades de decodificacion, incluyendo subimagenes, tal como una secuencia de bloques de arbol, una o mas porciones, una o mas ondas, y/o una mas piezas, a un decodificador de video 30 para la decodificacion, en los momentos indicados por un tiempo de eliminacion de memoria intermedia obtenidos (por ejemplo, senalados). La unidad de programador de flujo puede desencapsular adicionalmente unidades de acceso para extraer una o mas unidades de capas de abstraccion de red (NAL), incluyendo las unidades de decodificacion. Asimismo, la unidad de programador de flujo puede desencapsular las unidades NAL para extraer las unidades de decodificacion.
El decodificador de video 30 puede recibir y almacenar unidades de acceso a y eliminar las unidades de acceso de la memoria intermedia de imagen codificada 94 de acuerdo con el comportamiento del decodificador de referencia hipotetico (HRD) como se modifica por tecnicas de esta divulgacion. El decodificador de video 30 puede decodificar y obtener parametros HRD, incluyendo retardo de eliminacion de CPB inicial, tamano de la CPB, velocidad de bits, retardo de la salida de DPB inicial, y el tamano DPB, asf como los tiempos de eliminacion de la memoria intermedia para las unidades de decodificacion, y valores para los indicadores preferidos de memoria intermedia de imagen codificada de subimagen que senalizan si las unidades de decodificacion de los datos de video son o no unidades de acceso o subconjuntos de unidades de acceso, por ejemplo. El decodificador de video 30 puede decodificar y obtener mensajes SEl en las unidades de acceso que indican perfodos de almacenamiento intermedio y tiempos de eliminacion de memoria intermedia para las unidades de decodificacion. Por ejemplo, el decodificador de video 30 puede decodificar y obtener parametros de informacion de usabilidad de video (VUI) con la sintaxis que incluye un indicador de CPB de subimagen, tal como en el ejemplo de la Tabla 1 anterior.
5
10
15
20
25
30
35
40
45
50
55
60
65
Las unidades de decodificacion pueden incluir subimagenes de una imagen comun, y el decodificador de video 30 puede decodificar y obtener los tiempos de eliminacion de memoria intermedia para cada una de las subimagenes de la imagen comun en los mensajes SEI para las unidades de acceso. Las diferentes subimagenes se pueden codificar con diferentes cantidades de datos, codificandose algunas subimagenes en diferentes numeros de bits o bloques, y el decodificador de video 30 puede decodificar y obtener un tiempo de eliminacion de memoria intermedia respectivo correspondiente para cada una de las subimagenes de una imagen comun. El decodificador de video 30 tambien puede decodificar y obtener algunas imagenes con subimagenes del mismo tamano de los datos.
Por lo tanto, el decodificador de video 30 puede decodificar y obtener subimagenes que pueden incluir un numero de bloques de codificacion de una imagen codificada continua en orden de decodificacion, y de tal manera que un bloque de codificacion puede ser identico a un bloque de arbol o un subconjunto de bloques de arbol. El decodificador de video 30, en algunos ejemplos, puede decodificar y obtener tiempos de eliminacion de la CPB para cada subimagen en el flujo de bits, en lugar de obtener tiempos de eliminacion de CPB de acuerdo con los tiempos de eliminacion de CPB a nivel de imagen senalados. El decodificador de video 30 tambien puede decodificar y obtener mas de una subimagen en una porcion, y puede recibir bytes informacion de compensacion indicativos de los puntos de partida para cada unidad de decodificacion, determinar donde comienza cada unidad de decodificacion, y decodificar y obtener informacion sobre una senal sin datos adicional o senal de relleno que proporciona una alineacion de bytes al final de cada subimagen. El decodificador de video 30 tambien puede obtener el punto de entrada de cada subimagen con un valor que indica la alineacion de bytes de al menos una de las subimagenes dentro de un conjunto mayor de los datos de video, tales como una porcion, una pieza, o una trama, por ejemplo. El decodificador de video 30 puede aplicar cualquiera una o mas de estas caracterfsticas en diferentes ejemplos de acuerdo con esta divulgacion.
Las ubicaciones que se muestran para la memoria de imagenes de referencia 82, la memoria intermedia 96, y la memoria intermedia de imagenes codificadas 94 en la figura 3 se muestran con fines ilustrativos. La memoria de imagen de referencia 82, la memoria intermedia 96, y la memoria intermedia de imagenes codificadas 94 pueden situarse en un dispositivo de almacenamiento unica o cualquier numero de dispositivos de almacenamiento distintos. Los dispositivos de almacenamiento pueden incluir cualquier combinacion de medios volatiles y/o no volatiles legibles por ordenador.
De esta manera, el decodificador de video 30 representa un ejemplo de un codificador de video configurado para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes, obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, eliminar las unidades de decodificacion de la memoria intermedia de imagenes de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion, y codificar datos de video correspondientes a las unidades de decodificacion eliminadas.
La figura 4 es un diagrama de bloques que ilustra un dispositivo de destino ejemplar 100 que puede implementar cualquiera o todas las tecnicas de esta divulgacion. En este ejemplo, el dispositivo de destino 100 incluye una interfaz de entrada 102, el programador de flujo 104, la memoria intermedia de imagenes codificadas 106, el decodificador de video 108, memoria intermedia de imagenes decodificadas 110, la unidad de representacion 112, y la interfaz de salida 114. El dispositivo de destino 100 puede corresponder sustancialmente al dispositivo de origen 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 video. Por ejemplo, la interfaz de entrada 102 puede comprender un receptor 26 y/o un modem 28 como en la figura 1, una interfaz de red, tal como una interfaz inalambrica o por cable, una memoria o una interfaz de memoria, una unidad para leer los datos de un disco, tal como una interfaz de unidad optica o una interfaz de medios magneticos, o cualquier otro componente de interfaz.
La interfaz de entrada 102 puede recibir un flujo de bits codificados que incluye datos de video y proporcionar el flujo de bits al programador de flujo 104. De acuerdo con las tecnicas de esta divulgacion, el programador de flujo 104 extrae unidades de datos de video, tales como unidades de acceso y/o unidades de decodificacion, del flujo de bits y almacena las unidades extrafdas en la memoria intermedia de imagen codificada 106. De esta manera, el programador de flujo 104 representa un ejemplo de implementacion de un HSS como se analiza en los ejemplos anteriores. La memoria intermedia de imagenes codificadas 106 puede adaptarse sustancialmente a la memoria intermedia de imagen codificada 94 (figura 3), excepto que, como se muestra en la figura 4, la memoria intermedia de imagenes codificadas 106 esta separada del decodificador de video 108. La memoria intermedia de imagenes codificadas 106 puede estar separada de o integrada como parte del decodificador de video 108 en diferentes ejemplos.
El decodificador de video 108 incluye una memoria intermedia de imagenes decodificadas 110. El decodificador de video 108 puede adaptarse sustancialmente al decodificador de video 30 de las figuras 1 y 3. La memoria intermedia de imagenes decodificadas 110 puede adaptarse sustancialmente a la memoria intermedia 96. Por lo tanto, el decodificador de video 108 puede decodificar las unidades de decodificacion de la memoria intermedia de imagen codificada 106 de acuerdo con las tecnicas de esta divulgacion.
Ademas, el decodificador de video 108 puede transmitir imagenes decodificadas desde la memoria intermedia de
5
10
15
20
25
30
35
40
45
50
55
60
65
imagen decodificada 110 de acuerdo con las tecnicas de esta divulgacion, como se ha analizado anteriormente. El decodificador de video 108 puede transmitir imagenes de salida a la unidad de representacion 112. La unidad de representacion 112 puede recortar las imagenes como se ha analizado anteriormente, de acuerdo con las tecnicas de esta divulgacion, despues, puede pasar las imagenes recortadas a la interfaz de salida 114. La interfaz de salida 114, a su vez, puede proporcionar las imagenes recortadas a un dispositivo de visualizacion, que puede adaptarse sustancialmente al dispositivo de visualizacion 32. El dispositivo de visualizacion puede formar parte de dispositivo de destino 100, o puede estar acoplado de forma comunicativa al dispositivo de destino 100. Por ejemplo, el dispositivo de visualizacion puede comprender una pantalla, pantalla tactil, proyector, u otra unidad de visualizacion integrada con el dispositivo de destino 100, o puede comprender una pantalla independiente, tal como un televisor, monitor, proyector, pantalla tactil u otro dispositivo que esta acoplado en comunicacion al dispositivo de destino 100. El acoplamiento comunicativo puede comprender un acoplamiento con cable o inalambrico, tal como mediante un cable coaxial, cable de video compuesto, cable de video componente, un cable de interfaz multimedia de alta definicion (HDMI), una emision de radio-frecuencia, u otro acoplamiento con cable o inalambrico.
La figura 5 es un diagrama de flujo que ilustra un procedimiento ejemplar que incluye la eliminacion de unidades de decodificacion de datos de video de una memoria intermedia de imagenes de acuerdo con un tiempo de eliminacion de memoria intermedia obtenido, por ejemplo, por el decodificador de video 30 de las figuras 1 o 3 o un decodificador de video 108 de la figura 4 (en conjunto "decodificador de video 30/108"), de acuerdo con tecnicas de esta divulgacion. El procedimiento ejemplar de la figura 5 puede describirse como realizandose por el decodificador de video 30/108 como un ejemplo, con el entendimiento de que cualquier uno o mas aspectos del procedimiento de la figura 5 tambien pueden realizarse por o implementarse con otros dispositivos o componentes. En el ejemplo de la figura 5, el decodificador de video 30/108 puede almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagenes (202). El decodificador de video 30/108 puede obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion, donde obtener el tiempo de eliminacion de memoria intermedia respectivo comprende recibir un valor senalado respectivo indicativo del tiempo de eliminacion de memoria intermedia respectivo para al menos una de las unidades de decodificacion (204). El decodificador de video 30/108 puede eliminar las unidades de decodificacion de la memoria intermedia de imagen de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion (206). El decodificador de video 30/108 tambien puede codificar datos de video correspondientes a las unidades de decodificacion eliminadas, donde la codificacion de los datos de video comprende la decodificacion de la al menos una de las unidades de decodificacion (208). El decodificador de video 30/108 y/o otros dispositivos o elementos tambien pueden realizar funciones diferentes o adicionales en otros ejemplos.
La figura 6 es un diagrama de flujo que ilustra otro procedimiento ejemplar, similar en algunos aspectos al procedimiento de la figura 5, que incluye la eliminacion de unidades de decodificacion de datos de video de una memoria intermedia de imagenes de acuerdo con un tiempo de eliminacion de memoria intermedia obtenido, por ejemplo, por el decodificador de video 30 de las figuras 1 o 3 o un decodificador de video 108 de la figura 4 (en conjunto "decodificador de video 30/108"), de acuerdo con tecnicas de esta divulgacion. El procedimiento ejemplar de la figura 6 tambien puede describirse como realizandose por el decodificador de video 30/108 como un ejemplo, con el entendimiento de que cualquier uno o mas aspectos del procedimiento de la figura 6 tambien pueden realizarse por o implementarse con otros dispositivos o componentes. En el ejemplo de la figura 6, el decodificador de video 30/108 puede almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagen codificada (CPB) (402), obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion (404), eliminar las unidades de decodificacion de la CPB de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion (406), determinar si la CPB funciona a nivel de unidad de acceso o a nivel de subimagen (408), y codificar datos de video correspondientes a las unidades de decodificacion eliminadas (410). Si la CPB funciona a nivel de unidad de acceso, la codificacion de los datos de video incluye unidades de acceso comprendidas en las unidades de decodificacion (412). Si la CPB funciona a nivel de subimagen, la codificacion de los datos de video incluye subconjuntos de unidades de acceso comprendidas en las unidades de decodificacion (414).
Por ejemplo, si el decodificador de video 30/108 determina que la CPB opera a nivel de unidad de acceso, el decodificador de video 30/108 puede codificar las unidades de acceso de datos de video correspondientes a las unidades de decodificacion eliminadas (412). Si el decodificador de video 30/108 determina que la CPB opera a nivel de subimagen, el decodificador de video 30/108 puede codificar subconjuntos de unidades de acceso de datos de video correspondientes a las unidades de decodificacion eliminadas (414). Por ejemplo, el decodificador de video 30/108 puede determinar que la una o mas unidades de decodificacion comprenden unidades de acceso determinando que un indicador preferido de memoria intermedia de imagen codificada de subimagen (por ejemplo, SubPicCpbPreferredFlag) es negativo o tiene un valor de cero o que un indicador presente de parametros de memoria intermedia de imagen codificada de subimagen (por ejemplo, sub_pic_cpb_params_present_flag) es negativo o tiene un valor de cero. El decodificador de video 30/108 puede determinar que la una o mas unidades de decodificacion comprenden subconjuntos de unidades de acceso determinando que tanto un indicador preferido de memoria intermedia de imagen codificada de subimagen (por ejemplo, SubPicCpbPreferredFlag) es positivo o tiene un valor de uno, como que un indicador presente de parametros de memoria intermedia de imagen codificada de subimagen (por ejemplo, sub_pic_cpb_params_present_flag) es positivo o tiene un valor de uno. El decodificador de video 30/108 tambien puede utilizar un unico indicador de memoria intermedia de imagen codificada de subimagen,
5
10
15
20
25
30
35
40
45
50
55
60
65
SubPicCpbFIag, que puede ajustarse en SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag, para determinar si ambos indicadores son positivos y que el decodificador de video 30/108 puede codificar subconjuntos de unidades de acceso.
La figura 7 es un diagrama de flujo que ilustra otro procedimiento ejemplar de datos de video de procesamiento que incluye la salida de una imagen recortada en un proceso de abultamiento, por ejemplo, por el decodificador de video 30 de las figuras 1 o 3 o un decodificador de video 108 de la figura 4 (en conjunto "decodificador de video 30/108"), de acuerdo con tecnicas de esta divulgacion. En el ejemplo de la figura 7, el decodificador de video 30/108 puede realizar un proceso de abultamiento si se cumple cualquiera de ciertas condiciones, como se ha descrito anteriormente con referencia a los ejemplos de proceso de abultamiento. En particular, el decodificador de video 30/108 puede realizar un proceso de abultamiento si una imagen actual es una imagen de regeneracion de decodificacion instantanea (IDR) (302) y una salida nula del indicador de imagenes anterior tiene un valor que no es igual a uno (304), que puede incluir si la salida nula del indicador de imagenes anterior tiene un valor que no se deduce como igual a 1 o ajustarse para que sea igual a 1, por ejemplo, por el HRD. El decodificador de video 30/108 tambien puede realizar un proceso de abultamiento si un numero de imagenes en una memoria intermedia de imagenes decodificadas (DPB) que estan marcadas como sea necesario para la salida es mayor que un numero de imagenes de reordenamiento en una capa temporal actual (306). El decodificador de video 30/108 tambien puede realizar un proceso de abultamiento si un numero de imagenes en la DPB con los valores de identificador de capa temporal inferiores o iguales al valor del identificador de capa temporal de una imagen actual es igual a un valor de almacenamiento intermedio de imagen maximo de la capa temporal actual mas uno (308).
Si se cumple cualquiera de las condiciones especificadas (302 y 304, o 306, o 308), el decodificador de video 30/108 puede llevar a cabo un proceso de abultamiento como se indica a continuacion. El decodificador de video 30/108 puede seleccionar una imagen que tiene un valor de recuento de orden de imagen menor mas pequeno (POC) de imagenes en la DPB y que se marca como sea necesario para la salida como una imagen seleccionada (312). El decodificador de video 30/108 puede recortar la imagen seleccionada como se especifica en un conjunto de parametros de secuencia activa para la imagen seleccionada, generando de este modo una imagen recortada en base a la imagen seleccionada (314). El decodificador de video 30/108 puede transmitir la imagen recortada (316). El decodificador de video 30/108 puede marcar la imagen seleccionada como no sea necesaria para la transmision (318).
En uno o mas ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinacion de los mismos. Si se implementan en software, las funciones pueden almacenarse en, o transmitirse como una o mas instrucciones o codigo en un medio legible por ordenador, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como medios de almacenamiento de datos o medios de comunicacion que incluyen cualquier medio que facilite la transferencia de un programa informatico desde un lugar a otro, por ejemplo, segun un protocolo de comunicaciones. De esta manera, los medios legibles por ordenador pueden corresponder, generalmente, a (1) medios de almacenamiento tangibles y legibles por ordenador, que sean no transitorios, o (2) un medio de comunicacion tal como una senal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible, al que sea pueda acceder por uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para la implementacion de las tecnicas descritas en esta divulgacion. Un producto de programa informatico puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de manera limitativa, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, rOm, EEPROM, CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico u otros dispositivos de almacenamiento magnetico, memoria flash o cualquier otro medio que pueda usarse para almacenar codigo de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Ademas, cualquier conexion puede denominarse adecuadamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra optica, un par trenzado, una lfnea de abonado digital (DSL) o tecnologfas inalambricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologfas inalambricas tales como infrarrojos, radio y microondas se incluyen en la definicion de medio. Sin embargo, deberfa entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, senales u otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. Los discos, como se usan en el presente documento, incluyen el disco compacto (CD), el disco de laser, el disco optico, el disco versatil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos normalmente reproducen datos de manera magnetica, mientras que otros discos reproducen los datos de manera optica con laser. Las combinaciones de lo que antecede tambien deben incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores de proposito general, circuitos integrados aplicacion especifica (ASIC), matrices logicas de campo programable (FPGA) u otros circuitos logicos integrados o discretos equivalentes. Por consiguiente, el termino "procesador", como se usa en el presente documento, puede referirse a cualquier estructura
anterior o a cualquier otra estructura adecuada para la implementacion de las tecnicas descritas en el presente documento. Ademas, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse en hardware dedicado y/o modulos de software configurados para la codificacion y la decodificacion, o incorporarse en un codec combinado. Ademas, las tecnicas podrfan implementarse completamente en uno o mas 5 circuitos o elementos logicos.
Las tecnicas de esta divulgacion se pueden implementar en una gran variedad de dispositivos o aparatos, incluyendo un equipo de mano inalambrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Varios componentes, modulos o unidades se describen en esta divulgacion para enfatizar aspectos 10 funcionales de dispositivos configurados para realizar las tecnicas divulgadas, pero no requieren necesariamente la realizacion mediante diferentes unidades de hardware. Mas bien, como se ha descrito anteriormente, pueden combinarse diversas unidades en una unidad de hardware de codec o ser proporcionadas por una coleccion de unidades de hardware interoperativas, incluyendo uno o mas procesadores, como se ha descrito anteriormente, junto con el software y/o firmware adecuado.
15
Se han descrito diversos ejemplos. Estos y otros ejemplos estan dentro del alcance de las siguientes reivindicaciones.
Claims (14)
1.
10
15
2.
20
25
3. 30
4.
35 5.
6.
40
45
7.
50
8.
55
9.
60
REIVINDICACIONES
Un procedimiento de codificacion de datos de video, comprendiendo el procedimiento:
almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagen codificada (CPB);
obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion;
eliminar las unidades de decodificacion de la CPB de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion; determinar si la CPB funciona a nivel de unidad de acceso o nivel de subimagen; y codificar los datos de video correspondientes a las unidades de decodificacion eliminados, en el que, si la CPB funciona a nivel de unidad de acceso, la codificacion de los datos de video comprende la codificacion de unidades de acceso comprendidas en las unidades de decodificacion; y en el que, si la CPB funciona a nivel de subimagen, la codificacion de los datos de video comprende subconjuntos de unidades de acceso comprendidas en las unidades de decodificacion.
El procedimiento de la reivindicacion 1, en el que la determinacion de si la CPB funciona a un nivel de unidad de acceso o nivel de subimagen comprende:
determinar que la CPB opera a nivel de unidad de acceso si un indicador de memoria intermedia de imagen codificada de subimagen preferido tiene un valor de cero o si un indicador de parametros de memoria intermedia de imagen codificada de subimagen presente tiene un valor de cero; y determinar que la CPB opera a nivel de subimagen si tanto el indicador de memoria intermedia de imagen codificada de subimagen preferido tiene un valor de uno y el indicador de parametros de memoria intermedia de imagen codificada de subimagen presente tiene un valor de uno.
El procedimiento de la reivindicacion 2, que comprende ademas recibir el valor para el indicador de memoria intermedia de imagen codificada de subimagen preferido.
El procedimiento de la reivindicacion 2, que comprende ademas establecer un valor de cero para el indicador preferido de memoria intermedia de imagen codificada de subimagen si no se recibe un valor para el indicador preferido de memoria intermedia de imagen codificada de subimagen.
El procedimiento de la reivindicacion 2, que comprende ademas recibir el valor para el indicador presente de parametros de memoria intermedia de imagen codificada de subimagen.
El procedimiento de la reivindicacion 1, que comprende ademas:
recibir las una o mas unidades de decodificacion de datos de video en un orden de decodificacion continuo,
en el que el almacenamiento de las una o mas unidades de decodificacion de datos de video en la CPB comprende el almacenamiento de las una o mas unidades de decodificacion de datos de video en el orden de decodificacion continuo en la CPB.
El procedimiento de la reivindicacion 1, en el que la obtencion del tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion comprende recibir un valor senalado respectivo indicativo del tiempo de eliminacion de memoria intermedia respectivo para al menos una de las unidades de decodificacion.
El procedimiento de la reivindicacion 7, en el que el valor senalado indicativo del tiempo de eliminacion de memoria intermedia para la al menos una de las unidades de decodificacion comprende un valor senalado indicativo de varias unidades de capa de abstraccion de red (NAL) comprendidas por la al menos una de las unidades de decodificacion.
Un aparato para codificar datos de video, comprendiendo el aparato:
medios para almacenar una o mas unidades de decodificacion de datos de video en una memoria intermedia de imagen codificada (CPB);
medios para obtener un tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion;
medios para eliminar las unidades de decodificacion de la CPB de acuerdo con el tiempo de eliminacion de memoria intermedia obtenido para cada una de las unidades de decodificacion; medios para determinar si la CPB funciona a nivel de unidad de acceso o nivel de subimagen; y medios para codificar los datos de video correspondientes a las unidades de decodificacion eliminados,
5
10
15
20
25
30
35
40
45
50
en el que, si la CPB funciona a nivel de unidad de acceso, los medios para codificar los datos de video comprenden medios para codificar unidades de acceso comprendidas en las unidades de decodificacion;
y
en el que, si la CPB funciona a nivel de subimagen, los medios para codificar los datos de video comprenden medios para codificar subconjuntos de unidades de acceso comprendidas en las unidades de decodificacion.
10. El aparato de la reivindicacion 9, en el que los medios para determinar si la CPB funciona a nivel de unidad de acceso o nivel de subimagen comprende:
medios para determinar que la CPB opera a nivel de unidad de acceso si un indicador de memoria intermedia de imagen codificada de subimagen preferido tiene un valor de cero o si un indicador de
parametros de memoria intermedia de imagen codificada de subimagen presente tiene un valor de cero; y
medios para determinar que la CPB opera a nivel de subimagen si tanto el indicador de memoria intermedia de imagen codificada de subimagen preferido tiene un valor de cero o el indicador de
parametros de memoria intermedia de imagen codificada de subimagen presente tiene un valor de uno.
11. El aparato de la reivindicacion 10, que comprende adicionalmente:
medios para recibir el valor para el indicador de memoria intermedia de imagen codificada de subimagen preferido;
medios para establecer un valor de cero para el indicador preferido de memoria intermedia de imagen codificada de subimagen si no se recibe un valor para el indicador preferido de memoria intermedia de imagen codificada de subimagen; o
medios para recibir el valor para el indicador presente de parametros de memoria intermedia de imagen codificada de subimagen.
12. El aparato de la reivindicacion 9, que comprende adicionalmente:
medios para recibir las una o mas unidades de decodificacion de datos de video en un orden de decodificacion continuo,
en el que los medios para el almacenamiento de las una o mas unidades de decodificacion de datos de video en la CPB comprenden medios para el almacenamiento de las una o mas unidades de decodificacion de datos de video en el orden de decodificacion continuo en la CPB.
13. El aparato de la reivindicacion 9, en el que los medios para obtener el tiempo de eliminacion de memoria intermedia respectivo para las una o mas unidades de decodificacion comprenden medios para recibir un valor senalado respectivo indicativo del tiempo de eliminacion de memoria intermedia respectivo para al menos una de las unidades de decodificacion.
14. El aparato de la reivindicacion 13, en el que el valor senalado indicativo del tiempo de eliminacion de memoria intermedia para la al menos una de las unidades de decodificacion comprende un valor senalado indicativo de varias unidades de capa de abstraccion de red (NAL) comprendidas por la al menos una de las unidades de decodificacion.
15. Un producto de programa informatico que comprende un medio legible por ordenador que comprende instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que un ordenador realice el procedimiento segun una cualquiera de la reivindicacion 1 a 8.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261620266P | 2012-04-04 | 2012-04-04 | |
US201261620266P | 2012-04-04 | ||
US201261641063P | 2012-05-01 | 2012-05-01 | |
US201261641063P | 2012-05-01 | ||
US201313776140 | 2013-02-25 | ||
US13/776,140 US9565431B2 (en) | 2012-04-04 | 2013-02-25 | Low-delay video buffering in video coding |
PCT/US2013/027815 WO2013151635A1 (en) | 2012-04-04 | 2013-02-26 | Low-delay video buffering in video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2592182T3 true ES2592182T3 (es) | 2016-11-28 |
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 Before (1)
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 |
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)
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)
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 |
-
2013
- 2013-02-25 US US13/776,063 patent/US9578326B2/en active Active
- 2013-02-25 US US13/776,140 patent/US9565431B2/en active Active
- 2013-02-26 MY MYPI2014702625A patent/MY168712A/en unknown
- 2013-02-26 HU HUE13710661A patent/HUE060226T2/hu unknown
- 2013-02-26 CN CN201380018437.1A patent/CN104221387B/zh active Active
- 2013-02-26 JP JP2015504557A patent/JP6377603B2/ja active Active
- 2013-02-26 MY MYPI2014702630A patent/MY169717A/en unknown
- 2013-02-26 PL PL13710661.3T patent/PL2834974T3/pl unknown
- 2013-02-26 EP EP13710663.9A patent/EP2834975B1/en active Active
- 2013-02-26 PL PL13710663T patent/PL2834975T3/pl unknown
- 2013-02-26 RU RU2014143786A patent/RU2633165C2/ru active
- 2013-02-26 ES ES13710661T patent/ES2928690T3/es active Active
- 2013-02-26 SG SG10201608270VA patent/SG10201608270VA/en unknown
- 2013-02-26 DK DK13710663.9T patent/DK2834975T3/en active
- 2013-02-26 AU AU2013244010A patent/AU2013244010A1/en not_active Abandoned
- 2013-02-26 WO PCT/US2013/027815 patent/WO2013151635A1/en active Application Filing
- 2013-02-26 HU HUE13710663A patent/HUE029350T2/en unknown
- 2013-02-26 KR KR1020147030538A patent/KR101739633B1/ko active IP Right Grant
- 2013-02-26 BR BR112014024850-8A patent/BR112014024850B1/pt active IP Right Grant
- 2013-02-26 PT PT137106639T patent/PT2834975T/pt unknown
- 2013-02-26 BR BR112014024849-4A patent/BR112014024849B1/pt active IP Right Grant
- 2013-02-26 WO PCT/US2013/027808 patent/WO2013151634A1/en active Application Filing
- 2013-02-26 CA CA2866665A patent/CA2866665C/en active Active
- 2013-02-26 SI SI201330295A patent/SI2834975T1/sl unknown
- 2013-02-26 RU RU2014144282A patent/RU2630176C2/ru active
- 2013-02-26 CA CA2867024A patent/CA2867024C/en active Active
- 2013-02-26 KR KR1020147030537A patent/KR101794398B1/ko active IP Right Grant
- 2013-02-26 JP JP2015504556A patent/JP6529904B2/ja active Active
- 2013-02-26 ES ES13710663.9T patent/ES2592182T3/es active Active
- 2013-02-26 CN CN201380018546.3A patent/CN104205849B/zh active Active
- 2013-02-26 AU AU2013244011A patent/AU2013244011B2/en active Active
- 2013-02-26 SG SG11201405547TA patent/SG11201405547TA/en unknown
- 2013-02-26 SG SG11201405544YA patent/SG11201405544YA/en unknown
- 2013-02-26 EP EP13710661.3A patent/EP2834974B1/en active Active
- 2013-03-05 TW TW102107690A patent/TWI543621B/zh active
- 2013-03-05 TW TW102107689A patent/TWI549481B/zh active
-
2014
- 2014-09-08 IL IL234520A patent/IL234520A/en active IP Right Grant
- 2014-09-10 IL IL234569A patent/IL234569A/en active IP Right Grant
- 2014-09-12 PH PH12014502034A patent/PH12014502034B1/en unknown
- 2014-10-02 PH PH12014502225A patent/PH12014502225B1/en unknown
- 2014-11-03 ZA ZA2014/08023A patent/ZA201408023B/en unknown
-
2015
- 2015-02-13 HK HK15101603.0A patent/HK1201112A1/xx unknown
- 2015-04-01 HK HK15103308.4A patent/HK1203009A1/xx unknown
-
2017
- 2017-04-20 AU AU2017202638A patent/AU2017202638B2/en active Active
-
2018
- 2018-01-19 JP JP2018007158A patent/JP2018093514A/ja active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2592182T3 (es) | Almacenamiento intermedio de vídeo de bajo retardo en codificación de vídeo | |
ES2913456T3 (es) | Tiempos de llegada y de extracción nominal en memoria intermedia de imágenes codificadas en la codificación de vídeo | |
ES2663692T3 (es) | Aplicabilidad de sub-flujo de bits a mensajes SEI de anidado en codificación de vídeo | |
ES2780688T3 (es) | Señalización para operaciones DPB basadas en un búfer de imágenes subdescodificadas (sub-DPB) en la codificación de vídeo | |
ES2637515T3 (es) | Indicación y activación de conjuntos de parámetros para codificación de vídeo | |
ES2778463T3 (es) | Inferencia mejorada de indicador de no emisión de imagen previa en codificación de video | |
ES2854274T3 (es) | Dispositivo y procedimiento para codificación escalable de información de vídeo | |
ES2649671T3 (es) | Codificación de las imágenes de acceso aleatorio para la codificación de vídeo | |
BR112016021489B1 (pt) | Método e equipamento para codificação de informação de vídeo, e,memória legível por computador | |
AU2013318108A1 (en) | Hypothetical reference decoder parameters in video coding | |
KR20150079732A (ko) | 비디오 코딩에서의 타겟 출력 레이어 |