ES2854877T3 - Formato de archivo para datos de vídeo - Google Patents

Formato de archivo para datos de vídeo Download PDF

Info

Publication number
ES2854877T3
ES2854877T3 ES13777406T ES13777406T ES2854877T3 ES 2854877 T3 ES2854877 T3 ES 2854877T3 ES 13777406 T ES13777406 T ES 13777406T ES 13777406 T ES13777406 T ES 13777406T ES 2854877 T3 ES2854877 T3 ES 2854877T3
Authority
ES
Spain
Prior art keywords
samples
sample
stsa
box
file
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
ES13777406T
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 ES2854877T3 publication Critical patent/ES2854877T3/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

Un procedimiento de procesamiento de datos de vídeo, el procedimiento que comprende: recibir un archivo que tiene un formato para contenido HEVC codificado con múltiples subcapas temporales, en el que cada subcapa temporal está asociada con un identificador temporal diferente, en el que: el archivo contiene muestras, cada una de las muestras contiene una imagen codificada respectiva de los datos de vídeo, cada una de las muestras está asociada con un identificador temporal indicativo de la subcapa temporal a la que pertenece la muestra, el archivo incluye un recuadro que identifica un grupo de muestras, en el que el recuadro no incluye las muestras, y en el que el recuadro incluye una entrada que marca cuáles de las muestras son muestras de acceso a una subcapa temporal de forma escalonada, STSA, siendo muestras que no utilizan muestras anteriores a la muestra STSA en el orden de descodificación con el mismo identificador temporal que la muestra STSA como referencia para la interpredicción, y permiten la conmutación ascendente a una subcapa temporal que contiene la muestra STSA respectiva mediante la predicción de la muestra STSA y/o muestras posteriores en la subcapa temporal que contienen la muestra STSA respectiva usando muestras anteriores a la muestra STSA de una subcapa temporal inmediatamente inferior; identificar, basándose en la entrada, muestras STSA de entre las muestras en el archivo; y, realizar una conmutación ascendente en una de las muestras STSA del grupo de muestras.

Description

DESCRIPCIÓN
Formato de archivo para datos de vídeo
[0001] Esta solicitud reivindica el beneficio de la solicitud provisional de la patente estadounidense n.° 61/709,748, presentada el 4 de octubre de 2012.
CAMPO TÉCNICO
[0002] La presente divulgación se refiere a la codificación y a la descodificación de vídeo.
ANTECEDENTES
[0003] Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, incluyendo televisiones digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes personales digitales (PDA), ordenadores portátiles o de escritorio, tabletas electrónicas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por el MPEG-2, MPEG-4, UIT-T H.263, UIT-T H.264/MPEG-4, parte 10, Codificación avanzada de vídeo (AVC), la norma de Codificación de vídeo de alta eficacia (HEVC) actualmente en desarrollo y las extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de compresión de vídeo.
[0004] Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (entre imágenes) para reducir o eliminar la redundancia intrínseca a las secuencias de vídeo. En la codificación de vídeo basada en bloques, un fragmento de vídeo (es decir, una trama de vídeo o una porción de una trama de vídeo) se puede dividir en bloques de vídeo. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques contiguos de la misma imagen. Los bloques de vídeo en un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia de bloques contiguos de la misma imagen o predicción temporal con respecto a muestras de referencia de otras imágenes de referencia. Las imágenes se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia.
[0005] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio de píxel hasta un dominio de transformada, dando como resultado coeficientes residuales que, a continuación, se pueden cuantificar. Los coeficientes cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden explorar para generar un vector unidimensional de coeficientes, y se puede aplicar codificación por entropía para lograr incluso más compresión.
[0006] Un flujo de bits de codificación multivista puede generarse codificando vistas, por ejemplo, desde múltiples perspectivas. Se han desarrollado algunas normas de vídeo tridimensional (3D) que aprovechan aspectos de la codificación multivista. Por ejemplo, diferentes vistas pueden transmitir vistas del ojo izquierdo y del ojo derecho para admitir vídeo 3D. De forma alternativa, algunos procesos de codificación de vídeo 3D pueden aplicar la denominada codificación multivista con profundidad. En la codificación multivista más profundidad, un flujo de bits de vídeo 3D puede contener no solo componentes de textura de la vista, sino también componentes de profundidad de la vista. Por ejemplo, cada vista puede comprender un componente de textura de la vista y un componente de profundidad de la vista.
BREVE EXPLICACIÓN
[0007] En general, esta divulgación describe técnicas para el almacenamiento de contenido de vídeo. En algunos ejemplos, las técnicas proporcionan el almacenamiento de contenido de codificación de vídeo de alta eficiencia (HEVC) en un archivo basado en un formato de archivo de medios de base (ISOBMFF) de la Organización Internacional de Normalización (ISO). Por ejemplo, un dispositivo puede generar un archivo que comprende una pluralidad de muestras que contienen imágenes codificadas. Además, el archivo también puede comprender un recuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. La agrupación de muestras a escala temporal se conoce, en general, en la técnica anterior, como se ejemplifica en la sección 5.2.8 del documento "Text of ISO/IEC14496-15:2010 PDAM2 Carriage of High efficiency Video Coding (HEVC)", 100. REUNIÓN del MPEG; 30-4-2012 - 4-5-2012; GINEBRA; (GRUPO de EXPERTOS de IMÁGENES EN MOVIMIENTO O ISO/CEI JTC1/SC29/WG11), n.° N12647, 8 de mayo de 2012 (2012-05-08). Sin embargo, el recuadro puede indicar además que cada muestra del grupo de muestras es una muestra de acceso a una subcapa temporal de forma escalonada (STSA). El mismo dispositivo o uno de diferente, puede identificar muestras STSA, basándose en los datos de un recuadro que identifica un grupo de muestras, de entre las muestras de un archivo que contiene el recuadro.
[0008] En un ejemplo, de acuerdo con la reivindicación 1 adjunta, esta divulgación describe un procedimiento de procesamiento de datos de vídeo, el procedimiento que comprende: identificar, basándose en los datos de un recuadro que identifica un grupo de muestras, muestras STSA de los datos de vídeo de entre las muestras en un archivo que contiene el recuadro.
[0009] En otro ejemplo, esta divulgación describe un procedimiento para almacenar datos de vídeo, el procedimiento que comprende generar un archivo que comprende: una pluralidad de muestras que contienen imágenes codificadas de los datos de vídeo; y un recuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras, en el que el recuadro indica además que cada muestra del grupo de muestras es una muestra STSA.
[0010] En otro ejemplo, esta divulgación describe un dispositivo que comprende uno o más procesadores configurados para identificar muestras STSA, basándose en los datos de un recuadro que identifica un grupo de muestras, de entre las muestras de datos de vídeo en un archivo que contiene el recuadro.
[0011] En otro ejemplo, esta divulgación describe un dispositivo que comprende uno o más procesadores configurados para generar un archivo que comprende: una pluralidad de muestras que contienen imágenes codificadas de datos de vídeo; y un recuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras, en el que el recuadro indica además que cada muestra del grupo de muestras es una muestra STSA.
[0012] En otro ejemplo, esta divulgación describe un dispositivo que comprende: medios para recibir un archivo que contiene un recuadro que identifica un grupo de muestra; y medios para identificar, basándose en los datos del recuadro, muestras STSa de datos de vídeo de entre las muestras en el archivo.
[0013] En otro ejemplo, esta divulgación describe un dispositivo que comprende: medios para generar un archivo que comprende: una pluralidad de muestras que contienen imágenes codificadas de datos de vídeo; y un recuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras, en el que el recuadro indica además que cada muestra del grupo de muestras es una muestra STSA; y medios para generar el archivo.
[0014] En otro ejemplo, esta divulgación describe un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que uno o más procesadores identifiquen muestras STSA, basándose en los datos de un recuadro que identifica un grupo de muestras, de entre las muestras en un archivo que contiene el recuadro.
[0015] En otro ejemplo, esta divulgación describe un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que uno o más procesadores generen un archivo que comprende: una pluralidad de muestras que contienen imágenes codificadas; y un recuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras, en el que el recuadro indica además que cada muestra del grupo de muestras es una muestra STSA.
[0016] Los detalles de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y en la descripción siguiente. Otros rasgos característicos, objetivos y ventajas resultarán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0017]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo de ejemplo que puede utilizar las técnicas descritas en la presente divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en la presente divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas descritas en la presente divulgación.
La FIG. 4 es un diagrama de flujo que ilustra un funcionamiento de ejemplo de acuerdo con una o más técnicas de la presente divulgación.
La FIG. 5 es un diagrama de flujo que ilustra un funcionamiento de ejemplo de acuerdo con una o más técnicas adicionales de la presente divulgación.
La FIG. 6 es un diagrama conceptual que ilustra una estructura de ejemplo de un archivo, de acuerdo con una o más técnicas de la presente divulgación.
DESCRIPCIÓN DETALLADA
[0018] Un flujo de bits, tal como un flujo de bits de Codificación de Vídeo de Alta Eficiencia (HEVC), puede comprender una secuencia de bits que forma una representación de imágenes codificadas y datos asociados que forman una o más secuencias de vídeo codificadas (CVS). Una imagen codificada puede comprender una representación codificada de una imagen que contiene todas las unidades del árbol de codificación de la imagen. Una unidad de árbol de codificación (CTU) puede comprender un bloque del árbol de codificación (CTB) de muestras de luma y dos CTB correspondientes de muestras de croma y estructuras de sintaxis utilizadas para codificar las muestras. Una CVS puede comprender una secuencia de unidades de acceso. Cada una de las unidades de acceso puede comprender un conjunto de imágenes codificadas asociadas con la misma instancia de tiempo.
[0019] Un elemento de red sensible al medio (MANE) u otro tipo de dispositivo puede aplicar reducción del flujo de bits a un flujo de bits HEVC que está codificado con múltiples subcapas. Un subconjunto de imágenes dentro de una capa que puede descodificarse sin hacer referencia a otras imágenes dentro de la capa se puede denominar en el presente documento una "subcapa" o una "subcapa temporal". El identificador temporal de una unidad de capa de abstracción de red (NAL) identifica una subcapa con la que está asociada la unidad de NAL. De este modo, cada subcapa de un flujo de bits puede asociarse a un identificador temporal diferente. Si el identificador temporal de una primera unidad de NAL es menor que el identificador temporal de una segunda unidad de NAL, los datos encapsulados por la primera unidad de NAL se pueden descodificar sin hacer referencia a los datos encapsulados por la segunda unidad de NAL
[0020] En cualquier punto en el flujo de bits, un MANE puede iniciar la eliminación de las unidades de capa de abstracción de red (NAL) de las subcapas más altas sobre la base de que las imágenes de las subcapas inferiores son todavía descodificables puesto que el proceso de descodificación para las imágenes en las subcapas inferiores no depende de las unidades de NAL de las subcapas superiores. La acción de eliminar todas las unidades de NAL con identificadores temporales superiores a un determinado valor puede denominarse conmutación temporal descendente. La conmutación temporal descendente siempre puede ser posible.
[0021] La acción de empezar a reenviar unidades de NAL de una determinada subcapa que no han sido reenviadas hasta ese punto se denomina conmutación temporal ascendente. En algunos ejemplos, la conmutación temporal ascendente solo es posible si ninguna de las imágenes de la capa que se conmuta depende de una imagen de la misma subcapa antes del punto en el flujo de bits en el que se realizó la conmutación. Los puntos en un flujo de bits en los que es posible la conmutación temporal ascendente pueden denominarse puntos de conmutación de subcapa.
[0022] En HEVC, hay dos tipos de imágenes asociadas con puntos de conmutación de subcapa, concretamente, el tipo de imagen de acceso a una subcapa temporal (TSA) y el tipo de imagen de acceso a una subcapa temporal de forma escalonada (STSA). Los tipos de imágenes TSA y STSA pueden utilizarse para indicar puntos de conmutación de subcapa temporal. Una imagen TSA permite la conmutación ascendente, en la imagen TSA, a la subcapa que contiene la imagen TSA o cualquier subcapa superior, desde la subcapa inmediatamente inferior. Una imagen STSA permite la conmutación ascendente, en la imagen STSA, a la subcapa que contiene la imagen STSA, desde la subcapa inmediatamente inferior. De este modo, a diferencia de una imagen TSA, un STSA no necesariamente habilita la conmutación ascendente a una subcapa superior, solo a la subcapa que contiene la imagen STSA.
[0023] De acuerdo con un formato de archivo para el almacenamiento de contenido HEVC (es decir, un formato de archivo HEVC), un archivo puede comprender una pluralidad de "recuadros". De este modo, los archivos que se ajustan al formato de archivo HEVC pueden comprender una serie de objetos llamados recuadros. Un "recuadro" puede ser un bloque de construcción orientado a objetos definido por un identificador de tipo único y una longitud. En algunos casos, todos los datos de un archivo que se ajusta al formato de archivo HEVC pueden estar contenidos dentro de recuadros y puede no haber ningún dato en el archivo que no esté en un recuadro.
[0024] Además, un archivo que se ajuste al formato de archivo HEVC puede incluir una pluralidad de pistas. Cada pista puede ser una secuencia temporizada de muestras relacionadas. En el contexto del formato de archivo HEVC, una "muestra" puede comprender datos asociados con una sola marca de tiempo. Entre los ejemplos de una muestra se incluyen: una trama de vídeo individual, una serie de tramas de vídeo en el orden de descodificación, o una sección comprimida de audio en el orden de descodificación.
[0025] Además, en el formato de archivo HEVC, una agrupación de muestras es una asignación de cada una de las muestras en una pista para ser un miembro de un grupo de muestras. No se requiere que las muestras en un grupo de muestras sean contiguas. Los grupos de muestras pueden estar representados por dos estructuras de datos: un recuadro SampleToGroup y un recuadro SampleGroupDescription. El recuadro SampleToGroup representa la asignación de muestras a grupos de muestras. Puede haber una instancia del recuadro SampleGroupDescription para cada entrada del grupo de muestras. Un recuadro SampleGroupDescription describe las propiedades del grupo de muestras correspondiente.
[0026] Hay varios problemas o deficiencias con los diseños existentes del formato de archivo para el almacenamiento de contenido HEVC. Por ejemplo, no hay una forma compacta de señalizar muestras que contengan imágenes STSA (también conocidas como muestras STSA). En otro ejemplo, no hay una forma eficaz de señalizar si se puede realizar una conmutación temporal ascendente de subcapa a cualquier capa temporal superior en cualquier muestra.
[0027] Las técnicas de la presente divulgación pueden resolver uno o más de los problemas o deficiencias previamente mencionados. De acuerdo con una técnica de ejemplo de la presente divulgación, un dispositivo (por ejemplo, un codificador de vídeo u otro dispositivo) puede generar un archivo que comprende una pluralidad de muestras que contienen imágenes codificadas. El archivo también puede incluir un recuadro (por ejemplo, un SampleToGroupBox) que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. El recuadro indica además que cada muestra del grupo de muestras es una muestra STSA. Por consiguiente, un dispositivo (por ejemplo, un descodificador de vídeo u otro dispositivo) puede identificar muestras STSA, basándose en los datos de un recuadro que identifica un grupo de muestras, de entre las muestras en un archivo que contiene el recuadro.
[0028] De acuerdo con otra técnica de ejemplo de la presente divulgación, un codificador de vídeo u otro dispositivo puede generar un archivo que almacena muestras codificadas que contienen imágenes codificadas de los datos de vídeo. El archivo también puede incluir un recuadro que incluye un registro que incluye un elemento que indica si, todos los conjuntos de parámetros de secuencia (SPS) que se activan cuando se descodifica un flujo al que se aplica el registro, tienen elementos de sintaxis que indican que la conmutación temporal ascendente de subcapa a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS. Por consiguiente, un descodificador de vídeo u otro dispositivo puede determinar, basándose en un elemento de un registro en un recuadro de un archivo que contiene muestras que contienen imágenes codificadas de los datos de vídeo, que todos los SPS que se activan, cuando un flujo al que se aplica el registro se ha descodificado, tienen elementos de sintaxis que indican que la conmutación temporal ascendente de subcapa a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0029] Por ejemplo, un codificador de vídeo puede generar un registro de configuración del descodificador HEVC. El registro de configuración del descodificador HEVC puede incluir un elemento TemporalIdNested. El elemento TemporalIdNested puede indicar si se puede realizar una conmutación temporal ascendente de subcapa a cualquier capa temporal superior en cualquier muestra de un flujo al que se aplique el registro de configuración del descodificador HEVc .
[0030] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo 10 de ejemplo que puede utilizar las técnicas de la presente divulgación. Como se usa en el presente documento, el término "codificador de vídeo" se refiere genéricamente tanto a codificadores de vídeo como a descodificadores de vídeo. En la presente divulgación, los términos "codificación de vídeo" o "codificación" se pueden referir genéricamente a codificación de vídeo o a descodificación de vídeo.
[0031] Como se muestra en la FIG. 1, el sistema de codificación de vídeo 10 incluye un dispositivo de origen 12 y un dispositivo de destino 14. El dispositivo de origen 12 genera datos de vídeo codificados. Por consiguiente, el dispositivo de origen 12 se puede denominar dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo de destino 14 puede descodificar los datos de vídeo codificados generados por el dispositivo de origen 12. Por consiguiente, el dispositivo de destino 14 se puede denominar dispositivo de descodificación de vídeo o aparato de descodificación de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 pueden ser ejemplos de dispositivos de codificación de vídeo o aparatos de codificación de vídeo.
[0032] El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender una amplia gama de dispositivos, que incluye ordenadores de escritorio, dispositivos informáticos móviles, ordenadores tipo notebook (por ejemplo, portátiles), tabletas electrónicas, descodificadores multimedia, aparatos telefónicos tales como los denominados teléfonos "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, ordenadores para vehículos o similares.
[0033] El dispositivo de destino 14 puede recibir datos de vídeo codificados desde el dispositivo de origen 12 por medio de un canal 16. El canal 16 puede comprender uno o más medios o dispositivos capaces de transferir los datos de vídeo codificados desde el dispositivo de origen 12 hasta el dispositivo de destino 14. En un ejemplo, el canal 16 puede comprender uno o más medios de comunicación que permiten al dispositivo de origen 12 transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. En este ejemplo, el dispositivo de origen 12 puede modular los datos de vídeo codificados de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y puede transmitir los datos de vídeo modulados al dispositivo de destino 14. Los uno o más medios de comunicación pueden incluir medios de comunicación inalámbrica y/o alámbrica, tales como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. Los uno o más medios de comunicación pueden formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global (por ejemplo, Internet). Los uno o más medios de comunicación pueden incluir encaminadores, conmutadores, estaciones base u otros equipos que facilitan la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
[0034] En otro ejemplo, el canal 16 puede incluir un medio de almacenamiento que almacena datos de vídeo codificados generados por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder al medio de almacenamiento, por ejemplo, por medio de acceso a disco o acceso a tarjeta. El medio de almacenamiento puede incluir una variedad de medios de almacenamiento de datos de acceso local, tales como discos Blu-ray, DVD, CD-ROM, memoria flash u otros medios de almacenamiento digital adecuados para almacenar datos de vídeo codificados.
[0035] En otro ejemplo, el canal 16 puede incluir un servidor de archivos u otro dispositivo de almacenamiento intermedio que almacena los datos de vídeo codificados generados por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder a datos de vídeo codificados almacenados en el servidor de archivos o en otro dispositivo de almacenamiento intermedio por medio de transmisión continua o descarga. El servidor de archivos puede ser un tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir los datos de vídeo codificados al dispositivo de destino 14. Ejemplos de servidores de archivos incluyen servidores web (por ejemplo, para un sitio web), servidores de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectado en red (NAS) y unidades de disco locales.
[0036] El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de una conexión de datos estándar, tal como una conexión a Internet. Ejemplos de tipos de conexiones de datos pueden incluir canales inalámbricos (por ejemplo, conexiones Wi-Fi), conexiones alámbricas (por ejemplo, línea de abonado digital (DSL), módem por cable, etc.), o combinaciones de ambas cosas que sean adecuadas para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el servidor de archivos puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas cosas.
[0037] Las técnicas de la presente divulgación no se limitan a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como soporte de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en continuo, por ejemplo, por medio de Internet, codificación de datos de vídeo para su almacenamiento en un medio de almacenamiento de datos, descodificación de datos de vídeo almacenados en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema de codificación de vídeo 10 se puede configurar para admitir transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0038] La FIG. 1 es meramente un ejemplo y las técnicas de la presente divulgación se pueden aplicar a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no incluyan necesariamente ninguna comunicación de datos entre los dispositivos de codificación y descodificación. En otros ejemplos, los datos se recuperan de una memoria local, se emiten en continuo por una red, o similares. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en una memoria, y/o un dispositivo de descodificación de vídeo puede recuperar y descodificar datos de una memoria. En muchos ejemplos, la codificación y la descodificación se realizan mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en una memoria y/o recuperan y descodifican datos de una memoria.
[0039] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos ejemplos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. La fuente de vídeo 18 puede incluir un dispositivo de captura de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contenga datos de vídeo previamente capturados, una interfaz de suministro de vídeo para recibir datos de vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de vídeo, o una combinación de dichas fuentes de datos de vídeo.
[0040] El codificador de vídeo 20 puede codificar datos de vídeo procedentes de la fuente de vídeo 18. En algunos ejemplos, el dispositivo de origen 12 transmite directamente los datos de vídeo codificados al dispositivo de destino 14 por medio de la interfaz de salida 22. En otros ejemplos, los datos de vídeo codificados también pueden almacenarse en un medio de almacenamiento o en un servidor de archivos para su acceso posterior mediante el dispositivo de destino 14 para su descodificación y/o su reproducción.
[0041] En el ejemplo de la FIG. 1, el dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En algunos ejemplos, la interfaz de entrada 28 incluye un receptor y/o un módem. La interfaz de entrada 28 puede recibir datos de vídeo codificados a través del canal 16. El descodificador de vídeo 30 puede descodificar datos de vídeo codificados. El dispositivo de visualización 32 puede visualizar los datos de vídeo descodificados. El dispositivo de visualización 32 puede estar integrado en, o ser externo a, el dispositivo de destino 14. El dispositivo de visualización 32 puede comprender una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0042] Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden implementarse como cualquiera de una variedad de circuitos adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento legible por ordenador no transitorio adecuado, y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Cualquiera de lo anterior (incluyendo hardware, software, una combinación de hardware y software, etc.) puede considerarse como uno o más procesadores. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden incluir en uno o más codificadores o descodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0043] La presente divulgación se puede referir, en general, al codificador de vídeo 20 que "señaliza" determinada información a otro dispositivo, tal como el descodificador de vídeo 30. El término "señalizar" se puede referir, en general, a la comunicación de elementos de sintaxis y/o a otros datos usados para descodificar los datos de vídeo comprimidos. Dicha comunicación se puede producir en tiempo real o casi real. De forma alternativa, dicha comunicación se puede producir durante un período de tiempo, tal como se podría producir cuando se almacenan elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que, a continuación, se pueden recuperar por un dispositivo de descodificación en cualquier momento después de almacenarse en este medio.
[0044] En algunos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 funcionan de acuerdo con una norma de compresión de vídeo, tal como la (ISO) Organización Internacional de Normalización/CEI MPEG-4 Visual y la UIT-T H.264 (también conocida como ISO/CEI MPEG-4 AVC), incluida su extensión de codificación de vídeo escalable (SVC), su extensión de codificación de vídeo multivista (MVC) y su extensión de vídeo tridimensional (3DV) basada en MVC. En algunos casos, cualquier flujo de bits que se ajuste a la extensión 3DV basada en MVC de H.264/AVC siempre contiene un subflujo de bits que es compatible con la extensión MVC de H.264/AVC. Además, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una extensión de codificación 3DV a H.264/AVC (es decir, 3DV basado en AVC) que está actualmente en desarrollo. En otros ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con el Sector de Normalización de las Telecomunicaciones de la Unión Internacional de Telecomunicaciones (UIT-T) H.261, el Grupo de Expertos de Imágenes en Movimiento (MPEG)-1 Visual de la Organización Internacional de Normalización (ISO)/Comisión Electrotécnica Internacional (CEI), UIT-T H.262 o ISO/CEI MPEG-2 Visual, e UIT-T H.264, ISO/CEI Visual.
[0045] En otros ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) elaborada por el Equipo de Colaboración sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de la UIT-T y el Grupo de Expertos de Imágenes en Movimiento (MPEG) de la ISO/CEI. Un borrador de la norma HEVC, denominado "Borrador de trabajo 8 de la HEVC" se describe en Bross y col., "High Efficiency Video Coding (HEVC) text specification draft 8,", Equipo de Colaboración sobre Codificación de Vídeo (JCT-Vc ) de la UIT-T SG16 W p3 y la ISO/CEI JTC1/SC29/WG11, décima reunión, Estocolmo, Suecia, julio de 2012, que en fecha de 17 de septiembre de 2013 está disponible en http://phenix.int-evry.fr/jet/doc_end_user/documents/10_Stockholm/wg11JCTVC-J1003-v8.zip. Además, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con la codificación de vídeo escalable, la codificación multivista y las extensiones 3DV para HEVC que están actualmente en desarrollo. La extensión de codificación de vídeo escalable de la HEVC puede denominarse SHEVC. La extensión de 3DV de la HEVC puede denominarse 3DV basado en HEVC o 3D-HEVC.
[0046] En la norma HEVC y otras especificaciones de codificación de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también se pueden denominar "tramas". Una imagen puede incluir tres matrices de muestras, indicadas como SL, SCb y SCr. SL es una matriz bidimensional (es decir, un bloque) de muestras de luma. Scb es una matriz bidimensional de muestras de crominancia Cb. Ser es una matriz bidimensional de muestras de crominancia Cr. Las muestras de crominancia también se pueden denominar en el presente documento muestras de "croma". En otros casos, una imagen puede ser monocromática y puede incluir solo una matriz de muestras de luma.
[0047] Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades del árbol de codificación (CTU). Cada una de las CTU puede comprender un bloque del árbol de codificación de muestras de luma, dos bloques del árbol de codificación correspondientes de muestras de croma y unas estructuras de sintaxis usadas para codificar las muestras de los bloques del árbol de codificación. En imágenes monocromáticas o imágenes que tengan tres planos de color separados, una CTU puede comprender un solo bloque del árbol de codificación y unas estructuras de sintaxis usadas para codificar las muestras del bloque del árbol de codificación. Un bloque del árbol de codificación puede ser un bloque de muestras NxN. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación de máximo tamaño" (LCU). Las CTU de la HEVC pueden ser análogas en términos generales a los macrobloques de otras normas, tales como H.264/AVC. Sin embargo, una CTU no está necesariamente limitada a un tamaño en particular y puede incluir una o más unidades de codificación (CU). Un fragmento puede incluir un número entero de CTU ordenadas consecutivamente en un orden de escaneo de barrido.
[0048] Para generar una CTU codificada, el codificador de vídeo 20 puede realizar de forma recursiva una división de árbol cuaternario en los bloques del árbol de codificación de una CTU para dividir los bloques del árbol de codificación en bloques de codificación, de ahí el nombre "unidades del árbol de codificación". Un bloque de codificación es un bloque de muestras de tamaño NxN. Una CU puede comprender un bloque de codificación de muestras de luma y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luma, una matriz de muestras Cb y una matriz de muestras Cr y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. En imágenes monocromáticas o imágenes que tengan tres planos de color separados, una CU puede comprender un único bloque de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de codificación.
[0049] El codificador de vídeo 20 puede dividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción es un bloque rectangular (es decir, cuadrado o no cuadrado) de muestras en las cuales se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede comprender un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma y estructuras de sintaxis usadas para predecir los bloques de predicción. En imágenes monocromáticas o imágenes que tengan tres planos de color separados, una PU puede comprender un único bloque de predicción y estructuras de sintaxis usadas para predecir el bloque de predicción. El codificador de vídeo 20 puede generar bloques predictivos de luma, Cb y Cr para bloques de predicción de luma, Cb y Cr de cada PU de la CU.
[0050] El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador de vídeo 20 usa intrapredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a muestras descodificadas de la imagen asociada con la Pu . En la presente divulgación, la frase "basado en" puede indicar "basado al menos en parte en". Si el codificador de vídeo 20 usa interpredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a muestras descodificadas de una o más imágenes distintas a la imagen asociada con la PU.
[0051] Con objeto de admitir interpredicción, el codificador de vídeo 20 puede generar una o más listas de imágenes de referencia. Estas listas de imágenes de referencia pueden denominarse RefPicList0 y RefPicList1. En algunos ejemplos, el codificador de vídeo 20 puede generar diferentes listas de imágenes de referencia para diferentes imágenes o diferentes fragmentos de imágenes. De ahí que diferentes PU de diferentes imágenes y/o fragmentos pueden asociarse con diferentes versiones de la RefPicList0 y la RefPicList1.
[0052] Además, cuando el codificador de vídeo 20 utiliza interpredicción para generar un bloque predictivo de una PU, el codificador de vídeo 20 puede señalizar información de movimiento para la PU. La información de movimiento puede incluir un índice de referencia para la PU y un vector de movimiento para la PU. El índice de referencia para la PU puede indicar una posición, dentro de una de las listas de imágenes de referencia asociadas con la PU, de una imagen de referencia. El vector de movimiento para la PU puede indicar un desplazamiento espacial entre un bloque de predicción de la PU y una ubicación de referencia en la imagen de referencia. El codificador de vídeo 20 puede usar muestras de la imagen de referencia asociada con la ubicación de referencia para generar un bloque predictivo para la PU. Puesto que una PU puede estar asociada con dos imágenes de referencia, la PU puede tener dos índices de referencia y dos vectores de movimiento. De ahí que una PU puede tener un índice de referencia RefPicList0 y un índice de referencia RefPicList1. El índice de referencia RefPicList0 de la PU indica una imagen de referencia en la versión de la PU de la RefPicList0. El índice de referencia RefPicList1 de la PU indica una imagen de referencia en la versión de la PU de la RefPicList1. De manera similar, la PU puede tener un vector de movimiento RefPicList0 y un vector de movimiento RefPicList1. El vector de movimiento RefPicList0 de la PU puede indicar una ubicación de referencia en una imagen de referencia en la versión de la PU de la RefPicList0. El vector de movimiento RefPicList1 de la PU puede indicar una ubicación de referencia en una imagen de referencia en la versión de la PU de la RefPicList1.
[0053] El codificador de vídeo 20 puede señalizar los índices de referencia y los vectores de movimiento de una PU en un flujo de bits. En otras palabras, el codificador de vídeo 20 puede incluir, en el flujo de bits, datos que indican los índices de referencia y los vectores de movimiento de la PU. El descodificador de vídeo 30 puede reconstruir las versiones de la PU de la RefPicList0 y/o la RefPicList1 y puede usar los índices de referencia y los vectores de movimiento de la PU para determinar uno o más bloques predictivos para la PU. El descodificador de vídeo 30 puede usar los bloques predictivos para la PU, junto con los datos residuales, para descodificar muestras.
[0054] Después de que el codificador de vídeo 20 genere bloques de luma predictivos para una o más PU de una CU, el codificador de vídeo 20 puede generar un bloque residual de luma para la CU. Cada muestra del bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques predictivos de luma de la CU y una muestra correspondiente en el bloque de codificación de luma original de la Cu . Además, el codificador de vídeo 20 puede generar un bloque residual de Cb para la CU. Cada muestra del bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb de uno de los bloques predictivos de Cb de la CU y una muestra correspondiente del bloque de codificación de Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual de Cr para la CU. Cada muestra del bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr en uno de los bloques predictivos de Cr de la CU y una muestra correspondiente en el bloque de codificación de Cr original de la CU.
[0055] Además, el codificador de vídeo 20 puede usar una división de árbol cuaternario para descomponer los bloques residuales de luma, Cb y Cr de una CU en uno o más bloques de transformada de luma, Cb y Cr. Un bloque de transformada puede ser un bloque rectangular (por ejemplo, cuadrado o no cuadrado) de muestras a las que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede comprender un bloque de transformada de muestras de luma, dos bloques correspondientes de transformada de muestras de croma y estructuras de sintaxis usadas para transformar las muestras de bloques de transformada. De este modo, cada TU de una CU puede estar asociada con un bloque de transformada de luma, un bloque de transformada de Cb y un bloque de transformada de Cr. El bloque de transformada de luma asociado a la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada de Cb puede ser un subbloque del bloque residual de Cb de la CU. El bloque de transformada de Cr puede ser un subbloque del bloque residual de Cr de la CU. En imágenes monocromáticas o imágenes que tengan tres planos de color separados, una TU puede comprender un único bloque de transformada y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada.
[0056] El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cb de una TU para generar un bloque de coeficientes de Cb para la TU. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cr de una TU para generar un bloque de coeficientes de Cr para la TU.
[0057] Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luma, un bloque de coeficientes de Cb o un bloque de coeficientes de Cr), el codificador de vídeo 20 puede cuantificar el bloque de coeficientes. La cuantificación se refiere, en general, a un proceso en el que coeficientes de transformada se cuantifican para reducir, posiblemente, la cantidad de datos usados para representar los coeficientes de transformada, proporcionando más compresión. Después de que el codificador de vídeo 20 cuantifique un bloque de coeficientes, el codificador de vídeo 20 puede codificar por entropía elementos de sintaxis que indiquen los coeficientes de transformada cuantificados. Por ejemplo, el codificador de vídeo 20 puede realizar una codificación aritmética binaria adaptativa al contexto (CABAC) en los elementos de sintaxis que indiquen los coeficientes de transformada cuantificados.
[0058] El codificador de vídeo 20 puede emitir un flujo de bits que incluya una secuencia de bits que forme una representación de imágenes codificadas y datos asociados. El término "flujo de bits" puede ser un término colectivo usado para referirse a un flujo de unidades de capa de abstracción de red (NAL) (por ejemplo, una secuencia de unidades de NAL) o bien un flujo de bytes (por ejemplo, una encapsulación de un flujo de unidades de NAL que contiene prefijos de código de inicio y unidades de NAL como se especifica en el Anexo B de la norma HEVC). Una unidad de NAL es una estructura de sintaxis que contiene una indicación del tipo de datos en la unidad de NAL y bytes que contienen esos datos en forma de una carga útil de secuencia de bytes sin procesar (RBSP) entremezclados como sea necesario con bits de prevención de emulación. Cada una de las unidades de NAL puede incluir una cabecera de unidad de NAL y puede encapsular una RBSP. La cabecera de unidad de NAL puede incluir un elemento de sintaxis que indique un código del tipo de unidad de NAL. El código del tipo de unidad de NAL especificado por la cabecera de unidad de NAL de una unidad de NAL indica el tipo de la unidad de NAL. Una RBSP puede ser una estructura de sintaxis que contenga un número entero de bytes que esté encapsulado dentro de una unidad de NAL. En algunos casos, una RBSP incluye cero bits.
[0059] Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para un fragmento codificado, un tercer tipo de unidad de NAL puede encapsular una RBSP para SEI, etc. Las unidades de NAL que encapsulan las RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes SEI) se pueden denominar unidades de NAL de la capa de codificación de vídeo (Vc L). Las unidades de NAL que contienen conjuntos de parámetros (por ejemplo, conjuntos de parámetros de vídeo (VPS), conjuntos de parámetros de secuencia (SPS), PPS, etc.) pueden denominarse unidades de NAL de conjuntos de parámetros.
[0060] El descodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Además, el descodificador de vídeo 30 puede analizar el flujo de bits para obtener elementos de sintaxis a partir del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo en base a, al menos en parte, los elementos de sintaxis obtenidos a partir del flujo de bits. El procedimiento para reconstruir los datos de vídeo puede ser, en general, recíproco al procedimiento realizado por el codificador de vídeo 20. Por ejemplo, el descodificador de vídeo 30 puede usar vectores de movimiento de las PU para determinar bloques predictivos para las PU de una CU actual. Además, el descodificador de vídeo 30 puede cuantificar de forma inversa bloques de coeficientes asociados a las TU de la CU actual. El descodificador de vídeo 30 puede realizar transformadas inversas en los bloques de coeficientes para reconstruir los bloques de transformada asociados a las TU de la CU actual. El descodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a las muestras correspondientes de los bloques de transformada de las TU de la CU actual. Mediante la reconstrucción de los bloques de codificación para cada CU de una imagen, el descodificador de vídeo 30 puede reconstruir la imagen.
[0061] En la codificación multivista, puede haber múltiples vistas de la misma escena desde diferentes puntos de vista. En el contexto de la codificación multivista, el término "unidad de acceso" se puede usar para referirse al conjunto de imágenes que corresponden a la misma instancia de tiempo. De este modo, los datos de vídeo se pueden conceptualizar como una serie de unidades de acceso que se producen a lo largo del tiempo. Un "componente de la vista" puede ser una representación codificada de una vista en una única unidad de acceso. En la presente divulgación, una "vista" se puede referir a una secuencia de componentes de la vista asociados con el mismo identificador de la vista. En algunos ejemplos, un componente de la vista puede ser un componente de textura de la vista (es decir, una imagen de textura) o un componente de profundidad de la vista (es decir, una imagen de profundidad).
[0062] La codificación multivista admite la predicción entre vistas. La predicción entre vistas es similar a la interpredicción usada en HEVC y puede usar los mismos elementos de sintaxis. Sin embargo, cuando un codificador de vídeo realiza la predicción entre vistas en una unidad de vídeo actual (tal como una PU), el codificador de vídeo puede usar, como imagen de referencia, una imagen que está en la misma unidad de acceso que la unidad de vídeo actual, pero en una vista diferente. Por el contrario, la interpredicción convencional solo usa imágenes de diferentes unidades de acceso como imágenes de referencia.
[0063] En la codificación multivista, una vista se puede denominar "vista base" si un descodificador de vídeo (por ejemplo, el descodificador de vídeo 30) puede descodificar imágenes en la vista sin hacer referencia a imágenes de ninguna otra vista. Cuando se codifica una imagen en una vista que no es base, un codificador de vídeo (tal como el codificador de vídeo 20 o el descodificador de vídeo 30) puede añadir una imagen a una lista de imágenes de referencia si la imagen está en una vista diferente pero dentro de la misma instancia de tiempo (es decir, unidad de acceso) que la imagen que el codificador de vídeo está codificando en este momento. Al igual que otras imágenes de referencia de interpredicción, el codificador de vídeo puede insertar una imagen de referencia de predicción entre vistas en cualquier posición de una lista de imágenes de referencia.
[0064] Por ejemplo, las unidades de NAL pueden incluir cabeceras (es decir, cabeceras de unidades de NAL) y cargas útiles (por ejemplo, las RBSP). Las unidades de NAL pueden incluir elementos de sintaxis nuh_reserved_zero_6bits. Las unidades de NAL que tienen elementos de sintaxis nuh_reserved_zero_6bits que especifican valores diferentes que pertenecen a diferentes "capas" de un flujo de bits. De este modo, en la codificación multivista, 3DV o SVC, el elemento de sintaxis nuh_reserved_zero_6bits de la unidad de NAL especifica un identificador de capa (es decir, un ID de capa) de la unidad de NAL. En algunos ejemplos, el elemento de sintaxis nuh_reserved_zero_6bits de una unidad de NAL es igual a 0 si la unidad de NAL está relacionada con una capa base en la codificación multivista, codificación 3DV o SVC. Los datos de una capa base de un flujo de bits pueden descodificarse sin hacer referencia a los datos de cualquier otra capa del flujo de bits. Si la unidad de NAL no está relacionada con una capa base en la codificación multivista, 3DV o SVC, el elemento de sintaxis nuh_reserved_zero_6bits puede tener un valor distinto de cero. En la codificación multivista y la codificación 3DV, diferentes capas de un flujo de bits pueden corresponder a diferentes vistas. En la SVC, las capas distintas de la capa base pueden denominarse “capas de mejora” y pueden proporcionar información que mejora la calidad visual de los datos de vídeo descodificados a partir del flujo de bits.
[0065] Además, algunas imágenes dentro de una capa se pueden descodificar sin hacer referencia a otras imágenes dentro de la misma capa. De este modo, las unidades de NAL que encapsulan datos de determinadas imágenes de una capa se pueden eliminar del flujo de bits sin afectar a la capacidad de descodificación de otras imágenes en la capa. La eliminación de unidades de NAL que encapsulan datos de dichas imágenes puede reducir la frecuencia de trama del flujo de bits. Un subconjunto de imágenes dentro de una capa que puede descodificarse sin hacer referencia a otras imágenes dentro de la capa se puede denominar en el presente documento una "subcapa" o una "subcapa temporal".
[0066] Las unidades de NAL pueden incluir elementos de sintaxis temporal_id. El elemento de sintaxis temporal_id de una unidad de NAL especifica un identificador temporal de la unidad de NAL. El identificador temporal de una unidad de NAL identifica una subcapa con la que está asociada la unidad de NAL. De este modo, cada subcapa de un flujo de bits puede asociarse a un identificador temporal diferente. Si el identificador temporal de una primera unidad de nA l es menor que el identificador temporal de una segunda unidad de NAL, los datos encapsulados por la primera unidad de NAL se pueden descodificar sin hacer referencia a los datos encapsulados por la segunda unidad de NAL.
[0067] En H.264/AVC y HEVC, los SPS pueden contener información que se aplica a todos los fragmentos de una CVS. En HEVC, una CVS comienza a partir de una imagen de actualización instantánea del descodificador (IDR), o una imagen de acceso de enlace roto (BLA), o una imagen de acceso aleatorio limpio (CRA), que es la primera imagen en el flujo de bits, incluidas todas las imágenes posteriores que no son una imagen IDR o BLA. Es decir, en HEVC, una CVS puede comprender una secuencia de unidades de acceso que puede consistir, en el orden de descodificación, de una unidad de acceso CRA que es la primera unidad de acceso en el flujo de bits, una unidad de acceso IDR o una unidad de acceso BLA, seguida de cero o más unidades de acceso que no son IDR o BLA, incluidas todas las unidades de acceso posteriores, pero sin incluir ninguna unidad de acceso IDR o BLA posterior.
[0068] La HEVC y otras normas de codificación de vídeo proporcionan mecanismos para habilitar el acceso aleatorio a los flujos de bits. El acceso aleatorio se refiere a la descodificación de un flujo de bits a partir de una imagen codificada que no es la primera imagen codificada en el flujo de bits. El acceso aleatorio a un flujo de bits puede ser necesario en diversas aplicaciones de vídeo, tal como la radiodifusión y la transmisión continua. El acceso aleatorio a un flujo de bits puede permitir a los usuarios sintonizar un programa en cualquier momento, cambiar entre diferentes canales, saltar a partes específicas de un vídeo o cambiar a un flujo de bits diferente para adaptar el flujo (por ejemplo, adaptación de una velocidad de transmisión de bits, adaptación de una frecuencia de trama, adaptación de una resolución espacial, etc.). La inserción de imágenes con punto de acceso aleatorio (RAP) en un flujo de bits a intervalos regulares puede permitir el acceso aleatorio. Los tipos de ejemplo de imágenes RAP incluyen imágenes IDR, imágenes CRA e imágenes BLA. De ahí que las imágenes IDR, las imágenes CRA y las imágenes BLA se denominen colectivamente imágenes con punto de acceso aleatorio (RAP).
[0069] Una imagen IDR solo contiene fragmentos I (es decir, fragmentos en los que solo se usa intrapredicción). Una imagen BLA puede ser la primera imagen del flujo de bits en el orden de descodificación, o puede aparecer más adelante en el flujo de bits. Cada imagen IDR es la primera imagen de una CVS en el orden de descodificación. Las imágenes IDR, como se especifica en la HEVC y en la H.264/AVC, se pueden usar para el acceso aleatorio. Sin embargo, las imágenes que van después de una imagen IDR en el orden de descodificación no pueden usar imágenes descodificadas antes de la imagen IDR como referencia. Por consiguiente, los flujos de bits que dependen de imágenes IDR para el acceso aleatorio pueden tener una eficacia de la codificación significativamente menor que los flujos de bits que usan tipos de imágenes de acceso aleatorio adicionales. Una unidad de acceso IDR es una unidad de acceso que contiene una imagen IDR.
[0070] El concepto de imágenes CRA se introdujo en la HEVC para permitir que las imágenes que van después de una imagen CRA en el orden de descodificación, pero preceden a la imagen CRA en el orden de salida, usen imágenes descodificadas antes de la imagen CRA de referencia. Las imágenes que van después de una imagen CRA en el orden de descodificación, pero preceden a la imagen CRA en el orden de salida, se denominan imágenes delanteras asociadas con la imagen CRA (o imágenes que van delante de la imagen CRA). Es decir, para mejorar la eficacia de la codificación, el concepto de imágenes CRA se introdujo en la HEVC para permitir que las imágenes, que van después de una imagen CRA en el orden de descodificación, pero preceden a la imagen CRA en el orden de salida, usen imágenes descodificadas antes de la imagen CRA como referencia. Una unidad de acceso CRA es una unidad de acceso en la que la imagen codificada es una imagen CRA.
[0071] Las imágenes que van delante de una imagen CRA se pueden descodificar correctamente si la descodificación comienza a partir de una imagen IDR o una imagen CRA que aparece antes de la imagen CRA en el orden de descodificación. Sin embargo, las imágenes que van delante de una imagen CRA pueden no ser descodificables cuando se produce un acceso aleatorio a partir de la imagen CRA. De ahí que un descodificador de vídeo típicamente descodifique las imágenes que van delante de una imagen CRA durante la descodificación de acceso aleatorio. Con objeto de impedir la propagación de errores a causa de imágenes de referencia que pueden no estar disponibles dependiendo de dónde comienza la descodificación, ninguna imagen que vaya después de una imagen CRA tanto en el orden de descodificación como en el orden de salida puede usar ninguna imagen que preceda a la imagen CRA en el orden de descodificación o en el orden de salida (lo cual incluye las imágenes delanteras) como referencia.
[0072] El concepto de una imagen de acceso de enlace roto (BLA) se introdujo en la HEVC después de la introducción de las imágenes CRA, y se basa en el concepto de las imágenes CRA. Una imagen BLA se origina típicamente a partir de un empalme de flujos de bits en la posición de una imagen CRA y, en el flujo de bits empalmado, la imagen CRA del punto de empalme se cambia por una imagen BLA. Una unidad de acceso que contiene una imagen RAP puede denominarse en el presente documento una unidad de acceso RAP. Una unidad de acceso BLA es una unidad de acceso que contiene una imagen BLA.
[0073] Una diferencia entre las imágenes BLA y las imágenes CRA es la siguiente. Para una imagen CRA, las imágenes delanteras asociadas se pueden descodificar correctamente si la descodificación comienza a partir de una imagen RAP anterior a la imagen CRA en el orden de descodificación. Sin embargo, las imágenes delanteras asociadas con una imagen CRA pueden no descodificarse correctamente cuando se produce un acceso aleatorio desde la imagen CRA (es decir, cuando la descodificación comienza a partir de la imagen CRA, o en otras palabras, cuando la imagen CRA es la primera imagen del flujo de bits). Por el contrario, puede que no haya un supuesto en el que las imágenes delanteras asociadas con una imagen BLA se puedan descodificar, incluso cuando la descodificación comienza a partir de una imagen RAP antes de la imagen BLA en el orden de descodificación.
[0074] Algunas de las imágenes delanteras asociadas con una imagen CRA particular o una imagen BLA particular se pueden descodificar correctamente incluso cuando la imagen CRA particular o la imagen BLA particular es la primera imagen de un flujo de bits. Estas imágenes delanteras pueden denominarse imágenes delanteras descodificables (DLP). Otras imágenes delanteras pueden denominarse imágenes delanteras no descodificables (NLP). El borrador de trabajo 8 de la HEVC también puede referirse a las NLP como imágenes marcadas para descartar (TFD).
[0075] Un VPS es una estructura de sintaxis que comprende elementos de sintaxis que se aplican a cero o más CVS enteros. Un SPS también es una estructura de sintaxis que comprende elementos de sintaxis que se aplican a cero o más CVS enteros. Un SPS puede incluir un elemento de sintaxis que identifica un VPS que está activo cuando el SPS está activo. De este modo, los elementos de sintaxis de un VPS pueden ser más aplicables, en general, que los elementos de sintaxis de un SPS.
[0076] Un conjunto de parámetros (por ejemplo, un VPS, SPS, PPS, etc.) puede contener una identificación a la que se hace referencia, de forma directa o indirecta, desde una cabecera de fragmento de un fragmento. El proceso de referencia se conoce como "activación". De este modo, cuando el descodificador de vídeo 30 está descodificando un fragmento particular, se dice que un conjunto de parámetros, al que un elemento de sintaxis de una cabecera de fragmento del fragmento particular hace referencia de forma directa o indirecta, se "activa". Dependiendo del tipo de conjunto de parámetros, la activación puede producirse por imagen o por secuencia. Por ejemplo, una cabecera de fragmento de un fragmento puede incluir un elemento de sintaxis que identifica un PPS. De este modo, cuando un codificador de vídeo codifica el fragmento, el PPS se puede activar. Además, el PPS puede incluir un elemento de sintaxis que identifica un SPS. De este modo, cuando se activa un PPS que identifica el SPS, el SPS se puede activar. El SPS puede incluir un elemento de sintaxis que identifica un VPS. De este modo, cuando se activa un SPS que identifica el VPS, el VPS se activa.
[0077] La HEVC y otras normas de codificación de vídeo especifican perfiles, grados y niveles. Los perfiles, grados y niveles especifican restricciones sobre los flujos de bits y, por lo tanto, límites sobre las capacidades necesarias para descodificar los flujos de bits. Los perfiles, grados y niveles también se pueden utilizar para indicar puntos de interoperabilidad entre implementaciones de descodificadores individuales. Cada perfil puede especificar un subconjunto de rasgos característicos y límites algorítmicos que se admiten en todos los descodificadores que cumplen con ese perfil. Los codificadores de vídeo no están obligados a aprovechar todos los rasgos característicos que se admiten en un perfil. Cada nivel de un grado puede especificar un conjunto de límites sobre los valores que pueden tener los elementos de sintaxis. El mismo conjunto de definiciones de grado y nivel puede usarse con todos los perfiles, pero las implementaciones individuales pueden admitir grados diferentes y, dentro de un grado, niveles diferentes para cada perfil admitido. Para cualquier perfil dado, un nivel de un grado en general puede corresponder a una carga de procesamiento y una capacidad de memoria de un descodificador en particular. Las capacidades de los descodificadores de vídeo se pueden especificar en términos de la capacidad de descodificar flujos de vídeo que se ajusten a las restricciones de perfiles, grados y niveles particulares. Para cada perfil de este tipo, también se pueden expresar el grado y el nivel admitidos para ese perfil. Es posible que algunos descodificadores de vídeo no puedan descodificar perfiles, grados o niveles particulares.
[0078] En HEVC, los perfiles, grados y niveles pueden señalizarse mediante la estructura de sintaxis profile_tier_level(). La estructura de sintaxis profile_tier_level() se puede incluir en un VPS y/o un SPS. La estructura de sintaxis de profile_tier_level() puede incluir un elemento de sintaxis general_profile_idc, un elemento de sintaxis general_tier_flag y un elemento de sintaxis general_level_idc. El elemento de sintaxis general_profile_idc puede indicar un perfil con el que se ajusta una CVS. El elemento de sintaxis general_tier_flag puede indicar un contexto de grado para la interpretación del elemento de sintaxis genera ljeve ljdc. El elemento de sintaxis genera ljeve ljdc puede indicar un nivel con el que se ajusta una CVS. Otros valores para estos elementos de sintaxis pueden ser reservados.
[0079] Las capacidades de los descodificadores de vídeo se pueden especificar en términos de la capacidad de descodificar flujos de vídeo que se ajusten a las restricciones de perfiles, grados y niveles. Para cada perfil de este tipo, también se pueden expresar el grado y el nivel admitidos para ese perfil. En algunos ejemplos, los descodificadores de vídeo no infieren que un valor reservado del elemento de sintaxis general_profile_idc entre los valores especificados en HEVC indica capacidades intermedias entre los perfiles especificados. Sin embargo, los descodificadores de vídeo pueden inferir que un valor reservado del elemento de sintaxis genera ljeve ljdc asociado con un valor particular del elemento de sintaxis general_tier_flag entre los valores especificados en HEVC indica capacidades intermedias entre los niveles especificados del grado.
[0080] Uno o más flujos de bits HEVC se pueden almacenar en un archivo que se ajusta a un formato de archivo en particular. En algunos ejemplos, uno o más flujos de bits de datos de vídeo (por ejemplo, flujos de bits HEVC) se pueden almacenar en un archivo que se ajusta a un formato de archivo de medios de base ISO (ISOBMFF). ISOBMFF también puede denominarse ISO/CEI 14496-12. Otros formatos de archivo de ejemplo para el almacenamiento de flujos de bits de datos de vídeo incluyen formatos de archivo obtenidos a partir de ISOBMFF, incluido el formato de archivo MPEG-4 (ISO/CEI 14496-14), el formato de archivo del Proyecto de Colaboración de Tercera Generación (3GPP) (3GPP TS 26.244), y el formato de archivo AVC (ISO/CEI 14496-15). El MPEG está desarrollando una modificación del formato de archivo AVC para el almacenamiento de contenido de vídeo HEVC. Esta modificación del formato de archivo AVC puede denominarse formato de archivo HEVC. Es decir, el formato de archivo HEVC está siendo desarrollado por el MPEG, que se está convirtiendo en parte de ISO/CEI 14496-15.
[0081] Un archivo que se ajuste al formato de archivo HEVC pueden tener una estructura lógica, una estructura de tiempo y una estructura física. La estructura lógica del archivo puede ser la de una película que contiene un conjunto de pistas paralelas de tiempo. La estructura temporal del archivo es que las pistas contienen secuencias de muestras en el tiempo. Las secuencias de muestras se pueden asignar en una línea de tiempo de la película mediante listas de edición. En el contexto del formato de archivo HEVC, una "muestra" puede comprender datos asociados con una sola marca de tiempo. Entre los ejemplos de una muestra se incluyen: una trama de vídeo individual, una serie de tramas de vídeo en el orden de descodificación, o una sección comprimida de audio en el orden de descodificación.
[0082] Físicamente, un archivo que se ajusta al formato de archivo HEVC puede comprender una serie de objetos, denominados recuadros. Un recuadro puede ser un bloque de construcción orientado a objetos definido por un identificador de tipo único y una longitud. En algunos casos, todos los datos de un archivo que se ajusta al formato de archivo HEVC pueden estar contenidos dentro de recuadros y puede no haber ningún dato en el archivo que no esté en un recuadro. Un archivo que se ajuste al formato de archivo HEVC puede incluir diversos tipos de recuadros.
[0083] Por ejemplo, un archivo que se ajuste al formato de archivo HEVC puede incluir un recuadro de tipo de archivo, un recuadro de datos de medios, un recuadro de película, un recuadro de fragmento de película, etc. En este ejemplo, un recuadro de tipo de archivo incluye el tipo de archivo e información de compatibilidad. Un recuadro de datos de medios puede contener muestras (por ejemplo, imágenes codificadas). Un recuadro de película puede contener metadatos relacionados con una película (por ejemplo, relaciones lógicas y de tiempo entre muestras, y también punteros a ubicaciones de muestras). Los recuadros de películas pueden incluir varios tipos de subrecuadros. Los subrecuadros de los recuadros de películas pueden incluir uno o más recuadros de pista. Un recuadro de pista puede incluir información sobre una pista individual de una película. Un recuadro de pista puede incluir un recuadro de cabecera de pista que especifica información global de una única pista. Además, un recuadro de pista puede incluir un recuadro de medios que contiene un recuadro de información de medios. El recuadro de información de medios puede incluir un recuadro de la tabla de muestras que contiene una indexación de datos de las muestras de medios de la pista. La información del recuadro de la tabla de muestras se puede usar para localizar muestras en el tiempo y, para cada una de las muestras de la pista, un tipo, tamaño, contenedor y desplazamiento en ese contenedor de la muestra.
[0084] Un recuadro tabla de muestras puede incluir uno o más recuadros SampleToGroup y uno o más recuadros descripción de grupo de muestras (es decir, recuadros SampleGroupDescription). Se puede usar un recuadro SampleToGroup para determinar un grupo de muestras al que pertenece una muestra, junto con una descripción asociada del grupo de muestras. En otras palabras, un recuadro SampleToGroup puede indicar un grupo al que pertenece una muestra. Un recuadro SampleToGroup puede tener un tipo de recuadro "sbgp". Un recuadro SampleToGroup puede incluir un elemento del tipo de agrupación (por ejemplo, grouping_type). El elemento del tipo de agrupación puede ser un número entero que identifica un tipo (es decir, un criterio usado para formar los grupos de muestras) de una agrupación de muestras. Además, un recuadro SampleToGroup puede incluir una o más entradas. Cada entrada de un recuadro SampleToGroup puede asociarse con una serie diferente, no superpuesta, de muestras consecutivas de la pista. Cada entrada puede indicar un elemento de recuento de muestras (por ejemplo, sample_count) y un elemento de índice de descripción de grupo (por ejemplo, group_description_index). El elemento del recuento de muestras de una entrada puede indicar un número de muestras asociadas con la entrada. En otras palabras, el elemento del recuento de muestras de la entrada puede ser un número entero que proporciona el número de muestras consecutivas con el mismo descriptor de grupo de muestras. El elemento del índice de descripción de grupo puede identificar un recuadro SampleGroupDescription que contiene una descripción de las muestras asociadas con la entrada. Los elementos del índice de descripción de grupo de múltiples entradas pueden identificar el mismo recuadro SampleGroupDescription.
[0085] En algunos ejemplos, el siguiente pseudocódigo describe un recuadro SampleToGroup.
aligned(S) clisa SampleToGroupBox
expenda rull3ox (' sbgpf t veraiün = 1, 0]
uns ig n ed int (3 Z) g roupin(j_type;
unsigned int(3 2) ent ry^count;
í o r (1 -1 : i < - * n t :y _ c ü ü n c : i+ e j
f
unsi gned int (32 } s ample_COunt;
unaigned ira{32} grc-up_di3cripri:'ii_indi:í:
}
[0086] Como se indica anteriormente, un recuadro de la tabla de muestras puede incluir cero o más recuadros SampleGroupDescription. Un recuadro SampleGroupDescription puede incluir una descripción de un grupo de muestras. Puede haber múltiples instancias del recuadro SampleGroupDescription si hay más de una agrupación de muestras para las muestras en una pista. Un recuadro SampleGroupDescription puede tener un tipo de recuadro de "sgpd".
[0087] En algunos ejemplos, el siguiente pseudocódigo describe un recuadro SampleGroupDescription.
aligned(S) ciass SampLeGroupDescriptionBox (unsigned inc(32)
handle r_t yee)
extenás FullBox{Jsgpd ' , 0, 0J{
unsigned int(31) grouping_type;
ur.signed mt ( 32) entry_count;
int i;
for (i = l ; l <= enjDry_count ; i4+){
ivitch (handler_type)(
case 'vide': ¡ t for video cracks
VisualSaitpleGr oiipEnt ry () ;
break;
case rsoun': ¡ ! for audio trac Íes
AudloSampleGioupEntry O
brea!;;
case Jhintr: H for hiñe cracks
HintSñnpleGroupintzy{) ;
breafc;
I
[0088] Como se muestra en el pseudocódigo anterior, un recuadro de SampleGroupDescription puede incluir un elemento grouping_type, un elemento entry_count y una o más entradas. El elemento grouping_type de un SampleGroupDescriptionBox puede ser un número entero que identifica un recuadro SampleToGroup que está asociado con el recuadro SampleGroupDescription. El elemento entry_count puede indicar un número de entradas en el recuadro SampleGroupDescription. Cada entrada en el recuadro SampleGroupDescription puede incluir un objeto VisualSampleGroupEntry, un objeto AudioSampleGroupEntry o un objeto HintSampleGroupEntry. Un objeto VisualSampleGroupEntry puede proporcionar una descripción sobre un grupo de muestras visuales (por ejemplo, vídeo). Un objeto AudioSampleGroupEntry puede proporcionar una descripción sobre un grupo de muestras de audio. Un objeto HintSampleGroupEntry puede proporcionar una descripción sobre un grupo de muestras de indicaciones. Los objetos VisualSampleGroupEntry y los objetos AudioSampleGroupEntry pueden pertenecer a una clase abstracta que extienda una clase abstracta SampleGroupDescriptionEntry.
[0089] Por otra parte, un recuadro de la tabla de muestras puede incluir un recuadro de descripción de muestras que comprende una descripción de formato para un flujo. En particular, el recuadro de descripción de muestras puede incluir una lista de una o más entradas de muestras. Cada una de las entradas de muestras puede contener un nombre de un tipo de medio (por ejemplo, un tipo de descodificador necesario para descodificar el flujo) y cualquier parametrización de ese descodificador necesaria. Por ejemplo, en el contexto de la HEVC, una entrada de muestras puede incluir un registro de configuración del descodificador HEVC. De este modo, un registro de configuración del descodificador HEVC puede ser un subrecuadro de un recuadro de la tabla de muestras. Un registro de configuración del descodificador HEVC puede incluir información de configuración de descodificador para el contenido de vídeo ISO/CEI 23008-2 (es decir, HEVC). Por ejemplo, un registro de configuración del descodificador HEVC puede incluir una o más unidades de NAL que contienen conjuntos de parámetros (por ejemplo, VPS, SPS, PPS, etc.)
[0090] Como se indica anteriormente, un archivo que se ajuste al formato de archivo HEVC puede incluir un recuadro de fragmento de película. Un recuadro de fragmento de película puede contener metadatos relacionados con un fragmento de película (es decir, un fragmento de una película). Un recuadro de fragmento de película puede incluir un recuadro de fragmento de pista que incluye información sobre un fragmento de una pista de un fragmento de película. Además, un recuadro fragmento de pista puede incluir uno o más recuadros SampleToGroup que pueden indicar grupos de muestras a los que pertenecen las muestras de un fragmento de película.
[0091] En el ejemplo de la FIG. 1, el sistema de codificación de vídeo 10 incluye un elemento de red sensible al medio (MANE) 27. El MANE 27 puede recibir datos de vídeo generados por el dispositivo de origen 12 y puede reenviar datos de vídeo al dispositivo de destino 14. El MANE 27 (u otro tipo de dispositivo) puede aplicar una reducción del flujo de bits a un flujo de bits HEVC que está codificado con múltiples subcapas. En cualquier punto del flujo de bits, el MANE 27 puede comenzar a eliminar unidades de NAL de subcapas superiores (es decir, subcapas asociadas con identificadores temporales más altos) basándose en el hecho de que las imágenes en las subcapas inferiores (es decir, subcapas asociadas con identificadores temporales más bajos) aún son descodificables porque el proceso de descodificación de las imágenes en las subcapas inferiores no depende de las unidades de NAL de las subcapas superiores. La acción de eliminar todas las unidades de NAL con identificadores temporales superiores a un determinado valor puede denominarse conmutación temporal descendente. La conmutación temporal descendente siempre puede ser posible. De este modo, el término punto de conmutación de subcapa temporal puede referirse a una imagen que no depende de ninguna otra imagen que esté en la misma subcapa que la imagen y que preceda a la imagen en el orden de descodificación.
[0092] El término "conmutación temporal ascendente" puede referirse a la acción de empezar a reenviar unidades de nA l de una determinada subcapa que no han sido reenviadas hasta ese punto. La conmutación temporal ascendente puede ser posible solo si ninguna de las imágenes en la capa que se conmuta depende de alguna imagen en la misma subcapa antes del punto en el flujo de bits en el que se realizó la conmutación.
[0093] En la extensión de codificación de vídeo escalable de la norma de codificación de vídeo H.264/AVC (es decir, H.264/SVC), los puntos de conmutación de subcapa temporal se pueden indicar a través de elementos de sintaxis temporal_id_nesting_flag en los SPS. Por ejemplo, si un elemento de sintaxis temporal_id_nesting_flag en un SPS aplicable a una CVS particular es igual a 1, todas las imágenes en la CVS con identificadores temporales mayores que 0 pueden ser puntos de conmutación de capa temporal. Además, en H.264/SVC, los mensajes SEI del punto de conmutación de nivel temporal pueden indicar puntos de conmutación de subcapa temporal. En algunos ejemplos en los que los mensajes SEI del punto de conmutación de nivel temporal indican puntos de conmutación de subcapa temporal, un mensaje SEI del punto de conmutación de nivel temporal puede contener información sobre cuánto tiempo debería haberse descodificado una capa temporal de período M antes de un punto de conmutación para conmutar a la capa temporal M 1 en el punto de conmutación.
[0094] En HEVC, así como en H.264/SVC, un SPS puede incluir un elemento de sintaxis sps_temporal_id_nesting_flag. Cuando el elemento de sintaxis sps_temporal_id_nesting_flag tiene un valor igual a 1, todas las imágenes con identificadores temporales mayores que 0 son puntos de conmutación de subcapa. En HEVC, puede haber dos tipos de imágenes asociados con los puntos de conmutación de subcapa, concretamente, el tipo de imagen de acceso a una subcapa temporal (TSA) y el tipo de imagen de acceso a una subcapa temporal de forma escalonada (STSA). Los tipos de imágenes TSA y STSA pueden utilizarse para indicar puntos de conmutación de subcapa temporal.
[0095] Una imagen TSA y las imágenes que van después de la imagen TSA en el orden de descodificación no utilizan imágenes con identificadores temporales iguales o mayores que los de la imagen TSA como referencia para la interpredicción. Una imagen TSA permite la conmutación ascendente, en la imagen TSA, a la subcapa que contiene la imagen TSA o cualquier subcapa superior, desde la subcapa inmediatamente inferior. En algunos ejemplos, todas las imágenes TSA tienen identificadores temporales mayores que 0.
[0096] Una imagen STSA no utiliza imágenes con el mismo TemporalId que la imagen STSA como referencia para la interpredicción. Las imágenes que van después de una imagen STSA en el orden de descodificación con el mismo identificador temporal que la imagen STSA no usan imágenes antes de la imagen STSA en el orden de descodificación con el mismo identificador temporal que la imagen STSA como referencia para la interpredicción. Una imagen STSA permite la conmutación ascendente, en la imagen STSA, a la subcapa que contiene la imagen STSA, desde la subcapa inmediatamente inferior. En algunos ejemplos, todas las imágenes STSA tienen identificadores temporales mayores que 0. De este modo, a diferencia de una imagen TSA, una imagen STSA no habilita necesariamente la conmutación ascendente a alguna subcapa superior. En lugar de eso, una imagen STSA solo habilita la conmutación ascendente a la subcapa que contiene la imagen STSA.
[0097] Hay varios problemas o deficiencias con los diseños existentes del formato de archivo para el almacenamiento de contenido HEVC. Por ejemplo, no hay una forma compacta de señalizar muestras que contengan imágenes STSA (también conocidas como muestras STSA). En otro ejemplo, puede que no haya una forma eficaz de señalizar muestras que contengan intraimágenes. La señalización de muestras que contienen intraimágenes puede permitir determinados tipos de reproducción con control de movimiento que solo usan intraimágenes. En otro ejemplo, puede que no haya una forma eficaz de señalizar si se puede realizar una conmutación temporal ascendente de subcapa a cualquier capa temporal superior en cualquier muestra.
[0098] De acuerdo con una técnica de ejemplo de la presente divulgación, un grupo de muestras, denominado grupo de muestras de acceso a una subcapa temporal de forma escalonada, para el cual el tipo de agrupación de muestras puede ser "STSA", marca muestras STSA. Con este mecanismo, un codificador de vídeo u otro dispositivo puede identificar fácilmente muestras STSA.
[0099] De acuerdo con esta técnica de ejemplo, un dispositivo (por ejemplo, el codificador de vídeo 20 u otro dispositivo) puede generar un archivo que comprende una pluralidad de muestras que contienen imágenes codificadas. El archivo también puede incluir un recuadro (por ejemplo, un SampleToGroupBox) que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. El recuadro indica además que cada muestra del grupo de muestras es una muestra STSA. En algunos ejemplos, el dispositivo puede generar el archivo. En dichos ejemplos, una interfaz de salida (por ejemplo, una interfaz de red, una interfaz de disco o de unidad, un sistema de acceso a memoria, etc.) del dispositivo puede generar el archivo.
[0100] De manera similar, un dispositivo (por ejemplo, descodificador de vídeo 30 u otro dispositivo) puede identificar muestras STSA, basándose en los datos de un recuadro que identifica un grupo de muestras, de entre las muestras en un archivo que contiene el recuadro. En algunos ejemplos, una interfaz de entrada (por ejemplo, una interfaz de red, una interfaz de disco o unidad, un sistema de acceso a la memoria, etc.) del dispositivo puede recibir el archivo que contiene el recuadro que identifica al grupo de muestras. Además, en algunos ejemplos, el dispositivo puede realizar una conmutación temporal ascendente en una de las muestras STSA del grupo de muestras. Además, en algunos ejemplos, el descodificador de vídeo 30 puede descodificar una o más de las muestras STSA.
[0101] Además, de acuerdo con algunas técnicas de ejemplo de la presente divulgación, un grupo de muestras, denominado grupo de muestras de intraimágenes (es decir, una entrada de agrupación de muestras de intraimágenes), para el cual el tipo de agrupación de muestras puede ser “ ipsg”, está diseñado para marcar muestras que contienen imágenes intracodificadas (también denominadas intramuestras). De este modo, una pista de vídeo HEVC puede contener cero o una instancia de un SampleToGroupBox con un elemento grouping_type de "ipsg". Con este mecanismo, las muestras que contienen imágenes intracodificadas se pueden identificar fácilmente, solo a través del grupo de muestras de intraimágenes. El descodificador de vídeo 30 puede descodificar una o más de las imágenes intracodificadas.
[0102] De forma alternativa, el grupo de muestras de intraimágenes solo marca las muestras que contienen imágenes intracodificadas que no son RAP, es decir, intraimágenes que no son imágenes RAP como se define en el borrador de trabajo 8 de la HEVC. Con este mecanismo, las muestras que contienen imágenes intracodificadas se pueden identificar fácilmente, a través de la tabla de muestras sincronizadas, que marca todas las muestras que contienen imágenes RAP, como a través del grupo de muestras de intraimágenes. De esta manera, un dispositivo (por ejemplo, un codificador de vídeo 20 u otro dispositivo) puede generar un archivo que comprende imágenes intracodificadas sin punto de acceso aleatorio (no RAP), en el que un grupo de muestras marca las imágenes intracodificadas que no son RAP en el archivo.
[0103] Además, de acuerdo con algunos ejemplos de técnicas de la presente divulgación, si se puede realizar una conmutación temporal ascendente de subcapa a cualquier capa temporal superior en cualquier muestra, se señaliza en una entrada de muestras, por ejemplo, usando un indicador. En algunos ejemplos, el codificador de vídeo 20 u otro dispositivo puede generar un registro (por ejemplo, un registro de configuración del descodificador HEVC) que incluye un elemento. El elemento que tiene un primer valor indica que la conmutación temporal ascendente de subcapa a cualquier capa temporal superior se puede realizar en cualquier muestra. El elemento que tiene un segundo valor indica que no se garantiza que se pueda realizar la conmutación temporal ascendente de subcapa a cualquier capa temporal superior en cualquier muestra. Además, en algunos ejemplos, cuando el elemento tiene el primer valor, todos los SPS que se activan cuando se descodifica un flujo al que se aplica el registro tienen elementos de sintaxis que indican si se puede realizar la conmutación temporal ascendente de subcapa a cualquier capa temporal superior en cualquier muestra.
[0104] De esta manera, un dispositivo (por ejemplo, el codificador de vídeo 20 u otro dispositivo) puede generar un archivo que almacena muestras codificadas que contienen imágenes codificadas de los datos de vídeo. El archivo también puede incluir un recuadro que incluye un registro (por ejemplo, un registro de configuración de descodificador, tal como un registro de configuración del descodificador HEVC) que incluye un elemento que indica si todos los SPS que se activan cuando un flujo al que se aplica el registro se descodifica tienen elementos de sintaxis que indican que la conmutación temporal ascendente de subcapa a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS. En algunos ejemplos, una interfaz de salida (por ejemplo, una interfaz de red, una interfaz de disco o de unidad, un sistema de acceso a memoria, etc.) del dispositivo puede generar el archivo. Por consiguiente, un dispositivo (por ejemplo, el descodificador de vídeo 30 u otro dispositivo) puede determinar, basándose en un elemento de un registro (por ejemplo, un registro de configuración de descodificador, tal como un registro de configuración del descodificador HEVC) en un recuadro de un archivo que contiene muestras que contienen imágenes codificadas de los datos de vídeo, que todos los SPS que se activan cuando se descodifica un flujo al que se aplica el registro tienen elementos de sintaxis que indican que la conmutación temporal ascendente de subcapa a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS. En algunos ejemplos, una interfaz de entrada (por ejemplo, una interfaz de red, una interfaz de disco o de unidad, un sistema de acceso a memoria, etc.) del dispositivo puede recibir el archivo que contiene las muestras que contienen las imágenes codificadas de los datos de vídeo. Además, en algunos ejemplos, el dispositivo puede realizar una conmutación temporal ascendente en una muestra asociada con uno de los SPS.
[0105] Las técnicas de la presente divulgación también pueden aplicarse a otro contenido de vídeo codificado utilizando códecs de vídeo distintos de la HEVC.
[0106] La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo 20 que puede implementar las técnicas de la presente divulgación. La FIG. 2 se proporciona con propósitos explicativos y no se debería considerar limitante de las técnicas ampliamente ejemplificadas y descritas en la presente divulgación. Con propósitos explicativos, la presente divulgación describe un codificador de vídeo 20 en el contexto de la codificación HEVC. Sin embargo, las técnicas de la presente divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0107] En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una unidad de procesamiento de predicción 100, una unidad de generación residual 102, una unidad de procesamiento de transformada 104, una unidad de cuantificación 106, una unidad de cuantificación inversa 108, una unidad de procesamiento de transformada inversa 110, una unidad de reconstrucción 112, una unidad de filtro 114, un búfer de imágenes descodificadas 116 y una unidad de codificación por entropía 118. La unidad de procesamiento de predicción 100 incluye una unidad de procesamiento de interpredicción 120 y una unidad de procesamiento de intrapredicción 126. La unidad de procesamiento de interpredicción 120 incluye una unidad de estimación de movimiento 122 y una unidad de compensación de movimiento 124. En otros ejemplos, el codificador de vídeo 20 puede incluir más, menos o diferentes componentes funcionales.
[0108] El codificador de vídeo 20 puede recibir datos de vídeo. El codificador de vídeo 20 puede codificar cada CTU en un fragmento de una imagen de los datos de vídeo. El codificador de vídeo 20 puede codificar las CU de una CTU para generar representaciones codificadas de las CU (es decir, CU codificadas). Como parte de la codificación de una CU, la unidad de procesamiento de predicción 100 puede dividir los bloques de codificación asociados a la CU entre una o más PU de la CU. De este modo, cada PU puede estar asociada a un bloque de predicción de luma y a bloques de predicción de croma correspondientes. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden admitir PU que tienen diversos tamaños. El tamaño de una CU se puede referir al tamaño del bloque de codificación de luma de la CU, y el tamaño de una PU se puede referir al tamaño de un bloque de predicción de luma de la PU. Suponiendo que el tamaño de una CU particular es de 2Nx2N, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden admitir tamaños de PU de 2Nx2N o NxN para la intrapredicción, y tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, o similares, para la interpredicción. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden admitir una división asimétrica para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N para la interpredicción.
[0109] La unidad de procesamiento de interpredicción 120 puede generar datos predictivos para una PU realizando una interpredicción en cada PU de una CU. Los datos predictivos para la PU pueden incluir bloques predictivos de la PU e información de movimiento para la PU. La unidad de procesamiento de interpredicción 120 puede realizar diferentes operaciones para una PU de una CU dependiendo de si la PU está en un fragmento I, un fragmento P o un fragmento B. En un fragmento I, todas las PU se intrapredicen. De ahí que, si la PU está en un fragmento I, la unidad de procesamiento de interpredicción 120 no realiza interpredicción en la PU.
[0110] Si una PU está en un fragmento P, la unidad de estimación de movimiento 122 puede buscar las imágenes de referencia en una lista de imágenes de referencia (por ejemplo, “RefPicList0”) para una zona de referencia de la PU. La zona de referencia de la PU puede ser una zona, dentro de una imagen de referencia, que contiene bloques de muestras que se corresponden más estrictamente con los bloques de predicción de la PU. La unidad de estimación de movimiento 122 puede generar un índice de referencia que indica una posición en la RefPicList0 de la imagen de referencia que contiene la zona de referencia de la PU. Además, la unidad de estimación de movimiento 122 puede generar un vector de movimiento que indica un desplazamiento espacial entre un bloque de codificación de la PU y una ubicación de referencia asociada con la zona de referencia. Por ejemplo, el vector de movimiento puede ser un vector bidimensional que proporciona una desviación desde las coordenadas en la imagen actual a las coordenadas en una imagen de referencia. La unidad de estimación de movimiento 122 puede proporcionar el índice de referencia y el vector de movimiento como información de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar los bloques predictivos de la PU basándose en muestras reales o interpoladas en la ubicación de referencia indicada por el vector de movimiento de la PU.
[0111] Si una PU está en un fragmento B, la unidad de estimación de movimiento 122 puede realizar una predicción unidireccional o una predicción bidireccional de la PU. Para realizar una predicción unidireccional de la PU, la unidad de estimación de movimiento 122 puede buscar las imágenes de referencia de la RefPicList0 o una segunda lista de imágenes de referencia (“RefPicList1”) en una zona de referencia de la PU. La unidad de estimación de movimiento 122 puede emitir, como información de movimiento de la PU, un índice de referencia que indica una posición en la RefPicList0 o la RefPicList1 de la imagen de referencia que contiene la zona de referencia, un vector de movimiento que indica un desplazamiento espacial entre un bloque de predicción de la PU y una ubicación de referencia asociada con la zona de referencia, y uno o más indicadores de dirección de predicción que indican si la imagen de referencia está en la RefPicList0 o en la RefPicList1. La unidad de compensación de movimiento 124 puede generar los bloques predictivos de la PU basándose, al menos en parte, en muestras reales o interpoladas en la ubicación de referencia indicada por el vector de movimiento de la PU.
[0112] Para realizar una interpredicción bidireccional de una PU, la unidad de estimación de movimiento 122 puede buscar en las imágenes de referencia de la RefPicList0 una zona de referencia de la PU y también puede buscar en las imágenes de referencia de la RefPicList1 otra zona de referencia de la PU. La unidad de estimación de movimiento 122 puede generar índices de referencia que indiquen posiciones en la RefPicList0 y en la RefPicList1 de las imágenes de referencia que contienen las zonas de referencia. Además, la unidad de estimación de movimiento 122 puede generar vectores de movimiento que indican desplazamientos espaciales entre las ubicaciones de referencia asociadas con las zonas de referencia y un bloque de predicción de la PU. La información de movimiento de la PU puede incluir los índices de referencia y los vectores de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar los bloques predictivos de la PU basándose, al menos en parte, en muestras reales o interpoladas en las ubicaciones de referencia indicadas por los vectores de movimiento de la PU.
[0113] La unidad de procesamiento de intrapredicción 126 puede generar datos predictivos para una PU realizando una intrapredicción en la PU. Los datos predictivos para la PU pueden incluir bloques predictivos para la PU y diversos elementos de sintaxis. La unidad de procesamiento de intrapredicción 126 puede realizar una intrapredicción en las PU en fragmentos I, fragmentos P y fragmentos B.
[0114] Para realizar la intrapredicción en una PU, la unidad de procesamiento de intrapredicción 126 puede usar múltiples modos de intrapredicción para generar múltiples conjuntos de bloques predictivos de la PU. Cuando se realiza la intrapredicción usando un modo particular de intrapredicción, la unidad de procesamiento de intrapredicción 126 puede generar bloques predictivos para la PU usando un conjunto particular de muestras de bloques contiguos. Los bloques contiguos pueden estar arriba, arriba y a la derecha, arriba y a la izquierda, o a la izquierda de los bloques de predicción de la PU, suponiendo un orden de codificación de izquierda a derecha y de arriba a abajo para las PU, CU y CTU. La unidad de procesamiento de intrapredicción 126 puede usar diversos números de modos de intrapredicción, por ejemplo, 33 modos de intrapredicción direccional. En algunos ejemplos, el número de modos de intrapredicción puede depender del tamaño de los bloques de predicción de la PU.
[0115] La unidad de procesamiento de predicción 100 puede seleccionar los datos predictivos para las PU de una Cu de entre los datos predictivos generados por la unidad de procesamiento de interpredicción 120 para las PU, o los datos predictivos generados por la unidad de procesamiento de intrapredicción 126 para las PU. En algunos ejemplos, la unidad de procesamiento de predicción 100 selecciona los datos predictivos para las PU de la CU en base a unas métricas de velocidad/distorsión de los conjuntos de datos predictivos. Los bloques predictivos de los datos predictivos seleccionados pueden denominarse en el presente documento bloques predictivos seleccionados.
[0116] La unidad de generación residual 102 puede generar, basándose en el bloque de codificación de luma, Cb y Cr de una CU y los bloques predictivos seleccionados de luma, Cb y Cr de las PU de la CU, bloques residuales de luma, Cb y Cr de la CU. Por ejemplo, la unidad de generación residual 102 puede generar los bloques residuales de la CU de manera que cada muestra en los bloques residuales tenga un valor igual a una diferencia entre una muestra en un bloque de codificación de la CU y una muestra correspondiente en un bloque predictivo seleccionado correspondiente de una PU de la CU.
[0117] La unidad de procesamiento de transformada 104 puede realizar una partición de árbol cuaternario para dividir los bloques residuales de una CU en bloques de transformada asociados a las TU de la CU. De este modo, una TU puede estar asociada a un bloque de transformada de luma y dos bloques de transformada de croma correspondientes. Los tamaños y las posiciones de los bloques de transformada de luma y croma de las TU de una CU pueden o no estar basados en los tamaños y las posiciones de bloques de predicción de las PU de la CU.
[0118] La unidad de procesamiento de transformada 104 puede generar bloques de coeficientes de transformada para cada TU de una CU aplicando una o más transformadas a los bloques de transformada de la TU. La unidad de procesamiento de transformada 104 puede aplicar diversas transformadas a un bloque de transformada asociado a una TU. Por ejemplo, la unidad de procesamiento de transformada 104 puede aplicar una transformada discreta del coseno (DCT), una transformada direccional o una transformada conceptualmente similar a un bloque de transformada. En algunos ejemplos, la unidad de procesamiento de transformada 104 no aplica transformadas a un bloque de transformada. En dichos ejemplos, el bloque de transformada se puede tratar como un bloque de coeficientes de transformada.
[0119] La unidad de cuantificación 106 puede cuantificar los coeficientes de transformada en un bloque de coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes de transformada. Por ejemplo, un coeficiente de transformada de n bits se puede redondear hasta un coeficiente de transformada de m bits durante la cuantificación, donde n es mayor que m. La unidad de cuantificación 106 puede cuantificar un bloque de coeficientes asociado a una TU de una CU en base a un valor del parámetro de cuantificación (QP) asociado a la CU. El codificador de vídeo 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes asociados a una CU, ajustando el valor de QP asociado a la CU. La cuantificación puede introducir pérdida de información, por lo que los coeficientes de transformada cuantificados pueden tener una precisión menor que los originales.
[0120] La unidad de cuantificación inversa 108 y la unidad de procesamiento de transformada inversa 110 pueden aplicar una cuantificación inversa y transformadas inversas a un bloque de coeficientes, respectivamente, para reconstruir un bloque residual a partir del bloque de coeficientes. La unidad de reconstrucción 112 puede añadir el bloque residual reconstruido a las muestras correspondientes de uno o más bloques predictivos generados por la unidad de procesamiento de predicción 100 para producir un bloque de transformada reconstruido asociado a una TU. Reconstruyendo bloques de transformada para cada TU de una CU de esta manera, el codificador de vídeo 20 puede reconstruir los bloques de codificación de la CU.
[0121] La unidad de filtro 114 puede realizar una o más operaciones de reducción del efecto bloque para reducir los artefactos de bloque en los bloques de codificación asociados a una CU. El búfer de imágenes descodificadas 116 puede almacenar los bloques de codificación reconstruidos después de que la unidad de filtro 114 realice las una o más operaciones de reducción del efecto bloque en los bloques de codificación reconstruidos. La unidad de procesamiento de interpredicción 120 puede usar una imagen de referencia que contiene los bloques de codificación reconstruidos para realizar una interpredicción en las PU de otras imágenes. Además, la unidad de procesamiento de intrapredicción 126 puede usar bloques de codificación reconstruidos del búfer de imágenes descodificadas 116 para realizar una intrapredicción en otras PU de la misma imagen que la CU.
[0122] La unidad de codificación por entropía 118 puede recibir datos desde otros componentes funcionales del codificador de vídeo 20. Por ejemplo, la unidad de codificación por entropía 118 puede recibir bloques de coeficientes desde la unidad de cuantificación 106 y puede recibir elementos de sintaxis desde la unidad de procesamiento de predicción 100. La unidad de codificación por entropía 118 puede realizar una o más operaciones de codificación por entropía en los datos para generar datos codificados por entropía. Por ejemplo, la unidad de codificación por entropía 118 puede realizar una operación de codificación de longitud variable adaptativa al contexto (CAVLC), una operación CABAC, una operación de codificación de longitud variable a variable (V2V), una operación de codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), una operación de codificación entrópica por división de intervalos de probabilidad (PIPE), una operación de codificación Golomb exponencial u otro tipo de operación de codificación por entropía en los datos. El codificador de vídeo 20 puede emitir un flujo de bits que incluye datos codificados por entropía, generados por la unidad de codificación por entropía 118.
[0123] En algunos ejemplos, el codificador de vídeo 20 puede generar un archivo que incluye el flujo de bits. De acuerdo con una o más técnicas de la presente divulgación, el archivo puede comprender una pluralidad de muestras que contienen imágenes codificadas. El archivo también puede comprender un recuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. El recuadro puede indicar además que cada muestra del grupo de muestras es una muestra STSA. Además, de acuerdo con una o más técnicas de la presente divulgación, el archivo puede almacenar muestras codificadas que contienen imágenes codificadas de datos de vídeo. El archivo también puede incluir un recuadro que incluye un registro que incluye un elemento que indica si todos los SPS que se activan cuando se descodifica un flujo al que se aplica el registro tienen elementos de sintaxis que indican que la conmutación temporal ascendente de subcapa a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0124] La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo 30 que está configurado para implementar las técnicas de la presente divulgación. La FIG. 3 se proporciona con propósitos explicativos y no se limita a las técnicas ampliamente ejemplificadas y descritas en la presente divulgación. Con propósitos explicativos, esta divulgación describe un descodificador de vídeo 30 en el contexto de la codificación HEVC. Sin embargo, las técnicas de la presente divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0125] En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 150, una unidad de procesamiento de predicción 152, una unidad de cuantificación inversa 154, una unidad de procesamiento de transformada inversa 156, una unidad de reconstrucción 158, una unidad de filtro 160 y un búfer de imágenes descodificadas 162. La unidad de procesamiento de predicción 152 incluye una unidad de compensación de movimiento 164 y una unidad de procesamiento de intrapredicción 166. En otros ejemplos, el descodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
[0126] Un búfer de imágenes codificadas (CPB) 151 puede recibir y almacenar datos de vídeo codificados (por ejemplo, unidades de NAL) de un flujo de bits. La unidad de descodificación por entropía 150 puede recibir unidades de NAL de la CPB 151 y analizar las unidades de NAL para obtener elementos de sintaxis a partir del flujo de bits. La unidad de descodificación por entropía 150 puede descodificar por entropía elementos de sintaxis codificados por entropía en las unidades de NAL. La unidad de procesamiento de predicción 152, la unidad de cuantificación inversa 154, la unidad de procesamiento de transformada inversa 156, la unidad de reconstrucción 158 y la unidad de filtro 160 pueden generar datos de vídeo descodificados basándose en los elementos de sintaxis obtenidos a partir del flujo de bits.
[0127] Las unidades de NAL del flujo de bits pueden incluir unidades de NAL de fragmentos codificados. Como parte de la descodificación del flujo de bits, la unidad de descodificación por entropía 150 puede analizar y descodificar por entropía elementos de sintaxis de las unidades de NAL de fragmentos codificados. Cada uno de los fragmentos codificados puede incluir una cabecera de fragmento y datos de fragmento. La cabecera de fragmento puede contener elementos de sintaxis pertenecientes a un fragmento.
[0128] Además de descodificar elementos de sintaxis del flujo de bits, el descodificador de vídeo 30 puede realizar una operación de descodificación en una CU. Al realizar la operación de descodificación en una CU, el descodificador de vídeo 30 puede reconstruir bloques de codificación de la CU.
[0129] Como parte del modo de realización de una operación de descodificación en una CU, la unidad de cuantificación inversa 154 puede cuantificar de forma inversa, es decir, descuantificar, los bloques de coeficientes asociados a las TU de la CU. La unidad de cuantificación inversa 154 puede usar un valor QP asociado a la CU de la TU para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa para que la unidad de cuantificación inversa 154 lo aplique. Es decir, la relación de compresión, es decir, la relación entre el número de bits usados para representar la secuencia original y la comprimida, puede controlarse ajustando el valor del QP usado al cuantificar los coeficientes de transformada. La relación de compresión también puede depender del procedimiento de codificación por entropía empleado.
[0130] Después de que la unidad de cuantificación inversa 154 haya realizado la cuantificación inversa de un bloque de coeficientes, la unidad de procesamiento de transformada inversa 156 puede aplicar una o más transformadas inversas al bloque de coeficientes para generar un bloque residual asociado a la TU. Por ejemplo, la unidad de procesamiento de transformada inversa 156 puede aplicar al bloque de coeficientes una DCT inversa, una transformada entera inversa, una transformada inversa de Karhunen-Loeve (KLT), una transformada de rotación inversa, una transformada direccional inversa u otra transformada inversa.
[0131] Si se codifica una PU usando intrapredicción, la unidad de procesamiento de intrapredicción 166 puede realizar una intrapredicción para generar bloques predictivos para la PU. La unidad de procesamiento de intrapredicción 166 puede usar un modo de intrapredicción para generar los bloques predictivos de luma, Cb y Cr para la PU basándose en los bloques de predicción de las PU espacialmente contiguas. La unidad de procesamiento de intrapredicción 166 puede determinar el modo de intrapredicción para la PU basándose en uno o más elementos de sintaxis descodificados a partir del flujo de bits.
[0132] La unidad de procesamiento de predicción 152 puede construir una primera lista de imágenes de referencia (RefPicList0) y una segunda lista de imágenes de referencia (RefPicList1) en base a elementos de sintaxis extraídos del flujo de bits. Además, si se codifica una PU usando interpredicción, la unidad de descodificación por entropía 150 puede obtener información de movimiento para la PU. La unidad de compensación de movimiento 164 puede determinar, basándose en la información de movimiento de la PU, una o más zonas de referencia para la PU. La unidad de compensación de movimiento 164 puede generar, basándose en muestras de los uno o más bloques de referencia para la PU, bloques predictivos de luma, Cb y Cr para la PU.
[0133] La unidad de reconstrucción 158 puede usar los valores residuales de los bloques de transformada de luma, Cb y Cr asociados a las TU de una CU y los bloques predictivos de luma, Cb y Cr de las PU de la CU, es decir, datos de intrapredicción o datos de interpredicción, según corresponda, para reconstruir los bloques de codificación de luma, Cb y Cr de la CU. Por ejemplo, la unidad de reconstrucción 158 puede añadir muestras de los bloques de transformada de luma, Cb y Cr a muestras correspondientes de los bloques predictivos de luma, Cb y Cr para reconstruir los bloques de codificación de luma, Cb y Cr de la CU.
[0134] La unidad de filtro 160 puede realizar una operación de reducción del efecto bloque para reducir los artefactos de bloque asociados a los bloques de codificación de luma, Cb y Cr de la CU. El descodificador de vídeo 30 puede almacenar los bloques de codificación de luma, Cb y Cr de la CU en el búfer de imágenes descodificadas 162. El búfer de imágenes descodificadas 162 puede proporcionar imágenes de referencia para una posterior compensación de movimiento, intrapredicción y presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1. Por ejemplo, el descodificador de vídeo 30 puede realizar, basándose en los bloques de luma, Cb y Cr del búfer de imágenes descodificadas 162, operaciones de intrapredicción o de interpredicción en las PU de otras CU. De esta manera, el descodificador de vídeo 30 puede extraer, del flujo de bits, niveles de coeficientes de transformada del bloque de coeficientes de luma significativo, realizar la cuantificación inversa de los niveles de coeficientes de transformada, aplicar una transformada a los niveles de coeficientes de transformada para generar un bloque de transformada, generar en base a, al menos en parte, el bloque de transformada, un bloque de codificación, y emitir el bloque de codificación para su visualización.
[0135] Como se indica anteriormente, un archivo que se ajusta a un formato de archivo HEVC puede incluir cero o más instancias de un recuadro SampleToGroup. Además, como se indica anteriormente, cada recuadro SampleToGroup puede incluir un elemento del tipo de agrupación que identifica un tipo de agrupación de muestras. De acuerdo con una o más técnicas de la presente divulgación, un recuadro SampleToGroup puede incluir un elemento del tipo de agrupación con un valor (por ejemplo, "stsa") que indica que las muestras que pertenecen a un grupo de muestras asociado con el recuadro SampleToGroup son STSA. Por ejemplo, una pista de vídeo HEVC puede contener cero o una instancia de un SampleToGroupBox con un grouping_type de "stsa". Las instancias de recuadros SampleToGroup con elementos del tipo de agrupación con valores que indican que las muestras pertenecientes a grupos de muestras asociadas con los recuadros SampleToGroup son STSA (por ejemplo, los recuadros SampleToGroup con grouping_type "stsa") se pueden denominar entradas de grupo de muestras de subcapa temporal de forma escalonada. Una entrada del grupo de muestras de la subcapa temporal de forma escalonada puede representar un marcado de muestras como puntos de acceso a una subcapa temporal de forma escalonada (es decir, STSA). En otras palabras, la entrada del grupo de muestras de la subcapa temporal de forma escalonada puede ser un grupo de muestras utilizado para marcar muestras STSA. Los tipos de agrupación de una entrada del grupo de muestras de la subcapa temporal de forma escalonada pueden tener un tipo de grupo de "stsa".
[0136] De este modo, un codificador de vídeo u otro dispositivo puede generar un recuadro (por ejemplo, un recuadro SampleToGroup) que identifica un grupo de muestras que contiene una o más muestras de entre una pluralidad de muestras en un archivo. El recuadro también puede indicar (por ejemplo, especificando el tipo de agrupación de "stsa") que cada muestra del grupo de muestras es una muestra STSA. Por consiguiente, un descodificador de vídeo u otro dispositivo puede identificar muestras STSA, basándose en los datos en el recuadro, de entre las muestras en el archivo.
[0137] Como se indica anteriormente, un recuadro SampleGroupDescription puede incluir una descripción de un grupo de muestras. Además, como se indica anteriormente, un recuadro SampleGroupDescription puede incluir cero o más entradas. Las entradas de un recuadro SampleGroupDescription pueden incluir uno o más objetos VisualSampleGroupEntry. Un objeto VisualSampleGroupEntry puede proporcionar una descripción sobre un grupo de muestras visuales (por ejemplo, vídeo). Un objeto VisualSampleGroupEntry puede pertenecer a una clase VisualSampleGroupEntry. De acuerdo con una o más técnicas de la presente divulgación, una clase StepWiseTemporalSubLayerEntry puede extender la clase VisualSampleGroupEntry. De este modo, una entrada de un recuadro SampleGroupDescription puede incluir un objeto que pertenece a la clase StepWiseTemporalSubLayerEntry (es decir, un objeto StepWiseTemporalSubLayerEntry). De ahí que un recuadro SampleGroupDescription puede ser un contenedor de un objeto StepWiseTemporalSubLayerEntry. Puede que no sea obligatorio que un archivo contenga un objeto StepWiseTemporalSubLayerEntry y el archivo puede contener cero o más objetos StepWiseTemporalSubLayerEntry.
[0138] De este modo, la siguiente descripción puede aplicarse a entradas de grupos de muestras de la subcapa temporal de forma escalonada:
Tipos de grupos: "stsa"
Contenedor: Recuadro de descripción del grupo de muestras ("sgpd") Obligatorio: No
Cantidad: Cero o mas
Este grupo de muestras se utiliza para marcar muestras de acceso a una subcapa temporal de forma escalonada (STSA).
[0139] A continuación hay un ejemplo de sintaxis para una entrada del grupo de muestras de la subcapa temporal de forma escalonada.
class StepWioeTemporalSubLayeTEntry(]
Figure imgf000021_0001
VisualSampleGroupEntry
[r atsa')
[0140] En algunos ejemplos, una instancia de un recuadro SampleGroupDescription que incluye un objeto StepWiseTemporalSubLayerEntry puede acompañar a una entrada del grupo de muestras de la subcapa temporal de forma escalonada (por ejemplo, una instancia de un recuadro SampleToGroup con un elemento del tipo de agrupación "stsa"). De ahí que en algunos ejemplos, cuando un recuadro SampleToGroup tenga un tipo de agrupación "stsa", deberá estar presente una instancia que acompañe al recuadro SampleGroupDescription con el mismo tipo de agrupación.
[0141] De acuerdo con una o más técnicas de la presente divulgación, una pista de vídeo HEVC puede contener cero o una instancia de un recuadro SampleToGroup con un elemento grouping_type de "ipsg". Las instancias de recuadros SampleToGroup con el elemento grouping_type de "ipsg" pueden denominarse agrupaciones de muestras de intraimágenes. Una instancia de recuadro SampleToGroup con un tipo de agrupación de "ipsg" (es decir, una agrupación de muestras de intraimágenes) puede representar un marcado de muestras como puntos de acceso a una subcapa temporal de forma escalonada. De este modo, un codificador de vídeo u otro dispositivo puede generar un recuadro (por ejemplo, un recuadro SampleToGroup) que identifica un grupo de muestras que contiene una o más muestras de entre una pluralidad de muestras en un archivo. El recuadro también puede indicar (por ejemplo, especificando el tipo de agrupación de "ipsg") que cada muestra del grupo de muestras es una intramuestra. Por consiguiente, un descodificador de vídeo u otro dispositivo puede identificar intramuestras, basándose en los datos en el recuadro, de entre las muestras en el archivo.
[0142] En algunos ejemplos, una instancia que acompaña al recuadro SampleGroupDescription con el mismo tipo de agrupación está presente en la pista de vídeo HEVC. Como se indica anteriormente, un recuadro SampleGroupDescription puede incluir cero o más entradas. Las entradas de un recuadro SampleGroupDescription pueden incluir uno o más objetos VisualSampleGroupEntry. Un objeto VisualSampleGroupEntry puede pertenecer a una clase VisualSampleGroupEntry. Además, de acuerdo con una o más técnicas de la presente divulgación, una clase IntraPictureEntry puede extender la clase VisualSampleGroupEntry. De este modo, una entrada de un recuadro SampleGroupDescription puede incluir un objeto que pertenece a la clase IntraPictureEntry (es decir, un objeto IntraPictureEntry o una entrada de agrupación de muestras de intraimágenes). De ahí que un recuadro SampleGroupDescription puede ser un contenedor de un objeto IntraPictureEntry. Puede que no sea obligatorio que un archivo contenga un objeto IntraPictureEntry y el archivo puede contener cero o más objetos IntraPictureEntry. De esta manera, un archivo puede incluir un recuadro de descripción del grupo de muestras (por ejemplo, un recuadro SampleGroupDescription) que incluye una entrada (por ejemplo, un objeto IntraPictureEntry) que indica que un grupo de muestras se usa para marcar muestras que contienen imágenes intracodificadas.
[0143] De este modo, la siguiente descripción puede aplicarse a las entradas de IntraPictureEntry:
Tipos de grupos: "ipsg"
Contenedor: Recuadro de descripción del grupo de muestras ("sgpd")
Obligatorio: No
Cantidad: Cero o mas
Este grupo de muestras se utiliza para marcar muestras que contienen imágenes intracodificadas, es decir, muestras para las que todos los fragmentos son intrafragmentos.
[0144] A continuación hay una sintaxis de ejemplo para una entrada de agrupación de muestras de intraimágenes.
class. Ir.traPictureEntJcyO extends VisuaLSanEleGroupEntry ('ipsg')
(
í
[0145] Como se indica anteriormente, el formato de archivo HEVC proporciona un registro de configuración del descodificador HEVC. Por ejemplo, un recuadro de la tabla de muestras dentro de un recuadro de pista de un archivo que se ajusta al formato de archivo HEVC puede incluir un registro de configuración del descodificador HEVC. El registro de configuración del descodificador HEVC contiene información de configuración para el contenido de vídeo HEVC. Por ejemplo, el registro del descodificador HEVC puede incluir cero o más unidades de NAL. Las unidades de NAL contenidas en un registro de descodificador HEVC pueden incluir unidades de NAL que contienen conjuntos de parámetros, tales como VPS, SPS, PPS, etc.
[0146] A continuación se proporciona una sintaxis de ejemplo para un registro de configuración del descodificador HEVC. Las partes de la siguiente sintaxis que se muestran en negrita pueden indicar partes modificadas del registro de configuración del descodificador HEVC especificado en el documento de salida MPEG W12846, "Study of ISO/IEC 14496-15:2010/PDAM 2 Carriage of HEVC", la 101.a reunión del MPEG, Estocolmo, Suecia, 2012-07-16 a 2012-07­ 20.
aligxied(8¡ c'lass HEVCDecoderConfigurationRecord {
unsigned int (8) conf igurationversion = 1;
rinsigned ínt<2) profilespace;
unsigned int (15 tier £lag;
unsigned ±nt<5) profile_ida;
unsigned int <32) prof ile_coaipaS;ibility_índications
unsigned int{16) constraint_indicator_flags;
unsigned int (8) level__idc;
bit(6) reservad = 'lililí'b;
unsigned int(2) chromaFormat;
bit (5) reservad - 'lilll'b;
unsigned int (3) bitDepthLumaMinusS
bit{5) reserved » ’lilll'b;
unsigned int(3) bitDepthCfcromaMinusB;
bit (16) avgFramefi-ate;
bit (2) constantFrameRate;
bit(3) numTemporalLayers;
bit{l) temporalIdNestad;
ungigned int (2) lengthSizeMinusOtie;
unsigned int(8) numófArrays;
for (i =0; j < riumOfArrays ; j-r-f) {
bitfl) arráy complétemeos ;
unsigned int(1) reserved = 0;
unsigned int (6) NAIi un.it_type;
unsigned int (16) nuniNalus;
for íi=0; i< num&'alus; i++i {
unsigned int(i6) nalUnitLength;
bit (8*nalUni.tLength) nal.Unít;
[0147] El registro de configuración del descodificador HEVC contiene un tamaño de un campo de longitud (por ejemplo, lengthSizeMinusOne) utilizado en cada muestra para indicar la longitud de unidades de NAL contenidas por el registro de configuración del descodificador HEVC, así como los conjuntos de parámetros, si se almacenan en una entrada de muestras. El registro de configuración del descodificador HEVC puede tener tramas externas. En otras palabras, el tamaño del registro de configuración del descodificador HEVC puede ser suministrado por la estructura que contiene el registro de configuración del descodificador HEVC.
[0148] Además, el registro de configuración del descodificador HEVC puede contener un campo de versión. En la sintaxis de ejemplo proporcionada anteriormente, este campo de versión se denomina configurationVersion. Los cambios incompatibles en el registro pueden estar indicados por un cambio en el número de versión. En algunos ejemplos, un dispositivo u otro lector no debe intentar descodificar un registro de configuración del descodificador HEVC o los flujos a los que se aplica el registro de configuración del descodificador HEVC si el dispositivo u otro lector no reconoce el número de versión especificado por el campo de versión del registro de configuración del descodificador HEVC. En algunos ejemplos, las extensiones compatibles con el registro de configuración del descodificador HEVC no extienden el registro de configuración del descodificador HEVC y no cambian el código de la versión de configuración especificado por el campo de versión del registro de configuración del descodificador HEVC. Un dispositivo u otro lector puede, en algunos ejemplos, estar preparado para ignorar datos no reconocidos más allá de la definición de los datos que el dispositivo u otro lector entienden.
[0149] Un VPS puede incluir, entre otros elementos de sintaxis, un elemento de sintaxis general_profile_space, un elemento de sintaxis general_profile_idc, un elemento de sintaxis general_profile_compatibility_flag[i], y un elemento de sintaxis general_reserved_zero_16bits. El elemento de sintaxis general_profile_space especifica un contexto para la interpretación del elemento de sintaxis general_profile_idc y el elemento de sintaxis general_profile_compatibility_flag[i] para todos los valores de i en el intervalo de 0 a 31, inclusive. Cuando el elemento de sintaxis general_profile_space es igual a 0, el elemento de sintaxis general_profile_idc indica el perfil al que se ajusta una CVS. El Anexo A del borrador de trabajo 8 de la HEVC describe un conjunto de perfiles de ejemplo. Cuando el elemento de sintaxis general_profile_space es igual a 0 y el elemento de sintaxis general_profile_compatibility_flag[i] es igual a 1, el elemento de sintaxis general_profile_compatibility_flag[i] indica que una CVS se ajusta a un perfil indicado por el elemento de sintaxis general_profile_idc igual a i. Cuando el elemento de sintaxis general_profile_space es igual a 0, general_profile_idc[general_profile_idc] es igual a 1. "general_profile_idc[general_profile_idc]" denota el elemento de sintaxis general_profile_idc asociado con un valor del índice especificado por el elemento de sintaxis general_profile_idc. En algunos ejemplos, el elemento de sintaxis general_profile_compatibility_flag[i] es igual a 0 para cualquier valor de i que no esté especificado como un valor permitido de general_profile_idc. El Anexo A del borrador de trabajo 8 de la HEVC especifica un conjunto de ejemplo de valores permitidos del elemento de sintaxis general_profile_idc. El elemento de sintaxis general_reserved_zero_16bits es igual a 0 en los flujos de bits. Determinados valores de los elementos de sintaxis general_reserved_zero_16bits pueden usarse para extensiones de la HEVC.
[0150] Además, un VPS puede incluir una estructura de sintaxis de profile_tier_level que incluye un elemento de sintaxis general_tier_flag y un elemento de sintaxis general_level_idc. El elemento de sintaxis general_tier_flag especifica un contexto de grado para la interpretación del elemento de sintaxis general_level_idc. El elemento de sintaxis general_level_idc indica un nivel al que se ajusta una CVS. El Anexo A del borrador de trabajo 8 de la HEVC especifica una interpretación de ejemplo del elemento de sintaxis general_level_idc basándose en el contexto de grado especificado por el elemento de sintaxis general_tier_flag.
[0151] En el ejemplo de sintaxis de los registros de configuración del descodificador HEVC proporcionados anteriormente, los elementos profile_space, tier_flag, profile_idc, profile_compatibility_indications, constraint_indicator_flags y level_idc contienen valores correspondientes para los elementos de sintaxis general_profile_space, general_tier_flag, general_profile_idc, general_profile_compatibility_flag[i] para i que va de 0 hasta 31, inclusive, general_reserved_zero_16bits y general_level_idc, respectivamente, como se define en la norma ISO/CEI 23008-2, para el flujo al que se aplica este registro de configuración del descodificador HEVC.
[0152] En un ejemplo, los valores para los elementos profile_space, tier_flag, profile_idc, profile_compatibility_indications, constraint_indicator_flags y level_idc de un registro de configuración del descodificador HEVc deben ser válidos para todos los conjuntos de parámetros que se activan cuando el flujo descrito por el registro de configuración del descodificador HEVC se descodifica (se hace referencia a todos los conjuntos de parámetros del flujo o todos los conjuntos de parámetros). En otras palabras, en este ejemplo, los valores de los elementos profile_space, tier_flag, profile_idc, profile_compatibility_indications, constraint_indicator_flags y level_idc de un registro de configuración del descodificador HEVC deben describir correctamente los valores de unos elementos de sintaxis correspondientes en los conjuntos de parámetros que se activan cuando se descodifica el flujo descrito por el registro de configuración del descodificador HEVC.
[0153] Por ejemplo, los elementos de sintaxis general_profile_space en cada uno de los VPS activados cuando se descodifica el flujo pueden tener valores idénticos a un valor del elemento profile_space. En otras palabras, el valor del elemento profile_space en todos los conjuntos de parámetros debe ser idéntico. De ahí que el registro de configuración del descodificador HEVC puede incluir un elemento del espacio del perfil (por ejemplo, un elemento profile_space). Todos los elementos de sintaxis de indicador del espacio del perfil general (por ejemplo, elementos de sintaxis general_profile_space) en conjuntos de parámetros que se activan cuando se descodifica un flujo al que se aplica el registro de configuración del descodificador HEVC pueden tener valores que coincidan con los valores del elemento del espacio del perfil.
[0154] Además, en este ejemplo, la indicación de grado (por ejemplo, indicador de grado) debe indicar un grado igual o superior al grado más alto indicado en todos los conjuntos de parámetros activados cuando se descodifica el flujo descrito por el registro de configuración del descodificador HEVC. De ahí que el registro de configuración del descodificador HEVC puede incluir un elemento indicador de grado (por ejemplo, un elemento tier_flag). Un dispositivo puede determinar que todos los elementos de sintaxis del indicador de grado general (por ejemplo, elementos de sintaxis general_tier_flag) en los conjuntos de parámetros que se activan cuando se descodifica un flujo al que se aplica el registro de configuración del descodificador HEVC tienen valores que coinciden con un valor del elemento indicador de grado. Cada uno de los elementos de sintaxis indicador de grado general puede indicar un contexto de grado para la interpretación de los elementos de sintaxis indicador de nivel general que indican los niveles a los que se ajustan los flujos de vídeo codificados.
[0155] En este ejemplo, el elemento de indicación de nivel (por ejemplo, level_idc) debe indicar un nivel de capacidad igual o mayor que el nivel más alto indicado para el grado más alto en todos los conjuntos de parámetros. De ahí que el registro de configuración del descodificador HEVC puede incluir un elemento indicador de nivel (por ejemplo, un elemento level_idc). Un dispositivo puede determinar que todos los elementos de sintaxis de indicación de nivel general (por ejemplo, elementos de sintaxis general_level_idc) en los conjuntos de parámetros que se activan cuando se descodifica un flujo al que se aplica el registro de configuración del descodificador HEVC tienen valores que coinciden con un valor del elemento de nivel. Cada uno de los elementos de sintaxis de indicación de nivel general puede indicar un nivel al que se ajusta una secuencia de vídeo codificada.
[0156] En este ejemplo, el elemento de indicación de perfil (por ejemplo, profile_idc) debe indicar un perfil al que se ajusta el flujo asociado con el registro de configuración del descodificador HEVC. De ahí que el registro de configuración del descodificador HEVC puede incluir un elemento indicador de perfil (por ejemplo, un elemento profile_idc). Un dispositivo puede determinar que todos los elementos de sintaxis de indicación de perfil (por ejemplo, elementos de sintaxis profile_idc) en los conjuntos de parámetros que se activan cuando se descodifica un flujo al que se aplica el registro de configuración del descodificador HEVC tienen valores que coinciden con un valor del elemento de indicación de perfil. Cada uno de los elementos de sintaxis de indicación de perfil puede indicar un perfil al que se ajusta una secuencia de vídeo codificada.
[0157] Cada bit en el elemento profile_compatibility_indications solo se puede establecer si todos los conjuntos de parámetros establecen ese bit. De ahí que el registro de configuración del descodificador HEVC puede incluir un elemento de indicaciones de compatibilidad de perfil (por ejemplo, un elemento profile_compatibility_indications). Un dispositivo puede determinar que todos los elementos de sintaxis de indicador de compatibilidad de perfil general (por ejemplo, elementos de sintaxis general_prof¡le_compat¡bil¡ty_flag) en los conjuntos de parámetros que se activan, cuando se descodifica un flujo al que es aplicable el registro de configuración del descodificador HEVC, tienen valores que coinciden con los valores del elemento de indicación de compatibilidad del perfil.
[0158] Además, el registro de configuración del descodificador HEVC puede incluir un elemento de indicadores indicativos de restricción (por ejemplo, un elemento_constraint_indicator_flags). Un dispositivo puede determinar que todos los elementos de sintaxis de 16 bits generales reservados a cero (por ejemplo, elementos de sintaxis de general_reserved_zero_16bits) en conjuntos de parámetros que se activan cuando se descodifica un flujo al que se aplica el registro de configuración del descodificador HEVC, tienen valores que coinciden con los valores del elemento de indicaciones de compatibilidad de perfil.
[0159] Puesto que los registros de configuración del descodificador HEVC especifican los elementos profile_space, tier_flag, profile_idc, profile^ompatibilityjndications, constraint_indicator_flags y level_idc, un dispositivo (por ejemplo, el descodificador de vídeo 30) puede determinar las propiedades correspondientes del flujo sin analizar el flujo. Más bien, el dispositivo puede determinar las propiedades correspondientes del flujo al inspeccionar un registro de configuración del descodificador HEVC que se aplica al flujo.
[0160] Si los SPS del flujo están marcados con diferentes perfiles, entonces el flujo puede necesitar un examen para determinar el perfil, si lo hay, con el que se ajusta todo el flujo. Si no se examina todo el flujo, o si el examen revela que no existe un perfil al que se ajuste todo el flujo, entonces, en este ejemplo, el flujo completo debe dividirse en dos o más subflujos con registros de configuración separados (por ejemplo, registros de configuración del descodificador HEVC) en los se pueden cumplir estas reglas.
[0161] Un registro de configuración del descodificador HEVC puede proporcionar una indicación explícita sobre el formato de croma y la profundidad de bits, así como otra información de formato utilizada por un flujo elemental de vídeo HEVC. Un flujo elemental puede comprender una secuencia de uno o más flujos de bits. Si un flujo elemental contiene múltiples flujos de bits, cada uno de los flujos de bits, excepto el último flujo de bits, termina con un fin del flujo de bits (EOS) de unidad de NAL.
[0162] En algunos ejemplos, cada tipo de dicha información debe ser idéntico en todos los conjuntos de parámetros, si está presente, en un solo registro de configuración del descodificador HEVC. Si dos secuencias difieren en cualquier tipo de dicha información, se puede requerir que un procesador de vídeo genere dos registros de configuración del descodificador HEVC diferentes. Si las dos secuencias difieren en las indicaciones del espacio de color en su información de usabilidad de vídeo (VUI), se puede requerir un procesador de vídeo (por ejemplo, el codificador de vídeo 20 u otro dispositivo) para generar dos registros de configuración del descodificador HEVC diferentes. En HEVC, un SPS puede incluir una estructura de sintaxis VUI que contiene elementos de sintaxis VUI.
[0163] En la sintaxis de ejemplo para los registros de configuración del descodificador HEVC descritos anteriormente, el elemento chromaFormat contiene un indicador del formato de croma como se define mediante el elemento de sintaxis chroma_format_idc en la norma ISO/CEI 23008-2 (es decir, HEVC), para el flujo al que se aplica este registro de configuración del descodificador HEVC. El elemento de sintaxis chroma_format_idc de un SPS puede especificar una muestra de croma. En el borrador de trabajo 8 de la HEVC, el elemento de sintaxis chroma_format_idc especifica la muestra de croma en relación con una muestra de luma especificada en la subcláusula 6.2 del borrador de trabajo 8 de la HEVC. Si el elemento de sintaxis chroma_format_idc de un SPS activado para una imagen actual es igual a 0, la imagen actual puede consistir en una matriz de muestras (por ejemplo, Sl). De lo contrario, si el elemento de sintaxis chroma_format_idc no es igual a 0, la imagen actual puede comprender tres matrices de muestras (por ejemplo, SL, SCb y SCr).
[0164] En la sintaxis ejemplo para el registro de configuración del descodificador HEVC proporcionado anteriormente, el elemento bitDepthLumaMinus8 contiene un indicador de profundidad de bits de luma tal como se define mediante el elemento de sintaxis bit_depth_luma_minus8 en la norma ISO/CEI 23008-2, para el flujo al que se aplica este registro de configuración del descodificador HEVC. El elemento bitDepthChromaMinus8 puede contener el indicador de profundidad de bits de croma tal como se define mediante el elemento de sintaxis bit_depth_chroma_minus8 en la norma ISO/CEI 23008-2, para el flujo al que se aplica este registro de configuración. La profundidad de bits para un valor de muestras (por ejemplo, una muestra de luma o una muestra de croma) puede indicar cuántos bits se utilizan para representar el valor de la muestra.
[0165] Además, en la sintaxis de ejemplo para el registro de configuración del descodificador HEVC proporcionado anteriormente, el elemento avgFrameRate da una frecuencia de trama promedio en unidades de tramas/(256 segundos), para el flujo al que se aplica el registro de configuración del descodificador HEVC. Un elemento avgFrameRate que tenga un valor igual a 0 puede indicar una frecuencia de trama promedio no especificada.
[0166] En la sintaxis de ejemplo para el registro de configuración del descodificador HEVC proporcionado anteriormente, el elemento constantFrameRate igual a 1 puede indicar que el flujo al que se aplica este registro de configuración del descodificador HEVC es de una frecuencia de trama constante. El elemento constantFrameRate igual a 2 puede indicar que la representación de cada capa temporal en el flujo es de una frecuencia de trama constante. El elemento constantFrameRate igual a 0 indica que el flujo puede ser o no de una frecuencia de trama constante.
[0167] Además, en la sintaxis de ejemplo para el registro de configuración del descodificador HEVC proporcionado anteriormente, el elemento numTemporalLayers puede indicar si el flujo al que se aplica el registro de configuración del descodificador HEVC es temporalmente escalable y si el número contenido de capas temporales (también denominado subcapa temporal o subcapa en la norma ISO/CEI 23008-2) es igual a numTemporalLayers. Por ejemplo, el elemento de sintaxis numTemporalLayers mayor que 1 puede indicar que el flujo al que se aplica este registro de configuración del descodificador HEVC es temporalmente escalable y que el número contenido de capas temporales es igual a numTemporalLayers. En este ejemplo, el elemento numTemporalLayers igual a 1 puede indicar que el flujo no es escalable temporalmente. Además, en este ejemplo, el elemento numTemporalLayers igual a 0 puede indicar que no se sabe si el flujo es temporalmente escalable.
[0168] En la sintaxis de ejemplo para el registro de configuración del descodificador HEVC proporcionado anteriormente, el elemento TemporalIdNested puede indicar si todos los SPS que se activan cuando el flujo al que se aplica el registro de configuración del descodificador HEVC tiene elementos de sintaxis sps_temporal_id_nesting_flag iguales a 0. Por ejemplo, el elemento TemporalIdNested igual a 1 puede indicar que todos los SPS que se activan cuando se descodifica el flujo al que se aplica el registro de configuración del descodificador HEVC tienen elementos de sintaxis sps_temporal_id_nesting_flag como se define en la norma ISO/CEI 23008-2 igual a 1 y la conmutación ascendente de subcapa temporal a cualquier capa temporal superior se puede realizar en cualquier muestra. En este ejemplo, el elemento TemporalIdNested igual a 0 puede indicar que al menos uno de los SPS que se activan cuando se descodifica el flujo al que se aplica el registro de configuración del descodificador HEVC tiene un elemento de sintaxis sps_temporal_id_nesting_flag igual a 0.
[0169] De esta manera, un dispositivo puede generar un archivo que almacena las muestras codificadas que contienen imágenes codificadas de los datos de vídeo. El archivo también incluye un recuadro que incluye un registro que incluye un elemento que indica si todos los SPS que se activan cuando se descodifica un flujo al que se aplica el registro tienen elementos de sintaxis sps_temporal_id_nesting_flag que indican que la conmutación ascendente de subcapa temporal a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0170] En la sintaxis de ejemplo para el registro de configuración del descodificador HEVC proporcionado anteriormente, el elemento lengthSizeMinusOne más 1 indica la longitud en bytes del campo NALUnitLength en una muestra de vídeo HEVC en el flujo al que se aplica el registro de configuración del descodificador HEVC. Por ejemplo, un tamaño de un byte se indica con un valor de 0. El valor de este campo será uno de 0, 1 o 3, correspondiente a una longitud codificada con 1, 2 o 4 bytes, respectivamente.
[0171] Además, una configuración del descodificador HEVC puede contener un conjunto de matrices que transportan unidades de NAL de inicialización. En otras palabras, en un registro de configuración del descodificador HEVC hay un conjunto de matrices para transportar unidades de NAL de inicialización. Los tipos de unidades de NAL en un registro de configuración del descodificador HEVC pueden estar restringidos a unidades de NAL que contengan mensajes VPS, SPS, PPS y SEI. El borrador de trabajo 8 de la HEVC y la presente divulgación proporcionan varios tipos de unidades de NAL reservadas. En el futuro, dichos tipos de unidades de NAL reservadas se pueden definir para implementar extensiones de HEVC. En otras palabras, los tipos de unidades de NAL que están reservados en la norma ISO/CEI 23008-2 y en esta memoria descriptiva pueden adquirir una definición en el futuro. En algunos ejemplos, los lectores (por ejemplo, los dispositivos que reciben y procesan un registro de configuración del descodificador HEVC) deben ignorar las matrices de unidades de NAL con valores de tipo de unidad de NAL reservados o no permitidos. Este comportamiento "tolerante" de ignorar las matrices de unidades de NAL con valores de tipo de unidad de NAL reservados o no permitidos está diseñado para que no se generen errores, lo cual permite la posibilidad de extensiones compatibles con versiones anteriores de estas matrices en futuras especificaciones. En algunos ejemplos, las matrices pueden estar en el orden de VPS, SPS, PPS y SEI. En otros ejemplos, las matrices pueden ordenarse dentro de un registro de configuración del descodificador HEVC por tamaño. Por ejemplo, las matrices pueden ordenarse dentro de un registro de configuración del descodificador HEVC, de manera que se produzcan matrices más pequeñas antes que matrices más grandes.
[0172] Además, en la sintaxis de ejemplo para registros de configuración del descodificador HEVC proporcionados anteriormente, el elemento numArrays indica el número de matrices de unidades de NAL del (de los) tipo(s) indicado(s). Los elementos array_completeness de los registros de configuración del descodificador HEVC pueden indicar si el flujo puede incluir unidades de NAL de un tipo dado además de las unidades de NAL del tipo dado que están en una matriz en el registro de configuración del descodificador HEVC. Por ejemplo, un elemento de array_completeness igual a 1 puede indicar que todas las unidades de NAL del tipo dado están en la matriz de unidades de NAL en el registro de configuración del descodificador HEVC y ninguna está en el flujo. Un elemento array_completeness igual a 0 indica que puede haber unidades de NAL adicionales del tipo indicado en el flujo. Los valores predeterminados y por defecto del elemento array_completeness pueden estar limitados por el código de entrada de muestras.
[0173] Además, en el ejemplo de sintaxis de los registros de configuración del descodificador HEVC proporcionados anteriormente, el elemento NAL_unit_type indica el tipo de las unidades de NAL en la matriz de unidades de NAL. En este ejemplo, todas las unidades de NAL en la matriz deben pertenecer al tipo especificado por el elemento NAL_unit_type. El elemento NAL_unit_type puede tomar un valor como se define en la norma ISO/CEI 23008-2. En algunos ejemplos, el elemento NAL_unit_type está restringido para tomar uno de los valores que indican una unidad VPS, SPS, PPS o SEI NAL.
[0174] En la sintaxis de registro de configuración de descodificador HVEC de ejemplo proporcionado anteriormente, el elemento numNalus indica el número de unidades de NAL del tipo indicado incluido en el registro de configuración del descodificador HEVC para el flujo al que se aplica este registro de configuración del descodificador HEVC. En algunos ejemplos, el elemento NAL_unit_type del registro de configuración del descodificador HEVC puede indicar que el registro de configuración del descodificador HEVC incluye una matriz SEI (es decir, una matriz de unidades SEI NAL). Por ejemplo, en dichos ejemplos, si el numNalus es igual a cuatro, la matriz SEI puede consistir en cuatro unidades SEI NAL. Además, en algunos de estos ejemplos, la matriz SEI solo debe contener mensajes SEI de naturaleza "declarativa". Es decir, la matriz SEI solo puede contener mensajes SEI que proporcionan información sobre el flujo en su totalidad. Un ejemplo de un mensaje SEI de naturaleza "declarativa" es un mensaje SEI de datos de usuario.
[0175] Además, en el ejemplo de sintaxis de registros de configuración del descodificador HEVC proporcionados anteriormente, el elemento nalUnitLength del registro de configuración del descodificador HEVC indica la longitud en bytes de una unidad de NAL. El elemento nalUnit del registro de configuración del descodificador HEVC puede contener un VPS, un SPS, un PPS o una unidad SEI NAL declarativa, como se especifica en la norma ISO/CEI 23008­ 2.
[0176] La FIG. 4 es un diagrama de flujo que ilustra un funcionamiento de ejemplo 200 de acuerdo con una o más técnicas de esta divulgación. En el ejemplo de la FIG. 4, un primer dispositivo (por ejemplo, el codificador de vídeo 20 u otro dispositivo) genera un archivo (202). El archivo comprende una pluralidad de muestras que contienen imágenes codificadas, un recuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. El recuadro indica además que cada muestra del grupo de muestras es una muestra STSA.
[0177] Además, en el ejemplo de la FIG. 4, un segundo dispositivo (por ejemplo, el descodificador de vídeo 30 u otro dispositivo) identifica, basándose en los datos en el recuadro que identifica el grupo de muestras, las muestras STSA de entre las muestras en el archivo que contiene el recuadro (204).
[0178] La FIG. 5 es un diagrama de flujo que ilustra un funcionamiento de ejemplo 250 de acuerdo con una o más técnicas adicionales de esta divulgación. En el ejemplo de la FIG. 5, un primer dispositivo (por ejemplo, el codificador de vídeo 20 u otro dispositivo) puede generar un archivo que almacena muestras codificadas que contienen imágenes codificadas de los datos de vídeo (252). El archivo también puede incluir una entrada de muestras que incluye un elemento que indica si todos los SPS, que se activan cuando se descodifica un flujo al que se aplica la entrada de muestras, tienen elementos de sintaxis que indican que la conmutación ascendente de subcapa temporal a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0179] Además, en el ejemplo de la FIG. 5, un segundo dispositivo (por ejemplo, el descodificador de vídeo 30 u otro dispositivo) puede determinar, basándose en el elemento en la entrada de muestras del archivo que contiene muestras que contienen imágenes codificadas de los datos de vídeo, que todos los SPS que se activan cuando se descodifica el flujo al cual se aplica el registro tienen elementos de sintaxis que indican que la conmutación ascendente de subcapa temporal a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS (254).
[0180] La FIG. 6 es un diagrama conceptual que ilustra un ejemplo de estructura de un archivo 300 de acuerdo con una o más técnicas de esta divulgación. En el ejemplo de la FIG. 6, el archivo 300 incluye un recuadro de película 302 y una pluralidad de recuadros de datos de medios 304. Cada uno de los recuadros de datos de medios 304 puede incluir una o más muestras 305. Además, en el ejemplo de la FIG. 6, el recuadro de película 302 incluye un recuadro de pista 306. En otros ejemplos, el recuadro de película 302 puede incluir múltiples recuadros de pista para diferentes pistas. El recuadro de pista 306 incluye un recuadro de la tabla de muestras 308. El recuadro de la tabla de muestras 308 incluye un recuadro SampleToGroup 310, un recuadro SampleGroupDescription 312 y un registro de configuración del descodificador HEVC 314. En otros ejemplos, el recuadro de la tabla de muestras 308 puede incluir otras cajas, además del recuadro SampleToGroup 310 y el recuadro SampleGroupDescription 312 y/o puede incluir múltiples recuadros SampleToGroup y recuadros SampleGroupDescription.
[0181] De acuerdo con una o más técnicas de ejemplo de esta divulgación, el recuadro SampleToGroup 310 puede identificar un grupo de muestras que contiene una o más muestras de entre las muestras 305. El recuadro SampleToGroup 310 puede indicar además que cada muestra del grupo de muestras es una muestra STSA. De ahí que un dispositivo puede identificar, basándose en los datos en el recuadro SampleToGroup 310, muestras STSA de entre las muestras 305 en el archivo 300. De acuerdo con una o más técnicas de ejemplo adicionales de esta divulgación, el recuadro SampleToGroup 310 puede indicar que cada muestra del grupo de muestras es una intramuestra. De ahí que un dispositivo puede identificar, basándose en los datos del recuadro SampleToGroup 310, intramuestras de entre las muestras 305 en el archivo 300.
[0182] De acuerdo con una o más técnicas de ejemplo adicionales de esta divulgación, el registro de configuración del descodificador HEVC 314 puede incluir un elemento que indica si todos los SPS, que se activan cuando se descodifica un flujo al que se aplica el registro de configuración del descodificador HEVC 314, tienen elementos de sintaxis que indican que la conmutación ascendente de subcapa temporal a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS. De ahí que un dispositivo puede determinar, basándose en un elemento en el registro de configuración del descodificador HEVC 314 en el recuadro de la tabla de muestras 308 del archivo 300 que contiene muestras 305 que contienen imágenes codificadas de datos de vídeo, que todos los SPS que se activan cuando se descodifica un flujo al cual se aplica el registro de configuración del descodificador HEVC 314, tienen elementos de sintaxis que indican que la conmutación ascendente de subcapa temporal a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0183] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en o transmitir a través de un medio legible por ordenador como una o más instrucciones o código, y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador que correspondan a un medio tangible, tales como medios de almacenamiento de datos, o medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) medios de almacenamiento tangibles legibles por ordenador que sean no transitorios o a (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0184] A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, r Om , EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. Además, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en cambio, se refieren a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, donde unos discos reproducen normalmente los datos magnéticamente, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior también se deben incluir dentro del alcance de los medios legibles por ordenador.
[0185] Las instrucciones se pueden ejecutar por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables por campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. Por consiguiente, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o de programa informático dedicados configurados para la codificación y la descodificación, o incorporarse en un códec combinado. Además, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
[0186] Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En la presente divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización mediante diferentes unidades de hardware. En su lugar, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar mediante un grupo de unidades de hardware interoperativas, que incluya uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.
[0187] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (14)

REIVINDICACIONES
1. Un procedimiento de procesamiento de datos de vídeo, el procedimiento que comprende:
recibir un archivo que tiene un formato para contenido HEVC codificado con múltiples subcapas temporales, en el que cada subcapa temporal está asociada con un identificador temporal diferente, en el que:
el archivo contiene muestras, cada una de las muestras contiene una imagen codificada respectiva de los datos de vídeo, cada una de las muestras está asociada con un identificador temporal indicativo de la subcapa temporal a la que pertenece la muestra,
el archivo incluye un recuadro que identifica un grupo de muestras, en el que el recuadro no incluye las muestras, y en el que el recuadro incluye una entrada que marca cuáles de las muestras son muestras de acceso a una subcapa temporal de forma escalonada, STSA, siendo muestras que no utilizan muestras anteriores a la muestra STSa en el orden de descodificación con el mismo identificador temporal que la muestra STSA como referencia para la interpredicción, y permiten la conmutación ascendente a una subcapa temporal que contiene la muestra STSA respectiva mediante la predicción de la muestra STSA y/o muestras posteriores en la subcapa temporal que contienen la muestra STSA respectiva usando muestras anteriores a la muestra STSA de una subcapa temporal inmediatamente inferior; identificar, basándose en la entrada, muestras STSA de entre las muestras en el archivo; y,
realizar una conmutación ascendente en una de las muestras STSA del grupo de muestras.
2. Un procedimiento para generar un archivo que tiene un formato para contenido HEVC que contiene datos de vídeo codificados, codificados con múltiples subcapas temporales, en el que cada subcapa temporal está asociada con un identificador temporal diferente, el procedimiento que comprende generar un archivo que comprende: una pluralidad de muestras, cada una de las muestras que contiene una imagen codificada respectiva de los datos de vídeo, cada una de las muestras que está asociada con un identificador temporal indicativo de la subcapa temporal a la que pertenece la muestra; y
un recuadro que identifica un grupo de muestras, en el que el recuadro no contiene las muestras, y en el que el recuadro incluye una entrada que marca cuáles de las muestras son muestras de acceso a una subcapa temporal de forma escalonada, STSA, siendo muestras que no utilizan muestras anteriores a la muestra STSa en el orden de descodificación con el mismo identificador temporal que la muestra STSA como referencia para la interpredicción, en el que cada una de las muestras STSA es una muestra que permite la conmutación ascendente, en la muestra STSA, a una subcapa temporal que contiene la muestra STSA mediante la predicción de la muestra STSA y/o muestras posteriores en la subcapa temporal que contiene la muestra STSA respectiva utilizando muestras anteriores a la muestra STSA de una subcapa temporal inmediatamente inferior.
3. El procedimiento de la reivindicación 1 o la reivindicación 2, en el que el recuadro es un recuadro SampleToGroup.
4. El procedimiento de la reivindicación 1 o la reivindicación 2, en el que el recuadro incluye un elemento del tipo de agrupación con un valor de "stsa".
5. El procedimiento de la reivindicación 1 o la reivindicación 2, en el que el archivo incluye un recuadro de descripción del grupo de muestras que indica que el grupo de muestras se usa para marcar las muestras STSA.
6. El procedimiento de la reivindicación 1 o la reivindicación 2, en el que:
el recuadro es un primer recuadro,
el grupo de muestras es un primer grupo de muestras, y
el archivo que contiene un segundo recuadro en el archivo, el segundo recuadro que identifica un segundo grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras, en el que el segundo recuadro indica además que cada muestra del segundo grupo de muestras es una intramuestra.
7. El procedimiento de la reivindicación 6, en el que:
el segundo recuadro es un recuadro SampleToGroup, y
el segundo recuadro incluye un elemento del tipo de agrupación con un valor de "ipsg".
8. El procedimiento de la reivindicación 6, en el que el archivo incluye un recuadro de descripción del grupo de muestras que incluye una entrada que indica que el segundo grupo de muestras se usa para marcar muestras que contienen imágenes intracodificadas.
9. Un dispositivo para procesar datos de vídeo, el dispositivo que comprende:
medios para recibir un archivo que tiene un formato para contenido HEVC codificado con múltiples subcapas temporales, en el que cada subcapa temporal está asociada con un identificador temporal diferente, en el que:
el archivo contiene muestras, cada una de las muestras contiene una imagen codificada respectiva de los datos de vídeo, cada una de las muestras está asociada con un identificador temporal indicativo de la subcapa temporal a la que pertenece la muestra
el archivo contiene un recuadro que identifica un grupo de muestras, en el que el recuadro no contiene las muestras, y en el que el recuadro incluye una entrada que marca cuáles de las muestras son muestras de acceso a una subcapa temporal de forma escalonada, STSA, siendo muestras que no utilizan muestras anteriores a la muestra STSA en el orden de descodificación con el mismo identificador temporal que la muestra STSA como referencia para la interpredicción, y que permiten la conmutación ascendente a una subcapa temporal que contiene la muestra STSA respectiva mediante la predicción de la muestra STSA y/o muestras posteriores en la subcapa temporal que contienen la muestra STSA respectiva usando muestras anteriores a la muestra STSA de una subcapa temporal inmediatamente inferior;
medios para identificar, basándose en la entrada, las muestras STSA de datos de vídeo entre las muestras en el archivo; y
medios para realizar una conmutación ascendente en una de las muestras STSA del grupo de muestras.
10. Un dispositivo para generar un archivo que tiene un formato para contenido HEVC que contiene datos de vídeo codificados, codificados con múltiples subcapas temporales, en el que cada subcapa temporal está asociada con un identificador temporal diferente, el dispositivo que comprende:
medios para generar un archivo que comprende:
una pluralidad de muestras, cada una de las muestras que contiene una imagen codificada respectiva de los datos de vídeo, cada una de las muestras que está asociada con un identificador temporal indicativo de la subcapa temporal a la que pertenece la muestra; y
un recuadro que identifica un grupo de muestras, en el que el recuadro no contiene las muestras, y en el que el recuadro incluye una entrada que marca cuáles de las muestras son muestras de acceso a una subcapa temporal de forma escalonada, STSA, siendo muestras que no utilizan muestras anteriores a la muestra STSa en el orden de descodificación con el mismo identificador temporal que la muestra STSA como referencia para la interpredicción, en el que cada una de las muestras STSA es una muestra que permite la conmutación ascendente, en la muestra STSA, a una subcapa temporal que contiene la muestra STSA mediante la predicción de la muestra STSA y/o muestras posteriores en la subcapa temporal que contiene la muestra STSA respectiva utilizando muestras anteriores a la muestra STSA de una subcapa temporal inmediatamente inferior; y
medios para generar el archivo.
11. El aparato de la reivindicación 9 o la reivindicación 10, en el que el recuadro es un recuadro SampleToGroup.
12. El dispositivo de la reivindicación 9 o la reivindicación 10, en el que el recuadro incluye un elemento del tipo de agrupación con un valor de "stsa".
13. El dispositivo de la reivindicación 9 o la reivindicación 10, en el que el dispositivo comprende al menos uno de entre:
un circuito integrado;
un microprocesador; o
un dispositivo de comunicación inalámbrica.
14. Un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o más procesadores realice el procedimiento de acuerdo con una cualquiera de las reivindicaciones 1 a 8.
ES13777406T 2012-10-04 2013-10-02 Formato de archivo para datos de vídeo Active ES2854877T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261709748P 2012-10-04 2012-10-04
US14/043,335 US20140098868A1 (en) 2012-10-04 2013-10-01 File format for video data
PCT/US2013/062973 WO2014055594A2 (en) 2012-10-04 2013-10-02 File format for video data

Publications (1)

Publication Number Publication Date
ES2854877T3 true ES2854877T3 (es) 2021-09-23

Family

ID=50432651

Family Applications (2)

Application Number Title Priority Date Filing Date
ES13776910T Active ES2716852T3 (es) 2012-10-04 2013-10-02 Formato de archivo para datos de vídeo
ES13777406T Active ES2854877T3 (es) 2012-10-04 2013-10-02 Formato de archivo para datos de vídeo

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES13776910T Active ES2716852T3 (es) 2012-10-04 2013-10-02 Formato de archivo para datos de vídeo

Country Status (12)

Country Link
US (2) US20140098868A1 (es)
EP (2) EP2904798B1 (es)
JP (2) JP6239630B2 (es)
KR (2) KR102172130B1 (es)
CN (2) CN104704829B (es)
BR (1) BR112015007502B1 (es)
DK (2) DK2904798T3 (es)
ES (2) ES2716852T3 (es)
HU (2) HUE042386T2 (es)
SI (1) SI2904798T1 (es)
TW (2) TWI558177B (es)
WO (2) WO2014055606A2 (es)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013102293A1 (en) * 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Improvements of luma-based chroma intra prediction
WO2013165215A1 (ko) * 2012-05-04 2013-11-07 엘지전자 주식회사 영상 정보 저장 방법 및 영상 정보 파싱 방법 그리고 이를 이용하는 장치
US20140098868A1 (en) 2012-10-04 2014-04-10 Qualcomm Incorporated File format for video data
EP3591980A1 (en) * 2013-10-11 2020-01-08 SONY Corporation Reception device and reception method of video streams with changing frame rates
WO2015140401A1 (en) * 2014-03-17 2015-09-24 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
US9928297B2 (en) * 2015-02-11 2018-03-27 Qualcomm Incorporated Sample grouping signaling in file formats
US11418812B2 (en) * 2015-02-11 2022-08-16 Qualcomm Incorporated Placement of parameter sets and sync samples in video coding
GB2539461B (en) 2015-06-16 2020-01-08 Canon Kk Image data encapsulation
US20170111642A1 (en) * 2015-10-14 2017-04-20 Qualcomm Incorporated Support of random access and switching of layers and sub-layers in multi-layer video files
CN113014930B (zh) * 2016-01-13 2024-04-26 索尼公司 信息处理设备、信息处理方法和计算机可读记录介质
US10389999B2 (en) * 2016-02-17 2019-08-20 Qualcomm Incorporated Storage of virtual reality video in media files
US10623755B2 (en) * 2016-05-23 2020-04-14 Qualcomm Incorporated End of sequence and end of bitstream NAL units in separate file tracks
US10587904B2 (en) * 2017-07-10 2020-03-10 Qualcomm Incorporated Processing media data using an omnidirectional media format
JP6415652B1 (ja) * 2017-07-18 2018-10-31 三菱電機株式会社 映像再生装置、映像記録装置および映像記録方法
WO2019069857A1 (ja) * 2017-10-06 2019-04-11 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法および復号方法
US10999590B2 (en) * 2018-12-28 2021-05-04 Tencent America LLC Method for identification of random access point and picture types
WO2021132834A1 (ko) * 2019-12-26 2021-07-01 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021195026A1 (en) * 2020-03-27 2021-09-30 Bytedance Inc. Level information in video coding
GB2593897B (en) * 2020-04-06 2024-02-14 Canon Kk Method, device, and computer program for improving random picture access in video streaming
CN112565815B (zh) * 2020-10-16 2022-05-24 腾讯科技(深圳)有限公司 文件封装方法、文件传输方法、文件解码方法及相关设备
FR3137809A1 (fr) * 2022-07-08 2024-01-12 Orange Codage et décodage de données audio et/ou vidéo

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050254575A1 (en) 2004-05-12 2005-11-17 Nokia Corporation Multiple interoperability points for scalable media coding and transmission
US7725593B2 (en) * 2005-07-15 2010-05-25 Sony Corporation Scalable video coding (SVC) file format
GB0524983D0 (en) * 2005-12-07 2006-01-18 Imagination Tech Ltd Recompression and decompression of a data stream for rate smoothing
WO2008048886A2 (en) 2006-10-16 2008-04-24 Vidyo, Inc. Systems and methods for signaling and performing temporal level switching in scalable video coding
EP2392138A4 (en) 2009-01-28 2012-08-29 Nokia Corp METHOD AND APPARATUS FOR VIDEO ENCODING AND DECODING
TW201210325A (en) 2010-07-21 2012-03-01 Nokia Corp Method and apparatus for indicating switching points in a streaming session
US9116988B2 (en) 2010-10-20 2015-08-25 Apple Inc. Temporal metadata track
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US20120170648A1 (en) 2011-01-05 2012-07-05 Qualcomm Incorporated Frame splitting in video coding
EP2664151A4 (en) 2011-01-14 2016-01-20 Vidyo Inc HIGH-COATED SYNTAX FOR TIMELY SCALABILITY
US9706227B2 (en) * 2011-03-10 2017-07-11 Qualcomm Incorporated Video coding techniques for coding dependent pictures after random access
US20140169449A1 (en) 2011-07-05 2014-06-19 Telefonaktiebolaget L M Ericsson (Publ) Reference picture management for layered video
US20130170561A1 (en) 2011-07-05 2013-07-04 Nokia Corporation Method and apparatus for video coding and decoding
US20130094774A1 (en) 2011-10-13 2013-04-18 Sharp Laboratories Of America, Inc. Tracking a reference picture based on a designated picture on an electronic device
US9414085B2 (en) 2012-01-20 2016-08-09 Telefonaktiebolaget Lm Ericsson (Publ) Sub-bitstream extraction
US20130195172A1 (en) 2012-01-30 2013-08-01 Qualcomm Incorporated Method of coding video and storing video content
US9380289B2 (en) * 2012-07-20 2016-06-28 Qualcomm Incorporated Parameter sets in video coding
US20140092953A1 (en) * 2012-10-02 2014-04-03 Sharp Laboratories Of America, Inc. Method for signaling a step-wise temporal sub-layer access sample
US20140098868A1 (en) 2012-10-04 2014-04-10 Qualcomm Incorporated File format for video data

Also Published As

Publication number Publication date
BR112015007502B1 (pt) 2023-03-21
EP2904798A2 (en) 2015-08-12
HUE042386T2 (hu) 2019-06-28
BR112015007502A2 (pt) 2017-07-04
JP6203852B2 (ja) 2017-09-27
EP2904798B1 (en) 2018-12-26
TWI558177B (zh) 2016-11-11
WO2014055594A3 (en) 2014-12-04
US20140098868A1 (en) 2014-04-10
SI2904798T1 (sl) 2019-04-30
HUE053036T2 (hu) 2021-06-28
KR102172130B1 (ko) 2020-10-30
KR101924254B1 (ko) 2018-11-30
KR20150067264A (ko) 2015-06-17
US10038899B2 (en) 2018-07-31
TW201433151A (zh) 2014-08-16
JP2015536115A (ja) 2015-12-17
CN104704829A (zh) 2015-06-10
CN104704830B (zh) 2018-11-09
WO2014055606A3 (en) 2014-12-04
DK2904798T3 (en) 2019-03-25
EP2904799A2 (en) 2015-08-12
TW201433150A (zh) 2014-08-16
JP6239630B2 (ja) 2017-11-29
CN104704830A (zh) 2015-06-10
DK2904799T3 (da) 2021-03-15
CN104704829B (zh) 2018-12-04
JP2015537421A (ja) 2015-12-24
ES2716852T3 (es) 2019-06-17
WO2014055606A2 (en) 2014-04-10
WO2014055594A2 (en) 2014-04-10
TWI565305B (zh) 2017-01-01
US20140098860A1 (en) 2014-04-10
EP2904799B1 (en) 2020-12-23
KR20150067265A (ko) 2015-06-17

Similar Documents

Publication Publication Date Title
ES2854877T3 (es) Formato de archivo para datos de vídeo
ES2727814T3 (es) Estructura sintáctica de parámetros de descodificador hipotético de referencia
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
ES2692190T3 (es) Procedimiento de codificación de vídeo y almacenamiento de contenido de vídeo
US9521393B2 (en) Non-nested SEI messages in video coding
ES2898452T3 (es) Señalización de la resolución espacial de las vistas de profundidad en el formato de archivo de codificación de múltiples vistas
ES2720662T3 (es) Diseños de formato de archivo de vídeo multicapa
BR112016008374B1 (pt) Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas
BR112019014094A2 (pt) Sinalização de informações importantes de vídeo em formatos de arquivo
ES2874073T3 (es) Flujo de transporte para el transporte de extensiones de codificación de vídeo
BR112016015903B1 (pt) Método e dispositivo de decodificação de dados de vídeo, e, memória legível por computador