ES2637515T3 - Indicación y activación de conjuntos de parámetros para codificación de vídeo - Google Patents

Indicación y activación de conjuntos de parámetros para codificación de vídeo Download PDF

Info

Publication number
ES2637515T3
ES2637515T3 ES13753381.6T ES13753381T ES2637515T3 ES 2637515 T3 ES2637515 T3 ES 2637515T3 ES 13753381 T ES13753381 T ES 13753381T ES 2637515 T3 ES2637515 T3 ES 2637515T3
Authority
ES
Spain
Prior art keywords
sps
video
video data
vps
active
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES13753381.6T
Other languages
English (en)
Inventor
Ye-Kui Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2637515T3 publication Critical patent/ES2637515T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Un procedimiento de descodificación de datos de vídeo, procedimiento que comprende: descodificar un flujo de bits que incluye datos de vídeo e información sintáctica para descodificar los datos de vídeo, en el que la información sintáctica comprende un mensaje de información de mejora complementaria (SEI) de conjuntos de parámetros activos de una unidad de acceso, en el que el mensaje de SEI de conjuntos de parámetros activos indica una pluralidad de conjuntos de parámetros de secuencia (SPS) y un conjunto de parámetros de vídeo (VPS) para descodificar datos de vídeo de la unidad de acceso, y en el que el mensaje de SEI de conjuntos de parámetros activos incluye un primer elemento sintáctico que especifica el número de la pluralidad de SPS y uno o más elementos sintácticos adicionales que comprenden los identificadores respectivos para cada uno de la pluralidad de SPS; activar (154) la pluralidad de SPS y el VPS basándose en la indicación de la pluralidad de SPS y del VPS en el mensaje de SEI de conjuntos de parámetros activos; y descodificar (156) los datos de vídeo de la unidad de acceso basándose en la pluralidad de SPS activados y el VPS activado indicados en el mensaje de SEI de conjuntos de parámetros activos.

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Indicacion y activacion de conjuntos de parametros para codificacion de video CAMPO TECNICO
Esta divulgacion se refiere a la codificacion de video y, mas en particular, a conjuntos de parametros usados en la codificacion de video.
ANTECEDENTES
Las capacidades del video digital pueden incorporarse en una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de difusion digital directa, sistemas de difusion inalambrica, asistentes digitales personales (PDA), ordenadores portatiles o de escritorio, ordenadores de tableta, lectores de libros electronicos, camaras digitales, dispositivos de grabacion digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos celulares o de radio por satelite, los denominados "telefonos inteligentes", dispositivos de videoconferencia, dispositivos de transmision de video y similares. Los dispositivos de video digital implementan tecnicas de codificacion de video, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificacion Avanzada de Video (AVC) (H.264/AVC), la norma de Codificacion de Video de Alta Eficacia (HEVC) actualmente en desarrollo y las extensiones de tales normas. La H.264/AVC tiene, como ejemplos, las extensiones de la Codificacion de Video Escalable (SVC) y la Codificacion de Video de Multiples Vistas (MVC). Los dispositivos de video pueden transmitir, recibir, codificar, descodificar y/o almacenar informacion de video digital mas eficazmente, implementando tales tecnicas de codificacion de video.
Las tecnicas de codificacion de video incluyen la prediccion espacial (intra-imagen) y/o la prediccion temporal (entre imagenes) para reducir o eliminar la redundancia intrinseca en las secuencias de video. Para la codificacion de video basada en bloques, un fragmento de video (por ejemplo, una imagen o una parte de una imagen) puede ser dividida en bloques de video, que tambien pueden denominarse bloques arbolados, unidades de codificacion (CU) y/o nodos de codificacion. Los bloques de video en un fragmento intra-codificado (I) de una imagen son codificados usando la prediccion espacial con respecto a muestras de referencia en bloques contiguos de la misma imagen. Los bloques de video en un fragmento inter-codificado (P o B) de una imagen pueden usar la prediccion espacial con respecto a muestras de referencia en bloques contiguos de la misma imagen, o la prediccion temporal con respecto a muestras de referencia en otras imagenes de referencia.
La prediccion espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de pixeles entre el bloque original a codificar y el bloque predictivo. Un bloque inter-codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra-codificado se codifica de acuerdo con una modalidad de intra-codificacion y los datos residuales. Para una mayor compresion, los datos residuales pueden transformarse desde el dominio de pixeles a un dominio de transformacion, dando como resultado coeficientes de transformacion residuales, los cuales pueden cuantificarse posteriormente. Los coeficientes de transformacion cuantificados, inicialmente dispuestos en una formacion bidimensional, pueden explorarse con el fin de producir un vector unidimensional de coeficientes de transformacion, y puede aplicarse la codificacion por entropia para lograr aun mas compresion.
Thang (UOA) TC y otros: "AHG9: Singaling of VPS Activation" divulga la senalizacion de un mensaje de activacion para un VPS y un SPS. Los siguientes documentos divulgan la activacion de un SPS cuando se menciona el mismo en un mensaje de SEI de un periodo de almacenamiento intermedio o PPS:
Thomas Rusert (Ericsson): "3D-HEVC HLS: Inter-layer SPS Prediction" ["Prediccion SPS entre capas"], 10 de julio de 2012,
Hannuksela (Nokia) MM: "AHG10 Hooks for Scalable Coding: Sequence Parameter Set Design" ["AHG10 Ganchos para Codificacion Escalable: Diseno de Conjunto de Parametros de Secuencia"] , 2 de julio de 2012, Bross B y otros: “Proposed Editorial Improvements for High Efficiency video coding (HEVC) Text Specification Draft 8” [“Mejoras editoriales propuestas para la especificacion textual de Codificacion de Video de Alta Eficacia (HEVC), borrador 8”], 12 de septiembre de 2012 y
Suzuki, R; Hannuksela, M; Chen Y. y Hattori, S: "Texto de la ISO/IEC 14496-10:2012/PDAM2 Extension MVC para la inclusion de mapas de profundidad", 7 de mayo de 2012.
RESUMEN
En general, esta divulgacion describe tecnicas para indicar que conjuntos de parametros estan activos para la codificacion de video y, en algunos ejemplos, para prestar soporte a la activacion de tales conjuntos de parametros. En algunos ejemplos, un codificador de video incluye multiples identificadores (ID) de conjuntos de parametros secuenciales (SPS) en un mensaje de SEI, por ejemplo, un mensaje de SEI de conjuntos de parametros activos, o un mensaje de SEI de periodo de almacenamiento temporal, de modo que multiples SPS activos puedan ser
5
10
15
20
25
30
35
40
45
50
55
60
65
indicados a un descodificador de video. En algunos ejemplos, un descodificador de video activa un conjunto de parametros de video (VPS) y/o uno o mas SPS, mediante la mencion de un mensaje de SEI, por ejemplo, basandose en la inclusion del ID del VPS y de uno o mas ID de SPS en el mensaje de SEI. El mensaje de SEI puede ser, por ejemplo, un mensaje de SEI de conjuntos de parametros activos o un mensaje de SEI de periodo de almacenamiento temporal.
En un ejemplo, un procedimiento de descodificacion de datos de video comprende descodificar un flujo de bits que incluye datos de video e informacion sintactica para descodificar los datos de video, en el que la informacion sintactica comprende un mensaje de informacion de mejora complementaria (SEI) de conjuntos de parametros activos de una unidad de acceso, en el que el mensaje de SEI de conjuntos de parametros activos indica una pluralidad de conjuntos de parametros de secuencia (SPS) y un conjunto de parametros de video (VPS) para descodificar datos de video de la unidad de acceso, y en el que el mensaje de SEI de conjuntos de parametros activos incluye un primer elemento sintactico que especifica el numero de la pluralidad de SPS, y uno o mas elementos sintacticos adicionales que comprenden las identificaciones respectivas para cada uno de la pluralidad de SPS. El procedimiento comprende ademas la activacion de la pluralidad de SPS y del VPS basandose en la indicacion de la pluralidad de SPS y el VPS en el mensaje de SEI de conjuntos de parametros activos: El procedimiento comprende ademas la descodificacion de los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicado en el mensaje de SEI.
En otro ejemplo, un procedimiento de codificacion y descodificacion de datos de video comprende codificar un flujo de bits que incluye datos de video e informacion sintactica para codificar los datos de video, en el que la informacion sintactica comprende un mensaje de informacion de mejora complementaria (SEI) de una unidad de acceso, en el que el mensaje de SEI de conjuntos de parametros activos indica una pluralidad de conjuntos de parametros de secuencia (SPS) y un conjunto de parametros de video (VPS) para descodificar datos de video de la unidad de acceso y en el que el mensaje de SEI de conjuntos de parametros activos incluye un primer elemento sintactico que especifica el numero de la pluralidad de SPS, y uno o mas elementos sintacticos adicionales que comprenden los identificadores respectivos para cada uno de la pluralidad de SPS. El procedimiento comprende ademas codificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicado en el mensaje de SEI de los conjuntos de parametros activos. El procedimiento comprende ademas descodificar el flujo de bits. El procedimiento comprende ademas la activacion de la pluralidad de SPS y del VPS basandose en la indicacion de la pluralidad de SPS y el VPS en el mensaje de SEI de conjuntos de parametros activos: El procedimiento comprende ademas descodificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS activados y el VPS activado indicados en el mensaje de SEI de conjuntos de parametros activos.
En otro ejemplo, un dispositivo comprende un descodificador de video configurado para descodificar un flujo de bits que incluye datos de video e informacion sintactica para descodificar los datos de video, en el que la informacion sintactica comprende un mensaje de informacion de mejora complementaria (SEI) de conjuntos de parametros activos de una unidad de acceso, en el que el mensaje de conjuntos de parametros activos SEI indica una pluralidad de conjuntos de parametros de secuencia (SPS) y un conjunto de parametros de video (VPS) para descodificar datos de video de la unidad de acceso, y en el que el mensaje de SEI de conjuntos de parametros activos incluye un primer elemento sintactico que especifica el numero de la pluralidad de SPS, y uno o mas elementos sintacticos adicionales que comprenden los identificadores respectivos para cada uno de la pluralidad de SPS. El descodificador de video esta configurado adicionalmente para activar la pluralidad de SPS y el VPS basandose en la indicacion de la pluralidad de SPS y el VPS en el mensaje de SEI de conjuntos de parametros activos. El descodificador de video esta adicionalmente configurado para descodificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicado en el mensaje de SEI.
El dispositivo puede comprender ademas un codificador de video configurado para codificar el flujo de bits y codificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicado en el mensaje de SEI de conjuntos de parametros activos.
En otro ejemplo, un dispositivo comprende medios para descodificar un flujo de bits que incluye datos de video e informacion sintactica para codificar los datos de video, en el que la informacion sintactica comprende un mensaje de informacion de mejora complementaria (SEI) de conjuntos de parametros de una unidad de acceso, en el que el mensaje de SEI de conjuntos de parametros activos indica una pluralidad de conjuntos de parametros activos (SPS) y un conjunto de parametros de video (VPS) para codificar datos de video de la unidad de acceso, y en el que el mensaje de SEI de conjuntos de parametros activos incluye un primer elemento sintactico que especifica el numero de la pluralidad de SPS, y uno o mas elementos sintacticos adicionales que comprenden los identificadores respectivos para cada uno de la pluralidad de SPS. El dispositivo comprende ademas medios para activar la pluralidad de SPS y el VPS basandose en la indicacion de la pluralidad de SPS y el VPS en el mensaje de SEI de conjuntos de parametros activos. El dispositivo comprende ademas medios para descodificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS activados y el VPS activado indicados en el mensaje de SEI de los conjuntos de parametros activos.
En otro ejemplo, un medio de almacenamiento legible por ordenador tiene instrucciones almacenadas en el mismo que, cuando son ejecutadas por uno o mas procesadores de un codificador de video, hacen que el codificador de
5
10
15
20
25
30
35
40
45
50
55
60
65
video codifique un flujo de bits que incluye datos de video e informacion sintactica para codificar los datos de video, en el que la informacion sintactica comprende un mensaje de informacion de mejora complementaria (SEI) de conjuntos de parametros activos de una unidad de acceso, y en el que el mensaje de conjuntos de parametros activos de SEI indica una pluralidad de conjuntos de parametros de secuencia (SPS) y un conjunto de parametros de video (VPS) para codificar datos de video de la unidad de acceso y en el que el mensaje de SEI de conjuntos de parametros activos incluye un primer elemento sintactico que especifica el numero de la pluralidad de SPS y uno o mas elementos sintacticos adicionales que comprenden los identificadores respectivos para cada uno de la pluralidad de SPS. Las instrucciones hacen ademas que el codificador de video active la pluralidad de SPS y el VPS basandose en la indicacion de la pluralidad de SPS y el VPS indicado en el mensaje de SEI de conjuntos de parametros activos. Las instrucciones hacen ademas que el codificador de video codifique los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicado en el mensaje de SEI.
Los detalles de uno o mas aspectos de la divulgacion se exponen en los dibujos adjuntos y la descripcion siguiente. Otras caracteristicas, objetivos y ventajas de las tecnicas descritas en la presente divulgacion resultaran evidentes a partir de la descripcion y los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCION DE LOS DIBUJOS
FIG. 1 es un diagrama de bloques que ilustra un sistema a modo de ejemplo de codificacion y descodificacion de video que puede utilizar las tecnicas para indicar conjuntos de parametros activos y activar conjuntos de parametros descritos en esta divulgacion.
FIG. 2 es un diagrama de bloques que ilustra el codificador de video mostrado en el ejemplo de la FIG. 1 con mayor detalle.
FIG. 3 es un diagrama de bloques que ilustra el descodificador de video mostrado en el ejemplo de la FIG. 1 con mayor detalle.
FIG. 4 es un diagrama de bloques que ilustra un conjunto a modo de ejemplo de dispositivos que forman parte de una red.
FIG. 5 es un diagrama de flujo que ilustra un procedimiento a modo de ejemplo para codificar un flujo de bits, para incluir un mensaje de informacion complementaria de mejora (SEI) que indica a un descodificador de video un conjunto de parametros de video activos (VPS) y una pluralidad de conjuntos de parametros secuenciales activos (SPS) para descodificar datos de video codificados en el flujo de bits.
FIG. 6 es un diagrama de flujo que ilustra un procedimiento a modo de ejemplo para descodificar un flujo de bits que incluye un mensaje de SEI que indica un VPS activo y una pluralidad de SPS activos para descodificar datos de video del flujo de bits.
FIG. 7 es un diagrama de flujo que ilustra un procedimiento a modo de ejemplo para codificar un flujo de bits, para incluir un mensaje de SEI que indica a un descodificador de video un VPS y uno o mas SPS, a activar por parte de un descodificador de video, para descodificar datos de video del flujo de bits.
FIG. 8 es un diagrama de flujo que ilustra un procedimiento a modo de ejemplo para descodificar un flujo de bits que incluye un mensaje de SEI, y activar un VPS y uno o mas SPS para descodificar datos de video del flujo de bits, basandose en referencias al VPS y a uno o mas SPS en el mensaje de SEI.
DESCRIPCION DETALLADA
En general, esta divulgacion describe tecnicas para indicar que conjuntos de parametros estan activos para la codificacion de video y, en algunos ejemplos, para prestar soporte a la activacion de tales conjuntos de parametros. En algunos ejemplos, un codificador de video incluye multiples identificadores (ID) de conjuntos de parametros secuenciales (SPS) en un mensaje de SEI, por ejemplo, un mensaje de SEI de conjuntos de parametros activos, o un mensaje de SEI de periodo de almacenamiento temporal, de modo que multiples SPS activos puedan ser indicados a un descodificador de video. En algunos ejemplos, los datos de video codificados pueden comprender una pluralidad de capas y/o vistas, y cada uno de los SPS puede utilizarse para la codificacion, por ejemplo, codificar y descodificar, una o mas respectivas capas o vistas de las capas y/o vistas. En algunos ejemplos, en los que los SPS activos estan asociados a las respectivas capas, los SPS activos pueden denominarse SPS de capa activa. La inclusion de multiples ID de SPS en un mensaje de SEI puede facilitar la codificacion de multiples vistas, de video tridimensional (3DV) y/o de video ajustable a escala.
En algunos ejemplos, un descodificador de video activa un conjunto de parametros de video (VPS) y/o uno o mas SPS, mediante la mencion de un mensaje de SEI, por ejemplo, basandose en la inclusion del ID del VPS y de uno o mas ID de SPS en el mensaje de SEI. El mensaje de SEI puede ser, por ejemplo, un mensaje de SEI de conjuntos de parametros activos. En tales ejemplos, el mensaje de SEI de conjuntos de parametros activos, proporcionado por un codificador de video, no solamente indica el VPS activo y los uno o mas SPS activos, sino que tambien hace que un descodificador de video los active para descodificar datos de video.
En otros ejemplos, el codificador puede no proporcionar un mensaje de SEI de conjuntos de parametros activos y, en cambio, puede incluir un ID de VPS en el mensaje de SEI de periodo de almacenamiento temporal (que ya puede incluir un unico ID de SPS de acuerdo con la presente especificacion de la HEVC) como el primer elemento sintactico. En tales ejemplos, el codificador de video puede incluir multiples ID de SPS en el mensaje de SEI de
5
10
15
20
25
30
35
40
45
50
55
60
65
periodo de almacenamiento temporal, y el descodificador de video puede activar el VPS y los uno o mas SPS mediante la referencia al mensaje de SEI de periodo de almacenamiento temporal. De nuevo, los datos de video codificados pueden comprender una pluralidad de capas y/o vistas, y cada uno entre una pluralidad de SPS puede usarse para la codificacion, por ejemplo, codificar o descodificar una capa y/o vista respectiva entre las capas y/o vistas. En tales ejemplos, la activacion de multiples SPS mediante la referencia a un mensaje de SEI, por ejemplo, por parte de un descodificador de video, puede facilitar la codificacion de video de multiples vistas, 3DV y/o de video ajustable a escala.
Las tecnicas de la presente divulgacion pueden ser implementadas en codificadores de video, por ejemplo, codificadores de video y descodificadores de video, que funcionan de acuerdo con cualquiera de una variedad de normas de codificacion de video. Por ejemplo, las tecnicas de esta divulgacion pueden ser implementadas en codificadores de video que funcionan de acuerdo con la norma de HEVC actualmente en desarrollo, que tambien puede denominarse H.265. La norma HEVC tambien puede denominarse ISO/IEC 23008-HEVC, que se pretende que sea el numero de la norma para la version publicada de HEVC. Los esfuerzos de la normalizacion se basan en un modelo de un dispositivo de codificacion de video denominado modelo de prueba de HEVC (HM). El HM supone varias capacidades distintas de los dispositivos de codificacion de video, con respecto a dispositivos que funcionan de acuerdo con normas anteriores de codificacion, tales como ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificacion de intra-prediccion, el HM proporciona hasta treinta y cinco modos de codificacion de intra-prediccion.
Ademas, un borrador (WD) reciente de la norma HEVC, denominado “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, EE.Uu., febrero de 2012, que se incorpora en el presente documento por referencia en su totalidad, y que a partir del 13 de mayo de 2013 se puede descargar de:
http://phenix.int-evrv.fr/ict/doc end user/documents/8 San%20Jose/wg11/JCTVC-H1003-v22.zip
Ademas, otro borrador reciente de la norma HEVC, el Borrador 8, denominado “Borrador 8 de HEVC” o “WD8”, se describe en el documento HCTVC-J1003_d7, de Bross y col., titulado "High Efficiency Video Coding (HEVC) Text Specification Draft 8" [“Especificacion textual de la Codificacion de Video de Alta Eficacia (HEVC), borrador 8”], JCT- VC de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, decima conferencia: Estocolmo, Suecia, julio de 2012, que se incorpora en el presente documento por referencia en su totalidad, y que a partir del 13 de mayo de 2013, se puede descargar desde:
http://phenix.int-evry.fr/ict/doc end user/documents/10 Stockholm/wg11/JCTVC-J1003- v8.zip.
La norma HEVC continua evolucionando, y un borrador mas reciente de la norma, denominado “Borrador 10 de HEVC” o “WD10”, se describe en el documento JCTVC-L1003_v18, de Bross y col., titulado "High Efficiency Video Coding (HEVC) Text Specification Draft 10" [“Especificacion textual de la Codificacion de Video de Alta Eficacia (HEVC), Borrador 10”], Equipo de Colaboracion Conjunta en Codificacion de Video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, duodecima conferencia: Ginebra, Suiza, 14-23 de enero de 2013, que, a partir del 13 de mayo de 2013, puede descargarse desde
http://phenix.it-
sudparis.eu/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v18.zip^El contenido completo de WD10 se incorpora en el presente documento como referencia.
La norma H.264/AVC introdujo el concepto de conjuntos de parametros como una forma de comunicar informacion sintactica que facilita la codificacion de informacion de video digital, desde un codificador de video a un descodificador de video. Los conjuntos de parametros fueron introducidos en la norma H.264/AVC, en respuesta a los efectos negativos de una perdida de la cabecera de secuencia y la cabecera de imagen, si una imagen es dividida en multiples segmentos, por ejemplo, fragmentos, y esos segmentos son transportados en su propia unidad de transporte, por ejemplo, un paquete del protocolo de transporte en tiempo real (RTP). La division de una imagen en segmentos que son transportados en su propia unidad de transporte es deseable para la correlacion de tamanos de unidades de transferencia maxima (MTU). Sin embargo, la perdida del primer paquete de una imagen, que lleva no solamente los datos de segmento de la primera imagen, sino tambien la cabecera de la imagen y, a veces, el grupo de imagenes (GOP) y la cabecera de secuencia, podria ocasionar una reconstruccion incorrecta de una imagen y, a veces, tambien de las siguientes imagenes, por parte de un descodificador de video. En algunos casos, la reconstruccion incorrecta puede ocurrir incluso si no se perdiera ninguno de los otros paquetes. Algunas implementaciones de descodificadores de video ni siguiera intentarian descodificar los paquetes recibidos de una imagen, si se perdiera el paquete con la cabecera de la imagen.
Antes de la norma H.264/AVC, como un intento inicial de abordar esta vulnerabilidad, se introdujeron mecanismos basados en la capa de transporte. Por ejemplo, el formato de carga util del RTP para H.263, especificado en la RFC 2429, admitia llevar una copia redundante de la cabecera de la imagen en tantos paquetes como escogiera el codificador o empaquetador de video. Durante el diseno de la norma H.264/AVC, sin embargo, se reconocio que la vulnerabilidad provocada por la inclusion de informacion sintactica en la cabecera de la imagen es una cuestion arquitectonica del propio codec de video, en lugar de un problema de transporte. En respuesta a este entendimiento,
5
10
15
20
25
30
35
40
45
50
55
60
65
se introdujeron conjuntos de parametros en la norma H.264/AVC como una manera de comunicar informacion sintactica.
Un conjunto de parametros es una estructura sintactica que incluye elementos sintacticos que permiten a un descodificador de video reconstruir video codificado. Se incluyen diferentes elementos sintacticos en diferentes conjuntos de parametros basandose en la frecuencia a la que se espera que cambien los elementos sintacticos. Por ejemplo, un conjunto de parametros secuenciales (SPS) incluye elementos sintacticos que se espera que queden sin cambios para una secuencia de imagenes, mientras que un conjunto de parametros de imagen (PPS) incluye elementos sintacticos que pueden cambiar de una imagen a otra dentro de una secuencia.
Un codificador de video puede generar y emitir conjuntos de parametros. Un descodificador de video puede recibir los conjuntos de parametros y usar los conjuntos de parametros en la descodificacion de datos de video a partir de un flujo de bits codificado. Un codificador de video puede proporcionar los conjuntos de parametros como parte del flujo de bits de video, o mediante una transmision fuera de banda, usando un canal fiable entre el codificador y el descodificador de video. En otros ejemplos, los conjuntos de parametros pueden ser codificados directamente en el codificador y el descodificador.
Un conjunto de parametros contiene una identificacion (“ID”), que es mencionada, directamente o indirectamente, desde la cabecera de fragmento. Por ejemplo, cada SPS puede incluir un ID de SPS, y cada PPS puede incluir un ID de PPS, y hace referencia a un SPS incluyendo adicionalmente un ID de SPS. Ademas, cada cabecera de fragmento puede hacer referencia a un PPS usando un ID de PPS. Por consiguiente, basandose en el ID de PPS en la cabecera de fragmento, un descodificador de video puede activar un PPS. El codificador de video tambien puede activar un SPS basandose en el ID de SPS en el PPS. El concepto de activacion mediante referencias fue introducido, entre otros motivos, porque la activacion implicita, en virtud de la posicion de la informacion en el flujo de bits (como es comun para otros elementos sintacticos de un codec de video), no esta disponible en el caso de conjuntos de parametros recibidos por un descodificador de video mediante una transmision fuera de banda.
Como la norma H.264/AVC, la HEVC utiliza conjuntos de parametros para comunicar informacion sintactica que facilita la codificacion de informacion de video digital. Sin embargo, la HEVC introduce un conjunto adicional de parametros, el conjunto de parametros de video (VPS). Entre otras cosas, el VPS puede usarse para llevar informacion que es aplicable a multiples capas, asi como a sub-capas, y/o a multiples vistas. Por consiguiente, el VPS puede facilitar la codificacion de datos de video que incluyen multiples capas, por ejemplo, para la codificacion de video ajustable a escala, o multiples vistas, por ejemplo, para la codificacion de video de multiples vistas o tridimensional. Cada capa o vista de una secuencia de video dada puede ser, pero no necesariamente es, codificada de acuerdo con un respectivo SPS. Sin embargo, cada capa o vista de una secuencia de video dada, independientemente de si tienen los mismos, o distintos, SPS, se refiere al mismo VPS.
La norma H.264/AVC no contenia un conjunto de parametros comparable al VPS y, en cambio, requeria una compleja modelizacion de la estructura de capas, con fines tales como el intercambio de capacidades y la negociacion de sesiones. En la extension de la Codificacion de Video Escalable (SVC) de la norma H.264/AVC, el mensaje de informacion complementaria de mejora (SEI) de informacion de escalabilidad ofrecia aproximadamente el mismo contenido que el VPS de la HEVC. Sin embargo, por su naturaleza de ser un mensaje de SEI, la mayor parte de la misma informacion en el mensaje de SEI de informacion escalabilidad tenia que ser repetida en los SPS de la norma H.264/AVC, que, en algunos escenarios de aplicacion, tambien necesitaba ser transmitida fuera de banda y, en consecuencia, provocaba un retardo inicial aumentado, en particular, cuando se usaba la retransmision para garantizar la fiabilidad de las transmisiones fuera de banda. En casos de difusion y multi-difusion con transmision en banda de conjuntos de parametros, tal repeticion de la misma informacion llevaba a una significativa sobrecarga, ya que los conjuntos de parametros necesitaban ser repetidos en cada punto de acceso aleatorio para la sintonizacion y la conmutacion de canal. El VPS de la HEVC puede abordar estos inconvenientes, asi como habilitar un diseno de alto nivel, nitido y extensible, de codecs de multiples capas.
La informacion que puede ser transportada en un VPS incluye, por ejemplo: (1) elementos sintacticos comunes compartidos por multiples capas o puntos de operacion, con el fin de evitar duplicaciones innecesarias; (2) informacion esencial de puntos de operacion necesarios para la negociacion de sesiones, incluyendo, por ejemplo, el perfil y el nivel; y (3) otra informacion especifica de puntos de operacion, que no pertenezca a un SPS, por ejemplo, parametros de descodificador de referencia hipotetica (HRD) para capas o sub-capas. El analisis sintactico de informacion esencial de cada punto de operacion no requiere codificacion de longitud variable y, por lo tanto, esta considerado como superficial para la mayoria de los elementos de red. Se espera que la extension del VPS, que puede especificarse en extensiones de la HEVC, pueda contener mas elementos sintacticos que los del VPS actual, para una eficaz senalizacion de parametros, una negociacion de sesiones flexible y ligera, asi como una adaptacion avanzada de flujos de bits, por ejemplo, basandose en un identificador de vista en una extension del 3Dv. De acuerdo con el WD8 de la HEVC, alguna informacion se duplica entre el VPS y los SPS pertenecientes a la capa. Esta duplicacion fue introducida para permitir a un descodificador de la version 1 prescindir de la unidad de capa de abstraccion de red (NAL) del VPS y tener aun disponible toda la informacion requerida para descodificar el flujo de bits.
5
10
15
20
25
30
35
40
45
50
55
60
65
De acuerdo con la norma H.264/AVC, asi como en la HEVC, los SPS contienen informacion que se aplica a todas los fragmentos de una secuencia de video codificado, por ejemplo, una secuencia de imagenes. En la HEVC, una secuencia de video codificado comienza a partir de una imagen de refresco instantaneo de descodificacion (IDR), o una imagen de acceso de enlace roto (BLA), o una imagen de acceso aleatorio nitido (CRA), que es la primera imagen en el flujo de bits. Una secuencia de video codificado incluye todas las imagenes posteriores que no sean una imagen de IDR o de BLA. Un flujo de bits consiste en una o mas secuencias de video codificado.
El contenido del SPS puede estar subdividido aproximadamente en seis categorias: (1) una auto-referencia, por ejemplo, su propio ID; (2) informacion referida al punto de operacion del descodificador, por ejemplo, perfil, nivel, tamano de imagen y numero de sub-capas; (3) indicadores de habilitacion para ciertas herramientas dentro de un perfil, y parametros asociados de herramientas de codificacion, en caso de que la herramienta este habilitada; (4) informacion que restringe la flexibilidad de estructuras y la codificacion de coeficientes de transformacion; (5) control temporal de escalabilidad, que puede ser similar al de H.264/SVC; y (6) Informacion de Capacidad de Utilizacion Visual (VUI),que incluye informacion de HRD.
El PPS de la HEVC contiene informacion tal que podria cambiar de una imagen a otra. El PPS incluye informacion aproximadamente comparable a lo que era parte del PPS en la norma H.264/AVC, incluyendo (1) una auto- referencia, por ejemplo, su propio ID; (2) informacion inicial de control de imagen, tal como un parametro de cuantificacion (QP) inicial, un cierto numero de indicadores que indican el uso, o la presencia, de ciertas herramientas o informacion de control en la cabecera de fragmento; e (3) informacion de mosaico.
La cabecera de fragmento contiene informacion que puede cambiar de un fragmento a otro, asi como informacion tal, referida a imagenes, que es relativamente pequena o relevante solamente para ciertos tipos de fragmentos o imagen. El tamano de la cabecera de fragmento puede ser notablemente mas grande que el PPS, en particular, cuando hay desplazamientos de punto de entrada de mosaico o de frente de onda en la cabecera de fragmento y la seleccion de imagenes de referencia, las ponderaciones de prediccion o las modificaciones de listas de imagenes de referencia estan explicitamente senalizadas.
La activacion de conjuntos de parametros en la HEVC es similar a la de la H.264/AVC. La cabecera de fragmento contiene una referencia al PPS. El PPS, a su vez, contiene una referencia al SPS y el SPS contiene una referencia al VPS. Una estrategia comun de implementacion para conjuntos de parametros es mantener todos los conjuntos de parametros de un tipo dado (PPS, SPS y VPS) en tablas, cuyo tamano maximo esta indirectamente especificado por la gama de numeracion de los ID de conjuntos de parametros. Con tal estrategia de implementacion, la activacion de un conjunto de parametros puede lograrse: (1) accediendo a las tablas de PPS basandose en informacion, por ejemplo, el ID de PPS, en la cabecera de fragmento, y copiando la informacion hallada para el PPS en las tablas de PPS, en las estructuras relevantes de datos del descodificador; (2) siguiendo la referencia, por ejemplo, el ID de SPS, en el PPS hasta el SPS relevante en las tablas de SPS, y copiando la informacion, hallada para el SPS en las tablas de SPS, en las estructuras relevantes de datos del descodificador; y (3) siguiendo la referencia, por ejemplo, el ID de VPS, en el SPS, hasta el VPS relevante en las tablas de VPS, y copiando la informacion, hallada para el VPS en las tablas de VPS, en las estructuras relevantes de datos del descodificador; Como estas operaciones pueden necesitar ser realizadas (a lo sumo) solamente una vez por imagen, la operacion puede ser considerada ligera.
De acuerdo con propuestas para la norma HEVC, el SPS puede tambien activarse haciendose referencia al mismo en un mensaje de SEI de periodo de almacenamiento temporal. Para la activacion de los SPS que se mencionan en el mensaje de SEI de periodo de almacenamiento temporal, el mensaje de SEI de periodo de almacenamiento temporal puede incluir el ID de SPS del SPS a activar. Adicionalmente, el WD8 de la HEVC especifica un mensaje de SEI de conjuntos de parametros activos. De acuerdo con el WD8 de la HEVC, el mensaje de SEI de conjuntos de parametros activos puede indicar el VPS actualmente activo y el SPS actualmente activo, por ejemplo, por la inclusion de los ID de VPS y de SPS para el VPS y el SPS actualmente activos. De acuerdo con el WD8 de la HEVC, un descodificador de video no activa el VPS y el SPS por referencia en el mensaje de SEI de conjuntos de parametros activos. En cambio, un codificador de video incluye el mensaje de SEI de conjuntos de parametros activos en el flujo de bits, para indicar que conjuntos de parametros deberia tener activos actualmente el descodificador de video para descodificar datos de video, y permitir asi que el descodificador de video confirme la debida operacion de descodificacion.
Como se ha analizado anteriormente, un codificador de video puede proporcionar los conjuntos de parametros a un descodificador de video como parte del flujo de bits de video, o mediante una transmision fuera de banda, usando un canal fiable entre el codificador y el descodificador de video. El descodificador de video puede almacenar los conjuntos de parametros recibidos en estructuras de datos, por ejemplo, tablas respectivas para cada tipo de conjunto de parametros (PPS, SPS y VPS), recuperar los uno o mas conjuntos de parametros para cada tipo, desde las tablas, cuando sean activados mas tarde por referencia, y cargar los conjuntos de parametros recuperados en las respectivas estructuras de datos de descodificacion para descodificar los datos de video en el flujo de bits. En algunos ejemplos, el codificador de video puede incluir los conjuntos de parametros en unidades de la capa de abstraccion de red (NAL) de conjuntos de parametros.
5
10
15
20
25
30
35
40
45
50
55
60
65
La gestion de la recepcion de una unidad de NAL de conjuntos de parametros, independientemente de su tipo, puede ser directa, en cuanto a que las unidades de NAL de conjuntos de parametros no necesitan contener dependencias de analisis sintactico, lo que significa que son auto-contenidas y no requieren contexto obtenido de otras unidades de NAL para el analisis sintactico. Aunque la generacion de unidades de NAL sin dependencias de analisis sintactico puede costar unos pocos bits mas, puede permitir el analisis sintactico y el almacenamiento directos de conjuntos de parametros en sus respectivas entradas de tablas. Cada tipo de conjunto de parametros puede contener un mecanismo de extension, que puede permitir extender el conjunto de parametros en versiones futuras de la HEVC, sin violar la retro-compatibilidad, y sin crear una dependencia del analisis sintactico para la informacion de perfil/nivel llevada en el VPS y el SPS.
Las normas de codificacion de video incluyen en general una especificacion de un modelo de almacenamiento temporal de video. En la H.264/AVC y la HEVC, el modelo de almacenamiento temporal se denomina descodificador de referencia hipotetica (HRD). El HRD incluye un modelo de almacenamiento temporal, tanto del almacen temporal de imagenes codificadas (CPB) como del almacen temporal de imagenes descodificadas (DPB), y especifica matematicamente los comportamientos del CPB y el DPB. El HRD impone directamente restricciones sobre temporizacion, tamanos de almacen temporal y velocidades de bits diferentes, e impone indirectamente restricciones sobre caracteristicas y estadisticas de flujos de bits. Un conjunto completo de parametros de HRD incluye cinco parametros basicos, el retardo inicial de eliminacion del CPB, el tamano del CPB, la velocidad de bits, el retardo inicial de salida del DPB y el tamano del DPB.
En la H.264/AVC y la HEVC, la conformidad del flujo de bits y la conformidad del descodificador se especifican como partes de la especificacion del HRD. Aunque el nombre HRD sugiere que el HRD es un descodificador, el HRD se emplea tipicamente en el sector codificador para garantizar la conformidad del flujo de bits, y tipicamente no se necesita en el sector descodificador. El HRD especifica dos tipos de conformidad de flujo de bits o de HRD; esto es, Tipo I y Tipo II. Ademas, el HRD especifica dos tipos de conformidad de descodificador; esto es, la conformidad de descodificador de la temporizacion de salida y la conformidad de descodificador del orden de salida.
En los modelos de HRD de la H.264/AVC y la HEVC, la descodificacion o la eliminacion del CPB esta basada en unidades de acceso, y se supone que la descodificacion de imagenes es instantanea. En aplicaciones practicas, si un descodificador en conformidad sigue estrictamente los tiempos de descodificacion senalizados, por ejemplo, en los mensajes de SEI de temporizacion de imagenes, para iniciar la descodificacion de unidades de acceso, entonces el momento mas temprano posible para emitir una imagen descodificada especifica es igual al momento de descodificacion de esa imagen especifica, mas el tiempo necesario para descodificar esa imagen especifica. El tiempo necesario para descodificar una imagen en aplicaciones practicas no puede ser igual a cero.
En el WD8 de la HEVC, el HRD se especifica en el Anexo C. En el WD8 de la HEVC, el HRD se apoya en los parametros del HRD. Los parametros del HRD pueden proporcionarse en el flujo de bits, en la estructura sintactica hrd_parameters( ). La estructura sintactica hrd_parameters( ) puede estar incluida, como ejemplos, en el VPS y/o el SPS, el mensaje de SEI de periodo de almacenamiento temporal y el mensaje de SEI de temporizacion de imagenes.
Como se ha expuesto anteriormente, la HEVC permite que un SPS sea activado por un descodificador de video al ser mencionado, por ejemplo, por su ID de SPS, en el mensaje de SEI de periodo de almacenamiento temporal. De esta manera, el mensaje de SEI de periodo de almacenamiento temporal permite que un SPS sea activado independientemente de la activacion de un PPS mediante referencia en la cabecera de fragmento. El WD8 de la HEVC tambien especifica un mensaje de SEI de conjuntos de parametros activos, que permite a un codificador de video indicar el VPs activo y el SPS activo a un descodificador de video. Sin embargo, hay problemas asociados a estas tecnicas existentes para la activacion de conjuntos de parametros y la indicacion de conjuntos de parametros activos.
Por ejemplo, en las extensiones de codificacion de video de multiples vistas, video tridimensional y/o video escalable de la HEVC, puede haber multiples SPS activos en cualquier momento dado. En particular, un codificador de video, por ejemplo, un codificador de video o un descodificador de video, puede codificar, por ejemplo, codificar y descodificar, los datos de video de algunas capas y/o vistas, usando distintos SPS. En los ejemplos en los que un codificador de video codifica distintas capas de acuerdo con distintos SPS activos, algunos de los SPS activos pueden denominarse SPS de capa activa. Sin embargo, aunque el mensaje de SEI de conjuntos de parametros activos, propuesto para la norma HEVC, puede usarse por un codificador de video para indicar el VPS activo y un unico SPS activo a un descodificador de video, actualmente no es posible indicar multiples SPS activos mediante el mensaje de SEI de conjuntos de parametros activos, o cualquier otro mensaje de SEI.
Como otro ejemplo, en el WD8 de la HEVC, mientras los parametros del HRD pueden incluirse en el VPS, el mensaje de SEI de periodo de almacenamiento temporal puede contener un ID de SPS, pero no contiene un ID de VPS. Por consiguiente, en algunos casos, el HRD puede inicializarse a partir de una unidad de acceso que contiene un mensaje de SEI de periodo de almacenamiento temporal, pero al menos algunos de los parametros del HRD escogidos para la operacion del HRD estan incluidos en el VPS, que, a diferencia del SPS, no se activa por el mensaje de SEI de periodo de almacenamiento temporal. En tales casos, la capacidad de un descodificador de
5
10
15
20
25
30
35
40
45
50
55
60
65
video para analizar sintacticamente algunos elementos sintacticos en el mensaje de SEI de periodo de almacenamiento temporal dependera de la informacion en el VPS. Por consiguiente, el codificador de video necesitaria activar indirectamente el VPS posteriormente al SPS, basandose en la referencia al VPS en el SPS que fue activado a partir del mensaje de SEI de periodo de almacenamiento temporal. La necesidad de activar posteriormente, e indirectamente, el VPS en tales casos puede ser una implementacion ineficaz en terminos de calculo del descodificador de video.
Esta divulgacion describe tecnicas para indicar que conjuntos de parametros estan activos para la codificacion de video y, en algunos ejemplos, para prestar soporte a la activacion de tales conjuntos de parametros, que pueden resolver los problemas anteriores. En algunos ejemplos, un codificador de video incluye multiples ID de SPS en un mensaje de SEI, por ejemplo, un mensaje de SEI de conjuntos de parametros activos o un mensaje de SEI de periodo de almacenamiento temporal, de modo que puedan indicarse multiples SPS activos a un descodificador de video. En algunos ejemplos, los datos de video codificados pueden comprender una pluralidad de capas y/o vistas, y cada uno de los SPS puede utilizarse para la codificacion, por ejemplo, codificar y descodificar, una o mas respectivas capas o vistas de las capas y/o vistas. En algunos ejemplos, en los que los SPS activos estan asociados a las respectivas capas, los SPS activos pueden denominarse SPS de capa activa. La inclusion de multiples ID de SPS en un mensaje de SEI puede facilitar una indicacion mas completa de los conjuntos de parametros activos para la codificacion de video de multiples vistas, de video tridimensional y/o de video escalable.
En algunos ejemplos, un descodificador de video activa un VPS y uno o mas SPS mediante referencias en un mensaje de SEI, por ejemplo, basandose en la inclusion del ID de VPS y de uno o mas ID de SPS en el mensaje de SEI. El mensaje de SEI puede ser, por ejemplo, un mensaje de SEI de conjuntos de parametros activos. En tales ejemplos, el mensaje de SEI de conjuntos de parametros activos, proporcionado en el flujo de bits por un codificador de video, no solamente indica el VPS activo y los uno o mas SPS activos, sino que tambien provoca que un descodificador de video los active para descodificar datos de video del flujo de bits. En tales ejemplos, el codificador de video puede eliminar el ID de SPS del mensaje de SEI de periodo de almacenamiento temporal. Ademas, un codificador de video puede generar el flujo de bits en tales ejemplos de modo que, para cada unidad de acceso que incluye un mensaje de SEI de periodo de almacenamiento temporal, hay tambien un mensaje de SEI de conjuntos de parametros activos que es el primer mensaje de SEI en la primera unidad de NAL de SEI de la unidad de acceso.
En otros ejemplos, un codificador de video puede no proporcionar un mensaje de SEI de conjuntos de parametros activos y, en cambio, puede incluir un ID de VPS en el mensaje de SEI de periodo de almacenamiento temporal, por ejemplo, como el primer elemento sintactico, que puede estar codificado con longitud fija, por ejemplo, con cuatro bits. De acuerdo con las propuestas para la norma HEVC, el mensaje de SEI de periodo de almacenamiento temporal puede incluir un unico ID de SPS. En ejemplos de acuerdo con la presente divulgacion, el codificador de video puede incluir multiples ID de SPS, junto con el ID del VPS, en el mensaje de SEI de periodo de almacenamiento temporal. Adicionalmente, en algunos ejemplos, el descodificador de video puede activar el VPS y los uno o mas SPS, mediante referencias en el mensaje de SEI de periodo de almacenamiento temporal. De nuevo, los datos de video codificados pueden comprender una pluralidad de capas y/o vistas, y cada uno entre una pluralidad de SPS puede usarse para la codificacion, por ejemplo, codificar o descodificar una capa y/o vista respectiva entre las capas y/o vistas. En tales ejemplos, la activacion de multiples SPS mediante referencias del mensaje de SEI de periodo de almacenamiento temporal, por ejemplo, por parte de un descodificador de video, puede facilitar la codificacion de video de multiples vistas, de video tridimensional y/o de video escalable.
FIG. 1 es un diagrama de bloques que ilustra un sistema a modo de ejemplo de codificacion y descodificacion de video 10 que puede utilizar las tecnicas para indicar conjuntos de parametros activos y activar los conjuntos de parametros descritos en esta divulgacion. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de video codificado, a descodificar en un momento posterior por parte de un dispositivo de destino 14. El dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender cualquiera entre una amplia gama de dispositivos, incluyendo ordenadores de sobremesa, ordenadores plegables (es decir, portatiles), ordenadores de tableta, descodificadores, equipos telefonicos de mano tales como los denominados telefonos “inteligentes”, los denominados paneles “inteligentes”, televisores, camaras, dispositivos de visualizacion, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmision de video o similares. En algunos casos, el dispositivo fuente 12 y el dispositivo de destino 14 pueden estar equipados para la comunicacion inalambrica.
El dispositivo de destino 14 puede recibir los datos de video codificado que se van a descodificar, mediante un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de desplazar los datos de video codificado desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicacion para permitir al dispositivo de origen 12 transmitir datos de video codificado directamente al dispositivo de destino 14 en tiempo real. Los datos de video codificado pueden ser modulados de acuerdo con una norma de comunicacion, tal como un protocolo de comunicacion inalambrica, y transmitidos al dispositivo de destino 14. El medio de comunicacion puede comprender cualquier medio de comunicacion inalambrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o mas lineas de transmision fisica. El medio de comunicacion 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 medio de comunicacion puede incluir enrutadores,
5
10
15
20
25
30
35
40
45
50
55
60
65
conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion desde el dispositivo fuente 12 al dispositivo de destino 14.
De forma alternativa, los datos codificados pueden ser emitidos desde la interfaz de salida 22 a un dispositivo de almacenamiento 36. De forma similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 36 mediante la interfaz de entrada 28 del dispositivo de destino 14. El dispositivo de almacenamiento 36 puede incluir cualquiera de entre una diversidad de medios de almacenamiento de datos de acceso distribuido o local, tales como una unidad de disco fijo, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volatil o no volatil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de video codificado. En un ejemplo adicional, el dispositivo de almacenamiento 36 puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda retener los datos de video codificado, generados por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de video almacenados desde el dispositivo de almacenamiento 36 a traves de transmision en continuo o descarga. El servidor de ficheros 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. Entre los ejemplos de servidores de archivos se incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados a la red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de video codificado 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 por cable (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 servidor de ficheros. La transmision de datos de video codificado desde el dispositivo de almacenamiento 36 puede ser una transmision en continuo, una transmision de descarga o una combinacion de ambas.
Las tecnicas de esta divulgacion no estan limitadas necesariamente a aplicaciones o configuraciones inalambricas. Las tecnicas pueden aplicarse a la codificacion de video, en soporte de cualquiera entre una diversidad de aplicaciones de multimedios, tales como difusiones de television por el aire, transmisiones de television por cable, transmisiones de television por satelite, transmisiones de video por flujo, por ejemplo, mediante Internet, codificacion de video digital para su almacenamiento en un medio de almacenamiento de datos, descodificacion de video digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para dar soporte a la transmision de video unidireccional o bidireccional, para prestar soporte a aplicaciones tales como la transmision de video, la reproduccion de video, la difusion de video y/o la videotelefonia.
En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye un origen de video 18, un codificador de video 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador / desmodulador (modem) y/o un transmisor. En el dispositivo de origen 12, el origen de video 18 puede incluir un origen tal como un dispositivo de captura de video, por ejemplo, una videocamara, un archivo de video que contiene video previamente capturado, una interfaz de alimentacion de video para recibir video desde un proveedor de contenido de video y/o un sistema de graficos de ordenador para generar datos de graficos de ordenador como el video de origen, o una combinacion de tales origenes. En un ejemplo, si el origen 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, las tecnicas descritas en esta divulgacion pueden ser aplicables a la codificacion de video en general, y pueden aplicarse a aplicaciones inalambricas y/o cableadas.
El video capturado, pre-capturado o generado por ordenador puede ser codificado por el codificador de video 20. Los datos de video codificado pueden ser transmitidos directamente al dispositivo de destino 14 mediante la interfaz de salida 22 del dispositivo de origen 12. Los datos de video codificado tambien (o de forma alternativa) pueden almacenarse en el dispositivo de almacenamiento 36 para un acceso posterior por el dispositivo de destino 14 u otros dispositivos, para descodificacion y/o reproduccion.
El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de video 30 y un dispositivo de visualizacion 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un modem. La interfaz de entrada 28 del dispositivo de destino 14 puede recibir los datos de video codificado por el enlace 16. Los datos de video codificado, comunicados por el enlace 16, o proporcionados en el dispositivo de almacenamiento 36, pueden incluir una diversidad de elementos sintacticos generados por el codificador de video 20, para su uso por un descodificador de video, tal como el descodificador de video 30, en la descodificacion de los datos de video. Tales elementos sintacticos pueden incluirse con los datos de video codificado, transmitidos en un medio de comunicacion, almacenarse en un medio de almacenamiento o almacenarse en un servidor de ficheros.
El dispositivo de visualizacion 32 puede estar integrado con, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualizacion integrado y tambien estar configurado para interconectarse con un dispositivo de visualizacion externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualizacion. En general, el dispositivo de visualizacion 32 visualiza los datos de video descodificado a un usuario, y puede comprender cualquiera entre una variedad de dispositivos de visualizacion, tales como una pantalla de cristal liquido (LCD), una pantalla de plasma, una pantalla de diodos organicos emisores de luz (OLED) u otro tipo de dispositivo de visualizacion.
5
10
15
20
25
30
35
40
45
50
55
60
65
El codificador de video 20 y el descodificador de video 30 pueden funcionar de acuerdo con una norma de compresion de video, tal como la norma de codificacion de video de alta eficacia (HEVC), actualmente en fase de elaboracion, y pueden ajustarse al modelo de prueba HEVC (HM). De forma alternativa, el codificador de video 20 y el descodificador de video 30 pueden funcionar de acuerdo con otras normas patentadas o industriales, tales como la norma ITU-T H.264, de forma alternativa, denominada MPEG-4, Parte 10, Codificacion Avanzada de Video (AVC), o extensiones de tales normas, por ejemplo, las extensiones de codificacion de video de multiples vistas (MVC) o de codificacion de video escalable (SVC). Sin embargo, las tecnicas de esta divulgacion no estan limitadas a ninguna norma de codificacion particular. Otros ejemplos de normas de compresion de video incluyen MPEG-2 e ITU-T H.263.
Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de video 20 y el descodificador de video 30 pueden estar integrado, cada uno de ellos, con un codificador y descodificador de audio, y pueden incluir unidades adecuadas de multiplexado y demultiplexado, u otro hardware y software, para gestionar la codificacion, tanto de audio como de video, en un flujo de datos comun o en flujos de datos diferentes. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador de video 20 y el descodificador de video 30 pueden implementarse como cualquiera entre una variedad de circuitos de codificadores adecuados, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados de aplicacion especifica (ASIC), matrices de puertas programables in situ (FPGA), logica discreta, software, hardware, firmware o cualquier combinacion de estos. Cuando las tecnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en unos medios legibles por ordenador no transitorios adecuados, y ejecutar las instrucciones en hardware mediante uno o mas procesadores que realizan las tecnicas de esta divulgacion. Tanto el codificador de video 20 como el descodificador de video 30 pueden estar incluidos en uno o mas codificadores o descodificadores, donde cualquiera de ambos puede estar integrado como parte de un codificador/descodificador (CODEC) combinado en un dispositivo respectivo.
En general, el modelo de funcionamiento del HM describe que una trama o imagen de video puede dividirse en una secuencia de bloques arbolados o unidades de codificacion de mayor tamano (LCU), que incluyen muestras tanto de luma como de croma. Un bloque de arbol tiene un fin similar al de un macrobloque de la norma H.264. Un segmento incluye un numero de bloques de arbol consecutivos en orden de codificacion. Una trama o imagen de video puede dividirse en uno o mas fragmentos. Cada bloque arbolado puede separarse en unidades de codificacion (CU) de acuerdo con un arbol cuadruple. Por ejemplo, un bloque de arbol, como un nodo raiz del arbol cuaternario, puede separarse en cuatro nodos hijo, y cada nodo hijo puede a su vez ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no separado, como un nodo hoja del arbol cuaternario, comprende un nodo de codificacion, es decir, un bloque de video codificado. Los datos sintacticos asociados a un flujo de bits codificado pueden definir un numero maximo de veces que puede separarse un bloque de arbol, y tambien pueden definir un tamano minimo de los nodos de codificacion.
Una CU incluye un nodo de codificacion y unidades de prediccion (PU) y unidades de transformacion (TU) asociadas al nodo de codificacion. Un tamano de la CU corresponde a un tamano del nodo de codificacion y debe ser de forma cuadrada. El tamano de la CU puede variar desde 8 x 8 pixeles hasta el tamano del bloque arbolado, con un maximo de 64 x 64 pixeles o mas. Cada CU puede contener una o mas PU y una o mas TU. Los datos sintacticos asociados a una CU pueden describir, por ejemplo, la division de la CU en una o mas PU. Los modos de division pueden diferir dependiendo de si la CU esta codificada en modo de salto o directo, codificada en modo de intra-prediccion o codificada en modo de inter-prediccion. Las PU pueden dividirse para no tener forma cuadrada. Los datos sintacticos asociados a una CU tambien pueden describir, por ejemplo, la division de la CU en una o mas TU de acuerdo con un arbol cuadruple. Una TU puede tener forma cuadrada o no cuadrada.
La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamano de las TU tipicamente se basa en el tamano de las PU de una CU dada definida para una LCU dividida, aunque puede que no siempre sea asi. Las TU presentan tipicamente el mismo tamano o un tamano mas pequeno que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades mas pequenas mediante una estructura de arbol cuadruple conocida como "arbol cuadruple residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencias de pixeles asociados a las TU pueden transformarse para generar coeficientes de transformada, que pueden cuantificarse.
En general, una PU incluye datos relacionados con el proceso de prediccion. Por ejemplo, cuando la PU esta codificada en modalidad intra, la PU puede incluir datos que describen una modalidad de prediccion intra para la PU. En otro ejemplo, cuando la PU esta codificada en la modalidad inter, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolucion para el vector de movimiento (por ejemplo, precision de pixeles de un cuarto o precision de pixeles de un octavo), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imagenes de referencia
5
10
15
20
25
30
35
40
45
50
55
60
65
(por ejemplo, la Lista 0 o la Lista 1) para el vector de movimiento.
En general, se usa una TU para los procesos de transformada y cuantificacion. Una CU dada que presenta una o mas PU tambien puede incluir una o mas unidades de transformada (TU). Tras la prediccion, el codificador de video 20 puede calcular valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencias de pixeles que se pueden transformar en coeficientes de transformada, cuantificar y explorar mediante las TU, para generar coeficientes de transformada en serie para la codificacion de entropia. Esta divulgacion usa tipicamente el termino “bloque de video” para referirse a un nodo de codificacion de una CU. En algunos casos especificos, esta divulgacion tambien puede usar el termino “bloque de video” para referirse a un bloque de arbol, es decir, una LCU o una CU, que incluye un nodo de codificacion y unas PU y TU.
Una secuencia de video incluye tipicamente una serie de tramas o imagenes de video. Un grupo de imagenes (GOP) comprende en general una serie de una o mas de las imagenes de video. Un GOP puede incluir datos sintacticos en una cabecera del GOP, en una cabecera de una o mas de las imagenes o en otras ubicaciones, que describen un cierto numero de imagenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintacticos de fragmento que describen un modo de codificacion para el fragmento respectivo. Un codificador de video 20 actua tipicamente sobre bloques de video de fragmentos de video individuales con el fin de codificar los datos de video. Un bloque de video puede corresponder a un nodo de codificacion de una CU. Los bloques de video pueden presentar tamanos fijos o variables y pueden diferir en tamano de acuerdo con una norma de codificacion especificada.
En un ejemplo, el HM admite la prediccion en diversos tamanos de PU. Suponiendo que el tamano de una CU particular sea 2Nx2N, el HM admite la intra-prediccion en tamanos de PU de 2Nx2N o NxN y la inter-prediccion en tamanos de PU simetricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM tambien admite la division asimetrica para la inter- prediccion en tamanos de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la division asimetrica, una direccion de una CU no esta dividida, mientras que la otra direccion esta dividida en 25 % y 75 %. La parte de la CU correspondiente a la division de 25 % esta indicada por una “n” seguida de una indicacion “arriba”, “abajo”, “izquierda” o “derecha”. Asi, por ejemplo, “2NxnU” se refiere a una CU 2Nx2N que esta dividida horizontalmente con una PU 2Nx0,5N encima y una PU 2Nx1,5N debajo.
En esta divulgacion, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de pixeles de un bloque de video en terminos de dimensiones verticales y horizontales, por ejemplo, 16x16 pixeles o 16 por 16 pixeles. En general, un bloque de tamano 16 x 16 tendra 16 pixeles en la direccion vertical (y = 16) y 16 pixeles en la direccion horizontal (x = 16). Asimismo, un bloque NxN presenta en general N pixeles en una direccion vertical y N pixeles en una direccion horizontal, donde N representa un valor entero no negativo. Los pixeles de un bloque pueden estar dispuestos en filas y columnas. Ademas, los bloques no necesitan presentar necesariamente el mismo numero de pixeles en la direccion horizontal y en la direccion vertical. Por ejemplo, los bloques pueden comprender NxM pixeles, donde M no es necesariamente igual a N.
Tras la codificacion de intra-prediccion o inter-prediccion mediante las PU de una CU, el codificador de video 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de pixeles en el dominio espacial (tambien denominado dominio de pixeles) y las TU pueden comprender coeficientes en el dominio de transformada tras la aplicacion de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada entera, una transformada de wavelet o una transformada similar desde un punto de vista conceptual a los datos de video residuales. Los datos residuales pueden corresponder a diferencias de pixeles entre pixeles de la imagen no codificada y valores de prediccion correspondientes a las PU. El codificador de video 20 puede formar las TU incluyendo los datos residuales para la CU, y a continuacion transformar las TU para generar coeficientes de transformada para la CU.
Tras cualquier transformada para generar coeficientes de transformada, el codificador de video 20 puede realizar la cuantificacion de los coeficientes de transformada. La cuantificacion se refiere en general a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando una compresion adicional. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos o la totalidad de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja a un valor de m bits durante la cuantificacion, donde n es mayor que m.
En algunos ejemplos, el codificador de video 20 puede usar un orden de exploracion predefinido para explorar los coeficientes de transformada cuantificados y generar un vector en serie que pueda someterse a la codificacion por entropia. En otros ejemplos, el codificador de video 20 puede realizar una exploracion adaptativa. Despues de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de video 20 puede realizar la codificacion de entropia del vector unidimensional, por ejemplo, de acuerdo con la codificacion de longitud variable adaptativa de acuerdo con el contexto (CAVLC), la codificacion aritmetica binaria adaptativa segun el contexto (CABAC), la codificacion aritmetica binaria adaptativa segun el contexto basada en la sintaxis (SBAC), la codificacion de entropia por division de intervalos de probabilidad (PIPE) u otros procedimientos de codificacion de entropia. El codificador de video 20 tambien puede realizar la codificacion por entropia de elementos sintacticos asociados a los datos de video codificados para su uso por el descodificador de video 30 en la
5
10
15
20
25
30
35
40
45
50
55
60
65
descodificacion de los datos de video.
Para realizar la CABAC, el codificador de video 20 puede asignar un contexto de un modelo contextual a un simbolo que se va a transmitir. El contexto puede referirse, por ejemplo, a si los valores contiguos del simbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de video 20 puede seleccionar un codigo de longitud variable para un simbolo que se va a transmitir. Las palabras de codigo en la VLC pueden construirse de forma que los codigos relativamente mas cortos correspondan a simbolos mas probables, mientras que los codigos mas largos correspondan a simbolos menos probables. De esta manera, el uso de la VLC puede permitir un ahorro en bits con respecto, por ejemplo, al uso de palabras de codigo de igual longitud para cada simbolo que se va a transmitir. La determinacion de la probabilidad puede basarse en un contexto asignado al simbolo.
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 descodificador 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 numero de tramas en el respectivo GOP, y los datos sintacticos de trama pueden indicar una modalidad de codificacion/prediccion utilizada para codificar la trama correspondiente.
Ademas, el codificador de video 20 puede descodificar imagenes codificadas, por ejemplo, por cuantificacion inversa y transformacion inversa de datos residuales, y combinar los datos residuales con datos de prediccion. De esta manera, el codificador de video 20 puede simular el proceso de descodificacion realizado por el descodificador de video 30. Tanto el codificador de video 20 como el descodificador de video 30, por lo tanto, tendran acceso a esencialmente las mismas imagenes descodificadas, para su uso en la prediccion entre imagenes.
En general, el descodificador de video 30 puede realizar un proceso de descodificacion que es el inverso al proceso de codificacion realizado por el codificador de video. Por ejemplo, el descodificador de video 30 puede realizar la descodificacion por entropia usando la inversa de las tecnicas de codificacion por entropia usadas por el codificador de video para codificar por entropia los datos de video cuantificados. El descodificador de video 30 puede ademas cuantificar inversamente los datos de video usando la inversa de las tecnicas de cuantificacion empleadas por el codificador de video 20, y puede realizar una inversa de la transformacion usada por el codificador de video 20 para producir los coeficientes de transformacion que estan cuantificados. El descodificador de video 30 puede entonces aplicar los bloques residuales resultantes a los bloques de referencia adyacentes (intra-prediccion) o a bloques de referencia procedentes de otra imagen (inter-prediccion), para producir el bloque de video para su exhibicion eventual. El descodificador de video 30 puede ser configurado, instruido, controlado o dirigido para realizar la inversa de los diversos procesos realizados por el codificador de video 20, basandose en los elementos sintacticos proporcionados por el codificador de video 20, con los datos de video codificados en el flujo de bits recibido por el descodificador de video 30.
En algunos ejemplos, el codificador de video 20 y el descodificador de video 30 pueden emplear tecnicas para la codificacion de video de multiples vistas, por ejemplo, la codificacion de datos de video que incluyen dos o mas vistas. En tales ejemplos, el codificador de video 20 puede codificar un flujo de bits que incluye datos de video codificado para dos o mas vistas, y el descodificador de video 30 puede descodificar los datos de video codificado para proporcionar las dos o mas vistas, por ejemplo, al dispositivo de visualizacion 32. En algunos ejemplos, el descodificador de video 30 puede proporcionar las multiples vistas de datos de video para permitir al dispositivo de visualizacion 32 exhibir video tridimensional. En algunos ejemplos, el codificador de video 20 y el descodificador de video 30 pueden ser conformes a una extension 3D-HEVC de la norma HEVC, por ejemplo, en la cual se usan procesos de codificacion de multiples vistas y de codificacion de multiples vistas con profundidad. Una extension de la HEVC para procesos de codificacion 3D-HEVC esta actualmente en desarrollo y, segun se propone en la actualidad, hace uso de procesos de codificacion de multiples vistas, o de codificacion de multiples vistas con profundidad.
La extension de video tridimensional de la HEVC puede denominarse 3DV basada en la HEVC, o 3D-HEVC. La 3D- HEVC esta basada, al menos en parte, en soluciones propuestas en el articulo de Schwarz y col., “Description of 3D Video Coding Technology Proposal by Fraunhofer HHI (configuracion A compatible con HEVC), ISO/IEC JTC1/SC29/WG11, Doc. MPEGll/M22570, Ginebra, Suiza, noviembre/diciembre de 2011, en lo sucesivo en el presente documento “m22570”, y en el de Schwarz y col.,“Description of 3D Video Coding Technology Proposal by Fraunhofer HHI (configuracion B compatible con HEVC), ISO/lEC JTC1/SC29/WG11, Doc. MPEG11/M22571, Ginebra, Suiza, noviembre/diciembre de 2011, en lo sucesivo en el presente documento “m22571”. Una descripcion de software de referencia para la 3D-HEVC esta disponible en Schwarz y col., “Test Model under Consideration for HEVC based 3D video coding,” ISO/IEC JTC1/SC29/WG11 MPEG2011/N12559, San Jose, Estados Unidos, febrero de 2012. El software de referencia, a saber HTM version 3.0 esta disponible, desde el 21 de mayo de 2013, desde
https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-3.0A
La codificacion de video de multiples vistas, o tridimensional, puede implicar la codificacion de dos o mas vistas de textura, y/o vistas que incluyan componentes de textura y de profundidad. En algunos ejemplos, los datos de video codificados por el codificador de video 20 y descodificados por el descodificador de video 30 incluyen dos o mas imagenes en cualquier instancia temporal dada, es decir, dentro de una “unidad de acceso”, o datos de los cuales
5
10
15
20
25
30
35
40
45
50
55
60
65
pueden ser obtenidas dos o mas imageries en cualquier instancia temporal dada.
En algunos ejemplos, un dispositivo, por ejemplo, el origen de video 18, puede generar las dos o mas imagenes, por ejemplo, usando dos o mas camaras espacialmente desplazadas, u otros dispositivos de captura de video, para capturar una escena comun. Dos imagenes de la misma escena capturadas simultaneamente, o casi simultaneamente, desde posiciones horizontales levemente distintas, pueden ser usadas para producir un efecto tridimensional. En algunos ejemplos, el origen de video 18 (u otro componente del dispositivo de origen 12) puede usar informacion de profundidad o informacion de disparidad para generar una segunda imagen (u otra adicional) de una segunda vista (u otra adicional) en una instancia temporal dada, a partir de una primera imagen de una primera vista en la instancia temporal dada. En este caso, una vista dentro de una unidad de acceso puede incluir un componente de textura correspondiente a una primera vista y un componente de profundidad que puede ser usado, con el componente de textura, para generar una segunda vista. La informacion de profundidad o disparidad puede ser determinada por un dispositivo de captura de video que captura la primera vista, por ejemplo, basandose en parametros de camara u otra informacion conocida, con respecto a la configuracion del dispositivo de captura de video y a la captura de los datos de video para la primera vista. La informacion de profundidad o disparidad puede ser calculada, adicionalmente o de forma alternativa, por el origen de video 18 u otro componente del dispositivo de origen 12, a partir de parametros de camara y/o datos de video en la primera vista.
Para presentar video tridimensional, el dispositivo de visualizacion 32 puede exhibir, simultaneamente, o casi simultaneamente, dos imagenes asociadas a distintas vistas de una escena comun, que fueron capturadas simultaneamente, o casi simultaneamente. En algunos ejemplos, un usuario del dispositivo de destino 14 puede usar gafas activas para obturar, rapidamente y de forma alternativa, las lentes izquierda y derecha, y el dispositivo de visualizacion 32 puede conmutar rapidamente entre una vista izquierda y una vista derecha, en sincronizacion con las gafas activas. En otros ejemplos, el dispositivo de visualizacion 32 puede exhibir las dos vistas simultaneamente, y el usuario puede usar gafas pasivas, por ejemplo, con lentes polarizadas, que filtran las vistas para hacer que las vistas adecuadas pasen a traves hasta los ojos del usuario. En otros ejemplos, el dispositivo de visualizacion 32 puede comprender un visor auto-estereoscopico, que no requiere gafas para que el usuario perciba el efecto tridimensional.
En el caso de la codificacion de multiples vistas, por ejemplo, en la 3D-HEVC, la prediccion entre imagenes puede incluir la prediccion del bloque de video actual, por ejemplo, la PU, a partir de otro bloque de video en una imagen temporalmente distinta, es decir, a partir de una unidad de acceso distinta a la de la imagen actual, asi como la prediccion a partir de una imagen distinta en la misma unidad de acceso que la imagen actual, pero asociada a una vista distinta a la de la imagen actual. En este ultimo caso, la inter-prediccion puede denominarse codificacion entre vistas. Al codificar una imagen de una vista no base, por ejemplo, una vista dependiente, una imagen de la misma unidad de acceso, pero de una vista distinta, por ejemplo, de una vista de referencia, puede anadirse a una lista de imagenes de referencia. Una imagen de referencia entre vistas puede ponerse en cualquier posicion de una lista de imagenes de referencia, como es el caso con cualquier imagen de referencia de inter-prediccion (por ejemplo, temporal o entre vistas).
En la codificacion de multiples vistas, hay dos clases de vectores de prediccion. Uno es un vector de movimiento que apunta a un bloque en una imagen de referencia temporal, y la correspondiente inter-prediccion se denomina prediccion compensada en movimiento (MCP). El otro tipo de vector de prediccion es un vector de disparidad, que apunta a un bloque en una imagen en la misma unidad de acceso de la imagen actual, pero de una vista distinta. Con un vector de disparidad, la correspondiente inter-prediccion se denomina prediccion compensada en disparidad (DCP).
En algunos ejemplos, el codificador de video 20 y el descodificador de video 30 pueden emplear tecnicas para la codificacion de video escalable, por ejemplo, codificar un flujo de bits de video de alta calidad que tambien contiene uno o mas subconjuntos de flujos de bits. Un subconjunto de flujos de bits de video puede obtenerse descartando paquetes del flujo mayor de bits de video de alta calidad, para reducir el ancho de banda requerido para el subconjunto de flujos de bits. El subconjunto de flujos de bits puede representar una menor resolucion espacial (pantalla mas pequena), una menor resolucion temporal (menor velocidad de tramas) o una senal de video de menor calidad. Los diversos flujos de bits pueden denominarse capas y sub-capas. La codificacion de video escalable puede incluir definir o construir puntos de operacion cuando las capas son presentadas en diversas organizaciones. En algunos ejemplos, el codificador de video 20 y el descodificador de video 30 pueden ser conformes a una extension de codificacion de video escalable de una norma de codificacion de video, tal como la HEVC.
La codificacion de video escalable puede incluir ajustabilidad temporal a escala para capas con distintas resoluciones. Para la codificacion de video escalable, un GOP puede incluir una denominada imagen clave, y todas las imagenes que estan situadas en el orden de salida/exhibicion entre esta imagen clave y la imagen clave anterior. Una imagen clave puede ser codificada en intervalos regulares o irregulares, y puede ser bien intra-codificada o bien inter-codificada, usando la imagen clave anterior como una referencia para la prediccion compensada en movimiento. Las imagenes no claves pueden predecirse jerarquicamente a partir de imagenes con niveles temporales inferiores, y la imagen clave puede tener el mas bajo nivel temporal.
5
10
15
20
25
30
35
40
45
50
55
60
65
La codificacion de video escalable tambien puede incluir la prediccion entre capas para las ajustabilidades a escala, espaciales y de relacion entre senal y ruido (SNR), basandose en la textura, el residuo y el movimiento. La ajustabilidad espacial a escala puede generalizarse para cualquier relacion de resolucion entre dos capas. La ajustabilidad a escala de la SNR puede ser realizada por la Ajustabilidad a Escala de Granularidad Gruesa (CGS), la Ajustabilidad a Escala de Granularidad Media (MGS) o la Ajustabilidad a Escala de Grano Fino (FGS). Dos capas espaciales, o de CGS, pueden pertenecer a distintas capas de dependencia, mientras que dos capas de MGS pueden estar en la misma capa de dependencia. La codificacion de video escalable puede proporcionar procedimientos de prediccion entre capas que pueden utilizarse para reducir la redundancia entre capas. Se resumen como prediccion de textura entre capas, prediccion residual entre capas y prediccion de movimiento entre capas.
El codificador de video 20 genera un flujo de bits para la recepcion y/o recuperacion por parte del descodificador de video 30. El flujo de bits puede incluir datos codificados, por ejemplo, datos de video codificados e informacion sintactica, y puede mencionarse como un flujo de bits codificado. El codificador de video 20 puede organizar los datos de video en el flujo de bits en unidades de capa de abstraccion de red (NAL), cada una de las cuales puede ser efectivamente un paquete con un numero entero de octetos. El codificador de video 20, la interfaz de salida 22, otro componente del dispositivo de origen 12 u otro dispositivo pueden entramar o encapsular las unidades de NAL en paquetes del protocolo de transporte del sistema, por ejemplo, paquetes del Protocolo de Internet (IP) o del Protocolo de Transporte en Tiempo Real (RTP), para su transmision mediante el enlace 16 o su almacenamiento en el dispositivo de almacenamiento 36.
Las unidades de NAL pueden incluir unidades de NAL de capa de codificacion de video (VCL) y unidades de NAL no de VCL. Las unidades de NAL de VCL incluyen datos de video codificado, que pueden incluir, como se ha analizado anteriormente, una pluralidad de capas y/o vistas. Las unidades de NAL no de VCL pueden incluir cualquier informacion adicional asociada, tal como informacion sintactica, usada para asistir al descodificador de video 30 en la descodificacion y/o la exhibicion de imagenes de video representadas por los datos de video codificado, o para proporcionar resistencia a los errores.
La informacion sintactica proporcionada por el codificador de video 20 puede incluir conjuntos de parametros, tales como los PPS, los SPS y los VPS, como se ha descrito anteriormente. En algunos ejemplos, el codificador de video 20 puede proporcionar los conjuntos de parametros mediante el canal que lleva las unidades de NAL de VCL a las cuales se aplican, por ejemplo, como avance de las unidades de NAL de VCL a las cuales se aplican mediante unidades de NAL no de VCL, lo cual puede denominarse transmision “en banda” de conjuntos de parametros. En otros ejemplos, el codificador de video 20 puede proporcionar conjuntos de parametros al descodificador de video 30, mediante un mecanismo de transporte diferente, por ejemplo, “fuera de banda”, que puede ser mas fiable que el propio canal de video. En otros ejemplos, el codificador de video 20 y/o el descodificador de video 30 pueden ser codificados directamente con los conjuntos de parametros.
Como se ha expuesto anteriormente, el descodificador de video 30 puede almacenar los conjuntos de parametros en respectivas estructuras de datos para cada tipo de conjunto de parametros, por ejemplo, una tabla de PPS que incluye una pluralidad de los PPS, una tabla de SPS que incluye una pluralidad de SPS y una tabla de VPS que incluye una pluralidad de los VPS, incluyendo cada conjunto de parametros, en una de las estructuras de datos, distintos valores para el conjunto de parametros. El descodificador de video 30 puede activar uno o mas conjuntos de parametros de cada tipo en cualquier instancia dada, para descodificar los datos de video codificados, por ejemplo, copiando los datos del conjunto de parametros en las respectivas estructuras de datos de descodificacion, y aplicando los datos en las estructuras de descodificacion para descodificar los datos de video codificado.
El descodificador de video 30 puede activar los conjuntos de parametros para descodificar datos de video de una o mas unidades de NAL de VCL, en respuesta a ser mencionados, directa o indirectamente, en una o mas unidades de NAL de VCL, por ejemplo, en una cabecera de fragmento de una unidad de NAL de VCL. Como se ha analizado anteriormente, cada conjunto de parametros puede incluid un ID, que tambien puede ser mencionado en otro conjunto de parametros (por ejemplo, referencia a ID de VPS en un SPS e ID de SPS mencionado en el PPS), o dentro de la cabecera de fragmento, o en otra parte, dentro de la unidad de NAL de VCL. El descodificador de video 30 puede activar un PPS basandose en la referencia a su ID de PPS en la cabecera de fragmento, o en otra parte, dentro de la unidad de NAL de VCL, activar un SPS basandose en la referencia a su ID de SPS en el PPS activado, y activar un VPS basandose en la referencia a su ID de VPS en el SPS activado.
La informacion sintactica que el codificador de video 20 proporciona al descodificador de video 30 tambien puede incluir mensajes de informacion complementaria de mejora (SEI). Algunos mensajes de SEI son de nivel secuencial (por ejemplo, se refieren a un grupo codificado de imagenes (GOP) o a otra secuencia de imagenes de video codificadas), mientras que otros pueden referirse a una imagen codificada especifica. Los mensajes de SEI son tipicamente transmitidos con una imagen codificada especifica. Es decir, para recuperar un mensaje de SEI, un descodificador de video necesita por lo comun recuperar la imagen codificada que incluye el mensaje de SEI. Uno o mas mensajes de SEI pueden estar incluidos en una unidad de NAL no de VCL, que puede denominarse una unidad de NAL de SEI.
5
10
15
20
25
30
35
40
45
50
55
Un conjunto de unidades de NAL en una forma especificada puede mencionarse como una unidad de acceso. La descodificacion de cada unidad de acceso por parte del descodificador de vfdeo 30 puede dar como resultado una o mas imagenes o tramas descodificadas. En el caso de la codificacion de vfdeo de multiples vistas, la descodificacion de cada unidad de acceso por parte del descodificador de vfdeo 30 puede dar como resultado dos o mas imagenes o tramas asociadas a vistas respectivas en la misma (o esencialmente la misma) instancia en el tiempo. En el caso de la codificacion de vfdeo escalable, cada unidad de acceso puede incluir una pluralidad de capas y/o sub-capas de datos de vfdeo para una unica imagen o trama. Una unidad de acceso generada por el codificador de vfdeo 20 puede incluir una o mas unidades de NAL de VCL, y una o mas unidades de NAL no de VCL, por ejemplo, unidades de NAL de SEI, que contienen informacion sintactica, por ejemplo, mensajes de SEI, usada por el descodificador de vfdeo para descodificar los datos de vfdeo dentro de las unidades de NAL de VCL de la unidad de acceso.
Como se ha analizado anteriormente, los mensajes de SEI incluidos en el flujo de bits codificado por el codificador de vfdeo 20 pueden incluir, como ejemplos, un mensaje de SEI de conjuntos de parametros activos y un mensaje de SEI de periodo de almacenamiento temporal. De acuerdo con propuestas para la norma HEVC, el SPS puede, ademas de ser activado haciendose referencia al mismo en un PPS, ser activado haciendose referencia al mismo en un mensaje de SEI de periodo de almacenamiento temporal. En tales ejemplos, el codificador de vfdeo 20 puede codificar el mensaje de SEI de periodo de almacenamiento temporal de modo que incluya el ID de SPS del SPS a activar. El descodificador de vfdeo 30 activa el SPS asociado al ID de SPS en un mensaje descodificado de SEI de periodo de almacenamiento temporal.
Adicionalmente, de acuerdo con el WD8 de la HEVC, el codificador de vfdeo 20 puede codificar un mensaje de SEI de conjuntos de parametros activos para indicar el VPS actualmente activo y el SPS actualmente activo, por ejemplo, por la inclusion de los ID del VPS y del SPS, para el VPS y el SPS actualmente activos, en el mensaje de SEI de conjuntos de parametros activos. De acuerdo con el WD8 de la HEVC, el descodificador de vfdeo 30 no activa el VPS y el SPS por estar mencionados el VPS y el SPS en el mensaje de SEI de conjuntos de parametros activos. En cambio, el codificador de vfdeo 20 puede incluir el mensaje de SEI de conjuntos de parametros activos en el flujo de bits codificado, para indicar al descodificador de vfdeo 30 que conjuntos de parametros deberfa considerar activos el descodificador de vfdeo para descodificar datos de vfdeo, y permitir por ello al descodificador de vfdeo confirmar la debida operacion de descodificacion.
En general, el mensaje de SEI de conjuntos de parametros activos, especificado por el WD8 de la HEVC, indica cual VPS esta activo y cual SPS esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos, por ejemplo, dentro de la cual esta incluido el mensaje de SEI de conjuntos de parametros activos. El mensaje de SEI de conjuntos de parametros activos tambien puede proporcionar otra informacion. De acuerdo con el WD8 de la HEVC, un mensaje de SEI de conjuntos de parametros activos precede, en orden de descodificacion, a la primera parte de los datos de vfdeo, por ejemplo, la primera unidad de NAL de VCL, en la unidad de acceso, por ejemplo, esta dentro de una unidad de nAl no de VCL que precede a la primera unidad de NAL de VCL en la unidad de acceso.
La sintaxis y la semantica del mensaje de SEI de conjuntos de parametros activos en la especificacion del WD8 de la HEVC son como se indican a continuacion:
active_parameter_sets(payloadSize) {
Descriptor
active_vps_id
u(4)
active seq param set id
ue(v)
active_param_set_sei_extension_flag
u(1)
}
active_vps_id indica el VPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos.
active_seq_param_set_id indica el identificador del unico SPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos. El valor de active_seq_param_set_id puede estar en la gama entre 0 y 31, inclusive.
active_param_set_sei_extension_flag, cuando es igual a 0, indica que no sigue ningun dato adicional dentro del mensaje de SEI de conjuntos de parametros activos. Es un requisito de conformidad del flujo de bits que el valor de active_param_set_sei_extension_flag sea igual a 0. El valor 1 para active_param_set_sei_extension_flag esta reservado para uso futuro por ITU-T | ISO/IEC. Los descodificadores ignoraran el valor de active_param_set_sei_extension_flag en un mensaje de SEI de conjuntos de parametros activos, e ignoraran todos los datos que siguen, dentro de un mensaje de SEI de conjuntos de parametros activos, despues del valor 1 para active_param_set_sei_extension_flag.
5
10
15
20
25
30
35
40
45
50
Como se ha analizado anteriormente, en algunos ejemplos de acuerdo con la presente divulgacion, el codificador de video 20 puede incluir multiples ID de SPS en un mensaje de SEI de forma que pueden indicarse multiples SPS activos (algunos de los cuales pueden denominarse SPS de capa activa). En algunos ejemplos, en lugar del unico ID de SPS especificado por el WD8 de la HEVC, el codificador de video 20 puede incluir multiples ID de SPS en el mensaje de SEI de conjuntos de parametros activos. El codificador de video 20 puede indicar multiples SPS activos, cada uno de los cuales puede ser usado por el descodificador de video 30 para descodificar una o mas capas y/o vistas, para facilitar la codificacion de video de multiples vistas, la tridimensional o escalable. En los ejemplos en los cuales el codificador de video 20 incluye multiples ID de SPS en el mensaje de SEI de conjuntos de parametros activos, el mensaje de SEI de conjuntos de parametros activos indica que VPS esta activo y cuales SPS estan activos para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos.
En los diversos ejemplos de acuerdo con la presente divulgacion, descritos en lo sucesivo en el presente documento, se supone que todos los SPS comparten el mismo espacio de valores para sus ID de SPS, y distintas capas o vistas pueden compartir los SPS. Si distintas capas o vistas no comparten los SPS, entonces un ID de capa o un ID de vista tambien necesita ser senalizado, o el ID de capa o el ID de vista pueden ser implicitamente obtenidos, ademas del ID de SPS, para identificar un SPS. Por ejemplo, si un SPS se aplica solamente a la capa de base o a la vista de base, el ID de capa o el ID de vista pueden ser implicitamente obtenidos, iguales a 0. En consecuencia, un codificador de video puede obtener un ID de capa basandose en una posicion jerarquica de una capa o vista con respecto a otras capas o vistas.
Un ejemplo de la sintaxis y la semantica de un mensaje de SEI de conjuntos de parametros activos, que puede ser proporcionado por el codificador de video 20 para indicar multiples SPS de acuerdo con las tecnicas de esta divulgacion, es como se indica a continuacion:
active_parameter_sets( payloadSize ) {
Descriptor
active_vps_id
u(4)
active seq param set id
ue(v)
bit equal to one
fm
num additional sps ids minus1
ue(v)
for( i = 0; i <= num additional sps ids minus1; i++ )
additional active sps id[ i ]
ue(v)
active param set sei extension2 flag
u(1)
}
active_vps_id indica el VPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos.
active_seq_param_set_id indica el identificador de un SPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI. El valor de active_seq_param_set_id puede estar en la gama entre 0 y 31, inclusive.
bit_equal_to_one es igual a 1. Este elemento sintactico es siempre igual a uno por retro-compatibilidad.
num_additional_sps_ids_minus1 mas 1, especifica el numero de SPS adicionales (que tambien pueden denominarse SPS de capa activa) que estan activos para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI. El valor de num_additional_sps_ids_minus1 puede estar en la gama entre 0 y 30, inclusive.
additional_active_sps_id[i] especifica el identificador del i-esimo SPS adicional que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos. El valor de additional_active_sps_id[i] puede estar en la gama entre 0 y 31, inclusive.
active_param_set_sei_extension2_flag, cuando es igual a 0, indica que no sigue ningun dato adicional dentro del mensaje de SEI de conjuntos de parametros activos. Es un requisito de conformidad del flujo de bits que el valor de active_param_set_sei_extension2_flag sea igual a 0. El valor 1 para active_param_set_sei_extension2_flag esta reservado para uso futuro por ITU-T | ISO/IEC. Los descodificadores ignoraran el valor de active_param_set_sei_extension2_flag en un mensaje de SEI de conjuntos de parametros activos e ignoraran todos los datos que siguen, dentro de un mensaje de SEI de conjuntos de parametros activos, despues del valor 1 para active_param_set_sei_extension2_flag.
5
10
15
20
25
30
35
40
45
50
55
Como otro ejemplo, la sintaxis y la semantica del mensaje de SEI de conjuntos de parametros activos, que puede ser proporcionado por el codificador de vfdeo 20, de acuerdo con las tecnicas de esta divulgacion, tanto en una especificacion de la HEVC de base como en una especificacion de una extension de la HEVC, por ejemplo, para la codificacion de vfdeo de multiples vistas, tridimensional o escalable, pueden ser como se indica a continuacion:
active_parameter_sets( payloadSize ) {
Descriptor
active_vps_id
u(4)
num sps ids minusl
ue(v)
for(i = 0: i <= num sps ids minus1: i++ )
active sps id[ i ]
ue(v)
active_param_set_sei_extension_flag
u(1)
}
active_vps_id identifica el VPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos.
num_sps_ids_minus1, mas 1, especifica el numero de SPS (algunos de los cuales tambien pueden denominarse SPS de capa activa) que estan activos para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos. El valor del num_sps_ids_minus1 puede estar en la gama entre 0 y 31, inclusive.
active_sps_id[i] especifica el identificador del i-esimo SPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI. El valor de active_sps_id[i] puede estar en la gama entre 0 y 31, inclusive.
active_param_set_sei_extension_flag, cuando es igual a 0, indica que no sigue ningun dato adicional dentro del mensaje de SEI de conjuntos de parametros activos. Es un requisito de conformidad del flujo de bits que el valor de active_param_set_sei_extension_flag sea igual a 0. El valor 1 para active_param_set_sei_extension_flag esta reservado para uso futuro por ITU-T | ISO/IEC. Los descodificadores ignoraran el valor de active_param_set_sei_extension_flag en un mensaje de SEI de conjuntos de parametros activos, e ignoraran todos los datos que siguen, dentro de un mensaje de SEI de conjuntos de parametros activos, despues del valor 1 para active_param_set_sei_extension_flag.
En los ejemplos anteriores, en los cuales el codificador de vfdeo 20 proporciona un mensaje de SEI de conjuntos de parametros activos que indica un VPS activo y uno o mas SPS activos, la activacion de conjuntos de parametros puede ser la misma que en el WD8 de la HEVC. Por ejemplo, el descodificador de vfdeo 30 puede activar un PPS basandose en un ID de PPS en una cabecera de fragmento proporcionada en el flujo de bits codificado por el codificador de vfdeo 20. El descodificador de vfdeo 30 puede ademas activar uno o mas SPS basandose en los ID de SPS en el PPS asf activado, o proporcionados por el codificador de vfdeo 20 en un mensaje de SEI de periodo de almacenamiento temporal, y puede activar un VPS basandose en un ID de VPS en un SPS activado.
En otros ejemplos en los cuales un codificador 20 proporciona un mensaje de SEI que indica un VPS activo y uno o mas SPS activos, el descodificador de vfdeo 30 puede activar un VPS y/o uno o mas SPS basandose en el VPS y/o a los SPS mencionados en el mensaje de SEI. En tales ejemplos, el mensaje de SEI no solamente indica el VPS activo y los SPS activos, sino que tambien los activa. En consecuencia, en tales ejemplos, la activacion del VPS y de los SPS esta cambiada en comparacion con la del WD8 de la HEVC.
Por ejemplo, el codificador de vfdeo 20 puede proporcionar un mensaje de SEI de conjuntos de parametros activos que indica un VPS activo y uno o mas SPS activos, y el descodificador de vfdeo 30 puede activar el VPS y/o uno o mas SPS basandose en su mencion en el mensaje de SEI. Ademas, en tales ejemplos, el ID de SPS puede ser eliminado del mensaje de SEI de periodo de almacenamiento temporal, es decir, el codificador de vfdeo 20 puede codificar el mensaje de SEI de periodo de almacenamiento temporal de modo que excluya todo ID de SPS. En tales ejemplos, el codificador de vfdeo 20 puede codificar el flujo de bits de modo que, para cada unidad de acceso que incluya un mensaje de SEI de periodo de almacenamiento temporal, tambien habra un mensaje de SEI de conjuntos de parametros activos, y el mensaje de SEI de conjuntos de parametros activos sera el primer mensaje de SEI en la primera unidad de NAL de SEI de la unidad de acceso.
La sintaxis y la semantica del mensaje de SEI de periodo de almacenamiento temporal, que puede ser proporcionado por el codificador de vfdeo 20 de acuerdo con tecnicas en las cuales se elimina el ID de SPS del mensaje de SEI de periodo de almacenamiento temporal, son como se indica a continuacion:
buffering_period(payloadSize) {
Descriptor
if( !sub_pic_cpb_params_present flag )
rap_cpb_params_present_flag
u(1)
if(NalHrdBpPresentFlag) {
for(SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[SchedSelIdx]
u(v)
initial_cpb_removal_delay_offset[ SchedSelIdx ]
u(v)
if( sub_pic_cpb_params_present_flag || rap_cpb_params_present_flag ) {
initial_alt_cpb_removal_delay[ SchedSelIdx ]
u(v)
initial_alt_cpb_removal_delay_offset[ SchedSelIdx ]
u(v)
}
}
}
if( VclHrdBpPresentFlag ) {
for( SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++ ) {
initial_cpb_removal_delay[ SchedSelIdx ]
u(v)
initial_cpb_removal_delay_offset[ SchedSelIdx ]
u(v)
if( sub_pic_cpb_params_present_flag || rap_cpb_params_present_flag) {
initial_alt_cpb_removal_delay[ SchedSelIdx ]
u(v)
initial_alt_cpb_removal_delay_offset[ SchedSelIdx ]
u(v)
}
}
}
}
Un cambio en la sintaxis y la semantica del mensaje de SEI de periodo de almacenamiento temporal, con respecto al WD8 de la HEVC, es la eliminacion del elemento sintactico seq_parameter_set_id.
5
Un ejemplo de sintaxis y semantica del mensaje de SEI de conjuntos de parametros activos, que puede ser proporcionado por el codificador de video 20 de acuerdo con tecnicas en las cuales el mensaje de SEI de conjuntos de parametros activos activa un VPS y uno o mas SPS, y el ID de SPS es eliminado del mensaje de SEI de periodo de almacenamiento temporal, es como se indica a continuacion:
10
active_parameter_sets( payloadSize ) {
Descriptor
active_vps_id
u(4)
active sea param set id
ue(v)
bit equal to one
irn
num additional sps ids minus1
ue(v)
for( i = 0: i <= num_additional_sps_ids_minus1; i++ )
additional_active_sps_id[ i ]
ue(v)
active param set sei extension2 flag
u(1)
}
5
10
15
20
25
30
35
40
45
50
55
active_vps_id indica el VPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos.
active_seq_param_set_id indica el identificador de un SPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI. El valor de active_seq_param_set_id puede estar en la gama entre 0 y 31, inclusive.
bit_equal_to_one es igual a 1.
num_additional_sps_ids_minus1 mas 1, especifica el numero de SPS adicionales (que tambien pueden denominarse SPS de capa activa) que estan activos para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI. El valor de num_additional_sps_ids_minus1 puede estar en la gama entre 0 y 30, inclusive.
additional_active_sps_id[i] especifica el identificador del i-esimo SPS adicional que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos. El valor de additional_active_sps_id[i] puede estar en la gama entre 0 y 31, inclusive.
active_param_set_sei_extension2_flag, cuando es igual a 0, indica que no sigue ningun dato adicional dentro del mensaje de SEI de conjuntos de parametros activos. Es un requisito de conformidad del flujo de bits que el valor de active_param_set_sei_extension2_flag sea igual a 0. El valor 1 para active_param_set_sei_extension2_flag esta reservado para uso futuro por ITU-T | ISO/IEC. Los descodificadores ignoraran el valor del active_param_set_sei_extension2_flag en un mensaje de SEI de conjuntos de parametros activos, e ignoraran todos los datos que siguen, dentro de un mensaje de SEI de conjuntos de parametros activos, despues del valor 1 para el active_param set_sei_extension2_flag.
Como otro ejemplo, la sintaxis y la semantica del mensaje de SEI de conjuntos de parametros activos, que puede ser proporcionado por el codificador de video 20 de acuerdo con las tecnicas de esta divulgacion, tanto en una especificacion de HEVC de base como en una especificacion de una extension de HEVC, por ejemplo, para la codificacion de video de multiples vistas, tridimensional o ajustable a escala, de acuerdo con tecnicas en las cuales el mensaje de SEI de conjuntos de parametros activos activa un VPS y uno o mas SPS, y el ID de SPS es eliminado del mensaje de SEI de periodo de almacenamiento temporal, pueden ser las siguientes:
active_parameter_sets(payloadSize) {
Descriptor
active_vps_id
u(4)
num sps ids minus1
ue(v)
for( i = 0;i <= num sps ids minus 1;i++ )
active sps id[ i ]
ue(v)
active_param_set_sei_extension_flag
u(1)
}
active_vps_id identifica el VPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos.
num_sps_ids_minus1, mas 1, especifica el numero de SPS (algunos de los cuales tambien pueden denominarse SPS de capa activa) que estan activos para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de conjuntos de parametros activos. El valor del num_sps_ids_minus1 puede estar en la gama entre 0 y 31, inclusive.
active_sps_id[i] especifica el identificador del i-esimo SPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI. El valor de active_sps_id[i] puede estar en la gama entre 0 y 31, inclusive.
active_param_set_sei_extension_flag, cuando es igual a 0, indica que no sigue ningun dato adicional dentro del mensaje de SEI de conjuntos de parametros activos. Es un requisito de conformidad del flujo de bits que el valor de active_param_set_sei_extension_flag sea igual a 0. El valor 1 para active_param_set_sei_extension_flag esta reservado para uso futuro por ITU-T | ISO/IEC. Los descodificadores ignoraran el valor de active_param_set_sei_extension_flag en un mensaje de SEI de conjuntos de parametros activos, e ignoraran todos los datos que siguen, dentro de un mensaje de SEI de conjuntos de parametros activos, despues del valor 1 para active_param set_sei_extension_flag.
En otros ejemplos, en lugar de un mensaje de SEI de conjuntos de parametros activos, el codificador de video 20 proporciona un mensaje de SEI de periodo de almacenamiento temporal que indica un VPS activo y uno o mas SPS activos, y el descodificador de video 30 puede activar el VPS y/o uno o mas SPS basandose en su mencion en el
mensaje de SEI de periodo de almacenamiento temporal. En tales ejemplos, el mensaje de SEI de conjuntos de parametros activos puede ser eliminado, por ejemplo, el codificador de video 20 puede codificar el flujo de bits de modo que la unidad de acceso que incluye el mensaje de SEI de periodo de almacenamiento temporal, que activa el PPS y uno o mas SPS, no incluya ningun mensaje de SEI de conjuntos de parametros activos que proporcione 5 informacion sintactica al descodificador de video 30, para descodificar los datos de video de la unidad de acceso. Ademas, en lugar de un unico ID de SPS y ningun ID de VPS, segun lo especificado en el WD8 de la HEVC, el mensaje de SEI de periodo de almacenamiento temporal puede incluir una pluralidad de ID de SPS, asi como un ID de VPS.
10 Un ejemplo de la sintaxis y la semantica de un mensaje de SEI de periodo de almacenamiento temporal, que puede ser proporcionado por el codificador de video 20 para activar un VPS y uno o mas SPS, es como se indica a continuacion:
buffering_period( payloadSize ) {
Descriptor
video parameter set id
u(4)
num sps ids minusl
ue(v)
for( i = 0; i <= num sps ids minusl: i++ )
active sps id [ i 1
ue(v)
if( !sub_pic_cpb_params_present_flag )
alt_cpb_params_present_flag
u(1)
if(NalHrdBpPresentFlag) {
for( SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++ ) {
initial_cpb_removal_delay[ SchedSelIdx ]
u(v)
initial_cpb_removal_delay_offset[ SchedSelIdx 1
u(v)
if( sub_pic_cpb_params_present_flag || alt cpb params present flag ) {
initial_alt_cpb_removal_delay[ SchedSelIdx 1
u(v)
initial_alt_cpb_removal_delay_offset[ SchedSelIdx 1
u(v)
}
}
}
if( VclHrdBpPresentFlag ) {
for( SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++ ) {
initial_cpb_removal_delay[ SchedSelIdx ]
u(v)
initial_cpb_removal_delay_offset[ SchedSelIdx 1
u(v)
if( sub_pic_cpb_params_present_flag || rap_cpb_params_present_flag) {
initial_alt_cpb_removal_delay[ SchedSelIdx 1
u(v)
initial_alt_cpb_removal_delay_offset[ SchedSelIdx 1
u(v)
}
}
}
}
15 La semantica para aquellos elementos sintacticos no mencionados mas adelante es la misma que en el WD8 de la HEVC.
active_vps_id identifica el VPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de periodo de almacenamiento temporal.
num_sps_ids_minus1, mas 1, especifica el numero de SPS (algunos de los cuales tambien pueden denominarse conjuntos de parametros secuenciales de capa activa) que estan activos para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de periodo de almacenamiento temporal. El valor del num_sps_ids_minus1 puede estar en la gama entre 0 y 31, inclusive.
5
active_sps_id[i] especifica el identificador del i-esimo SPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de periodo de almacenamiento temporal. El valor de active_sps_id[i] puede estar en la gama entre 0 y 31, inclusive.
10 Otro ejemplo de la sintaxis y la semantica de un mensaje de SEI de periodo de almacenamiento temporal, que puede ser proporcionado por el codificador de video 20 para activar un VPS y uno o mas SPS, es el siguiente:
buffering period( payloadSize) {
Descriptor
video parameter set id
u(4)
seq parameter set id
ue(v)
num addtional sps ids
ue(v)
for( i = 0: i < num additional sps ids; i++ )
sps id additional i ]
ue(v)
if( !sub pic cpb params present flag )
alt cpb params present flag
u(1)
if( NalHrdBpPresentFlag ) {
for( SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++ ) {
initial cpb removal delay[ SchedSelIdx ]
u(v)
initial cpb removal delay offset[ SchedSelIdx ]
u(v)
if( sub_pic_cpb_params_present_flag || alt cpb params present flag ) {
initial_alt_cpb_removal_delay[ SchedSelIdx ]
u(v)
initial_alt_cpb_removal_delay_offset[ SchedSelIdx ]
u(v)
}
}
}
if( VclHrdBpPresentFlag ) {
for( SchedSelIdx = 0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++ ) {
initial_cpb_removal_delay[ SchedSelIdx ]
u(v)
initial_cpb_removal_delay_offset[ SchedSelIdx ]
u(v)
if( sub_pic_cpb_params_present_flag || rap cpb params present flag) {
initial_alt_cpb_removal_delay[ SchedSelIdx ]
u(v)
initial_alt_cpb_removal_delay_offset[ SchedSelIdx ]
u(v)
}
}
}
}
La semantica para aquellos elementos sintacticos no mencionados mas adelante es la misma que en el WD8 de la 15 HEVC.
video_parameter_set_id identifica el VPS que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de periodo de almacenamiento temporal.
20 num_additional_sps_ids especifica el numero de SPS adicionales (que tambien pueden denominarse SPS de capa activa) que estan activos para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de periodo de almacenamiento temporal. El valor de num_additional_sps_ids puede estar en la gama entre 0 y 31, inclusive.
5
10
15
20
25
30
35
40
45
50
55
60
65
sps_id_additional[i] especifica el identificador del i-esimo SPS adicional que esta activo para las unidades de NAL de VCL de la unidad de acceso asociada al mensaje de SEI de periodo de almacenamiento temporal. El valor de sps_id_additional[i] puede estar en la gama entre 0 y 31, inclusive.
Las primeras sintaxis y semantica a modo de ejemplo del mensaje de SEI de periodo de almacenamiento temporal, usado para activar un PPS y uno o mas SPS, pueden ser usadas, por ejemplo, en una especificacion de extension, por ejemplo, de la HEVC, para la codificacion de video de multiples vistas o escalable. Pueden usarse las segundas sintaxis y semantica a modo de ejemplo del mensaje de SEI de periodo de almacenamiento temporal, usado para activar un PPS y uno o mas PPS, por ejemplo, en una especificacion de base, o bien una especificacion de extension, por ejemplo, de la HEVC. En algunos ejemplos, los elementos sintacticos num_addtional_sps_ids y sps_id_additional[i], de las segundas sintaxis y semantica a modo de ejemplo del mensaje de SEI de periodo de almacenamiento temporal, estan solamente presentes en una especificacion de extension, y no estan presentes en la especificacion de base, por ejemplo, de la HEVC. En algunos ejemplos, en la especificacion de base, se requiere que el valor del elemento sintactico num_addtional_sps_ids del segundo ejemplo sea igual a 0. En los ejemplos en los cuales estos elementos sintacticos no estan presentes en la especificacion de base, bien puede ser necesario un nuevo mensaje de SEI de periodo de almacenamiento temporal en las extensiones, o bien puede ser necesario un nuevo tipo distinto de mensaje de SEI para llevar los ID de los SPS adicionales.
En los ejemplos de acuerdo con esta divulgacion, en los cuales el VPS y uno o mas SPS son activados por el descodificador de video 30 basandose en su mencion en un mensaje de SEI, por ejemplo, tales como los ejemplos descritos anteriormente con respecto al mensaje de SEI de conjuntos de parametros activos y al mensaje de SEI de periodo de almacenamiento temporal, la activacion, de acuerdo con algunos ejemplos, puede ser de la siguiente manera. Una carga util de secuencia de bits en bruto del SPS (RBSP) incluye parametros que pueden ser mencionados por una o mas RBSP de PPS, o una o mas unidades de NAL de SEI que contienen un mensaje de SEI, por ejemplo, un mensaje de SEI de conjuntos de parametros activos o de periodo de almacenamiento temporal. Cada RBSP de SPS, por ejemplo, almacenada en una tabla u otra estructura de datos de los SPS, esta considerada inicialmente como no activa al comienzo del funcionamiento del proceso de descodificacion. A lo sumo una RBSP de SPS puede ser considerada activa en cualquier momento dado para una capa o vista especifica durante el funcionamiento del proceso de descodificacion, y la activacion de cualquier RBSP de SPS da como resultado la desactivacion de la RBSP de SPS anteriormente activa (si la hubiera) para la capa o vista especifica.
Cuando una RBSP de SPS especifica, con un valor especifico del ID de SPS (por ejemplo, el valor de seq_parameter_set_id), no esta ya activa, y es mencionada por la activacion de una RBSP de PPS, por ejemplo, usando ese valor de ID de SPS, o es mencionada por una unidad de NAL de SEI que contiene un mensaje de SEI, por ejemplo, usando ese valor de ID de SPS, es activada para la capa o vista especifica, segun lo identificado por el ID de capa o el ID de vista incluido en las unidades de NAL de VCL de la unidad de acceso que contiene el mensaje de SEI o las unidades de NAL de VCL que se refieren a la RBSP de PPS. El mensaje de SEI puede ser un mensaje de SEI de conjuntos de parametros activos o un mensaje de SEI de periodo de almacenamiento temporal, segun lo analizado anteriormente. Esta RBSP de SPS se llama la RBSP de SPS activa para la capa o vista especifica, hasta que es desactivada por la activacion de otra RBSP de SPS para la misma capa o vista. El codificador de video 20 puede proporcionar una RBSP de SPS, con ese valor especifico del ID de SPS, por ejemplo, el valor de seq_parameter_set_id, al descodificador 30 antes del proceso de descodificacion y la activacion del SPS. Por ejemplo, el codificador puede proporcionar el SPS por inclusion en al menos una unidad de acceso, con TemporalId igual a 0, a menos que el SPS sea proporcionado al descodificador 30 a traves de medios externos. Una RBSP de SPS activada para una capa o vista especifica permanecera activa para la capa especifica durante la secuencia entera de video codificado.
Cualquier unidad de NAL de SPS que contenga el valor del ID de SPS, por ejemplo, un valor de seq_parameter_set_id, para la RBSP de SPS activa para una capa o vista especifica, para una secuencia de video codificado, tendra el mismo contenido que el de la RBSP de SPS activa para la capa o vista para la secuencia de video codificado, a menos que siga a la ultima unidad de acceso de la secuencia de video codificado y preceda a la primera unidad de NAL de VCL y a la primera unidad de NAL de SEI que contiene un mensaje de SEI, por ejemplo, un mensaje de SEI de conjuntos de parametros activos o de periodo de almacenamiento temporal, cuando este presente, de otra secuencia de video codificado.
Una RBSP de VPS incluye parametros que pueden ser mencionados por una o mas RBSP de SPS o, de acuerdo con las tecnicas de esta divulgacion, una o mas unidades de NAL de SEI que contengan un mensaje de SEI. El mensaje de SEI puede ser un mensaje de SEI de conjuntos de parametros activos o un mensaje de SEI de periodo de almacenamiento temporal, segun lo analizado anteriormente. Cada RBSP de VPS esta considerada inicialmente como no activa al comienzo del funcionamiento del proceso de descodificacion. A lo sumo una RBSP de VPS se considera activa en cualquier momento dado durante el funcionamiento del proceso de descodificacion, y la activacion de cualquier RBSP de VPS especifica da como resultado la desactivacion de la RBSP de VPS previamente activa (si la hubiera).
Cuando una RBSP de VPS con un valor especifico del ID de VPS (por ejemplo, el valor de video_parameter set_id)
5
10
15
20
25
30
35
40
45
50
55
60
65
no esta ya activa y es mencionada por la activacion de una RBSP de SPS, por ejemplo, usando ese valor de ID de VPS o, de acuerdo con las tecnicas de esta divulgacion, es mencionada por una unidad de NAL de SEI que contiene un mensaje de SEI, por ejemplo, usando ese valor de ID de VPS, es activada. Segun lo analizado anteriormente, el mensaje de SEI puede ser un mensaje de SEI de conjuntos de parametros activos o de periodo de almacenamiento temporal, como ejemplos. La RBSP de VPS con el valor especifico del ID de VPS se llama la RBSP de VPS activa, hasta que sea desactivada por la activacion de otra RBSP de VPS. Una RBSP de VPS, con ese valor especifico del ID de VPS, estara disponible para el descodificador de video 30 antes de su activacion, e incluida en al menos una unidad de acceso con TemporalId igual a 0, a menos que el VPS sea proporcionado al descodificador de video 30 a traves de medios externos. Una RBSP de VPS activada permanecera activa durante la secuencia entera de video codificado. Cualquier unidad de NAL de VPS que contenga el valor de ID de VPS, por ejemplo, el valor de video_parameter_set_id, para la RBSP de VPS activa para una secuencia de video codificado, tendra el mismo contenido que el de la RBSP de VPS activa para la secuencia de video codificado, a menos que siga a la ultima unidad de acceso de la secuencia de video codificado y preceda a la primera unidad de NAL de VCL y a la primera unidad de NAL de conjunto de parametros de secuencia de otra secuencia de video codificado.
El codificador de video 20 y el descodificador de video 30 pueden implementarse, cada uno, como cualquiera entre una amplia variedad de circuitos codificadores o descodificadores adecuados, segun corresponda, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especificos de la aplicacion (ASIC), matrices de compuertas programables en el terreno (FPGA), circuitos de logica discreta, software, hardware, firmware o cualquier combinacion de los mismos. Cada uno del codificador de video 20 y el descodificador de video 30, puede estar incluido en uno o mas codificadores o descodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/descodificador (CODEC) de video combinado. Un dispositivo que incluye el codificador de video 20 y/o el descodificador de video 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicacion inalambrica, tal como un telefono celular.
FIG. 2 es un diagrama de bloques que ilustra una configuracion a modo de ejemplo del codificador de video 20, que puede implementar tecnicas para la activacion de conjuntos de parametros y la indicacion de cuales conjuntos de parametros estan activos para la codificacion de video de acuerdo con esta divulgacion. El codificador de video 20 puede realizar una codificacion intra e inter- de bloques de video dentro de segmentos de video. La intra-codificacion se basa en la prediccion espacial para reducir o eliminar la redundancia espacial en el video dentro de una trama o imagen de video dada. La inter-codificacion se basa en la prediccion temporal para reducir o eliminar la redundancia temporal en el video dentro de tramas o imagenes adyacentes de una secuencia de video. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresion espacial. Las inter-modalidades, tales como la prediccion unidireccional (modalidad P) o la bi-prediccion (modalidad B), pueden referirse a cualquiera de varias modalidades de compresion de base temporal.
En el ejemplo de la FIG. 2, el codificador de video 20 incluye una unidad de division 35, una unidad de procesamiento de prediccion 41, una memoria de imagenes de referencia 64, un sumador 50, una unidad de procesamiento de transformacion 52, una unidad de cuantificacion 54 y una unidad de codificacion por entropia 56. La unidad de procesamiento de prediccion 41 incluye la unidad de estimacion de movimiento 42, la unidad de compensacion de movimiento 44 y la unidad de procesamiento de intra-prediccion 46. Para la reconstruccion de bloques de video, el codificador de video 20 incluye tambien una unidad de cuantificacion inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62. Tambien puede incluirse un filtro de desbloqueo (no se muestra en la FIG. 2) para filtrar limites de bloque, para eliminar distorsiones de efecto pixelado del video reconstruido. Si se desea, el filtro de desbloqueo filtrara tipicamente la salida del sumador 62. Tambien pueden usarse filtros de bucle adicionales (en bucle o tras el bucle), ademas del filtro de desbloqueo.
Como se muestra en la FIG. 2, el codificador de video 20 recibe datos de video y la unidad de division 35 divide los datos en bloques de video. Esta division tambien puede incluir la division en segmentos, mosaicos u otras unidades mayores, asi como la division de bloques de video, por ejemplo, de acuerdo con una estructura de arbol cuaternario de unas LCU y CU. La configuracion a modo de ejemplo del codificador de video 20 ilustrado en la FIG. 2 ilustra en general los componentes que codifican bloques de video dentro de un fragmento de video a codificar. El fragmento puede dividirse en multiples bloques de video (y, posiblemente, en conjuntos de bloques de video mencionados como mosaicos).
La unidad de procesamiento de prediccion 41 puede seleccionar una entre una pluralidad de posibles modos de codificacion, tal como una entre una pluralidad de modos de intra-codificacion, o una de una pluralidad de modos de inter-codificacion, para el bloque de video actual, basandose en resultados de errores (por ejemplo, la velocidad de codificacion y el nivel de distorsion). La unidad de procesamiento de prediccion 41 puede proporcionar el bloque intra-codificado o inter-codificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una imagen de referencia.
La unidad de procesamiento de intra-prediccion 46, dentro de la unidad de procesamiento de prediccion 41, puede realizar la codificacion intra-predictiva del bloque de video actual con respecto a uno o mas bloques contiguos en la misma trama o fragmento que el bloque que va a codificarse, para proporcionar compresion espacial. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44, dentro de la unidad de procesamiento
5
10
15
20
25
30
35
40
45
50
55
60
65
de prediccion 41, realizan la codificacion inter-predictiva del bloque de video actual con respecto a uno o mas bloques predictivos en una o mas imagenes de referencia, para proporcionar compresion temporal.
La unidad de estimacion de movimiento 42 puede estar configurada para determinar el modo de prediccion inter para un segmento de video de acuerdo con un patron predeterminado para una secuencia de video. El patron predeterminado puede designar segmentos de video de la secuencia como segmentos P, segmentos B o segmentos GPB. 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, realizada por la unidad de estimacion de movimiento 42, es el proceso de generacion de vectores de movimiento, que estiman el movimiento de los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video de una trama o imagen de video actual con respecto a un bloque predictivo de una imagen de referencia.
Un bloque predictivo es un bloque del que se descubre que se corresponde estrechamente con la PU del bloque de video que se va a codificar en terminos de diferencia de pixeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), suma de diferencia al cuadrado (SSD) u otras metricas de diferencia. En algunos ejemplos, el codificador de video 20 puede calcular valores para posiciones de pixel de subentero de imagenes de referencia almacenadas en la memoria de imagenes de referencia 64. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de pixel, posiciones de un octavo de pixel u otras posiciones de pixel fraccionarias de la imagen de referencia. Por lo tanto, la unidad de estimacion de movimiento 42 puede realizar una busqueda de movimiento con respecto a las posiciones de pixel completo y a las posiciones de pixel fraccionario, y emitir un vector de movimiento con una precision de pixel fraccionario.
La unidad de estimacion de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video de un fragmento sometido a inter-codificacion, comparando la posicion de la PU con la posicion de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse entre una primera lista de imagenes de referencia (lista 0) o una segunda lista de imagenes de referencia (lista 1), cada una de las cuales identifica una o mas imagenes de referencia almacenadas en la memoria de imagenes de referencia 64. La unidad de estimacion de movimiento 42 envia el vector de movimiento calculado a la unidad de codificacion por entropia 56 y a la unidad de compensacion de movimiento 44.
La compensacion de movimiento, realizada por la unidad de compensacion de movimiento 44, puede implicar extraer o generar el bloque predictivo basandose en el vector de movimiento determinado por la estimacion de movimiento, realizando posiblemente interpolaciones hasta la precision de subpixel. Tras recibir el vector de movimiento para la PU del bloque de video actual, la unidad de compensacion de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imagenes de referencia. El codificador de video 20 forma un bloque de video residual restando los valores de pixeles del bloque predictivo a los valores de pixeles del bloque de video actual que se esta codificando, generando valores de diferencia de pixel. Los valores de diferencia de pixel forman datos residuales para el bloque, y pueden incluir componentes de diferencia de luma y croma. El sumador 50 representa el componente o los componentes que realizan esta operacion de sustraccion.
La unidad de compensacion de movimiento 44 tambien puede generar elementos sintacticos asociados a los bloques de video y al segmento de video para su uso por el descodificador de video 30 en la descodificacion de los bloques de video del segmento de video. Por ejemplo, la unidad de compensacion de movimiento 44 puede generar conjuntos de parametros y mensajes de SEI, de acuerdo con las tecnicas de esta divulgacion. En otros ejemplos, la unidad de estimacion de movimiento 42, la unidad de procesamiento de intra-prediccion 46, la unidad de procesamiento de prediccion 41 y/u otro componente del codificador de video 20 puede generar los conjuntos de parametros, los mensajes de SEI y otra informacion sintactica descrita en el presente documento, de acuerdo con las tecnicas de esta divulgacion.
La unidad de intra-prediccion 46 puede intra-predecir un bloque actual, de forma alternativa a la inter-prediccion llevada a cabo por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de procesamiento de intra-prediccion 46 puede determinar un modo de intra-prediccion a usar para codificar un bloque actual. En algunos ejemplos, la unidad de procesamiento de intra-prediccion 46 puede codificar un bloque actual usando varios modos de intra-prediccion, por ejemplo, durante diferentes pasadas de codificacion, y la unidad de procesamiento de intra-prediccion 46 (o una unidad de seleccion de modo (no mostrada), en algunos ejemplos) puede seleccionar un modo de intra-prediccion adecuada a usar, entre los modos probados. Por ejemplo, la unidad de procesamiento de intra-prediccion 46 puede calcular valores de velocidad-distorsion usando un analisis de velocidad-distorsion para los diversos modos de intra- prediccion probadas, y seleccionar el modo de intra-prediccion que tenga las mejores caracteristicas de velocidad- distorsion entre los modos probados. El analisis detasa-distorsion determina en general una cantidad de distorsion (o error) entre un bloque codificado y un bloque original no codificado que se codifico para generar el bloque codificado, asi como una tasa de bits (es decir, un numero de bits) usada para generar el bloque codificado. La unidad de procesamiento de intra-prediccion 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar que modo de intra-prediccion presenta el mejor valor de velocidad-
5
10
15
20
25
30
35
40
45
50
55
60
65
distorsion para el bloque.
En cualquier caso, tras seleccionar un modo de intra-prediccion para un bloque, la unidad de procesamiento de intra- prediccion 46 puede proporcionar informacion que indica el modo de intra-prediccion seleccionada para el bloque, a la unidad de codificacion por entropia 56. La unidad de codificacion por entropia 56 puede codificar la informacion que indica la modalidad de intra-prediccion seleccionada. El codificador de video 20 puede incluir datos de configuracion en el flujo de bits transmitido. Los datos de configuracion pueden incluir una pluralidad de tablas de indices de modos de intra-prediccion y una pluralidad de tablas de indices de modos de intra-prediccion modificadas (tambien denominadas tablas de correlacion de palabras de codigo), definiciones de contextos de codificacion para varios bloques e indicaciones del modo de intra-prediccion mas probable, una tabla de indices de modalidades de intra-prediccion y una tabla de indices de modos de intra-prediccion modificada, a usar para cada uno de los contextos.
Despues de que la unidad de procesamiento de prediccion 41 genera el bloque predictivo para el bloque de video actual, ya sea mediante la inter-prediccion o la intra-prediccion, el codificador de video 20 forma un bloque de video residual restando el bloque predictivo al bloque de video actual. Los datos de video residuales del bloque residual pueden incluirse en una o mas TU y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de video residuales en coeficientes de transformada residuales mediante una transformada, tal como una transformada de coseno discreta (DCT) o una transformada similar desde un punto de vista conceptual. La unidad de procesamiento de transformada 52 puede convertir los datos de video residuales de un dominio de pixel a un dominio de transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificacion 54. La unidad de cuantificacion 54 cuantifica los coeficientes de transformada para reducir mas la tasa de bits. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos o la totalidad de los coeficientes. El grado de cuantificacion puede modificarse ajustando un parametro de cuantificacion. En algunos ejemplos, la unidad de cuantificacion 54 puede realizar, a continuacion, una exploracion de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificacion por entropia 56 puede realizar la exploracion.
Tras la cuantificacion, la unidad de codificacion de entropia 56 realiza la codificacion de entropia de los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificacion de entropia 56 puede realizar una codificacion de longitud variable adaptativa segun el contexto (CAVLC), una codificacion aritmetica binaria adaptativa segun el contexto (CABAC), una codificacion aritmetica binaria adaptativa segun el contexto basada en la sintaxis (SBAC), una codificacion de entropia por division de intervalos de probabilidad (PIPE) u otros procedimientos o tecnicas de codificacion de entropia. Tras la codificacion de entropia realizada por la unidad de codificacion de entropia 56, el flujo de bits codificado puede transmitirse al descodificador de video 30, o archivarse para su posterior transmision o recuperacion por el descodificador de video 30. La unidad de codificacion por entropia 56 tambien puede codificar por entropia los vectores de movimiento, otra informacion de movimiento y los otros elementos sintacticos para el fragmento de video actual que esta siendo codificado.
La unidad de cuantificacion inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantificacion inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de pixel, para su posterior uso como un bloque de referencia de una imagen 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 imagenes de referencia de una de las listas de imagenes de referencia. La unidad de compensacion de movimiento 44 tambien puede aplicar uno o mas filtros de interpolacion al bloque residual reconstruido para calcular valores de pixel subentero y usarlos en la estimacion de movimiento. El sumador 62 anade el bloque residual reconstruido al bloque predictivo con compensacion de movimiento generado por la unidad de compensacion de movimiento 44 para generar un bloque de referencia para su almacenamiento en la memoria de imagenes de referencia 64. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden usar el bloque de referencia como un bloque de referencia para realizar la prediccion intra de un bloque en una trama o imagen de video subsiguiente.
Como se ha expuesto anteriormente, la unidad de compensacion 44, la unidad de estimacion de movimiento 42, la unidad de procesamiento de intra-prediccion 46, la unidad de procesamiento de prediccion 41 y/u otro componente del codificador de video 20 pueden generar informacion sintactica usada por el descodificador de video 30 para descodificar datos de video codificados por el codificador de video 20. La informacion sintactica puede incluir conjuntos de parametros, tales como los VPS, los SPS y los PPS. La informacion sintactica tambien puede incluir mensajes de SEI configurados de acuerdo con las tecnicas de esta divulgacion, tales como los mensajes de SEI de conjuntos de parametros activos y los mensajes de SEI de periodo de almacenamiento temporal, configurados de acuerdo con las tecnicas descritas en el presente documento. La unidad de codificacion por entropia 56 puede codificar los mensajes de SEI, o incluir de otro modo los mensajes de SEI como parte de un flujo de bits codificado.
De esta manera, el codificador de video 20 de la FIG. 2 representa un ejemplo de un codificador de video configurado para codificar un flujo de bits que incluye datos de video e informacion sintactica para codificar los datos
5
10
15
20
25
30
35
40
45
50
55
60
65
de video, en el que la informacion sintactica comprende un mensaje de SEI de una unidad de acceso, en el que el mensaje de SEI indica una pluralidad de SPS y un VPS para descodificar datos de video de la unidad de acceso, y para codificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicados en el mensaje de SEI.
El codificador de video 20 de la FIG. 2 tambien representa un ejemplo de un codificador de video configurado para codificar un flujo de bits que incluye datos de video e informacion sintactica, para descodificar los datos de video, en el que la informacion sintactica comprende un mensaje de SEI, y en el que el mensaje de SEI indica uno o mas SPS y un VPS, y para codificar los datos de video basandose en los uno o mas SPS y el VPS indicados en el mensaje de SEI. El codificador de video 20 puede codificar el flujo de bits para incluir el mensaje de SEI, de modo que un descodificador de video active los uno o mas SPS y el VPS para descodificar los datos de video, en respuesta a la indicacion de los uno o mas SPS y el VPS en el mensaje de SEI.
El codificador de video 20 codifica un mensaje de SEI para hacer que el descodificador de video 30 active conjuntos de parametros, o para indicar al descodificador de video 30 que conjuntos de parametros estan activos. El codificador de video 20 tambien codifica los datos de video basandose en los uno o mas SPS y al VPS indicados en el mensaje de SEI. Por ejemplo, el codificador de video 20 puede codificar los datos de video usando valores especificos para diversos parametros, y luego puede seleccionar conjuntos de parametros, para su uso por el descodificador de video 30 en la descodificacion de los datos de video, basandose en los valores de parametros usados para codificar los datos de video. El codificador de video 20 puede luego codificar uno o mas mensajes de SEI para hacer que el descodificador de video 30 active conjuntos de parametros, o para indicar al descodificador de video 30 que conjuntos de parametros estan activos.
FIG. 3 es un diagrama de bloques que ilustra un ejemplo de un descodificador de video 30 que puede implementar tecnicas para la activacion de conjuntos de parametros y la indicacion de que conjuntos de parametros estan activos para la codificacion de video, de acuerdo con esta divulgacion. En el ejemplo de la FIG. 3, el descodificador de video 30 incluye una unidad de descodificacion por entropia 80, una unidad de procesamiento de prediccion 81, una unidad de cuantificacion inversa 86, una unidad de procesamiento de transformacion inversa 88, un sumador 90 y una memoria de imagenes de referencia 92. La unidad de procesamiento de prediccion 81 incluye la unidad de compensacion de movimiento 82 y la unidad de procesamiento de intra-prediccion 84. En algunos ejemplos, el descodificador de video 30 puede realizar una pasada de descodificacion en general reciproca a la pasada de codificacion descrita con respecto al codificador de video 20 de la FIG. 2.
Durante el proceso de descodificacion, el descodificador de video 30 recibe un flujo de bits de video codificado que representa bloques de video de un fragmento de video codificado e informacion sintactica asociada, por ejemplo, elementos sintacticos, desde el codificador de video 20. La unidad de descodificacion por entropia 80 del descodificador de video 30 descodifica por entropia el flujo de bits para generar coeficientes cuantificados, vectores de movimiento, otra informacion de movimiento y otra informacion sintactica. La unidad de descodificacion por entropia 80 remite la informacion de movimiento y otros elementos sintacticos a la unidad de procesamiento de prediccion 81. El descodificador de video 30 puede recibir la informacion sintactica al nivel de fragmento de video y/o al nivel de bloque de video, como ejemplos.
Cuando el fragmento de video se codifica como un fragmento intra-codificado (I), la unidad de procesamiento de intra-prediccion 84 de la unidad de procesamiento de prediccion 81 puede generar datos de prediccion para un bloque de video del fragmento de video actual, basandose en un modo de intra-prediccion senalizada, y datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de video es codificada como un fragmento inter-codificado (es decir, B, P o GPB), la unidad de compensacion de movimiento 82 de la unidad de procesamiento de prediccion 81 genera bloques predictivos para un bloque de video del fragmento de video actual, basandose en los vectores de movimiento y otros elementos sintacticos recibidos desde la unidad de descodificacion por entropia 80. Los bloques predictivos pueden ser generados a partir de una de las imagenes de referencia dentro de una de las listas de imagenes de referencia. El descodificador de video 30 puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando tecnicas de construccion por omision, basandose en las imagenes de referencia almacenadas en la memoria de imagenes de referencia 92.
La unidad de compensacion de movimiento 82 determina la informacion de prediccion para un bloque de video del fragmento de video actual, analizando sintacticamente los vectores de movimiento y otra informacion sintactica, y usa la informacion de prediccion para generar los bloques predictivos para el bloque de video actual que esta siendo descodificado. Por ejemplo, la unidad de compensacion de movimiento 82 usa algo de la informacion sintactica recibida para determinar una modalidad de prediccion (por ejemplo, intra-prediccion o inter-prediccion), usada para codificar los bloques de video del fragmento de video, un tipo de fragmento de inter-prediccion (por ejemplo, fragmento B, fragmento P o fragmento GPB), informacion de construccion para una o mas de las listas de imagenes de referencia para el fragmento, vectores de movimiento para cada bloque de video inter-codificado del fragmento, el estado de inter-prediccion para cada bloque de video inter-codificado del fragmento y otra informacion, para descodificar los bloques de video en el fragmento de video actual.
La unidad de compensacion de movimiento 82 tambien puede realizar la interpolacion basandose en filtros de
5
10
15
20
25
30
35
40
45
50
55
60
65
interpolacion. La unidad de compensacion de movimiento 82 puede usar filtros de interpolacion como los usados por el codificador de vfdeo 20 durante la codificacion de los bloques de vfdeo, para calcular valores interpolados para fracciones de pfxeles de bloques de referencia. En este caso, la unidad de compensacion de movimiento 82 puede determinar los filtros de interpolacion usados por el codificador de vfdeo 20 a partir de los elementos sintacticos recibidos y usar los filtros de interpolacion para generar bloques predictivos.
La unidad de cuantificacion inversa 86 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformacion cuantificados, proporcionados en el flujo de bits y descodificados por la unidad de descodificacion por entropfa 80. El proceso de cuantificacion inversa puede incluir el uso de un parametro de cuantificacion calculado por el codificador de vfdeo 20 para cada bloque de vfdeo en el segmento de vfdeo, para determinar un grado de cuantificacion y, asimismo, un grado de cuantificacion inversa que deberfa aplicarse. La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo una DCT inversa, una transformada inversa entera 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.
Despues de que la unidad de compensacion de movimiento 82 genera el bloque predictivo para el bloque de vfdeo actual, basandose en los vectores de movimiento y otros elementos sintacticos, el descodificador de vfdeo 30 forma un bloque de vfdeo descodificado sumando los bloques residuales procedentes de la unidad de procesamiento de transformacion inversa 88 a los correspondientes bloques predictivos generados por la unidad de compensacion de movimiento 82. El sumador 90 representa el componente o los componentes que llevan a cabo esta operacion de suma. Si se desea, tambien puede aplicarse un filtro de desbloqueo para filtrar los bloques descodificados con el fin de eliminar distorsiones de efecto pixelado. Tambien pueden utilizarse otros filtros de bucle (ya sea en el bucle de codificacion o despues del bucle de codificacion) para suavizar las transiciones de pfxeles, o mejorar de otro modo la calidad del vfdeo. Los bloques de vfdeo descodificados de una trama o imagen dada son a continuacion almacenados en la memoria de imagenes de referencia 92, que almacena imagenes de referencia usadas para la posterior compensacion de movimiento. La memoria de imagenes de referencia 92 almacena tambien vfdeo descodificado para su presentacion posterior en un dispositivo de visualizacion, tal como el dispositivo de visualizacion 32 de la FIG. 1.
De acuerdo con las tecnicas de esta divulgacion, la unidad de descodificacion por entropfa 80 puede descodificar, por ejemplo, descodificar por entropfa, un flujo de bits codificado que incluye datos de vfdeo e informacion sintactica. La informacion sintactica puede incluir uno o mas mensajes de SEI, tales como mensajes de SEI de conjuntos de parametros activos y de periodo de almacenamiento temporal, como se analiza en el presente documento. La unidad de procesamiento de prediccion 81, por ejemplo, la unidad de compensacion de movimiento 82 y/o la unidad de intra-prediccion 84, pueden activar uno o mas conjuntos de parametros, por ejemplo, un VPS y uno o mas SPS, basandose en su mencion en al menos uno de los mensajes de SEI. En otros ejemplos, el mensaje de SEI puede indicar que conjuntos de parametros, por ejemplo, que VPS y cuales de los uno o mas SPS estan activos, para la unidad de procesamiento de prediccion 81, por ejemplo, la unidad de compensacion de movimiento 82 y/o la unidad de intra-prediccion 84. En cualquier caso, la unidad de procesamiento de prediccion 81, por ejemplo, la unidad de compensacion de movimiento 82 y/o la unidad de intra-prediccion 84, pueden usar los conjuntos de parametros activos para descodificar los datos de vfdeo dentro del flujo de bits codificado.
De esta manera, el descodificador de vfdeo 30 de la FIG. 3 representa un ejemplo de un descodificador de vfdeo configurado para descodificar un flujo de bits que incluye datos de vfdeo e informacion sintactica para descodificar los datos de vfdeo, en el que la informacion sintactica comprende un mensaje de SEI de una unidad de acceso, en el que el mensaje de SEI indica una pluralidad de SPS y un VPS para descodificar los datos de vfdeo de la unidad de acceso, y para descodificar los datos de vfdeo de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicados en el mensaje de SEI.
El descodificador de vfdeo 30 tambien representa un ejemplo de un descodificador de vfdeo configurado para descodificar un flujo de bits que incluye datos de vfdeo e informacion sintactica para descodificar los datos de vfdeo, en el que la informacion sintactica comprende un mensaje de SEI, y en el que el mensaje de SEI indica uno o mas SPS y un VPS, activar los uno o mas SPS y el VPS para descodificar los datos de vfdeo basandose en la indicacion de los uno o mas SPS y el VPS en el mensaje de SEI, y descodificar los datos de vfdeo basandose en los uno o mas SPS activados y al VPS activado.
FIG. 4 es un diagrama de bloques que ilustra un conjunto a modo de ejemplo de dispositivos que forman parte de la red 100. En este ejemplo, la red 10 incluye los dispositivos de encaminamiento 104A, 104B (dispositivos de encaminamiento 104) y el dispositivo de transcodificacion 106. Los dispositivos de encaminamiento 104 y el dispositivo de transcodificacion 106 estan concebidos para representar un pequeno numero de dispositivos que pueden formar parte de la red 100. Otros dispositivos de red, tales como conmutadores, concentradores, pasarelas, cortafuegos, puentes y otros dispositivos de ese tipo tambien pueden estar incluidos dentro de la red 100. En algunos ejemplos, los dispositivos de red que tienen conciencia de los medios, es decir, los denominados elementos de red conscientes de los medios (MANE), pueden implementar o usar una o mas de las tecnicas de senalizacion de conjuntos de parametros descritas en el presente documento. Ademas, pueden proporcionarse dispositivos de red adicionales a lo largo de un trayecto de red entre el dispositivo servidor 102 y el dispositivo cliente 108. El dispositivo
5
10
15
20
25
30
35
40
45
50
55
60
65
servidor 102 puede corresponder al dispositivo de origen 12 (FIG. 1), mientras que el dispositivo cliente 108 puede corresponder al dispositivo de destino 14 (FIG. 1), en algunos ejemplos.
En general, los dispositivos de encaminamiento 104 implementan uno o mas protocolos de encaminamiento para intercambiar datos de red a traves de la red 100. En algunos ejemplos, los dispositivos de encaminamiento 104 pueden estar configurados para realizar operaciones de proxy o de memoria cache. Por lo tanto, en algunos ejemplos, los dispositivos de encaminamiento 104 pueden denominarse dispositivos proxy. En general, los dispositivos de encaminamiento 104 ejecutan protocolos de encaminamiento para descubrir rutas a traves de la red 100. Al ejecutar tales protocolos de encaminamiento, el dispositivo de encaminamiento 104B puede descubrir una ruta de red desde si mismo hasta el dispositivo servidor 102, mediante el dispositivo de encaminamiento 104A.
Las tecnicas de esta divulgacion pueden ser implementadas por dispositivos de red tales como los dispositivos de encaminamiento 104 y el dispositivo de transcodificacion 106, pero tambien pueden ser implementadas por el dispositivo cliente 108. De esta manera, los dispositivos de encaminamiento 104, el dispositivo de transcodificacion 106 y el dispositivo cliente 108 representan ejemplos de dispositivos configurados para realizar las tecnicas de esta divulgacion, incluyendo la codificacion de un flujo de bits que incluye datos de video e informacion sintactica para la codificacion de los datos de video, en los que la informacion sintactica comprende un mensaje de SEI para una unidad de acceso de los datos de video, en los que el mensaje de SEI indica una pluralidad de SPS y un VPS, la activacion de los uno o mas SPS y el VPS para codificar los datos de video de la unidad de acceso basandose en la indicacion de los uno o mas SPS y el VPS en el mensaje de SEI, y/o la codificacion de los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicados en el mensaje de SEI. Ademas, el dispositivo de origen 12 y el dispositivo de destino 14 de la FIG. 1, el codificador de video 20 mostrado en la FIG. 2 y el descodificador de video 30 mostrado en la FIG. 3 son tambien dispositivos a modo de ejemplo que pueden estar configurados para realizar las tecnicas de esta divulgacion, incluyendo la codificacion de un flujo de bits que incluye datos de video e informacion sintactica para la codificacion de los datos de video, en los que la informacion sintactica comprende un mensaje de SEI para una unidad de acceso de los datos de video, en los que el mensaje de SEI indica una pluralidad de SPS y un VPS, la activacion de los uno o mas SPS y el VPS para la codificacion de los datos de video de la unidad de acceso basandose en la indicacion de los uno o mas SPS y el VPS en el mensaje de SEI, y/o la codificacion de los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicados en el mensaje de SEI. Otros elementos de red, tal como un MANE, tambien pueden usar tecnicas de esta divulgacion para mejorar la comunicacion o el suministro de datos de video a otros dispositivos.
FIG. 5 es un diagrama de flujo que ilustra un procedimiento a modo de ejemplo para codificar un flujo de bits, para incluir un mensaje de informacion complementaria de mejora (SEI) que indica a un descodificador de video un conjunto de parametros de video activos (VPS) y una pluralidad de conjuntos de parametros secuenciales activos (SPS) para descodificar datos de video codificados en el flujo de bits. De acuerdo con el ejemplo de la FIG. 5, un codificador de video, por ejemplo, el codificador de video 20 de la FIG. 2, codifica datos de video, por ejemplo, de una unidad de acceso, basandose en un VPS y a una pluralidad de SPS (120). Los datos de video pueden comprender una pluralidad de capas, por ejemplo, para la codificacion de video ajustable a escala. Los datos de video pueden comprender, adicionalmente o de forma alternativa, una pluralidad de vistas, por ejemplo, para la codificacion de video de multiples vistas o tridimensional. Cada uno entre la pluralidad de SPS puede ser asociado a, por ejemplo, usado para codificar, los datos de video de una o mas capas y/o vistas respectivas entre la pluralidad de capas y/o vistas.
El codificador de video puede mantener los VPS, los SPS y otros conjuntos de parametros en estructuras de datos, y activar los conjuntos de parametros para codificar datos de video, de manera similar a la descrita en el presente documento con respecto a un descodificador de video, por ejemplo, el descodificador de video 30, y para descodificar datos de video. En otros ejemplos, el codificador de video no necesariamente mantiene y activa un conjunto de parametros de manera similar al descodificador de video. En algunos ejemplos, el codificador de video codifica los datos de video de acuerdo con valores de parametros o configuraciones que corresponden a los conjuntos de parametros, por ejemplo, el VPS y los SPS, mantenidos por el descodificador de video y, de esta manera, el codificador de video codifica los datos de video de acuerdo con los conjuntos de parametros.
De acuerdo con el ejemplo de la FIG. 5, el codificador de video puede ademas, por ejemplo, despues de codificar los datos de video, codificar un mensaje de SEI con un ID de VPs y una pluralidad de ID de SPS, para indicar, por ejemplo, al descodificador de video, el VPS y los SPS activos para descodificar datos de video de la unidad de acceso (122). En algunos ejemplos, el mensaje de SEI es un mensaje de SEI de conjuntos de parametros activos. En otros ejemplos, el mensaje de SEI es otro mensaje de SEI, tal como un mensaje de SEI de periodo de almacenamiento temporal. El codificador de video incluye el mensaje de SEI codificado y los datos de video codificados en un flujo de bits codificado, por ejemplo, a proporcionar al descodificador de video 30 (124). En algunos ejemplos, el codificador de video puede incluir los datos de video codificados en unidades de NAL de VCL de una unidad de acceso, e incluir el mensaje de SEI en unidades de NAL de SEI de la unidad de acceso.
FIG. 6 es un diagrama de flujo que ilustra un procedimiento a modo de ejemplo para descodificar un flujo de bits que incluye un mensaje de SEI que indica un VPS activo y una pluralidad de SPS activos para descodificar datos de video del flujo de bits. De acuerdo con el procedimiento a modo de ejemplo de la FIG. 6, un descodificador de video,
5
10
15
20
25
30
35
40
45
50
55
60
65
por ejemplo, el descodificador de video 30 de la FIG. 3, recibe un flujo de bits codificado que incluye datos de video codificado y un mensaje de SEI (130). El flujo de bits codificado puede comprender una pluralidad de unidades de acceso, cada una de las cuales puede incluir datos de video, por ejemplo, en una o mas unidades de NAL de VCL, y uno o mas mensajes de SEI, por ejemplo, en una o mas unidades de NAL de SEI.
Los datos de video pueden comprender una pluralidad de capas, por ejemplo, para la codificacion de video ajustable a escala. Los datos de video pueden comprender, adicionalmente o de forma alternativa, una pluralidad de vistas, por ejemplo, para la codificacion de video de multiples vistas o tridimensional. El mensaje de SEI puede ser un mensaje de SEI de conjuntos de parametros activos, u otro mensaje de SEI, tal como un mensaje de SEI de periodo de almacenamiento temporal.
De acuerdo con el procedimiento a modo de ejemplo de la FIG. 6, el descodificador de video descodifica los datos de video de una unidad de acceso basandose en un VPS activo y a una pluralidad de SPS activos para la unidad de acceso (132). Cada uno entre la pluralidad de SPS puede ser asociado a, por ejemplo, usado para descodificar, los datos de video de una o mas capas y/o vistas respectivas entre la pluralidad de capas y/o vistas. El descodificador de video tambien descodifica el mensaje de SEI (134). El mensaje de SEI puede incluir un ID de VPS que indica el VPS activo para la descodificacion de datos de video de la unidad de acceso. El mensaje de SEI tambien puede incluir una pluralidad de los ID de SPS que indican esos SPS activos para la descodificacion de la pluralidad de capas y/o vista de la unidad de acceso. El descodificador de video puede usar las indicaciones del VPs y los SPS en el mensaje de SEI, por ejemplo, para confirmar que los VPS y SPS adecuados han sido, o estan siendo, usados para descodificar los datos de video de la unidad de acceso.
FIG. 7 es un diagrama de flujo que ilustra un procedimiento a modo de ejemplo para codificar un flujo de bits, para incluir un mensaje de SEI que indica a un descodificador de video un VPS y uno o mas SPS, a activar por parte del descodificador de video para la descodificacion de datos de video del flujo de bits. De acuerdo con el procedimiento a modo de ejemplo de la FIG. 7, un codificador de video, por ejemplo, el codificador de video 20 de la FIG. 3, codifica datos de video, por ejemplo, de una unidad de acceso, basandose en un VPS y a uno o mas SPS (140). Los datos de video pueden comprender una pluralidad de capas, por ejemplo, para la codificacion de video ajustable a escala. Los datos de video pueden comprender, adicionalmente o de forma alternativa, una pluralidad de vistas, por ejemplo, para la codificacion de video de multiples vistas o tridimensional. Cada uno entre una pluralidad de SPS puede ser asociado a, por ejemplo, usado para codificar, los datos de video de una o mas de las capas y/o vistas respectivas entre la pluralidad de capas y/o vistas.
De acuerdo con el ejemplo de la FIG. 7, el codificador de video puede ademas, por ejemplo, despues de codificar los datos de video, codificar un mensaje de SEI con un ID de VPS y uno o mas ID de SPS, para hacer que un descodificador de video active el VPS y los uno o mas SPS, para descodificar los datos de video de la unidad de acceso (142). En algunos ejemplos, el mensaje de SEI es un mensaje de SEI de conjuntos de parametros activos. En otros ejemplos, el mensaje de SEI es otro mensaje de SEI, tal como un mensaje de SEI de periodo de almacenamiento temporal.
El codificador de video incluye el mensaje de SEI codificado y los datos de video codificados en un flujo de bits codificado, por ejemplo, a proporcionar al descodificador de video 30 (144). En algunos ejemplos, el codificador de video puede incluir los datos de video codificados en unidades de NAL de VCL de una unidad de acceso, e incluir el mensaje de SEI en unidades de NAL de SEI de la unidad de acceso. En ejemplos en los que el mensaje de SEI, basandose en el cual un descodificador de video activa conjuntos de parametros para descodificar datos de video de una unidad de acceso, es un mensaje de SEI de conjuntos de parametros activos, el codificador de video puede codificar un mensaje de SEI de periodo de almacenamiento temporal para la unidad de acceso, de modo que excluya cualquier ID de SPS. Adicionalmente, en ejemplos en los que el mensaje de SEI es un mensaje de SEI de conjuntos de parametros activos, el codificador de video puede codificar el flujo de bits de modo que cada unidad de acceso que incluya un mensaje de SEI de periodo de almacenamiento temporal tambien incluya un mensaje de SEI de conjuntos de parametros activos, que es el primer mensaje de SEI en la primera unidad de NAL de SEI de la unidad de acceso. En los ejemplos en los que el mensaje de SEI, basandose en el cual un descodificador de video activa conjuntos de parametros activos para descodificar datos de video de una unidad de acceso, es un mensaje de SEI de periodo de almacenamiento temporal, el codificador de video puede generar el flujo de bits codificado, por ejemplo, la unidad de acceso dentro del flujo de bits, para excluir todo mensaje de SEI de conjuntos de parametros activos.
FIG. 8 es un diagrama de flujo que ilustra un procedimiento a modo de ejemplo para descodificar un flujo de bits que incluye un mensaje de SEI, y activar un VPS y uno o mas SPS para descodificar datos de video del flujo de bits, basandose en referencias al VPS y a uno o mas SPS en el mensaje de SEI. De acuerdo con el procedimiento a modo de ejemplo de la FIG. 8, un descodificador de video, por ejemplo, el descodificador de video 30 de la FIG. 3, recibe un flujo de bits codificado que incluye datos de video codificado y un mensaje de SEI (150). El flujo de bits codificado puede comprender una pluralidad de unidades de acceso, cada una de las cuales puede incluir datos de video, por ejemplo, en una o mas unidades de NAL de VCL, y uno o mas mensajes de SEI, por ejemplo, en una o mas unidades de NAL de SEI.
5
10
15
20
25
30
35
40
45
50
55
60
65
Los datos de video pueden comprender una pluralidad de capas, por ejemplo, para la codificacion de video ajustable a escala. Los datos de video pueden comprender, adicionalmente o de forma alternativa, una pluralidad de vistas, por ejemplo, para la codificacion de video de multiples vistas o tridimensional. El mensaje de SEI puede ser un mensaje de SEI de conjuntos de parametros activos, u otro mensaje de SEI, tal como un mensaje de SEI de periodo de almacenamiento temporal.
De acuerdo con el procedimiento a modo de ejemplo de la FIG. 8, el descodificador de video descodifica el mensaje de SEI (152). El mensaje de SEI puede estar incluido dentro de una de las unidades de acceso, y por ello se asocia a esa unidad de acceso. El descodificador de video activa entones el VPS y los uno o mas SPS basandose en el VPS y a uno o mas SPS mencionados en el mensaje de SEI, por ejemplo, basandose en la inclusion de los ID de VPS y de SPS, del VPS y de los SPS en el mensaje de SEI (154). El descodificador de video descodifica entonces los datos de video de la unidad de acceso basandose en un VPS activo y a los uno o mas SPS activos para la unidad de acceso (156). En los ejemplos en los que el mensaje de SEI incluye una pluralidad de los ID de SPS, cada uno entre la pluralidad de SPS mencionados puede estar asociado a, por ejemplo, usado para descodificar, los datos de video de una o mas capas y/o vistas respectivas entre la pluralidad de capas y/o vistas.
Debe reconocerse que, dependiendo del ejemplo, ciertos actos o sucesos de cualquiera de las tecnicas descritas en el presente documento pueden realizarse en una secuencia distinta, pueden anadirse, fundirse u omitirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en practica de las tecnicas). Ademas, en ciertos ejemplos, los actos o sucesos pueden realizarse simultaneamente, por ejemplo, mediante el procesamiento de multiples hebras, el procesamiento de interrupciones o multiples procesadores, en lugar de secuencialmente.
En uno o mas ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinacion de estos. Si se implementan en software, las funciones pueden almacenarse en un medio legible por ordenador, o transmitirse a este, como una o mas instrucciones o codigo, 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 unos medios de almacenamiento de datos, o medios de comunicacion que incluyen cualquier medio que facilite la transferencia de un programa informatico de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicacion. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) unos medios de almacenamiento tangibles y legibles por ordenador que sean no transitorios o (2) un medio de comunicacion tal como una senal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se puede acceder desde uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para implementar las tecnicas descritas en la presente divulgacion. Un producto de programa informatico puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de manera limitativa, dichos 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 utilizarse 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 de forma correcta con el termino medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota mediante un cable coaxial, un cable de fibra optica, un par trenzado, una linea de abonado digital (DSL) o tecnologias inalambricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologias inalambricas tales como infrarrojos, radio y microondas se incluyen en la definicion de medio. Sin embargo, deberia 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 dirigen 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 anterior tambien deberian 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 especificos de la aplicacion (ASIC), matrices logicas programables in situ (FPGA) u otros circuitos logicos integrados o discretos equivalentes. Por consiguiente, el termino «procesador», como se utiliza 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 dentro de modulos de hardware y/o software especificos configurados para la codificacion y la descodificacion, o incorporarse en un codec combinado. Ademas, las tecnicas podrian implementarse completamente en uno o mas circuitos o elementos logicos.
Las tecnicas de la presente divulgacion se pueden implementar en una amplia variedad de dispositivos o aparatos,
que incluyen un telefono inalambrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En la presente divulgacion se describen varios componentes, modulos o unidades para enfatizar aspectos funcionales de dispositivos configurados para realizar las tecnicas divulgadas, pero no requieren necesariamente su realizacion mediante diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas 5 unidades pueden combinarse en una unidad de hardware de codec o proporcionarse por medio de un grupo de unidades de hardware interoperativas, que incluyen uno o mas procesadores como los descritos anteriormente, conjuntamente con software y/o firmware adecuado.
Se han descrito diversos ejemplos. Estos y otros ejemplos estan dentro del alcance de las siguientes 10 reivindicaciones.

Claims (12)

  1. REIVINDICACIONES
    1. Un procedimiento de descodificacion de datos de video, procedimiento que comprende:
    5 descodificar un flujo de bits que incluye datos de video e informacion sintactica para descodificar los datos
    de video, en el que la informacion sintactica comprende un mensaje de informacion de mejora complementaria (SEI) de conjuntos de parametros activos de una unidad de acceso, en el que el mensaje de SEI de conjuntos de parametros activos indica una pluralidad de conjuntos de parametros de secuencia (SPS) y un conjunto de parametros de video (VPS) para descodificar datos de video de la 10 unidad de acceso, y en el que el mensaje de SEI de conjuntos de parametros activos incluye un primer
    elemento sintactico que especifica el numero de la pluralidad de SPS y uno o mas elementos sintacticos adicionales que comprenden los identificadores respectivos para cada uno de la pluralidad de SPS; activar (154) la pluralidad de SPS y el VPS basandose en la indicacion de la pluralidad de SPS y del VPS en el mensaje de SEI de conjuntos de parametros activos; y
    15 descodificar (156) los datos de video de la unidad de acceso basandose en la pluralidad de SPS
    activados y el VPS activado indicados en el mensaje de SEI de conjuntos de parametros activos.
  2. 2. El procedimiento, de acuerdo con la reivindicacion 1,
    en el que los datos de video comprenden al menos una entre una pluralidad de capas o una pluralidad de 20 vistas,
    en el que cada uno entre la pluralidad de SPS esta asociado a una o mas de las capas o vistas entre la pluralidad de capas o la pluralidad de vistas,
    en el que la descodificacion de los datos de video de la unidad de acceso basada en la pluralidad de SPS y el VPS comprende, para cada una de las capas o vistas, descodificar los datos de video de la capa o vista 25 basandose en el SPS asociado con la capa o vista, determinando identificadores que estan respectivamente
    asociados con la pluralidad de capas o vistas, en el que la determinacion de los identificadores comprende al menos uno de entre:
    descodificar al menos uno de los identificadores, o
    30 obtener al menos uno de los identificadores basandose en una posicion jerarquica de la respectiva capa o
    vista; y
    determinar la pluralidad de SPS para descodificar respectivamente los datos de video de la pluralidad de capas o vistas basadas en la indicacion en el mensaje de SEI y los identificadores determinados.
    35
  3. 3. Un procedimiento de codificacion y descodificacion de datos de video, en el que el procedimiento comprende:
    codificar (142, 144) un flujo de bits que incluye datos de video e informacion sintactica para codificar los datos de video, en el que la informacion sintactica comprende un mensaje (de SEI) de informacion de 40 mejora complementaria de conjuntos de parametros activos de una unidad de acceso, en el que el
    mensaje de SEI de los conjuntos de parametros activos indica una pluralidad de conjuntos de parametros de secuencia (SPS) y un conjunto de parametros de video (VPS) para descodificar datos de video de la unidad de acceso, y en el que el mensaje de SEI de conjuntos de parametros activos incluye un primer elemento sintactico que especifica el numero de la pluralidad de SPS y uno o mas elementos sintacticos 45 adicionales que comprenden los identificadores respectivos para cada uno de la pluralidad de SPS;
    codificar (140) los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicados en el mensaje de SEI de conjuntos de parametros activos, descodificar el flujo de bits;
    activar la pluralidad de SPS y el VPS basandose en la indicacion de la pluralidad de SPS y el VPS en el 50 mensaje de SEI de conjuntos de parametros activos; y
    descodificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS activados y el VPS activado indicados en el mensaje de SEI de conjuntos de parametros activos.
  4. 4. El procedimiento segun la reivindicacion 1 o la reivindicacion 3, en el que el mensaje de SEI de conjuntos de
    55 parametros activos precede, en orden de codificacion, a una primera parte de los datos de video de la unidad
    de acceso.
  5. 5. El procedimiento segun la reivindicacion 1 o la reivindicacion 3, en el que el primer elemento sintactico comprende un elemento sintactico num_sps_ids_minus1, y los uno o mas elementos sintacticos adicionales
    60 comprenden los elementos sintacticos active_sps_id[i] para i = 0; i < num_additional_sps_ids_minus1; i++.
  6. 6. El procedimiento segun la reivindicacion 1 o la reivindicacion 3,
    en el que los datos de video comprenden al menos una entre una pluralidad de capas o una pluralidad de vistas,
    65 en el que cada uno entre la pluralidad de SPS esta asociado a una o mas de las capas o vistas entre la
    pluralidad de capas o la pluralidad de vistas, y
    5 7.
  7. 8.
    10
  8. 9.
    15
    20
    25
  9. 10.
    30
    35
  10. 11.
    40 12.
    45
  11. 13.
    50
    55
  12. 14.
    60
    en el que la codificacion de los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS comprende, para cada una de las capas o vistas, la codificacion de los datos de video de la capa o vista, basandose en el SPS asociado a la capa o vista.
    El procedimiento segun la reivindicacion 6, en el que cada uno de la pluralidad de SPS esta asociado con una respectiva o mas de la pluralidad de capas, y al menos uno de la pluralidad de SPS comprende una capa activa SPS.
    El procedimiento segun la reivindicacion 6, en el que los datos de video comprenden al menos uno de los datos de video multivista, datos de video tridimensionales o datos de video de codificacion de video escalable.
    Un dispositivo que comprende:
    medios para descodificar un flujo de bits que incluye datos de video e informacion sintactica para codificar los datos de video, en el que la informacion sintactica comprende un mensaje de informacion de mejora complementaria (SEI) de conjuntos de parametros activos de una unidad de acceso, en el que el mensaje de SEI de conjuntos de parametros activos indica una pluralidad de conjuntos de parametros de secuencia (SPS) y un conjunto de parametros de video (VPS) para codificar datos de video de la unidad de acceso, y en el que el mensaje de SEI de conjuntos de parametros activos incluye un primer elemento sintactico que especifica el numero de la pluralidad de SPS y uno o mas elementos sintacticos adicionales que comprenden los identificadores respectivos para cada uno de la pluralidad de SPS; medios para activar la pluralidad de SPS y el VPS basandose en la indicacion de la pluralidad de SPS y el VPS en el mensaje de SEI de conjuntos de parametros activos; y
    medios para descodificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS activados y el VPS activado indicados en el mensaje de SEI de conjuntos de parametros activos,
    El dispositivo de la reivindicacion 9,
    en el que los datos de video comprenden al menos una entre una pluralidad de capas o una pluralidad de vistas,
    en el que cada uno entre la pluralidad de SPS esta asociado a una o mas de las capas o vistas entre la pluralidad de capas o la pluralidad de vistas, y
    en el que los medios para la descodificacion de los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS comprenden medios para, para cada una de las capas o vistas, la descodificacion de los datos de video de la capa o vista, basandose en el SPS asociado a la capa o vista.
    El dispositivo de la reivindicacion 9, en el que los datos de video comprenden al menos uno de los datos de video multivista, datos de video tridimensionales o datos de video de codificacion de video escalable.
    Un dispositivo de acuerdo con una cualquiera de las reivindicaciones 9 a 11, que comprende un descodificador de video configurado para:
    descodificar el flujo de bits;
    activar la pluralidad de SPS y el VPS basandose en la indicacion de la pluralidad de SPS y el VPS en el mensaje de SEI de conjuntos de parametros activos; y
    descodificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS activados y el VPS activado indicados en el mensaje de SEI de conjuntos de parametros activos.
    Un sistema de codificacion y descodificacion de video que comprende un dispositivo de acuerdo con una cualquiera de las reivindicaciones 9 a 11, y que comprende ademas un codificador de video configurado para:
    codificar el flujo de bits; y
    codificar los datos de video de la unidad de acceso basandose en la pluralidad de SPS y el VPS indicados en el mensaje de SEI de conjuntos de parametros activos,
    El dispositivo de la reivindicacion 12 o el sistema de la reivindicacion 13, en el que el dispositivo comprende al menos uno de:
    un circuito integrado que implementa el descodificador de video y/o el codificador de video; un microprocesador que implementa el descodificador de video y/o el codificador de video; y un dispositivo de comunicacion inalambrica que incluye el descodificador de video y/o el codificador de video.
    Un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando son ejecutadas por uno o mas procesadores de un codificador de video, hacen que el codificador de video realice el procedimiento de acuerdo con una cualquiera de las reivindicaciones 1 a 8.
ES13753381.6T 2012-09-21 2013-08-14 Indicación y activación de conjuntos de parámetros para codificación de vídeo Active ES2637515T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261704214P 2012-09-21 2012-09-21
US201261704214P 2012-09-21
US201313964599 2013-08-12
US13/964,599 US9426462B2 (en) 2012-09-21 2013-08-12 Indication and activation of parameter sets for video coding
PCT/US2013/054980 WO2014046812A2 (en) 2012-09-21 2013-08-14 Indication and activation of parameter sets for video coding

Publications (1)

Publication Number Publication Date
ES2637515T3 true ES2637515T3 (es) 2017-10-13

Family

ID=50338843

Family Applications (2)

Application Number Title Priority Date Filing Date
ES13753381.6T Active ES2637515T3 (es) 2012-09-21 2013-08-14 Indicación y activación de conjuntos de parámetros para codificación de vídeo
ES13753382.4T Active ES2596266T3 (es) 2012-09-21 2013-08-14 Indicación y activación de conjuntos de parámetros para codificación de vídeo

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES13753382.4T Active ES2596266T3 (es) 2012-09-21 2013-08-14 Indicación y activación de conjuntos de parámetros para codificación de vídeo

Country Status (24)

Country Link
US (2) US9426462B2 (es)
EP (2) EP2898690B1 (es)
JP (2) JP6092396B2 (es)
KR (2) KR102148546B1 (es)
CN (2) CN104641639B (es)
AR (2) AR097127A1 (es)
AU (2) AU2013318522B2 (es)
BR (2) BR112015006441B1 (es)
CA (2) CA2884288C (es)
DK (2) DK2898690T3 (es)
ES (2) ES2637515T3 (es)
HU (2) HUE032801T2 (es)
IL (2) IL237363A (es)
MY (2) MY170706A (es)
PH (2) PH12015500421B1 (es)
PL (1) PL2898691T3 (es)
PT (2) PT2898691T (es)
RU (2) RU2646382C2 (es)
SG (2) SG11201501412VA (es)
SI (2) SI2898690T1 (es)
TW (2) TWI507018B (es)
UA (2) UA114929C2 (es)
WO (2) WO2014046812A2 (es)
ZA (1) ZA201502301B (es)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013119325A1 (en) * 2012-02-08 2013-08-15 Thomson Licensing Method and apparatus for using an ultra-low delay mode of a hypothetical reference decoder
KR20130116782A (ko) 2012-04-16 2013-10-24 한국전자통신연구원 계층적 비디오 부호화에서의 계층정보 표현방식
US9426462B2 (en) 2012-09-21 2016-08-23 Qualcomm Incorporated Indication and activation of parameter sets for video coding
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
US20160156915A1 (en) * 2013-07-18 2016-06-02 Samsung Electronics Co., Ltd. Video encoding method and apparatus and video decoding method and apparatus using video format parameter delivery
JP6300114B2 (ja) * 2014-08-06 2018-03-28 パナソニックIpマネジメント株式会社 送信方法、受信方法、送信装置及び受信装置
US10129558B2 (en) * 2015-09-21 2018-11-13 Qualcomm Incorporated Supplement enhancement information (SEI) messages for high dynamic range and wide color gamut video coding
US10244249B2 (en) 2015-09-21 2019-03-26 Qualcomm Incorporated Fixed point implementation of range adjustment of components in video coding
US10200690B2 (en) * 2015-09-22 2019-02-05 Qualcomm Incorporated Video decoder conformance for high dynamic range (HDR) video coding using a core video standard
FR3047094B1 (fr) * 2016-01-26 2019-11-22 Raoul Parienti Assistant numerique personnel emboitant un ordiphone, clavier et tablette capable de prendre des prises de vues 3d
US10397443B2 (en) * 2016-03-01 2019-08-27 Qualcomm Incorporated Methods and systems for generating color remapping information supplemental enhancement information messages for video
US10249019B2 (en) 2016-05-06 2019-04-02 Mediatek Inc. Method and apparatus for mapping omnidirectional image to a layout output format
TWI637356B (zh) * 2016-06-30 2018-10-01 聯發科技股份有限公司 將全向圖像映射到佈局輸出格式的方法和裝置
WO2019199092A1 (ko) * 2018-04-11 2019-10-17 삼성전자 주식회사 멀티미디어 시스템에서의 데이터 처리 장치 및 방법
CN109151505B (zh) * 2018-11-07 2021-02-26 深圳市网心科技有限公司 一种视频转码方法、系统、装置及计算机可读存储介质
KR102704997B1 (ko) * 2018-11-13 2024-09-09 삼성전자주식회사 차량에 탑재되는 단말 장치가 영상을 전송하는 방법 및 차량의 주행을 제어하는 원격 제어 장치가 영상을 수신하는 방법
EP3891994A1 (en) 2018-12-07 2021-10-13 InterDigital VC Holdings, Inc. Managing coding tools combinations and restrictions
KR102776040B1 (ko) * 2019-03-11 2025-03-07 후아웨이 테크놀러지 컴퍼니 리미티드 인코더, 디코더, 및 대응하는 방법들
CN118317100A (zh) * 2019-06-18 2024-07-09 松下电器(美国)知识产权公司 编码装置、编码方法、解码装置和解码方法
US11917177B2 (en) * 2019-07-02 2024-02-27 Vid Scale, Inc. Dynamic adaptation of volumetric content component sub-bitstreams in streaming services
EP4000269A4 (en) 2019-08-15 2022-09-07 ByteDance Inc. PALLET MODE WITH DIFFERENT DIVISION STRUCTURES
WO2021030788A1 (en) 2019-08-15 2021-02-18 Bytedance Inc. Entropy coding for palette escape symbol
JP7832105B2 (ja) * 2019-09-19 2026-03-17 バイトダンス インコーポレイテッド パレット・モードのための量子化パラメータ導出
EP4026337B1 (en) 2019-09-24 2025-07-02 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods
IL291689B2 (en) 2019-09-24 2025-07-01 Huawei Tech Co Ltd Hypothetical Source Decoder (HRD) for checking the suitability of output layer sets (OLS)
CN114979663B (zh) * 2019-09-24 2023-08-04 华为技术有限公司 解码器、编码器及其实现的方法
US11265357B2 (en) * 2019-10-10 2022-03-01 Microsoft Technology Licensing, Llc AV1 codec for real-time video communication
CN120455697A (zh) * 2019-12-13 2025-08-08 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法、解码方法和比特流生成装置
US11563947B2 (en) 2019-12-31 2023-01-24 Tencent America LLC Signaling output picture size for reference picture resampling
US11297350B1 (en) 2020-03-27 2022-04-05 Tencent America LLC Method for output layer set for multilayered video stream
US11770498B2 (en) 2020-09-29 2023-09-26 Lemon Inc. Supplemental enhancement information for multi-layer video streams
US11683514B2 (en) * 2020-12-22 2023-06-20 Tencent America LLC Method and apparatus for video coding for machine
US12513337B2 (en) * 2021-04-12 2025-12-30 Telefonaktiebolaget Lm Ericsson (Publ) Message referencing
CN117730534A (zh) * 2021-06-28 2024-03-19 抖音视界有限公司 补充增强信息的增强信令通知
US12483719B2 (en) * 2021-09-29 2025-11-25 Tencent America LLC Techniques for signaling multiview view positions in SEI message
CN114745600B (zh) * 2022-06-10 2022-09-27 中国传媒大学 一种基于sei的视频标签标注方法及装置
WO2024072750A1 (en) * 2022-09-27 2024-04-04 Bytedance Inc. Enhanced signalling of lost or corrupted samples in a media file

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL181021B1 (pl) * 1994-06-03 2001-05-31 Philips Electronics Nv Sposób i urządzenie do odbioru dokładnie synchronizowanych danych
EP1069777A4 (en) * 1999-02-05 2009-03-04 Sony Corp CODING SYSTEM, CODING METHOD, DECODING SYSTEM, DECODING METHOD, MULTIPLEXING DEVICE, METHOD OF MULTIPLEXING, DISPLAY SYSTEM, AND YSTEM METHOD
EP1518403A4 (en) 2002-07-02 2009-03-18 Conexant Systems Inc HYPOTHETIC REFERENCE DECODER FOR COMPRESSED PICTURES AND VIDEO
EP1529400A4 (en) 2002-07-16 2009-09-23 Korea Electronics Telecomm DEVICE AND METHOD FOR ADAPTING A TWO-DIMENSIONAL AND THREE-DIMENSIONAL STEREOSCOPIC VIDEO SIGNAL
CA2547891C (en) * 2003-12-01 2014-08-12 Samsung Electronics Co., Ltd. Method and apparatus for scalable video encoding and decoding
US7415069B2 (en) 2003-12-09 2008-08-19 Lsi Corporation Method for activation and deactivation of infrequently changing sequence and picture parameter sets
CN101848389A (zh) 2004-08-31 2010-09-29 松下电器产业株式会社 运动图像编码、解码方法及装置、记录介质的记录方法
KR100878809B1 (ko) 2004-09-23 2009-01-14 엘지전자 주식회사 비디오 신호의 디코딩 방법 및 이의 장치
CN1845611A (zh) 2005-04-08 2006-10-11 华为技术有限公司 基于h.264的视频传输保护方法
CN100459717C (zh) 2005-04-20 2009-02-04 华为技术有限公司 基于h.264的压缩视频传输误码消除方法
JP4311570B2 (ja) * 2005-07-01 2009-08-12 株式会社ソニー・コンピュータエンタテインメント 再生装置、ビデオ復号装置および同期再生方法
US7725593B2 (en) 2005-07-15 2010-05-25 Sony Corporation Scalable video coding (SVC) file format
RU2406253C2 (ru) 2005-07-21 2010-12-10 Томсон Лайсенсинг Способ и устройство для взвешенного предсказания для масштабируемого кодирования видеосигнала
US8306112B2 (en) 2005-09-20 2012-11-06 Mitsubishi Electric Corporation Image encoding method and image decoding method, image encoder and image decoder, and image encoded bit stream and recording medium
CN1859576A (zh) 2005-10-11 2006-11-08 华为技术有限公司 对空间分层编码视频图象的上采样方法及其系统
CN100456834C (zh) 2005-10-17 2009-01-28 华为技术有限公司 H.264多媒体通信的服务质量监测方法
US9131247B2 (en) * 2005-10-19 2015-09-08 Thomson Licensing Multi-view video coding using scalable video coding
US7817865B2 (en) 2006-01-12 2010-10-19 Lg Electronics Inc. Processing multiview video
US20070230564A1 (en) 2006-03-29 2007-10-04 Qualcomm Incorporated Video processing with scalability
US20090279612A1 (en) * 2006-07-05 2009-11-12 Purvin Bibhas Pandit Methods and apparatus for multi-view video encoding and decoding
JP4793366B2 (ja) 2006-10-13 2011-10-12 日本ビクター株式会社 多視点画像符号化装置、多視点画像符号化方法、多視点画像符号化プログラム、多視点画像復号装置、多視点画像復号方法、及び多視点画像復号プログラム
US20080095228A1 (en) 2006-10-20 2008-04-24 Nokia Corporation System and method for providing picture output indications in video coding
WO2008051381A2 (en) * 2006-10-24 2008-05-02 Thomson Licensing Picture management for multi-view video coding
PL2103136T3 (pl) 2006-12-21 2018-02-28 Thomson Licensing Sposoby i urządzenie dla ulepszonej sygnalizacji przy użyciu składni wysokiego poziomu dla kodowania i dekodowania wielo-widokowego wideo
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
KR101646089B1 (ko) 2007-04-12 2016-08-05 톰슨 라이센싱 비디오 인코딩 및 디코딩의 타일링
US20100142613A1 (en) * 2007-04-18 2010-06-10 Lihua Zhu Method for encoding video data in a scalable manner
US20140072058A1 (en) * 2010-03-05 2014-03-13 Thomson Licensing Coding systems
LT3264780T (lt) * 2007-04-18 2020-08-10 Dolby International Ab Kodavimo sistemos, kuriose naudojamas papildomas sekos parametras kintamo dydžio vaizdo kodavimui arba kelių vaizdų kodavimui
WO2008140190A1 (en) 2007-05-14 2008-11-20 Samsung Electronics Co, . Ltd. Method and apparatus for encoding and decoding multi-view image
BRPI0811458A2 (pt) * 2007-06-28 2014-11-04 Thomson Licensing Métodos e dispositivo em um codificador e decodificador para suportar decodificação de ciclo simples de vídeo codificado em imagem multivista
EP2009828B1 (en) 2007-06-28 2016-01-27 Alcatel Lucent Method for providing unequal error protection to data packets in a burst transmission system
US20090168680A1 (en) 2007-12-27 2009-07-02 Motorola, Inc. Multiple multicast data stream delivery in a communication network
EP2232875A2 (en) 2008-01-11 2010-09-29 Thomson Licensing Video and depth coding
US8136736B2 (en) * 2008-12-09 2012-03-20 Vasco Data Security, Inc. Slim electronic device with detector for unintentional activation
US20100189182A1 (en) 2009-01-28 2010-07-29 Nokia Corporation Method and apparatus for video coding and decoding
US8767840B2 (en) 2009-02-11 2014-07-01 Taiwan Semiconductor Manufacturing Company, Ltd. Method for detecting errors and recovering video data
CN105657405B (zh) 2009-02-19 2018-06-26 汤姆逊许可证公司 3d视频格式
WO2010099801A1 (en) 2009-03-04 2010-09-10 Telefonaktiebolaget Lm Ericsson (Publ) Processing of multimedia data
JP5072893B2 (ja) * 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
US8731053B2 (en) * 2009-11-18 2014-05-20 Tektronix, Inc. Method of multiplexing H.264 elementary streams without timing information coded
EP2630799A4 (en) 2010-10-20 2014-07-02 Nokia Corp METHOD AND DEVICE FOR VIDEO ENCODING AND DECODING
US20120144433A1 (en) 2010-12-07 2012-06-07 Electronics And Telecommunications Research Institute Apparatus and method for transmitting multimedia data in wireless network
US20130100248A1 (en) 2011-05-11 2013-04-25 Shinya Kadono Video transmitting apparatus and video transmitting method
US10944994B2 (en) 2011-06-30 2021-03-09 Telefonaktiebolaget Lm Ericsson (Publ) Indicating bit stream subsets
US9451284B2 (en) 2011-10-10 2016-09-20 Qualcomm Incorporated Efficient signaling of reference picture sets
US20130114694A1 (en) 2011-11-08 2013-05-09 Qualcomm Incorporated Parameter set groups for coded video data
WO2014006266A1 (en) * 2012-07-02 2014-01-09 Nokia Corporation Method and apparatus for video coding
US9426462B2 (en) 2012-09-21 2016-08-23 Qualcomm Incorporated Indication and activation of parameter sets for video coding

Also Published As

Publication number Publication date
PT2898691T (pt) 2016-10-12
KR102148546B1 (ko) 2020-08-26
AR097127A1 (es) 2016-02-24
CN104662904A (zh) 2015-05-27
BR112015006441A2 (pt) 2017-07-04
AU2013318521B2 (en) 2017-08-31
IL237363A (en) 2017-03-30
EP2898690B1 (en) 2017-05-17
JP6092396B2 (ja) 2017-03-08
SG11201501412VA (en) 2015-05-28
DK2898690T3 (en) 2017-08-21
HK1206522A1 (en) 2016-01-08
CA2884288C (en) 2018-08-28
US20140086337A1 (en) 2014-03-27
CN104641639B (zh) 2018-03-06
IL237387B (en) 2018-04-30
HK1205842A1 (en) 2015-12-24
WO2014046813A2 (en) 2014-03-27
KR20150060774A (ko) 2015-06-03
WO2014046812A2 (en) 2014-03-27
RU2646381C2 (ru) 2018-03-02
RU2646382C2 (ru) 2018-03-02
PL2898691T3 (pl) 2017-02-28
SG11201501409VA (en) 2015-04-29
PH12015500421B1 (en) 2018-11-14
US9554146B2 (en) 2017-01-24
AU2013318522B2 (en) 2017-08-24
PH12015500456A1 (en) 2015-04-20
PH12015500456B1 (en) 2018-07-13
RU2015114595A (ru) 2016-11-10
CA2884288A1 (en) 2014-03-27
BR112015006440B1 (pt) 2023-04-11
HUE032801T2 (en) 2017-11-28
WO2014046812A3 (en) 2014-06-05
CN104641639A (zh) 2015-05-20
JP2015529436A (ja) 2015-10-05
JP2015529437A (ja) 2015-10-05
JP6195930B2 (ja) 2017-09-13
EP2898691A2 (en) 2015-07-29
AU2013318521A1 (en) 2015-03-19
UA114339C2 (uk) 2017-05-25
SI2898690T1 (sl) 2017-09-29
CN104662904B (zh) 2018-01-26
ZA201502301B (en) 2017-11-29
MY169417A (en) 2019-04-02
TWI521953B (zh) 2016-02-11
TW201424389A (zh) 2014-06-16
BR112015006440A2 (pt) 2017-07-04
HUE030338T2 (en) 2017-05-29
IL237363A0 (en) 2015-04-30
PH12015500421A1 (en) 2015-04-20
BR112015006441B1 (pt) 2023-03-14
EP2898691B1 (en) 2016-07-06
AU2013318522A1 (en) 2015-03-19
KR101719079B1 (ko) 2017-03-22
UA114929C2 (uk) 2017-08-28
ES2596266T3 (es) 2017-01-05
DK2898691T3 (en) 2016-08-22
WO2014046813A3 (en) 2014-06-05
TWI507018B (zh) 2015-11-01
IL237387A0 (en) 2015-04-30
US20140086317A1 (en) 2014-03-27
CA2883802C (en) 2020-03-24
KR20150058370A (ko) 2015-05-28
TW201421997A (zh) 2014-06-01
AR093237A1 (es) 2015-05-27
MY170706A (en) 2019-08-27
SI2898691T1 (sl) 2016-12-30
RU2015114561A (ru) 2016-11-10
CA2883802A1 (en) 2014-03-27
US9426462B2 (en) 2016-08-23
EP2898690A2 (en) 2015-07-29
PT2898690T (pt) 2017-08-23

Similar Documents

Publication Publication Date Title
ES2637515T3 (es) Indicación y activación de conjuntos de parámetros para codificación de vídeo
ES2663692T3 (es) Aplicabilidad de sub-flujo de bits a mensajes SEI de anidado en codificación de vídeo
ES2902675T3 (es) Diseño de señalización de entrada de muestra y de punto de operación en un formato de archivo de vídeo estratificado
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
ES2996260T3 (en) Supplemental enhancement information message coding
ES2720662T3 (es) Diseños de formato de archivo de vídeo multicapa
ES2715314T3 (es) Acceso aleatorio completo desde imágenes de acceso aleatorio limpio en codificación de vídeo
ES2656470T3 (es) Mejora de los diseños de formato de la carga útil de RTP
CA2952826C (en) Multi-layer video coding
US9807419B2 (en) Recovery point SEI message in multi-layer video codecs
US20150271528A1 (en) Generic use of hevc sei messages for multi-layer codecs
ES2588314T3 (es) Gestión de memoria intermedia de imágenes decodificadas de múltiple resolución para codificación de vídeo multi-capa
ES2780686T3 (es) Tipo de dependencia entre vistas en MV-HEVC
HK1206522B (en) Method and apparatus for indication and activation of parameter sets for video coding
HK1205842B (en) Method and apparatus for indicating and activating parameter sets for video coding