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

Formato de archivo para datos de vídeo Download PDF

Info

Publication number
ES2716852T3
ES2716852T3 ES13776910T ES13776910T ES2716852T3 ES 2716852 T3 ES2716852 T3 ES 2716852T3 ES 13776910 T ES13776910 T ES 13776910T ES 13776910 T ES13776910 T ES 13776910T ES 2716852 T3 ES2716852 T3 ES 2716852T3
Authority
ES
Spain
Prior art keywords
sample
video
samples
sps
layer
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
ES13776910T
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 ES2716852T3 publication Critical patent/ES2716852T3/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)

Description

DESCRIPCIÓN
Formato de archivo para datos de vídeo
CAMPO TÉCNICO
[0001] Esta divulgación se refiere a la codificación y descodificación de vídeo.
ANTECEDENTES
[0002] Las capacidades del vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión digital directa, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, 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 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificación de Vídeo Avanzada (AVC), la norma de Codificación de Vídeo de Alta Eficiencia (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 con más eficiencia implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo llevan a cabo la predicción espacial (intraimagen) y/o la predicción temporal (entre imágenes) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (es decir, una trama o una parte de vídeo de una trama de vídeo) puede dividirse en bloques de vídeo. Los bloques de vídeo en un fragmento intra-codificado (I) de una imagen se codifican utilizando predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de vídeo en un fragmento inter-codificado (P o B) de una imagen pueden usar la predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen o la predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse tramas, y las imágenes de referencia pueden denominarse tramas de referencia.
[0004] 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 a codificar y el bloque predictivo. Un bloque inter-codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra-codificado se codifica de acuerdo con un modo de intra-codificación y los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio de píxel en un dominio de transformada, dando como resultado coeficientes residuales, que pueden cuantificarse entonces. Los coeficientes cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden escanearse con el fin de producir un vector unidimensional de coeficientes, y puede aplicarse la codificación por entropía para lograr incluso más compresión.
[0005] Un flujo de bits de codificación de múltiples visualizaciones puede generarse codificando visualizaciones, por ejemplo, desde múltiples perspectivas. Se han desarrollado algunas normas de vídeo tridimensionales (3D) que hacen uso de aspectos de codificación de múltiples visualizaciones. Por ejemplo, diferentes visualizaciones pueden transmitir visualizaciones de ojo izquierdo y derecho para soportar vídeo 3D. De forma alternativa, algunos procesos de codificación de vídeo 3D pueden aplicar la denominada codificación de múltiples visualizaciones más profundidad. En la codificación de múltiples visualizaciones más profundidad, un flujo de bits de vídeo 3D puede contener no solo componentes de visualización de textura, sino también componentes de visualización de profundidad. Por ejemplo, cada visualización puede comprender un componente de visualización de textura y un componente de visualización de profundidad.
[0006] SJABERG et al. ("High-Level syntax for Bitstream Extraction" ["Sintaxis de alto nivel para extracción de flujo de datos"], 21 -11 -2011, REUNIÓN DE JCT-VC-G607; 98. Reunión de MPEG) describe una agrupación de muestras de escalabilidad temporal y una entrada de grupo de muestras de capa temporal utilizando una estructura de indicador incluida en la sintaxis de SPS.
SUMARIO
[0007] La solicitud se refiere a un procedimiento de procesamiento de datos de vídeo, un procedimiento de almacenamiento de datos de vídeo codificados, un dispositivo para procesar datos de vídeo y un dispositivo para procesamiento de datos de vídeo codificados de acuerdo con las reivindicaciones adjuntas.
[0008] En general, esta divulgación describe técnicas para 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 almacena muestras codificadas que contienen imágenes codificadas de los datos de vídeo. El archivo también puede incluir un cuadro 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS. El mismo o diferente dispositivo puede determinar, basándose en el elemento en el registro, que todos los SPS que se activan cuando se descodifica el flujo al que se aplica el registro tienen elementos sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal se puede realizar en cualquier muestra asociada con los SPS.
[0009] En un ejemplo, esta divulgación describe un procedimiento de procesamiento de datos de vídeo, comprendiendo el procedimiento determinar, basándose en un elemento en una entrada de muestras de un archivo que contiene las muestras que contienen imágenes codificadas de los datos de vídeo, que todos los SPS que son activados cuando se descodifica un flujo al que se aplica la entrada de muestras tienen elementos sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0010] En otro ejemplo, esta divulgación describe un procedimiento de almacenamiento de datos de vídeo codificados, comprendiendo el procedimiento la generación de un archivo que almacena muestras codificadas que contienen imágenes codificadas de los datos de vídeo, con el archivo que también incluye 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub­ capa temporal superior puede realizarse en cualquier muestra asociada con los SPS.
[0011] En otro ejemplo, esta divulgación describe un dispositivo que comprende uno o más procesadores configurados para determinar, basándose en un elemento en una entrada de muestras de un archivo que contiene las muestras que contienen imágenes codificadas de datos de vídeo, que todos los SPS que se activan cuando se descodifica un flujo al que se aplica la entrada de muestras tienen elementos sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior puede realizarse en cualquier muestra asociada con los SPS.
[0012] En otro ejemplo, esta divulgación describe un dispositivo que comprende uno o más procesadores configurados para generar un archivo que almacena muestras codificadas que contienen imágenes codificadas de datos de vídeo, con el archivo que también incluye 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0013] En otro ejemplo, esta divulgación describe un dispositivo que comprende: medios para recibir un archivo que contiene muestras que contienen imágenes codificadas de datos de vídeo; y medios para determinar, basándose en un elemento en una entrada de muestras, que todos los SPS que se activan cuando se descodifica un flujo al cual se aplica la entrada de muestras tienen elementos sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0014] En otro ejemplo, esta divulgación describe un dispositivo que comprende: medios para generar un archivo que almacena muestras codificadas que contienen imágenes codificadas de datos de vídeo, con el archivo que también incluye una entrada de muestras que incluye un elemento que indica si todos SPS que se activan cuando se descodifica un flujo al que se aplica la entrada de muestras, tienen elementos sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS; y medios para la salida del archivo.
[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, al ejecutarse, configuran uno o más procesadores para determinar, basándose en un elemento en una entrada de muestras de un archivo que contiene muestras que contienen imágenes codificadas de datos de vídeo, que todos los SPS que se activan cuando se descodifica un flujo al que se aplica la entrada de muestras tienen elementos sintácticos que indican que el cambio ascendente de sub­ capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada a los SPS.
[0016] En otro ejemplo, esta divulgación describe un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, configuran uno o más procesadores para generar un archivo que almacena muestras codificadas que contienen imágenes codificadas de datos de vídeo, con el archivo que también incluye 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior puede realizarse en cualquier muestra asociada a los SPS.
[0017] La información de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y la descripción siguiente. Otras características, objetivos y ventajas resultarán evidentes a partir de la descripción, de los dibujos y de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0018]
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 esta 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 esta 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 esta 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 esta 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 esta 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 esta divulgación.
DESCRIPCIÓN DETALLADA
[0019] 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 de árbol de codificación de la imagen. Una unidad de árbol de codificación (CTU) puede comprender un bloque de árbol de codificación (CTB) de muestras de luma y dos CTB correspondientes de muestras de croma y estructuras sintácticas 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.
[0020] Un elemento de red de medios (MANE) u otro tipo de dispositivo puede aplicar reducción de flujo de bits a un flujo de bits HEVC que está codificado con múltiples sub-capas. Un subconjunto de imágenes dentro de una capa que puede descodificarse sin referencia a otras imágenes dentro de la capa se puede denominar en el presente documento una "sub-capa" o una "sub-capa 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 NAL. Por lo tanto, cada sub-capa de un flujo de bits puede asociarse a un identificador temporal diferente. Si el identificador temporal de una primera unidad NAL es menor que el identificador temporal de una segunda unidad NAL, los datos encapsulados por la primera unidad NAL pueden descodificarse sin referencia a los datos encapsulados por la segunda unidad NAL.
[0021] 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 sub-capas más altas sobre la base de que las imágenes de las sub-capas inferiores son todavía descodificables ya que el proceso de descodificación para las imágenes en las sub-capas inferiores no dependen de las unidades NAL de las sub-capas superiores. La acción de eliminar todas las unidades NAL con identificadores temporales superiores a un determinado valor puede denominarse cambio descendente temporal. El cambio descendente temporal siempre puede ser posible.
[0022] La acción de partida para reenviar unidades NAL de una cierta sub-capa que no han sido reenviadas hasta ese momento se denomina cambio ascendente temporal. En algunos ejemplos, el cambio ascendente temporal solo es posible si ninguna de las imágenes en la capa que se cambia depende de una imagen en la misma sub-capa antes del punto en el flujo de bits en el que se realizó el cambio. Los puntos en un flujo de bits en los que es posible el cambio ascendente temporal pueden denominarse puntos de cambio de sub-capa.
[0023] En HEVC, hay dos tipos de imágenes asociadas con puntos de cambio de sub-capa, a saber, el tipo de imagen de acceso de sub-capa temporal (TSA) y el tipo de imagen de acceso de sub-capa temporal paso a paso (STSA). Los tipos de imagen TSA y STSA pueden utilizarse para indicar puntos de cambio de sub-capa temporal. Una imagen TSA permite el cambio ascendente, en la imagen TSA, a la sub-capa que contiene la imagen TSA o cualquier sub-capa superior, desde la sub-capa inmediatamente inferior. Una imagen STSA permite el cambio ascendente, en la imagen STSA, a la sub-capa que contiene la imagen STSA, desde la sub-capa inmediatamente inferior. Por lo tanto, a diferencia de una imagen TSA, un STSA no necesariamente habilita el cambio a una sub-capa superior, solo la sub­ capa que contiene la imagen STSA.
[0024] 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 "cuadros". Por lo tanto, los archivos que se ajustan al formato de archivo HEVC pueden comprender una serie de objetos, llamados cuadros. Un "cuadro" 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 en un archivo conforme al formato de archivo HEVC pueden estar contenidos dentro de cuadros y puede que no haya datos en el archivo que no estén en un cuadro.
[0025] 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 orden de descodificación, o una sección comprimida de audio en orden de descodificación.
[0026] 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 cuadro SampleToGroup y un cuadro SampleGroupDescription. El cuadro SampleToGroup representa la asignación de muestras a grupos de muestras. Puede haber una instancia del cuadro SampleGroupDescription para cada entrada de grupo de muestras. Un cuadro SampleGroupDescription describe las propiedades del grupo de muestras correspondiente.
[0027] 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 de STSA (también conocidas como muestras de STSA). En otro ejemplo, no hay una manera eficiente de indicar si se puede realizar un cambio ascendente de sub-capa temporal a cualquier capa temporal superior en cualquier muestra.
[0028] Las técnicas de esta divulgación pueden resolver uno o más de los problemas o deficiencias anteriormente mencionados. De acuerdo con una técnica de ejemplo de esta 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 cuadro (por ejemplo, un SampleToGroupBox) que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. El cuadro indica además que cada muestra en el grupo de muestras es una muestra de STSA. Por consiguiente, un dispositivo (por ejemplo, un descodificador de vídeo u otro dispositivo) puede identificar, basándose en los datos en un cuadro que identifica un grupo de muestras, muestras de STSA de entre muestras en un archivo que contiene el cuadro.
[0029] De acuerdo con otra técnica de ejemplo de esta 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 cuadro 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa 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 cuadro 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 una secuencia a la que se aplica el registro se ha descodificado tienen elementos sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0030] Por ejemplo, un codificador de vídeo puede generar un registro de configuración de descodificador HEVC. El registro de configuración de descodificador HEVC puede incluir un elemento temporalIdNested. El elemento temporalIDNested puede indicar si se puede realizar un cambio ascendente de sub-capa temporal a cualquier capa temporal superior en cualquier muestra de un flujo al que se aplique el registro de configuración de descodificador HEVC.
[0031] 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 esta 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 esta divulgación, los términos "codificación de vídeo" o "codificación" pueden referirse genéricamente a la codificación de vídeo o a la descodificación de vídeo.
[0032] 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 puede denominarse dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo de destino 14 puede descodificar datos de vídeo codificados, generados por el dispositivo de origen 12. Por consiguiente, el dispositivo de destino 14 puede denominarse 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.
[0033] El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender una amplia variedad de dispositivos, incluyendo ordenadores de sobremesa, dispositivos informáticos móviles, notebooks (es decir, portátiles), ordenadores tipo tablet, descodificadores, equipos telefónicos portátiles tales como los denominados teléfonos "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, ordenadores de coche o similares.
[0034] El dispositivo de destino 14 puede recibir datos de vídeo codificados desde el dispositivo de origen 12 a través de un canal 16. El canal 16 puede comprender uno o más medios o dispositivos capaces de mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el canal 16 puede comprender uno o más medios de comunicación que permitan 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ámbricos y/o alámbricos, tales como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. 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 extensa o una red global (por ejemplo, Internet). Los uno o más medios de comunicación pueden incluir routers, conmutadores, estaciones base u otros equipos que faciliten la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
[0035] En otro ejemplo, el canal 16 puede incluir un medio de almacenamiento 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 al medio de almacenamiento, por ejemplo, mediante el acceso a disco o el acceso a tarjeta. El medio de almacenamiento puede incluir varios medios de almacenamiento de datos de acceso local, tales como discos Blu-ray, DVD, CD-ROM, memoria flash u otros medios adecuados de almacenamiento digital para almacenar datos de vídeo codificados.
[0036] En un ejemplo adicional, el canal 16 puede incluir un servidor de archivos u otro dispositivo de almacenamiento intermedio que almacene 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 mediante 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. Entre los ejemplos de servidores de archivos se incluyen servidores de red (por ejemplo, para una página web), servidores del protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados a red (NAS) y unidades de disco local.
[0037] 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, como una conexión a Internet. Entre los ejemplos de tipos de conexiones de datos pueden incluirse canales inalámbricos (por ejemplo, conexiones Wi-Fi), conexiones alámbricas (por ejemplo, línea de abonados digital (DSL), módem de cable, etc.), o combinaciones de ambos 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.
[0038] Las técnicas de esta divulgación no están limitadas a aplicaciones o configuraciones inalámbricas. Las técnicas pueden aplicarse a la codificación de vídeo en soporte de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por el aire, radiodifusiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en continuo, por ejemplo, mediante 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 puede configurarse para admitir la transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como la transmisión de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0039] La FIG. 1 es meramente un ejemplo y las técnicas de esta divulgación pueden aplicarse a ajustes de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no incluyen 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 transmiten a través de una red o similar. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en la memoria, y/o un dispositivo de descodificación de vídeo puede recuperar y descodificar datos desde la memoria. En muchos ejemplos, la codificación y la descodificación se realiza mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y descodifican datos desde la memoria.
[0040] 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 alimentación 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.
[0041] El codificador de vídeo 20 puede codificar datos de vídeo 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 mediante 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 un acceso posterior mediante el dispositivo de destino 14 para su descodificación y/o su reproducción.
[0042] 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 los datos de vídeo codificados por el canal 16. El codificador de vídeo 30 puede descodificar datos de vídeo codificados. El dispositivo de visualización 32 puede mostrar los datos de vídeo descodificados. El dispositivo de visualización 32 puede estar integrado con, o ser externo a, el dispositivo de destino 14. El dispositivo de visualización 32 puede comprender varios 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.
[0043] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse como cualquiera entre 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), conjuntos de puertas programables sobre el terreno (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 adecuado de almacenamiento no transitorio legible por ordenador, y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) puede considerarse como uno o más procesadores. Cada uno del codificador 20 de vídeo y el descodificador 30 de vídeo se puede incluir en uno o más codificadores o descodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/descodificador (CODEC) combinado en un dispositivo respectivo.
[0044] Esta divulgación puede referirse en general al codificador de vídeo 20 “que señala" cierta información a otro dispositivo, tal como el descodificador de vídeo 30. El término "señalización" puede referirse en general a la comunicación de elementos sintácticos y/o a otros datos usados para descodificar los datos de vídeo comprimidos. Dicha comunicación puede producirse en tiempo real o casi real. De forma alternativa, dicha comunicación puede producirse durante un tramo de tiempo, tal como podría producirse cuando se almacenan elementos sintácticos en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que entonces pueden ser recuperado por un dispositivo de descodificación en cualquier momento tras haber sido almacenado en este medio.
[0045] 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 Organización Internacional de Normalización (ISO)/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluida su extensión de codificación de vídeo escalable (SVC), su extensión de codificación de vídeo de múltiples visualizaciones (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 sub-flujo 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 (ITU-T) H.261, el Grupo de Expertos en Imagen en Movimiento (MPEG)-1 Visual de la Organización Internacional de Normalización (ISO)/Comisión Electrotécnica Internacional (IEC), ITU-T H.262 o ISO/IEC MPEG-2 Visual, e ITU-T H.264, ISO/IEC Visual.
[0046] En otros ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con la Codificación de Vídeo de Alta Eficiencia (HEVC) desarrollada por el Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC. Un borrador de la norma de la HEVC, conocido como "HEVC Working Draft 8" ["Borrador de Trabajo 8 de la HEVC"] se describe en Bross et al., "High Efficiency Video Coding (HEVC) text specification draft 8" ["Borrador de memoria descriptiva textual 8”] de Codificación de Vídeo de Alta Eficiencia (HEVC), Equipo colaborativo conjunto en codificación de vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10.a reunión, Estocolmo, Suecia, julio de 2012, que, a partir del 17 de septiembre de 2013 está disponible en http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-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 de múltiples visualizaciones y las extensiones 3DV para HEVC que están actualmente en desarrollo. La extensión de codificación de vídeo escalable de HEVC puede denominarse SHEVC. La extensión de 3DV de la HEVC puede denominarse 3DV basada en HEVC o 3D-HEVC.
[0047] En HEVC y otras memorias descriptivas de codificación de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también pueden denominarse "tramas". Una imagen puede incluir tres formaciones de muestras, denominadas 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 croma Cb. SCr es una matriz bidimensional de muestras de croma 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 solo incluir una matriz de muestras de luminancia.
[0048] Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades de árbol de codificación (CTU). Cada una de las CTU puede comprender un bloque de árbol de codificación de muestras de luma, dos bloques de árbol de codificación correspondientes de muestras de croma y estructuras sintácticas usadas para codificar las muestras de los bloques de árbol de codificación. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CTU puede comprender un solo bloque de árbol de codificación y estructuras sintácticas usadas para codificar las muestras del bloque de árbol de codificación. Un bloque de árbol de codificación puede ser un bloque de muestras de tamaño NxN. Una CTU también puede denominarse "bloque arbolado" o "máxima unidad de codificación" (LCU). Las CTU de la HEVC pueden ser análogas en gran medida a los macrobloques de otras normas, tales como H.264/AVC. Sin embargo, una CTU no está limitada necesariamente a un tamaño 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 escaneado cuadriculado.
[0049] Para generar una CTU codificada, el codificador de vídeo 20 puede llevar a cabo de forma recursiva una partición de árbol cuaternario en los bloques de árbol de codificación de una CTU para dividir los bloques de árbol de codificación en bloques de codificación, de ahí el nombre "unidades de á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 de Cb y una matriz de muestras de Cr y estructuras sintácticas usadas para codificar las muestras de los bloques de codificación. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CU puede comprender un único bloque de codificación y estructuras sintácticas usadas para codificar las muestras del bloque de codificación.
[0050] 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 que 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 sintácticas usadas para predecir los bloques de predicción. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una PU puede comprender un solo bloque de predicción y estructuras sintácticas 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.
[0051] El codificador de vídeo 20 puede usar predicción intra o predicción inter para generar los bloques predictivos para una PU. Si el codificador de vídeo 20 usa la predicción intra para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU basándose en muestras descodificadas de la imagen asociada con la PU. En esta divulgación, la frase "basado en" puede indicar "basado al menos en parte en". Si el codificador de vídeo 20 usa predicción inter para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU basándose en muestras descodificadas de una o más imágenes distintas a la imagen asociada a la PU.
[0052] Para soportar predicción inter, 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. Por lo tanto, diferentes PU de diferentes imágenes y/o fragmentos pueden asociarse con diferentes versiones de RefPicList0 y RefPicList1.
[0053] Además, cuando el codificador de vídeo 20 utiliza predicción inter para generar un bloque predictivo de una PU, el codificador de vídeo 20 puede señalar 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. Debido a 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. Por lo tanto, 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 RefPicList0. El índice de referencia RefPicList1 de la PU indica una imagen de referencia en la versión de la PU de RefPicList1. De manera similar, la PU puede tener un vector de movimiento RefPicList0 y un vector de movimiento RefPicListl. 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 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 RefPicList1.
[0054] El codificador de vídeo 20 puede señalar 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 PU de RefPicList0 y/o 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.
[0055] Después de que el codificador de vídeo 20 genera 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 en el 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 en el bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb en uno de los bloques predictivos de Cb de la CU y una muestra correspondiente en el 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 en el 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.
[0056] Además, el codificador de vídeo 20 puede usar la partición en árbol cuádruple para descomponer los bloques residuales de luma, de Cb y de Cr de una CU en uno o más bloques de transformada de luma, de Cb y de 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 de transformada correspondientes de muestras de croma y estructuras sintácticas 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 con 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 tienen tres planos de color separados, una TU puede comprender un solo bloque de transformada y unas estructuras sintácticas usadas para transformar las muestras del bloque de transformada.
[0057] El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luma de una TU con el fin de generar un bloque de coeficientes 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.
[0058] Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes luma, un bloque de coeficientes Cb o un bloque de coeficientes 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 los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes de transformada, proporcionando una compresión adicional. 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 sintácticos que indican los coeficientes de transformada cuantificados. Por ejemplo, el codificador de vídeo 20 puede realizar la Codificación Aritmética Binaria Adaptativa al Contexto (CABAC) en los elementos sintácticos que indiquen los coeficientes de transformada cuantificados.
[0059] 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 utilizado para referirse a un flujo de unidad de Capa de abstracción de red (NAL) (por ejemplo, una secuencia de unidades NAL) o un flujo de bytes (por ejemplo, una encapsulación de un flujo de unidad NAL que contiene prefijos de código de inicio y unidades NAL como se especifica en el Anexo B de la norma HEVC). Una unidad NAL es una estructura sintáctica que contiene una indicación del tipo de datos en la unidad NAL y los bytes que contienen dichos datos en forma de una carga útil de secuencia de bytes sin procesar (RBSP) intercalados según sea necesario con bits de prevención de emulación. Cada una de las unidades NAL puede incluir una cabecera de la unidad NAL y puede encapsular una RBSP. La cabecera de la unidad NAL puede incluir un elemento sintáctico que indique un código de tipo de unidad NAL. El código de tipo de unidad NAL especificado por la cabecera de unidad NAL de una unidad NAL indica el tipo de la unidad NAL. Una RBSP puede ser una estructura sintáctica que contenga un número entero de octetos que se encapsule dentro de una unidad NAL. En algunos casos, una RBSP incluye cero bits.
[0060] Diferentes tipos de unidades NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad NAL puede encapsular una RBSP para un fragmento codificado, un tercer tipo de unidad NAL puede encapsular una RBSP para SEI, etc. Las unidades 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 de SEI) pueden denominarse unidades NAL de la capa de codificación de vídeo (VCL). Las unidades 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 NAL de conjuntos de parámetros.
[0061] El descodificador de vídeo 30 puede recibir el 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 sintácticos del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo basándose, al menos en parte, en los elementos sintácticos obtenidos a partir del flujo de bits. El proceso para reconstruir los datos de vídeo puede ser, en general, recíproco al proceso realizado por el codificador de vídeo 20. Por ejemplo, el descodificador de vídeo 30 puede usar vectores en 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 inversamente 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 de transformada 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.
[0062] En la codificación de múltiples visualizaciones, puede haber varias visualizaciones de la misma escena desde diferentes puntos de visualización. En el contexto de la codificación de múltiples visualizaciones, el término "unidad de acceso" se puede usar para referirse al conjunto de imágenes que corresponden a la misma instancia de tiempo. Por lo tanto, los datos de vídeo pueden conceptualizarse como una serie de unidades de acceso que se producen a lo largo del tiempo. Un "componente de visualización" puede ser una representación codificada de una visualización en una única unidad de acceso. En esta divulgación, una "visualización" puede referirse a una secuencia de componentes de visualizaciones asociadas al mismo identificador de visualización. En algunos ejemplos, un componente de visualización puede ser un componente de visualización de textura (es decir, una imagen de textura) o un componente de visualización de profundidad (es decir, una imagen de profundidad).
[0063] La codificación de múltiples visualizaciones soporta predicción entre visualizaciones. La predicción entre visualizaciones es similar a la predicción inter utilizada en la HEVC y puede usar los mismos elementos sintácticos. Sin embargo, cuando un codificador de vídeo realiza la predicción entre visualizaciones en una unidad de vídeo actual (tal como una PU), el codificador de vídeo puede usar, como una imagen de referencia, una imagen que está en la misma unidad de acceso que la unidad de vídeo actual, pero en una visualización diferente. Por lo contrario, la predicción inter convencional solo usa imágenes en diferentes unidades de acceso como imágenes de referencia.
[0064] En la codificación de múltiples visualizaciones, una visualización puede denominarse "visualización básica" si un descodificador de vídeo (por ejemplo, descodificador de vídeo 30) puede descodificar imágenes de la visualización sin referencia a imágenes en ninguna otra visualización. Cuando se codifica una imagen en una visualización no de base, un codificador de vídeo (tal como el codificador de vídeo 20 o el descodificador de vídeo 30) puede agregar una imagen a una lista de imágenes de referencia si la imagen está en una visualización 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 actualmente. Al igual que otras imágenes de referencia de predicción inter, el codificador de vídeo puede insertar una imagen de referencia de predicción entre visualizaciones en cualquier posición de una lista de imágenes de referencia.
[0065] Por ejemplo, las unidades NAL pueden incluir cabeceras (es decir, cabeceras de unidades NAL) y cargas útiles (por ejemplo, RBSP). Las unidades NAL pueden incluir elementos sintácticos nuh_reserved_zero_6bits. Las unidades NAL que tienen elementos sintácticos nuh_reserved_zero_6bit que especifican valores diferentes que pertenecen a diferentes "capas" de un flujo de bits. Por lo tanto, en la codificación de múltiples visualizaciones, 3Dv o SVC, el elemento sintáctico nuh_reserved_zero_6bits de la unidad NAL especifica un identificador de capa (es decir, un ID de capa) de la unidad NAL. En algunos ejemplos, el elemento sintáctico nuh_reserved_zero_6bits de una unidad NAL es igual a 0 si la unidad NAL se relaciona con una capa base en codificación de múltiples visualizaciones, codificación 3DV o SVC. Los datos en una capa de base de un flujo de bits pueden descodificarse sin referencia a los datos en cualquier otra capa del flujo de bits. Si la unidad NAL no se relaciona con una capa base en codificación de múltiples visualizaciones, 3DV o SVC, el elemento sintáctico nuh_reserved_zero_6bits puede tener un valor distinto de cero. En la codificación de múltiples visualizaciones y codificación 3DV, diferentes capas de un flujo de bits pueden corresponder a diferentes visualizaciones. En 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.
[0066] Además, algunas imágenes dentro de una capa se pueden descodificar sin referencia a otras imágenes dentro de la misma capa. Por lo tanto, las unidades NAL que encapsulan datos de ciertas imágenes de una capa pueden eliminarse del flujo de bits sin afectar la capacidad de descodificación de otras imágenes en la capa. La eliminación de unidades NAL que encapsulan datos de tales imágenes puede reducir la velocidad de tramas del flujo de bits. Un subconjunto de imágenes dentro de una capa que puede descodificarse sin referencia a otras imágenes dentro de la capa se puede denominar en el presente documento una "sub-capa" o una "sub-capa temporal".
[0067] Las unidades NAL pueden incluir elementos sintácticos temporaljd. El elemento sintáctico id_temporal de una unidad NAL especifica un identificador temporal de la unidad NAL. El identificador temporal de una unidad NAL identifica una sub-capa con la que está asociada la unidad NAL. Por lo tanto, cada sub-capa de un flujo de bits puede asociarse a un identificador temporal diferente. Si el identificador temporal de una primera unidad NAL es menor que el identificador temporal de una segunda unidad NAL, los datos encapsulados por la primera unidad NAL pueden descodificarse sin referencia a los datos encapsulados por la segunda unidad NAL.
[0068] 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 actualizada de descodificación instantánea (IDR), o una imagen de acceso de enlace roto (BLA), o una imagen de acceso aleatorio nítida (CRA), que es la primera imagen en el flujo de bits, incluidas todas las imágenes posteriores que no son una imagen IDR o b La . Es decir, en HEVC, una CVS puede comprender una secuencia de unidades de acceso que puede constar, en 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 no IDR y no BLA, incluidas todas las unidades de acceso posteriores, pero sin incluir ninguna unidad de acceso IDR o BLA posterior.
[0069] HEVC y otras normas de codificación de vídeo proporcionan mecanismos para habilitar el acceso aleatorio a 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 varias aplicaciones de vídeo, como radiodifusión y transmisión. 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 velocidad de tramas, adaptación de una resolución espacial, etc.). La inserción de imágenes de 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 denominan colectivamente imágenes de punto de acceso aleatorio (RAP).
[0070] Una imagen IDR contiene solo fragmentos I (es decir, fragmentos en que se utiliza solamente predicción intra). Una imagen IDR puede ser la primera imagen en el flujo de bits en 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 orden de descodificación. Las imágenes IDR, como se especifica en la HEVC y en H.264/AVC, se pueden usar para el acceso aleatorio. Sin embargo, las imágenes que siguen a una imagen IDR en orden de descodificación no pueden usar imágenes descodificadas antes de la imagen IDR como referencia. En consecuencia, los flujos de bits que dependen de imágenes IDR para el acceso aleatorio pueden tener una eficiencia de codificación significativamente menor que los flujos de bits que utilizan tipos adicionales de imágenes de acceso aleatorio. Una unidad de acceso IDR es una unidad de acceso que contiene una imagen IDR.
[0071] El concepto de imágenes CRA se introdujo en la HEVC para permitir a imágenes que sigan a una imagen CRA en orden de descodificación, pero precedan a la imagen CRA en orden de salida, usar imágenes descodificadas antes de la imagen CRA como referencia. Las imágenes que siguen a una imagen CRA en orden de descodificación, pero preceden a la imagen CRA en orden de salida, se denominan imágenes iniciales asociadas con la imagen CRA (o imágenes iniciales de la imagen CRA). Es decir, para mejorar la eficiencia de codificación, el concepto de imágenes CRA se introdujo en la HEVC para permitir a imágenes que sigan a una imagen CRA en orden de descodificación, pero precedan a la imagen CRA en orden de salida, usar 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.
[0072] Las imágenes iniciales de una imagen CRA se pueden descodificar correctamente si la descodificación comienza desde una imagen IDR o una imagen CRA que se produzca antes de la imagen CRA en orden de descodificación. Sin embargo, las imágenes iniciales de una imagen CRA pueden no ser descodificables cuando se produce un acceso aleatorio desde la imagen CRA. Por lo tanto, un descodificador de vídeo típicamente descodifica las imágenes iniciales de una imagen CRA durante la descodificación de acceso aleatorio. Para evitar la propagación de errores por imágenes de referencia que pueden no estar disponibles dependiendo de dónde comienza la descodificación, ninguna imagen que siga a una imagen CRA tanto en orden de descodificación como en orden de salida puede usar ninguna imagen que preceda a la imagen CRA en orden de descodificación u orden de salida (lo cual incluye las imágenes iniciales) como referencia.
[0073] El concepto de una imagen de acceso de enlace roto (BLA) se introdujo en HEVC después de la introducción de las imágenes CRA y se basa en el concepto de imágenes CRA. Una imagen BLA se origina típicamente a partir de un empalme de flujo 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 a 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.
[0074] Una diferencia entre las imágenes BLA y las imágenes CRA es la siguiente. Para una imagen CRA, las imágenes iniciales asociadas son descodificables correctamente si la descodificación comienza desde una imagen RAP antes de la imagen CRA en orden de descodificación. Sin embargo, las imágenes iniciales asociadas con una imagen CRA pueden no ser descodificables 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 en el flujo de bits). Por el contrario, puede que no haya ningún escenario en el que las imágenes iniciales asociadas con una imagen BLA sean descodificables, incluso cuando la descodificación comienza desde una imagen RAP antes de la imagen BLA en orden de descodificación.
[0075] Algunas de las imágenes iniciales asociadas con una imagen en particular CRA o una imagen en particular BLA puede ser correctamente descodificable incluso cuando la imagen en particular CRA o la imagen en particular BLA es la primera imagen en un flujo de bits. Estas imágenes iniciales pueden denominarse imágenes iniciales descodificables (DLP). Otras imágenes iniciales pueden denominarse imágenes iniciales no descodificables (NLP). El Borrador de Trabajo 8 de HEVC también puede referirse a NLP como imágenes etiquetadas para descarte (TFD).
[0076] Un VPS es una estructura sintáctica que comprende elementos sintácticos que se aplican a cero o más CVS enteras. Un SPS es una estructura sintáctica que contiene elementos sintácticos que se aplican a cero o más CVS completos. Un SPS puede incluir un elemento sintáctico que identifica un VPS que está activo cuando el SPS está activo. Por lo tanto, los elementos sintácticos de un VPS pueden ser más en general aplicables que los elementos sintácticos de un SPS.
[0077] Un conjunto de parámetros (por ejemplo, un VPS, SPS, PPS, etc.) puede contener una identificación a la que se hace referencia, directa o indirectamente, a partir de una cabecera de fragmento de un fragmento. El proceso de referencia se conoce como "activación". Por lo tanto, cuando el descodificador de vídeo 30 está descodificando un fragmento particular, se dice que un conjunto de parámetros al que se hace referencia, directa o indirectamente, mediante un elemento sintáctico en una cabecera de fragmento del fragmento particular está "activado". Dependiendo del tipo de conjunto de parámetros, la activación puede ocurrir por imagen o por secuencia. Por ejemplo, una cabecera de fragmento de un fragmento puede incluir un elemento sintáctico que identifica un PPS. Por lo tanto, cuando un codificador de vídeo codifica el fragmento, se puede activar el PPS. Además, el PPS puede incluir un elemento sintáctico que identifica un SPS. Por lo tanto, cuando se activa un PPS que identifica el SPS, se puede activar el SPS. El SPS puede incluir un elemento sintáctico que identifica un VPS. Por lo tanto, cuando se activa un SPS que identifica el VPS, se activa el VPS.
[0078] 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 características y límites algorítmicos que se soportan por parte de todos los descodificadores conformes con ese perfil. Los codificadores de vídeo no están obligados a utilizar todas las características con soporte en un perfil. Cada nivel de un grado puede especificar un conjunto de límites sobre los valores que pueden tener los elementos sintácticos. El mismo conjunto de definiciones de grado y nivel puede usarse con todos los perfiles, pero las implementaciones individuales pueden soportar grados diferentes y, dentro de un grado, niveles diferentes para cada perfil soportado. Para cualquier perfil dado, un nivel de un grado en general puede corresponder a una carga de procesamiento y capacidad de memoria del 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, el grado y el nivel con soporte para ese perfil también se pueden expresar. Es posible que algunos descodificadores de vídeo no puedan descodificar perfiles, grados o niveles particulares.
[0079] En HEVC, los perfiles, grados y niveles pueden señalizarse mediante la estructura sintáctica profile_tier_level( ). La estructura sintáctica profile_tier_level( ) se puede incluir en un VPS y/o un SPS. La estructura sintáctica de profile_tier_level( ) puede incluir un elemento sintáctico general_profile_idc, un elemento sintáctico general_tier_flag y un elemento sintáctico general_level_idc. El elemento sintáctico general_profile_idc puede indicar un perfil con el que se ajusta a una CVS. El elemento sintáctico del indicador de grado general puede indicar un contexto de grado para la interpretación del elemento sintáctico general_level_idc. El elemento sintáctico general_level_idc puede indicar un nivel con el que se ajusta a una CVS. Otros valores para estos elementos sintácticos pueden ser reservados.
[0080] 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, el grado y el nivel con soporte para ese perfil también se pueden expresar. En algunos ejemplos, los descodificadores de vídeo no infieren que un valor reservado del elemento sintáctico general_profile_idc entre los valores especificados en HEVC indique capacidades intermedias entre los perfiles especificados. Sin embargo, los descodificadores de vídeo pueden inferir que un valor reservado del elemento sintáctico general_level_idc asociado con un valor particular del elemento sintáctico de indicador de grado general entre los valores especificados en HEVC indica capacidades intermedias entre los niveles especificados del grado.
[0081] 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/IEC 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/IEC 14496-14), el formato de archivo del Proyecto de Asociación de Tercera Generación (3GPP) (3GPP TS 26.244), y el formato de archivo AVC (ISO/IEC 14496-15). 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 MPEG, que se está convirtiendo en parte de ISO/IEC 14496-15.
[0082] 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 orden de descodificación, o una sección comprimida de audio en orden de descodificación.
[0083] Físicamente, un archivo que se ajuste al formato de archivo HEVC puede comprender una serie de objetos, llamados cuadros. Un cuadro puede ser un bloque de construcción orientado a objetos definido por un identificador y longitud de tipo único. En algunos casos, todos los datos en un archivo conforme al formato de archivo HEVC pueden estar contenidos dentro de cuadros y puede que no haya datos en el archivo que no estén en un cuadro. Un archivo que se ajuste al formato de archivo HEVC puede incluir varios tipos de cuadros.
[0084] Por ejemplo, un archivo que se ajuste al formato de archivo HEVC puede incluir un cuadro de tipo de archivo, un cuadro de datos de medios, un cuadro de película, un cuadro de fragmento de película, etc. En este ejemplo, un cuadro de tipo de archivo incluye el tipo de archivo y la información de compatibilidad. Un cuadro de datos de medios puede contener muestras (por ejemplo, imágenes codificadas). Un cuadro 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 cuadros de películas pueden incluir varios tipos de sub-cuadros. Los sub-cuadros de los cuadros de películas pueden incluir uno o más cuadros de pista. Un cuadro de pista puede incluir información sobre una pista individual de una película. Un cuadro de pista puede incluir un cuadro de cabecera de pista que especifica información general de una sola pista. Además, un cuadro de pista puede incluir un cuadro de medios que contiene un cuadro de información de medios. El cuadro de información de medios puede incluir un cuadro de tabla de muestras que contiene indexación de datos de muestras de medios en la pista. La información en el cuadro de la tabla de muestras se puede usar para ubicar muestras en el tiempo y, para cada una de las muestras de la pista, un tipo, tamaño, contenedor y compensación en ese contenedor de la muestra.
[0085] Por otra parte, un cuadro de tabla de muestras puede incluir uno o más cuadros SampleToGroup y uno o más cuadros de descripción de grupo de muestras (es decir, cuadros de SampleGroupDescription). Se puede usar un cuadro 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 cuadro SampleToGroup puede indicar un grupo al que pertenece una muestra. Un cuadro SampleToGroup puede tener un tipo de cuadro de "sbgp". Un cuadro SampleToGroup puede incluir un elemento de tipo de agrupación (por ejemplo, grouping_type). El elemento de tipo de agrupación puede ser un número entero que identifica un tipo (es decir, un criterio utilizado para formar los grupos de muestras) de una agrupación de muestras. Además, un cuadro de SampleToGroup puede incluir una o más entradas. Cada entrada en un cuadro de SampleToGroup puede asociarse con una serie diferente, no superpuesta de muestras consecutivas en 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 de recuento de muestras de una entrada puede indicar un número de muestras asociadas con la entrada. En otras palabras, el elemento de 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 de índice de descripción de grupo puede identificar un cuadro SampleGroupDescription que contiene una descripción de las muestras asociadas con la entrada. Los elementos del índice de descripción de grupo de varias entradas pueden identificar el mismo cuadro SampleGroupDescription.
[0086] En algunos ejemplos, el siguiente pseudo-código describe un cuadro SampleToGroup.
aligned(8) class SampleToGroupBox
extends FullBox('sbgp', version = 0, 0)
{
unsigned int(32) grouping_type;
unsigned int(32) entry_count;
for (i=1; i <= entry_count; i++)
{
unsigned int(32) sample_count;
unsigned int(32) group_description_index;
}
}
[0087] Como se ha indicado anteriormente, un cuadro de la tabla de muestras puede incluir cero o más cuadros SampleGroupDescription. Un cuadro SampleGroupDescription puede incluir una descripción de un grupo de muestras. Puede haber varias instancias del cuadro SampleGroupDescription si hay más de una agrupación de muestras para las muestras en una pista. Un cuadro SampleGroupDescription puede tener un tipo de cuadro de "sgpd".
[0088] En algunos ejemplos, el siguiente pseudo-código describe un cuadro SampleGroupDescription.
aligned(8) class SampleGroupDescriptionBox (unsigned int (32)
handle r_type)
extends FullBox('sgpd', 0, 0){
unsigned int(32) grouping_type;
unsigned int(32) entry_count;
int i;
for (i = 1 ; i <= entry_count ; i++){
switch (handler_type){
case 'vide': // for video tracks
VisualSampleGroupEntry ();
break;
case 'soun': // for audio tracks
AudioSampleGroupEntry() ;
break;
case 'hint': // for hint tracks
HintSampleGroupEntry() ;
break;
}
}
}
[0089] Como se muestra en el pseudo-código anterior, un cuadro 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 entero que identifica un cuadro SampleToGroup que está asociado con el cuadro SampleGroupDescription. El elemento entry_count puede indicar un número de entradas en el cuadro SampleGroupDescription. Cada entrada en el cuadro 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 ejemplos de pistas. Los objetos VisualSampleGroupEntry y los objetos AudioSampleGroupEntry pueden pertenecer a una clase abstracta que amplíe una clase abstracta SampleGroupDescriptionEntry.
[0090] Por otra parte, un cuadro de tabla de muestras puede incluir un cuadro de descripción de muestras que comprende una descripción de formato para un flujo. En particular, el cuadro 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 HEVC, una entrada de muestras puede incluir un registro de configuración de descodificador HEVC. Por lo tanto, un registro de configuración de descodificador HEVC puede ser un sub-cuadro de un cuadro de tabla de muestras. Un registro de configuración de descodificador HEVC puede incluir información de configuración de descodificador para el contenido de vídeo ISO/IEC 23008-2 (es decir, HEVC). Por ejemplo, un registro de configuración de descodificador HEVC puede incluir una o más unidades NAL que contienen conjuntos de parámetros (por ejemplo, VPS, SPS, PPS, etc.)
[0091] Como se indicó anteriormente, un archivo que se ajuste al formato de archivo HEVC puede incluir un cuadro de fragmento de película. Un cuadro de fragmento de película puede contener metadatos relacionados con un fragmento de película (es decir, un fragmento de una película). Un cuadro de fragmento de película puede incluir un cuadro de fragmento de pista que incluye información sobre un fragmento de una pista de un fragmento de película. Además, un cuadro de fragmento de pista puede incluir uno o más cuadros de SampleToGroup que pueden indicar grupos de muestras a los que pertenecen las muestras de un fragmento de película.
[0092] En el ejemplo de la FIG. 1, el sistema de codificación de vídeo 10 incluye un elemento de red compatible con los medios (MANE) 27. 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. MANE 27 (u otro tipo de dispositivo) puede aplicar una reducción de flujo de bits a un flujo de bits HEVC que está codificado con múltiples sub-capas. En cualquier punto del flujo de bits, MANE 27 puede comenzar a eliminar unidades NAL de sub-capas superiores (es decir, sub-capas asociadas con identificadores temporales más altos) basándose en el hecho de que las imágenes en las sub-capas inferiores (es decir, sub-capas asociadas con identificadores temporales inferiores) aún son descodificables porque el proceso de descodificación de las imágenes en las sub-capas inferiores no depende de las unidades NAL de las sub-capas superiores. La acción de eliminar todas las unidades NAL con identificadores temporales superiores a un determinado valor puede denominarse cambio descendente temporal. El cambio descendente temporal siempre puede ser posible. Por lo tanto, el término punto de cambio de sub-capa temporal puede referirse a una imagen que no depende de ninguna otra imagen que esté en la misma sub-capa que la imagen y que preceda a la imagen en orden de descodificación.
[0093] El término "cambio ascendente temporal" puede referirse a la acción de empezar a reenviar unidades NAL de una cierta sub-capa que no han sido reenviadas hasta ese momento. El cambio ascendente temporal puede ser posible solo si ninguna de las imágenes en la capa que se cambia depende de alguna imagen en la misma sub-capa antes del punto en el flujo de bits en el que se realizó el cambio.
[0094] 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 cambio de sub-capa temporal se pueden indicar a través de elementos sintácticos temporal_id_nesting_flag en SPS. Por ejemplo, si un elemento sintáctico 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 cambio de capa temporal. Además, en H.264/SVC, los mensajes SEI de punto de cambio de nivel temporal pueden indicar puntos de cambio de sub-capa temporal. En algunos ejemplos en los que los mensajes SEI del punto de cambio de nivel temporal indican puntos de cambio de sub-capa temporal, un mensaje SEI de punto de cambio 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 cambio para cambiar a la capa temporal M + 1 en el punto de cambio.
[0095] En HEVC, como en H.264/SVC, un SPS puede incluir un elemento sintáctico sps_temporal_id_nesting_flag. Cuando el elemento sintáctico sps_temporal_id_nesting_flag tiene un valor igual a 1, todas las imágenes con identificadores temporales mayores que 0 son puntos de cambio de sub-capa. En HEVC, puede haber dos tipos de imagen asociados con los puntos de cambio de sub-capa, a saber, el tipo de imagen de acceso de sub-capa temporal (TSA) y el tipo de imagen de acceso de sub-capa temporal paso a paso (STSA). Los tipos de imagen TSA y STSA pueden utilizarse para indicar puntos de cambio de sub-capa temporal.
[0096] Una imagen TSA y las imágenes después de la imagen TSA en orden de descodificación no utilizan imágenes con identificadores temporales iguales o mayores que los de la imagen TSA para la referencia de predicción inter. Una imagen TSA permite el cambio ascendente, en la imagen TSA, a la sub-capa que contiene la imagen TSA o cualquier sub-capa superior, desde la sub-capa inmediatamente inferior. En algunos ejemplos, todas las imágenes TSA tienen identificadores temporales mayores que 0.
[0097] Una imagen STSA no utiliza imágenes con la misma TemporalId que el cuadro STSA para la referencia de predicción inter. Las imágenes que siguen a una imagen STSA en orden de descodificación con el mismo identificador temporal que la imagen STSA no usan imágenes antes de la imagen STSA en orden de descodificación con el mismo identificador temporal que la imagen STSA para referencia de predicción inter. Una imagen STSA permite el cambio ascendente, en la imagen STSA, a la sub-capa que contiene la imagen STSA, desde la sub-capa inmediatamente inferior. En algunos ejemplos, todas las imágenes STSA tienen identificadores temporales mayores que 0. Por lo tanto, a diferencia de una imagen TSA, una imagen STSA no necesariamente habilita el cambio ascendente a alguna sub­ capa superior. En lugar de eso, una imagen STSA solo habilita el cambio ascendente a la sub-capa que contiene la imagen STSA.
[0098] 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 de STSA (también conocidas como muestras de STSA). En otro ejemplo, puede que no haya una forma eficiente de señalizar muestras que contengan imágenes dentro. La señalización de muestras que contienen imágenes dentro puede permitir ciertos tipos de reproducción en modo truco que solo usan imágenes dentro. En otro ejemplo, puede que no haya una manera eficiente de señalar si se puede realizar un cambio ascendente de sub-capa temporal a cualquier capa temporal superior en cualquier muestra.
[0099] De acuerdo con una técnica de ejemplo de esta divulgación, un grupo de muestras, denominado grupo de muestras de acceso de sub-capa temporal paso a paso, para lo cual el tipo de agrupación de muestras puede ser "STSA", muestras STSA de marcas. Con este mecanismo, un codificador de vídeo u otro dispositivo puede identificar fácilmente muestras de STSA.
[0100] 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 cuadro (por ejemplo, un SampleToGroupBox) que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. El cuadro indica además que cada muestra en el grupo de muestras es una muestra de STSA. En algunos ejemplos, el dispositivo puede generar el archivo. En tales ejemplos, una interfaz de salida (por ejemplo, una interfaz de red, una interfaz de disco o unidad, un sistema de acceso a memoria, etc.) del dispositivo puede generar el archivo.
[0101] De manera similar, un dispositivo (por ejemplo, descodificador de vídeo 30 u otro dispositivo) puede identificar, basándose en datos en un cuadro que identifica a un grupo de muestras, las muestras de STSA de entre muestras en un archivo que contiene el cuadro. 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 cuadro que identifica al grupo de muestras. Además, en algunos ejemplos, el dispositivo puede realizar un cambio ascendente temporal en una de las muestras de STSA en el grupo de muestras. Además, en algunos ejemplos, el descodificador de vídeo 30 puede descodificar una o más de las muestras de STSA.
[0102] Además, de acuerdo con algunas técnicas de ejemplo de esta divulgación, un grupo de muestras, denominado grupo de muestras dentro de las imágenes (es decir, una entrada de agrupación de muestras dentro de las imágenes), para el cual el tipo de agrupación de muestras puede ser 'ipsg', está diseñado para marcar muestras que contienen imágenes intra-codificadas (también denominadas muestras internas). De este modo, una pista de vídeo HEVC puede contener cero o una instancia de una SampleToGroupBox con un elemento grouping_type de "ipsg". Con este mecanismo, las muestras que contienen imágenes intra-codificadas se pueden identificar fácilmente, solo a través del grupo de muestras dentro de las imágenes. El descodificador de vídeo 30 puede descodificar una o más de las imágenes intra-codificadas.
[0103] De forma alternativa, el grupo de muestras dentro de las imágenes solo marca muestras que contienen imágenes intra-codificadas no RAP, es decir, imágenes intra que no son imágenes RAP como se define en el borrador de trabajo 8 de HEVC. Con este mecanismo, las muestras que contienen imágenes intra-codificadas se pueden identificar fácilmente, a través de la tabla de muestras sincronizadas, que marca todas las muestras que contienen imágenes RAP, y el grupo de muestras dentro de las imágenes. De esta manera, un dispositivo (por ejemplo, un codificador de vídeo 20 u otro dispositivo) puede generar un archivo que comprenda imágenes intra-codificadas de punto de acceso no aleatorio (no RAP), en el que un grupo de muestras marca las imágenes intra-codificadas no RAP en el archivo.
[0104] Además, de acuerdo con algunos ejemplos de técnicas de esta divulgación, si se puede realizar un cambio ascendente de sub-capa temporal a cualquier capa temporal superior en cualquier muestra, se señala 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 de descodificador HEVC) que incluye un elemento. El elemento que tiene un primer valor indica que el cambio ascendente de sub-capa temporal 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 el cambio ascendente de sub-capa temporal 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 sintácticos que indican si se puede realizar el cambio ascendente de sub-capa temporal a cualquier capa temporal superior en cualquier muestra.
[0105] 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 cuadro que incluye un registro (por ejemplo, un registro de configuración de descodificador, como un registro de configuración de 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa 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 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, como un registro de configuración de descodificador HEVC) en un cuadro 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa 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 unidad, un sistema de acceso a la 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 un cambio ascendente temporal en una muestra asociada con uno de los SPS.
[0106] Las técnicas de esta divulgación también pueden aplicarse a otro contenido de vídeo codificado utilizando códecs de vídeo distintos de HEVC.
[0107] La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas de esta divulgación. La FIG. 2 se proporciona para propósitos de explicación y no debería considerarse limitadora de las técnicas tales como las ampliamente ejemplificadas y descritas en esta divulgación. Para los propósitos de explicación, esta divulgación describe el codificador de vídeo 20 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0108] 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, una memoria intermedia 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 predicción inter 120 y una unidad de procesamiento de predicción intra 126. La unidad de procesamiento de predicción inter 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.
[0109] 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 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. Por lo tanto, cada PU puede asociarse a un bloque de predicción de luma y a los correspondientes bloques de predicción de croma. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden dar soporte a las PU de diversos tamaños. El tamaño de una CU puede referirse al tamaño del bloque de codificación de luma de la CU, y el tamaño de una PU puede referirse al tamaño de un bloque de predicción de luma de la PU. Suponiendo que el tamaño de una CU particular sea de 2Nx2N, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden dar soporte a tamaños de PU de 2Nx2N o NxN para la predicción intra, y a tamaños de PU simétricas de 2Nx2N, 2NxN, Nx2N, NxN o similares para la predicción inter. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden dar soporte a la partición asimétrica para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N, para la predicción inter.
[0110] La unidad de procesamiento de predicción inter 120 puede generar datos predictivos para una PU realizando predicción inter 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 predicción inter 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 en I, todas las PU tiene predicción intra. Por lo tanto, si la PU está en un fragmento I, la unidad de procesamiento de predicción inter 120 no realiza predicción inter en la PU.
[0111] 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 región de referencia para la PU. La región de referencia para la PU puede ser una región, 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 indique una posición en la ListaImgRef0 de la imagen de referencia que contiene la región de referencia para 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 región de referencia. Por ejemplo, el vector de movimiento puede ser un vector bidimensional que proporciona una desviación respecto a las coordenadas en la imagen actual a las coordenadas en una imagen de referencia. La unidad de estimación de movimiento 122 puede emitir el índice de referencia y el vector de movimiento como la 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.
[0112] Si una PU está en un fragmento B, la unidad de estimación de movimiento 122 puede llevar a cabo predicción unidireccional o predicción bidireccional para la PU. Para realizar predicción unidireccional para la PU, la unidad de estimación de movimiento 122 puede buscar las imágenes de referencia de la ListaImgRef0 o una segunda lista de imágenes de referencia (“ListaImgRef1”) para una región de referencia para la PU. La unidad de estimación de movimiento 122 puede emitir, como la información de movimiento de la PU, un índice de referencia que indica una posición en RefPicList0 o RefPicList1 de la imagen de referencia que contiene la región 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 región de referencia, y uno o más indicadores de dirección de predicción que indican si la imagen de referencia está en RefPicList0 o 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.
[0113] Para realizar predicción inter bidireccional para una PU, la unidad de estimación de movimiento 122 puede buscar las imágenes de referencia en RefPicList0 para una región de referencia para la PU y también puede buscar las imágenes de referencia en RefPicList1 para otra región de referencia para la PU. La unidad de estimación de movimiento 122 puede generar índices de referencia que indiquen posiciones en RefPicList0 y RefPicListl de las imágenes de referencia que contienen las regiones 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 regiones 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.
[0114] La unidad de procesamiento de predicción intra 126 puede generar datos predictivos para una PU realizando predicción intra en la PU. Los datos predictivos para la PU pueden incluir bloques predictivos para la PU y varios elementos sintácticos. La unidad de procesamiento de predicción intra 126 puede realizar la predicción intra en las PU en fragmentos I, fragmentos P y fragmentos B.
[0115] Para realizar la predicción intra en una PU, la unidad de procesamiento de predicción intra 126 puede usar múltiples modos de predicción intra para generar múltiples conjuntos de bloques predictivos para la PU. Cuando se realiza la predicción intra usando un modo particular de predicción intra, la unidad de procesamiento de predicción intra 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, de arriba a abajo, para las PU, CU y CTU. La unidad de procesamiento de predicción intra 126 puede usar diversos números de modos de predicción intra, por ejemplo, 33 modos de predicción intra direccional. En algunos ejemplos, el número de modos de predicción intra puede depender del tamaño de los bloques de predicción de la PU.
[0116] La unidad de procesamiento de predicción 100 puede seleccionar los datos predictivos para PU de una CU entre los datos predictivos generados por la unidad de procesamiento de predicción inter 120 para las PU o los datos predictivos generados por la unidad de procesamiento de predicción intra 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 basándose en las mediciones 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.
[0117] La unidad de generación residual 102 puede generar, basándose en los bloques de codificación de luma, Cb y Cr de una CU y los bloques de luma, Cb y Cr predictivos seleccionados 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 correspondiente bloque predictivo seleccionado de una PU de la CU.
[0118] La unidad de procesamiento de transformada 104 puede realizar división de árbol cuádruple para dividir los bloques residuales de una CU en bloques de transformada asociados con TU de la CU. De este modo, una TU puede estar asociada con 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 basarse en los tamaños y posiciones de los bloques de predicción de las PU de la CU.
[0119] 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 de coseno discreta (DCT), una transformada direccional o una transformada conceptualmente similar al 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 puede tratarse como un bloque de coeficientes de transformada.
[0120] 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 puede redondearse hacia abajo 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 basándose en un valor de 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 del 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 inferior a los originales.
[0121] La unidad de cuantificación inversa 108 y la unidad de procesamiento de transformada inversa 110 pueden aplicar 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. Mediante la reconstrucción de 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.
[0122] La unidad de filtro 114 puede realizar una o más operaciones de desbloqueo para reducir los artefactos de bloqueo en los bloques de codificación asociados con una CU. La memoria intermedia 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 desbloqueo en los bloques de codificación reconstruidos. La unidad de procesamiento de predicción inter 120 puede usar una imagen de referencia que contenga los bloques de codificación reconstruidos para realizar la predicción inter en las PU de otras imágenes. Además, la unidad de procesamiento de predicción intra 126 puede usar bloques de codificación reconstruidos en la memoria intermedia de imágenes descodificadas 116 para realizar predicción intra en otras PU en la misma imagen que la CU.
[0123] La unidad de codificación por entropía 118 puede recibir datos de 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 sintácticos 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 adaptable al contexto (CAVLC), una operación de CABAC, una operación de codificación de longitud variable a variable (V2V), una operación de codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), una operación de codificación por entropía de partición de intervalos de probabilidad (PIPE), una operación de codificación Exponencial-Golomb 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 incluya datos codificados por entropía, generados por la unidad de codificación por entropía 118.
[0124] 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 esta divulgación, el archivo puede comprender una pluralidad de muestras que contienen imágenes codificadas. El archivo también puede comprender un cuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. El cuadro puede indicar además que cada muestra en el grupo de muestras es una muestra de STSA. Además, de acuerdo con una o más técnicas de esta 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 cuadro que incluye un registro que incluye un elemento que indica si todas los SPS que se activan cuando se descodifica una secuencia a la que se aplica el registro tienen elementos sintácticos que indican que el cambio ascendente de la sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0125] La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo 30 de ejemplo que está configurado para implementar las técnicas de esta divulgación. La FIG. 3 se proporciona para propósitos de explicación y no se limita a las técnicas como las ampliamente ejemplificadas y descritas en esta divulgación. Para los propósitos de explicación, esta divulgación describe el descodificador de vídeo 30 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otras normas o procedimientos de codificación.
[0126] 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 una memoria intermedia 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 predicción intra 166. En otros ejemplos, el descodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
[0127] Una memoria intermedia de imágenes codificadas (CPB) 151 puede recibir y almacenar datos de vídeo codificados (por ejemplo, unidades NAL) de un flujo de bits. La unidad de descodificación por entropía 150 puede recibir unidades NAL de la CPB 151 y analizar las unidades NAL para obtener elementos sintácticos a partir del flujo de bits. La unidad de descodificación por entropía 150 puede descodificar por entropía elementos sintácticos codificados por entropía en las unidades 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 sintácticos obtenidos a partir del flujo de bits.
[0128] Las unidades NAL del flujo de bits pueden incluir unidades 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 sintácticos de las unidades 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 sintácticos pertenecientes a un fragmento.
[0129] Además de descodificar elementos sintácticos del flujo de bits, el descodificador de vídeo 30 puede realizar una operación de descodificación en una CU. Realizando la operación de descodificación en una CU, el descodificador de vídeo 30 puede reconstruir bloques de codificación de la CU.
[0130] Como parte de la 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 con las TU de la CU. La unidad de cuantificación inversa 154 puede utilizar un valor de QP asociado a la CU de la TU para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa, para aplicar por la unidad de cuantificación inversa 154. Es decir, la razón de compresión, es decir, la razón entre el número de bits utilizados para representar la secuencia original y la comprimida, puede controlarse ajustando el valor del QP usado al cuantificar los coeficientes de transformada. La razón de compresión también puede depender del procedimiento de codificación por entropía empleado.
[0131] Después de que la unidad de cuantificación inversa 154 cuantifique inversamente 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 con la TU. Por ejemplo, la unidad de procesamiento de transformada inversa 156 puede aplicar una DCT inversa, una transformada entera inversa, una transformada de Karhunen-Loeve (KLT) inversa, una transformada de rotación inversa, una transformada direccional inversa u otra transformada inversa al bloque de coeficientes.
[0132] Si se codifica una PU usando predicción intra, la unidad de procesamiento de predicción intra 166 puede realizar la predicción intra para generar bloques predictivos para la PU. La unidad de procesamiento de predicción intra 166 puede usar un modo de predicción intra 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 predicción intra 166 puede determinar el modo de predicción intra para la PU basándose en uno o más elementos sintácticos descodificados a partir del flujo de bits.
[0133] 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) basándose en los elementos sintácticos extraídos del flujo de bits. Además, si se codifica una PU usando la predicción inter, 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 regiones de referencia para la PU. La unidad de compensación de movimiento 164 puede generar, basándose en muestras en los uno o más bloques de referencia para la PU, bloques predictivos de luma, Cb y Cr para la PU.
[0134] La unidad de reconstrucción 158 puede utilizar los valores residuales de los bloques de transformada de luma, Cb y Cr asociados con las TU de una CU y los bloques predictivos de luma, Cb y Cr de las PU de la CU, es decir, datos de predicción intra o datos de predicción inter, 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 agregar muestras de los bloques de transformada de luma, Cb y Cr a las 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.
[0135] La unidad de filtro 160 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con 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 la memoria intermedia de imágenes descodificadas 162. La memoria intermedia de imágenes descodificadas 162 puede proporcionar imágenes de referencia para la posterior compensación de movimiento, la predicción intra y la 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 en la memoria intermedia de imágenes descodificadas 162, operaciones de predicción intra o de predicción inter en las PU de otras CU. De esta forma, el descodificador de vídeo 30 puede extraer, a partir del flujo de bits, los niveles de coeficientes de transformada del bloque de coeficientes luma significativos, cuantificar inversamente los niveles de coeficientes de transformada, aplicar una transformada a los niveles de coeficientes de transformada para generar un bloque de transformada, generar, basándose, al menos en parte, en el bloque de transformada, un bloque de codificación, y emitir el bloque de codificación para su visualización.
[0136] Como se indicó anteriormente, un archivo que se ajusta a un formato de archivo HEVC puede incluir cero o más instancias de un cuadro SampleToGroup. Además, como se indicó anteriormente, cada cuadro SampleToGroup puede incluir un elemento de tipo de agrupación que identifica un tipo de agrupación de muestras. De acuerdo con una o más técnicas de esta divulgación, un cuadro SampleToGroup puede incluir un elemento de 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 cuadro SampleToGroup son STSA. Por ejemplo, una pista de vídeo HEVC puede contener cero o una instancia de una SampleToGroupBox con un grouping_type de "stsa". Las instancias de cuadros de SampleToGroup con elementos de tipo de agrupación con valores que indican que las muestras pertenecientes a grupos de muestras asociadas con los cuadros de SampleToGroup son STSA (por ejemplo, los cuadros de SampleToGroup con grouping_type "stsa") se pueden denominar entradas de grupo de muestras de sub-capa temporal paso a paso. Una entrada de grupo de muestras de sub-capa temporal paso a paso puede representar un marcado de muestras como puntos de acceso de sub-capa temporal paso a paso (es decir, STSA). En otras palabras, la entrada del grupo de muestras de la sub-capa temporal paso a paso puede ser un grupo de muestras utilizado para marcar muestras de STSA. Los tipos de agrupación de una entrada de grupo de muestras de sub-capa temporal paso a paso pueden tener un tipo de grupo de "stsa".
[0137] Por lo tanto, un codificador de vídeo u otro dispositivo puede generar un cuadro (por ejemplo, un cuadro SampleToGroup) que identifica un grupo de muestras que contiene una o más muestras de entre una pluralidad de muestras en un archivo. El cuadro también puede indicar (por ejemplo, especificando el tipo de agrupación de "stsa") que cada muestra en el grupo de muestras es una muestra de STSA. Por consiguiente, un descodificador de vídeo u otro dispositivo puede identificar, basándose en los datos en el cuadro, las muestras de STSA de entre las muestras en el archivo.
[0138] Como se indicó anteriormente, un cuadro SampleGroupDescription puede incluir una descripción de un grupo de muestras. Además, como se indicó anteriormente, un cuadro SampleGroupDescription puede incluir cero o más entradas. Las entradas en un cuadro de 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 esta divulgación, una clase StepWiseTemporalSubLayerEntry puede extender la clase VisualSampleGroupEntry. Por lo tanto, una entrada en un cuadro de SampleGroupDescription puede incluir un objeto que pertenece a la clase StepWiseTemporalSubLayerEntry (es decir, un objeto StepWiseTemporalSubLayerEntry). Por lo tanto, un cuadro 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.
[0139] Por lo tanto, la siguiente descripción puede aplicarse a entradas de grupos de muestras de sub-capa temporal paso a paso:
Tipos de grupos: "stsa"
Contenedor: Cuadro de descripción de grupo de muestras ("sgpd")
Obligatorio: No
Cantidad: Cero o mas
Este grupo de muestras se utiliza para marcar muestras de acceso de sub-capa temporal paso a paso (STSA).
[0140] El siguiente es un ejemplo de sintaxis para una entrada de grupo de muestras sub-capa temporal paso a paso.
class StepWiseTemporalSubLayerEntry () extends VisualSampleGroupEntry
("stsa")
{
}
[0141] En algunos ejemplos, una instancia de un cuadro SampleGroupDescription que incluye un objeto StepWiseTemporalSubLayerEntry puede acompañar a una entrada de grupo de muestras de sub-capa temporal paso a paso (por ejemplo, una instancia de un cuadro SampleToGroup con un elemento de tipo de agrupación "stsa"). Por lo tanto, en algunos ejemplos, cuando un cuadro SampleToGroup tenga un tipo de agrupación "stsa", deberá estar presente una instancia que acompañe al cuadro SampleGroupDescription con el mismo tipo de agrupación.
[0142] De acuerdo con una o más técnicas de esta divulgación, una pista de vídeo HEVC puede contener cero instancias o una instancia de un cuadro SampleToGroup con un elemento grouping_type de "ipsg". Las instancias de cuadros SampleToGroup con el elemento grouping_type de "ipsg" pueden denominarse agrupaciones de muestras dentro de las imágenes. Una instancia de cuadro SampleToGroup con un tipo de agrupación de "ipsg" (es decir, una agrupación de muestras dentro de las imágenes) puede representar un marcado de muestras como puntos de acceso de sub-capa temporal paso a paso. Por lo tanto, un codificador de vídeo u otro dispositivo puede generar un cuadro (por ejemplo, un cuadro SampleToGroup) que identifica un grupo de muestras que contiene una o más muestras de entre una pluralidad de muestras en un archivo. El cuadro también puede indicar (por ejemplo, especificando el tipo de agrupación de "ipsg") que cada muestra en el grupo de muestras es una muestra de dentro. Por consiguiente, un descodificador de vídeo u otro dispositivo puede identificar, basándose en los datos en el cuadro, muestras internas de las muestras en el archivo.
[0143] En algunos ejemplos, una instancia que acompaña al cuadro SampleGroupDescription con el mismo tipo de agrupación está presente en la pista de vídeo HEVC. Como se indicó anteriormente, un cuadro SampleGroupDescription puede incluir cero o más entradas. Las entradas en un cuadro de 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 esta divulgación, una clase IntraPictureEntry puede extender la clase VisualSampleGroupEntry. Por lo tanto, una entrada en un cuadro de SampleGroupDescription puede incluir un objeto que pertenece a la clase IntraPictureEntry (es decir, un objeto IntraPictureEntry o una entrada de agrupación de muestras dentro de las imágenes). Por lo tanto, un cuadro 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 cuadro de descripción de grupo de muestras (por ejemplo, un cuadro de Descripción de grupo de muestras) 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 intra-codificadas.
[0144] Por lo tanto, la siguiente descripción puede aplicarse a las entradas de IntraPictureEntry:
Tipos de grupos: "ipsg"
Contenedor: Cuadro de descripción de grupo de muestras ("sgpd")
Obligatorio: No
Cantidad: Cero o mas
Este grupo de muestras se utiliza para marcar muestras que contienen imágenes intra-codificadas, es decir, muestras para las que todas los fragmentos son fragmentos intra.
[0145] La siguiente es una sintaxis de ejemplo para una entrada de agrupación de muestras dentro de las imágenes.
class IntraPictureEntry() extends VisualSampleGroupEntry ('ipsg')
{
}
[0146] Como se indicó anteriormente, el formato de archivo HEVC proporciona un registro de configuración de descodificador HEVC. Por ejemplo, un cuadro de tabla de muestras dentro de un cuadro de pista de un archivo que se ajusta al formato de archivo HEVC puede incluir un registro de configuración de descodificador HEVC. El registro de configuración de 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 NAL. Las unidades NAL contenidas en un registro de descodificador HEVC pueden incluir unidades NAL que contienen conjuntos de parámetros, como VPS, SPS, PPS, etc.
[0147] Lo siguiente proporciona una sintaxis de ejemplo para un registro de configuración de descodificador HEVC. Las partes de la siguiente sintaxis mostradas en negrita pueden indicar partes modificadas del registro de configuración de descodificador HEVC especificado en el documento de salida MPEG W12846, “Study of ISO/IEC 14496-15: 2010/PDAM 2 Carriage of HEVC” ["Estudio de ISO/IEC 14496-15: 2010/PDAM 2 Transporte de HEVC"], la 101.a reunión de MPEG, Estocolmo, Suecia, 2012-07-16 a 2012-07-20.
aligned(8) class HEVCDecoderConfigurationRecord {
unsigned int(8) configurationVersion = 1;
unsigned int(2) profilespace;
unsigned int(l) tierflag;
unsigned int(5) profileidc;
unsigned int(32) profilecompatibilityindications;
unsigned int(16) constraintindicatorflags;
unsigned int(8) levelidc;
bit(6) reserved = 'llllll'b;
unsigned int(2) chromaFormat;
bit(5) reserved = 'lllll'b;
unsigned int(3) bitDepthLumaMinus8;
bit(5) reserved = 'lllll'b;
unsigned int(3) bitDepthChromaMinus8;
bit (16) avgFrameRate;
bit (2) constantFrameRate;
bit (3) numTemporalLayers;
bit(l) temporalIdNested;
unsigned int(2) lengthSizeMinusOne;
unsigned int(8) numOfArrays;
for (j =0; j < numOfArrays; j++) {
bit(l) array_completeness;
unsigned int(l) reserved = 0;
unsigned int(6) NAL_unit_type;
unsigned int(16) numNalus;
for (i =0; i< numNalus; i++) {
unsigned int(16) nalUnitLength;
bit(8*nalUnitLength) nalUnit;
[0148] El registro de configuración de descodificador HEVC contiene un tamaño de un campo de longitud (por ejemplo, lengthSizeMinusOne) utilizado en cada muestra para indicar la longitud de unidades NAL contenidas por el registro de configuración de descodificador HEVC, así como los conjuntos de parámetros, si se almacena en una entrada de muestras. El registro de configuración de descodificador HEVC puede tener tramas externas. En otras palabras, el tamaño del registro de configuración de descodificador HEVC puede ser suministrado por la estructura que contiene el registro de configuración de descodificador HEVC.
[0149] Además, el registro de configuración de 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 de descodificador HEVC o los flujos a los que se aplica el registro de configuración de 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 de descodificador HEVC. En algunos ejemplos, las extensiones compatibles al registro de configuración de descodificador HEVC no extienden el registro de configuración de descodificador HEVC y no cambian el código de versión de configuración especificado por el campo de versión del registro de configuración de 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.
[0150] Un VPS puede incluir, entre otros elementos sintácticos, un elemento sintáctico general_profile_space, un elemento sintáctico general_profile_idc, un elemento sintáctico general_profile_compatibility_flag[i], y un elemento sintáctico general_reserved_zero_16bits. El elemento sintáctico general_profile_space especifica un contexto para la interpretación del elemento sintáctico general_profile_idc y el elemento sintáctico general_profile_compatibility_flag[i] para todos los valores de i en el rango de 0 a 31, inclusive. Cuando el elemento sintáctico general_profile_space es igual a 0, el elemento sintáctico general_profile_idc indica el perfil al que se ajusta una CVS. El Anexo A del Borrador de Trabajo 8 de HEVC describe un conjunto de perfiles de ejemplo. Cuando el elemento sintáctico general_profile_space es igual a 0 y el elemento sintáctico general_profile_compatibility_flag[i] es igual a 1, el elemento sintáctico general_profile_compatibility_flag[i] indica que una CVS se ajusta a un perfil indicado por el elemento sintáctico general_profile_idc igual a i. Cuando el elemento sintáctico 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 sintáctico general_profile_idc asociado con un valor de índice especificado por el elemento sintáctico general_profile_idc. En algunos ejemplos, el elemento sintáctico 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 HEVC especifica un conjunto de ejemplo de valores permitidos del elemento sintáctico general_profile_idc. El elemento sintáctico general_reserved_zero_16bits es igual a 0 en los flujos de bits. Ciertos valores de los elementos sintácticos general_reserved_zero_16bits pueden usarse para extensiones de HEVC.
[0151] Además, un VPS puede incluir una estructura sintáctica de nivel de grado de perfil que incluye un elemento sintáctico general_tier_flag y un elemento sintáctico general_level_idc. El elemento sintáctico del indicador de grado general especifica un contexto de grado para la interpretación del elemento sintáctico general_level_idc. El elemento sintáctico general_level_idc indica un nivel al que se ajusta una CVS. El Anexo A del Borrador de Trabajo 8 de HEVC especifica una interpretación de ejemplo del elemento sintáctico general_level_idc basándose en el contexto de grado especificado por el elemento sintáctico general_tier_flag.
[0152] En el ejemplo de sintaxis de registros de configuración de descodificador HEVC proporcionados anteriormente, los elementos profile_space, indicador de grado, profile_idc, profile_compatibility_indications, indicadores constraint_indicator, y level_idc contienen valores correspondientes para los elementos sintácticos general_profile_space, general_tier_flag, general_profile_idc, general_profile_compatibility_flag[i] para i desde 0 hasta 31, inclusive, general_reserved_zero_16bits y general_level_idc, respectivamente, como se define en ISO/IEC 23008­ 2, para el flujo al que se aplica este registro de configuración de descodificador HEVC.
[0153] En un ejemplo, los valores para los elementos profile_space, indicador de grado, profile _idc, profile_compatibility_indications, restrictor_indicator_flags y level_idc de un registro de configuración de 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 de descodificador HEVC se descodifica (se hace referencia a todos los conjuntos de parámetros de la secuencia o todos los conjuntos de parámetros). En otras palabras, en este ejemplo, los valores de los elementos profile_space, indicador de grao, profile_idc, profile_compatibility_indications, constraint_indicator_flags y level_idc de un registro de configuración de descodificador HEVC deben describir correctamente los valores de unos elementos sintácticos correspondientes en los conjuntos de parámetros que se activan cuando El flujo descrito por el registro de configuración de descodificador HEVC se descodifica.
[0154] Por ejemplo, los elementos sintácticos 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. Por lo tanto, el registro de configuración de descodificador HEVC puede incluir un elemento de espacio de perfil (por ejemplo, un elemento profile_space). Todos los elementos sintácticos de indicador de espacio de perfil general (por ejemplo, elementos sintácticos 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 de descodificador HEVC pueden tener valores que coincidan con los valores del elemento de espacio de perfil.
[0155] 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 de descodificador HEVC. Por lo tanto, el registro de configuración de descodificador HEVC puede incluir un elemento indicador de grado (por ejemplo, un elemento tier_flag). Un dispositivo puede determinar que todos los elementos sintácticos de indicador de grado general (por ejemplo, elementos sintácticos 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 de descodificador HEVC tienen valores que coinciden con un valor del elemento de indicador de grado. Cada uno de los elementos sintácticos de indicador de grado general puede indicar un contexto de grado para la interpretación de los elementos sintácticos de indicador de nivel general que indican los niveles a los que se ajustan las secuencias de vídeo codificadas.
[0156] 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. Por lo tanto, el registro de configuración de descodificador HEVC puede incluir un elemento indicador de nivel (por ejemplo, un elemento level_idc). Un dispositivo puede determinar que todos los elementos sintácticos de indicación de nivel general (por ejemplo, elementos sintácticos general_level_idc) en los conjuntos de parámetros que se activan cuando se descodifica una secuencia a la que se aplica el registro de configuración de descodificador HEVC tienen valores que coinciden con un valor del elemento de nivel. Cada uno de los elementos sintácticos de indicación de nivel general puede indicar un nivel al que se ajusta una secuencia de vídeo codificada.
[0157] En este ejemplo, el elemento de indicación de perfil (por ejemplo, profile_idc) debe indicar un perfil para el que el flujo asociado con el registro de configuración de descodificador HEVC se ajusta. Por lo tanto, el registro de configuración de descodificador HEVC puede incluir un elemento indicador de perfil (por ejemplo, un elemento profile_idc). Un dispositivo puede determinar que todos los elementos sintácticos de indicación de perfil (por ejemplo, elementos sintácticos 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 de descodificador HEVC tienen valores que coinciden con un valor del elemento de indicación de perfil. Cada uno de los elementos sintácticos de indicación de perfil puede indicar un perfil al que se ajusta una secuencia de vídeo codificada.
[0158] Cada bit en el elemento profile_compatibility_indications solo se puede establecer si todos los conjuntos de parámetros establecen ese bit. Por lo tanto, el registro de configuración de 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 sintácticos de indicador de compatibilidad de perfil general (por ejemplo, elementos sintácticos general_profile_compatibility_flag) en los conjuntos de parámetros que se activan, cuando se descodifica un flujo al que es aplicable el registro de configuración de descodificador HEVC, tienen valores que coinciden con los valores del elemento de indicación de compatibilidad de perfil.
[0159] Además, el registro de configuración de descodificador HEVC puede incluir un elemento de indicadores que indican restricción (por ejemplo, un elemento de constraint_indicator_flags). Un dispositivo puede determinar que todos los elementos sintácticos de 16 bits de cero reservados generales (por ejemplo, elementos sintácticos de bits general_reserved_zero_16) en conjuntos de parámetros que se activan cuando se descodifica un flujo al que se aplica el registro de configuración de descodificador HEVC, tienen valores que coinciden con los valores del elementos de indicaciones de compatibilidad de perfil.
[0160] Debido a que los registros de configuración de descodificador HEVC especifican los elementos profile_space, tier_flag, profile_idc, profile_compatibility_indications, 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 de descodificador HEVC que se aplica al flujo.
[0161] 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 de descodificador HEVC) en los se pueden cumplir estas reglas.
[0162] Un registro de configuración de 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 extremo de unidad Na L de flujo de bits (EOS).
[0163] En algunos ejemplos, cada tipo de tal información debe ser idéntico en todos los conjuntos de parámetros, si está presente, en un solo registro de configuración de 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 de descodificador HEVC diferentes. Si las dos secuencias difieren en las indicaciones de espacio de color en su información de uso de vídeo (VUI), un procesador de vídeo (por ejemplo, el codificador de vídeo 20 u otro dispositivo) puede ser requerido para generar dos registros de configuración de descodificador HEVC diferentes. En HEVC, un SPS puede incluir una estructura sintáctica VUI que contiene elementos sintácticos VUI.
[0164] En la sintaxis de ejemplo para registros de configuración de descodificador HEVC descritos anteriormente, el elemento chromaFormat contiene un indicador chroma_format como se define mediante el elemento sintáctico chroma_format_idc en la norma ISO/IEC 23008-2 (es decir, HEVC), para el flujo al que se aplica este registro de configuración de descodificador HEVC. El elemento sintáctico chroma_format_idc de un SPS puede especificar un muestreo de chroma. En el borrador de trabajo 8 de HEVC, el elemento sintáctico chroma_format_idc especifica el muestreo de croma en relación con un muestreo de luma especificado en la subcláusula 6.2 del borrador de trabajo 8 de HEVC. Si el elemento sintáctico chroma_format_idc de un SPS activado para una imagen actual es igual a 0, la imagen actual puede constar de una matriz de muestras (por ejemplo, Sl). De lo contrario, si el elemento sintáctico chroma_format_idc no es igual a 0, la imagen actual puede comprender tres matrices de muestras (por ejemplo, Sl , SCb y SCr).
[0165] En la sintaxis ejemplo para el registro de configuración de descodificador HEVC proporcionado anteriormente, el elemento bitDepthLumaMinus8 contiene un indicador de profundidad de bits luma como se define mediante el elemento sintáctico bit_depth_luma_minus8 en la norma ISO/IEC 23008-2, para el flujo al que se aplica este registro de configuración de descodificador HEVC. El elemento bitDepthChromaMinus8 puede contener el indicador de profundidad de bits de croma definido por el elemento sintáctico bit_depth_chroma_minus8 en ISO/IEC 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.
[0166] Además, en la sintaxis de ejemplo para registro de configuración de descodificador HEVC proporcionado anteriormente, el elemento avgFrameRate da una velocidad de tramas media en unidades de tramas/(256 segundos), para el flujo al que se aplica el registro de configuración de descodificador HEVC. Un elemento avgFramRate que tenga un valor igual a 0 puede indicar una velocidad de tramas media no especificada.
[0167] En la sintaxis de ejemplo para el registro de configuración de descodificador HEVC proporcionado anteriormente, el elemento constantFrameRate igual a 1 puede indicar que el flujo al que se aplica este registro de configuración de descodificador HEVC es de velocidad de tramas constante. El elemento constantFrameRate igual a 2 puede indicar que la representación de cada capa temporal en el flujo es de velocidad de tramas constante. El elemento constantFrameRate igual a 0 indica que el flujo puede ser o no de velocidad de tramas constante.
[0168] Además, en la sintaxis de ejemplo para el registro de configuración de descodificador HEVC proporcionado anteriormente, el elemento numTemporalLayers puede indicar si el flujo al que se aplica el registro de configuración de descodificador HEVC es temporalmente escalable y si el número contenido de capas temporales (también denominada sub-capa temporal o sub-capa en ISO/IEC 23008-2) es igual a numTemporalLayers. Por ejemplo, el elemento sintáctico numTemporalLayers mayor que 1 puede indicar que el flujo al que se aplica este registro de configuración de 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.
[0169] En la sintaxis de ejemplo para el registro de configuración de 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 de descodificador HEVC tiene elementos sintácticos 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 de descodificador HEVC tienen elementos sintácticos sps_temporal_id_nesting_flag como se define en ISO/IEC 23008-2 igual a 1 y el cambio ascendente de sub-capa 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 de descodificador HEVC tiene un elemento sintáctico sps_temporal_id _nesting_flag igual a 0.
[0170] 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 cuadro 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 sintácticos sps_temporal_id _nesting_flag que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0171] En la sintaxis de ejemplo para el registro de configuración de 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 de 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.
[0172] Además, una configuración de descodificador HEVC puede contener un conjunto de matrices que llevan unidades de NAL de inicialización. En otras palabras, en un registro de configuración de descodificador HEVC hay un conjunto de matrices para llevar las unidades NAL de inicialización. Los tipos de unidades NAL en un registro de configuración de descodificador HEVC pueden estar restringidos a unidades NAL que contengan mensajes VPS, SPS, PPS y SEI. El Borrador de Trabajo 8 de HEVC y la presente divulgación proporcionan varios tipos de unidades NAL reservadas. En el futuro, dichos tipos de unidades NAL reservadas se pueden definir para implementar extensiones a HEVC. En otras palabras, los tipos de unidades NAL que están reservados en ISO/IEC 23008-2 y en esta especificación 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 de descodificador HEVC) deben ignorar las matrices de unidades NAL con valores de tipo de unidad NAL reservados o no permitidos. Este comportamiento "tolerante" de ignorar las matrices de unidades NAL con valores de tipo de unidad NAL reservados o no permitidos está diseñado para que no se generen errores, lo cual permite la posibilidad de extensiones compatibles de forma retroactiva con 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 de descodificador HEVC por tamaño. Por ejemplo, las matrices pueden ordenarse dentro de un registro de configuración de descodificador HEVC, de manera que se produzcan matrices más pequeñas antes que matrices más grandes.
[0173] Además, en la sintaxis de ejemplo para registros de configuración de descodificador HEVC proporcionados anteriormente, el elemento numArrays indica el número de matrices de unidades NAL del (de los) tipo(s) indicado(s). Los elementos array_completeness de los registros de configuración de descodificador HEVC pueden indicar si el flujo puede incluir unidades NAL de un tipo dado además de las unidades NAL del tipo dado que están en una matriz en el registro de configuración de descodificador HEVC. Por ejemplo, un elemento de array_completeness igual a 1 puede indicar que todas las unidades NAL del tipo dado están en la matriz de unidades NAL en el registro de configuración de descodificador HEVC y ninguna está en el flujo. Un elemento array_completeness igual a 0 indica que puede haber unidades NAL adicionales del tipo indicado en el flujo. Los valores predeterminados y permitidos del elemento array_completeness pueden estar limitados por el código de entrada de muestras.
[0174] Además, en el ejemplo de sintaxis de los registros de configuración de descodificador HEVC proporcionados anteriormente, el elemento nal_unit_type indica el tipo de las unidades NAL en la matriz de unidades NAL. En este ejemplo, todas las unidades 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 ISO/IEC 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.
[0175] En la sintaxis de registro de configuración de descodificador HVEC de ejemplo proporcionado anteriormente, el elemento numNalus indica el número de unidades NAL del tipo indicado incluido en el registro de configuración de descodificador HEVC para el flujo al que se aplica este registro de configuración de descodificador HEVC. En algunos ejemplos, el elemento NAL_unit_type del registro de configuración de descodificador HEVC puede indicar que el registro de configuración de descodificador HEVC incluye una matriz SEI (es decir, una matriz de unidades SEI NAL). Por ejemplo, en tales ejemplos, si el numNalus es igual a cuatro, la matriz SEI puede constar de 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.
[0176] Además, en el ejemplo de sintaxis de registros de configuración de descodificador HEVC proporcionados anteriormente, el elemento nalUnitLength del registro de configuración de descodificador HEVC indica la longitud en bytes de una unidad NAL. El elemento nalUnit del registro de configuración de descodificador HEVC puede contener un VPS, un SPS, un PPS o una unidad SEI NAL declarativa, como se especifica en ISO/IEC 23008-2.
[0177] La FIG. 4 es un diagrama de flujo que ilustra un ejemplo de operación 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 cuadro que identifica un grupo de muestras que contiene una o más muestras de entre la pluralidad de muestras. El cuadro indica además que cada muestra en el grupo de muestras es una muestra de STSA.
[0178] Además, en el ejemplo de la FIG. 4, un segundo dispositivo (p. ej., el descodificador de vídeo 30 u otro dispositivo) identifica, basándose en los datos en el cuadro que identifica el grupo de muestras, las muestras de STSA de entre las muestras en el archivo que contiene el cuadro (204).
[0179] La FIG. 5 es un diagrama de flujo que ilustra una operación 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub­ capa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0180] 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 sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS (254).
[0181] 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 cuadro de película 302 y una pluralidad de cuadros de datos de medios 304. Cada uno de los cuadros de datos de medios 304 puede incluir una o más muestras 305. Además, en el ejemplo de la FIG. 6, el cuadro de película 302 incluye un cuadro de pista 306. En otros ejemplos, el cuadro de película 302 puede incluir múltiples cuadros de pista para diferentes pistas. El cuadro de pista 306 incluye un cuadro de tabla de muestras 308. El cuadro de tabla de muestras 308 incluye un cuadro SampleToGroup 310, un cuadro SampleGroupDescription 312 y un registro de configuración de descodificador HEVC 314. En otros ejemplos, el cuadro de tabla de muestras 308 puede incluir otros cuadros además del cuadro SampleToGroup 310 y el cuadro SampleGroupDescription 312, y/o puede incluir múltiples cuadros SampleToGroup y cuadros SampleGroupDescription.
[0182] De acuerdo con una o más técnicas de ejemplo de esta divulgación, el cuadro SampleToGroup 310 puede identificar un grupo de muestras que contiene una o más muestras de entre las muestras 305. El cuadro SampleToGroup 310 puede indicar además que cada muestra en el grupo de muestras es una muestra de STSA. Por lo tanto, un dispositivo puede identificar, basándose en los datos en el cuadro SampleToGroup 310, muestras de 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 cuadro SampleToGroup 310 puede indicar que cada muestra en el grupo de muestras es una muestra de dentro. Por lo tanto, un dispositivo puede identificar, basándose en los datos en el cuadro SampleToGroup 310, muestras de dentro de entre las muestras 305 en el archivo 300.
[0183] De acuerdo con una o más técnicas de ejemplo adicionales de esta divulgación, el registro de configuración de 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 de descodificador HEVC 314, tienen elementos sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS. Por lo tanto, un dispositivo puede determinar, basándose en un elemento en el registro de configuración de descodificador HEVC 314 en el cuadro 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 de descodificador HEVC 314, tienen elementos sintácticos que indican que el cambio ascendente de sub-capa temporal a cualquier sub-capa temporal superior se puede realizar en cualquier muestra asociada con los SPS.
[0184] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o 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 mediante 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 tal como medios de almacenamiento de datos o medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático desde 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 (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 esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0185] A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. Asimismo, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde una sede de la Red, un servidor u otro origen remoto 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 se incluyen en la definición de medio. Sin embargo, debería entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos normalmente emiten datos magnéticamente, mientras que otros discos emiten datos ópticamente con láseres. Las combinaciones de lo anterior también deberían incluirse dentro del alcance de los medios legibles por ordenador.
[0186] 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 in situ (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, 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 software dedicados, configurados para la codificación y la descodificación, o incorporados en un códec combinado. También, las técnicas se podrían implementar completamente en uno o más circuitos o elementos lógicos.
[0187] 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 (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec, o ser proporcionadas por un grupo de unidades de hardware interoperativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, conjuntamente con software y/o firmware adecuados.
[0188] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (14)

  1. REIVINDICACIONES
    i . Un procedimiento para procesar datos de vídeo, con el procedimiento que comprende determinar el valor de un elemento incluido en una entrada de muestras de un archivo que contiene muestras que contienen imágenes codificadas de los datos de vídeo, en el que:
    donde el elemento tiene un primer valor, determinar que todos los conjuntos de parámetros de secuencia (SPS) que se activan cuando se descodifica un flujo al cual se aplica la entrada de muestras tienen elementos sintácticos que indican que el cambio ascendente de subcapa temporal a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS; y,
    donde el elemento tiene un segundo valor, determinar que no se garantiza que el cambio ascendente de subcapa temporal a cualquier subcapa temporal superior se pueda realizar en cualquiera de las muestras asociadas con los SPS,
    en el que el cambio ascendente de subcapa temporal comprende una acción de comenzar a reenviar las unidades de Capa de Abstracción de Red (NAL) de una determinada subcapa temporal que no se han reenviado hasta ese punto.
  2. 2. El procedimiento según la reivindicación 1, que comprende además realizar un cambio ascendente de subcapa temporal en una muestra asociada con uno de los SPS.
  3. 3. Un procedimiento para almacenar datos de vídeo codificados, el procedimiento que comprende generar un archivo que almacena muestras codificadas que contienen imágenes codificadas de los datos de vídeo, el archivo que también incluye una entrada de muestras que incluye un elemento, en el que:
    el elemento tiene un primer valor que indica que todos los conjuntos de parámetros de secuencia (SPS) que se activan cuando se descodifica un flujo al que se aplica la entrada de muestras tienen elementos sintácticos que indican que el cambio ascendente de subcapa temporal a cualquier subcapa temporal superior puede realizarse en cualquier muestra asociada con los SPS; o,
    el elemento tiene un segundo valor que indica que no está garantizado que el cambio ascendente de sub­ capa temporal a cualquier sub-capa temporal superior se pueda realizar en cualquiera de las muestras asociadas con los SPS,
    en el que el cambio ascendente de subcapa temporal comprende una acción de comenzar a reenviar las unidades de Capa de Abstracción de Red (NAL) de una determinada subcapa temporal que no se han reenviado hasta ese punto.
  4. 4. El procedimiento según la reivindicación 1 o la reivindicación 3, en el que el elemento está en un registro de configuración de descodificador que está en la entrada de muestras.
  5. 5. El procedimiento según la reivindicación 1 o la reivindicación 3, en el que los elementos sintácticos son elementos sintácticos sps_temporal_id_nesting_flag.
  6. 6. El procedimiento según la reivindicación 1 o la reivindicación 3, en el que:
    el elemento es un primer elemento,
    la entrada de muestras incluye un elemento de espacio de perfil, y
    todos los elementos sintácticos de indicador de espacio de perfil general en los conjuntos de parámetros que se activan cuando se descodifica el flujo tienen valores que coinciden con los valores del elemento de espacio de perfil.
  7. 7. El procedimiento según la reivindicación 1 o la reivindicación 3, en el que:
    el elemento es un primer elemento,
    la entrada de muestras incluye un elemento de indicador de grado,
    todos los elementos sintácticos de indicador de grado general en los conjuntos de parámetros que se activan cuando se descodifica el flujo tienen valores que coinciden con un valor del elemento de indicador de grado, y
    cada uno de los elementos sintácticos de indicador de grado general indica un contexto de grado para la interpretación de los elementos sintácticos de indicador de nivel general que indican los niveles a los que se ajustan las secuencias de vídeo codificadas.
  8. 8. El procedimiento según la reivindicación 1 o la reivindicación 3, en el que:
    el elemento es un primer elemento,
    la entrada de muestras incluye un elemento indicador de perfil,
    todos los elementos sintácticos de indicación de perfil en los conjuntos de parámetros que se activan cuando se descodifica el flujo tienen valores que coinciden con un valor del elemento de indicación de perfil, y cada uno de los elementos sintácticos de indicación de perfil indica un perfil al que se ajusta una secuencia de vídeo codificada.
  9. 9. El procedimiento según la reivindicación 1 o la reivindicación 3,
    el elemento es un primer elemento,
    la entrada de muestras incluye un elemento de indicaciones de compatibilidad de perfil, y
    todos los elementos sintácticos de indicador de compatibilidad de perfil general en los conjuntos de parámetros que se activan cuando se descodifica el flujo tienen valores que coinciden con los valores del elemento de indicaciones de compatibilidad de perfil.
  10. 10. El procedimiento según la reivindicación 1 o la reivindicación 3, en el que:
    el elemento es un primer elemento,
    la entrada de muestras incluye un elemento de indicadores que indican restricción, y
    todos los elementos sintácticos de 16 bits de cero general reservados en los conjuntos de parámetros que se activan cuando se descodifica el flujo tienen valores que coinciden con los valores del elemento de indicaciones de compatibilidad de perfil.
  11. 11. El procedimiento según la reivindicación 1 o la reivindicación 3, en el que:
    el elemento es un primer elemento,
    la entrada de muestras incluye un elemento indicador de nivel,
    todos los elementos sintácticos de indicación de nivel general en los conjuntos de parámetros que se activan cuando se descodifica el flujo tienen valores que coinciden con un valor del elemento indicador de nivel, y cada uno de los elementos sintácticos de indicación de nivel general indica un nivel al que se ajusta una secuencia de vídeo codificada.
  12. 12. Un dispositivo para procesar datos de vídeo que comprende:
    medios para recibir un archivo que contiene muestras que contienen imágenes codificadas de datos de vídeo; y
    medios para determinar el valor de un elemento incluido en una entrada de muestras del archivo que contiene imágenes codificadas de los datos de vídeo, en el que:
    donde el elemento tiene un primer valor, determinar que todos los conjuntos de parámetros de secuencia (SPS) que se activan cuando se descodifica un flujo al cual se aplica la entrada de muestras tienen elementos sintácticos que indican que el cambio ascendente de subcapa temporal a cualquier subcapa temporal superior se puede realizar en cualquier muestra asociada con los SPS; y,
    donde el elemento tiene un segundo valor, determinar que no se garantiza que el cambio ascendente de subcapa temporal a cualquier subcapa temporal superior se pueda realizar en cualquiera de las muestras asociadas con los SPS,
    en el que el cambio ascendente de subcapa temporal comprende una acción de comenzar a reenviar las unidades de Capa de Abstracción de Red (NAL) de una determinada subcapa temporal que no se han reenviado hasta ese punto.
  13. 13. Un dispositivo para procesar datos de vídeo codificados que comprende: medios para generar un archivo que almacena muestras codificadas que contienen imágenes codificadas de datos de vídeo, el archivo que también incluye una entrada de muestras que incluye un elemento, en el que:
    el elemento tiene un primer valor que indica si todos los conjuntos de parámetros de secuencia (SPS) que se activan cuando se descodifica un flujo al cual se aplica la entrada de muestras tienen elementos sintácticos que indican que el cambio ascendente de subcapa temporal a cualquier subcapa temporal superior puede realizarse en cualquier muestra asociada con los SPS; o,
    el elemento tiene un segundo valor que indica que no está garantizado que el cambio ascendente de sub­ capa temporal a cualquier sub-capa temporal superior se pueda realizar en cualquiera de las muestras asociadas con los SPS,
    en el que el cambio ascendente de subcapa temporal comprende una acción de comenzar a reenviar las unidades de Capa de Abstracción de Red (NAL) de una determinada subcapa temporal que no se han reenviado hasta ese punto; y
    medios para generar el archivo.
  14. 14. Un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, configuran uno o más procesadores para realizar el procedimiento de acuerdo con una cualquiera de las reivindicaciones 1 a 11.
ES13776910T 2012-10-04 2013-10-02 Formato de archivo para datos de vídeo Active ES2716852T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261709748P 2012-10-04 2012-10-04
US14/043,383 US10038899B2 (en) 2012-10-04 2013-10-01 File format for video data
PCT/US2013/062992 WO2014055606A2 (en) 2012-10-04 2013-10-02 File format for video data

Publications (1)

Publication Number Publication Date
ES2716852T3 true ES2716852T3 (es) 2019-06-17

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 After (1)

Application Number Title Priority Date Filing Date
ES13777406T Active ES2854877T3 (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
ES2854877T3 (es) 2021-09-23
CN104704830A (zh) 2015-06-10
DK2904799T3 (da) 2021-03-15
CN104704829B (zh) 2018-12-04
JP2015537421A (ja) 2015-12-24
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
ES2716852T3 (es) Formato de archivo para datos de vídeo
ES2713087T3 (es) Procedimiento de codificación de vídeo y de almacenamiento de contenido de vídeo
ES2720662T3 (es) Diseños de formato de archivo de vídeo multicapa
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
ES2904350T3 (es) Almacenamiento de pistas separadas de vistas de textura y de profundidad para codificación de múltiples vistas más profundidad
US9521393B2 (en) Non-nested SEI messages in video coding
ES2711535T3 (es) Procedimiento y dispositivo para probar la conformidad de parámetros hipotéticos de descodificador de referencia para esquemas de partición en la codificación de vídeo
ES2813908T3 (es) Alineación del grupo de muestras de punto de funcionamiento en formato de archivo de flujos de bits multicapa
ES2748561T3 (es) Unidades de acceso IRAP y conmutación y empalme de flujos de bits
BR112016008374B1 (pt) Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas
TW201340723A (zh) 用於三維視訊寫碼之網路抽象層單元標頭設計
US20160021398A1 (en) Transport stream for carriage of video coding extensions
ES2693683T3 (es) Extracción de flujo de bits en vídeo tridimensional
ES2711892T3 (es) Señalización de puntos de operación para el transporte de extensiones de la HEVC
BR112016015903B1 (pt) Método e dispositivo de decodificação de dados de vídeo, e, memória legível por computador