ES2781307T3 - Mejora en la agrupación de mosaicos en formatos de archivo HEVC y L-HEVC - Google Patents

Mejora en la agrupación de mosaicos en formatos de archivo HEVC y L-HEVC Download PDF

Info

Publication number
ES2781307T3
ES2781307T3 ES17720270T ES17720270T ES2781307T3 ES 2781307 T3 ES2781307 T3 ES 2781307T3 ES 17720270 T ES17720270 T ES 17720270T ES 17720270 T ES17720270 T ES 17720270T ES 2781307 T3 ES2781307 T3 ES 2781307T3
Authority
ES
Spain
Prior art keywords
tiles
tile
tile set
file
syntactic element
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
ES17720270T
Other languages
English (en)
Inventor
Fnu Hendry
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 ES2781307T3 publication Critical patent/ES2781307T3/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/85406Content authoring involving a specific file format, e.g. MP4 format
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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)
  • Computer Security & Cryptography (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Processing Or Creating Images (AREA)

Abstract

Un procedimiento para el almacenamiento de datos de vídeo, comprendiendo el procedimiento: recibir, por un dispositivo de generación de archivos, un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva; generar, por el dispositivo de generación de archivos, un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL del flujo de bits a un conjunto de mosaicos, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular; y generar, por el dispositivo de generación de archivos, una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, caracterizado por que la entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos, y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos.

Description

DESCRIPCIÓN
Mejora en la agrupación de mosaicos en formatos de archivo HEVC y L-HEVC
Campo técnico
[0001] La presente divulgación se refiere a la codificación de vídeo y a formatos de archivo para datos de vídeo codificados.
Antecedentes
[0002] Las capacidades de vídeo digital se pueden incorporar en 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 avanzada de vídeo (AVC), ITU-T-H.265, codificación de vídeo de alta eficacia (HEVC) 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 eficacia implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (interimagen) 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 de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo, que también se pueden denominar bloques arbolados, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de vídeo en un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia de bloques contiguos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia.
Breve descripción
[0004] Uno o más aspectos de la presente divulgación se refieren al almacenamiento de contenido de vídeo en formatos de archivo. Por ejemplo, las técnicas de la presente divulgación pueden mejorar el manejo de la agrupación de mosaicos (“tiles”) en los formatos de archivo HEVC y HEVC en capas (L-HEVC, también simplificado como LHEVC).
[0005] El documento del MPEG N15640 ("Study of ISO/IEC DIS 14496-15, 4.a edición", 113. MPEG° MEETING; 19­ 10-2015 - 23-10-2015; GINEBRA; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11), n.° N15640, 7 de diciembre de 2015 (2015-12-07), XP030022328) divulga el borrador de la norma para el transporte de vídeo estructurado de unidad de capa de abstracción de red (NAL) en el formato de archivo de medios base ISO.
[0006] En un ejemplo, la presente divulgación describe un procedimiento para el almacenamiento de datos de vídeo, comprendiendo el procedimiento: recibir, por un dispositivo de generación de archivos, un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva; generar, por el dispositivo de generación de archivos, un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL del flujo de bits a un conjunto de mosaicos, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular; y generar, por el dispositivo de generación de archivos, una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0007] En otro ejemplo, la presente divulgación describe un procedimiento de procesamiento de un archivo que almacena datos de vídeo codificados, comprendiendo el procedimiento: obtener, por un dispositivo de procesamiento de archivos, un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL de un flujo de bits a un conjunto de mosaicos, incluyendo el flujo de bits una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, no teniendo una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos una conformación rectangular; obtener, por el dispositivo de procesamiento de archivos, una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos; y procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura.
[0008] En otro ejemplo, la presente divulgación describe un dispositivo para generar un archivo para almacenar datos de vídeo, comprendiendo el dispositivo: una memoria configurada para almacenar un archivo para el almacenamiento de contenido de vídeo; y uno o más procesadores configurados para: recibir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva; generar un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en el archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL del flujo de bits a un conjunto de mosaicos, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular; y generar una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0009] En otro ejemplo, la presente divulgación describe un dispositivo para procesar un archivo que almacena datos de vídeo codificados, comprendiendo el dispositivo: una memoria configurada para almacenar un archivo para el almacenamiento de contenido de vídeo; y uno o más procesadores configurados para: obtener un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL de un flujo de bits a un conjunto de mosaicos, incluyendo el flujo de bits una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, no teniendo una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos conformación rectangular; obtener una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos; y procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura.
[0010] En otro ejemplo, la presente divulgación describe un dispositivo para generar un archivo para el almacenamiento de datos de vídeo, comprendiendo el dispositivo: medios para recibir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva; medios para generar un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL del flujo de bits a un conjunto de mosaicos, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular; y medios para generar una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0011] En otro ejemplo, la presente divulgación describe un dispositivo para procesar un archivo que almacena datos de vídeo codificados, comprendiendo el dispositivo: medios para obtener un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL de un flujo de bits a un conjunto de mosaicos, incluyendo el flujo de bits una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, no teniendo una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos conformación rectangular; medios para obtener una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos; y medios para procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura.
[0012] En otro ejemplo, la presente divulgación describe un medio de almacenamiento de datos legible por ordenador que tiene instrucciones almacenadas en el mismo almacenado que, cuando se ejecutan, configuran un dispositivo para: recibir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva; generar un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL del flujo de bits a un conjunto de mosaicos, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular; y generar una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0013] En otro ejemplo, la presente divulgación describe un medio de almacenamiento de datos legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, configuran un dispositivo para: obtener, por un dispositivo de tratamiento de archivos, un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL de un flujo de bits a un conjunto de mosaicos, incluyendo el flujo de bits una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, no teniendo una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos conformación rectangular; obtener, por el dispositivo de procesamiento de archivos, una entrada de grupo de conjuntos de mosaicos en el archivo, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos, incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura, especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos; y procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura.
[0014] Los detalles de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y la descripción a continuación. La invención se define en las reivindicaciones adjuntas. Los modos de realización, excepto los relacionados con las reivindicaciones, se refieren a ejemplos útiles para entender la invención pero que no representan modos de realización de la presente invención reivindicada. Estos ejemplos se dan solo para propósitos ilustrativos.
Breve descripción de los dibujos
[0015]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede usar las técnicas descritas en la presente divulgación.
La FIG. 2 es un diagrama conceptual que ilustra mosaicos y fragmentos de ejemplo.
La FIG. 3 es un diagrama conceptual que ilustra un ejemplo donde una unidad de capa de abstracción de red (NAL) incluye múltiples mosaicos.
La FIG. 4 es un diagrama conceptual que ilustra una imagen de ejemplo que incluye un conjunto de mosaicos delimitado por un área rectangular mínima que contiene un conjunto de mosaicos, de acuerdo con una o más técnicas de la presente divulgación.
La FIG. 5 es un diagrama conceptual que ilustra conjuntos de mosaicos que cubren la misma región en diferentes capas.
La FIG. 6 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en la presente divulgación.
La FIG. 7 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas descritas en la presente divulgación.
La FIG. 8 es un diagrama conceptual que ilustra una estructura de ejemplo de un archivo, de acuerdo con una o más técnicas de la presente divulgación.
La FIG. 9 es un diagrama conceptual que ilustra una estructura de ejemplo de un archivo, de acuerdo con una o más técnicas de la presente divulgación.
La FIG. 10 es un diagrama conceptual que ilustra un grupo de entrada de conjuntos de mosaicos, de acuerdo con una o más técnicas de la presente divulgación.
La FIG. 11 es un diagrama de flujo que ilustra un ejemplo de un procedimiento para generar un archivo para el almacenamiento de datos de vídeo, de acuerdo con una técnica de la presente divulgación.
La FIG. 12 es un diagrama de flujo que ilustra un ejemplo de un procedimiento para procesar un archivo que almacena datos de vídeo codificados, de acuerdo con una técnica de la presente divulgación.
Descripción detallada
[0016] El formato de archivo de medios base de la Organización Internacional de Normalización (ISO) (ISOBMFF) y los formatos de archivo derivados del formato de archivo de medios base de la ISO están diseñados para el almacenamiento de contenido de vídeo. El ISOBMFF se ha extendido para funcionar con diversas normas de codificación de vídeo, tales como H.265, codificación de vídeo de alta eficacia (HEVC), H.264/AVC y otras normas de codificación de vídeo.
[0017] Las imágenes se pueden dividir en regiones rectangulares llamadas "mosaicos". En algunas circunstancias, puede ser deseable solo la lectura de las unidades de capa abstracta de red (NAL) de mosaicos particulares de una serie de imágenes. Por ejemplo, puede ser deseable transmitir las unidades de NAL que incluyan bloques codificados de las mitades superiores de imágenes sin transmitir las unidades de NAL que incluyan bloques codificados de las mitades inferiores de imágenes. Sin embargo, los mecanismos en las extensiones del formato ISOBMFF tienen varios problemas que pueden reducir la eficacia de acceder, desde un archivo, a información específica de mosaicos y conjuntos de mosaicos. Las técnicas de la presente divulgación pueden mejorar la eficacia de acceso a dicha información.
[0018] Por ejemplo, un dispositivo de generación de archivos puede recibir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de datos de vídeo. En este ejemplo, las imágenes de los datos de vídeo incluyen una imagen actual, la imagen actual se divide en una pluralidad de mosaicos, y cada mosaico respectivo de la pluralidad de mosaicos es una región rectangular respectiva. Además, en este ejemplo, el dispositivo de generación de archivos puede generar un cuadro de entrada de mapa de unidades de NAL en un archivo. El cuadro de entrada de mapa de unidades de NAL puede asociar unidades de NAL del flujo de bits a un conjunto de mosaicos. El conjunto de mosaicos incluye dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual. Además, en algunos casos, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular. Adicionalmente, en este ejemplo, el dispositivo de generación de archivos puede generar una entrada de grupo de conjuntos de mosaicos en el archivo. En este ejemplo, la entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos. La entrada de grupo de conjuntos de mosaicos puede incluir un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura. El elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de ancho especifica un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de altura especifica una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0019] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 10 de ejemplo que puede usar las técnicas descritas en la presente divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de vídeo codificados que se van a descodificar en un momento posterior por un dispositivo de destino 14. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tableta, descodificadores, equipos telefónicos de mano tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica. Por consiguiente, el dispositivo de origen 12 y el dispositivo de destino 14 se pueden considerar dispositivos de comunicación inalámbrica. El dispositivo de origen 12 y el dispositivo de destino 14 se pueden considerar dispositivos de vídeo.
[0020] 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 casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captación de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contiene vídeo captado previamente, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el vídeo de origen, o una combinación de dichas fuentes. Sin embargo, las técnicas descritas en la presente divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o por cable.
[0021] El codificador de vídeo 20 puede codificar el vídeo captado, precaptado o generado por ordenador. El dispositivo de origen 12 puede transmitir los datos de vídeo codificados directamente a un dispositivo de destino 14 por medio de una interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados se pueden almacenar también (o de forma alternativa) en el dispositivo de almacenamiento 33 para un posterior acceso por el dispositivo de destino 14 u otros dispositivos, para su descodificación y/o reproducción.
[0022] El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. Además, en el ejemplo de la FIG. 1, el dispositivo de destino 14 incluye un medio de almacenamiento 29 y una unidad de análisis sintáctico de archivos 31. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 puede recibir los datos de vídeo codificado sobre un enlace 16. Los datos de vídeo codificados comunicados sobre el enlace 16, o proporcionados en el dispositivo de almacenamiento 33, pueden incluir una variedad de elementos sintácticos generados por el codificador de vídeo 20 para su uso por un descodificador de vídeo, tal como el descodificador de vídeo 30, en la descodificación de los datos de vídeo. Dichos elementos sintácticos se pueden incluir con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenar en un medio de almacenamiento o almacenar en un servidor de archivos.
[0023] La unidad de análisis sintáctico de archivos 31 puede obtener un archivo y procesar el archivo de diversas maneras. Por ejemplo, la unidad de análisis sintáctico de archivos 31 puede analizar sintácticamente el archivo para obtener información del archivo. Por consiguiente, un dispositivo que implementa la unidad de análisis sintáctico de archivos 31 se puede denominar dispositivo de procesamiento de archivos. Aunque se muestra como parte del dispositivo de destino 14, la unidad de análisis sintáctico de archivos 31 puede estar separada del dispositivo de destino 14. Por ejemplo, la unidad de análisis sintáctico de archivos 31 se puede implementar en un dispositivo de red, tal como un elemento de red compatible con medios (MANE), un dispositivo de red de entrega de contenido u otro tipo de entidad de red.
[0024] El dispositivo de visualización 32 puede estar integrado con, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también se puede configurar para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo descodificados ante un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0025] El codificador de vídeo 20 y el descodificador de vídeo 30 se pueden implementar, cada uno, como cualquiera de una variedad de circuitos codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio adecuado no transitorio legible por ordenador y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden incluir en uno o más codificadores o descodificadores, de los que cualquiera se puede integrar como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0026] La presente divulgación se puede referir en general a la "señalización" de determinada información, tal como los elementos sintácticos. El término "señalización" se puede referir en general a la comunicación de elementos sintácticos y/o a otros datos usados para descodificar los datos de vídeo codificados. Dicha comunicación se puede producir en tiempo real o casi real. De forma alternativa, dicha comunicación se puede producir durante un período de tiempo, tal como se podría producir cuando se almacenan elementos sintácticos en un medio de almacenamiento legible por ordenador en un flujo de bits en el momento de la codificación, que a continuación se pueden recuperar por un dispositivo de descodificación en cualquier momento después de almacenarse en este medio.
[0027] El dispositivo de destino 14 puede recibir los datos de vídeo codificados que se van a descodificar por medio del enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo que puede transferir los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para posibilitar que el dispositivo de origen 12 transmita datos de vídeo codificados directamente a un dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o por cable, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
[0028] De forma alternativa, la interfaz de salida 22 puede emitir datos codificados a un dispositivo de almacenamiento 33. De forma similar, la interfaz de entrada 28 puede acceder al dispositivo de almacenamiento de datos codificados 33. El dispositivo de almacenamiento 33 puede incluir cualquiera de una variedad de medios de almacenamiento de datos de acceso distribuido o local, tales como una unidad de disco duro, discos Blu-ray, DVD, CD-ROM, una memoria flash, una memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En otro ejemplo, el dispositivo de almacenamiento 33 puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados en el dispositivo de almacenamiento 33 por medio de transmisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor que pueda almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen un servidor de red (por ejemplo, para un sitio web), un servidor de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento adjuntos a la red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión wifi), una conexión por cable (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas que sea adecuada 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 dispositivo de almacenamiento 33 puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0029] Las técnicas de la presente divulgación no están limitadas necesariamente a aplicaciones o contextos inalámbricos. Las técnicas se pueden aplicar a la codificación de vídeo como apoyo a cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo por transmisión continua, por ejemplo, por medio de Internet, codificación de datos de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, descodificación de datos de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para admitir una transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o videotelefonía.
[0030] Además, en el ejemplo de la FIG. 1, el sistema de codificación de vídeo 10 incluye un dispositivo de generación de archivos 34. El dispositivo de generación de archivos 34 puede recibir datos de vídeo codificados generados por el dispositivo de origen 12. El dispositivo de generación de archivos 34 puede generar un archivo que incluye los datos de vídeo codificados. El dispositivo de destino 14 puede recibir el archivo generado por el dispositivo de generación de archivos 34. En diversos ejemplos, el dispositivo de generación de archivos 34 puede incluir diversos tipos de dispositivos informáticos. Por ejemplo, el dispositivo de generación de archivos 34 puede comprender un dispositivo de codificación de vídeo, un elemento de red compatible con medios (MANE), un dispositivo informático de servidor, un dispositivo informático personal, un dispositivo informático de propósito especial, un dispositivo informático comercial u otro tipo de dispositivo informático. En algunos ejemplos, el dispositivo de generación de archivos 34 es parte de una red de entrega de contenido. En algunos ejemplos, el dispositivo de generación de archivos 34 se implementa como parte del dispositivo de origen 12. El dispositivo de generación de archivos 34 puede recibir datos de vídeo codificados desde el dispositivo de origen 12 por medio de un canal tal como el enlace 16. Además, el dispositivo de destino 14 puede recibir el archivo desde el dispositivo de generación de archivos 34 por medio de un canal tal como el enlace 16. El dispositivo de generación de archivos 34 se puede considerar un dispositivo de vídeo. Como se muestra en el ejemplo de la FIG. 1, el dispositivo de generación de archivos 34 puede comprender una memoria 36 configurada para almacenar un archivo que contiene contenido de vídeo codificado. En algunos ejemplos, el dispositivo de generación de archivos 34 se puede implementar en circuitos, o una combinación de circuitos de hardware y software.
[0031] En otros ejemplos, el dispositivo de origen 12 u otro dispositivo informático puede generar un archivo que incluye los datos de vídeo codificados. Sin embargo, para facilitar la explicación, la presente divulgación describe que el dispositivo de generación de archivos 34 genera el archivo. No obstante, se debe entender que las descripciones del dispositivo de generación de archivos 34 que genera el archivo son aplicables a los dispositivos informáticos en general.
[0032] En algunos ejemplos, un MANE, un servidor u otro tipo de dispositivo puede comprender una memoria configurada para almacenar un archivo generado de acuerdo con las técnicas de la presente divulgación. Este dispositivo puede procesar el archivo (por ejemplo, obteniendo elementos sintácticos del archivo) y usar los elementos sintácticos obtenidos para diversos propósitos, tales como para reenviar contenido particular dentro del archivo a otro dispositivo, tal como el dispositivo de destino 14.
[0033] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de codificación de vídeo de alta eficacia (HEVC) o una extensión de la misma. La norma HEVC también se puede denominar ISO/IEC 23008-2. Se ha finalizado el diseño de la HEVC por el Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una o más de estas normas u otras normas. Dichas otras normas de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual, ITU-T H.264 o ISO/IEC MPEG-4 AVC, incluyendo sus extensiones de codificación de vídeo escalable (SVC) y codificación de vídeo multivista (MVC).
[0034] De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas patentadas o industriales, tales como la norma ITU-T H.264, denominada de forma alternativa MPEG-4, parte 10, codificación avanzada de vídeo (AVC) o extensiones de dichas normas. Sin embargo, las técnicas de la presente divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de compresión de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPeG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus extensiones de codificación de vídeo escalable (SVC) y de codificación de vídeo multivista (MVC).
[0035] En general, en HEVC, una trama o imagen de vídeo se puede dividir en una secuencia de bloques arbolados o unidades de codificación de máximo tamaño (LCU) que incluyen muestras tanto de luma como de croma. Los bloques arbolados también se pueden denominar unidades de árbol de codificación (CTU). Un bloque arbolado tiene un propósito similar a un macrobloque de la norma H.264/AVC. Un fragmento incluye un número de bloques arbolados consecutivos en orden de codificación. Una trama o imagen de vídeo se puede dividir en uno o más fragmentos. Cada bloque arbolado se puede dividir en unidades de codificación (CU) de acuerdo con un árbol cuaternario. Por ejemplo, un bloque arbolado, como un nodo raíz del árbol cuaternario, se puede separar en cuatro nodos hijo, y cada nodo hijo puede, a su vez, ser un nodo padre y separarse en otros cuatro nodos hijo. Un nodo hijo final, no separado, como un nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces que se puede separar un bloque arbolado, y también pueden definir un tamaño mínimo de los nodos de codificación.
[0036] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe tener conformación cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño de una CTU, con un máximo de 64x64 píxeles o mayor. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir entre si la CU está codificada en modo directo o de salto, codificada en modo de intrapredicción o codificada en modo de interpredicción. Las PU se pueden dividir para tener una conformación no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuaternario. Una TU puede tener una conformación cuadrada o no cuadrada.
[0037] La norma HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU se basa típicamente en el tamaño de las PU dentro de una CU dada definida para una LCU dividida, aunque puede que no sea siempre así. Las TU son típicamente del mismo tamaño o más pequeñas que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU se pueden subdividir en unidades más pequeñas usando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). Los nodos hoja del RQT se pueden denominar TU. Los valores de diferencias de píxeles asociados a las TU se pueden transformar para producir coeficientes de transformada, que se pueden cuantificar.
[0038] En general, una PU incluye datos relacionados con el procedimiento de predicción. Por ejemplo, cuando la PU se codifica en intramodo, la PU puede incluir datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU se codifica en intermodo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, la lista 0, la lista 1) para el vector de movimiento.
[0039] En general, se usa una TU para los procedimientos de transformada y de cuantificación. Una CU dada que tiene una o más PU también puede incluir una o más TU. Seguidamente a la predicción, el codificador de vídeo 20 puede calcular valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencias de píxeles que se pueden transformar en coeficientes de transformada, cuantificar y explorar usando las TU, para producir coeficientes de transformada en serie para la codificación por entropía. La presente divulgación usa típicamente el término "bloque de vídeo" para referirse a un nodo de codificación (es decir, un bloque de codificación) de una CU. En algunos casos específicos, la presente divulgación también puede usar el término "bloque de vídeo" para referirse a un bloque arbolado, es decir, una LCU o una CU, que incluye un nodo de codificación y PU y TU.
[0040] Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. El codificador de vídeo 20 funciona típicamente en bloques de vídeo dentro de fragmentos de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
[0041] Seguidamente a la codificación de intrapredicción o interpredicción usando las PU de una CU, el codificador de vídeo 20 puede calcular los datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio espacial (también denominado dominio de píxel) y las TU pueden comprender coeficientes en el dominio de transformada seguidamente a la aplicación de una transformada, por ejemplo, una transformada discreta de coseno (DCT), una transformada de enteros, una transformada de ondículas o una transformada conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU, incluyendo los datos residuales para la CU y, a continuación, transformar las TU para producir coeficientes de transformada para la CU.
[0042] Seguidamente a cualquier transformada para producir coeficientes de transformada, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformada. La cuantificación se refiere, en general, a un procedimiento en el que coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El procedimiento de cuantificación puede reducir la profundidad de bits asociada a algunos o a todos los coeficientes.
[0043] Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) o con otra metodología de codificación por entropía. El codificador de vídeo 20 también puede codificar por entropía los elementos sintácticos asociados a los datos de vídeo codificados, para su uso por el descodificador de vídeo 30 en la descodificación de los datos de vídeo.
[0044] El codificador de vídeo 20 puede emitir un flujo de bits que incluya una secuencia de bits que forme una representación de imágenes codificadas y datos asociados. El término "flujo de bits" puede ser un término colectivo usado para referirse a un flujo de unidades de capa de abstracción de red (NAL) (por ejemplo, una secuencia de unidades de NAL) o bien un flujo de octetos (por ejemplo, una encapsulación de un flujo de unidades de NAL que contiene prefijos de código de inicio y unidades de NAL como se especifica en el Anexo B de la norma HEVC). Una unidad de NAL es una estructura sintáctica que contiene una indicación del tipo de datos en la unidad de NAL y los octetos que contienen esos datos en forma de una carga útil de secuencia de octetos sin procesar (RBSP) entremezclados como sea necesario con bits de prevención de emulación. Cada una de las unidades de NAL puede incluir una cabecera de unidad de NAL y puede encapsular una RBSP. La cabecera de unidad de NAL puede incluir un elemento sintáctico que indica un código de tipo de unidad de NAL. El código de tipo de unidad de NAL especificado por la cabecera de unidad de NAL de una unidad de NAL indica el tipo de la unidad de NAL. Una RBSP puede ser una estructura sintáctica que contiene un número entero de octetos que están encapsulados dentro de una unidad de NAL. En algunos casos, una RBSP incluye bits cero.
[0045] Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para un segmento de fragmento, un tercer tipo de unidad de NAL puede encapsular una RBSP para información de mejora complementaria (SEI) y así sucesivamente. Las unidades de NAL que encapsulan las RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes SEI) se pueden denominar unidades de NAL de capa de codificación de vídeo (VCL). Cualquier unidad de NAL distinta de una unidad de NAL de VCL se puede denominar unidad de NAL no de VCL. Las unidades de NAL que contienen conjuntos de parámetros (por ejemplo, conjuntos de parámetros de vídeo (VPS), conjuntos de parámetros de secuencia (SPS), PPS u otros tipos de conjuntos de parámetros) se pueden denominar unidades de NAL de conjuntos de parámetros.
[0046] La presente divulgación se puede referir a una unidad de NAL que encapsula una RBSP para un fragmento de segmento como una unidad de NAL de fragmento codificado. Como se define en HEVC, un segmento de fragmento es un número entero de CTU ordenadas consecutivamente en una exploración en mosaico y contenidas en una única unidad de NAL. Por el contrario, en HEVC, un fragmento puede ser un número entero de CTU contenidas en un segmento de fragmento independiente y todos los segmentos de fragmento dependientes subsiguientes (si los hubiera) que preceden al siguiente segmento de fragmento independiente (si lo hubiera) dentro de la misma unidad de acceso. Un segmento de fragmento independiente es un segmento de fragmento para el que los valores de los elementos sintácticos de la cabecera del segmento de fragmento no se deducen a partir de los valores para un segmento de fragmento anterior. Un segmento de fragmento dependiente es un segmento de fragmento para el que los valores de algunos elementos sintácticos de la cabecera del segmento de fragmento se deducen a partir de los valores para el segmento de fragmento independiente anterior en orden de descodificación. Una RBSP de una unidad de NAL de fragmento codificado puede incluir una cabecera de segmento de fragmento y datos de fragmento. Una cabecera de segmento de fragmento es una parte de un segmento de fragmento codificado que contiene los elementos de datos pertenecientes a la primera o todas las CTU representadas en el segmento de fragmento. Una cabecera de fragmento es una cabecera de segmento de fragmento del segmento de fragmento independiente que es un segmento de fragmento actual o el segmento de fragmento independiente más reciente que precede a un segmento de fragmento dependiente actual en orden de descodificación.
[0047] El descodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Además, el descodificador de vídeo 30 puede analizar sintácticamente el flujo de bits para obtener elementos sintácticos a partir del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo en base a, al menos en parte, los elementos sintácticos obtenidos a partir del flujo de bits. El procedimiento para reconstruir los datos de vídeo puede ser, en general, recíproco al procedimiento realizado por el codificador de vídeo 20. Por ejemplo, el descodificador de vídeo 30 puede usar vectores de movimiento de las PU para determinar bloques predictivos para las PU de una CU actual. Además, el descodificador de vídeo 30 puede realizar una cuantificación inversa de los bloques de coeficientes de TU de la CU actual. El descodificador de vídeo 30 puede realizar transformadas inversas en los bloques de coeficientes para reconstruir los bloques de transformada de 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 muestras correspondientes de los bloques de transformada de las TU de la CU actual. Reconstruyendo los bloques de codificación para cada CU de una imagen, el descodificador de vídeo 30 puede reconstruir la imagen.
[0048] Como se analiza anteriormente, el codificador de vídeo 20 puede generar un flujo de bits que comprende una serie de unidades de NAL. En la codificación de vídeo multicapa, diferentes unidades de NAL del flujo de bits se pueden asociar a diferentes capas del flujo de bits. Una capa se puede definir como un conjunto de unidades de NAL de VCL y unidades de NAL no de VCL asociadas que tienen el mismo identificador de capa. Por ejemplo, las unidades de NAL pueden incluir cabeceras (es decir, cabeceras de unidades de NAL) y cargas útiles (por ejemplo, las RBSP). Las cabeceras de unidades de NAL pueden incluir elementos sintácticos identificadores de capa (por ejemplo, los elementos sintácticos nuh_layer_id en HEVC). Las unidades de NAL que tienen elementos sintácticos identificadores de capa que especifican diferentes valores pertenecen a diferentes "capas" de un flujo de bits. Por tanto, en la codificación multicapa (por ejemplo, MV-HEVC, SVC o SHVC), el elemento sintáctico de identificador de capa de la unidad de NAL especifica un identificador de capa (es decir, un ID de capa) de la unidad de NAL.
[0049] Una capa puede ser equivalente a una vista en la codificación de vídeo multivista. En la codificación de vídeo multivista, una capa puede contener todos los componentes de vista de la misma capa, con diferentes instancias de tiempo (por ejemplo, diferentes tiempos de salida). En la codificación de vídeo multicapa, el término "unidad de acceso" se puede referir a un conjunto de imágenes que corresponden a la misma instancia de tiempo. Por ejemplo, todas las imágenes en una unidad de acceso pueden tener el mismo tiempo de salida. Por tanto, un "componente de vista" puede ser una representación codificada de una vista en una única unidad de acceso.
[0050] En algunos ejemplos, un componente de vista puede comprender un componente de vista de textura (es decir, una imagen de textura) o un componente de vista de profundidad (es decir, una imagen de profundidad). En algunos ejemplos de codificación de vídeo multivista, una capa contiene imágenes de profundidad codificadas de una vista específica o bien imágenes de textura codificadas de una vista específica, pero no tanto imágenes de profundidad como imágenes de textura. En otros ejemplos de codificación de vídeo de multivista, una capa contiene tanto componentes de vista de textura como componentes de vista de profundidad de una vista específica.
[0051] En el contexto de la codificación de vídeo escalable, una capa corresponde típicamente a imágenes codificadas que tienen características de vídeo diferentes de las imágenes codificadas en otras capas. Dichas características de vídeo típicamente incluyen la resolución espacial y el nivel de calidad (por ejemplo, la relación señal-ruido).
[0052] Para cada respectiva capa del flujo de bits, los datos en una capa inferior se pueden descodificar sin referencia a los datos en cualquier capa superior. En la codificación de vídeo escalable, por ejemplo, los datos en una capa base se pueden descodificar sin referencia a datos en una capa de mejora. En general, las unidades de NAL solo pueden encapsular datos de una única capa. Por tanto, las unidades de NAL que encapsulan datos de la capa restante más alta del flujo de bits (por ejemplo, una capa asociada a un identificador de capa más alta) se pueden eliminar del flujo de bits sin afectar la capacidad de descodificación de los datos en las capas restantes del flujo de bits. En la codificación de vídeo multicapa, una capa se puede denominar "capa base" si un descodificador de vídeo puede descodificar imágenes en la capa sin referencia a los datos de ninguna otra capa. En HEVC y otras especificaciones de codificación de vídeo, un identificador de capa de una unidad de NAL es igual a 0 si la unidad de NAL está en una capa base. Si la unidad de NAL no se relaciona con una capa base en la codificación multicapa, el identificador de capa de la unidad de NAL puede tener un valor distinto de cero.
[0053] En la codificación de vídeo escalable, las capas distintas a la capa base se pueden denominar "capas de mejora" y pueden proporcionar información que potencie la calidad visual de los datos de vídeo descodificados a partir del flujo de bits. La codificación de vídeo escalable puede potenciar la resolución espacial, la relación señal-ruido (es decir, la calidad) o la velocidad temporal.
[0054] La codificación de vídeo multicapa puede admitir la predicción entre capas. La predicción entre capas es similar a la interpredicción usada en HEVC y otras especificaciones de codificación de vídeo y puede usar los mismos elementos sintácticos. Sin embargo, cuando un codificador de vídeo realiza la predicción entre capas 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 capa diferente. Por el contrario, la interpredicción convencional solo usa imágenes en diferentes unidades de acceso como imágenes de referencia. Cuando se codifica una imagen en una de las capas no base, un codificador de vídeo puede añadir una imagen en una lista de imágenes de referencia si la imagen está en una capa diferente pero dentro de una misma instancia de tiempo (es decir, unidad de acceso) que la imagen que el codificador de vídeo actualmente está codificando.
[0055] Además, algunas imágenes dentro de una capa se pueden descodificar sin referencia a otras imágenes dentro de la misma capa. Por tanto, las unidades de NAL que encapsulan datos de determinadas imágenes de una capa se pueden eliminar del flujo de bits sin afectar a la capacidad de descodificación de otras imágenes en la capa. La eliminación de unidades de NAL que encapsulan datos de dichas imágenes puede reducir la velocidad de trama del flujo de bits. Un subconjunto de imágenes dentro de una capa que se puede descodificar sin referencia a otras imágenes dentro de la capa se puede denominar en el presente documento "subcapa" o "subcapa temporal". Por tanto, se puede lograr la escalabilidad temporal dentro de una capa definiendo un grupo de imágenes con un nivel temporal particular como una subcapa (es decir, capa temporal). Las unidades de NAL pueden incluir elementos sintácticos identificadores temporales (por ejemplo, temporal_id en HEVC). El elemento sintáctico de identificador temporal de una unidad de NAL especifica un identificador temporal de la unidad de NAL. El identificador temporal de una unidad de NAL identifica una subcapa temporal con la que está asociada la unidad de NAL. Por tanto, cada subcapa temporal de un flujo de bits se puede asociar a un identificador temporal diferente. Si el identificador temporal de una primera unidad de NAL es menor que el identificador temporal de una segunda unidad de NAL, los datos encapsulados por la primera unidad de NAL se pueden descodificar sin referencia a los datos encapsulados por la segunda unidad de NAL.
[0056] Un flujo de bits se puede asociar a una pluralidad de puntos de funcionamiento. En algunos ejemplos, cada punto de funcionamiento de un flujo de bits se puede asociar a un conjunto de identificadores de capa (por ejemplo, un conjunto de valores nuh_layer_id) y un identificador temporal. El conjunto de identificadores de capa se puede indicar como OpLayerIdSet y el identificador temporal se puede indicar como TemporalID. Si el identificador de capa de una unidad de NAL está en un conjunto de identificadores de capa de un punto de funcionamiento y el identificador temporal de la unidad de NAL es menor o igual que el identificador temporal del punto de funcionamiento, la unidad de NAL está asociada al punto de funcionamiento. Por tanto, un punto de funcionamiento puede ser un flujo de bits creado a partir de otro flujo de bits por el funcionamiento del procedimiento de extracción del subflujo de bits con este otro flujo de bits, un TemporalId máximo de destino y una lista de identificadores de capa de destino como entradas para el procedimiento de extracción del subflujo de bits. El punto de funcionamiento puede incluir cada unidad de NAL que esté asociada al punto de funcionamiento. El punto de funcionamiento no incluye las unidades de NAL de VCL que no están asociadas al punto de funcionamiento.
[0057] Los formatos de archivo y las normas de formato de archivo se analizarán ahora en resumen. Los normas de formato de archivo incluyen el formato de archivo de medios de base ISO ("Information technology - Coding of audio­ visual objects - Part 12: ISO base media file format, [Tecnología de la información - Codificación de objetos audiovisuales - parte 12: formato de archivo de medios base ISO]", ISO/IEC 14496-12, quinta edición, 20 de febrero de 2015, más adelante en el presente documento, "ISO/IEC 14996-12") y otras normas de formato de archivo derivadas de ISOBMFF, incluyendo el formato de archivo MPEG-4 ("Information technology - Coding of audio-visual objects - Part 14: MP4 file format, [Tecnología de la información - Codificación de objetos audiovisuales - parte 14: formato de archivo MP4]", ISO/IEC 14496-14, primera edición, 15 de noviembre de 2003, más adelante en el presente documento, "ISO/IEC 14496-14"), formato de archivo 3GPP (3GPP TS 26.244) y un formato de archivo para compresión de vídeo basado en las unidades de capa de abstracción de red (NAL) ("Information technology - Coding of audio-visual objects - Part 15: Carriage of network abstraction layer (NAL) unit structure video in the ISO base media file format [Tecnología de la información - Codificación de objetos audiovisuales - parte 15: transporte de vídeo de estructura de unidad de capa de abstracción de red (NAL) en el formato de archivo de medios base ISO]" ISO/IEC 14496-15:2014(E), más adelante en el presente documento "ISO/IEC 14996-15"). Por tanto, la ISO/IEC 14496-12 especifica el formato de archivo de medios base ISO. Otros documentos extienden el formato de archivo de medios base ISO para aplicaciones específicas. Por ejemplo, la ISO/IEC 14496-15 describe el transporte de vídeo con estructura de unidad de NAL en el formato de archivo de medios base ISO. Las H.264/AVC y HEVC, así como sus extensiones, son ejemplos de vídeo con estructura de unidad de NAL. La ISO/IEC 14496-15 incluye secciones que describen el transporte de unidades de NAL de H.264/AVC. Adicionalmente, la sección 8 de iSo /IEC 14496-15 describe el transporte de unidades de NAL de HEVC. Por tanto, se dice que la sección 8 de ISO/IEC 14496-15 describe el formato de archivo de HEVC. Después de la 114.a reunión de MPEG, en base a las observaciones recibidas de varios organismos nacionales, se preparó un documento de disposición que contiene algunos cambios en la ISO/IEC 14496-15 que se aplicarán a la nueva versión del borrador de la especificación de la ISO/IEC 14496-15. Este documento de disposición se denomina "documento de salida de MPEG N15297".
[0058] El ISOBMFF se usa como la base para muchos formatos de encapsulación de códec, tales como el formato de archivo AVC, así como para muchos formatos de contenedor multimedia, tales como el formato de archivo MPEG-4, el formato de archivo 3GPP (3GP) y el formato de archivo DVB. Además de los medios continuos, tales como el audio y el vídeo, los medios estáticos, tales como las imágenes, así como los metadatos, se pueden almacenar en un archivo que se ajusta al ISOBMFF. Los archivos estructurados de acuerdo con el ISOBMFF se pueden usar para muchos propósitos, incluyendo la reproducción local de archivos de medios, la descarga progresiva de un archivo remoto, segmentos para la transmisión continua dinámica adaptativa sobre HTTP (DASH), contenedores para contenido que se va a transmitir y sus instrucciones de empaquetado y el registro de flujos de medios recibidos en tiempo real. Por tanto, aunque originalmente se diseñó para el almacenamiento, el ISOBMFF ha demostrado ser valioso para la transmisión continua, por ejemplo, para la descarga progresiva o la DASH. Para propósitos de transmisión continua, se pueden usar fragmentos de películas definidos en ISOBMFF. Además de los medios continuos, tales como el audio y el vídeo, los medios estáticos, tales como las imágenes, así como los metadatos, se pueden almacenar en un archivo que se ajusta al ISOBMFF.
[0059] Un archivo que se ajusta 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 de tipo único y una longitud. Un cuadro es la estructura sintáctica elemental en el ISOBMFF y puede incluir un tipo de cuadro codificado de cuatro caracteres, un recuento de octetos del cuadro y una carga útil. En otras palabras, un cuadro puede ser una estructura sintáctica que comprende un tipo de cuadro codificado, un recuento de octetos del cuadro y una carga útil. En algunos casos, todos los datos de un archivo que se ajusta al formato de archivo HEVC pueden estar contenidos dentro de cuadros y puede no haber ningún dato en el archivo que no esté en un cuadro. Por tanto, un archivo ISOBMFF puede consistir en una secuencia de cuadros, y los cuadros pueden contener otros cuadros. Por ejemplo, la carga útil de un cuadro puede incluir uno o más cuadros adicionales. La FIG. 8 y la FIG. 9, descritas en detalle en otra parte de la presente divulgación, muestran cuadros de ejemplo dentro de un archivo, de acuerdo con una o más técnicas de la presente divulgación.
[0060] Un archivo que se ajusta al ISOBMFF puede incluir diversos tipos de cuadros. Por ejemplo, un archivo que se ajusta al ISOBMFF 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 y así sucesivamente. En este ejemplo, un cuadro de tipo de archivo incluye el tipo de archivo e información de compatibilidad. Un cuadro de datos de medios puede contener muestras (por ejemplo, imágenes codificadas). Un cuadro de película ("moov") contiene metadatos para flujos de medios continuos presentes en el archivo. Los flujos de medios continuos se pueden representar en el archivo como una pista. Por ejemplo, un cuadro de película puede contener metadatos con respecto a 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 subcuadros. Los subcuadros de un cuadro de película 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 global de una única 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 muestras de medios de indexación de datos en la pista. La información del cuadro de tabla de muestras se puede usar para localizar muestras en el tiempo y, para cada una de las muestras de la pista, un tipo, tamaño, contenedor y desplazamiento en ese contenedor de la muestra. Por tanto, los metadatos para una pista están encerrados en un cuadro de pista ("trak"), mientras que el contenido de medios de una pista está encerrado en un cuadro de datos de medios ("mdat") o bien directamente en un archivo separado. El contenido de medios para las pistas comprende o consiste en una secuencia de muestras, tales como las unidades de acceso de audio o vídeo.
[0061] El ISOBMFF especifica los siguientes tipos de pistas: una pista de medios, que contiene un flujo de medios elemental, una pista de indicaciones, que incluye instrucciones de transmisión de medios o bien representa un flujo de paquetes recibido, y una pista de metadatos temporizados, que comprende metadatos sincronizados en el tiempo. Los metadatos para cada pista incluyen una lista de entradas de descripción de muestra, que proporciona cada una el formato de codificación o encapsulación usado en la pista y los datos de inicialización usados para procesar ese formato. Cada muestra está asociada a una de las entradas de descripción de muestra de la pista.
[0062] El ISOBMFF posibilita la especificación de metadatos específicos de muestra con diversos mecanismos. Los cuadros específicos dentro del cuadro de tabla de muestras ("stbl") se han normalizado para responder a necesidades comunes. El cuadro de tabla de muestras contiene una tabla de muestras que contiene todo el tiempo y la indexación de datos de las muestras de medios en una pista. Usando las tablas en el cuadro de tabla de muestras, puede ser posible localizar muestras en el tiempo, determinar su tipo (por ejemplo, trama I o no), y determinar su tamaño, contenedor y desplazamiento en ese contenedor.
[0063] Por ejemplo, un cuadro de muestra de sincronización ("stss") es un cuadro dentro de un cuadro de tabla de muestras. El cuadro de muestra de sincronización se usa para enumerar las muestras de acceso aleatorio de la pista. La presente divulgación se puede referir a una muestra enumerada por el cuadro de muestras de sincronización como muestra de sincronización. En otro ejemplo, un mecanismo de agrupación de muestras posibilita la correlación de muestras de acuerdo con un tipo de agrupación de cuatro caracteres con grupos de muestras que comparten la misma propiedad especificada como una entrada de descripción de grupo de muestras en el archivo. Se han especificado varios tipos de agrupación en ISOBMFF.
[0064] La especificación ISOBMFF especifica seis tipos de puntos de acceso de flujo (SAP) para su uso con DASH. Los dos primeros tipos de SAP (tipos 1 y 2) corresponden a imágenes IDR en H.264/AVC y HEVC. El tercer tipo de SAP (tipo 3) corresponde a puntos de acceso aleatorio de grupo de imágenes (GOP) abierto, por consiguiente, a imágenes de acceso de enlace roto (BLA) o acceso aleatorio limpio (CRA) en HEVC. El cuarto tipo de SAP (tipo 4) corresponde a puntos de acceso aleatorio de actualización gradual de descodificación (GDR).
[0065] Un cuadro de fragmento de película es un cuadro de nivel superior. Cada cuadro de fragmento de película proporciona información que habría estado previamente en el cuadro de película. Un cuadro de fragmento de película puede contener uno o más cuadros de fragmento de pista ("traf"). Dentro del fragmento de película hay un conjunto de fragmentos de pista, cero o más por pista. Los fragmentos de pista a su vez contienen cero o más ejecuciones de pista, de las que cada una documenta una ejecución contigua de muestras para esa pista. Por ejemplo, cada ejecución de pista puede contener muestras de imágenes que son contiguas en un determinado orden, tal como el orden de descodificación. Un cuadro de fragmento de pista se define en la especificación 14496-12 y comprende metadatos para uno o más fragmentos de pista. Por ejemplo, un cuadro de fragmento de pista puede incluir un cuadro de cabecera de fragmento de pista que indica un ID de pista, un desplazamiento de datos base, un índice de descripción de muestra, una duración de muestra por defecto, un tamaño de muestra por defecto y banderas de muestra por defecto. Un cuadro de fragmento de pista puede incluir uno o más cuadros de ejecución de fragmento de pista, que documenta cada uno un conjunto contiguo de muestras para una pista. Por ejemplo, un cuadro de fragmento de pista puede incluir elementos sintácticos que indican un recuento de muestra, un desplazamiento de datos, banderas de muestra, una duración de muestra, un tamaño de muestra, desplazamiento de tiempo de composición de muestra y así sucesivamente. Dentro de estas estructuras, muchos campos son opcionales y se pueden establecer por defecto.
[0066] Un cuadro de tabla de muestras puede incluir uno o más cuadros de SampleToGroup y uno o más cuadros de descripción de grupo de muestras (es decir, cuadros de SampleGroupDescription). En la presente divulgación, los cuadros de SampleToGroup se pueden denominar "cuadros de muestra para grupo" y los cuadros de SampleGroupDescription se pueden denominar "cuadros de descripción de grupo de muestras". En términos generales, un cuadro de SampleToGroup incluye elementos sintácticos que definen uno o más grupos de muestras. En la presente divulgación, los grupos de muestras también se pueden denominar "grupos de muestras" o "agrupaciones de muestras". Además, en términos generales, un cuadro de SampleGroupDescription incluye descripciones de grupos de muestras.
[0067] Se puede usar un cuadro de 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 de SampleToGroup puede indicar un grupo al que pertenece una muestra. Un cuadro de SampleToGroup puede tener un tipo de cuadro de "sbgp". Un cuadro de SampleToGroup puede incluir un elemento de tipo de agrupación (por ejemplo, grouping_type). En algunos casos, en la presente divulgación, un elemento de un cuadro también se puede denominar elemento sintáctico. El elemento de tipo de agrupación puede ser un número entero que identifica un tipo (es decir, un criterio usado para formar los grupos de muestras) de una agrupación de muestras. Además, un cuadro de SampleToGroup puede incluir una o más entradas (es decir, entradas de grupo de muestras). Cada entrada de grupo de muestras en un cuadro de SampleToGroup se puede asociar con una serie diferente y no superpuesta de muestras consecutivas en la pista. Cada entrada de grupo de muestras 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 de grupo de muestras puede indicar un número de muestras asociadas a la entrada de grupo de muestras. En otras palabras, el elemento de recuento de muestras de la entrada de grupo de muestras 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, dentro de un cuadro de SampleGroupDescription, una entrada de descripción de grupo que contiene una descripción de las muestras asociadas a la entrada de grupo de muestras. Los elementos de índice de descripción de grupo de múltiples entradas de grupo de muestras pueden identificar el mismo cuadro de SampleGroupDescription.
[0068] Un cuadro de SampleGroupDescription también incluye un elemento sintáctico de tipo de agrupación. Cuando los elementos sintácticos de tipo de agrupación de un cuadro de SampleToGroup y un cuadro de SampleGroupDescription coinciden, se dice que el cuadro de SampleToGroup y el cuadro de SampleGroupDescription se corresponden entre sí. Un cuadro de SampleGroupDescription incluye una o más entradas de descripción de grupo. Cada entrada de descripción de grupo respectiva en un cuadro de SampleGroupDescription incluye una descripción de un grupo de muestras respectivo. Un índice de descripción de grupo en un cuadro de SampleToGroup identifica una entrada de descripción de grupo correspondiente en el cuadro de SampleGroupDescription correspondiente.
[0069] Por ejemplo, un cuadro de SampleToGroup puede tener una primera entrada de grupo de muestras que incluye un elemento sintáctico de recuento de muestras que tiene un valor igual a 5 y un índice de descripción de grupo que tiene un valor igual a 3. Por consiguiente, en este ejemplo, cinco muestras consecutivas pertenecen a un grupo de muestras descrito por una entrada de descripción de grupo con índice 3 en el cuadro de SampleGroupDescription correspondiente. En este ejemplo, el cuadro de SampleToGroup puede tener una segunda entrada de grupo de muestras que incluye un elemento sintáctico de recuento de muestras que tiene un valor igual a 4 y un índice de descripción de grupo que tiene un valor igual a 2. Por consiguiente, en este ejemplo, las siguientes cuatro muestras consecutivas pertenecen a un grupo de muestras descrito por la entrada de descripción del grupo de muestras con el índice 2 en el cuadro de SampleGroupDescription correspondiente.
[0070] En ISO/IEC 14496-15 para el almacenamiento de las capas L-HEVC en el formato de archivo, se describe una lista de puntos de funcionamiento disponibles para un flujo de bits en un archivo usando el grupo de muestras de punto de funcionamiento ('oinf') que se señaliza en una de las pistas que transportan el flujo de bits. El grupo de muestras de punto de funcionamiento también se puede denominar en el presente documento "grupo de muestras de información de punto de funcionamiento". Una aplicación puede encontrar una pista que contenga un grupo de muestras de 'oinf' siguiendo una referencia de pista de 'oref'. Por simplicidad, la pista que contiene el grupo de muestras de 'oinf' también se denomina pista de 'oref'. Aunque el grupo de muestras de 'oinf' se señaliza solo en una pista, en ISO/IEC 14496-15 para el almacenamiento de capas L-HEVC, el alcance del grupo de muestras de 'oinf' cubre todas las pistas que transportan datos codificados con L-HEVC. La señalización de la lista de puntos de funcionamiento usando un grupo de muestras tiene una consecuencia de modo que la lista de puntos de funcionamiento puede no cubrir la totalidad del flujo de bits en la dimensión temporal. Puede estar presente más de un grupo de muestras de 'oinf' y cada grupo de muestras incluye un conjunto diferente de muestras.
[0071] Otro grupo de muestras de ejemplo es un grupo de muestras de información de capa ("linf"). Una entrada de descripción de grupo de muestras para un grupo de muestras de información de capa comprende una lista de capas y subcapas que contiene una pista. Cada muestra de una pista que contiene una imagen codificada de una capa puede ser parte de un grupo de muestras de 'linf' de la pista. Puede haber una o más entradas de grupo de muestras de 'linf' en un cuadro de descripción de grupo de muestras para una pista. Sin embargo, puede ser un requisito que haya una entrada de descripción de grupo de muestras de 'linf' para cada pista que incluya datos de L-HEVC. Lo siguiente proporciona una sintaxis y semántica para una entrada de descripción de grupo de muestras para un grupo de muestras de 'linf'.
9.8.2.2 Sintaxis
[0072]
class LayerInfoGroupEntry extends VisualSampleGroupEntry ('linf')) {
unsigned int (2) reserved;
unsigned int (6) num_layers_in_track;
for (i=0; i<num_layers_in_track; i++) {
unsigned int (4) reserved;
unsigned int (6) layer id;
unsigned int (3) min_sub_layer_id;
unsigned int (3) max_sub layer id;
}
}
9.8.2.3 Semántica
[0073]
num_layers_in_track: el número de capas transportadas en cualquier muestra de esta pista asociada a este grupo de muestras.
layer id: los ID de capa para las capas transportadas en muestras asociadas. Las instancias de este campo deben estar en orden ascendente en el bucle.
min_sub_layer_id: el valor mínimo de TemporalId para las subcapas en la capa dentro de la pista.
1. max_sub_layer_id: el valor máximo de TemporalId para las subcapas en la capa dentro de la pista.
2. Dejar que layerList sea la lista de ID de capa de las capas que se transportan en esta pista y los ID de capa de las capas que se transportan en otras pistas y a las que se hace referencia por las capas transportadas en esta pista directa o indirectamente. Los ID de capa en la layerList se ordenan en orden ascendente de los valores de ID de capa. Por ejemplo, supóngase que esta pista transporta capas con ID de capa 4 y 5 y se refieren a capas con ID de capa igual a 0 y 1, entonces la layerList asociada a esta pista es {0, 1,4,5}.
[0074] Como se describe en la sección 3.160 de HEVC, un mosaico es una región rectangular de codificación de bloques arbolados dentro de una columna de mosaicos particular y una fila de mosaicos particular en una imagen. Los mosaicos de HEVC no tienen dependencias de codificación con otros mosaicos de HEVC en la misma imagen codificada, pero pueden tener dependencias de codificación con otros mosaicos de HEVC de imágenes codificadas previas o se pueden descodificar independientemente. La FIG. 2 es un diagrama conceptual que ilustra mosaicos y fragmentos de ejemplo. En el ejemplo de la FIG. 2, una imagen 40 tiene 64 CTB de luma, representado cada uno como un pequeño cuadrado. Además, la imagen 40 tiene cuatro mosaicos, 42, 44, 46, 48 separados por un límite de mosaico vertical 50 y un límite de mosaico horizontal 52. Los mosaicos 42 y 44 forman una primera fila de mosaicos y los mosaicos 46 y 48 forman una segunda fila de mosaicos diferente. Además, los mosaicos 42 y 46 forman una primera columna de mosaicos y los mosaicos 48 y 50 forman una segunda columna de mosaicos diferente. Los límites de mosaicos se representan como líneas gruesas en la FIG. 2.
[0075] En el ejemplo de la FIG. 2, ningún CTB en el mosaico 46 puede depender de un CTB en el mosaico 42, incluso si el CTB en el mosaico 42 es adyacente al CTB en el mosaico 46. Una columna de mosaicos es una región rectangular de bloques arbolados de codificación que tiene una altura igual a la altura de la imagen y un ancho especificado por elementos sintácticos (por ejemplo, en el conjunto de parámetros de imagen). Una fila de mosaicos es una región rectangular de bloques arbolados de codificación que tiene una altura especificada por elementos sintácticos (por ejemplo, en el conjunto de parámetros de imagen) y un ancho igual a un ancho de la imagen.
[0076] La imagen 40 tiene ocho segmentos de fragmento 54, 56, 58, 60, 62, 64, 66 y 68. En el ejemplo de la FIG. 2, los límites de segmento de fragmento se indican con líneas discontinuas. Además, en el ejemplo de la FIG. 2, los segmentos de fragmento con CTB sombreados son segmentos de fragmento independientes y los segmentos de fragmento con CTB blancos son segmentos de fragmento dependientes. En HEVC, cada bloque codificado de un segmento de fragmento está contenido en una unidad de NAL para el segmento de fragmento. Además, en HEVC, una unidad de NAL no incluye bloques codificados de múltiples segmentos de fragmento.
[0077] En el ejemplo de la FIG. 2, los números en cada uno de los CTB indican un orden de codificación de los CTB. Como se muestra en la FIG. 2, los límites de mosaicos pueden cambiar el orden de codificación de los CTB en la imagen 40. Por ejemplo, en ausencia de los límites de mosaicos 50 y 52, un codificador de vídeo puede codificar todos los CTB en una fila completa de CTB en la imagen 40 antes de codificar cualquier CTB de la siguiente fila inferior de CTB en la imagen 40.
[0078] Como se describe en la Sección 6.3.1 de HEVC, a diferencia de los fragmentos, los mosaicos son siempre rectangulares. Un mosaico siempre contiene un número entero de unidades de árbol de codificación, y puede consistir en unidades de árbol de codificación contenidas en más de un fragmento. De forma similar, un fragmento puede comprender o consistir en CTU contenidas en más de un mosaico. Además, como se describe en la Sección 6.3.1 de HEVC, se debe cumplir una o ambas de las siguientes condiciones para cada fragmentos y mosaico: (1) todas las unidades de árbol de codificación en un fragmento pertenecen al mismo mosaico; y (2) todas las CTU en un mosaico pertenecen al mismo fragmento. Además, se debe cumplir una o ambas de las siguientes condiciones para cada segmento de fragmento y mosaico: (1) todas las CTU en un segmento de fragmento pertenecen al mismo mosaico; y (2) todas las CTU en un mosaico pertenecen al mismo segmento de fragmento.
[0079] Existen supuestos donde es útil obtener información sobre los mosaicos a nivel de archivo, a diferencia de la determinación de la información sobre los mosaicos a nivel de códec (por ejemplo, HEVC). Por ejemplo, en la FIG. 2, supóngase que los mosaicos 46 y 48 corresponden al rastreo en la parte inferior de un noticiero, mientras que los mosaicos 42 y 44 contienen imágenes de un presentador de noticias. En este ejemplo, el rastreo puede incluir texto sobre otras noticias, resultados deportivos, cierre de escuelas, cotizaciones de acciones, etc. En este ejemplo, puede ser deseable transmitir solo la parte de la imagen 40 que incluye las imágenes del presentador de noticias sin transmitir el rastreo. Reducir el contenido transmitido de un vídeo de esta manera puede ser deseable cuando se transmite el vídeo a un dispositivo con una pantalla pequeña, tal como un teléfono inteligente o un reloj inteligente. Al mismo tiempo, la versión completa del mismo vídeo, que incluye los mosaicos 46 y 48, se puede transmitir a un dispositivo para su presentación en una pantalla más grande, tal como un televisor.
[0080] En consecuencia, la ISO/IEC 14496-15 describe herramientas para describir y manipular mosaicos a nivel de archivo. En particular, la sección 10.1 de la ISO/IEC 14496-15 define los conceptos de una región de mosaicos y un conjunto de mosaicos. Una región de mosaicos es una región rectangular que incluye uno o más mosaicos. Por ejemplo, en el ejemplo de la FIG. 2, los mosaicos 42 y 44 pueden formar una región de mosaicos; los mosaicos 42 y 46 pueden formar una región de mosaicos, los mosaicos 44 y 48 pueden formar una región de mosaicos, los mosaicos 46 y 48 pueden formar una región de mosaicos y los mosaicos 42, 44, 46 y 48 pueden formar una región de mosaicos. Varios mosaicos codificados en un único fragmento se pueden agrupar como un conjunto de mosaicos, llamado conjunto de mosaicos. Por ejemplo, en el ejemplo de la FIG. 2, un conjunto de mosaicos puede consistir en el mosaico 42, el mosaico 46 y el mosaico 48. Sin embargo, en el ejemplo de la FIG. 2, el mosaico 42, el mosaico 46 y el mosaico 48 no pueden formar una región de mosaicos porque los mosaicos 42, 46 y 48 no son una única región rectangular.
[0081] Los conjuntos de mosaicos se pueden usar para representar una región de interés que abarca más de varios mosaicos de HEVC. Por ejemplo, un conjunto de mosaicos puede consistir en los mosaicos 42, 44 y 46. En este ejemplo, los mosaicos 42, 44 y 46 pueden corresponder a flujos de vídeo en vivo, mientras que el mosaico 48 incluye una imagen que es estática durante muchas imágenes.
[0082] Además, como se describe en la sección 10.1 de la ISO/IEC 14496-15, se describen regiones de mosaicos y conjuntos de mosaicos usando cuadros de SampleGroupDescription. En otras palabras, en la sección 10.1 de la ISO/IEC 14496-15, los cuadros de SampleGroupDescription pueden especificar regiones de mosaicos y conjuntos de mosaicos. Más específicamente, se describe una región de mosaicos de una pista de vídeo usando un grupo de descripción de muestras de TileRegionGroupEntry. Se describe un conjunto de mosaicos usando un grupo de descripción de muestras de TileSetGroupEntry. Una región de mosaicos puede ser miembro de múltiples conjuntos de mosaicos. Se puede usar una TileSetGroupEntry para definir: un conjunto de regiones de mosaicos, con o sin dependencias de codificación; un conjunto de mosaicos de HEVC que están codificados por una o varias unidades de NAL, por ejemplo, múltiples mosaicos de HEVC en un fragmento; y dependencias de codificación entre múltiples regiones de mosaicos.
[0083] Las NALU individuales se pueden asociar a:
una región de mosaicos (es decir, cuando un mosaico de HEVC se codifica como un conjunto de fragmentos)
un conjunto de mosaicos (es decir, cuando un fragmento contiene bloques de codificación para varios mosaicos de HEVC).
La asociación entre muestras, unidades de NAL (NALU), regiones de mosaicos y conjuntos de mosaicos se puede realizar a través de los cuadros de SampleToGroup y NALUMapEntry.
[0084] En la ISO/IEC 14496-15, el cuadro de NALUMapEntry tiene la siguiente sintaxis:
class NALUMapEntry() extends VisualSampleGroupEntry ('nalm') {
unsigned int(6) reserved = 0;
unsigned int(1) large_size;
unsigned int(1) rle;
if (large_size) {
unsigned int(16) entry_count;
} else {
unsigned int(8) entry count;
}
for (i=1; i<= entry_count; i++) {
if (rle) {
if (large_size) {
unsigned int(16) NALU_start_number;
} else {
unsigned int(8) NALU_start_number;
}
}
unsigned int(16) groupID;
}
}
[0085] Además, la ISO/IEC 14496-15 define la semántica del cuadro de NALUMapEntry como sigue:
large_size indica si el número de entradas de unidades de NAL en las muestras de pista está representado en 8 o 16 bits.
rle indica si la codificación de longitud de ejecución se usa (1) para asignar el groupID a unidades de NAL o no (0).
entry_count especifica el número de entradas en el mapa. Téngase en cuenta que cuando rle es igual a 1, el entry_count corresponde al número de ejecuciones donde unidades de NAL consecutivas están asociadas al mismo grupo. Cuando rle es igual a 0, el entry_count representa el número total de unidades de NAL.
NALU_start_number es el índice de NALU basado en 1 en la muestra de la primera NALU en la ejecución actual asociada al groupID.
groupID indica la entrada de grupo de conjuntos de mosaicos o de regiones de mosaicos, escalable, multivista correspondiente, como se indica en las descripciones de grupo de muestras. Si el groupID es 0, no hay ningún grupo asociado a estas NALU identificadas.
[0086] A cada grupo de descripción de muestras se le asigna un identificador único, llamado groupID. Este identificador se puede usar para asociar unidades de NAL con la región de mosaicos o conjunto de mosaicos correspondiente usando grupos de descripción de muestras ScalableNALUMapEntry o NALUMapEntry. Las regiones de mosaicos y los conjuntos de mosaicos comparten el mismo espacio de nombre para el groupID, delimitado por la capa de HEVC base. Es decir, en la ISO/IEC 14496-15, no habrá dos regiones de mosaicos o conjuntos de mosaicos con el mismo groupID en ninguna pista que tenga la misma capa base.
[0087] Como se indica anteriormente, el cuadro de NALUMapEntry incluye un elemento sintáctico rle y un elemento sintáctico entry_count. El elemento sintáctico rle indica si la codificación de longitud de ejecución se usa o no para asignar los groupID a unidades de NAL. En el contexto de un cuadro de NALUMapEntry, una ejecución es una serie de unidades de NAL consecutivas asignadas al mismo groupID. Cuando se usa la codificación de longitud de ejecución para asignar los groupID a unidades de NAL, el cuadro de NALUMapEntry incluye un elemento sintáctico NALU_start_number respectivo para cada ejecución respectiva. Por ejemplo, supóngase que a un conjunto de seis unidades de NAL consecutivas que comienzan desde una unidad de NAL con índice 2 se le asigna un groupID igual a 11. En este ejemplo, el cuadro de NALUMapEntry puede incluir un primer elemento sintáctico NALU_start_number que indica un valor igual a 2, seguido de un elemento sintáctico groupID que tiene un valor igual a 11, seguido de un segundo elemento sintáctico NALU_start_number igual a 8. Por tanto, en este ejemplo, un dispositivo que interpreta un archivo que contiene el cuadro de NALUMapEntry, tal como la unidad de análisis sintáctico de archivos 31 (FIG.
1), puede determinar que a cada unidad de NAL del índice 2 al índice 7 se le asigna el groupID igual a 11.
[0088] La ISO/IEC 14496-15 especifica la sintaxis de un cuadro de TileRegionGroupEntry como sigue:
class TileRegionGroupEntry() extends VisualSampleGroupEntry
('trif')
{
unsigned int(16) groupID;
unsigned int(2) independent_flag;
unsigned int(1) full_picture;
unsigned int(1) filtering_disabled;
unsigned int(4) reserved=0;
if (!full_picture) {
unsigned int(16) horizontal_offset;
unsigned int(16) vertical_offset;
}
unsigned int(16) region_width;
unsigned int(16) region_height;
}
[0089] La ISO/IEC 14496-15 especifica la semántica de un cuadro de TileRegionGroupEntry como sigue:
groupID es un identificador único para la región de mosaicos descrita por este grupo. El valor 0 está reservado para uso especial en el cuadro de 'nalm'.
independent_flag especifica las dependencias de codificación entre esta región de mosaicos y otras regiones de mosaicos en la imagen actual y en las imágenes de referencia de la misma capa. Las dependencias entre mosaicos, si las hubiera, se indican por medio de una lista de dependencias en TileSetGroupEntry. Esta bandera adopta los siguientes valores:
- Si independent_flag es igual a 0, las dependencias de codificación entre esta región de mosaicos y otros mosaicos en la misma imagen o imágenes previas se describen a nivel de conjunto de mosaicos o bien se desconocen.
- Si independent_flag es igual a 1, no hay dependencias temporales entre esta región de mosaicos y las otras regiones de mosaicos o conjuntos de mosaicos con diferente groupID en cualquier imagen de referencia, pero puede haber dependencias de codificación entre este mosaico y la región de mosaicos con el mismo groupID en las imágenes de referencia.
- Si independent_flag es igual a 2, no hay dependencias de codificación entre esta región de mosaicos y cualquier otro mosaico en las imágenes de referencia.
- El valor 3 está reservado.
full_picture, cuando se establece, indica que esta región de mosaicos es en realidad una imagen completa, caso en el que region_width y region_height se establecerán en el tamaño de luma de capa, e independent_flag se establecerá en 1. Esto permite expresar dependencias entre los mosaicos de una capa a una capa sin mosaicos usando el grupo de muestras 'tsif' que hace referencia a un grupo de muestras 'trif' con el parámetro full_picture establecido en 1.
filtering_disable, cuando se establece, indica que ningún funcionamiento de filtrado posterior a la descodificación en esta región de mosaicos requiere acceso a los píxeles adyacentes a esta región de mosaicos, es decir, la reconstrucción exacta de bits de la región de mosaicos es posible sin descodificar los mosaicos adyacentes.
horizontal_offset y vertical_offset proporcionan respectivamente los desplazamientos horizontal y vertical del píxel superior izquierdo de la región rectangular representada por la región de mosaicos, en relación con el píxel superior izquierdo de la imagen, en muestras de luma de la región base.
region_width y region_height proporcionan respectivamente el ancho y la altura de la región rectangular representada por la región de mosaicos, en muestras de luma de la región base.
[0090] Además, la ISO/IEC 14496-15 especifica la sintaxis de un cuadro de TileSetGroupEntry como sigue:
class TileSetGroupEntry() extends VisualSampleGroupEntry
('tsif') {
unsigned int(16) groupID;
int(1) area_description;
int(2) dependency_list;
int (5) reserved; if (area_description==0) {
unsigned int(16) tile_count;
for (i=1; i<= tile_count; i++){
unsigned int(16) tileGroupID; }
} else {
unsigned int(16) topLeftTileGroupId;
unsigned int(16) bottomRightTileGroupId;
}
if ((dependency_list==1) | | (dependency_list==3)) {
unsigned int(16) dependency_tile_count;
for (i=1; i<= dependency_tile_count; i++) {
unsigned int(16) dependencyTileGroupID;
}
if (dependency_list==3) {
unsigned int(16) irap_dependency_tile_count;
for (i=1; i<= irap_dependency_tile_count; i++) {
unsigned int (16) irap dependencyTileGroupID;
}
} else if (dependency_list==2) {
unsigned int(16) topLeftDependencyTileGroupId;
unsigned int(16)
bottomRightDependencyTileGroupId;
}
}
[0091] La ISO/IEC 14496-15 especifica la semántica de un cuadro TileSetGroupEntry como sigue:
El ID de grupo es un identificador único para el conjunto de mosaicos descrito por este grupo. El valor 0 está reservado para uso especial en el cuadro de 'nalm'.
area_description indica que el conjunto de mosaicos se proporciona como un área rectangular descrita por la esquina superior izquierda e inferior derecha.
dependency_list indica que se proporciona una lista de regiones de mosaicos dependientes o conjuntos de mosaicos para este conjunto de mosaicos. Si se establece en cero, esto implica que no hay dependencias de codificación temporal entre los mosaicos de este conjunto y los mosaicos fuera de este conjunto. Esto garantiza que solo sea posible descodificar los mosaicos del conjunto y de la lista de dependencias sin descodificar otros mosaicos. Si se establece en 1 o 3, la dependency_list se proporciona como una lista de identificadores para los mosaicos dependientes. Si se establece en 2, la dependency_list se expresa como el cuadro delimitador formado por los mosaicos dependientes. Si se establece en 3, se proporciona una lista adicional de regiones de mosaicos o dependencias de conjuntos de mosaicos para el caso donde la muestra es una muestra de acceso aleatorio como se define para esta capa de HEVC.
tile_count proporciona el número de mosaicos definidos en este conjunto de mosaicos.
tileGroupID indica el valor de groupID de regiones de mosaicos (como se define por una TileRegionGroupEntry) o del valor de groupID de conjuntos de mosaicos (como se define por una TileSetGroupEntry) que pertenece a este conjunto de mosaicos.
topLeftTilegroupId indica el valor de groupID del mosaico superior izquierdo de este conjunto de mosaicos.
bottomRightTileGroupId indica el valor de groupID del mosaico inferior derecho de este conjunto de mosaicos.
dependency_tile_count indica el número de regiones de mosaicos o conjuntos de mosaicos en la lista de dependencias.
dependencyTileGroupID proporciona el identificador de una región de mosaicos (como se define por una TileRegionGroupEntry) o de un conjunto de mosaicos (como se define por un TileSetGroupEntry) del que depende este conjunto de mosaicos.
irap_dependency_tile_countand irap_dependencyTileGroupID especifica la lista de las regiones de mosaicos o de los conjuntos de mosaicos de los que depende este conjunto de mosaicos cuando la muestra a la que pertenece este mosaico es una muestra de acceso aleatorio como se define para esta capa de HEVC.
topLeftDependencyTileGroupId indica la región del mosaico superior izquierda o el valor de groupID del conjunto de mosaicos del área de la que depende este conjunto de mosaicos.
bottomRightDependencyTileGroupId indica la región del mosaico inferior derecho o el valor de groupID del conjunto de mosaicos del área de la que depende este conjunto de mosaicos.
[0092] Las regiones de mosaico pueden definir un área rectangular, sin agujeros. Si un conjunto de mosaicos no rectangulares se codifica en un único fragmento de HEVC, el conjunto de mosaicos se puede descomponer en diferentes regiones de mosaicos rectangulares y describirse a través de un conjunto de mosaicos, que indica dependencias de las regiones de mosaicos relacionadas. A continuación, las unidades de NAL de un segmento de este tipo se pueden correlacionar con el conjunto de mosaicos, pero no se deben correlacionar con la región de mosaicos.
[0093] Cuando se usan con fragmentos de películas, se pueden definir TileRegionGroupEntry y TileSetGroupEntry para la duración de los fragmentos de películas, definiendo un nuevo cuadro de SampleGroupDescription en el cuadro de fragmento de pista, como se define en la cláusula 8.9.4 de la ISO/IEC 14496-12. Sin embargo, no habrá ninguna TileRegionGroupEntry o TileSetGroupEntry en un fragmento de pista que tenga el mismo groupID que una TileRegionGroupEntry o TileSetGroupEntry ya definida.
[0094] Pueden surgir determinados problemas en las técnicas descritas anteriormente para la correlación entre las muestras y las regiones de mosaicos. En otras palabras, las herramientas descritas anteriormente con respecto a la manipulación de mosaicos a nivel de archivo tienen varias deficiencias. Por ejemplo, una región de mosaicos se puede considerar una colección de mosaicos, mientras que un conjunto de mosaicos se puede considerar una colección de regiones de mosaicos y también una colección de mosaicos. Para determinar los mosaicos que componen una región de mosaicos particular, simplemente se puede verificar una NALUMapEntry. Sin embargo, para determinar los mosaicos que componen un conjunto de mosaicos particular, un dispositivo, tal como la unidad de análisis sintáctica de archivos 31, en primer lugar tiene que verificar la lista de regiones de mosaicos que se enumeran como parte del conjunto de mosaicos y a continuación todavía tiene que verificar una NALUMapEntry para ver si hay mosaicos adicionales que también son parte del conjunto de mosaicos. Una disposición de este tipo puede complicar la relación entre la región de mosaicos, el conjunto de mosaicos y NALUMapEntry. Además, actualmente parece que no hay una distinción conceptual entre una región de mosaicos y un conjunto de mosaicos, excepto que una región de mosaicos debe tener una conformación rectangular, mientras que un conjunto de mosaicos puede tener cualquier conformación. Cuando el valor de tile_reg_count de un conjunto de mosaicos es igual a 0, el conjunto de mosaicos es básicamente una región de mosaicos. Por lo tanto, puede ser deseable una simplificación de NALUMapEntry, la región de mosaicos y el conjunto de mosaicos.
[0095] En la sección 8.4.8 de la ISO/IEC 14496-15, en el contexto de HEVC, una submuestra se define como:
Para el uso del cuadro de información de submuestra (8.7.7 de la ISO/CEI 14496-12) de un flujo de HEVC, una submuestra se define sobre la base del valor del campo banderas del cuadro de información de submuestra como se especifica a continuación.
La presencia de esta cuadro es opcional; sin embargo, si está presente en una pista que contiene datos de HEVC, el campo 'codec_specific_parameters' en el cuadro tendrá la semántica definida aquí.
banderas especifica el tipo de información de submuestra proporcionada en este cuadro como sigue:
0: submuestras basadas en unidades de NAL. Una submuestra contiene una o más unidades de NAL contiguas.
1: submuestras basadas en unidades de descodificación. Una submuestra contiene exactamente una unidad de descodificación.
2: submuestras basadas en mosaicos. Una submuestra contiene un mosaico y las unidades de NAL no de VCL asociadas, si las hubiera, de la(s) unidad(es) de NAL de VCL que contiene(n) el mosaico, o bien contiene una o más unidades de NAL no de VCL.
3: submuestras basadas en filas de CTU. Una submuestra contiene una fila de CTU dentro de un fragmento y las unidades de NAL no de VCL asociadas, si las hubiera, de la(s) unidad(es) de NAL de VCL que contiene(n) la fila de CTU o bien contiene una o más unidades de NAL no de VCL. Este tipo de información de submuestra no se debe usar cuando entropy_coding_sync_enabled_flag sea igual a 0.
4: submuestras basadas en fragmentos. Una submuestra contiene un fragmento (donde cada fragmento puede contener uno o más segmentos de fragmento, de los que cada uno es una unidad de NAL) y las unidades de NAL no de VCL asociadas, si las hubiera, o bien contiene una o más unidades de NAL no de VCL.
[0096] Adicionalmente, pueden surgir problemas relacionados con la correlación de mosaicos en una submuestra con respecto a las regiones de mosaicos en las técnicas descritas anteriormente. En el documento de salida de MPEG N15297 (disposición de comentarios para la ISO/IEC 14496-15), se acordó permitir la identificación basada en submuestras de mosaicos a los que se aplica TileRegionGroupEntry. Para admitir eso, se modifica la sintaxis de TileRegionGroupEntry en el documento de salida de MPEG N15297 como se muestra en el texto a continuación. En el texto a continuación y a lo largo de la presente divulgación, el texto entre "<insert>" e "</insert> los símbolos corresponde a adiciones o textos existentes modificados (por ejemplo, <insert>texto añadido</insert>), mientras que el texto eliminado está entre "<delete>" y "</delete> los símbolos (por ejemplo, <delete>texto eliminado</delete>).
class TileRegionGroupEntry() extends VisualSampleGroupEntry
('trif')
{
<delete>unsigned int(16) groupID;</delete>
unsigned int(2) independent_flag; [Ed. (YK): Name it
independent_idc.]
unsigned int (1) full_picture;
unsigned int (1) filtering_disabled;
<insert>unsigned int (1) nalu_flag;</insert>
unsigned int(<insert>3</insert>) reserved=0;
<insert>if (nalu_flag)
unsigned int(16) groupID;
else
unsigned int(16) subsample_id;</insert>
if (!full_picture) {
unsigned int (16) horizontal_offset;
unsigned int (16) vertical_offset;
}
unsigned int(16) region_width;
unsigned int(16) region_height;
}
El ID de grupo es un identificador único para la región de mosaicos descrita por este grupo. El valor 0 está reservado para uso especial en el cuadro de 'nalm'.
independent_flag especifica las dependencias de codificación entre esta región de mosaicos y otras regiones de mosaicos en la imagen actual y en las imágenes de referencia de la misma capa. Las dependencias entre mosaicos, si las hubiera, se indican por medio de dependency_list en TileSetGroupEntry. Esta bandera adopta los siguientes valores:
- Si independent_flag es igual a 0, las dependencias de codificación entre esta región de mosaicos y otros mosaicos en la misma imagen o imágenes previas se describen a nivel de conjunto de mosaicos o bien se desconocen.
- Si independent_flag es igual a 1, no hay dependencias temporales entre esta región de mosaicos y las otras regiones de mosaicos o conjuntos de mosaicos con diferente groupID en cualquier imagen de referencia, pero puede haber dependencias de codificación entre este mosaico y la región de mosaicos con el mismo groupID en las imágenes de referencia.
- Si independent_flag es igual a 2, no hay dependencias de codificación entre esta región de mosaicos y cualquier otro mosaico en las imágenes de referencia.
- El valor 3 está reservado.
full_picture, cuando se establece, indica que esta región de mosaicos es en realidad una imagen completa, caso en el que region_width y region_height se establecerán en el tamaño de luma de capa, e independent_flag se establecerá en 1. Esto permite expresar dependencias entre los mosaicos de una capa a una capa sin mosaicos usando el grupo de muestras 'tsif' que hace referencia a un grupo de muestras 'trif' con el parámetro full_picture establecido en 1.
nalu_flag igual a 0 especifica que las regiones de mosaicos se especifican sobre la base de submuestras basadas en mosaicos. nalu_flag igual a 1 especifica que las regiones de mosaicos se especifican sobre la base de los valores de groupID de la agrupación de muestras de 'nalm'.
subsample_id es un índice basado en 1 para la información de submuestra de la muestra correlacionada, como se indica en el Sub-SampleInformationBox con indicadores iguales a 2 (submuestras basadas en mosaicos).
[0097] Los cambios en TileRegionGroupEntry adoptados en el documento de salida de MPEG N15297 tienen dos problemas. En primer lugar, cuando nalu_flag es igual a 0, el grupo de regiones de mosaicos no usa NALUMapEntry, lo que significa que todas las muestras están asociadas al grupo de regiones de mosaicos porque TileRegionGroupEntry no tiene su propio cuadro SampleToGroup asociado. En consecuencia, para que esta identificación basada en submuestras de mosaicos funcione, se implica una restricción de modo que todas las muestras en la pista deben tener la misma unidad de NAL y también deben tener la misma estructura de mosaicos. En otras palabras, todas las muestras en la pista se deben dividir en fragmentos y mosaicos de la misma manera.
[0098] En segundo lugar, tener sólo un subsample_id de elemento sintáctico significa que sólo un mosaico exactamente dentro de una unidad de NAL puede ser parte de un grupo de regiones de mosaicos particular. Cuando es deseable tener más de un mosaico en una unidad de NAL incluida en una región de mosaicos, esta señalización sería ineficiente ya que se deben definir más regiones de mosaicos que después se agruparán por conjunto de mosaicos.
[0099] Por ejemplo, la FIG. 3 es un diagrama conceptual que ilustra un ejemplo donde una unidad de NAL incluye múltiples mosaicos. En particular, una imagen 80 tiene cuatro mosaicos 82, 84, 86 y 88 separados por los límites de mosaicos 90, 92. Un segmento de fragmento 94 incluye las CTU 1-40. Los segmentos de fragmento 96, 98, 100 incluyen las CTU 41-64. Cada CTU codificada de un segmento de fragmento se incluye en una unidad de NAL para el segmento de fragmento. En el ejemplo de la FIG. 3, puede ser deseable tener los mosaicos 82 y 84 incluidos en una región de mosaicos. En el documento de salida de MPEG N15297, el elemento sintáctico subsample_id indica cuál de las submuestras (por ejemplo, mosaicos) en una imagen es parte de la región de mosaicos. Por ejemplo, el elemento sintáctico subsample_id igual a 0 puede indicar el primer mosaico de cada imagen en un grupo de regiones de mosaicos asociado al cuadro de TileRegionGroupEntry. Ya que solo hay un elemento sintáctico subsample_id en el cuadro de TileRegionGroupEntry, solo se puede incluir un mosaico por imagen en el grupo de regiones de mosaico asociado al cuadro de TileRegionGroupEntry. En consecuencia, para llegar a un grupo de muestras que incluya los mosaicos 82 y 84, se pueden generar dos cuadros de TileRegionGroupEntry, incluyendo cada uno un elemento sintáctico subsample_id que indica uno diferente de los mosaicos 82, 84. Adicionalmente, se necesitaría generar un cuadro de TileSetGroupEntry que haga referencia a los dos cuadros de TileRegionGroupEntry.
[0100] Además, pueden surgir problemas relacionados con la dependencia entre capas de la región de mosaicos y el conjunto de mosaicos en las técnicas descritas anteriormente. Por ejemplo, el documento de salida de MPEG N15927 describe varios cambios relacionados con la señalización de información de dependencia en regiones de mosaicos y conjuntos de mosaicos. En particular, se acordaron los siguientes cambios en el documento de salida de MPEG N15927:
a) Se acordó cambiar el nombre independent_flag a independent_idc.
b) Se acordó editar editorialmente la semántica de independent_idc cuando su valor sea igual a 2.
c) Se acordó usar la señalización de la lista de dependencias igual a 0 en todos los casos y eliminar la sintaxis y la semántica relacionadas con dependency_list igual a 1 y 2.
Aunque los puntos acordados anteriormente pueden mejorar la señalización de dependencia de la región de mosaicos y el conjunto de mosaicos, incluso después de la modificación que incorpora esos puntos acordados, el siguiente problema todavía no se aborda. En particular, la señalización de dependencia de mosaico actual para regiones de mosaicos y conjuntos de mosaicos no funciona cuando hay dependencia entre capas. Por ejemplo, como se indica anteriormente, la ISO/IEC 14496-15 especifica que cuando el elemento sintáctico dependency_list se "establece en cero, esto implica que no hay dependencias de codificación temporal entre los mosaicos de este conjunto y los mosaicos fuera de este conjunto. Esto garantiza que solo sea posible descodificar los mosaicos del conjunto y de la lista de dependencias sin descodificar otros mosaicos". Sin embargo, nada se indica en la ISO/IEC 14496-15 con respecto a las dependencias de codificación entre vistas entre mosaicos.
[0101] Además, pueden surgir determinados problemas relacionadas con las unidades de NAL no de VCL de nivel de imagen y de nivel superior en las técnicas descritas anteriormente. Por ejemplo, en las técnicas descritas anteriormente, en la ISO/IEC 14496-15, NALUMapEntry proporciona una correlación desde unidades de NAL a grupos de regiones de mosaicos o bien grupos de conjuntos de mosaicos. Hay un caso especial de modo que cuando se asigna groupID igual a 0 a una unidad de NAL, significa que no está asociada a ningún grupo de regiones de mosaicos o conjuntos de mosaicos. Sin embargo, no está claro qué groupID se debe asignar para una unidad de NAL no de VCL, en particular una unidad de NAL no de VCL que se aplica globalmente a todas las unidades de NAL de VCL de una imagen, por ejemplo, conjuntos de parámetros. Para dichas unidades de NAL no de VCL, parece que no se pueden correlacionar con groupID 0, ya que serían necesarias para el procesamiento de cada grupo de regiones de mosaicos o conjuntos de mosaicos, y se pueden asignar a una región de mosaicos o bien un conjunto de mosaicos particular ya que eso las haría no utilizables por otras regiones de mosaicos o conjuntos de mosaicos.
[0102] Para abordar los problemas y deficiencias anteriores, se describen las siguientes técnicas. Las técnicas descritas a continuación se pueden aplicar independientemente o se pueden aplicar en cualquier combinación factible.
[0103] Como se menciona anteriormente, las relaciones entre las regiones de mosaicos y los conjuntos de mosaicos pueden ser demasiado complicadas. De acuerdo con una técnica de la presente divulgación, para abordar este problema, el concepto de región de mosaicos se fusiona con el concepto de conjunto de mosaicos. En otras palabras, el concepto de una región de mosaicos y el concepto de un conjunto de mosaicos se fusionan. En dichos ejemplos donde los conceptos de regiones de mosaicos y conjuntos de mosaicos se fusionan, los términos región de mosaicos y conjunto de mosaicos se pueden usar de manera intercambiable. Además, en los ejemplos donde se fusionan los conceptos de regiones de mosaicos y conjuntos de mosaicos, el análisis de las entradas de grupo de conjuntos de mosaicos (por ejemplo, cuadros de TileSetGroupEntry) y las entradas de grupo de regiones de mosaicos (por ejemplo, cuadros de TileRegionGroupEntry) pueden ser intercambiables. Por consiguiente, en dichos ejemplos, el cuadro de TileSetGroupEntry o bien el cuadro de TileRegionGroupEntry se pueden eliminar de la sintaxis usada para definir el archivo y el análisis del cuadro de TileRegionGroupEntry se puede aplicar al cuadro de TileRegionGroupEntry, o viceversa.
[0104] Además, se puede señalizar un elemento sintáctico para indicar si una región cubierta por los mosaicos en un conjunto de mosaicos tiene conformación rectangular o no. Por tanto, en este ejemplo, el dispositivo de generación de archivos 34 puede incluir, en una entrada de grupo de conjuntos de mosaicos en el archivo, un elemento sintáctico (por ejemplo, rectangular_flag) que indica si una región cubierta por mosaicos en un conjunto de mosaicos tiene conformación rectangular. De forma similar, la unidad de análisis sintáctico de archivos 31 puede obtener, a partir de una entrada de grupo de conjuntos de mosaicos en el archivo, un elemento sintáctico (por ejemplo, rectangular_flag) que indica si una región cubierta por mosaicos en un conjunto de mosaicos tiene una conformación rectangular o no. En este ejemplo, la unidad de análisis sintáctico de archivos 31 puede procesar el conjunto de mosaicos en base al elemento sintáctico. Por ejemplo, en base al elemento sintáctico en una TileSetGroupEntry que indica que una región cubierta por mosaicos en un conjunto de mosaicos es rectangular, y potencialmente se basa en elementos sintácticos en la TileSetGroupEntry que indican una ubicación y tamaño del conjunto de mosaicos, la unidad de análisis sintáctico de archivos 31 puede determinar que el conjunto de mosaicos corresponde a una región deseada que se va a emitir para su visualización. Por consiguiente, en este ejemplo, la unidad de análisis sintáctico de archivos 31, como parte del procesamiento del conjunto de mosaicos, puede extraer los mosaicos del conjunto de mosaicos del archivo y transmitir los mosaicos extraídos. Por ejemplo, la unidad de análisis sintáctico de archivos 31 puede extraer las unidades de NAL de VCL de los mosaicos del conjunto de mosaicos del archivo y emitir las unidades de NAL de VCL extraídas a un descodificador de vídeo (por ejemplo, el descodificador de vídeo 30) que se van a descodificar, sin emitir las unidades de NAL de VCL no extraídas al descodificador de vídeo.
[0105] Como se indica anteriormente, el cuadro de TileRegionGroupEntry, como se define en la ISO/IEC 14496-15, incluye un elemento sintáctico horizontal_offset y un elemento sintáctico vertical_offset. El elemento sintáctico horizontal_offset y el elemento sintáctico vertical_offset indican un desplazamiento de un píxel superior izquierdo de una región rectangular representada por una región de mosaicos asociada al cuadro de TileRegionGroupEntry. El cuadro de TileRegionGroupEntry solo incluye el elemento sintáctico horizontal_offset y el elemento sintáctico vertical_offset si la región de mosaicos asociada al cuadro de TileRegionGroupEntry no corresponde a una imagen completa. Además, el cuadro de TileRegionGroupEntry, como se define en la ISO/IEC 14496-15, incluye un elemento sintáctico region_width y un elemento sintáctico region_height que indican el ancho y el alto de la región rectangular asociada al cuadro de TileRegionGroupEntry.
[0106] De acuerdo con una técnica de la presente divulgación, la sintaxis y la semántica de la información de desplazamiento (es decir, desplazamientos horizontal y vertical) y el ancho y la altura de la región cubierta por los mosaicos en el conjunto de mosaicos (por ejemplo, region_width y region_height) se pueden modificar. Por ejemplo, la información de desplazamiento horizontal, desplazamiento vertical, ancho y alto siempre se señaliza. Por ejemplo, en lugar de que el desplazamiento horizontal y el desplazamiento vertical solo se señalicen cuando la región de mosaicos no sea una imagen completa, el desplazamiento horizontal y el desplazamiento vertical se señalizan en este ejemplo, independientemente de si la región de mosaicos es o no una imagen completa. En este ejemplo, la semántica de los elementos sintácticos de desplazamiento y los elementos sintácticos de altura y ancho se pueden ajustar de modo que la semántica de estos elementos sintácticos describa un área rectangular mínima que cubra todos los mosaicos en el conjunto de mosaicos. El área rectangular mínima es el área rectangular más pequeña posible que encierra todos los mosaicos del conjunto de mosaicos.
[0107] Por tanto, en este ejemplo, el dispositivo de generación de archivos 34 puede incluir, en un archivo, independientemente de si una región de mosaicos es una imagen completa, al menos uno de: un elemento sintáctico de desplazamiento horizontal (por ejemplo, horizontal_offset) y un elemento sintáctico de desplazamiento vertical (por ejemplo, vertical_offset). En este ejemplo, el elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. En este ejemplo, el elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. De forma similar, la unidad de análisis sintáctico de archivos 31 puede obtener, a partir de un archivo, independientemente de si una región de mosaicos es una imagen completa, al menos uno de: un elemento sintáctico de desplazamiento horizontal y un elemento sintáctico de desplazamiento vertical. En este ejemplo, el elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. En este ejemplo, un cuadro de descripción de grupo de muestras puede incluir una entrada de descripción de grupo que comprende la entrada de grupo de conjuntos de mosaicos.
[0108] La FIG. 4 es un diagrama conceptual que ilustra una imagen 120 de ejemplo que incluye un conjunto de mosaicos 122 delimitado por un área rectangular mínima 124 que contiene el conjunto de mosaicos 122, de acuerdo con una o más técnicas de la presente divulgación. Como se muestra en el ejemplo de la FIG. 4, el juego de mosaicos 122 incluye diecisiete mosaicos dispuestos en cuatro filas. Las primeras tres filas de mosaicos tienen cuatro mosaicos y la fila inferior de mosaicos tiene cinco mosaicos. Por consiguiente, el mosaico 122 no es rectangular. Suponiendo que cada mosaico tiene 10 unidades de ancho y 10 unidades de alto, el elemento sintáctico de ancho puede indicar el valor 50 y el elemento sintáctico de altura puede indicar el valor 40.
[0109] En algunos ejemplos, la información de desplazamiento horizontal, desplazamiento vertical, ancho y altura se señaliza solo si la región cubierta por los mosaicos en el conjunto de mosaicos tiene conformación rectangular. En este ejemplo, la información de posición y tamaño para un conjunto de mosaicos que no tiene una conformación rectangular puede no estar disponible.
[0110] En otro ejemplo, el dispositivo de generación de archivos 34 puede incluir, en un archivo, solo si una región cubierta por mosaicos en un conjunto de mosaicos tiene conformación rectangular, al menos uno de: un elemento sintáctico de desplazamiento horizontal (por ejemplo, horizontal_offset) y un elemento sintáctico de desplazamiento vertical (por ejemplo, vertical_offset). En este ejemplo, el elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos y el elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. De forma similar, la unidad de análisis sintáctico de archivos 31 puede obtener, de un archivo, solo si una región cubierta por mosaicos en un conjunto de mosaicos tiene la conformación rectangular, al menos uno de: un elemento sintáctico de desplazamiento horizontal (por ejemplo, horizontal_offset) y un elemento sintáctico de desplazamiento vertical (por ejemplo, vertical_offset). En este ejemplo, el elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. En este ejemplo, un cuadro de descripción de grupo de muestras puede incluir una entrada de descripción de grupo que comprende la entrada de grupo de conjuntos de mosaicos.
[0111] Como se indica anteriormente, el cuadro de TileSetGroupEntry, como se define en el documento de salida de MPEG N15297, incluye un elemento sintáctico independent_idc. Sin embargo, como se describe anteriormente, la señalización de dependencia de mosaico para regiones de mosaicos y conjuntos de mosaicos no funciona en el documento de salida de MPEG N15297 cuando hay dependencia entre capas. Por consiguiente, de acuerdo con un ejemplo de la presente divulgación, para simplificar los conceptos de regiones de mosaicos y conjuntos de mosaicos, el elemento sintáctico independent_idc se cambia a una bandera (por ejemplo, independent_flag) con los siguientes valores: Un estado de la bandera indica "sin dependencia temporal". El otro estado de la bandera indica que "puede haber o no dependencia temporal".
[0112] Por tanto, en este ejemplo, el dispositivo de generación de archivos 34 puede señalizar una bandera (por ejemplo, independent_flag) en un archivo. En este ejemplo, la bandera que tiene un primer valor indica que no hay dependencia temporal, la bandera que tiene un segundo valor diferente indica que se permite la dependencia temporal. Además, en este ejemplo, la unidad de análisis sintáctico de archivos 31 puede obtener la bandera del archivo y puede procesar el conjunto de mosaicos en base al elemento sintáctico. Por ejemplo, cuando la bandera indica que no hay dependencia temporal para un conjunto de mosaicos, un descodificador de vídeo no necesita unidades de NAL de VCL de otra capa para descodificar unidades de NAL de VCL del conjunto de mosaicos. Por consiguiente, en base al archivo que indica que no hay una dependencia temporal para el conjunto de mosaicos, la unidad de análisis sintáctico de archivos 31 puede extraer y emitir las unidades de NAL de VCL del conjunto de mosaicos sin determinar además las capas y las unidades de NAL de VCL de las que dependen las unidades de NAL de VCL del conjunto de mosaicos.
[0113] En algunos ejemplos de la presente divulgación, para abordar los problemas relacionados con la correlación de archivos en submuestras con regiones de mosaicos descritas anteriormente, el mecanismo de correlación para mosaicos en submuestras se añade a un cuadro de NALUMapEntry, en lugar de a un cuadro de TileRegionGroupEntry. Por ejemplo, se puede añadir un bucle al cuadro de NALUMapEntry para señalizar un elemento sintáctico groupID para cada submuestra en una unidad de NAL. Por tanto, en este ejemplo, es posible que las diferentes submuestras en una unidad de NAL estén asociadas a diferentes groupID, y también es posible que todas las submuestras en una unidad de NAL estén asociadas al mismo groupID.
[0114] Por tanto, en este ejemplo, el dispositivo de generación de archivos 34 puede incluir, en una NALUMapEntry en un archivo, para cada submuestra respectiva en una unidad de NAL, un elemento sintáctico de identificador de grupo respectivo (por ejemplo, groupID). En este ejemplo, el elemento sintáctico de identificador de grupo respectivo puede indicar una entrada de conjunto de mosaicos (por ejemplo, un cuadro de TileRegionGroupEntry o cuadro de TileSetGroupEntry) correspondiente a la submuestra respectiva. De forma similar, la unidad de análisis sintáctico de archivos 31 puede obtener, de una NALUMapEntry en el archivo, para cada submuestra respectiva en una unidad de NAL, un elemento sintáctico de identificador de grupo respectivo (por ejemplo, groupID). El elemento sintáctico de identificador de grupo respectivo puede indicar una entrada de conjunto de mosaicos (por ejemplo, un cuadro de TileRegionGroupEntry o cuadro de TileSetGroupEntry) correspondiente a la submuestra respectiva. La entrada de conjunto de mosaicos corresponde a un conjunto de mosaicos. La unidad de análisis sintáctico de archivos 31 puede procesar el conjunto de mosaicos. Por ejemplo, en la FIG. 2, una unidad de NAL de VCL para el segmento de fragmento 94 incluye CTU codificadas del mosaico 82, mosaico 84 y algunas CTU codificadas del mosaico 86. En este ejemplo, una NALUMapEntry en el archivo puede incluir, para la unidad de NAL de VCL, un identificador de grupo respectivo para cada uno de los mosaicos 82, 84 y 86. Por tanto, si la salida deseada son los mosaicos 82 y 84, la unidad de análisis sintáctico de archivos 31 puede determinar, en base a los elementos sintácticos groupID señalizados en la NALUMapEntry, que la unidad de NAL de VCL incluye CTU codificadas para el mosaico 82 y el mosaico 84. En consecuencia, en este ejemplo, la unidad de análisis sintáctico de archivos 31 puede extraer la unidad de NAL de VCL del archivo. La unidad de análisis sintáctico de archivos 31 puede emitir la unidad de NAL de VCL extraída a un descodificador de vídeo, tal como el descodificador de vídeo 30 (FIG. 1), para la descodificación.
[0115] Además, en la ISO/IEC 14496-15, el cuadro de NALUMapEntry incluye un elemento sintáctico rle y un elemento sintáctico NALU_start_number. En algunos ejemplos, el mecanismo de codificación de longitud de ejecución en NALUMapEntry, implementado por los elementos sintácticos rle y NALU_start_number, se elimina para su simplificación y para hacerlo coherente con ScalableNALUMapEntry y SubSampleInformationBox.
[0116] De acuerdo con un ejemplo de la presente divulgación para abordar los problemas descritos anteriormente con respecto a la correlación de mosaicos en submuestras con regiones de mosaicos, en TileRegionGroupEntry, se especifica un mecanismo para indicar que se puede correlacionar más de una submuestra (es decir, mosaico) en una unidad de NAL con un conjunto de mosaicos. En algunos ejemplos, esto se puede hacer teniendo un bucle de elementos sintácticos de id de submuestra (similar al bucle mencionado anteriormente añadido a la NALUMapEntry). En otros ejemplos, indicar que más de una submuestra en una unidad de NAL se correlaciona con un conjunto de mosaicos se puede conseguir por otros medios, tales como tener 32 bits, para los que cada bit representa un mosaico dentro de una unidad de NAL, donde un bit establecido en 1 significa que un mosaico correspondiente es parte del conjunto de mosaicos, mientras que el bit establecido en 0 significa que el mosaico correspondiente no es parte del conjunto de mosaicos. Por ejemplo, el valor 0100 0001 0000 0000 0000 0000 0000 0001 puede indicar que los segundo, octavo y 32.° mosaicos en una unidad de NAL están en un conjunto de mosaicos.
[0117] Por tanto, en este ejemplo, el dispositivo de generación de archivos 34 puede incluir, en una entrada de grupo de muestras visual (por ejemplo, un cuadro de TileRegionGroupEntry o un cuadro de TileSetGroupEntry) en un archivo, para cada submuestra respectiva en una unidad de NAL, un elemento sintáctico de identificador de submuestra (por ejemplo, subsample_id) que tiene una pluralidad de bits. En este ejemplo, la pluralidad de bits incluye bits correspondientes a diferentes mosaicos dentro de la unidad de NAL. Además, en este ejemplo, un bit correspondiente a un mosaico en la unidad de NAL indica si el mosaico es parte de un conjunto de mosaicos. De forma similar, la unidad de análisis sintáctico de archivos 31 puede obtener, de una entrada de grupo de muestras visual en el archivo, para cada submuestra respectiva en una unidad de NAL, un elemento sintáctico de identificador de submuestra (por ejemplo, subsample_id) que tiene una pluralidad de bits. La pluralidad de bits incluye bits correspondientes a diferentes mosaicos dentro de la unidad de NAL y un bit correspondiente a un mosaico en la unidad de NAL indica si el mosaico es parte de un conjunto de mosaicos. La unidad de análisis sintáctico de archivos 31 puede procesar el conjunto de mosaicos. Por ejemplo, en la FIG. 2, una unidad de NAL de VCL para el segmento de fragmento 94 incluye CTU codificadas del mosaico 82, mosaico 84 y algunas CTU codificadas del mosaico 86. En este ejemplo, una NALUMapEntry en el archivo puede incluir, para la unidad de NAL de VCL, un elemento sintáctico igual a 1100 0000 00000000 0000 00000000 0000, para indicar que los dos primeros mosaicos en la unidad de NAL de VCL (es decir, el mosaico 82 y el mosaico 84) se incluyen en el conjunto de mosaicos. Por tanto, si la salida deseada son los mosaicos 82 y 84, la unidad de análisis sintáctico de archivos 31 puede determinar, en base a los elementos sintácticos groupID señalizados en la NALUMapEntry, que la unidad de NAL de VCL incluye CTU codificadas para el mosaico 82 y el mosaico 84. En consecuencia, en este ejemplo, la unidad de análisis sintáctico de archivos 31 puede extraer la unidad de NAL de VCL del archivo. La unidad de análisis sintáctico de archivos 31 puede emitir la unidad de NAL de VCL extraída a un descodificador de vídeo, tal como el descodificador de vídeo 30 (FIG. 1), para la descodificación.
[0118] Las técnicas de la presente divulgación pueden abordar los problemas descritos anteriormente con respecto a la dependencia entre capas de la región de mosaicos y el conjunto de mosaicos. Por ejemplo, en un ejemplo, un conjunto de mosaicos tiene un alcance específico de capa, es decir, cada capa tiene su propia señalización de conjunto de mosaicos. En otras palabras, en este ejemplo, todos los mosaicos que son parte de un conjunto de mosaicos deben pertenecer a imágenes de la misma capa. Por consiguiente, cada mosaico que es parte de un conjunto de mosaicos pertenece a imágenes de la misma capa. Por ejemplo, un flujo de bits puede tener dos capas: capa 0 y capa 1. En este ejemplo, se puede señalizar una primera TileSetGroupEntry para la capa 0 y se puede señalizar una segunda TileSetGroupEntry para la capa 1. En este ejemplo, la primera TileSetGroupEntry no se refiere a los mosaicos en la capa 1 y la segunda TileSetGroupEntry no se refiere a los mosaicos en la capa 0.
[0119] Además, en algunos ejemplos, un nuevo elemento sintáctico que indica el ID de capa de la capa a la que pertenece el conjunto de mosaicos se señaliza adicionalmente en una entrada de descripción de conjunto de mosaicos (por ejemplo, TileSetGroupEntry, un cuadro de TileRegionGroupEntry). Por tanto, en este ejemplo, el dispositivo de generación de archivos 34 puede señalizar, en una entrada de descripción de conjunto de mosaicos de un archivo, un elemento sintáctico (por ejemplo, layerID) que indica un identificador de capa de una capa a la que pertenece un conjunto de mosaicos. Por ejemplo, un flujo de bits puede incluir una capa 0 y una capa 1. En este ejemplo, el elemento sintáctico puede indicar un identificador de capa de la capa 0 para indicar que el conjunto de mosaicos pertenece a la capa 0. De forma similar, la unidad de análisis sintáctico de archivos 31 puede obtener, de una entrada de descripción de conjunto de mosaicos del archivo, un elemento sintáctico que indica un identificador de capa de una capa a la que pertenece un conjunto de mosaicos. En este ejemplo, la unidad de análisis sintáctico de archivos 31 puede procesar, en base al elemento sintáctico, el conjunto de mosaicos. Por ejemplo, la unidad de análisis sintáctico de archivos 31 puede usar el elemento sintáctico para determinar que una entrada de descripción de conjunto de mosaicos corresponde a una capa particular como parte de la determinación de qué unidades de NAL de VCL incluyen bloques codificados (por ejemplo, las CTU) de un conjunto de mosaicos deseado. En este ejemplo, si el identificador de capa indicado por el elemento sintáctico indica la capa particular, la unidad de análisis sintáctico de archivos 31 puede usar información en la entrada de descripción de conjunto de mosaicos para determinar si la entrada de descripción de conjunto de mosaicos corresponde a un grupo de mosaicos deseado. Además, si la entrada de descripción de conjunto de mosaicos corresponde al grupo de mosaicos deseado, la unidad de análisis sintáctico de archivos 31 puede extraer las unidades de NAL de VCL asignadas al groupID especificado por la entrada de descripción de conjunto de mosaicos.
[0120] En algunos ejemplos, los conjuntos de mosaicos que cubren la misma región en diferentes capas (es decir, regiones colocalizadas) tienen el mismo ID de conjunto de mosaicos. Por ejemplo, la FIG. 5 es un diagrama conceptual que ilustra conjuntos de mosaicos que cubren la misma región en diferentes capas. En el ejemplo de la FIG. 5, las imágenes 130, 132 están en una primera capa (L0) y las imágenes 134, 136 están en una segunda capa (L1). Además, en el ejemplo de la FIG. 5, las imágenes 130, 136 están en una primera unidad de acceso (T0) y las imágenes 132, 134 están en una segunda unidad de acceso (T1). Cada una de las imágenes 130, 132, 134, 136 incluye nueve mosaicos indicados por cuadrados más pequeños. Como se menciona anteriormente, de acuerdo con un ejemplo de la presente divulgación, hay un cuadro de TileSetGroupEntry para cada capa (por ejemplo, un cuadro de TileSetGroupEntry para L0 y un cuadro de TileSetGroupEntry separado para L1). Los mosaicos en un conjunto de mosaicos para L0 y los mosaicos en un conjunto de mosaicos para L1 están sombreados. Ya que, en el ejemplo de la FIG. 5, los mosaicos en el conjunto de mosaicos para L0 se colocalizan con los mosaicos en el conjunto de mosaicos para L1, el ID de conjunto de mosaicos para el conjunto de mosaicos para L0 es el mismo que el ID de conjunto de mosaicos para el conjunto de mosaicos para L1.
[0121] Adicionalmente, en este ejemplo, el dispositivo de generación de archivos 34 puede señalizar o de otro modo incluir, en la entrada de grupo de conjuntos de mosaicos del archivo, información de dependencia (por ejemplo, dependency_list, dependency_tile_count, dependencyTileGroupID) que describe la dependencia de una capa a la que pertenece un conjunto de mosaicos. Adicionalmente, en este ejemplo, la unidad de análisis sintáctico de archivos 31 puede obtener, de la entrada de grupo de conjuntos de mosaicos del archivo, información de dependencia que describe la dependencia de una capa a la que pertenece un conjunto de mosaicos. En este ejemplo, la unidad de análisis sintáctico de archivos 31 puede procesar, en base al elemento sintáctico y la información de dependencia, el conjunto de mosaicos. Por ejemplo, la unidad de análisis sintáctico de archivos 31 puede usar la información de dependencia en una entrada de grupo de conjuntos de mosaicos actual para identificar entradas de grupos de conjuntos de mosaicos que tienen elementos sintácticos (por ejemplo, elementos sintácticos layerID) que corresponden a las capas dependientes (es decir, las capas de las que depende la capa a la que pertenece el conjunto de mosaicos) y que tienen elementos sintácticos (por ejemplo, elementos sintácticos groupID) que especifican el mismo valor que el groupID de la entrada de grupo de conjuntos de mosaicos actual. En este ejemplo, a continuación la unidad de análisis sintáctico de archivos 31 puede identificar unidades de NAL de VCL que contienen bloques codificados de grupos de mosaicos en cada una de las capas dependientes.
[0122] Además, como se define en el documento de salida de MPEG N15297, el elemento sintáctico independent_idc en el cuadro de TileRegionGroupEntry especifica las dependencias de codificación entre una región de mosaicos y otras regiones de mosaicos en la imagen actual y en imágenes de referencia de la misma capa. De acuerdo con un ejemplo de la presente divulgación, para el cuadro de TileSetGroupEntry, la información de dependencia (por ejemplo, en base a un elemento sintáctico independent_idc) describe la dependencia dentro de la capa a la que pertenece el conjunto de mosaicos. En otras palabras, un cuadro de TileSetGroupEntry puede incluir uno o más elementos sintácticos que indican información de dependencia.
[0123] En algunos ejemplos, para información de dependencia entre capas, se usa la dependencia de capa señalizada en el grupo de muestras de 'oinf' y de 'linf'. Por ejemplo, un cuadro de descripción de grupo de muestras de 'oinf' para un punto de funcionamiento puede incluir elementos sintácticos que indican, para cada capa respectiva del punto de funcionamiento, que, si las hubiera, otras capas del punto de funcionamiento son capas de referencia de la capa respectiva. Un cuadro de descripción de grupo de muestras de 'linf' para una capa puede incluir elementos sintácticos que indican capas de referencia de la capa. Por tanto, en este ejemplo, en lugar de indicar la dependencia de capa en una entrada de grupo de conjuntos de mosaicos (por ejemplo, usando un elemento sintáctico de lista de dependencias, elemento sintáctico dependency_tile_count y elementos sintácticos dependencyTileGroupID, como se describe anteriormente), la unidad de análisis sintáctico de archivos 31 puede, en cambio, usar grupos de muestras de 'oinf' y/o 'linf' para determinar las dependencias de capa.
[0124] En algunas técnicas de ejemplo de la presente divulgación para abordar los problemas descritos anteriormente con respecto a la dependencia entre capas de la región de mosaicos y el conjunto de mosaicos, una región de mosaicos no se fusiona en el conjunto de mosaicos. En otras palabras, se mantienen los conceptos separados de las regiones de mosaicos y los conjuntos de mosaicos. En dichos ejemplos, se puede aplicar lo siguiente:
a. Una región de mosaicos se especifica como capa específica.
b. Un elemento sintáctico que indica un ID de capa de una capa a la que pertenece la región de mosaicos se señaliza adicionalmente en una entrada de descripción de región de mosaicos (es decir, TileRegionGroupEntry).
c. Las regiones de mosaicos que cubren la misma región en diferentes capas (es decir, región colocalizada) pueden tener el mismo ID de región de mosaicos.
d. Para TileRegionGroupEntry, la información de dependencia (por ejemplo, en base al idc independiente de elemento sintáctico actual) describe la dependencia dentro de la capa a la que pertenece la región de mosaicos.
e. Para la información de dependencia entre capas, se usa la dependencia de capa señalizada en el grupo de muestras de 'oinf' y de 'linf'.
[0125] Por tanto, en este ejemplo, el dispositivo de generación de archivos 34 puede señalizar, en una entrada de grupo de regiones de mosaicos (por ejemplo, un cuadro de TileRegion-GroupEntry) en un archivo, un elemento sintáctico (por ejemplo, layerID) que indica un identificador de capa de una capa a la que pertenece una región de mosaicos. Además, en este ejemplo, el dispositivo de generación de archivos 34 puede señalizar, en la entrada de grupo de regiones de mosaicos de un archivo, información de dependencia (por ejemplo, en base al elemento sintáctico independent_idc) que describe la dependencia de una capa a la que pertenece la región de mosaicos. Del mismo modo, la unidad de análisis sintáctico de archivos 31 puede obtener, de una entrada de descripción de región de mosaicos (por ejemplo, un cuadro de TileRegionGroupEntry) en el archivo, un elemento sintáctico (por ejemplo, ID de capa) que indica un identificador de capa de una capa a la que pertenece una región de mosaicos. Adicionalmente, en este ejemplo, la unidad de análisis sintáctico de archivos 31 puede obtener, de la entrada de grupo de regiones de mosaicos del archivo, información de dependencia que describe la dependencia de una capa a la que pertenece la región de mosaicos. La unidad de análisis sintáctico de archivos 31 puede procesar, en base al elemento sintáctico y la información de dependencia, el conjunto de mosaicos. La unidad de análisis sintáctico de archivos 31 puede procesar el conjunto de mosaicos de acuerdo con los ejemplos correspondientes en otra parte de la presente divulgación.
[0126] De acuerdo con algunos ejemplos de la presente divulgación, la definición de un "conjunto de mosaicos" se cambia de modo que un "conjunto de mosaicos" significa un conjunto de uno o más mosaicos de HEVC completos que se pueden descodificar sin la presencia de otros mosaicos que no son parte del conjunto y los mosaicos pueden, pero no necesariamente, ser contiguos en orden de descodificación. En otras palabras, el conjunto de mosaicos que son parte de un conjunto de mosaicos está restringido por el movimiento dentro del conjunto de mosaicos (no necesariamente dentro de cada mosaico por sí mismo) de modo que los mosaicos se codifican sin referencia a los mosaicos que no son parte del conjunto de mosaicos. Por ejemplo, un codificador de vídeo solo puede usar un bloque en un mosaico en una imagen de referencia que se colocaliza temporalmente con el mosaico para la predicción de movimiento. Con esta definición, la información existente, tal como el cuadro de grupo de acceso aleatorio, el cuadro de grupo de sincronización o la información de cabecera de unidad de NAL, se puede usar para deducir la dependencia temporal de un conjunto de mosaicos. Por tanto, en este ejemplo, no es necesario señalizar dicha información en TileSetGroupEntry. Por ejemplo, puede no ser necesario señalizar un elemento sintáctico dependency_list, un elemento sintáctico dependency_tile_count o elementos sintácticos dependencyTileGroupID en una TileSetGroupEntry.
[0127] De acuerdo con una técnica de la presente divulgación, para abordar los problemas descritos anteriormente con respecto a las unidades de NAL no de VCL de nivel de imagen y de nivel superior, se propone tener un valor de groupID especial, además del groupID 0, para indicar las unidades de NAL que están asociadas a todas las regiones de mosaicos o conjuntos de mosaicos. Por ejemplo, si un cuadro de NALUMapEntry asigna un groupID igual a 0 a una unidad de NAL, la unidad de NAL no está asociada a ningún grupo. En este ejemplo, si el cuadro de NALUMapEntry asigna un groupID igual a 1 a una unidad de NAL, la unidad de NAL es una unidad de NAL no de VCL y la unidad de NAL puede ser necesaria para procesar cualquier grupo asignado a un groupID mayor que 1. En otros ejemplos, las unidades de NAL con groupID asignados con valores distintos de 1 pueden ser necesarias para procesar otros grupos.
[0128] Por tanto, en este ejemplo, el dispositivo de generación de archivos 34 puede incluir, en una NALUMapEntry del archivo, un elemento sintáctico de identificador de grupo (por ejemplo, groupID). En este ejemplo, el elemento sintáctico de identificador de grupo que tiene un valor igual a 0 indica que una unidad de NAL o submuestra no está asociada a ningún grupo, y el elemento sintáctico de identificador de grupo que tiene un valor igual a 1 indica que la unidad de NAL es una unidad de NAL no de VCL que puede ser necesaria para procesar cualquier grupo con un elemento sintáctico de identificador de grupo mayor que 1, y el elemento sintáctico de identificador de grupo que tiene un valor mayor que 1 indica una entrada de conjunto de grupos de conjuntos de mosaicos correspondiente. De forma similar, la unidad de análisis sintáctico de archivos 31 puede obtener, de una NALUMapEntry del archivo, un elemento sintáctico de identificador de grupo (por ejemplo, groupID). El elemento sintáctico de identificador de grupo que tiene un valor igual a 0 indica que una unidad de NAL o submuestra no está asociada a ningún grupo, el elemento sintáctico de identificador de grupo que tiene un valor igual a 1 indica que la unidad de NAL es una unidad de NAL no de VCL que puede ser necesaria para procesar cualquier grupo con un elemento sintáctico de identificador de grupo mayor que 1, y el elemento sintáctico de identificador de grupo que tiene un valor mayor que 1 indica una entrada de conjunto de grupos de conjuntos de mosaicos correspondiente. En este ejemplo, la unidad de análisis sintáctico de archivos 31 puede procesar el conjunto de mosaicos. Por ejemplo, la unidad de análisis sintáctico de archivos 31 puede usar una NALUMapEntry para identificar las unidades de NAL a las que se les asigna identificadores de grupo igual a 1 junto con las unidades de NAL a las que se les asigna un identificador de grupo asociado a un conjunto de mosaicos deseado. Además, en este ejemplo, la unidad de análisis sintáctico de archivos 31 puede extraer las unidades de NAL identificadas del archivo y emitir las unidades de NAL extraídas (por ejemplo, a un descodificador de vídeo, tal como el descodificador de vídeo 30 (FIG. 1)).
[0129] En diversos ejemplos, un dispositivo, tal como un MANE, puede procesar (por ejemplo, en base a diversos elementos sintácticos) un conjunto de mosaicos. Dicho procesamiento puede comprender diversas acciones, tales como extraer los mosaicos del archivo. Además, dicho procesamiento puede comprender transmitir los mosaicos extraídos (por ejemplo, a un descodificador de vídeo, dispositivo de destino 14, etc.). Por ejemplo, se puede desear transmitir solo un conjunto de mosaicos de una imagen, pero no transmitir los mosaicos restantes de la imagen. Esto puede ser deseable para la corrección de errores, en los casos donde solo una parte de la imagen correspondiente al conjunto de mosaicos contiene contenido actualizado, o en otras situaciones.
[0130] La FIG. 6 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas descritas en la presente divulgación. El codificador de vídeo 20 representa un ejemplo de un codificador de vídeo configurado para generar datos de vídeo que se pueden almacenar usando las técnicas de formato de archivo descritas en la presente divulgación. El codificador de vídeo 20 se puede configurar para emitir datos de vídeo de vista única, multivista, escalable, 3D y otros tipos. El codificador de vídeo 20 se puede configurar para emitir datos de vídeo codificados a la entidad de posprocesamiento 200. La entidad de posprocesamiento 200 está destinada a representar un ejemplo de una entidad de vídeo, tal como un dispositivo MANE o de empalme/edición, que puede procesar datos de vídeo codificados del codificador de vídeo 20. En algunos casos, la entidad de posprocesamiento 200 puede ser un ejemplo de una entidad de red. En algunos sistemas de codificación de vídeo, la entidad de posprocesamiento 200 y el codificador de vídeo 20 pueden ser partes de dispositivos separados, mientras que, en otros casos, la funcionalidad descrita con respecto a la entidad de posprocesamiento 200 se puede realizar por el mismo dispositivo que comprende el codificador de vídeo 20. La entidad de posprocesamiento 200 puede ser un dispositivo de vídeo. En algunos ejemplos, la entidad de posprocesamiento 200 puede ser la misma que el dispositivo de generación de archivos 34 de la FIG. 1.
[0131] De acuerdo con una técnica de la presente divulgación, la entidad de posprocesamiento 200 puede generar un archivo para el almacenamiento de contenido de vídeo codificado generado por el codificador de vídeo 20. La entidad de posprocesamiento 200 puede generar el archivo de acuerdo con cualquiera de las técnicas de la presente divulgación.
[0132] El codificador de vídeo 20 puede realizar intra e intercodificación de bloques de vídeo dentro de fragmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial de un vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal de un vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo.
El intramodo (modo I) se puede referir a cualquiera de varios modos de compresión de base espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), se pueden referir a cualquiera de varios modos de compresión de base temporal.
[0133] En el ejemplo de la FIG. 6, el codificador de vídeo 20 incluye una unidad de división 202, una unidad de procesamiento de predicción 204, una unidad de filtro 206, una memoria de imágenes de referencia 208, un sumador 210, una unidad de procesamiento de transformada 212, una unidad de cuantificación 214 y una unidad de codificación por entropía 216. La unidad de procesamiento de predicción 204 incluye una unidad de estimación de movimiento 218, una unidad de compensación de movimiento 220 y una unidad de procesamiento de intrapredicción 222. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también una unidad de cuantificación inversa 224, una unidad de procesamiento de transformada inversa 226 y un sumador 228. La unidad de filtro 206 está destinada a representar uno o más filtros de bucle tales como un filtro de reducción del efecto de bloque, un filtro de bucle adaptativo (ALF) y/o un filtro de desplazamiento adaptativo de muestras (SAO). Aunque la unidad de filtro 206 que se muestra en la FIG. 6 es un filtro de bucle, en otras configuraciones la unidad de filtro 206 se puede implementar como un filtro posbucle.
[0134] Una memoria de datos de vídeo 230 del codificador de vídeo 20 puede almacenar datos de vídeo que se van a codificar por los componentes del codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 230 se pueden obtener, por ejemplo, de la fuente de vídeo 18. La memoria de imágenes de referencia 208 puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para su uso en la codificación de datos de vídeo por el codificador de vídeo 20, por ejemplo, en modos de intra o intercodificación. La memoria de datos de vídeo 230 y la memoria de imágenes de referencia 208 se pueden formar por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAm ), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 230 y la memoria de imágenes de referencia 208 se pueden proporcionar por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 230 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera del chip en relación con esos componentes.
[0135] Como se muestra en la FIG. 6, el codificador de vídeo 20 recibe datos de vídeo, y la unidad de división 202 divide los datos en bloques de vídeo. Esta división también puede incluir la división en fragmentos u otras unidades más grandes, así como la división en bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de LCU y CU. El codificador de vídeo 20 ilustra, en general, los componentes que codifican bloques de vídeo dentro de un fragmento de vídeo que se va a codificar. El fragmento se puede dividir en múltiples bloques de vídeo. La unidad de procesamiento de predicción 204 puede seleccionar uno de una pluralidad de posibles modos de codificación, tal como uno de una pluralidad de modos de intracodificación, o uno de una pluralidad de modos de intercodificación, para el bloque de vídeo actual en base a resultados de error (por ejemplo, la velocidad de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 204 puede proporcionar el bloque intra o intercodificado resultante al sumador 210 para generar datos de bloque residuales y al sumador 228 para reconstruir el bloque codificado para su uso como imagen de referencia.
[0136] La unidad de procesamiento de intrapredicción 222, dentro de la unidad de procesamiento de predicción 204, puede realizar la codificación intrapredictiva del bloque de vídeo actual en relación con uno o más bloques contiguos en la misma trama o fragmento que el bloque actual que se va a codificar, para proporcionar una compresión espacial. La unidad de estimación de movimiento 218 y la unidad de compensación de movimiento 220 dentro de la unidad de procesamiento de predicción 204 realizan la codificación interpredictiva del bloque de vídeo actual en relación con uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar compresión temporal.
[0137] La unidad de estimación de movimiento 218 se puede configurar para determinar el modo de interpredicción para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo de la secuencia como fragmentos P, fragmentos B o fragmentos GPB. La unidad de estimación de movimiento 218 y la unidad de compensación de movimiento 220 pueden estar altamente integradas, pero se ilustran por separado para propósitos conceptuales. La estimación del movimiento, realizada por la unidad de estimación de movimiento 218, es el procedimiento de generación de vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual en relación con un bloque predictivo dentro de una imagen de referencia.
[0138] Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, lo que se puede determinar por la suma de diferencias absolutas (SAD), la suma de las diferencias al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de imágenes de referencia 208. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 218 puede realizar una búsqueda de movimiento en relación con las posiciones de píxel completo y las posiciones de píxel fraccionario, y emitir un vector de movimiento con una precisión de píxel fraccionario.
[0139] La unidad de estimación de movimiento 218 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento intercodificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia se puede seleccionar de una primera lista (lista 0) de imágenes de referencia o de una segunda lista (lista 1) de imágenes de referencia, de las que cada una identifica una o más imágenes de referencia almacenadas en una memoria de imágenes de referencia 208. La unidad de estimación de movimiento 218 envía elementos sintácticos a partir de los que se puede determinar el vector de movimiento calculado a la unidad de codificación por entropía 216 y la unidad de compensación de movimiento 220.
[0140] La compensación del movimiento, realizada por la unidad de compensación de movimiento 220, puede implicar obtener o generar el bloque predictivo en base al vector de movimiento determinado por la estimación del movimiento, posiblemente realizando interpolaciones a una precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 220 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 puede formar un bloque de vídeo residual restando valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luma como de croma. El sumador 210 representa el componente o los componentes que realizan esta operación de resta. La unidad de compensación de movimiento 220 también puede generar elementos sintácticos asociados a los bloques de vídeo y al fragmento de vídeo para su uso por el descodificador de vídeo 30 en la descodificación de los bloques de vídeo del fragmento de vídeo.
[0141] La unidad de procesamiento de intrapredicción 222 puede intrapredecir un bloque actual, como alternativa a la interpredicción realizada por la unidad de estimación de movimiento 218 y la unidad de compensación de movimiento 220, como se describe anteriormente. Por ejemplo, la unidad de procesamiento de intrapredicción 222 puede determinar un modo de intrapredicción para usar para codificar un bloque actual. En algunos ejemplos, la unidad de procesamiento de intrapredicción 222 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pases de codificación separados, y la unidad de procesamiento de intrapredicción 222 puede seleccionar un modo de intrapredicción apropiado para usar a partir de los modos sometidos a prueba. Por ejemplo, la unidad de procesamiento de intrapredicción 222 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción sometidos a prueba, y seleccionar el modo de intrapredicción que tenga las mejores características de velocidad-distorsión entre los modos sometidos a prueba. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se codificó para producir el bloque codificado, así como una velocidad de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de procesamiento de intrapredicción 222 puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
[0142] En cualquier caso, después de seleccionar un modo de intrapredicción para un bloque, la unidad de procesamiento de intrapredicción 222 puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación por entropía 216. La unidad de codificación por entropía 216 puede codificar la información que indica el modo de intrapredicción seleccionado de acuerdo con las técnicas de la presente divulgación. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices del modo de intrapredicción y una pluralidad de tablas de índices del modo de intrapredicción modificadas (también denominadas tablas de correlación de palabras de código), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índices del modo de intrapredicción y una tabla de índices del modo de intrapredicción modificada para usar para cada uno de los contextos.
[0143] Después de que la unidad de procesamiento de predicción 204 genera el bloque predictivo para el bloque de vídeo actual, por medio de interpredicción o bien intrapredicción, el codificador de vídeo 20 puede formar un bloque de vídeo residual restando el bloque predictivo al bloque de vídeo actual. Los datos de vídeo residuales del bloque residual se pueden incluir en una o más TU y aplicarse a la unidad de procesamiento de transformada 212. La unidad de procesamiento de transformada 212 transforma los datos de vídeo residuales en coeficientes de transformada residuales usando una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformada 212 puede convertir los datos de vídeo residuales de un dominio de píxel a un dominio de transformada, tal como un dominio de frecuencia.
[0144] La unidad de procesamiento de transformada 212 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 214. La unidad de cuantificación 214 cuantifica los coeficientes de transformada para reducir además la velocidad de bits. El procedimiento de cuantificación puede reducir la profundidad de bits asociada a algunos o a todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 214 puede realizar a continuación una exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificación por entropía 216 puede realizar la exploración.
[0145] Seguidamente a la cuantificación, la unidad de codificación por entropía 216 puede codificar por entropía los elementos sintácticos que representan los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 216 puede realizar una codificación de longitud variable adaptativa al contexto (CAVLC), una codificación aritmética binaria adaptativa al contexto (CABAC), una codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), una codificación por entropía por división de intervalos de probabilidad (PIPE) u otra metodología o técnica de codificación por entropía. Seguidamente a la codificación por entropía por la unidad de codificación por entropía 216, el flujo de bits codificado se puede transmitir al descodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación por el descodificador de vídeo 30. La unidad de codificación por entropía 216 también puede codificar por entropía los vectores de movimiento y los otros elementos sintácticos para el fragmento de vídeo actual que se está codificando.
[0146] La unidad de cuantificación inversa 224 y la unidad de procesamiento de transformada inversa 226 aplican una cuantificación inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, para su posterior uso como bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 220 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. La unidad de compensación de movimiento 220 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles fraccionarios, para su uso en la estimación del movimiento. El sumador 228 puede añadir el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad de compensación de movimiento 220 para producir un bloque de referencia para su almacenamiento en la memoria de imágenes de referencia 208. El bloque de referencia se puede usar por la unidad de estimación de movimiento 218 y la unidad de compensación de movimiento 220 como bloque de referencia para realizar una interpredicción de un bloque en una trama o imagen de vídeo subsiguiente.
[0147] En algunos ejemplos, la entidad de posprocesamiento 200 genera un archivo para el almacenamiento de contenido de vídeo, tal como el flujo de bits generado por el codificador de vídeo 20. Por ejemplo, la entidad de posprocesamiento 200 puede recibir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo. En este ejemplo, las imágenes de los datos de vídeo incluyen una imagen actual, la imagen actual se divide en una pluralidad de mosaicos, y cada mosaico respectivo de la pluralidad de mosaicos es una región rectangular respectiva. Además, en este ejemplo, la entidad de posprocesamiento 200 puede generar un cuadro de entrada de mapa de unidades de NAL (por ejemplo, NALUMapEntry) en un archivo. El cuadro de entrada de mapa de unidades de NAL asocia unidades de NAL del flujo de bits a un conjunto de mosaicos. En este ejemplo, el conjunto de mosaicos puede incluir dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual. En algunos casos, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular. Además, en este ejemplo, la entidad de posprocesamiento 200 genera una entrada de grupo de conjuntos de mosaicos en el archivo. La entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos. Además, en este ejemplo, el cuadro de entrada de conjunto de mosaicos incluye un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura. El elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de ancho especifica un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de altura especifica una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0148] La FIG. 7 es un diagrama de bloques que ilustra un descodificador de vídeo 30 de ejemplo que puede implementar las técnicas descritas en la presente divulgación. El descodificador de vídeo 30 de la FIG. 7 representa un ejemplo de un descodificador de vídeo configurado para descodificar datos de vídeo que se pueden almacenar usando las técnicas de formato de archivo descritas en la presente divulgación.
[0149] El descodificador de vídeo 30 se puede configurar para descodificar datos de vídeo de vista única, multivista, escalable, 3D y de otros tipos. En el ejemplo de la FIG. 7, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 250, una unidad de procesamiento de predicción 252, una unidad de cuantificación inversa 254, una unidad de procesamiento de transformada inversa 256, un sumador 258, una unidad de filtro 260 y una memoria de imágenes de referencia 262. La unidad de procesamiento de predicción 252 incluye una unidad de compensación de movimiento 264 y una unidad de procesamiento de intrapredicción 266. En algunos ejemplos, el descodificador de vídeo 30 realiza un pase de descodificación, en general, recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 de la FIG. 6.
[0150] Una memoria intermedia de imágenes codificadas (CPB) 268 puede recibir y almacenar datos de vídeo codificados (por ejemplo, unidades de NAL) de un flujo de bits. Los datos de vídeo almacenados en la CPB 268 se pueden obtener, por ejemplo, del enlace 16 de la FIG. 1, por ejemplo, desde una fuente de vídeo local, tal como una cámara, por medio de una comunicación de red por cable o inalámbrica de datos de vídeo, o accediendo a medios físicos de almacenamiento de datos. La CPB 268 puede formar una memoria de datos de vídeo que almacena datos de vídeo codificados de un flujo de bits de vídeo codificado. La memoria de imágenes de referencia 262 puede ser una memoria de imágenes de referencia que almacena datos de vídeo de referencia para su uso en la descodificación de datos de vídeo por el descodificador de vídeo 30, por ejemplo, en modos de intra o intercodificación. La CPB 268 y la memoria de imágenes de referencia 262 pueden estar formadas por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), que incluye DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La CPB 268 y la memoria de imágenes de referencia 262 se pueden proporcionar por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la CPB 268 puede estar en un chip con otros componentes del descodificador de vídeo 30, o fuera del chip con respecto a esos componentes.
[0151] Durante el procedimiento de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa los bloques de vídeo de un fragmento de vídeo codificado y elementos sintácticos asociados desde el codificador de vídeo 20. En el ejemplo de la FIG. 7, el descodificador de vídeo 30 puede recibir el flujo de bits de vídeo codificado desde una unidad de análisis sintáctico de archivos 270 que analiza sintácticamente un archivo para extraer un flujo de bits de vídeo codificado. En algunos ejemplos, la unidad de análisis sintáctico de archivos 270 puede recibir el archivo desde una entidad de red 272. La entidad de red 272 puede ser, por ejemplo, un servidor, un MANE, un editor/empalmador de vídeo u otro dispositivo de este tipo configurado para implementar una o más de las técnicas descritas anteriormente. La entidad de red 272 puede incluir o no un codificador de vídeo, tal como el codificador de vídeo 20. Algunas de las técnicas descritas en la presente divulgación se pueden implementar por la entidad de red 272 antes de que la entidad de red 272 transmita el flujo de bits de vídeo codificado al descodificador de vídeo 30. En algunos sistemas de descodificación de vídeo, la entidad de red 272 y el descodificador de vídeo 30 pueden ser partes de dispositivos separados, mientras que en otros casos, la funcionalidad descrita con respecto a la entidad de red 272 se puede realizar por el mismo dispositivo que comprende el descodificador de vídeo 30. Se puede considerar que la entidad de red 272 es un dispositivo de vídeo. Además, en algunos ejemplos, la entidad de red 272 es el dispositivo de generación de archivos 34 de la FIG. 1. La unidad de análisis sintáctico de archivos 270 se puede implementar como parte del dispositivo de destino 14 o un dispositivo separado del dispositivo de destino. En algunos ejemplos, la entidad de red 272 y la unidad de análisis sintáctico de archivos 270 se implementan por el mismo dispositivo.
[0152] En el ejemplo de la FIG. 7, la unidad de análisis sintáctico de archivos 270 puede obtener un cuadro de entrada de mapa de unidades de NAL en un archivo. En este ejemplo, el cuadro de entrada de mapa de unidades de NAL asocia unidades de NAL de un flujo de bits a un conjunto de mosaicos. El flujo de bits incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo. En este ejemplo, las imágenes de los datos de vídeo incluyen una imagen actual, la imagen actual se divide en una pluralidad de mosaicos, y cada mosaico respectivo de la pluralidad de mosaicos es una región rectangular respectiva. Además, en este ejemplo, el conjunto de mosaicos incluye dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual. En algunos casos, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos puede no tener conformación rectangular. En este ejemplo, la unidad de análisis sintáctico de archivos 270 puede obtener una entrada de grupo de conjuntos de mosaicos (por ejemplo, TileSetGroupEntry, TileRegionGroupEntry) en el archivo. La entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos. Adicionalmente, la entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura. El elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de ancho especifica un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de altura especifica una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. Además, en este ejemplo, la unidad de análisis sintáctico de archivos 270 puede procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura. Por ejemplo, la unidad de análisis sintáctico de archivos 270 puede usar el elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura para determinar si un conjunto de mosaicos correspondiente a la entrada de grupo de conjuntos de mosaicos es un conjunto de mosaicos deseado. Además, en este ejemplo, si el conjunto de mosaicos correspondiente a la entrada de grupo de conjuntos de mosaicos es el conjunto de mosaicos deseado, la unidad de análisis sintáctico de archivos 270 puede usar el cuadro de entrada de mapa de unidades de NAL para identificar las unidades de NAL del flujo de bits que están asociadas al conjunto de mosaicos deseado. La unidad de análisis sintáctico de archivos 270 puede reenviar las unidades de NAL identificadas al descodificador de vídeo 30 para la descodificación. El conjunto de mosaicos deseado se puede especificar por una fuente fuera de la unidad de análisis sintáctico de archivos 270, la unidad de análisis sintáctico de archivos 270 puede determinar el conjunto de mosaicos deseado en base a los datos de un dispositivo que descodifica los datos de vídeo (por ejemplo, el dispositivo de destino 14), la unidad de análisis sintáctico de archivos 270 puede determinar el conjunto de mosaicos deseado en base a otros factores, tales como el ancho de banda, y/o la unidad de análisis sintáctico de archivos 270 puede determinar el conjunto de mosaicos deseado de otras maneras.
[0153] La unidad de descodificación por entropía 250 del descodificador de vídeo 30 descodifica por entropía elementos sintácticos particulares del flujo de vídeo para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. La unidad de descodificación por entropía 250 reenvía los vectores de movimiento y otros elementos sintácticos a la unidad de procesamiento de predicción 252. El descodificador de vídeo 30 puede recibir los elementos sintácticos a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo.
[0154] Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad de procesamiento de intrapredicción 266 de la unidad de procesamiento de predicción 252 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual en base a un modo de intrapredicción señalizado y datos de los bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un fragmento intercodificado (es decir, B o P), la unidad de compensación de movimiento 264 de la unidad de procesamiento de predicción 252 produce bloques predictivos para un bloque de vídeo del fragmento de vídeo actual, en base a los vectores de movimiento y otros elementos sintácticos recibidos desde la unidad de descodificación por entropía 250. Los bloques predictivos se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, lista 0 y lista 1, usando técnicas de construcción por defecto en base a imágenes de referencia almacenadas en la memoria de imágenes de referencia 262.
[0155] La unidad de compensación de movimiento 264 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual, determinando los vectores de movimiento y obteniendo otros elementos sintácticos, y usa la información de predicción para producir los bloques predictivos del bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad de compensación de movimiento 264 usa algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) usado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de interpredicción (por ejemplo, un fragmento B o un fragmento P) en el caso de interpredicción, información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo intercodificado del fragmento, el estado de interpredicción para cada bloque de vídeo intercodificado del fragmento y/u otra información para descodificar los bloques de vídeo en el fragmento de vídeo actual.
[0156] La unidad de compensación de movimiento 264 también puede realizar la interpolación en base a filtros de interpolación. La unidad de compensación de movimiento 264 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles fraccionarios de los bloques de referencia. En este caso, la unidad de compensación de movimiento 264 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos y puede usar los filtros de interpolación para producir bloques predictivos.
[0157] La unidad de cuantificación inversa 254 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 250. El procedimiento de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo del fragmento de vídeo para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa que se debería aplicar. La unidad de procesamiento de transformada inversa 256 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un procedimiento de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de píxel.
[0158] Después de que la unidad de compensación de movimiento 264 genera el bloque predictivo para el bloque de vídeo actual, en base a los vectores de movimiento y otros elementos sintácticos, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de procesamiento de transformada inversa 256 a los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 264. El sumador 258 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se pueden usar filtros de bucle (en el bucle de codificación o bien después del bucle de codificación) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad de vídeo. La unidad de filtro 260 está destinada a representar uno o más filtros de bucle tales como un filtro de reducción del efecto de bloque, un filtro de bucle adaptativo (ALF) y/o un filtro de desplazamiento adaptativo de muestras (SAO). Aunque la unidad de filtro 260 que se muestra en la FIG. 7 es un filtro de bucle, en otras configuraciones la unidad de filtro 260 se puede implementar como un filtro posbucle. Los bloques de vídeo descodificados en una trama o imagen dada se almacenan a continuación en la memoria de imágenes de referencia 262, que almacena imágenes de referencia usadas para una compensación de movimiento subsiguiente. La memoria de imágenes de referencia 262 también almacena datos de vídeo descodificados para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1. Por tanto, la memoria de imagen de referencia 262 puede ser un ejemplo de uno o más medios de almacenamiento de datos configurados para almacenar datos de vídeo.
[0159] En esta sección se proporciona un análisis de detalles de ejemplo de técnicas de la presente divulgación descritas en otra parte de la presente divulgación. Como se indica anteriormente, el texto entre "<insert>" e "</insert> los símbolos corresponde a adiciones o textos existentes modificados (por ejemplo, <insert>texto añadido</insert>), mientras que el texto eliminado está entre "<delete>" y "</delete> los símbolos (por ejemplo, <delete>texto eliminado</delete>).
[0160] Como se indica anteriormente, de acuerdo con un ejemplo de la presente divulgación, se propone fusionar el concepto de región de mosaicos en el concepto de conjunto de mosaicos. El siguiente texto describe los detalles de implementación de este ejemplo. En particular, la sintaxis y la semántica del cuadro de TileSetGroupEntry después de fusionarse con el cuadro de TileRegionGroupEntry se pueden definir como sigue:
class TileSetGroupEntry () extends VisualSampleGroupEntry
('tsif') {
unsigned int (16) groupID;
<insert>unsigned int (6) layerlD;
int (2) reserved;
unsigned int (1) rectangular_flag;
unsigned int (2) independent_idc;
unsigned int (1) filtering_disabled;
int (3) reserved;
unsigned int (16) horizontal_offset;
unsigned int (16) vertical_offset;
unsigned int(16) region_width;
unsigned int (16) region_height;</insert>
<delete>int (2 ) dependency_list;
int (5) reserved;
if ((dependency_list==l) | | (dependency_list==3)) {
unsigned int (16) dependency_tile_count;
for (i=l; i<= dependency_tile_count; i++) {
unsigned int (16) dependencyTileGroupID;
}
if (dependency_list==3) {
unsigned int (16) irap_dependency_tile_count;
for (i=1; i<= irap_dependency_tile_count; i++) {
unsigned int (16) irap_dependencyTileGroupID;
}
} else if (dependency_list==2) {
unsigned int (16) topLeftDependencyTileGroupId;
unsigned int (16)
bottomRightDependencyTileGroupId;
}</delete>
}
ID de grupo es el identificador para el conjunto de mosaicos. El valor 0 está reservado para uso especial en el cuadro de 'nalm'.
<insert> ID de capa es el identificador de la capa a la que pertenece la unidad de conjunto de mosaicos.
rectangular_flag indica si el área cubierta por los mosaicos en el conjunto de mosaicos tiene una conformación rectangular.
independent_idc especifica las dependencias de codificación entre este conjunto de mosaicos y otros conjuntos de mosaicos en la imagen actual y en las imágenes de referencia de la misma capa. Las dependencias entre capas, si las hubiera, se indican por un grupo de muestras de 'linf y/u 'oinf'. Un conjunto de mosaicos con groupID gidA y layerID lidA tiene dependencia entre capas de otro conjunto de mosaicos con groupID gidB y layerID lidB si gidA es igual a gidB y lidB es una capa de referencia de lidA como se indica por el grupo de muestras de 'linf' y/u 'oinf'.
El valor de independent_idc es como sigue:
- Si independent_idc es igual a 0, se desconocen las dependencias de codificación entre este conjunto de mosaicos y otros mosaicos en la misma imagen o imágenes previas.
- Si independent_idc es igual a 1, no hay dependencia temporal entre este conjunto de mosaicos y los otros conjuntos de mosaicos con diferente groupID en cualquier imagen de referencia, pero puede haber dependencia de codificación temporal entre mosaicos de diferentes imágenes dentro del mismo conjunto de mosaicos.
- Si independent_idc es igual a 2, no hay dependencia temporal entre los mosaicos en este conjunto de mosaicos y cualquier otro mosaico en las imágenes de referencia.
- El valor 3 está reservado.</insert>
filtering_disabled, cuando se establece, indica que ningún funcionamiento de filtrado posterior a la descodificación en esta región de mosaicos requiere acceso a los píxeles adyacentes a esta región de mosaicos, es decir, la reconstrucción exacta de bits de la región de mosaicos es posible sin descodificar los mosaicos adyacentes.
<insert>horizontal_offset especifica el desplazamiento horizontal del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, en relación con el píxel superior izquierdo de la imagen, en muestras de luma de la región base (que es la imagen completa).
vertical_offset especifica el desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, en relación con el píxel superior izquierdo de la imagen, en muestras de luma de la región base.
region_width especifica el ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, en muestras de luma de la región base.
region_height especifica la altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos, en muestras de luma de la región base.</insert>
[0161] Por tanto, en el texto de ejemplo anterior, un conjunto de mosaicos tiene un alcance específico de capa. Además, como parte de la generación de la entrada de grupo de conjuntos de mosaicos (por ejemplo, TileSetGroupEntry), el dispositivo de generación de archivos 34 puede incluir, en la entrada de grupo de conjuntos de mosaicos, información de dependencia (por ejemplo, independent_idc) que describe la dependencia dentro de una capa a la que pertenece el conjunto de mosaicos. Por ejemplo, el dispositivo de generación de archivos 34 puede incluir, en la entrada de grupo de conjuntos de mosaicos, un elemento sintáctico particular (por ejemplo, independent_idc) que especifica las dependencias de codificación entre el conjunto de mosaicos y otros conjuntos de mosaicos en la imagen actual y en las imágenes de referencia de la capa a la que pertenece el conjunto de mosaicos. En este ejemplo, el dispositivo de generación de archivos 34 puede indicar, en un grupo de muestras de información de capa (por ejemplo, un grupo de muestras de 'linf) en el archivo o un grupo de muestras de información de punto de funcionamiento (por ejemplo, un grupo de muestras de 'oinf ') en el archivo, dependencias entre capas. En algunos ejemplos, el elemento sintáctico particular es una bandera (por ejemplo, una bandera independiente). En dichos ejemplos, la bandera tiene exactamente dos estados, un primer estado de la bandera que indica que no hay dependencia temporal, un segundo estado de la bandera que indica que puede haber o no dependencia temporal. De forma similar, en algunos ejemplos, la unidad de análisis sintáctico de archivos 31 puede obtener, de dentro de la entrada de grupo de conjuntos de mosaicos, un elemento sintáctico particular que especifica las dependencias de codificación entre el conjunto de mosaicos y otros conjuntos de mosaicos en la imagen actual y en las imágenes de referencia de la capa a la que pertenece el conjunto de mosaicos. Adicionalmente, en este ejemplo, la unidad de análisis sintáctico de archivos 31 puede determinar, en base a un grupo de muestras de información de capa en el archivo o un grupo de muestras de información de punto de funcionamiento en el archivo, dependencias entre capas. En este ejemplo, la unidad de análisis sintáctico de archivos 31 puede procesar el conjunto de mosaicos procesando el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho, el elemento sintáctico de altura y las dependencias entre capas.
[0162] Cuando la región cubierta por los mosaicos en un conjunto de mosaicos no tiene una conformación rectangular, el área rectangular mínima se describe por horizontal_offset, vertical_offset, region_width y region_height, como se muestra en el ejemplo de la FIG. 4. Además, en consecuencia con los ejemplos anteriores que indican que los conjuntos de mosaicos que cubren regiones colocalizadas en diferentes capas tienen el mismo ID de conjunto de mosaicos y que la dependencia de capa se puede señalizar en grupos de muestras de 'oinf' y 'linf', la semántica del elemento sintáctico independent_idc como se expone en el texto anterior incluye:
Las dependencias entre capas, si las hubiera, se indican por un grupo de muestras de 'linf y/u 'oinf'. Un conjunto de mosaicos con groupID gidA y layerID lidA tiene una dependencia entre capas de otro conjunto de mosaicos con groupID gidB y layerID lidB si gidA es igual a gidB y lidB es una capa de referencia de lidA como se indica por el grupo de muestras de 'linf y/u 'oinf'.
[0163] En algunos ejemplos, después de la modificación propuesta anteriormente, solo dos valores del elemento sintáctico idc independiente tienen un uso significativo; estos son: el elemento sintáctico independent_idc que tiene un valor igual a 1 o bien 2. En otras palabras, el valor del elemento sintáctico independent_idc que tiene un valor igual a 0 no tiene ningún uso significativo. En consecuencia, el elemento sintáctico independent_idc se puede simplificar como una bandera en lugar de un indicador. Por tanto, el elemento sintáctico independent_idc puede consistir en 1 bit, a diferencia de dos bits. Los dos estados de la bandera se pueden especificar como "sin dependencia temporal" y "puede haber o no dependencia temporal". Un compositor de archivos (por ejemplo, el dispositivo de generación de archivos 34) siempre puede usar este último como una opción, logrando de este modo lo que logra el elemento sintáctico independent_idc que tiene el valor 0 como se define en la semántica anteriormente.
[0164] En otro ejemplo, la sintaxis y la semántica del cuadro de TileSetGroupEntry después de fusionarse con el cuadro de TileRegion-GroupEntry se pueden definir como sigue:
class TileSetGroupEntry () extends VisualSampleGroupEntry
('tsif') {
unsigned int (16) groupID;
<insert>unsigned int (6) layerlD;
int (2) reserved;
int (2) dependency_list;
unsigned int (1) rectangular_flag;
unsigned int (2) independent_idc;
unsigned int (1) filtering_disabled;
int (1) reserved;
if (rectangular_flag == 1) {
unsigned int (16) horizontal_offset;
unsigned int (16) vertical_offset;
unsigned int (16) region_width;
unsigned int (16) region_height;
} </insert>
<delete> int (2) dependency_list;
int (5) reserved;
if ((dependency_list==l) | | (dependency_list==3)) {
unsigned int (16) dependency_tile_count;
for (i=1; i<= dependency_tile_count; i++) {
unsigned int (16) dependencyTileGroupID;
}
if (dependency_list==3) {
unsigned int(16) irap_dependency_tile_count;
for (i=1; i<= irap_dependency_tile_count; i++) {
unsigned int (16) irap_dependencyTileGroupID;
}
} else if (dependency_list==2) {
unsigned int (16) topLeftDependencyTileGroupId;
unsigned int (16)
bottomRightDependencyTileGroupId;
}</delete>
}
[0165] Las dos sintaxis modificadas de ejemplo del cuadro de TileSetGroupEntry que se muestran anteriormente difieren en que la segunda sintaxis modificada del cuadro de TileSetGroupEntry incluye un elemento sintáctico "bandera rectangular" e incluye los elementos sintácticos "horizontal_offset", "vertical_offset", "region_width" y "region_height" solo si el elemento sintáctico "bandera rectangular" es igual a 1. El elemento sintáctico "bandera rectangular" indica si el conjunto de mosaicos correspondiente al cuadro de TileSetGroupEntry es rectangular. Esto es consecuente con el ejemplo anterior con respecto a que se señaliza la información de desplazamiento horizontal, desplazamiento vertical, ancho y altura solo si la región cubierta por los mosaicos en el conjunto de mosaicos tiene conformación rectangular.
[0166] Como se analiza anteriormente, los ejemplos particulares de la presente divulgación añaden el mecanismo de correlación para los mosaicos en submuestras a una NALUMapEntry en lugar de una TileRegionGroupEntry. El siguiente texto proporciona detalles de ejemplo adicionales de acuerdo con dichos ejemplos.
class NALUMapEntry () extends VisualSampleGroupEntry
('nalm') {
unsigned int (6) reserved = 0;
unsigned int (1) large_size;
<insert>unsigned int (1) nalu_flag;</insert>
<delete>unsigned int (1) rle;</delete>
if (large_size) {
unsigned int (16) entry_count;
} else {
unsigned int (8) entry_count;
}
<delete>for (i=1; i<= entry_count; i +) {</delete>
<insert>for (i=0; i < entry_count; i +) {</insert>
<delete>if (rle) {
if (large_size) {
unsigned int (16) NALU_start_number;
} else {
unsigned int (8) NALU_start_number;
}
}</delete>
<insert>for (j = 0; j < subsample_count; j++) {</insert>
unsigned int (16) groupID;
<insert> } </insert>
}
}
large_size indica si el número de entradas de unidades de NAL en las muestras de pista está representado en 8 o 16 bits.
<insert>nalu_flag indica si cada unidad de NAL se correlaciona como máximo con un conjunto de mosaicos. Cuando nalu_flag es igual a 1, el valor de subsample_count se establece en 1; de otro modo, el valor de subsample_count se establece igual al valor de subsample_count correspondiente en el SubSampleInformationBox con banderas iguales a 2 (submuestras basadas en mosaicos).</insert>
<delete>rle indica si la codificación de longitud de ejecución se usa (1) para asignar el groupID a unidades de NAL o no (0).</delete>
entry_count especifica el número de entradas en el mapa. <delete>Téngase en cuenta que cuando rle es igual a 1, entry_count corresponde al número de ejecuciones donde unidades de NAL consecutivas están asociadas al mismo grupo. Cuando rle es igual a 0, el entry_count representa el número total de unidades de NAL.
NALU_start_number es el índice de NALU basado en 1 en la muestra de la primera NALU en la ejecución actual asociada al groupID.</delete>
groupID indica la entrada de <delete>grupo de</delete> conjuntos de mosaicos <delete>escalable, multivista,</delete> correspondiente, como se indica en las descripciones de grupo de muestras. Si es 0, no hay ningún grupo asociado a estas NALU identificadas.
[0167] Además, como se indica anteriormente, en algunos ejemplos de la presente divulgación, se elimina el mecanismo de codificación de longitud de ejecución en el cuadro de NALUMapEntry. La eliminación del mecanismo de codificación de longitud de ejecución del cuadro de NALUMapEntry corresponde a lo siguiente en el cuadro de NALUMapEntry modificado mostrado anteriormente:
<delete>rle indica si se usa la codificación de longitud de ejecución (1) para asignar el groupID a unidades de NAL o no (0). </delete>entry_count especifica el número de entradas en el mapa. <delete>Téngase en cuenta que cuando rle es igual a 1, entry_count corresponde al número de ejecuciones donde unidades de NAL consecutivas están asociadas al mismo grupo. Cuando rle es igual a 0, el entry_count representa el número total de unidades de NAL.
NALU_start_number es el índice de NALU basado en 1 en la muestra de la primera
NALU en la ejecución actual asociada al groupID.</delete>
<delete>for (i=1; i < entry_count; i++) {</delete>
<delete>if (rle) {
if (large_size) {
unsigned int(16) NALU_start_number;
} else {
unsigned int(8) NALU_start_number;
}
}</delete>
[0168] La siguiente sintaxis y semántica de NALUMapEntry muestra un ejemplo de cambios a la ISO/IEC 14496-15 para implementar diversos ejemplos descritos en otra parte de la presente divulgación.
class NALUMapEntry() extends VisualSampleGroupEntry
('nalm') {
unsigned int (6) reserved = 0;
unsigned int (1) large_size;
<insert>unsigned int (1) nalu_flag;</insert>
<delete>unsigned int (1) rle;</delete>
if (large_size) {
unsigned int (16) entry_count;
} else {
unsigned int (8) entry_count;
}
<insert>if (nalu_flag = 1) {</insert>
<delete>for (i=1; i < entry_count; i ) {</delete>
<insert>for (i=0; i < entry_count; i ) {</insert>
<delete>if (rle) {
if (large_size) {
unsigned int (16) NALU_start_number;
} else {
unsigned int (8) NALU_start_number;
}
}</delete>
unsigned int (16) groupID;
}
<insert> }
else {
for (1=0; i < entry_count; i++) {
unsigned int (16) subsample_count;
for (j = 0; j < subsample_count; j++) {
unsigned int (16) groupID;
if (groupID > 1) {
unsigned int (16) subsample_idx;
}
}
}
} </insert>
}
large_size indica si el número de entradas de unidades de NAL en las muestras de pista está representado en 8 o 16 bits.
<insert>nalu_flag indica si cada unidad de NAL se correlaciona como máximo con una región de mosaicos o conjunto de mosaicos. Cuando nalu_flag es igual a 1, cada unidad de NAL se correlaciona como máximo con una región de mosaicos o conjunto de mosaicos. Cuando nalu_flag es igual a 0, cada unidad de NAL se puede correlacionar con más de una región de mosaicos o conjunto de mosaicos.</insert>
<delete>rle indica si la codificación de longitud de ejecución se usa (1) para asignar el groupID a unidades de NAL o no (0).</delete>
entry_count especifica el número de entradas en el mapa. <delete>Téngase en cuenta que cuando rle es igual a 1, entry_count corresponde al número de ejecuciones donde unidades de NAL consecutivas están asociadas al mismo grupo. Cuando rle es igual a 0, el entry_count representa el número total de unidades de NAL.
NALU_start_number es el índice de NALU basado en 1 en la muestra de la primera NALU en la ejecución actual asociada al groupID.</delete>
<insert>subsample_count especifica el número de submuestras presentes en la unidad de NAL.<insert>
groupID mayor que 1 indica la entrada de grupo de conjuntos de mosaicos <delete>escalable, multivista,</delete> correspondiente, como se indica en las descripciones de grupo de muestras. Si es 0, <insert>la unidad de NAL o la submuestra no está asociada a ningún grupo</insert> <delete>ningún grupo está asociado a estas NALU identificadas</delete><insert>; de lo contrario, si es 1, la unidad de NAL es una unidad de NAL no de VCL y puede ser necesaria para procesar cualquier grupo con un ID de grupo mayor que 1.
subsample_idx especifica el índice basado en 0 para las submuestras en la muestra correlacionada, como se indica en el SubSampleInformationBox.</insert>
[0169] Como se indica anteriormente, en algunos ejemplos de la presente divulgación, se puede añadir un bucle al cuadro de NALUMapEntry para señalizar un elemento sintáctico groupID para cada submuestra en una unidad de NAL. Este bucle corresponde a lo siguiente en el cuadro de NALUMapEntry modificado mostrado anteriormente:
for (j = 0; j < subsample_count; j++) {
unsigned int(16) groupID;
if (groupID > 1) {
unsigned int(16) subsample_idx;
}
}
[0170] Además, como se indica anteriormente, en algunos ejemplos de la presente divulgación, un valor de groupID especial indica unidades de NAL que están asociadas a todas las regiones de mosaicos o conjuntos de mosaicos. Es decir, cuando nalu_flag es igual a 1, el cuadro de NALUMapEntry puede incluir una serie de elementos sintácticos groupID. Cada elemento sintáctico groupID respectivo de la serie de elementos sintácticos groupID corresponde a una unidad de NAL respectiva e indica un identificador de grupo de la unidad de NAL correspondiente. En el texto de ejemplo anterior, un elemento sintáctico groupID igual a 1 indica que la unidad de NAL correspondiente es una unidad de NAL no de VCL y puede ser necesaria para procesar cualquier grupo con groupID mayor que 1 y, por lo tanto, está asociada a todos los conjuntos de mosaicos. El uso de este groupID especial puede resolver un problema en la ISO/IEC 14496-15 con respecto a cómo asignar valores de groupID a unidades de NAL no de VCL. En el texto anterior, la semántica del elemento sintáctico groupID se modifica para especificar que las unidades de NAL asignadas a un groupID de 1 son unidades de NAL no de VCL. En otros ejemplos, se pueden usar valores distintos de 1 para indicar unidades de NAL no de VCL.
[0171] La FIG. 8 es un diagrama conceptual que ilustra una estructura de ejemplo de un archivo 300, de acuerdo con una o más técnicas de la presente divulgación. En el ejemplo de la FIG. 8, el archivo 300 incluye un cuadro de película 302 y una pluralidad de cuadros de datos de medios 304. Aunque en el ejemplo de la FIG. 8 se ilustran en el mismo archivo, en otros ejemplos, el cuadro de película 302 y el cuadro de datos de medios 304 pueden estar en archivos separados. Como se indica anteriormente, un cuadro puede ser un bloque de construcción orientado a objetos definido por un identificador de tipo único y una longitud. Por ejemplo, un cuadro puede ser la estructura sintáctica elemental en el ISOBMFF, que incluye un tipo de cuadro codificado de cuatro caracteres, un recuento de octetos del cuadro y una carga útil.
[0172] El cuadro de película 302 puede contener metadatos para las pistas del archivo 300. Cada pista del archivo 300 puede comprender un flujo continuo de datos de medios. Cada uno de los cuadros de datos de medios 304 puede incluir una o más muestras 305. Cada una de las muestras 305 puede comprender una unidad de acceso de audio o vídeo. Como se describe en otra parte de la presente divulgación, cada unidad de acceso puede comprender múltiples imágenes codificadas en codificación multivista (por ejemplo, MV-HEVC y 3D-HEVC) y codificación de vídeo escalable (por ejemplo, SHVC). Por ejemplo, una unidad de acceso puede incluir una o más imágenes codificadas para cada capa.
[0173] Además, en el ejemplo de la FIG. 8, el cuadro de película 302 incluye un cuadro de pista 306. El cuadro de pista 306 puede encerrar metadatos para una pista del archivo 300. En otros ejemplos, el cuadro de película 302 puede incluir múltiples cuadros de pista para diferentes pistas del archivo 300. El cuadro de pista 306 incluye un cuadro de medios 307. El cuadro de medios 307 puede contener todos los objetos que declaran información sobre los datos de medios dentro de la pista. El cuadro de medios 307 incluye un cuadro de información de medios 308. El cuadro de información de medios 308 puede contener todos los objetos que declaran información característica de los medios de la pista. El cuadro de información de medios 308 incluye un cuadro de tabla de muestras 309. El cuadro de tabla de muestras 309 puede especificar metadatos específicos de muestra.
[0174] En el ejemplo de la FIG. 8, el cuadro de tabla de muestras 309 incluye al menos un cuadro de SampleToGroup 310, un cuadro de SampleGroupDescription 312 y un cuadro de SampleGroupDescription 314. En otros ejemplos, el cuadro de tabla de muestras 309 puede incluir otros cuadros además del cuadro de SampleToGroup 310, el cuadro de SampleGroupDescription 312 y el cuadro de SampleGroupDescription 314, y/o puede incluir múltiples cuadros de SampleToGroup y cuadros de SampleGroupDescription. El cuadro de SampleToGroup 310 puede correlacionar muestras (por ejemplo, muestras particulares de las muestras 305) con un grupo de muestras. El cuadro de SampleGroupDescription 312 y el cuadro de SampleGroupDescription 314 pueden especificar una propiedad compartida por las muestras en el grupo de muestras (es decir, grupo de muestras).
[0175] Además, en el ejemplo de la FIG. 8, el cuadro de SampleToGroup 310 incluye un elemento sintáctico grouping_type 319 (es decir, un elemento sintáctico de tipo de agrupación), un elemento sintáctico de recuento de entradas 315 (es decir, un elemento sintáctico de recuento de entradas) y una o más entradas de grupo de muestras 316. El elemento sintáctico de recuento de entradas 315 indica el número de entradas de grupo de muestras 316. Cada una de las entradas de grupo de muestras 316 incluye un elemento sintáctico sample_count 317 (es decir, un elemento sintáctico de recuento de muestras) y un elemento sintáctico group_description_index 318 (es decir, un elemento sintáctico de índice de descripción de grupo). El elemento sintáctico Sample_count 317 puede indicar un número de muestras asociadas a la entrada de grupo de muestras que contiene el elemento sintáctico sample_count 317. El elemento sintáctico Group_description_index 318 puede identificar, dentro de un cuadro de SampleGroupDescription (por ejemplo, el cuadro de SampleGroupDescription 312, el cuadro de SampleGroupDescription 314), una entrada de descripción de grupo que contiene una descripción de las muestras asociadas a la entrada de grupo de muestras que contiene el elemento sintáctico group_description_index 318.
[0176] Adicionalmente, en el ejemplo de la FIG. 8, el cuadro de SampleGroupDescription 312 incluye un elemento sintáctico grouping_type 320, un elemento sintáctico de recuento de entradas 322 y una o más entradas de grupo de conjuntos de mosaicos 324. Cada una de las entradas de grupo de conjuntos de mosaicos 324 es una instancia de una entrada de grupo de muestras. Si un elemento sintáctico de tipo de agrupación de un cuadro de SampleToGroup (por ejemplo, el elemento sintáctico grouping_type 319 del cuadro de SampleToGroup 310) especifica un valor que coincide con un valor del elemento sintáctico grouping_type 320, el cuadro de SampleToGroup corresponde al cuadro de SampleGroupDescription. El elemento sintáctico Entry_count 322 indica el número de entradas de grupo de conjuntos de mosaicos 324 en el cuadro de SampleGroupDescription. La FIG. 10, descrita en detalle en otra parte de la presente divulgación, ilustra el contenido de ejemplo de una entrada de grupo de conjuntos de mosaicos.
[0177] Además, en el ejemplo de la FIG. 8, el cuadro de SampleGroupDescription 314 incluye un elemento sintáctico grouping_type 326, un elemento sintáctico de recuento de entradas 328 y una o más entradas de mapa de unidades de NAL 330. Cada una de las entradas de mapa de unidades de NAL 330 es una instancia de una entrada de grupo de muestras. El elemento sintáctico de recuento de entradas 328 indica el número de entradas de mapa de unidades de NAL 330 en el cuadro de SampleGroupDescription 314. En algunos ejemplos, el elemento sintáctico de identificador de grupo 402 tiene un valor (por ejemplo, 1) que indica que una unidad de NAL está asociada a todos los conjuntos de mosaicos (por ejemplo, todos los conjuntos de mosaicos de una capa).
[0178] La FIG. 9 es un diagrama conceptual que ilustra una estructura de ejemplo de un archivo 350, de acuerdo con una o más técnicas de la presente divulgación. En los ejemplos de la FIG. 9, el archivo 350 incluye uno o más cuadros de fragmento de película 352 y una pluralidad de cuadros de datos de medios 354. Aunque en el ejemplo de la FIG. 9 se ilustran en el mismo archivo, en otros ejemplos, los cuadros de fragmento de película 352 y los cuadros de datos de medios 354 pueden estar en archivos separados. Cada uno de los cuadros de datos de medios 354 puede incluir una o más muestras 356. Algunas o todas las muestras 356 pueden comprender una imagen respectiva de los contenidos de vídeo. Cada uno de los cuadros de fragmento de película corresponde a un fragmento de película. Cada fragmento de película puede comprender un conjunto de fragmentos de pista. Puede haber cero o más fragmentos de pista por pista.
[0179] En el ejemplo de la FIG. 9, un cuadro de fragmento de película 352 proporciona información con respecto a un fragmento de película correspondiente. El cuadro de fragmento de película 352 puede incluir un cuadro de fragmento de pista 358. El cuadro de fragmento de pista 358 corresponde a un fragmento de pista y proporciona información sobre el fragmento de pista.
[0180] Por ejemplo, en el ejemplo de la FIG. 9, el cuadro de fragmento de pista 358 puede incluir un cuadro de SampleToGroup 362, un cuadro de SampleGroupDescription 364 y un cuadro de SampleGroupDescription 366. El cuadro de SampleToGroup 362 y los cuadros de SampleGroupDescription 364, 366 contienen información sobre el fragmento de pista correspondiente al cuadro de fragmento de pista 358. El cuadro de fragmento de pista 358 puede incluir uno o más cuadros de SampleToGroup y uno o más cuadros de SampleGroupDescription además del cuadro de SampleToGroup 362 y los cuadros de SampleGroupDescription 364, 366. Además, en el ejemplo de la FIG. 9, el cuadro de SampleToGroup 362 incluye un elemento sintáctico grouping_type 370 (es decir, un elemento sintáctico de tipo de agrupación), un elemento sintáctico de recuento de entradas 371 (es decir, un elemento sintáctico de recuento de entradas) y una o más entradas de grupo de muestras 372. El elemento sintáctico de recuento de entradas 371 indica el número de entradas de grupo de muestras 372. Cada una de las entradas de grupo de muestras 372 incluye un elemento sintáctico sample_count 373 (es decir, un elemento sintáctico de recuento de muestras) y un elemento sintáctico group_description_index 374 (es decir, un elemento sintáctico de índice de descripción de grupo). El elemento sintáctico Sample_count 373 puede indicar un número de muestras asociadas a la entrada de grupo de muestras que contiene el elemento sintáctico sample_count 373. El elemento sintáctico Group_description_index 374 puede identificar, dentro de un cuadro de SampleGroupDescription (por ejemplo, el cuadro de SampleGroupDescription 364), una entrada de descripción de grupo que contiene una descripción de las muestras asociadas a la entrada de grupo de muestras que contiene el elemento sintáctico group_description_index 374.
[0181] Adicionalmente, en el ejemplo de la FIG. 9, el cuadro de SampleGroupDescription 364 incluye un elemento sintáctico grouping_type 380, un elemento sintáctico de recuento de entradas 382 y una o más entradas de grupo de conjuntos de mosaicos 384. Cada una de las entradas de grupo de conjuntos de mosaicos es una instancia de una entrada de descripción de grupo. El elemento sintáctico de recuento de entradas 382 indica el número de entradas de grupo de conjuntos de mosaicos 384 en el cuadro de SampleGroupDescription 364.
[0182] Además, en el ejemplo de la FIG. 9, el cuadro de SampleGroupDescription 366 incluye un elemento sintáctico grouping_type 386, un elemento sintáctico de recuento de entradas 388 y una o más entradas de mapa de unidades de NAL 390. Cada una de las entradas de mapa de unidades de NAL 390 es una instancia de una entrada de grupo de muestras. El elemento sintáctico de recuento de entradas 388 indica el número de entradas de mapa de unidades de NAL 390 en el cuadro de SampleGroupDescription 366.
[0183] En cualquiera de la FIG. 8 o la FIG. 9, la TileRegionGroupEntry extiende la VisualSampleGroupEntry. Como se describe en la sección 8.9.3.2 de 14496-12, VisualSampleGroupEntry es una extensión de la clase SampleGroupDescriptionEntry. Por tanto, en algunos ejemplos, las instancias de la clase TileSetGroupEntry (es decir, los cuadros de TileSetGroupEntry), pueden ser diferentes de las entradas de descripción de grupo.
[0184] La FIG. 10 es un diagrama conceptual que ilustra un grupo de entrada de conjuntos de mosaicos 400, de acuerdo con una o más técnicas de la presente divulgación. Como se ilustra en el ejemplo de la FIG. 10, la entrada de grupo de conjuntos de mosaicos 400 puede incluir un elemento sintáctico de identificador de grupo (por ejemplo, groupID) 402, un elemento sintáctico de desplazamiento horizontal (por ejemplo, horizontal_offset) 404, un elemento sintáctico de desplazamiento vertical (por ejemplo, vertical_offset) 406, un elemento sintáctico de ancho (por ejemplo, region_width) 408 y un elemento sintáctico de altura (por ejemplo, altura de región) 410. El elemento sintáctico de identificador de grupo 402 identifica un conjunto de mosaicos.
[0185] El elemento sintáctico de desplazamiento horizontal 404 especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de desplazamiento vertical 406 especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de ancho 408 especifica un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de altura 410 especifica una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0186] En algunos ejemplos, la entrada de grupo de conjuntos de mosaicos 400 también puede incluir información de dependencia 412. La información de dependencia 412 puede describir la dependencia dentro de una capa a la que pertenece el conjunto de mosaicos. Por ejemplo, la información de dependencia 412 puede describir un identificador temporal que identifica una subcapa temporal de muestras a la que se aplica la entrada de grupo de conjuntos de mosaicos 400. En algunos ejemplos, la información de dependencia 412 comprende un elemento sintáctico particular (por ejemplo, independent_idc, bandera independiente) que especifica las dependencias de codificación entre el conjunto de mosaicos y otros conjuntos de mosaicos en la imagen actual y en las imágenes de referencia de la capa a la que pertenece el conjunto de mosaicos.
[0187] La FIG. 11 es un diagrama de flujo que ilustra un ejemplo de un procedimiento para generar un archivo para el almacenamiento de datos de vídeo, de acuerdo con una técnica de la presente divulgación. Los diagramas de flujo de la presente divulgación se proporcionan como ejemplos. Otros procedimientos pueden incluir más, menos o diferentes acciones. Además, en algunos casos, las acciones se pueden realizar en diferentes órdenes o en paralelo. Además, la presente divulgación describe la FIG. 11 con referencia al dispositivo de generación de archivos 34. Sin embargo, es posible que otros dispositivos puedan realizar el procedimiento de la FIG. 11.
[0188] En el ejemplo de la FIG. 11, el dispositivo de generación de archivos 34 puede recibir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo (450). Por ejemplo, una memoria del dispositivo de generación de archivos 34 puede recibir el flujo de bits desde una interfaz de red, disco u otro medio. Las imágenes de los datos de vídeo incluyen una imagen actual. La imagen actual se divide en una pluralidad de mosaicos. Cada mosaico respectivo de la pluralidad de mosaicos es una región rectangular respectiva. Por ejemplo, la imagen actual se puede dividir en cuatro mosaicos de igual tamaño, siendo cada uno una región rectangular, como se muestra en los ejemplos de la FIG. 2 y la FIG. 3.
[0189] Adicionalmente, en el ejemplo de la FIG. 11, el dispositivo de generación de archivos 34 genera un cuadro de entrada de mapa de unidades de NAL (por ejemplo, NALUMapEntry) en un archivo (452). Por ejemplo, el dispositivo de generación de archivos 34 puede almacenar datos que representan el cuadro de entrada de mapa de unidades de NAL en el archivo. El cuadro de entrada de mapa de unidades de NAL asocia unidades de NAL del flujo de bits a un conjunto de mosaicos. El conjunto de mosaicos incluye uno o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual. Por ejemplo, como se muestra en el ejemplo de la FIG. 4, el conjunto de mosaicos puede incluir dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual. En algunos casos, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos (por ejemplo, el área 124 de la FIG.
4) no tiene conformación rectangular. En algunos casos, la región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos tiene conformación rectangular.
[0190] Además, en el ejemplo de la FIG. 11, el dispositivo de generación de archivos 34 genera una entrada de grupo de conjuntos de mosaicos (por ejemplo, una TileSetGroupEntry, una TileRegionGroupEntry) en el archivo (454). Por ejemplo, el dispositivo de generación de archivos 34 puede almacenar datos que representan la entrada de grupo de conjuntos de mosaicos en el archivo. La entrada de grupo de conjuntos de mosaicos puede incluir un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos. Además, el cuadro de entrada de conjunto de mosaicos incluye un elemento sintáctico de desplazamiento horizontal (por ejemplo, horizontal_offset), un elemento sintáctico de desplazamiento vertical (por ejemplo, vertical_offset), un elemento sintáctico de ancho (por ejemplo, ancho de región) y un elemento sintáctico de altura (por ejemplo, altura de región). El elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de ancho especifica un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de altura especifica una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0191] Además, en un ejemplo, el dispositivo de generación de archivos 34 puede generar un segundo cuadro de entrada de mapa de unidades de NAL en el archivo. En este ejemplo, el segundo cuadro de entrada de mapa de unidades de NAL puede incluir un elemento sintáctico de identificador de grupo. Además, en este ejemplo, el elemento sintáctico de identificador de grupo del segundo cuadro de entrada de mapa de unidades de NAL tiene un valor (por ejemplo, 1 u otro valor) que indica que una unidad de NAL está asociada a todos los conjuntos de mosaicos. Como se describe en otra parte de la presente divulgación, un dispositivo de procesamiento de archivos (por ejemplo, un dispositivo que implementa la unidad de análisis sintáctico de archivos 31 (FIG. 1)) puede usar la segunda entrada de mapa de unidades de NAL para identificar unidades de NAL no de VCL que pueden incluir datos necesarios para descodificar unidades de NAL de VCL que incluyen el conjunto de mosaicos.
[0192] La FIG. 12 es un diagrama de flujo que ilustra un ejemplo de un procedimiento para procesar un archivo que almacena datos de vídeo codificados, de acuerdo con una técnica de la presente divulgación. El procedimiento de ejemplo de la FIG. 12 se explica con referencia a la unidad de análisis sintáctico de archivos 31. Sin embargo, otros dispositivos o unidades pueden realizar el procedimiento de ejemplo de la FIG. 12.
[0193] En el ejemplo de la FIG. 12, la unidad de análisis sintáctico de archivos 31 obtiene un cuadro de entrada de mapa de unidades de NAL (por ejemplo, NALUMapEntry) en un archivo (500). Por ejemplo, la unidad de análisis sintáctico de archivos 31 puede leer el cuadro de entrada de mapa de unidades de NAL del archivo. El cuadro de entrada de mapa de unidades de NAL asocia unidades de NAL de un flujo de bits a un conjunto de mosaicos. Por ejemplo, como se describe en otra parte de la presente divulgación, el cuadro de entrada de mapa de unidades de NAL puede incluir elementos sintácticos (por ejemplo, groupID), elementos sintácticos que indican conjuntos de mosaicos con los que se correlacionan las unidades de NAL. El flujo de bits incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo. Las imágenes de los datos de vídeo incluyen una imagen actual. La imagen actual se divide en una pluralidad de mosaicos. Por ejemplo, los elementos sintácticos (por ejemplo, num_tile_columns_minus1, num_tile_rows_minus1, uniform_spacing_flag, etc., en HEVC) pueden especificar cómo se divide la imagen actual en mosaicos. Cada mosaico respectivo de la pluralidad de mosaicos es una región rectangular respectiva. El conjunto de mosaicos incluye uno o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual. Por ejemplo, como se muestra en el ejemplo de la FIG. 4, el conjunto de mosaicos puede incluir dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual. En algunos casos, una región de la imagen actual cubierta por los mosaicos (por ejemplo, el área 124 de la FIG. 4) en el conjunto de mosaicos no tiene conformación rectangular. En algunos casos, la región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos tiene conformación rectangular.
[0194] Además, en el ejemplo de la FIG. 12, la unidad de análisis sintáctico de archivos 31 obtiene una entrada de grupo de conjuntos de mosaicos (por ejemplo, una TileSetGroupEntry, una TileRegionGroupEntry) en el archivo (502). La entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos. El cuadro de entrada de conjunto de mosaicos incluye un elemento sintáctico de desplazamiento horizontal (por ejemplo, horizontal_offset), un elemento sintáctico de desplazamiento vertical (por ejemplo, vertical_offset), un elemento sintáctico de ancho (por ejemplo, ancho de región) y un elemento sintáctico de altura (por ejemplo, altura de región). El elemento sintáctico de desplazamiento horizontal especifica un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de desplazamiento vertical especifica un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de ancho especifica un ancho de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos. El elemento sintáctico de altura especifica una altura de la región rectangular mínima que cubre los mosaicos en el conjunto de mosaicos.
[0195] Adicionalmente, en el ejemplo de la FIG. 12, la unidad de análisis sintáctico de archivos 31 procesa el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura (504). La unidad de análisis sintáctico de archivos 31 puede procesar el conjunto de mosaicos de diversas maneras. Por ejemplo, la unidad de análisis sintáctico de archivos 31 puede extraer los mosaicos del conjunto de mosaicos del archivo y transmitir los mosaicos extraídos. Por ejemplo, la unidad de análisis sintáctico de archivos 31 puede determinar (por ejemplo, en base a la ubicación y el tamaño del conjunto de mosaicos) si el conjunto de mosaicos corresponde a una región deseada que se va a visualizar. Si es así, la unidad de análisis sintáctico de archivos 31 puede usar el cuadro de entrada de mapa de unidades de NAL para determinar las unidades de NAL que incluyen bloques codificados del conjunto de mosaicos. A continuación, la unidad de análisis sintáctico de archivos 31 puede extraer las unidades de NAL determinadas.
[0196] Además, en un ejemplo, la unidad de análisis sintáctico de archivos 31 puede obtener, del archivo, un segundo cuadro de entrada de mapa de unidades de NAL. El segundo cuadro de entrada de mapa de unidades de NAL puede incluir un elemento sintáctico de identificador de grupo. Además, en este ejemplo, el elemento sintáctico de identificador de grupo (por ejemplo, groupID) del segundo cuadro de entrada de mapa de unidades de NAL que tiene un valor particular (por ejemplo, 1 u otro valor) indica que una unidad de NAL está asociada a todos los conjuntos de mosaicos. En este ejemplo, en base al elemento sintáctico de identificador de grupo del segundo cuadro de entrada de mapa de unidades de NAL que tiene el valor que indica que la unidad de NAL está asociada a todos los conjuntos de mosaicos, la unidad de análisis sintáctico de archivos 31 puede extraer la unidad de NAL del archivo. Además, en algunos casos, la unidad de análisis sintáctico de archivos 31 puede transmitir la unidad de NAL.
[0197] 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 sobre un medio legible por ordenador como una o más instrucciones o código, y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilita la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) medios de almacenamiento tangibles legibles por ordenador que son 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 la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0198] 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 código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder desde un ordenador. Además, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u 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 están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en cambio, se refieren a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye el disco compacto (CD), el disco láser, el disco óptico, el disco versátil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos reproducen normalmente los datos magnéticamente, mientras que otros discos reproducen los datos ópticamente con láseres. Las combinaciones de lo anterior se deberían incluir también dentro del alcance de los medios legibles por ordenador.
[0199] 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 discretos o integrados 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 de software dedicados configurados para la codificación y la descodificación, o incorporarse en un códec combinado. Además, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
[0200] Las técnicas de la presente 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). En la presente divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización por diferentes unidades de hardware. En su lugar, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar por un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.

Claims (1)

  1. REIVINDICACIONES
    1. Un procedimiento para el almacenamiento de datos de vídeo, comprendiendo el procedimiento:
    recibir, por un dispositivo de generación de archivos, un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva;
    generar, por el dispositivo de generación de archivos, un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL del flujo de bits a un conjunto de mosaicos, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular; y generar, por el dispositivo de generación de archivos, una entrada de grupo de conjuntos de mosaicos en el archivo,
    incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos,
    caracterizado por que
    la entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura,
    especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos,
    especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos,
    especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos, y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos. 2. El procedimiento de la reivindicación 1, en el que generar la entrada de grupo de conjuntos de mosaicos comprende:
    incluir, en la entrada de grupo de conjuntos de mosaicos, información de dependencia que describe la dependencia dentro de una capa a la que pertenece el conjunto de mosaicos.
    3. El procedimiento de la reivindicación 2, en el que:
    incluir la información de dependencia en la entrada de grupo de conjuntos de mosaicos comprende incluir, en la entrada de grupo de conjuntos de mosaicos, un elemento sintáctico particular que especifica las dependencias de codificación entre el conjunto de mosaicos y otros conjuntos de mosaicos en la imagen actual y en las imágenes de referencia de la capa a la que pertenece el conjunto de mosaicos, y el procedimiento comprende además indicar, en un grupo de muestras de información de capa en el archivo o un grupo de muestras de información de punto de funcionamiento en el archivo, las dependencias entre capas.
    4. El procedimiento de la reivindicación 1, en el que el cuadro de entrada de mapa de unidades de NAL es un primer cuadro de entrada de mapa de unidades de NAL, comprendiendo además el procedimiento:
    generar un segundo cuadro de entrada de mapa de unidades de NAL en el archivo, incluyendo el segundo cuadro de entrada de mapa de unidades de NAL un elemento sintáctico de identificador de grupo, teniendo el elemento sintáctico de identificador de grupo del segundo cuadro de entrada de mapa de unidades de NAL un valor que indica que una unidad de NAL está asociada a todos conjuntos de mosaicos.
    5. Un procedimiento de procesamiento de un archivo que almacena datos de vídeo codificados, comprendiendo el procedimiento:
    obtener, por un dispositivo de procesamiento de archivos, un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL de un flujo de bits a un conjunto de mosaicos, incluyendo el flujo de bits una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, no teniendo una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos conformación rectangular;
    obtener, por el dispositivo de procesamiento de archivos, una entrada de grupo de conjuntos de mosaicos en el archivo,
    incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos,
    caracterizado por que la entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura,
    especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos,
    especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos,
    especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos, y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos; y procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura.
    6. El procedimiento de la reivindicación 5, en el que procesar el conjunto de mosaicos comprende:
    extraer los mosaicos del conjunto de mosaicos del archivo; y
    transmitir los mosaicos extraídos.
    7. El procedimiento de la reivindicación 1 o la reivindicación 5, en el que el conjunto de mosaicos tiene un alcance específico de capa de modo que todos los mosaicos en el conjunto de mosaicos pertenecen a imágenes de una misma capa.
    8. El procedimiento de la reivindicación 5, en el que:
    obtener la entrada de grupo de conjuntos de mosaicos comprende obtener, desde dentro de la entrada de grupo de conjuntos de mosaicos, información de dependencia que describe la dependencia dentro de una capa a la que pertenece el conjunto de mosaicos, y
    procesar el conjunto de mosaicos comprende procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho, el elemento sintáctico de altura y la información de dependencia.
    9. El procedimiento de la reivindicación 8, en el que:
    obtener la información de dependencia en la entrada de grupo de conjuntos de mosaicos comprende obtener, desde dentro de la entrada de grupo de conjuntos de mosaicos, un elemento sintáctico particular que especifica las dependencias de codificación entre el conjunto de mosaicos y otros conjuntos de mosaicos en la imagen actual y en las imágenes de referencia de la capa a la que pertenece el conjunto de mosaicos,
    el procedimiento comprende además determinar, en base a un grupo de muestras de información de capa en el archivo o un grupo de muestras de información de punto de funcionamiento en el archivo, dependencias entre capas, y
    procesar el conjunto de mosaicos comprende procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho, el elemento sintáctico de altura y las dependencias entre capas.
    10. El procedimiento de la reivindicación 4 o la reivindicación 9, en el que el elemento sintáctico particular es una bandera, en el que la bandera tiene exactamente dos estados, un primer estado de la bandera que indica que no hay dependencia temporal, y un segundo estado de la bandera que indica que puede haber o no dependencia temporal.
    11. El procedimiento de la reivindicación 5, en el que el cuadro de entrada de mapa de unidades de NAL es un primer cuadro de entrada de mapa de unidades de NAL, comprendiendo además el procedimiento:
    obtener, del archivo, un segundo cuadro de entrada de mapa de unidades de NAL, incluyendo el segundo cuadro de entrada de mapa de unidades de NAL un elemento sintáctico de identificador de grupo, teniendo el elemento sintáctico de identificador de grupo del segundo cuadro de entrada de mapa de unidades de NAL un valor que indica que una unidad de NAL está asociada a todos los conjuntos de mosaicos; y en base a que el elemento sintáctico de identificador de grupo del segundo cuadro de entrada de mapa de unidades de NAL tiene el valor que indica que la unidad de NAL está asociada a todos los conjuntos de mosaicos:
    extraer la unidad de NAL del archivo; y
    transmitir la unidad de NAL.
    12. Un dispositivo para generar un archivo para almacenar datos de vídeo, comprendiendo el dispositivo:
    una memoria configurada para almacenar un archivo para el almacenamiento de contenido de vídeo; y uno o más procesadores configurados para:
    recibir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de los mosaicos una región rectangular respectiva;
    generar un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en el archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL del flujo de bits a un conjunto de mosaicos, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos no tiene conformación rectangular; y
    generar una entrada de grupo de conjuntos de mosaicos en el archivo,
    incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos,
    caracterizado por que la entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura,
    especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos,
    especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos,
    especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos, y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos.
    13. Un dispositivo para procesar un archivo que almacena datos de vídeo codificados, comprendiendo el dispositivo:
    una memoria configurada para almacenar un archivo para el almacenamiento de contenido de vídeo; y uno o más procesadores configurados para:
    obtener un cuadro de entrada de mapa de unidades de capa de abstracción de red (NAL) en un archivo, asociando el cuadro de entrada de mapa de unidades de NAL unidades de NAL de un flujo de bits a un conjunto de mosaicos, incluyendo el flujo de bits una secuencia de bits que forma una representación de imágenes codificadas de los datos de vídeo, incluyendo las imágenes de los datos de vídeo una imagen actual, dividiéndose la imagen actual en una pluralidad de mosaicos, siendo cada mosaico respectivo de la pluralidad de mosaicos una región rectangular respectiva, incluyendo el conjunto de mosaicos dos o más mosaicos de la pluralidad de mosaicos en los que se divide la imagen actual, no teniendo una región de la imagen actual cubierta por los mosaicos en el conjunto de mosaicos conformación rectangular;
    obtener una entrada de grupo de conjuntos de mosaicos en el archivo,
    incluyendo la entrada de grupo de conjuntos de mosaicos un elemento sintáctico de identificador de grupo que identifica el conjunto de mosaicos,
    caracterizado por que la entrada de grupo de conjuntos de mosaicos incluye un elemento sintáctico de desplazamiento horizontal, un elemento sintáctico de desplazamiento vertical, un elemento sintáctico de ancho y un elemento sintáctico de altura,
    especificando el elemento sintáctico de desplazamiento horizontal un desplazamiento horizontal de un píxel superior izquierdo de una región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos,
    especificando el elemento sintáctico de desplazamiento vertical un desplazamiento vertical del píxel superior izquierdo de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos,
    especificando el elemento sintáctico de ancho un ancho de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos, y especificando el elemento sintáctico de altura una altura de la región rectangular mínima que cubre completamente la conformación no rectangular definida por los mosaicos en el conjunto de mosaicos; y procesar el conjunto de mosaicos en base al elemento sintáctico de desplazamiento horizontal, el elemento sintáctico de desplazamiento vertical, el elemento sintáctico de ancho y el elemento sintáctico de altura.
    14. El dispositivo de la reivindicación 12 o la reivindicación 13, en el que el conjunto de mosaicos tiene un alcance específico de capa de modo que todos los mosaicos en el conjunto de mosaicos pertenecen a imágenes de una misma capa.
    15. Un medio de almacenamiento de datos legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, configura un dispositivo para realizar el procedimiento de una cualquiera de las reivindicaciones 1 a 11.
ES17720270T 2016-03-30 2017-03-28 Mejora en la agrupación de mosaicos en formatos de archivo HEVC y L-HEVC Active ES2781307T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662315575P 2016-03-30 2016-03-30
US15/470,148 US10419768B2 (en) 2016-03-30 2017-03-27 Tile grouping in HEVC and L-HEVC file formats
PCT/US2017/024560 WO2017172783A1 (en) 2016-03-30 2017-03-28 Improvement on tile grouping in hevc and l-hevc file formats

Publications (1)

Publication Number Publication Date
ES2781307T3 true ES2781307T3 (es) 2020-09-01

Family

ID=59961332

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17720270T Active ES2781307T3 (es) 2016-03-30 2017-03-28 Mejora en la agrupación de mosaicos en formatos de archivo HEVC y L-HEVC

Country Status (10)

Country Link
US (1) US10419768B2 (es)
EP (1) EP3437327B1 (es)
JP (1) JP6690010B2 (es)
KR (1) KR102102554B1 (es)
CN (1) CN108886642B (es)
BR (1) BR112018069708A2 (es)
CA (1) CA3015942C (es)
ES (1) ES2781307T3 (es)
TW (1) TWI699994B (es)
WO (1) WO2017172783A1 (es)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10148969B2 (en) * 2015-02-11 2018-12-04 Qualcomm Incorporated Of sample entry and operation point signalling in a layered video file format
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
GB2550604A (en) * 2016-05-24 2017-11-29 Canon Kk Method, device, and computer program for encapsulating and parsing timed media data
WO2019073112A1 (en) * 2017-10-09 2019-04-18 Nokia Technologies Oy APPARATUS, METHOD, AND COMPUTER PROGRAM FOR VIDEO ENCODING AND DECODING
EP3759924A1 (en) 2018-04-03 2021-01-06 Huawei Technologies Co., Ltd. Bitstream signaling of error mitigation in sub-picture bitstream based viewport dependent video coding
US10803628B2 (en) 2018-06-03 2020-10-13 Apple Inc. Bounding path techniques
CN112585970B (zh) 2018-06-21 2024-07-09 瑞典爱立信有限公司 灵活图块分区
EP3811624A1 (en) 2018-06-21 2021-04-28 Telefonaktiebolaget LM Ericsson (publ) Tile shuffling for 360 degree video decoding
CN112640455B (zh) * 2018-06-21 2024-06-14 瑞典爱立信有限公司 视频编码中具有子图块的图块分区
GB2575074B (en) * 2018-06-27 2022-09-28 Canon Kk Encapsulating video content with an indication of whether a group of tracks collectively represents a full frame or a part of a frame
US11290728B2 (en) * 2018-07-02 2022-03-29 Nokia Technologies Oy Method and apparatus for tile-relative addressing in video coding
FI3847817T3 (fi) 2018-09-14 2024-06-26 Huawei Tech Co Ltd Viipalointi ja ruudukointi videokoodauksessa
CN112703734B (zh) * 2018-09-14 2026-03-13 交互数字Vc控股公司 用于灵活网格区域的方法和装置
CN112823525B (zh) 2018-10-02 2024-12-06 瑞典爱立信有限公司 基于图块组id对图片进行编码和解码
WO2020111023A1 (en) * 2018-11-30 2020-06-04 Sharp Kabushiki Kaisha Systems and methods for signaling tile structures for pictures of coded video
KR102942431B1 (ko) * 2018-12-04 2026-03-20 인터디지털 브이씨 홀딩스 인코포레이티드 타일 그룹 분할
BR112021011413A2 (pt) 2018-12-17 2021-08-31 Huawei Technologies Co., Ltd. Método e aparelho de codificação de vídeo
CN118945342A (zh) * 2018-12-20 2024-11-12 瑞典爱立信有限公司 视频编码和解码中改进的片地址信令
US11140403B2 (en) * 2018-12-20 2021-10-05 Tencent America LLC Identifying tile from network abstraction unit header
US11477445B2 (en) * 2018-12-28 2022-10-18 Hfi Innovation Inc. Methods and apparatuses of video data coding with tile grouping
US12113997B2 (en) * 2019-01-22 2024-10-08 Tencent America LLC Method for tile group identification
CN113366855B (zh) 2019-02-03 2025-06-24 北京字节跳动网络技术有限公司 基于条件的非对称四叉树分割
EP3935835A4 (en) * 2019-03-08 2022-12-14 Telefonaktiebolaget Lm Ericsson (Publ) METHODS OF PROVIDING DEPENDENT/INDEPENDENT SCORE ENCODING/DECODING AND ASSOCIATED DEVICES
US11089318B2 (en) 2019-03-11 2021-08-10 Tencent America LLC Signaling of adaptive picture size in video bitstream
SG11202109270RA (en) * 2019-03-11 2021-09-29 Tencent America LLC Tile and sub-picture partitioning
EP3973713A1 (en) * 2019-05-23 2022-03-30 VID SCALE, Inc. Video-based point cloud streams
CN119676447A (zh) * 2019-06-20 2025-03-21 皇家飞利浦有限公司 用于对图像信号进行编码/解码的方法及其设备
MX2021015641A (es) * 2019-06-21 2022-02-03 Ericsson Telefon Ab L M Indicacion de cambio ascendente de capa de codificacion de video.
EP3972260A4 (en) * 2019-07-04 2022-08-03 Sony Group Corporation INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD, REPRODUCTION PROCESSING DEVICE AND REPRODUCTION PROCESSING METHOD
US11363307B2 (en) * 2019-08-08 2022-06-14 Hfi Innovation Inc. Video coding with subpictures
CN119835418A (zh) * 2019-09-10 2025-04-15 皇家飞利浦有限公司 图像信号编码/解码方法及其装置
BR112022005789A2 (pt) 2019-09-27 2022-06-21 Vid Scale Inc Dispositivo de decodificação e codificação de vídeo, e, método para decodificação de vídeo
WO2021060802A1 (ko) * 2019-09-27 2021-04-01 에스케이텔레콤 주식회사 픽처로부터 분할되는 하위 유닛들에 대한 정보를 획득하는 방법 및 장치
CN114846789B (zh) 2020-02-28 2023-06-27 华为技术有限公司 用于指示条带的图像分割信息的解码器及对应方法
BR112022024646A2 (pt) * 2020-06-09 2022-12-27 Sony Group Corp Aparelho e método de processamento de informações
US11671627B2 (en) * 2020-09-17 2023-06-06 Lemon Inc. Operating point entity group signaling in coded video
EP3972278A1 (en) 2020-09-17 2022-03-23 Lemon Inc. Subpicture tracks in coded video
US12206879B2 (en) 2020-09-17 2025-01-21 Lemon Inc. Profile, tier, level and general constraints indication in coded video
EP3972269A1 (en) 2020-09-17 2022-03-23 Lemon Inc. Subpicture entity groups in video coding
WO2022131801A1 (ko) * 2020-12-15 2022-06-23 엘지전자 주식회사 레이어 정보를 포함하는 미디어 파일 생성/수신 방법, 장치 및 미디어 파일 전송 방법
CN116724555A (zh) * 2020-12-21 2023-09-08 Lg电子株式会社 媒体文件处理方法及其装置
US12389045B2 (en) * 2023-06-27 2025-08-12 Sharp Kabushiki Kaisha Systems and methods for signaling neural network post-filter application specific purpose information in video coding

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ579036A (en) * 2007-02-14 2012-10-26 Photint Venture Group Inc Video scrambling through relocation of pixel blocks
JP6214235B2 (ja) * 2012-07-02 2017-10-18 キヤノン株式会社 ファイル生成方法、ファイル生成装置、及びプログラム
US9635369B2 (en) * 2012-07-02 2017-04-25 Qualcomm Incorporated Video parameter set including HRD parameters
GB2509953B (en) * 2013-01-18 2015-05-20 Canon Kk Method of displaying a region of interest in a video stream
US9749627B2 (en) 2013-04-08 2017-08-29 Microsoft Technology Licensing, Llc Control data for motion-constrained tile set
JP6358475B2 (ja) * 2013-07-12 2018-07-18 ソニー株式会社 画像復号装置および方法、並びに、画像符号化装置および方法
KR20150010658A (ko) * 2013-07-18 2015-01-28 삼성전자주식회사 비디오 포멧 파라미터 전달을 사용하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
WO2015104303A2 (en) * 2014-01-07 2015-07-16 Canon Kabushiki Kaisha Method, device, and computer program for encoding inter-layer dependencies in encapsulating multi-layer partitioned timed media data
US9998765B2 (en) * 2014-07-16 2018-06-12 Qualcomm Incorporated Transport stream for carriage of video coding extensions

Also Published As

Publication number Publication date
TWI699994B (zh) 2020-07-21
JP6690010B2 (ja) 2020-04-28
CA3015942C (en) 2021-06-15
TW201737711A (zh) 2017-10-16
CN108886642B (zh) 2021-05-14
KR102102554B1 (ko) 2020-04-20
CN108886642A (zh) 2018-11-23
WO2017172783A1 (en) 2017-10-05
KR20180127997A (ko) 2018-11-30
EP3437327A1 (en) 2019-02-06
JP2019511173A (ja) 2019-04-18
US20170289556A1 (en) 2017-10-05
EP3437327B1 (en) 2019-12-25
BR112018069708A2 (pt) 2019-02-05
US10419768B2 (en) 2019-09-17
CA3015942A1 (en) 2017-10-05

Similar Documents

Publication Publication Date Title
ES2781307T3 (es) Mejora en la agrupación de mosaicos en formatos de archivo HEVC y L-HEVC
US10298938B2 (en) Sample entry and operation point signalling in a layered video file format
ES2824770T3 (es) Asignación de agrupación de mosaicos y muestras en formatos de archivo HEVC y L-HEVC
ES2765462T3 (es) Diseños de formato de archivo de vídeo multicapa
ES2904350T3 (es) Almacenamiento de pistas separadas de vistas de textura y de profundidad para codificación de múltiples vistas más profundidad
JP2015511439A (ja) ビデオを符号化しビデオコンテンツを記憶する方法
ES2903013T3 (es) Capas de referencia de señalización para la predicción del color 3D para la escalabilidad de la gama de color