ES2994061T3 - An apparatus, a method and a computer program for video coding and decoding - Google Patents
An apparatus, a method and a computer program for video coding and decoding Download PDFInfo
- Publication number
- ES2994061T3 ES2994061T3 ES18865590T ES18865590T ES2994061T3 ES 2994061 T3 ES2994061 T3 ES 2994061T3 ES 18865590 T ES18865590 T ES 18865590T ES 18865590 T ES18865590 T ES 18865590T ES 2994061 T3 ES2994061 T3 ES 2994061T3
- Authority
- ES
- Spain
- Prior art keywords
- image
- encoded
- prediction
- motion vector
- piece
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/167—Synchronising or controlling image signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/194—Transmission of image signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/174—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/33—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/39—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability involving multiple description coding [MDC], i.e. with separate layers being structured as independently decodable descriptions of input picture data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/55—Motion estimation with spatial constraints, e.g. at image or region borders
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/4728—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for selecting a Region Of Interest [ROI], e.g. for requesting a higher resolution version of a selected region
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Un método que comprende: codificar una imagen de entrada en una imagen constituyente codificada (1200); reconstruir, como parte de dicha codificación, una imagen constituyente decodificada correspondiente a la imagen constituyente codificada (1202); codificar una región espacial en un mosaico codificado (1204), comprendiendo la codificación: determinar un desplazamiento horizontal y un desplazamiento vertical indicativos de una posición de anclaje por región de la región espacial dentro de la imagen constituyente decodificada (1204a); codificar el desplazamiento horizontal y el desplazamiento vertical (1204b); determinar que una unidad de predicción en la posición de una primera coordenada horizontal y una primera coordenada vertical del mosaico codificado se predice en relación con la posición de anclaje por región, en donde la primera coordenada horizontal y la primera coordenada vertical son coordenadas horizontales y verticales, respectivamente, dentro de la región espacial (1204c); indicar que la unidad de predicción se predice en relación con una posición de anclaje de unidad de predicción que es relativa al desplazamiento horizontal y vertical (1204d); derivar una posición de anclaje de unidad de predicción igual a la suma de la primera coordenada horizontal y el desplazamiento horizontal, y la primera coordenada vertical y el desplazamiento vertical, respectivamente (1204e); y determinar un vector de movimiento para la unidad de predicción (1204f); y aplicar el vector de movimiento relativo a la posición de anclaje de unidad de predicción para obtener un bloque de predicción (1204g). (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Un aparato, un método y un programa informático de codificación y decodificación de vídeo
Campo técnico
La presente invención se refiere a un aparato, un método y un programa informático para la codificación y decodificación de vídeo.
Antecedentes
El desarrollo de diversas aplicaciones de transmisión en continuo multimedia, especialmente aplicaciones de realidad virtual (RV) o de vídeo en 360 grados, ha avanzado en tiempos recientes a pasos agigantados. En la transmisión en continuo adaptativa a la ventana gráfica, se pretende reducir la tasa de bits para que, por ejemplo, la ventana gráfica principal (i.e., la orientación de visionado actual) se transmita con la mejor calidad / a la mayor resolución, mientras que el resto del vídeo a 360 grados se transmita con una calidad o a una resolución más baja. Cuando la orientación de visionado cambia, por ejemplo, cuando el usuario gira la cabeza cuando está viendo el contenido con un visor montado en la cabeza, es necesario emitir otra versión del contenido que coincida con la nueva orientación de visionado.
Existen varias alternativas para distribuir el vídeo omnidireccional dependiente de la ventana gráfica. Se puede distribuir como, por ejemplo, unos flujos de bits de codificación de vídeo de gran rendimiento (HEVC) de igual resolución con unos conjuntos de piezas constreñidos en cuanto al movimiento (MCTS). Así, varios flujos de bits de HEVC del mismo contenido de origen omnidireccional se codifican a la misma resolución, pero con distintas calidades y tasas de bits, utilizando conjuntos de piezas constreñidos en cuanto al movimiento. Otra opción para distribuir el vídeo omnidireccional dependiente de la ventana gráfica es llevar a cabo una codificación de escalabilidad de región de interés con una ampliación escalable de HEVC (SHVC). En ella, la capa base se codifica de manera convencional, y unas capas de mejora de la región de interés (ROI) se codifican con el perfil principal escalable (Scalable Main) de SHVC. Sin embargo, un soporte limitado del hardware de decodificación disponible para una predicción intercapa, tal como la ampliación SHVC de la HEVC, restringe la usabilidad de la codificación de ROI con SHVC.
Otro método se llama predicción intercapa constreñida (CILP). En la CILP se eligen ciertas imágenes de entrada para codificarse en dos imágenes codificadas en el mismo flujo de bits; la primera se denomina imagen codificada compartida. Una imagen codificada compartida en un primer flujo de bits es idéntica a la respectiva imagen codificada compartida en un segundo flujo de bits. El método de codificación facilita una decodificación de un primer flujo de bits hasta una imagen codificada compartida seleccionada, exclusiva, y una decodificación de un segundo flujo de bits empezando desde la respectiva imagen codificada compartida. No se requiere ninguna imagen intracodificada para empezar la decodificación del segundo flujo de bits y, en consecuencia, la eficiencia de compresión mejora en comparación con un enfoque convencional.
La CILP permite el uso del codificador y el decodificador de perfil principal de HEVC y, por tanto, tiene una mejor compatibilidad con unas implementaciones que el enfoque de ROI con SHVC. Además, la CILP aprovecha una frecuencia intraimagen relativamente baja (de manera parecida al enfoque de ROI con SHVC). Sin embargo, en comparación con el enfoque ROI con SHVC, la CILP se ve afectada por el uso de MCTS para las piezas de calidad de base y tiene un peor rendimiento de tasa de transmisión en continuo-distorsión en comparación con la SHVC-ROI cuando se utilizan cuadrículas de piezas más detalladas. En consecuencia, los enfoques de CILP y ROI con SHVC tienen ventajas sobre el otro en distintas situaciones, pero ninguno de ellos supera al otro en todas las situaciones. En “Viewport-dependent delivery schemes for stereoscopic panoramic video” , de Ramin Ghaznavi-Youvalari y otros, Conferencia IEEE 2017 3DTv , del 7 de junio de 2017, se divulga una codificación de ROI con SHVC (i.e., una codificación de escalabilidad de región de interés de ampliación escalable con HEVC) y, especialmente, ciertas variantes de la misma, es decir, unos planes de HEVC multivista (MV-HEVC) más ROI con SHVC. Las capas base se codifican convencionalmente, mientras que el panorama de alta calidad se divide en múltiples segmentos de piezas, y cada segmento de piezas se codifica como una capa de mejora independiente, para la que se codifica un segundo flujo de bits. El documento US 2017/118540 se refiere a la determinación de una ROI (región de interés) basándose en un flujo de vídeo dividido en piezas por HEVC (panorama). Un codificador de HEVC genera un flujo dividido en piezas por HEVC que comprende una región de imagen completa, mientras que un generador de flujos de ROI genera un flujo de ROI para renderizar una ROI que define una subregión en la región de imagen completa del flujo de vídeo dividido en piezas por HEVC. Es decir, se generan por separado unos flujos divididos en piezas por HEVC y unos flujos de ROI. En “Video processing for panoramic streaming using HEVC and its scalable extensions” , de Y. Sánchez de la Fuente y otros, Multimedia Tools and Application, vol. 76, 1 de diciembre de 2016, se divulgan unos métodos de codificación que utilizan una HEVC escalable y multicapa, lo que da como resultado unos flujos de bits independientes para la capa base y la capa de mejora.
Resumen
Pues bien, para al menos resolver los problemas anteriores, en la presente memoria se presenta un método de codificación mejorado.
La invención está definida por las reivindicaciones que se han adjuntado al mismo.
Breve descripción de los dibujos
Para una mejor comprensión de la presente invención, ahora se hará referencia a modo de ejemplo a los dibujos adjuntos, en los que:
a Figura 1 muestra esquemáticamente un dispositivo electrónico que emplea realizaciones de la invención;
a Figura 2 muestra esquemáticamente un equipo de usuario adecuado para emplear realizaciones de la invención; a Figura 3 muestra además dispositivos electrónicos de forma esquemática que emplean realizaciones de la invención conectados usando conexiones de red inalámbricas y alámbricas;
a Figura 4 muestra esquemáticamente un codificador adecuado para implementar realizaciones de la invención; a Figura 5 muestra un ejemplo de una unión, una proyección y un mapeo de imágenes de la misma instancia temporal sobre un fotograma de realidad virtual empaquetado;
a Figura 6 muestra un proceso de formación de una imagen panorámica equirrectangular monoscópica;
a Figura 7 muestra un ejemplo de un modelo de datos jerárquico usado en DASH;
a Figura 8 muestra un ejemplo de un mapeo de una cara frontal muestreada a mayor resolución de un mapa cúbico en el mismo fotograma de realidad virtual empaquetado que otras caras de cubo;
a Figura 9a muestra un ejemplo de una distribución de unos flujos de bits de HEVC de igual resolución con unos conjuntos de piezas constreñidos en cuanto al movimiento;
a Figura 9b muestra un ejemplo de una codificación de escalabilidad de ROI con SHVC;
a Figura 10 muestra un ejemplo de una codificación de predicción intercapa constreñida (CILP);
as Figuras 11a y 11b muestran un ejemplo de una codificación de dos flujos de bits y de un cambio entre ellos según una codificación SP-CILP;
a Figura 12 muestra un diagrama de flujo de un método de codificación según una realización de la invención; a Figura 13 muestra un ejemplo del método de codificación según una realización de la invención;
a Figura 14 muestra un ejemplo de distintas densidades de muestreo entre la imagen constituyente compartida y las piezas según una realización de la invención;
a Figura 15 muestra un ejemplo de una disposición de archivos contenedores según una realización de la invención; a Figura 16 muestra un ejemplo de una autoría de archivos contenedores según una realización de la invención; a Figura 17 muestra otro ejemplo de una autoría de archivos contenedores según una realización de la invención; a Figura 18 muestra un ejemplo de una disposición para una codificación en estéreo según una realización de la invención;
a Figura 19 muestra otro ejemplo de una disposición para una codificación en estéreo según una realización de la invención;
la Figura 20 muestra un diagrama esquemático de un decodificador que es apto para implementar unas realizaciones de la invención;
la Figura 21 muestra un diagrama de flujo de un método de decodificación según una realización de la invención; y la Figura 22 muestra un diagrama esquemático de un sistema de comunicación multimedia de ejemplo dentro del cual pueden implementarse diversas realizaciones.
Descripción detallada de algunas realizaciones de ejemplo
En lo que sigue se describen con más detalle un aparato adecuado y unos posibles mecanismos para iniciar un cambio de punto de vista. A este respecto, primero se hace referencia a las Figuras 1 y 2, donde la Figura 1 muestra un diagrama de bloques de un sistema de codificación de vídeo como un diagrama de bloques esquemáticos de un aparato o dispositivo electrónico 50 ejemplar, que, según una realización de la invención, puede incorporar un códec. La Figura 2 muestra un esquema de un aparato. A continuación se explicarán los elementos de las Figuras 1 y 2.
El dispositivo electrónico 50 puede ser, por ejemplo, un terminal móvil o equipo de usuario de un sistema de comunicación inalámbrica. Sin embargo, se apreciará que las realizaciones de la invención pueden implementarse dentro de cualquier dispositivo o aparato electrónico que pueda requerir codificación y decodificación o codificación o decodificación de imágenes de vídeo.
El aparato 50 puede comprender un alojamiento 30 para incorporar y proteger el dispositivo. El aparato 50 puede comprender además una pantalla 32 en forma de una pantalla de cristal líquido. En otras realizaciones de la invención, la pantalla puede ser cualquier tecnología de visualización adecuada para mostrar una imagen o vídeo. El aparato 50 puede comprender además un teclado numérico 34. En otras realizaciones de la invención se puede emplear cualquier mecanismo de interfaz de datos o de usuario adecuado. Por ejemplo, la interfaz de usuario puede implementarse como un teclado virtual o un sistema de entrada de datos como parte de una pantalla sensible al tacto.
El aparato puede comprender un micrófono 36 o cualquier entrada de audio adecuada que puede ser una entrada de señal digital o analógica. El aparato 50 puede comprender además un dispositivo de salida de audio que, en realizaciones de la invención, puede ser uno cualquiera de: un auricular 38, un altavoz o una conexión de salida de audio analógico o de audio digital. El aparato 50 también puede comprender una batería (o, en otras realizaciones de la invención, el dispositivo puede ser alimentado por cualquier dispositivo de energía móvil adecuado, tal como un panel solar, una pila de combustible o un generador de relojería). El aparato puede comprender además una cámara que sea capaz de registrar o capturar imágenes y/o vídeo. El aparato 50 puede comprender además un puerto de infrarrojos para la comunicación de línea de visión de corto alcance a otros dispositivos. En otras realizaciones, el aparato 50 puede comprender además cualquier solución de comunicación de corto alcance adecuada tal como, por ejemplo, una conexión inalámbrica Bluetooth o una conexión alámbrica USB/firewire.
El aparato 50 puede comprender un controlador 56, un procesador o una circuitería procesadora para controlar el aparato 50. El controlador 56 puede estar conectado a la memoria 58 que, en realizaciones de la invención, puede almacenar ambos datos en forma de datos de imagen y de audio y/o también puede almacenar instrucciones para la implementación en el controlador 56. El controlador 56 puede conectarse además a los circuitos 54 de códec adecuados para llevar a cabo la codificación y decodificación de datos de audio y/o vídeo o ayudar en la codificación y decodificación llevada a cabo por el controlador.
El aparato 50 puede comprender además un lector 48 de tarjetas y una tarjeta inteligente 46, por ejemplo, un UICC y lector de UICC para proporcionar información de usuario y ser adecuado para proporcionar información de autenticación para autenticación y autorización del usuario en una red.
El aparato 50 puede comprender circuitos 52 de interfaz de radio conectados al controlador y adecuados para generar señales de comunicación inalámbrica, por ejemplo, para comunicación con una red de comunicaciones celulares, un sistema de comunicaciones inalámbricas o una red de área local inalámbrica. El aparato 50 puede comprender además una antena 44 conectada a los circuitos 52 de interfaz de radio para transmitir señales de radiofrecuencia generadas en los circuitos 52 de interfaz de radio a otro u otros aparatos y para recibir señales de radiofrecuencia de otro u otros aparatos.
El aparato 50 puede comprender una cámara capaz de grabar o detectar fotogramas individuales que a continuación se pasan al códec 54 o al controlador para su procesamiento. El aparato puede recibir los datos de imágenes de vídeo para su procesamiento desde otro dispositivo antes de la transmisión y/o almacenamiento. El aparato 50 también puede recibir de manera inalámbrica o alámbrica la imagen para codificar/decodificar. Los elementos estructurales del aparato 50 descritos anteriormente representan unos ejemplos de unos medios para realizar una función correspondiente.
Con respecto a la Figura 3, se muestra un ejemplo de un sistema dentro del cual se pueden utilizar realizaciones de la presente invención. El sistema 10 comprende múltiples dispositivos de comunicación que pueden comunicarse a través de una o más redes. El sistema 10 puede comprender cualquier combinación de redes cableadas o inalámbricas, incluidas, sin limitación, una red de telefonía celular inalámbrica (tal como una red GSM, UMTS, CDMA, etc.), una red de área local inalámbrica (WLAN), tal y como define cualquiera de los estándares IEEE 802.x, una red de área personal Bluetooth, una red de área local Ethernet, una red de área local en anillo con paso de testigo, una red de área amplia e internet.
El sistema 10 puede incluir tanto dispositivos de comunicación inalámbrica como alámbrica y/o aparatos 50 adecuados para implementar realizaciones de la invención.
Por ejemplo, el sistema mostrado en la Figura 3 muestra una red 11 de telefonía móvil y una representación de internet 28. La conectividad a internet 28 puede incluir, aunque no de forma limitativa, conexiones inalámbricas de largo alcance, conexiones inalámbricas de corto alcance y diversas conexiones alámbricas que incluyen, aunque no de forma limitativa, líneas telefónicas, líneas de cable, líneas eléctricas y rutas de comunicación similares.
Los dispositivos de comunicación de ejemplo mostrados en el sistema 10 pueden incluir, aunque no de forma limitativa, un dispositivo o aparato electrónico 50, una combinación de un personal digital assistant (asistente digital personal -PDA) y un teléfono móvil 14, un PDA 16, un integrated messaging device (dispositivo de mensajería integrada - IMD) 18, un ordenador 20 de sobremesa, una computadora portátil 22. El aparato 50 puede ser estacionario o móvil cuando se transporta por un individuo que está en movimiento. El aparato 50 también puede estar ubicado en un modo de transporte incluyendo, pero sin limitarse a, un automóvil, un camión, un taxi, un autobús, un tren, un barco, un avión, una bicicleta, una motocicleta o cualquier modo de transporte adecuado similar.
Las realizaciones también pueden implementarse en un decodificador de salón; es decir, un receptor de TV digital, que puede/puede no tener una pantalla o capacidades inalámbricas, en tabletas u personal computers (ordenadores personales - PC) (sobremesa), que tienen hardware o software o una combinación de las implementaciones de codificador/decodificador, en diversos sistemas operativos, y en conjuntos de chips, procesadores, DSP y/o sistemas integrados que ofrecen codificación basada en hardware/software.
Algunos o más aparatos pueden enviar y recibir llamadas y mensajes y comunicarse con proveedores de servicios a través de una conexión inalámbrica 25 a una estación base 24. La estación base 24 puede estar conectada a un servidor de red 26 que permite la comunicación entre la red 11 de telefonía móvil e internet 28. El sistema puede incluir dispositivos de comunicación y dispositivos de comunicación adicionales de diversos tipos.
Los dispositivos de comunicación pueden comunicarse usando diversas tecnologías de transmisión que incluyen, aunque no de forma limitativa, code division multiple access (acceso múltiple por división de código - CDMA), global systems for mobile communications (sistemas globales para comunicaciones móviles - GSM), universal mobile telecommunications system (sistema universal de telecomunicaciones móviles - UMTS), time divisional multiple access (acceso múltiple por división de tiempo - TDMA), frequency division multiple access (acceso múltiple por división de frecuencia - FDMA), transmission control protocol-internet protocol (protocolo de control de transmisión-protocolo de internet - TCP-IP), short messaging service (servicio de mensajería corta - SMS), multimedia messaging service (servicio de mensajería multimedia (MMS), correo electrónico, instant messaging service (servicio de mensajería instantánea - IMS), Bluetooth, IEEE 802.11 y cualquier tecnología de comunicación inalámbrica similar. Un dispositivo de comunicaciones involucrado en la implementación de diversas realizaciones de la presente invención puede comunicarse usando diversos medios que incluyen, aunque no de forma limitativa, conexiones de radio, infrarrojos, láser, cables y cualquier conexión adecuada.
En las redes de telecomunicaciones y de datos, un canal puede referirse o bien a un canal físico, o bien a un canal lógico. Un canal físico puede referirse a un medio de transmisión físico, tal como un cable, mientras que un canal lógico puede referirse a una conexión lógica a través de un medio multiplexado que sea capaz de transmitir varios canales lógicos. Se puede usar un canal para transmitir una señal de información, por ejemplo, un flujo de bits, desde uno o varios emisores (o transmisores) hasta uno o varios receptores.
Un flujo de transporte (TS) de MPEG-2, especificado en la norma ISO/IEC 13818-1 o, de manera equivalente, en la Recomendación H.222.0 de la UIT-T, es un formato para transportar audio, vídeo y otros medios, así como metadatos de programa u otros metadatos, en un flujo multiplexado. Se usa un identificador de paquete (PID) para identificar un flujo elemental (también conocido como flujo elemental paquetizado) dentro del TS. Así pues, se puede considerar que un canal lógico dentro de un TS de MPEG-2 corresponde a un valor de PID específico.
Entre las normas de formato de archivos de medios disponibles se incluyen el formato de archivo de medios de base de ISO (ISO/IEC 14496-12, que puede abreviarse como ISOBMFF) y el formato de archivo para un vídeo estructurado en unidades NAL (ISO/IEC 14496-15), que deriva del ISOBMFF.
A continuación se describen algunos conceptos, estructuras y especificaciones del ISOBMFF como ejemplo de un formato de archivo contenedor, basándose en el cual se pueden implementar las realizaciones. Los aspectos de la invención no se limitan al ISOBMFF, sino que, más bien, la descripción se da para proporcionar un fundamento posible sobre el que se pueda realizar total o parcialmente la invención.
El componente básico en el formato de archivo de medios de base de ISO se llama caja. Cada caja tiene una cabecera y una carga útil. La cabecera de la caja indica el tipo de caja y el tamaño de la caja en términos de bytes. Una caja puede encerrar otras cajas, y el formato de archivo ISO especifica qué tipos de caja se permiten dentro de una caja de un determinado tipo. Además, la presencia de algunas cajas puede ser obligatoria en cada archivo, mientras que la presencia de otras cajas puede ser opcional. De forma adicional, para algunos tipos de caja, puede permitirse tener más de una caja presente en un archivo. Por lo tanto, el formato de archivo de medios de base ISO puede considerarse que especifica una estructura jerárquica de cajas.
Según la familia ISO de formatos de archivo, un archivo incluye unos datos de medios y unos metadatos que están encapsulados en unas cajas. Cada caja se identifica mediante un código de cuatro caracteres (4CC), que comienza con una cabecera que informa sobre el tipo y el tamaño de la caja.
En archivos que se ajustan al formato de archivo de medios de base de ISO, los datos de medios pueden proporcionarse en una caja “ mdat” de datos de medios, y la caja “ moov” de película puede usarse para encerrar los metadatos. En algunos casos, para que un archivo sea manejable, ambas cajas “ mdat” y “ moov” deben estar presentes. La caja “ moov” de película puede incluir una o más pistas, y cada pista puede residir en una correspondiente caja “ trak” de pista. Una pista puede ser uno de los muchos tipos, incluida una pista de medios que se refiere a unas muestras formateadas según un formato de compresión de medios (y a su encapsulación en el formato de archivo de medios de base de ISO).
Pueden usarse unos fragmentos de película cuando, por ejemplo, se graba un contenido en unos archivos ISO para, por ejemplo, evitar perder datos si una aplicación de grabación se queda colgada o sin espacio en memoria o si ocurre algún otro incidente. Sin fragmentos de película, puede producirse una pérdida de datos porque el formato de archivo puede requerir que todos los metadatos, por ejemplo, la caja de película, se escriban en una zona contigua del archivo. Además, cuando se graba un archivo, puede que no haya una suficiente cantidad de espacio en memoria (p. ej., una memoria de acceso aleatorio, o RAM) para almacenar temporalmente una caja de película para el tamaño del almacenamiento disponible, y recalcular el contenido de una caja de película cuando la película está cerrada puede llevar demasiado tiempo. Además, los fragmentos de película pueden permitir el registro y la reproducción simultánea de un archivo usando un analizador de archivos ISO normal. Además, puede que sea necesaria una duración más corta del almacenamiento temporal inicial para una descarga progresiva, p. ej., una recepción y una reproducción simultáneas de un archivo, cuando se usan fragmentos de película y la caja de película inicial es más pequeña en comparación con un archivo que tiene el mismo contenido de medios pero está estructurado sin fragmentos de película.
La característica de fragmentos de película puede permitir dividir los metadatos que, por lo demás, pueden residir en la caja de película en múltiples trozos. Cada trozo puede corresponder a un cierto período de tiempo de una pista. En otras palabras, la característica de fragmento de película puede permitir la intercalación de metadatos de archivo y datos de medios. Por consiguiente, el tamaño de la caja de película puede ser limitado y se realizan los casos de uso mencionados anteriormente.
En algunos ejemplos, las muestras de medios para los fragmentos de película pueden residir en una caja mdat, si se encuentran en el mismo archivo que la caja moov. Sin embargo, para los metadatos de los fragmentos de película, se puede proporcionar una caja moof. La caja moof puede incluir la información para una cierta duración del tiempo de reproducción que hubiera estado previamente en la caja moov. La caja moov aún puede representar una película válida por sí misma pero, además, puede incluir una caja mvex que indica que los fragmentos de película seguirán en el mismo archivo. Los fragmentos de película pueden extender la presentación que está asociada a la caja moov en el tiempo.
Dentro del fragmento de película puede haber un conjunto de fragmentos de pista, que incluyen cualquier parte de cero a una pluralidad por pista. A su vez, los fragmentos de pista pueden incluir cualquier parte de cero a una pluralidad de ejecuciones de pista, cuyo documento de cada una de las cuales es una ejecución contigua de muestras para esa pista. Dentro de estas estructuras, muchos campos son opcionales y pueden ser predeterminados. Los metadatos que pueden incluirse en la caja moof pueden limitarse a un subconjunto de los metadatos que pueden incluirse en una caja moov y pueden codificarse de manera diferente en algunos casos. Los detalles con respecto a las cajas que pueden incluirse en una caja moof pueden encontrarse a partir de la especificación de formato de archivo de medios de base ISO. Un fragmento de película autónomo puede definirse como un fragmento que consta de una caja moof y una caja mdat que son consecutivas en el orden de archivos, donde la caja mdat contiene las muestras del fragmento de película (para las que la caja moof proporciona los metadatos) y no contiene muestras de ningún otro fragmento de película (i.e., ninguna otra caja moof).
El mecanismo de referencia de pistas se puede usar para asociar unas pistas con otras. TrackReferenceBox incluye un(as) caja(s), cada una de las cuales proporciona una referencia de la pista contenedora a un conjunto de otras pistas. Estas referencias se etiquetan mediante el tipo de caja (i.e., el código de cuatro caracteres de la caja) de la(s) caja(s) contenida(s).
El formato de archivo de medios de base de ISO contiene tres mecanismos para unos metadatos temporizados que pueden estar asociados a unas muestras particulares: grupos de muestras, pistas de metadatos temporizados e información auxiliar de muestra. Una especificación derivada puede proporcionar una funcionalidad parecida con uno o más de estos tres mecanismos.
Puede definirse una agrupación de muestras en el formato de medios de base ISO y sus derivados, tal como el formato de archivo AVC y el formato de archivo SVC, como una asignación de cada muestra en una pista para ser un miembro de un grupo de muestras, basándose en un criterio de agrupación. Un grupo de muestras en una agrupación de muestras no se limita a ser muestras contiguas y puede contener muestras no adyacentes. En vista de que puede haber más de una agrupación de muestras para las muestras en una pista, cada agrupación de muestras puede tener un campo tipo para indicar el tipo de agrupación. Las agrupaciones de muestras pueden estar representadas por dos estructuras de datos vinculadas: (1) SampleToGroupBox (caja sbgp) representa la asignación de muestras a grupos de muestras; y (2) SampleGroupDescriptionBox (caja spsd) contiene una entrada de grupo de muestras para cada grupo de muestras que describe las propiedades del grupo. Puede haber múltiples instancias de SampleToGroupBox y SampleGroupDescriptionBox que están basadas en distintos criterios de agrupación. Estas pueden distinguirse por un campo tipo que se usa para indicar el tipo de agrupación. SampleToGroupBox puede comprender un campo grouping_type_parameter que se puede usar para, por ejemplo, indicar un subtipo de la agrupación.
El formato de archivo Matroska es capaz de almacenar (aunque no está limitado a) cualquiera de unas pistas de vídeo, de audio, de imagen o de subtítulos en un archivo. Matroska se puede usar como formato de fundamento para unos formatos de archivo derivados, tales como WebM. Matroska utiliza como fundamento el metalenguaje binario extensible (EBML). El EBML especifica un formato alineado binario y de octetos (bytes) que se inspira en el principio de XML. El propio EBML es una descripción generalizada de la técnica del marcado binario. Un archivo Matroska consta de unos elementos (Elements) que forman un “ documento” de EBML. Los elementos incorporan un ID de elemento, un descriptor del tamaño del elemento y los propios datos binarios. Los elementos estar pueden anidados. Un elemento de segmento de Matroska es un contenedor para otros elementos de nivel superior (nivel 1). Un archivo Matroska puede comprender (pero no se limita a estar formado por) un segmento. En los archivos Matroska, los datos multimedia están organizados en conglomerados (o en elementos de conglomerado), cada uno de los cuales normalmente contiene unos pocos segundos de datos multimedia. Un conglomerado comprende unos elementos BlockGroup, que a su vez comprenden unos elementos de bloque. Un elemento de indicaciones comprende unos metadatos que pueden ayudar a la hora de realizar un acceso o búsqueda aleatorio y puede incluir unos punteros de archivo o unos respectivos sellos de tiempo para unos puntos de búsqueda.
El códec de vídeo consiste en un codificador que transforma el vídeo de entrada en una representación comprimida adecuada para el almacenamiento/transmisión y un decodificador que puede descomprimir la representación de vídeo comprimido de vuelta a una forma visible. Un codificador de vídeo y/o un decodificador de vídeo puede(n) ser también independiente(s) entre sí, es decir, no necesitan formar un códec. Típicamente, el codificador descarta alguna información en la secuencia de vídeo original para representar el vídeo en una forma más compacta (es decir, a una tasa de bits menor).
Los codificadores de vídeo híbridos típicos, por ejemplo, muchas implementaciones de codificador según H.263 y H.264 del UIT-T, codifican la información de vídeo en dos fases. En primer lugar, se predicen los valores de píxel en una cierta área de imagen (o “ bloque” ), por ejemplo, mediante medios de compensación de movimiento (hallando e indicando un área en uno de los fotogramas de vídeo previamente codificados que corresponden estrechamente al bloque que se está codificando) o por medios espaciales (usando los valores de píxel alrededor del bloque a codificar de una manera especificada). En segundo lugar, se codifica el error de predicción, es decir, la diferencia entre el bloque presvisto de píxeles y el bloque original de píxeles. Esto se hace típicamente transformando la diferencia en valores de píxel usando una transformada especificada (p. ej., Discrete Cosine Transform (Transformada de Coseno Discreta - DCT) o una variante de la misma), cuantificando los coeficientes y codificando por entropía los coeficientes cuantificados. Al variar la fidelidad del proceso de cuantificación, el codificador puede controlar el equilibrio entre la precisión de la representación de píxel (calidad de imagen) y el tamaño de la representación de vídeo codificada resultante (tamaño de archivo o tasa de bits de transmisión).
En la predicción temporal, las fuentes de predicción son imágenes previamente decodificadas (también conocidas como imágenes de referencia). En la copia intrabloque (IBC; también conocida como predicción por copia intrabloque), se aplica una predicción de manera parecida a la predicción temporal, pero la imagen de referencia es la imagen actual, y en el proceso de predicción solo se puede hacer referencia a muestras previamente decodificadas. Se puede aplicar una predicción intercapa o intervista de manera parecida a la predicción temporal, pero la imagen de referencia es una imagen decodificada procedente de otra capa escalable o de otra vista, respectivamente. En algunos casos, la interpredicción puede referirse únicamente a la predicción temporal, mientras que en otros casos la interpredicción puede referirse colectivamente a la predicción temporal y a cualquiera de la copia intrabloque, la predicción intercapa y la predicción intervista, siempre y cuando se realicen con el mismo proceso que, o con un proceso similar a, el de la predicción temporal. La interpredicción o la predicción temporal puede denominarse a veces compensación de movimiento o predicción compensada en cuanto al movimiento.
La interpredicción, que también puede denominarse predicción temporal, compensación de movimiento o predicción compensada por movimiento, reduce la redundancia temporal. En la interpredicción, las fuentes de predicción son imágenes previamente decodificadas. La intrapredicción utiliza el hecho de que es probable que los píxeles adyacentes dentro de la misma imagen estén correlacionados. La intrapredicción puede realizarse en el dominio espacial o de la transformada, es decir, se pueden predecir valores de muestra o coeficientes de transformada. La intrapredicción se aprovecha típicamente en la intracodificación, donde no se aplica interpredicción.
Un resultado del procedimiento de codificación es un conjunto de parámetros de codificación, tales como vectores de movimiento y coeficientes de transformada cuantificados. Muchos parámetros pueden codificarse por entropía más eficientemente si se predicen en primer lugar de parámetros espacialmente o temporalmente vecinos. Por ejemplo, un vector de movimiento puede predecirse a partir de vectores de movimiento espacialmente adyacentes y puede codificarse solo la diferencia con respecto al predictor de vector de movimiento. La predicción de los parámetros de codificación y la intrapredicción se pueden denominar colectivamente predicción en imagen.
La Figura 4 muestra un diagrama de bloques de un codificador de vídeo adecuado para emplear realizaciones de la invención. La Figura 4 presenta un codificador para dos capas, pero se apreciará que el codificador presentado podría extenderse similarmente para codificar más de dos capas. La Figura 4 ilustra una realización de un codificador de vídeo que comprende una primera sección 500 de codificador para una capa base y una segunda sección 502 de codificador para una capa de mejora. Cada una de la primera sección 500 de codificador y la segunda sección 502 de codificador puede comprender elementos similares para codificar imágenes entrantes. Las secciones 500, 502 de codificador pueden comprender un predictor 302, 402, de píxeles un codificador 303, 403 de error de predicción y un decodificador 304, 404 de error de predicción. La Figura 4 también muestra una realización del predictor 302, 402 de píxeles que comprende un interpredictor 306, 406, un intrapredictor 308, 408, un selector 310, 410, de modo un filtro 316, 416 y una memoria 318, 418 de fotograma de referencia. El predictor 302 de píxeles de la primera sección 500 de codificador recibe 300 imágenes de capa base de un flujo de vídeo a codificar tanto en el interpredictor 306 (que determina la diferencia entre la imagen y un fotograma 318 de referencia compensado en movimiento) como en el intrapredictor 308 (que determina una predicción para un bloque de imagen basándose solo en las partes ya procesadas del fotograma o imagen actual). La salida tanto del interpredictor como del intrapredictor se pasan al selector 310 de modo. El intrapredictor 308 puede tener más de un modo de intrapredicción. Por lo tanto, cada modo puede realizar la intrapredicción y proporcionar la señal predicha al selector 310 de modo. El selector 310 de modo también recibe una copia de la imagen 300 de capa base. Por consiguiente, el predictor 402 de píxeles de la segunda sección 502 de codificador recibe 400 imágenes de capa de mejora de un flujo de vídeo a codificar tanto en el interpredictor 406 (que determina la diferencia entre la imagen y un fotograma 418 de referencia compensado en movimiento) como el intrapredictor 408 (que determina una predicción para un bloque de imagen basándose solo en las partes ya procesadas del fotograma o imagen actual). Las salidas tanto del interpredictor como del intrapredictor se pasan al selector 410 de modo. El intrapredictor 408 puede tener más de un modo de intrapredicción. Así pues, en cada modo se puede realizar la intrapredicción y proporcionarse la señal predicha al selector 410 de modo. El selector 410 de modo también recibe una copia de la imagen 400 de capa de mejora.
Dependiendo de qué modo de codificación se seleccione para codificar el bloque actual, la salida del interpredictor 306, 406 o la salida de uno de los modos opcionales intrapredictor o la salida de un codificador de superficie dentro del selector de modo se pasa a la salida del selector 310, 410 de modo. La salida del selector de modo se pasa a un primer dispositivo 321, 421 de suma. El primer dispositivo de suma puede restar la salida del predictor 302, 402 de píxeles de la imagen 300 de capa de base/imagen 400 de capa de mejora para producir una primera señal 320, 420 de error de predicción que se introduce en el codificado 303, 403 de error de predicción.
El predictor 302, 402 de píxeles recibe además de un reconstructor preliminar 339, 439 la combinación de la representación de predicción del bloque 312, 412 de imagen y la salida 338, 438 del decodificador 304, 404 de error de predicción. La imagen 314, 414 reconstruida preliminar puede pasarse al intrapredictor 308, 408 y a un filtro 316, 416. El filtro 316, 416 que recibe la representación preliminar puede filtrar la representación preliminar y emitir una imagen 340, 440 reconstruida final que puede guardarse en una memoria 318, 418 de fotograma de referencia. La memoria 318 de fotograma de referencia puede estar conectada al interpredictor 306 para ser utilizada como la imagen de referencia contra la cual se compara una imagen 300 de capa base futura en operaciones de interpredicción. Sujeto a que se seleccione la capa base e indique que es una fuente para la predicción de muestras intercapa y/o predicción de información de movimiento intercapa de la capa de mejora según algunas realizaciones, la memoria 318 de fotograma de referencia también puede estar conectada al interpredictor 406 para usarse como la imagen de referencia contra la que se compara unas imágenes 400 de capa de mejora futuras en operaciones de interpredicción. Además, la memoria 418 de fotograma de referencia puede estar conectada al interpredictor 406 para ser utilizada como la imagen de referencia contra la cual se compara una imagen 400 de capa de mejora futura en operaciones de interpredicción.
Los parámetros de filtrado del filtro 316 de la primera sección 500 de codificador pueden proporcionarse a la segunda sección 502 de codificador sometidos a que se seleccione la capa base y se indique para que sea la fuente para predecir los parámetros de filtración de la capa de mejora según algunas realizaciones.
El codificador 303, 403 de error de predicción comprende una unidad 342, 442 de transformada y un cuantificador 344, 444. La unidad 342, 442 de transformada transforma la primera señal 320, 420 de error de predicción a un dominio de transformada. La transformada es, por ejemplo, la transformada DCT. El cuantificador 344, 444 cuantifica la señal de dominio de transformada, p. ej., los coeficientes de DCT, para formar coeficientes cuantificados.
El decodificador 304, 404 de error de predicción recibe la salida del codificador 303, 403 de error de predicción y realiza los procesos opuestos del codificador 303, 403 de error de predicción para producir una señal 338, 438 de error de predicción decodificada que, cuando se combina con la representación de predicción del bloque 312, 412 de imagen en el segundo dispositivo 339, 439 de suma, produce la imagen 314, 414 reconstruida preliminar. Se puede considerar que el decodificador de error de predicción comprende un descuantificador 361, 461, que descuantifica los valores de coeficientes cuantificados, p. ej., coeficientes de DCT, para reconstruir la señal de transformada y una unidad 363, 463 de transformación inversa, que realiza la transformación inversa a la señal de transformada reconstruida en donde la salida de la unidad 363, 463 de transformación inversa contiene el bloque o bloques reconstruidos. El decodificador de error de predicción también puede comprender un filtro de bloques que puede filtrar el bloque o bloques reconstruidos según información decodificada adicional y parámetros de filtro.
El codificador 330, 430 de entropía recibe la salida del codificador 303, 403 de error de predicción y puede realizar una codificación de entropía/codificación de longitud variable adecuada en la señal para proporcionar capacidad de detección y corrección de errores. Las salidas de los codificadores 330, 430 de entropía pueden insertarse en un flujo de bits, p. ej., mediante un multiplexor 508.
La codificación/decodificación por entropía se puede realizar de muchas maneras. Por ejemplo, se puede aplicar una codificación/decodificación basada en el contexto, donde tanto el codificador como el decodificador modifican el estado de contexto de un parámetro de codificación basándose en unos parámetros de codificación previamente codificados/decodificados. La codificación basada en el contexto puede ser, por ejemplo, la codificación aritmética binaria adaptativa al contexto (CABAC) o la codificación de longitud variable basada en el contexto (CAVLC) o cualquier codificación por entropía similar. La codificación/decodificación por entropía se puede realizar, alternativa o adicionalmente, usando un plan de codificación de longitud variable, tal como la codificación/decodificación de Huffman o la codificación/decodificación de Exp-Golomb. La decodificación de unos parámetros de codificación procedentes de un flujo de bits codificado por entropía o de unas palabras en clave puede denominarse análisis.
El estándar H.264/AVC fue desarrollado por el Joint Video Team (Equipo de Vídeo Mixto - JVT) del Video Coding Experts Group (Grupo de Expertos de Codificación de Vídeo - VCEG) del Sector de Normalización de Telecomunicaciones de la nternational Telecommunication Union (Unión Internacional de Telecomunicaciones - ITU-T) y el Moving Picture Experts Group (Grupo de Expertos en Imágenes en Movimiento - MPEG) de la International Organisation for Standardization (Organización Internacional para la Estandarización - ISO) / International Electrotechnical Commission (Comisión Electrotécnica Internacional - IEC). El estándar H.264/AVC se publicó tanto por organizaciones de estandarización principales, y se denomina la Recomendación de ITU-T H.264 y el Estándar Internacional ISO/IEC 14496-10, también conocido como MPEG-4 Parte 10 Advanced Video Coding (Codificación de Vídeo Avanzada - AVC). Ha habido múltiples versiones del estándar H.264/AVC, integrando nuevas extensiones o características a la especificación. Estas extensiones incluyen Scalable Video Coding (Codificación de Vídeo Escalable - SVC) y Multiview Video Coding (Codificación de Vídeo de Múltiples Vistas - MVC).
La versión 1 del estándar de codificación de Vídeo de Alta Eficiencia (H.265/HEVC) fue desarrollado por el Joint Collaborative Team - Video Coding (Equipo Colaborativo Mixto - Codificación de Vídeo - JCT-VC) de VCEG y MPEG. El estándar fue publicado por ambas organizaciones de estandarización principales, y se denomina Recomendación de ITU-T H.265 y el Estándar Internacional ISO/IEC 23008-2, también conocido como MPEG-H Parte 2 de High Efficiency Video Coding (Codificación de Vídeo de Alta Eficiencia - HEVC). Las versiones posteriores de H.265/HEVC incluyeron unas ampliaciones escalables, multivista, de intervalo de fidelidad y unas ampliaciones de codificación tridimensional y de contenido de pantalla, que pueden abreviarse como SHVC, MV-HEVC, REXT, 3D-HEVC y SCC, respectivamente.
La SHVC, la MV-HEVC y la 3D-HEVC utilizan una especificación de base común, especificada en el anexo F de la versión 2 del estándar de HEVC. Este fundamento común comprende, por ejemplo, una sintaxis y una semántica de alto nivel que, por ejemplo, especifican algunas de las características de las capas del flujo de bits, tales como las dependencias intercapa, así como unos procesos de decodificación, tales como una construcción de listas de imágenes de referencia que incluyen unas imágenes de referencia intercapa y una obtención de recuento de orden de imágenes para un flujo de bits multicapa. El anexo F también se puede usar en posibles ampliaciones multicapa posteriores de la HEVC. Cabe entender que, aunque en lo que sigue se pueden describir un codificador de vídeo, un decodificador de vídeo, unos métodos de codificación, unos métodos de decodificación, unas estructuras de flujo de bits y/o unas realizaciones haciendo referencia a unas ampliaciones específicas, tales como la SHVC y/o la MV-HEVC, generalmente son aplicables a cualquier ampliación multicapa de la HEVC e, incluso más generalmente, a cualquier plan de codificación de vídeo multicapa.
Algunas definiciones clave, secuencia de bits y estructuras de codificación, y conceptos de H.264/AVC y HEVC se describen en esta sección como un ejemplo de un codificador de vídeo, decodificador, método de codificación, método de decodificación y una estructura de flujo de bits, en donde pueden implementarse las realizaciones. Algunas de las definiciones clave, secuencia de bits y estructuras de codificación, y conceptos de H.264/AVC son las mismas que en HEVC, por lo tanto, se describen a continuación conjuntamente. Los aspectos de la invención no se limitan a H.264/AVC o HEVC, sino más bien la descripción se proporciona para una base posible sobre la que la invención puede estar parcial o totalmente realizada.
Similarmente a muchos estándares de codificación de vídeo anteriores, la sintaxis y la semántica de flujo de bits, así como el proceso de decodificación para flujos de bits sin de errores se especifican en H.264/AVC y HEVC. El proceso de codificación no se especifica, pero los codificadores deben generar flujos de bits conformes. La conformidad con el flujo de bits y el decodificador se puede verificar con el Hypothetical Reference Decoder (Decodificador de Referencia Hipotético - HRD). Los estándares contienen herramientas de codificación que ayudan a hacer frente a errores y pérdidas de transmisión, pero el uso de las herramientas en la codificación es opcional y no se ha especificado ningún proceso de decodificación para flujos de bits erróneos.
La unidad elemental para la entrada a un codificador H.264/AVC o HEVC y la salida de un decodificador H.264/AVC o HEVC, respectivamente, es una imagen. Una imagen dada como entrada a un codificador también puede denominarse imagen de origen, y una imagen decodificada por un decodificador puede denominarse como una imagen decodificada.
Las imágenes originarias y decodificadas comprenden cada una una o más matrices de muestras, tal como uno de los siguientes conjuntos de matrices de muestra:
- Únicamente luma (Y) (monocromo).
- Luma y dos croma (YCbCr o YCgCo).
- Verde, azul y Rojo (GBR, también conocido como RGB).
- Matrices que representan otros muestreos de color monocromático o tri-estímulo no especificados (por ejemplo, YZX, también conocido como XYZ).
A continuación, estas matrices pueden denominarse luma (o L o Y) y croma, donde las dos matrices de croma pueden denominarse Cb y Cr; independientemente del método de representación de color real en uso. El método de representación de color real en uso puede indicarse, p. ej., en un flujo de bits codificado, por ejemplo, usando la sintaxis de Video Usability Information (Información de Usabilidad de Vídeo - VUI) de H.264/AVC y/o HEVC. Un componente puede definirse como una matriz o una muestra única de una de las tres matrices de matrices de muestras (luma y dos croma) o la matriz o una única muestra de la matriz que componen una imagen en formato monocromo.
En H.264/AVC y HEVC, una imagen puede ser un fotograma o un campo. Un fotograma comprende una matriz de muestras de luma y posiblemente las muestras de croma correspondientes. Un campo es un conjunto de filas de muestras alternativas de un fotograma y puede usarse como entrada de codificador, cuando la señal de origen está entrelazada. Las matrices de muestras de croma pueden estar ausentes (y, por lo tanto, el muestreo monocromático puede estar en uso) o las matrices de muestras de croma pueden submuestrearse cuando se comparan con las matrices de muestras de luma. Los formatos de croma pueden resumirse de la siguiente manera:
- En el muestreo monocromo hay solo una matriz de muestras, que puede considerarse nominalmente la matriz de luma.
- En el muestreo 4:2:0, cada una de las dos matrices de croma tiene la mitad de la altura y la mitad del ancho de la matriz de luma.
- En el muestreo 4:2:2, cada una de las dos matrices de croma tiene la misma altura y la mitad de la anchura de la matriz de luma.
- En el muestreo 4:4:4 cuando no hay planos de color separados en uso, cada una de las dos matrices de croma tiene la misma altura y anchura que la matriz de luma.
En H.264/AVC y HEVC, es posible codificar matrices de muestras como planos de color separados en el flujo de bits y decodificar respectivamente planos de color codificados por separado a partir del flujo de bits. Cuando se usan planos de color separados, cada uno de ellos se procesa por separado (por el codificador y/o el decodificador) como una imagen con muestreo monocromo.
Se puede definir una partición como una división de un conjunto en subconjuntos de modo que cada elemento del conjunto esté en exactamente uno de los subconjuntos.
Cuando se describe la operación de codificación y/o decodificación de HEVC, se pueden usar los siguientes términos. Un bloque de codificación puede definirse como un bloque NxN de muestras para cierto valor de N de manera que la división de un bloque de árbol de codificación en bloques de codificación es una partición. Un bloque de árbol de codificación (CTB) puede definirse como un bloque de NxN de muestras para cierto valor de N, de modo que la división de un componente en bloques de árbol de codificación es una partición. Una unidad de árbol de codificación (CTU) puede definirse como un bloque de árbol de codificación de muestras de luma, dos bloques de árbol de codificación correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un bloque de árbol de codificación de muestras de una imagen monocromo o una imagen que está codificada usando tres planos de color separados y estructuras de sintaxis usadas para codificar las muestras. Una unidad de codificación (CU) puede definirse como un bloque de codificación de muestras de luma, dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un bloque de codificación de muestras de una imagen monocromo o una imagen que está codificada usando tres planos de color separados y estructuras de sintaxis usadas para codificar las muestras. Una CU con el tamaño máximo permitido se puede denominar LCU (largest coding unit - unidad de codificación más grande) o unidad de árbol de codificación (CTU) y la imagen de vídeo se divide en LCU no superpuestas.
Una CU consiste en una o más unidades de predicción (PU) que definen el proceso de predicción para las muestras dentro de la CU y una o más unidades de transformada (TU) que definen el proceso de codificación de error de predicción para las muestras en dicha CU. Típicamente, una CU consiste en un bloque cuadrado de muestras con un tamaño seleccionable de un conjunto predefinido de posibles tamaños de CU. Cada PU y TU se pueden dividir de forma adicional en PU y TU más pequeñas para aumentar la granularidad de los procesos de predicción y de codificación de errores de predicción, respectivamente. Cada PU tiene información de predicción asociada con ella que define qué tipo de predicción se debe aplicar para los píxeles dentro de esa PU (p. ej., información de vector de movimiento para PU interpredichas e información de direccionalidad de intrapredicción para PU intrapredichas).
Cada TU está asociada a una información que describe el proceso de decodificación de error de predicción para las muestras que están dentro de dicha TU (incluida, p. ej., una información de coeficiente de DCT). Normalmente se señala a nivel de CU si se aplica o no una codificación de error de predicción para cada CU. En caso de que no haya ningún error de predicción residual asociado con la CU, se puede considerar que no hay ninguna TU para dicha CU. La división de la imagen en las CU, y la división de las CU en PU y TU se indica típicamente en el flujo de bits que permite que el decodificador reproduzca la estructura prevista de estas unidades.
En HEVC, una imagen puede dividirse en piezas, que son rectangulares y contienen un número entero de LCU. En HEVC, la partición en piezas forma una cuadrícula regular, donde las alturas y anchuras de las piezas difieren entre sí por una LCU como máximo. En HEVC, se define un corte que es un número entero de unidades de árbol de codificación contenidas en un segmento de corte independiente y todos los segmentos de corte dependientes posteriores (si los hay) que preceden al siguiente segmento de corte independiente (si lo hay) dentro de la misma unidad de acceso. En HEVC, un segmento de corte se define como un número entero de unidades de árbol de codificación ordenadas consecutivamente en la exploración de piezas y contenidas en una única unidad de NAL. La división de cada imagen en segmentos de corte es una partición. En HEVC, un segmento de corte independiente se define como un segmento de corte para el cual los valores de los elementos de sintaxis de la cabecera de segmento de corte no se infieren de los valores para un segmento de corte anterior, y un segmento de corte dependiente se define como un segmento de corte para el cual los valores de algunos elementos de sintaxis de la cabecera de segmento de corte se infieren de los valores para el segmento de corte independiente anterior en orden de decodificación. En HEVC, una cabecera de corte se define como la cabecera del segmento de corte del segmento de corte independiente que es un segmento de corte actual o es el segmento de corte independiente que precede a un segmento de corte dependiente actual, y una cabecera de segmento de corte se define como una parte de un segmento de corte codificado que contiene los elementos de datos pertenecientes a la primera o todas las unidades de árbol de codificación representadas en el segmento de corte. Las CU se exploran en el orden de barrido por tramas de las LCU dentro de las piezas o dentro de una imagen, si no se usan piezas. Dentro de una LCU, las CU tienen un orden de exploración específico.
Un conjunto de piezas constreñido en cuanto al movimiento (MCTS) es tal que el proceso de interpredicción está constreñido en cuanto a la codificación, de manera que no se usa ningún valor de muestra que esté fuera del conjunto de piezas constreñido en cuanto al movimiento ni ningún valor de muestra que esté en una posición de muestra fraccionaria que se obtenga usando uno o más valores de muestra que estén fuera del conjunto de piezas constreñido en cuanto al movimiento para la interpredicción de cualquier muestra que esté dentro del conjunto de piezas constreñido en cuanto al movimiento. Además, la codificación de un MCTS está constreñida de una manera tal que unos candidatos a vector de movimiento no se obtienen de unos bloques que están fuera del MCTS. Esto se puede imponer desactivando la predicción de vectores de movimiento temporal de la HEVC o impidiendo que el codificador utilice el candidato de TMVP o cualquier candidato de predicción de vectores de movimiento que venga después del candidato de TMVP en la lista de fusión o de candidatos de AMVP para PU que estén ubicadas directamente a la izquierda del límite derecho de pieza del MCTS, salvo el último que está en la parte inferior derecha del MCTS. En general, un MCTS puede definirse como que es un conjunto de piezas que es independiente de cualquier valor de muestra y dato codificado, tal como un vector de movimiento, que esté fuera del MCTS. En algunos casos, es posible que se requiera que un MCTS forme una zona rectangular. Debe entenderse que, dependiendo del contexto, un MCTS puede referirse al conjunto de piezas que está dentro de una imagen o al respectivo conjunto de piezas que hay en una secuencia de imágenes. El respectivo conjunto de piezas puede estar, aunque en general no necesita estarlo, coubicado en la secuencia de imágenes.
Obsérvese que el proceso de codificación y/o decodificación puede saturar las ubicaciones de muestra utilizadas en la interpredicción, de manera que una ubicación, que de otro modo estaría fuera de la imagen, se sature para apuntar a la correspondiente muestra límite de la imagen. Por lo tanto, si un límite de pieza también es un límite de imagen, en algunos casos de uso, los codificadores pueden permitir que unos vectores de movimiento atraviesen ese límite de manera efectiva o que un vector de movimiento provoque de manera efectiva una interpolación de muestra fraccionaria que se referiría a una ubicación fuera de ese límite, puesto que las ubicaciones de muestra se saturan sobre el límite.
En otros casos de uso, específicamente si puede extraerse una pieza codificada de un flujo de bits donde está ubicada en una posición que es adyacente a un límite de imagen a otro flujo de bits donde la pieza está ubicada en una posición que no es adyacente al límite de imagen, los codificadores pueden constreñir los vectores de movimiento en los límites de imagen de manera similar a cualquier límite de MCTS.
El mensaje SEI de conjuntos de piezas constreñidos en cuanto al movimiento temporal de la HEVC se puede usar para indicar la presencia de conjuntos de piezas constreñidos en cuanto al movimiento en el flujo de bits.
El decodificador reconstruye el vídeo de salida aplicando medios de predicción similares al codificador para formar una representación predicha de los bloques de píxeles (usando el movimiento o la información espacial creada por el codificador y almacenada en la representación comprimida) y la decodificación de error de predicción (operación inversa de la codificación de error de predicción recuperando la señal de error de predicción cuantificada en el dominio de píxeles espaciales). Después de aplicar la predicción y la decodificación de errores de predicción, el decodificador suma las señales de predicción y de error de predicción (valores de píxel) para formar el fotograma de vídeo de salida. El decodificador (y codificador) también puede aplicar medios de filtrado adicionales para mejorar la calidad del vídeo de salida antes de pasar por su visualización y/o almacenarlo como referencia de predicción para los fotogramas próximos en la secuencia de vídeo.
El filtrado puede incluir, por ejemplo, uno más de lo siguientes: desbloqueo, desplazamiento adaptativo de muestras (SAO) y/o filtrado de bucle adaptativo (ALF). H.264/AVC incluye un desbloqueo, mientras que HEVC incluye tanto desbloqueo como SAO.
En los códecs de vídeo típicos, la información de movimiento se indica con vectores de movimiento asociados con cada bloque de imagen con compensación de movimiento, tal como una unidad de predicción. Cada uno de estos vectores de movimiento representa el desplazamiento del bloque de imagen en la imagen a codificar (en el lado del codificador) o a decodificar (en el lado del decodificador) y el bloque de origen de predicción en una de las imágenes previamente codificadas o decodificadas. Para representar vectores de movimiento de manera eficiente, aquellos que típicamente se codifican diferencialmente con respecto a vectores de movimiento predichos específicos de bloque. En códecs de vídeo típicos, los vectores de movimiento predichos se crean de una manera predefinida, por ejemplo, calculando la mediana de los vectores de movimiento codificados o decodificados de los bloques adyacentes. Otra forma de crear predicciones de vectores de movimiento es generar una lista de predicciones candidatas de bloques adyacentes y/o bloques coubicados en imágenes de referencia temporal y señalizar el candidato elegido como el predictor de vector de movimiento. Además de predecir los valores del vector de movimiento, puede predecirse qué imagen o imágenes de referencia se usan para la predicción compensada por movimiento y esta información de predicción puede representarse, por ejemplo, mediante un índice de referencia de imagen previamente codificada/decodificada. El índice de referencia se predice típicamente desde bloques adyacentes y/o bloques coubicados en la imagen de referencia temporal. Además, los códecs de vídeo de alta eficiencia típicos emplean un mecanismo de codificación/decodificación de información de movimiento adicional, a menudo llamado modo de fusión/fusionar, donde toda la información de campo de movimiento, que incluye el vector de movimiento y el índice de imagen de referencia correspondiente para cada lista de imágenes de referencia disponible, se predice y se usa sin ninguna modificación/corrección. Similarmente, se lleva a cabo la predicción de la información de campo de movimiento usando la información de campo de movimiento de bloques adyacentes y/o bloques coubicados en imágenes de referencia temporal y se señaliza la información de campo de movimiento usada entre una lista de la lista de candidatos de campo de movimiento rellenada con información de campo de movimiento de bloques adyacentes/coubicados disponibles.
En códecs de vídeo típicos, el residuo de predicción después de la compensación del movimiento se transforma en primer lugar con un núcleo de transformada (como DCT) y, a continuación, se codifica. La razón de esto es que, a menudo, existe alguna correlación entre el residuo y la transformada que, en muchos casos, puede ayudar a reducir esta correlación y proporcionar una codificación más eficiente.
Los codificadores de vídeo típicos utilizan funciones de coste lagrangianas para encontrar unos modos de codificación óptimos, p. ej., el modo de codificación deseado para un bloque y unos vectores de movimiento asociados. Este tipo de función de coste usa un factor A de ponderación para vincular la distorsión de imagen (exacta o estimada) debido a los métodos de codificación con pérdidas y la cantidad (exacta o estimada) de información que se requiere para representar los valores de píxel en un área de imagen:
C = DXR,(1)
donde C es el coste de Lagrange que se va a minimizar, d es la distorsión de imagen (p. ej., error cuadrático medio) con los vectores de modo y movimiento considerados, y R el número de bits necesarios para representar los datos requeridos para reconstruir el bloque de imagen en el decodificador (incluida la cantidad de datos para representar los vectores de movimiento candidatos).
Los estándares y especificaciones de codificación de vídeo pueden permitir que los codificadores dividan una imagen codificada a cortes codificados o similares. La predicción en imagen está deshabilitada típicamente a través de los límites de corte. Por lo tanto, los cortes pueden considerarse una forma de dividir una imagen codificada a piezas que pueden decodificarse de manera independiente. En H.264/AVC y HEVC, la predicción en imagen puede desactivarse a través de los límites de corte. Por lo tanto, los cortes se pueden considerar como una forma de dividir una imagen codificada en piezas que pueden decodificarse de manera independiente, y los cortes, por lo tanto, a menudo se consideran unidades elementales para la transmisión. En muchos casos, los codificadores pueden indicar en el flujo de bits qué tipos de predicción en imagen se desconectan a través de límites de corte, y la operación del decodificador tiene en cuenta esta información, por ejemplo, cuando se concluye qué fuentes de predicción están disponibles. Por ejemplo, puede considerarse que las muestras de una CU vecina no están disponibles para la intrapredicción si la CU vecina reside en un corte diferente.
Una unidad elemental para la salida de un codificador H.264/AVC o HEVC y la entrada de un decodificador H.264/AVC o HEVC, respectivamente, es una unidad de Capa de Abstracción de Red (NAL). Para el transporte sobre redes orientadas por paquetes o el almacenamiento en archivos estructurados, las unidades NAL pueden encapsularse en paquetes o estructuras similares. Se ha especificado un formato de flujo de bytes en H.264/AVC y HEVC para entornos de transmisión o almacenamiento que no proporcionan estructuras de alineación de tramas. El formato de flujo de bits separa las unidades NAL entre sí anexando un código de inicio delante de cada unidad NAL. Para evitar la falsa detección de límites de unidad NAL, los codificadores ejecutan un algoritmo de prevención de emulación de código de inicio orientado a bytes, que añade un byte de prevención de emulación a la carga útil de unidad NAL si se hubiera producido un código de inicio de otra manera. Con el fin de permitir una operación de puerta de enlace sencilla entre sistemas orientados a paquetes y a flujos, la prevención de emulación de código de inicio siempre puede realizarse independientemente de si el formato de flujo de bytes está en uso o no. Una unidad NAL puede definirse como una estructura de sintaxis que contiene una indicación del tipo de datos a seguir y bytes que contienen ese dato en forma de una RBSP intercalada según sea necesario con bytes de prevención de emulación. Una carga útil de secuencia de bytes sin procesar (RBSP) puede definirse como una estructura de sintaxis que contiene un número entero de bytes que están encapsulados en una unidad NAL. Una RBSP está vacía o tiene la forma de una cadena de bits de datos que contienen elementos de sintaxis seguidos de un bit de parada de RBSP y seguido de cero o más bits posteriores iguales a 0.
Las unidades NAL consisten en una cabecera y una carga útil. En H.264/AVC y la HEVC, la cabecera de unidad NAL indica el tipo de la unidad NAL
En HEVC, se usa una cabecera de unidad NAL de dos bytes para todos los tipos de unidad NAL especificados. La cabecera de la unidad NAL contiene un bit reservado, una indicación de tipo de unidad NAL de seis bits, una indicación nuh_temporal_id_plus1 de tres bits para el nivel temporal (puede ser necesario que sea mayor o igual a 1) y un elemento de sintaxis nuh_layer_id de seis bits. El elemento de sintaxis temporal_id_plus1 puede considerarse como un identificador temporal para la unidad NAL, y una variable TemporalId basada en cero puede derivarse de la siguiente manera: TemporalId = temporal_id_plus1 - 1. La abreviatura TID puede usarse para indistintamente con la variable TemporalId. TemporalId igual a 0 corresponde al nivel temporal más bajo. Se requiere que el valor de temporal_id_plus1 sea distinto de cero para evitar la emulación de código de inicio que implica los dos bytes de cabecera de unidad NAL. El flujo de bits creado excluyendo todas las unidades NAL de VCL que tienen un TemporalId mayor o igual a un valor seleccionado y que incluyen todas las demás unidades NAL de VCL permanece conforme. En consecuencia, una imagen que tenga un TemporalId igual a tid_value no utiliza ninguna imagen que tenga un TemporalId mayor que tid_value como referencia de interpredicción. Una subcapa o una subcapa temporal puede definirse como una capa temporal escalable (o una capa temporal, TL) de un flujo de bits temporal escalable, que consta de unidades VCL NAL con un valor particular de la variable TemporalId y las unidades NAL no-VCL asociadas. nuh_layer_id puede entenderse como un identificador de capa de escalabilidad.
Las unidades NAL pueden clasificarse en unidades NAL de Capa de Codificación de Vídeo (VCL) y unidades NAL no VCL. Las unidades NAL de VCL son típicamente unidades NAL de corte codificado. En HEVC, unidades NAL de VCL contienen elementos de sintaxis que representan una o más CU.
En HEVC, las abreviaturas para los tipos de imágenes pueden definirse como sigue: Temporal Sub-layer Access (imagen posterior - TRAIL), Step-wise Temporal Sub-layer Access (acceso de subcapa temporal - TSA), Step-wise Temporal Sub-layer Access (acceso de subcapa temporal por etapas - STSA), Random Access Decodable Leading (imagen principal decodificable de acceso aleatorio - RADL), Random Access Skipped Leading (imagen principal de acceso aleatorio saltado - RASL), picture, Broken Link Access (imagen de acceso de enlace roto - BLA), Instantaneous Decoding Refresh (imagen de refresco de decodificación instantáneo - IDR), Clean Random Access (imagen de acceso aleatorio limpio - CRA).
Una imagen de punto de acceso aleatorio (RAP), que también puede denominarse imagen de punto de acceso intra aleatorio (IRAP) en una capa independiente contiene solo cortes intracodificados. Una imagen IRAP que pertenece a una capa predicha puede contener unos cortes P, B y I, no puede usar la interpredicción de otras imágenes en la misma capa predicha y puede usar una predicción intercapa de sus capas de referencia directa. En la presente versión de HEVC, una imagen IRAP puede ser una imagen BLA, una imagen CRA o una imagen IDR. La primera imagen en un flujo de bits que contiene una capa base es una imagen IRAP en la capa base. Siempre que los conjuntos de parámetros necesarios estén disponibles cuando sea necesario activarlos, una imagen IRAP en una capa independiente y todas las imágenes no RASL posteriores en la capa independiente en orden de decodificación se pueden decodificar correctamente sin realizar el proceso de decodificación de ninguna imagen que preceda a la Imagen IRAP en orden de decodificación. La imagen IRAP que pertenece a una capa predicha y todas las imágenes no RASL posteriores en orden de decodificación dentro de la misma capa predicha pueden decodificarse correctamente sin realizar el proceso de decodificación de cualquier imagen de la misma capa predicha que preceda a la imagen IRAP en orden de decodificación, cuando los conjuntos de parámetros necesarios están disponibles cuando deben activarse y cuando se ha inicializado la decodificación de cada capa de referencia directa de la capa predicha. Puede haber imágenes en un flujo de bits que contengan solo cortes intracodificados que no sean imágenes IRAP.
Una unidad NAL que no es VCL puede ser, por ejemplo, uno de los siguientes tipos: un conjunto de parámetros de secuencia, un conjunto de parámetros de imagen, una unidad NAL de información de mejora suplementaria (SEI), un delimitador de unidad de acceso, una unidad NAL de fin de secuencia, una unidad NAL de fin de flujo de bits o una unidad NAL de datos de relleno. Pueden ser necesarios conjuntos de parámetros para la reconstrucción de imágenes decodificadas, mientras que muchas de las otras unidades NAL no de VCL no son necesarias para la reconstrucción de valores de muestra decodificada.
Los parámetros que permanecen sin cambios a través de una secuencia de vídeo codificado pueden incluirse en un conjunto de parámetros de secuencia. Además de los parámetros que pueden ser necesarios por el proceso de decodificación, el conjunto de parámetros de secuencia puede contener opcionalmente información de usabilidad de vídeo (VUI), que incluye parámetros que pueden ser importantes para el almacenamiento en memoria intermedia, la temporización de salida de imagen, la representación y la reserva de recursos. En HEVC, un RBSP de conjunto de parámetros de secuencia incluye parámetros que pueden denominarse por uno o más RBSP de conjunto de parámetros de imagen o una o más unidades NAL SEI que contienen un mensaje SEI de período de almacenamiento en memoria intermedia. Un conjunto de parámetros de imagen contiene tales parámetros que probablemente no se cambien en varias imágenes codificadas. Un RBSP de conjunto de parámetros de imagen puede incluir parámetros que pueden denominarse por las unidades NAL de corte codificado de una o más imágenes codificadas.
En HEVC, un conjunto de parámetros de vídeo (VPS) puede definirse como una estructura de sintaxis que contiene elementos de sintaxis que se aplican a cero o más secuencias de vídeo codificado completas según lo determinado por el contenido de un elemento de sintaxis que se encuentra en el SPS al que se hace referencia por un elemento de sintaxis que se encuentra en el PPS al que se hace referencia por un elemento de sintaxis encontrado en cada cabecera de segmento de corte.
Un RBSP de conjunto de parámetros de vídeo puede incluir parámetros que pueden referenciarse por uno o más RBSP de conjunto de parámetros de secuencia.
La relación y jerarquía entre el conjunto de parámetros de vídeo (VPS), el conjunto de parámetros de secuencia (SPS) y el conjunto de parámetros de imagen (PPS) puede describirse como sigue. VPS reside un nivel por encima del SPS en la jerarquía de conjunto de parámetros y en el contexto de escalabilidad y/o vídeo 3D. El VPS puede incluir parámetros que son comunes para todos los cortes en todas las capas (escalabilidad o vista) en toda la secuencia de vídeo codificado. SPS incluye los parámetros que son comunes para todos los cortes en una capa particular (escalabilidad o vista) en toda la secuencia de vídeo codificado, y pueden compartirse por múltiples capas (escalabilidad o vista). El PPS incluye los parámetros que son comunes para todos los cortes en una representación de capa particular (la representación de una capa de escalabilidad o de vista en una unidad de acceso) y es probable que se compartan por todos los cortes en múltiples representaciones de capa.
VPS puede proporcionar información acerca de las relaciones de dependencia de las capas en un flujo de bits, así como mucha otra información que es aplicable a todos los cortes en todas las capas (escalabilidad o vista) en toda la secuencia de vídeo codificado. Se puede considerar que VPS comprende dos partes, el VPS base y una extensión VPS, donde la extensión VPS puede estar opcionalmente presente.
La transmisión, señalización o almacenamiento fuera de banda puede usarse adicional o alternativamente para otros fines que la tolerancia contra errores de transmisión, tales como facilidad de acceso o negociación de sesión. Por ejemplo, una entrada de muestra de una pista en un archivo conforme al formato ISO Base Media File puede comprender conjuntos de parámetros, mientras que los datos codificados en el flujo de bits se almacenan en otra parte del archivo o en otro archivo. La frase a lo largo del flujo de bits (p. ej., que indica a lo largo del flujo de bits) o a lo largo de una unidad codificada de un flujo de bits (p. ej., que indica a lo largo de una pieza codificada) puede usarse en unas reivindicaciones y en unas realizaciones descritas para referirse a una transmisión, una señalización o un almacenamiento fuera de banda de una manera tal que los datos fuera de banda estén asociados con el flujo de bits o la unidad codificada, respectivamente. La decodificación de frase a lo largo del flujo de bits o a lo largo de una unidad codificada de un flujo de bits o similar puede referirse a decodificar los referidos datos fuera de banda (que pueden obtenerse de una transmisión, una señalización o un almacenamiento fuera de banda) que están asociados con el flujo de bits o la unidad codificada, respectivamente.
Una unidad NAL SEI puede contener uno o más mensajes SEI, que no son necesarios para la decodificación de imágenes de salida, pero pueden ayudar en procesos relacionados, tales como la temporización de salida de imágenes, la representación, la detección de errores, la ocultación de errores y la reserva de recursos. Se especifican varios mensajes SEI en H.264/AVC y HEVC, y los mensajes SEI de datos de usuario permiten a las organizaciones y empresas especificar mensajes SEI para su propio uso. H.264/AVC y HEVC contienen la sintaxis y la semántica para los mensajes SEI especificados, pero no se define ningún proceso para manejar los mensajes en el receptor. Por consiguiente, se requieren codificadores para seguir el estándar H.264/AVC o el estándar HEVC cuando crean mensajes SEI, y decodificadores conformes al estándar H.264/AVC o al estándar HEVC, respectivamente, no se requieren para procesar los mensajes SEI para la conformidad del orden de salida. Una de las razones para incluir la sintaxis y la semántica de los mensajes SEI en H.264/AVC y HEVC es permitir que diferentes especificaciones del sistema interpreten la información complementaria de manera idéntica y, por lo tanto, interfuncionen. Se pretende que las especificaciones del sistema puedan requerir el uso de mensajes SEI particulares tanto en el extremo de codificación como en el extremo de decodificación y, de forma adicional, se puede especificar el proceso para manejar mensajes SEI particulares en el receptor.
En la HEVC hay dos tipos de unidades NAL SEI, a saber, la unidad NAL SEI de sufijo y la unidad NAL SEI de prefijo, que tienen un valor nal_unit_type diferente la una de la otra. Los mensajes SEI contenidos en una unidad NAL SEI de sufijo están asociados a la unidad NAL VCL que precede, en orden de decodificación, a la unidad de NAL SEI de sufijo. El (los) mensaje(s) SEI contenido(s) en una unidad NAL SEI de prefijo están asociados a la unidad NAL VCL que va después, en orden de decodificación, de la unidad NAL SEI de prefijo.
Una imagen codificada es una representación codificada de una imagen.
En HEVC, una imagen codificada puede definirse como una representación codificada de una imagen que contiene todas las unidades de árbol de codificación de la imagen. En la HEVC, una unidad de acceso (AU) puede definirse como un conjunto de unidades NAL que están asociadas las unas con las otras según una regla de clasificación especificada, son consecutivas en orden de decodificación y contienen como máximo una imagen con cualquier valor específico de nuh_layer_id. Además de contener las unidades NAL VCL de la imagen codificada, una unidad de acceso también puede contener unidades NAL no VCL. Dicha regla de clasificación especificada puede asociar, por ejemplo, imágenes con el mismo valor de conteo de salida de imagen o de salida de imagen en la misma unidad de acceso.
Un flujo de bits puede definirse como una secuencia de bits, en forma de un flujo de unidades NAL o un flujo de bytes, que forma la representación de imágenes codificadas y datos asociados que forman una o más secuencias de vídeo codificadas. Un primer flujo de bits puede ser seguido por un segundo flujo de bits en el mismo canal lógico, tal como en el mismo archivo o en la misma conexión de un protocolo de comunicación. Un flujo elemental (en el contexto de la codificación de vídeo) puede definirse como una secuencia de uno o más flujos de bits. El final del primer flujo de bits puede indicarse mediante una unidad NAL específica, que puede denominarse unidad NAL de final de flujo de bits (EOB) y que es la última unidad NAL del flujo de bits. En la HEVC y sus actuales borradores de ampliación, se requiere que la unidad NAL de EOB tenga nuh_layer_id igual a 0.
En H.264/AVC, una secuencia de vídeo codificado se define como una secuencia de unidades de acceso consecutivas en orden de decodificación desde una unidad de acceso IDR, inclusive, a la siguiente unidad de acceso IDR, exclusiva, o al final del flujo de bits, lo que aparezca antes.
En HEVC, una secuencia de vídeo codificado (CVS) se puede definir, por ejemplo, como una secuencia de unidades de acceso que consiste, en orden de decodificación, de una unidad de acceso de IRAP con NoRaslOutputFlag igual a 1, seguida por cero o más unidades de acceso que no son unidades de acceso IRAP con NoRaslOutputFlag igual a 1, que incluyen todas las unidades de acceso posteriores hasta, pero no incluida ninguna unidad de acceso posterior que sea una unidad de acceso IRAP con NoRaslOutputFlag igual a 1. Una unidad de acceso de IRAP puede definirse como una unidad de acceso en la que la imagen de la capa base es una imagen de IRAP. El valor de NoRaslOutputFlag es igual a 1 para cada imagen IDR y cada imagen BLA, y cada imagen IRAP que sea la primera imagen en esa capa particular en el flujo de bits en orden de decodificación es la primera imagen IRAP que va después de una unidad nAl de final de secuencia que tiene el mismo valor de nuh_layer_id en orden de decodificación. Puede haber medios para proporcionar el valor de HandleCraAsBlaFlag al decodificador desde una entidad externa, tal como un reproductor o un receptor, que puede controlar el decodificador. HandleCraAsBlaFlag puede establecerse a 1, por ejemplo, por un reproductor que busca una nueva posición en un flujo de bits o sintoniza en una difusión y comienza a decodificar y, a continuación, comienza a decodificar desde una imagen CRA. Cuando HandleCraAsBlaFlag es igual a 1 para una imagen CRA, la imagen CRA se maneja y decodifica como si fuera una imagen BLA.
En HEVC, una secuencia de vídeo codificada puede especificarse adicional o alternativamente (a la memoria descriptiva anterior) para finalizar, cuando una unidad NAL específica, que puede denominarse unidad NAL de extremo de secuencia (EOS - endof sequence),aparece en el flujo de bits y tiene una capa nuh id igual a 0.
Un grupo de imágenes (GOP -group of pictures)y sus características pueden definirse como sigue. Un GOP puede decodificarse independientemente de si se descodificaron cualesquiera imágenes anteriores. Un GOP abierto es un grupo de imágenes en el que las imágenes que preceden a la imagen intra inicial en orden de salida podrían no decodificarse correctamente cuando la decodificación comienza a partir de la imagen intra inicial del GOP abierto. En otras palabras, las imágenes de un GOP abierto pueden referirse (en la interpredicción) a imágenes que pertenecen a un GOP anterior. Un decodificador HEVC puede reconocer una imagen intra que inicia un GOP abierto, porque un tipo de unidad de NAL específica, tipo de unidad de NAL de CRA, puede usarse para sus cortes codificados. Un GOP cerrado es un grupo de imágenes en el que todas las imágenes pueden decodificarse correctamente cuando la decodificación comienza a partir de la imagen intra inicial del GOP cerrado. En otras palabras, ninguna imagen en un GOP cerrado se refiere a cualquier imagen en los GOP anteriores. En H.264/AVC y HEVC, un GOP cerrado puede comenzar a partir de una imagen IDR. En HEVC, un GOP cerrado también puede comenzar a partir de una imagen BLA_W_RAD<l>o BLA_N_LP. Una estructura de codificación de GOP abierto es potencialmente más eficiente en la compresión en comparación con una estructura de codificación de GOP cerrada, debido a una mayor flexibilidad en la selección de imágenes de referencia.
Una Decoded Picture Buffer (memoria intermedia de imágenes decodificadas - DPB) puede usarse en el codificador y/o en el decodificador. Hay dos razones para almacenar en memoria intermedia imágenes decodificadas, para referencias en interpredicción y para reordenar imágenes decodificadas en orden de salida. Como H.264/AVC y HEVC proporcionan una gran flexibilidad tanto para el marcaje de imagen de referencia como para la reordenación de salida, las memorias intermedias separadas para el almacenamiento en memoria intermedia de imagen de referencia y el almacenamiento en memoria intermedia de imagen de salida pueden desperdiciar recursos de memoria. Por lo tanto, la DPB puede incluir un proceso de almacenamiento en memoria intermedia de imágenes decodificadas unificado para las imágenes de referencia y la reordenación de salida. Una imagen decodificada puede retirarse de la DPB cuando ya no se usa como referencia y no se necesita para la salida.
En muchos modos de codificación de H.264/AVC y HEVC, la imagen de referencia para la interpredicción se indica con un índice a una lista de imágenes de referencia. El índice puede codificarse con codificación de longitud variable, que habitualmente provoca que un índice más pequeño tenga un valor más corto para el elemento de sintaxis correspondiente. En H.264/AVC y HEVC, se generan dos listas de imágenes de referencia (la lista 0 de imágenes de referencia y la lista 1 de imágenes de referencia) para cada corte bipredictivo (B), y se forma una lista de imágenes de referencia (la lista 0 de imágenes de referencia) para cada corte intercodificado (P).
Muchos estándares de codificación, incluido H.264/AVC y HEVC, pueden tener un proceso de decodificación para derivar un índice de imagen de referencia a una lista de imágenes de referencia, que puede usarse para indicar cuál de las múltiples imágenes de referencia se usa para la interpredicción para un bloque particular. Un índice de imagen de referencia puede codificarse por un codificador en el flujo de bits es algunos modos de intercodificación o puede derivarse (por un codificador y un decodificador), por ejemplo, usando bloques vecinos en algunos otros modos de intercodificación.
Se pueden obtener varios vectores de movimiento candidatos para una sola unidad de predicción. Por ejemplo, la HEVC de predicción de vectores de movimiento incluye dos planes de predicción de vectores de movimiento, a saber, la predicción avanzada de vectores de movimiento (A<m>VP) y el modo de fusión. En la AMVP o en el modo de fusión se obtiene una lista de candidatos a vectores de movimiento para una PU. Hay dos tipos de candidatos: candidatos espaciales y candidatos temporales; los candidatos temporales también pueden denominarse candidatos TMVP.
La obtención de lista de candidatos puede realizarse, por ejemplo, de la siguiente manera, aunque debe entenderse que pueden existir otras posibilidades para la obtención de lista de candidatos. Si la ocupación de la lista de candidatos no es máxima, los candidatos espaciales se incluyen primero en la lista de candidatos si están disponibles y no existen ya en la lista de candidatos. Después de eso, si la ocupación de la lista de candidatos aún no es máxima, se incluye un candidato temporal en la misma. Si el número de candidatos no alcanza aún el número máximo permitido, se agregan los candidatos bipredictivos combinados (para cortes B) y un vector de movimiento nulo. Una vez que se ha construido la lista de candidatos, el codificador decide la información de movimiento final a partir de unos candidatos basándose en, por ejemplo, una decisión de optimización de la razón tasa-distorsión (RDO) y codifica el índice del candidato seleccionado en el flujo de bits. Asimismo, el decodificador decodifica del flujo de bits el índice del candidato seleccionado, construye la lista de candidatos y usa el índice decodificado para seleccionar de la lista de candidatos un predictor de vector de movimiento.
En la HEVC, la AMVP y el modo de fusión se pueden caracterizar de la siguiente manera. En la AMVP, el codificador indica si se usará una unipredicción o una bipredicción y qué imágenes de referencia se usarán, así como codifica una diferencia entre vectores de movimiento. En el modo de fusión, solo se codifica en el flujo de bits el candidato elegido de la lista de candidatos, lo que indica que la unidad de predicción actual tiene la misma información de movimiento que el predictor indicado. Así, en el modo de fusión se crean unas regiones compuestas por bloques de predicción vecinos que comparten idéntica información de movimiento, lo cual solo se señaliza una vez para cada región.
En lo que sigue se proporciona un ejemplo de la operación de predicción avanzada de vectores de movimiento, aunque también son posibles otras realizaciones similares de la predicción avanzada de vectores de movimiento con, por ejemplo, distintos conjuntos de posiciones candidatas y ubicaciones candidatas con conjuntos de posiciones candidatas. Hay que entender también que otro modo de predicción, tal como el modo de fusión, puede funcionar de manera parecida. Se pueden derivar dos predictores de vector de movimiento espaciales (MVP) y se puede derivar un predictor de vector de movimiento temporal (TMVP). De entre las posiciones pueden seleccionarse: tres posiciones candidatas a predictor de vector de movimiento espacial que están ubicadas encima del bloque de predicción actual (Bo, B1 , B2) y dos a la izquierda (A0, A1). El primer predictor de vector de movimiento que esté disponible (p. ej., resida en el mismo corte, esté intercodificado, etc.) en un orden predefinido de cada conjunto de posiciones candidatas, (B0, B1 , B2) o (A0, A1), puede seleccionarse para representar ese sentido de predicción (arriba o izquierda) en la competencia entre vectores de movimiento. Un índice de referencia para el predictor de vector de movimiento temporal puede indicarse por el codificador en la cabecera de corte (p. ej., como un elemento de sintaxis collocated_ref_idx). El primer predictor de vector de movimiento que esté disponible (p. ej., esté intercodificado) en un orden predefinido de posibles ubicaciones candidatas temporales, por ejemplo, en el orden (C0, C1), puede seleccionarse como fuente para un predictor de vector de movimiento temporal. El vector de movimiento que se ha obtenido de la primera ubicación candidata disponible en la imagen coubicada puede ajustarse en escala según las proporciones de las diferencias entre recuentos de orden de imágenes de la imagen de referencia del predictor de vector de movimiento temporal, la imagen coubicada y la imagen actual. Además, se puede realizar una comprobación de redundancia entre los candidatos para eliminar candidatos idénticos, que pueden conducir a la inclusión de un vector de movimiento cero en la lista de candidatos. El predictor de vector de movimiento puede indicarse en el flujo de bits, por ejemplo, indicando la dirección del predictor de vector de movimiento espacial (hacia arriba o hacia la izquierda) o la selección del candidato del predictor de vector de movimiento temporal. La imagen coubicada también puede denominarse imagen coubicada, fuente para la predicción de vectores de movimiento o imagen fuente para la predicción de vectores de movimiento.
Los tipos de parámetro de movimiento o la información de movimiento puede(n) incluir, sin limitación, uno o más de los siguientes tipos:
- una indicación de un tipo de predicción (p. ej., intrapredicción, unipredicción, bipredicción) y/o una serie de imágenes de referencia;
- una indicación de un sentido de predicción, tal como la intrapredicción (también conocida como predicción temporal), la predicción intercapa, la predicción intervista, la predicción de síntesis de vistas (VSP) y la predicción intercomponente (que puede indicarse por imagen de referencia y/o por tipo de predicción y donde, en algunas realizaciones, la predicción intervista y la predicción de síntesis de vistas pueden considerarse conjuntamente como un sentido de predicción) y/o
- una indicación de un tipo de imagen de referencia, tal como una imagen de referencia a corto plazo y/o una imagen de referencia a largo plazo y/o una imagen de referencia intercapa (que puede indicarse por, p. ej., imagen de referencia)
- un índice de referencia a una lista de imágenes de referencia y/o cualquier otro identificador de una imagen de referencia (que puede indicarse por, p. ej., imagen de referencia y cuyo tipo puede depender del sentido de predicción y/o del tipo de imagen de referencia y que puede ir acompañado de otros datos relevantes, tales como la lista de imágenes de referencia o similares a los que aplique el índice de referencia);
- un componente de vector de movimiento horizontal (que puede indicarse por, p. ej., bloque de predicción o índice de referencia o similar);
- un componente de vector de movimiento vertical (que puede indicarse por, p. ej., bloque de predicción o índice de referencia o similar);
- uno o más parámetros, tales como la diferencia entre recuentos de orden de imágenes y/o una separación de cámara relativa entre la imagen que contiene o está asociada a los parámetros de movimiento y su imagen de referencia, que pueden usarse para ajustar a escala el componente de vector de movimiento horizontal y/o el componente de vector de movimiento vertical en uno o más procesos de predicción de vectores de movimiento (donde dichos uno o más parámetros pueden indicarse por, p. ej., cada imagen de referencia o cada índice de referencia o similar);
- unas coordenadas de un bloque al que aplica(n) los parámetros de movimiento y/o la información de movimiento, por ejemplo, las coordenadas de la muestra superior izquierda del bloque en unidades de muestra de luma;
- unas medidas (p. ej., una anchura y una altura) de un bloque al que aplica(n) los parámetros de movimiento y/o la información de movimiento.
En general, los mecanismos de predicción de vectores de movimiento, tales como aquellos mecanismos de predicción de vectores de movimiento que se han presentado anteriormente como ejemplos, pueden incluir una predicción o una herencia de ciertos parámetros de movimiento predefinidos o indicados.
Se puede considerar que un campo de movimiento asociado con una imagen comprende un conjunto de informaciones de movimiento producidas para cada bloque codificado de la imagen. Por ejemplo, un campo de movimiento puede ser accesible por coordenadas de un bloque. Un campo de movimiento puede usarse, por ejemplo, en la TMVP o en cualquier otro mecanismo de predicción de movimiento donde se use una fuente o una referencia para la predicción distinta de la imagen (de)codificada actual.
Se pueden aplicar distintas granularidades o unidades espaciales para representar y/o almacenar un campo de movimiento. Por ejemplo, se puede usar una cuadrícula regular de unidades espaciales. Por ejemplo, una imagen se puede dividir en unos bloques rectangulares de cierto tamaño (con la posible excepción de los bloques en los bordes de la imagen, tales como en el borde derecho y en el borde inferior). Por ejemplo, el tamaño de la unidad espacial puede ser igual al tamaño más pequeño para el que el codificador puede indicar un movimiento diferenciado en el flujo de bits, tal como un bloque de 4x4 en unidades de muestra de luma. Por ejemplo, se puede usar un denominado campo de movimiento comprimido, donde la unidad espacial puede ser igual a un tamaño predefinido o indicado, tal como un bloque de 16x16 en unidades de muestra de luma, cuyo tamaño puede ser más grande que el tamaño más pequeño para indicar un movimiento diferenciado. Por ejemplo, puede(n) implementarse un codificador y/o un decodificador de HEVC de una manera tal que se realice una reducción de almacenamiento de datos de movimiento (MDSR) o una compresión de campo de movimiento para cada campo de movimiento decodificado (antes de usarse el campo de movimiento para realizar cualquier predicción entre imágenes). En una implementación de HEVC, la MDSR puede reducir la granularidad de los datos de movimiento a bloques de 16x16 en unidades de muestra de luma manteniendo el movimiento aplicable a la muestra superior izquierda del bloque de 16x16 en el campo de movimiento comprimido. El codificador puede codificar un(as) indicación(ones) relacionada(s) con la unidad espacial del campo de movimiento comprimido como uno o más elementos sintácticos y/o valores de elemento sintáctico en, por ejemplo, una estructura sintáctica a nivel de secuencia, tal como un conjunto de parámetros de vídeo o un conjunto de parámetros de secuencia. En algunos métodos y/o dispositivos de (de)codificación, un campo de movimiento puede representarse y/o almacenarse según la partición en bloques de la predicción de movimiento (p. ej., según unidades de predicción del estándar de HEVC). En algunos métodos y/o dispositivos de (de)codificación se puede aplicar una combinación de una cuadrícula regular y una partición de bloques para que el movimiento que esté asociado a particiones que son mayores que un tamaño de unidad espacial predefinido o indicado se represente y/o almacene asociado a esas particiones, mientras que el movimiento que esté asociado a particiones que son más pequeñas que, o no están alineadas con, una cuadrícula o un tamaño de unidad espacial predefinido o indicado se represente y/o almacene para las unidades predefinidas o indicadas.
La codificación de vídeo escalable puede referirse a la estructura de codificación donde un flujo de bits puede contener múltiples representaciones del contenido, por ejemplo, a diferentes tasas de bits, resoluciones o tasas de fotogramas. En estos casos, el receptor puede extraer la representación deseada dependiendo de sus características (p. ej., resolución que coincida mejor con el dispositivo de visualización). Alternativamente, un servidor o un elemento de red puede extraer las porciones del flujo de bits para transmitirse al receptor dependiendo de, p. ej., las características de red o capacidades de procesamiento del receptor. Una representación decodificada significativa puede producirse al decodificar solo ciertas partes de un flujo de bits escalable. Un flujo de bits escalable consiste típicamente en una “ capa base” que proporciona el vídeo de calidad más baja disponible y una o más capas de mejora que mejoran la calidad de vídeo cuando se reciben y decodifican junto con las capas inferiores. Para mejorar la eficiencia de codificación para las capas de mejora, la representación codificada de esa capa depende típicamente de las capas inferiores. Por ejemplo, el movimiento y la información de modo de la capa de mejora pueden predecirse a partir de capas inferiores. Similarmente, los datos de píxeles de las capas inferiores pueden usarse para crear predicción para la capa de mejora.
En algunos esquemas de codificación de vídeo escalable, una señal de vídeo puede codificarse en una capa base y una o más capas de mejora. Una capa de mejora puede mejorar, por ejemplo, la resolución temporal (es decir, la tasa de fotogramas), la resolución espacial o simplemente la calidad del contenido de vídeo representado por otra capa o parte de la misma. Cada capa junto con todas sus capas dependientes es una representación de la señal de vídeo, por ejemplo, a una determinada resolución espacial, resolución temporal y nivel de calidad. En este documento, se hace referencia a una capa escalable junto con todas sus capas dependientes como una “ representación de capa escalable” . La porción de un flujo de bits escalable correspondiente a una representación de capa escalable puede extraerse y decodificarse para producir una representación de la señal original a cierta fidelidad.
Los modos de escalabilidad o las dimensiones de escalabilidad pueden incluir, aunque no de forma limitativa, los siguientes:
- Escalabilidad de calidad: Las imágenes de capa base se codifican a una calidad más baja que las imágenes de la capa de mejora, lo que puede lograrse, por ejemplo, utilizando un valor de parámetro de cuantificación mayor (es decir, un tamaño de etapa de cuantificación mayor para la cuantificación de coeficientes de transformada) en la capa base que en la capa de mejora. La escalabilidad de calidad se puede categorizar de forma adicional en una escalabilidad de grano fino o de granularidad fina (FGS), escalabilidad de grano medio o de granularidad media (MGS), y/o escalabilidad de grano grueso o de granularidad gruesa (CGS), como se describe a continuación.
- Escalabilidad espacial: Las imágenes de capa base se codifican a una resolución más baja (es decir, tienen menos muestras) que las imágenes de la capa de mejora. La escalabilidad espacial y la escalabilidad de calidad, particularmente su tipo de escalabilidad de grano grueso, a veces se pueden considerar el mismo tipo de escalabilidad.
- Escalabilidad de profundidad de bits: las imágenes de capa base se codifican a menor profundidad de bits (p. ej., 8 bits) que las imágenes de la capa de mejora (p. ej., 10 o 12 bits).
- Escalabilidad de intervalo dinámico: las capas escalables representan un intervalo dinámico diferente y/o unas imágenes obtenidas usando una función de mapeo de tonos diferente y/o una función de transferencia óptica diferente.
- Escalabilidad de formato de croma: las imágenes de capa base proporcionan una resolución espacial más baja en matrices de muestras de croma (p. ej., codificadas en formato de croma 4:2:0) que las imágenes de la capa de mejora (p.ej., formato 4:4:4).
- Escalabilidad de gama de colores: las imágenes de capa de mejora tienen un rango de representación de color más rico/más amplio que el de las imágenes de capa base - por ejemplo, la capa de mejora puede tener una gama de colores de UHDTV (ITU-R BT.2020) y la capa base pueden tener la gama de colores<i>TU-R BT.709.
- Escalabilidad de vista, que también puede denominarse codificación de múltiples vistas. La capa base representa una primera vista, mientras que una capa de mejora representa una segunda vista. Una vista puede definirse como una secuencia de imágenes que representa una cámara o un punto de vista. Puede considerarse que en vídeo estereoscópico o de dos vistas, se presenta una secuencia o vista de vídeo para el ojo izquierdo mientras se presenta una vista en paralelo para el ojo derecho.
- Escalabilidad de profundidad, que también puede denominarse codificación de profundidad mejorada. Una capa o algunas capas de un flujo de bits pueden representar la vista o vistas de textura, mientras que otra capa o capas pueden representar la vista o vistas de profundidad.
- Escalabilidad de la región de interés (como se describe a continuación).
- Escalabilidad de entrelazado a progresivo (también conocida como escalabilidad de campo a fotograma): El material de contenido de origen entrelazado codificado de la capa base se mejora con una capa de mejora para representar contenido de origen progresivo. El contenido de origen entrelazado codificado en la capa base puede comprender campos codificados, fotogramas codificados que representan pares de campos o una mezcla de ellos. En la escalabilidad de entrelazado a progresivo, la imagen de la capa base puede remuestrearse para que se convierta en una imagen de referencia adecuada para una o más imágenes de la capa de mejora.
- Escalabilidad de códec híbrido (también conocida como escalabilidad estándar de codificación): En la escalabilidad de códec híbrido, la sintaxis de flujo de bits, la semántica y el proceso de decodificación de la capa base y la capa de mejora se especifican en diferentes estándares de codificación de vídeo. Por lo tanto, las imágenes de la capa base se codifican según un estándar o formato de codificación diferente que las imágenes de la capa de mejora. Por ejemplo, la capa base puede codificarse según H.264/AVC y una capa de mejora puede codificarse según una ampliación multicapa de HEVC.
Debe entenderse que muchos de los tipos de escalabilidad pueden combinarse y aplicarse juntos. Por ejemplo, la escalabilidad de gama de colores y la escalabilidad de profundidad de bits se pueden combinar.
El término capa puede usarse en contexto de cualquier tipo de escalabilidad, incluidas escalabilidad de vista y mejoras de profundidad. Una capa de mejora puede referirse a cualquier tipo de mejora, tal como SNR, espacial, de múltiples vistas, profundidad, profundidad de bits, formato de croma y/o mejora de gama de colores. Una capa base puede referirse a cualquier tipo de una secuencia de vídeo de base, tal como una vista de base, una capa base para la escalabilidad de SNR/espacial, o una vista de base de textura para la codificación de vídeo de profundidad mejorada.
Algunos planes de codificación de vídeo escalables pueden requerir que las imágenes IRAP estén alineadas a través de las capas de una manera tal que todas las imágenes en una unidad de acceso sean imágenes IRAP o que ninguna imagen de una unidad de acceso sea una imagen IRAP. Otros planes de codificación de vídeo escalables, tales como las ampliaciones multicapa de la HEVC, pueden permitir imágenes IRAP que no estén alineadas, es decir, que una o más imágenes en una unidad de acceso sean imágenes IRAP, mientras que una o más otras imágenes en una unidad de acceso no sean imágenes IRAP. Pueden usarse flujos de bits escalables con imágenes IRAP o similares que no estén alineadas a través de las capas para, por ejemplo, proporcionar unas imágenes IRAP más frecuentes en la capa base, donde pueden tener un tamaño codificado más pequeño debido a, por ejemplo, una menor resolución espacial. Puede incluirse un proceso o mecanismo para el arranque por capas de la decodificación en un esquema de decodificación de vídeo. Por lo tanto, los decodificadores pueden iniciar la decodificación de un flujo de bits cuando una capa base contiene una imagen IRAP y empieza a decodificar por etapas otras capas cuando contienen imágenes IRAP. En otras palabras, en un comienzo por capas del mecanismo o proceso de decodificación, los decodificadores aumentan progresivamente el número de capas decodificadas (donde las capas pueden representar una mejora en la resolución espacial, el nivel de calidad, unas vistas, unos componentes adicionales, tales como la profundidad, o una combinación) a medida que en el proceso de decodificación se decodifican unas imágenes posteriores procedentes de unas capas de mejora adicionales. El aumento progresivo del número de capas decodificadas puede percibiese, por ejemplo, como una mejora progresiva de la calidad de la imagen (en caso de escalabilidad de calidad y espacial).
Un remitente, una pasarela, un cliente u otra entidad puede seleccionar las capas y/o subcapas transmitidas de un flujo de bits de vídeo escalable. Las expresiones extracción de capa, extracción de capas o reducción de capas pueden referirse a la transmisión de menos capas de las que hay disponibles en el flujo de bits recibido por el remitente, la pasarela, el cliente u otra entidad. Aumento de capas puede referirse a la transmisión de una(s) capa(s) adicional(es) en comparación con las transmitidas antes del aumento de capas realizado por el remitente, la pasarela, el cliente u otra entidad, es decir, el reinicio de la transmisión de una o más capas cuya transmisión se interrumpió anteriormente en la reducción de capas. De manera parecida a la reducción y/o al aumento de capas, el remitente, la pasarela, el cliente u otra entidad puede realizar una reducción y/o un aumento de subcapas temporales. El remitente, la pasarela, el cliente u otra entidad también puede realizar una reducción y/o un aumento tanto de capas como de subcapas. La reducción y/o el aumento de capas y subcapas se puede(n) llevar a cabo en la misma unidad de acceso o similar (i.e., de manera prácticamente simultánea) o se puede(n) llevar a cabo en distintas unidades de acceso o similares (i.e., prácticamente en momentos diferenciados).
La escalabilidad se puede posibilitar de dos maneras básicas. O bien introduciendo nuevos modos de codificación para realizar la predicción de valores de píxeles o sintaxis a partir de capas inferiores de la representación escalable o colocando las imágenes de capa inferior a una memoria intermedia de imagen de referencia (p. ej., una memoria intermedia de imágenes decodificadas, DPB) de la capa superior. El primer enfoque puede ser más flexible y, por lo tanto, puede proporcionar una mejor eficiencia de codificación en la mayoría de los casos. Sin embargo, la segunda escalabilidad basada en fotograma de referencia, el enfoque puede implementarse eficientemente con cambios mínimos en los códecs de una sola capa mientras aún se consigue la mayoría de las ganancias de eficiencia de codificación disponibles. Esencialmente, un códec de escalabilidad basado en fotograma de referencia puede implementarse utilizando la misma implementación de hardware o software para todas las capas, teniendo cuidado de la gestión de la DPB por medios externos.
Un codificador de vídeo escalable para la escalabilidad de calidad (también conocida como la Signal-to-Noise ([señal a ruido o SNR]) y/o escalabilidad espacial puede implementarse como sigue. Para una capa base, puede usarse un codificador y decodificador de vídeo no escalable convencional. Las imágenes reconstructivas/decodificadas de la capa base se incluyen en la memoria intermedia de imágenes de referencia y/o en las listas de imágenes de referencia para una capa de mejora. En caso de escalabilidad espacial, la imagen de capa base reconstruida/decodificada puede sobremuestrearse antes de su inserción en las listas de imágenes de referencia para una imagen de capa de mejora. Las imágenes decodificadas de la capa base pueden insertarse en una lista o listas de imágenes de referencia para la codificación/decodificación de una imagen de capa de mejora similarmente a las imágenes de referencia decodificadas de la capa de mejora. Por consiguiente, el codificador puede elegir una imagen de referencia de capa base como una referencia de interpredicción e indicar su uso con un índice de imagen de referencia en el flujo de bits codificado. El decodificador decodifica del flujo de bits, por ejemplo, a partir de un índice de imagen de referencia, que se usa una imagen de capa base como referencia interpredicción para la capa de mejora. Cuando se usa una imagen de capa base decodificada como referencia de predicción para una capa de mejora, se denomina imagen de referencia intercapa.
Aunque el párrafo anterior describe un códec de vídeo escalable con dos capas de escalabilidad con una capa de mejora y una capa base, debe entenderse que la descripción puede generalizarse a cualesquiera dos capas en una jerarquía de escalabilidad con más de dos capas. En este caso, una segunda capa de mejora puede depender de una primera capa de mejora en los procesos de codificación y/o decodificación y, por lo tanto, la primera capa de mejora puede considerarse como la capa base para la codificación y/o decodificación de la segunda capa de mejora. Además, debe entenderse que puede haber imágenes de referencia intercapa de más de una capa en una memoria intermedia de imágenes de referencia o listas de imágenes de referencia de una capa de mejora, y cada una de estas imágenes de referencia intercapa puede considerarse que reside en una capa base o una capa de referencia para la capa de mejora que se codifica y/o decodifica. Además, hay que entender que pueden tener lugar, en vez o adicionalmente, otros tipos de procesamiento intercapa distintos del sobremuestreo de imágenes de capa de referencia. Por ejemplo, la profundidad de bits de las muestras de la imagen de capa de referencia puede convertirse en la profundidad de bits de la capa de mejora y/o los valores de muestra pueden someterse a una asignación del espacio de color de la capa de referencia al espacio de color de la capa de mejora.
Un esquema de codificación y/o decodificación de vídeo escalable puede usar codificación y/o decodificación de múltiples bucles, que puede caracterizarse como sigue. En la codificación/decodificación, una imagen de capa base puede reconstruirse/decodificarse para usarse como una imagen de referencia de compensación de movimiento para las imágenes posteriores, en orden de codificación/decodificación, dentro de la misma capa o como referencia para la predicción intercapa (o intervista o intercomponente). La imagen de la capa base reconstruida/decodificada puede almacenarse en la DPB. Una imagen de capa de mejora puede reconstruirse/decodificarse de la misma manera para usarse como una imagen de referencia de compensación de movimiento para las imágenes posteriores, en orden de codificación/decodificación, dentro de la misma capa o como referencia para la predicción intercapa (o intervista o intercomponente) para las capas de mejora superiores, si la hay. Además de los valores de muestra de reconstrucción/decodificados, los valores de elementos de sintaxis de la capa base/de referencia o las variables derivadas de los valores de elementos de sintaxis de la capa base/de referencia pueden usarse en la predicción intercapa/intercomponente/intervista.
La predicción intercapa puede definirse como una predicción de una manera que es dependiente de unos elementos de dato (p. ej., unos valores de muestra o unos vectores de movimiento) de unas imágenes de referencia de una capa diferente de la capa de la imagen actual (que se está codificando o decodificando). Existen muchos tipos de predicción intercapa, y se pueden aplicar en un codificador/decodificador de vídeo escalable. Los tipos disponibles de predicción intercapa pueden depender, por ejemplo, del perfil de codificación según el cual se esté codificando el flujo de bits o una capa particular dentro del flujo de bits o, cuando se esté decodificando, del perfil de codificación al que se indica que se ajusta el flujo de bits o una capa particular dentro del flujo de bits. Alternativa o adicionalmente, los tipos disponibles de predicción intercapa pueden depender de los tipos de escalabilidad o del tipo de códec escalable o de modificación de estándar de codificación de vídeo o (p. ej., SHVC, MV-HEVC o 3D-HEVC) que se esté utilizando.
Una capa de referencia directa puede definirse como una capa que puede usarse para la predicción intercapa de otra capa para la que la capa es la capa de referencia directa. Una capa predicha directa puede definirse como una capa para la que otra capa es una capa de referencia directa. Una capa de referencia indirecta puede definirse como una capa que no es una capa de referencia directa de una segunda capa pero es una capa de referencia directa de una tercera capa que es una capa de referencia directa o una capa de referencia indirecta de una capa de referencia directa de la segunda capa para la cual la capa es la capa de referencia indirecta. Una capa predicha indirecta puede definirse como una capa para la que otra capa es una capa de referencia indirecta. Una capa independiente se puede definir como una capa que no tiene capas de referencia directa. En otras palabras, una capa independiente no se predice usando una predicción intercapa. Una capa no de base se puede definir como cualquier otra capa que no sea la capa base, y la capa base se puede definir como la capa más baja en el flujo de bits. Una capa no de base independiente puede definirse como una capa que es tanto una capa independiente como una capa no de base.
En algunos casos, los datos en una capa de mejora pueden truncarse después de una cierta ubicación, o incluso en posiciones arbitrarias, donde cada posición de truncamiento puede incluir datos adicionales que representan una calidad visual cada vez mayor. Dicha escalabilidad se denomina ine-grained (granularity) scalability (escalabilidad de grano fino [granularidad] - FGS).
Similarmente a la MVC, en MV-HEVC, las imágenes de referencia intervista pueden incluirse en la lista o listas de imágenes de referencia de la imagen actual que se está codificando o decodificando. La SHVC utiliza una operación de decodificación multilazo (a diferencia de la ampliación de SVC de H.264/AVC). Puede considerarse que la SHVC usa un enfoque basado en índices de referencia, es decir, una imagen de referencia intercapa puede estar incluida en una o más listas de imágenes de referencia de la imagen actual que se está codificando o decodificando (tal y como se ha descrito anteriormente).
Para la codificación de capas de mejora, pueden usarse los mismos conceptos y herramientas de codificación de la capa base de HEVC en la SHVC, la MV-HEVC y/o similares. Sin embargo, las herramientas de predicción intercapa adicionales, que emplean datos ya codificados (que incluyen muestras de imágenes reconstruidas y parámetros de movimiento, también conocidos como información de movimiento) en la capa de referencia para codificar eficientemente una capa de mejora, pueden integrarse en el códec SHVC, MV-HEVC y/o similares.
Una imagen constituyente puede definirse como tal parte de una imagen (de)codificada que la encierra que corresponde a una representación de una imagen de entrada completa. Además de la imagen constituyente, la imagen (de)codificada que la encierra puede comprender otros datos, tales como otra imagen constituyente.
Puede definirse que el empaquetamiento de fotogramas comprende disponer más de una imagen de entrada, que puede(n) denominarse fotogramas constituyentes o imágenes constituyentes (de entrada), en una imagen de salida. En general, el empaquetamiento de fotogramas no está limitado a ningún tipo particular de fotogramas constituyentes, o bien los fotogramas constituyentes no necesitan tener una relación particular entre sí. En muchos casos, el empaquetamiento de fotogramas se usa para disponer los fotogramas constituyentes de un videoclip estereoscópico en una única secuencia de imágenes. La disposición puede incluir colocar las imágenes de entrada en unas zonas que no se solapan espacialmente dentro de la imagen de salida. Por ejemplo, en una disposición yuxtapuesta, dos imágenes de entrada se colocan dentro de una imagen de salida de manera horizontalmente adyacente la una de la otra. La disposición también puede incluir la partición de una o más imágenes de entrada en dos o más particiones de fotograma constituyente y colocar las particiones de fotograma constituyente en unas zonas que no se solapan espacialmente dentro de la imagen de salida. La imagen de salida o una secuencia de imágenes de salida empaquetadas en cuanto a los fotogramas puede ser codificada en un flujo de bits por, por ejemplo, un codificador de vídeo. El flujo de bits puede ser decodificado por, por ejemplo, un decodificador de vídeo. El decodificador, o una operación de posprocesamiento después de la decodificación, puede extraer de la(s) imagen(enes) decodificada(s) los fotogramas constituyentes decodificados para, por ejemplo, visualizarlos.
La predicción de muestras intervista entre los fotogramas constituyentes empaquetados en cuanto a los fotogramas puede permitirse con la herramienta de copia intrabloque de la siguiente manera. Un primer fotograma constituyente que representa una primera vista y un segundo fotograma constituyente que representa una segunda vista del mismo contenido multivista (p. ej., estereoscópico) se empaquetan en cuanto a los fotogramas. Se permite una predicción de copias intrabloque del primer fotograma constituyente al segundo fotograma constituyente en la codificación, pero en la codificación no está permitida la predicción de copias intrabloque del segundo fotograma constituyente al primer fotograma constituyente. Así pues, la predicción de muestras intervista se consigue básicamente aplicando la predicción de copias intrabloque entre fotogramas constituyentes de distintas vistas. El rendimiento de compresión mejora, por tanto, en comparación con una codificación de contenido multivista empaquetado en cuanto a los fotogramas sin una predicción de copias intrabloque.
Las expresiones vídeo de 360 grados o vídeo de realidad virtual (RV) pueden usarse indistintamente. Pueden referirse en general a un contenido de vídeo que proporciona un campo de visión tan grande que, en las disposiciones de visualización típicas, solo se visualiza una parte del vídeo en un único instante. Por ejemplo, el vídeo de RV se puede ver en un visor montado en la cabeza (HMD) que puede ser capaz de visualizar, por ejemplo, un campo de visión de unos 100 grados. El subconjunto espacial del contenido de vídeo de RV que hay a visualizar puede seleccionarse basándose en la orientación del HMD. En otro ejemplo, se supone un típico entorno de visionado en panel plano, en donde, por ejemplo, se puede visualizar un campo de visión de hasta 40 grados. Cuando un contenido de FOV amplio (p. ej., de tipo ojo de pez) se visualiza en una pantalla de este tipo, puede que se prefiera visualizar un subconjunto espacial en vez de toda la imagen.
El contenido de imagen o vídeo de 360 grados se puede adquirir y preparar de, por ejemplo, la siguiente manera. Un conjunto de cámaras o un dispositivo de cámara con múltiples lentes y sensores puede captar unas imágenes o un vídeo. La adquisición da como resultado un conjunto de señales digitales de imagen/vídeo. Las cámaras/lentes normalmente abarcan todas las direcciones alrededor del punto central del conjunto de cámaras o del dispositivo de cámara. Las imágenes de la misma instancia temporal se unen, proyectan y mapean sobre un fotograma de RV empaquetado. El desglose del proceso de unión, proyección y mapeo de imágenes se ha ilustrado con la Figura 5 y se describe de la siguiente manera. Unas imágenes de entrada se unen y proyectan sobre una estructura de proyección tridimensional, tal como una esfera o un cubo. Se puede considerar que la estructura de proyección comprende una o más superficies, tales como un(os) plano(s) o una(s) parte(s) del (de los) mismo(s). Una estructura de proyección puede definirse como una estructura tridimensional que consta de una o más superficies sobre las que se proyecta el contenido de imágenes/vídeo de RV captado y a partir de la cual se puede formar un respectivo fotograma proyectado. Los datos de imagen sobre la estructura de proyección se disponen además para formar un fotograma proyectado bidimensional. El término proyección puede definirse como un proceso mediante el cual se proyecta un conjunto de imágenes de entrada sobre un fotograma proyectado. Puede haber un conjunto predefinido de formatos de representación del fotograma proyectado, incluidos, por ejemplo, un panorama equirrectangular y un formato de representación de mapa cúbico.
Se puede aplicar un mapeo por regiones (también conocido como empaquetamiento por regiones) para asignar el fotograma proyectado a uno o más fotogramas de RV empaquetados (también conocido[s] como imágenes empaquetadas). En algunos casos, puede entenderse que el mapeo por regiones es equivalente a extraer dos o más regiones del fotograma proyectado, aplicar -opcionalmente- una transformación geométrica (tal como girar, duplicar y/o remuestrear) a las regiones y colocar las regiones transformadas en unas zonas que no se solapen espacialmente dentro del fotograma de RV empaquetado. Si no se aplica el mapeo por regiones, el fotograma de RV empaquetado es idéntico al fotograma proyectado. De lo contrario, unas regiones del fotograma proyectado se asignan a un fotograma de RV empaquetado indicando la ubicación, la forma y el tamaño de cada región en el fotograma de RV empaquetado. El término mapeo puede definirse como un proceso mediante el cual un fotograma proyectado se asigna a un fotograma de RV empaquetado. El término fotograma de RV empaquetado puede definirse como un fotograma que es el resultado de un mapeo de un fotograma proyectado. En la práctica, las imágenes de entrada se pueden convertir en un fotograma de RV empaquetado en un proceso que no tiene etapas intermedias.
La información de empaquetamiento por regiones puede codificarse como unos metadatos en o a lo largo del flujo de bits, por ejemplo, como un(os) mensaje(s) SEI de empaquetamiento por regiones y/o como unas cajas de empaquetamiento por regiones en un archivo que contiene el flujo de bits. Por ejemplo, la información de empaquetamiento puede comprender un mapeo por regiones de un formato fuente predefinido o indicado al formato de fotograma empaquetado, por ejemplo, de un fotograma proyectado a un fotograma de RV empaquetado, tal y como se ha descrito anteriormente. La información de mapeo por regiones puede comprender para, por ejemplo, cada región mapeada un rectángulo de origen en el fotograma proyectado y un rectángulo de destino en el fotograma de RV empaquetado, donde unas muestras dentro del rectángulo de origen se asignan al rectángulo de destino, y los rectángulos pueden indicarse mediante, por ejemplo, las ubicaciones de la esquina superior izquierda y la esquina inferior derecha. El mapeo puede comprender un remuestreo. Adicional o alternativamente, la información de empaquetamiento puede comprender uno o más de los siguientes elementos: la orientación de la estructura de proyección tridimensional en relación con un sistema de coordenadas, una indicación del formato de proyección de RV que se está usando, una clasificación de calidades por regiones que indique la clasificación de calidades de imagen entre las regiones y/o unas primera y segundas secuencias de regiones espaciales, una o más operaciones de transformación, tal como una rotación de 90, 180 o 270 grados, una duplicación horizontal y una duplicación vertical. La semántica de la información de empaquetamiento puede especificarse de una manera tal que sea indicativa para cada ubicación de muestra dentro de las regiones empaquetadas de una imagen decodificada que sea la respectiva ubicación en coordenadas esféricas.
Unos metadatos de clasificación de calidades por regiones pueden estar presentes en o a lo largo de un flujo de bits de vídeo o de imágenes. Los valores de clasificación de calidades de las regiones en la clasificación de calidades pueden ser relativos a otras regiones en la clasificación de calidades del mismo flujo de bits o de la misma pista o de las mismas regiones en la clasificación de calidades de otras pistas. Los metadatos de clasificación de calidades por regiones se pueden indicar usando, por ejemplo, SphereRegionQualityRankingBox o 2DRegionQualityRankingBox, que se ha especificado que forman parte del formato de medios omnidireccional MPEG. SphereRegionQualityRankingBox proporciona unos valores de clasificación de calidades para unas regiones de esfera, es decir, unas regiones definidas en un dominio de esfera, mientras que 2DRegionQualityRankingBox proporciona unos valores de clasificación de calidades para unas regiones rectangulares en unas imágenes decodificadas (y, posiblemente, una región sobrante que cubra todas las zonas que están no cubiertas por ninguna de las regiones rectangulares). Los valores de clasificación de calidades indican un orden de calidad relativo de las regiones de clasificación de calidades. Cuando una región A de clasificación de calidades tiene un valor de clasificación de calidades distinto de cero que es menor que el de una región B de clasificación de calidades, la región A de clasificación de calidades tiene más calidad que la región B de clasificación de calidades. Cuando el valor de clasificación de calidades es distinto de cero, la calidad de imagen dentro de toda la región de clasificación de calidades indicada puede definirse como que es aproximadamente constante. En general, los límites de la esfera de clasificación de calidades o de las regiones 2D pueden coincidir o no con los límites de las regiones empaquetadas o con los límites de las regiones proyectadas especificadas en los metadatos de empaquetamiento por regiones.
El contenido panorámico de 360 grados (i.e., imágenes y vídeos) abarca horizontalmente todo el campo de visión de 360 grados alrededor de la posición de captación de un dispositivo de formación de imágenes. El campo de visión vertical puede variar y puede ser de, p ej., 180 grados. La imagen panorámica que abarca horizontalmente un campo de visión de 360 grados y verticalmente un campo de visión de 180 grados se puede representar mediante una esfera que se puede asignar a un cilindro delimitador que se puede cortar verticalmente para formar una imagen 2D (este tipo de proyección se conoce como proyección equirrectangular). En la Figura 6 se ilustra el proceso de formación de una imagen panorámica equirrectangular monoscópica. Un conjunto de imágenes de entrada, tales como unas imágenes de ojo de pez de un conjunto de cámaras o de un dispositivo de cámara con múltiples lentes y sensores, se une a una imagen esférica. La imagen esférica se proyecta además sobre un cilindro (sin las caras superior e inferior). El cilindro se despliega para formar un fotograma proyectado bidimensional. En la práctica se pueden combinar uno o más de los pasos presentados; por ejemplo, las imágenes de entrada pueden proyectarse directamente sobre un cilindro sin que haya una proyección intermedia sobre una esfera. Puede considerarse que la estructura de proyección para una panorámica equirrectangular es un cilindro que comprende una sola superficie.
En general, el contenido de 360 grados se puede mapear sobre distintos tipos de estructuras geométricas macizas, tales como un poliedro (i.e., un objeto sólido tridimensional que contenga caras poligonales planas, aristas rectas y esquinas o vértices puntiagudos, p. ej., un cubo o una pirámide), un cilindro (proyectando una imagen esférica sobre el cilindro, tal y como se ha descrito anteriormente en el caso de la proyección equirrectangular), un cilindro (directamente, sin proyectar primero sobre una esfera), un cono, etc. y luego se desenvuelve en un plano de imagen bidimensional.
En algunos casos, un contenido panorámico con un campo de visión horizontal de 360 grados, pero con un campo de visión vertical menor que 180 grados, puede considerarse un caso especial de proyección panorámica donde las zonas polares de la esfera no se han mapeado sobre el plano de imagen bidimensional. En algunos casos, una imagen panorámica puede tener un campo de visión horizontal menor que 360 grados y un campo de visión vertical de hasta 180 grados, mientras que, por lo demás, tiene las características del formato de proyección panorámica.
Los ojos humanos no son capaces de ver todo el espacio de 360 grados, sino que están restringidos a unos campos de visión horizontal y vertical máximos (HHFoV y HVFoV). Además, un dispositivo HMD tiene limitaciones técnicas que solo permiten ver un subconjunto de todo el espacio de 360 grados en las direcciones horizontal y vertical (DHFoV, DVFoV).
En cualquier momento, en un vídeo renderizado en un HMD por una aplicación se renderiza una parte del vídeo de 360 grados. Esta parte se define aquí como ventana gráfica. Una ventana gráfica es una ventana al mundo de 360 grados representada en el vídeo omnidireccional que se visualiza través de un visor de renderizado. Una ventana gráfica se caracteriza por tener unos FoV horizontal y vertical (VHFoV, VVFoV). En lo que sigue, VHFoV y VVFoV se abreviarán sencillamente como HFoV y VFoV.
Dependiendo de la aplicación, el tamaño de ventana gráfica puede corresponder al FoV de HMD o puede tener un tamaño más pequeño. En aras de la claridad, definimos como ventana gráfica principal la parte del espacio de 360 grados que ve un usuario en cualquier momento dado.
Cuando un flujo de bits multicapa, tal como un flujo de bits de HEVC en capas, se almacena en un archivo, tal como un archivo ISOBMFF, se puede permitir que se almacenen una o más capas en una pista. Por ejemplo, cuando un proveedor de contenidos desee proporcionar un flujo de bits multicapa que no esté destinado a la recuperación de subconjuntos, o cuando el flujo de bits se haya creado para unos pocos conjuntos predefinidos de capas de salida, donde cada capa corresponde a una vista (como 1, 2, 5 o 9 vistas), se pueden crear pistas en consecuencia.
Cuando un flujo de bits con múltiples subcapas (también conocido como flujo de bits multisubcapa), tal como un flujo de bits de HEVc con múltiples subcapas, se almacena en un archivo, tal como un archivo ISOBMFF, se puede permitir que se almacenen una o más subcapas en una pista, y se puede usar más de una pista para contener el flujo de bits. Por ejemplo, una pista puede contener únicamente ciertas subcapas, y no es necesario que contenga la subcapa más baja (p. ej., la subcapa con un TemporalId igual a 0 en la HEVC).
Unos extractores especificados en la norma ISO/IEC 14496-15 para H.264/AVC y la HEVC permiten una formación compacta de pistas que extraen los datos de unidad NAL por referencia. Un extractor es una estructura parecida a una unidad NAL. Se puede especificar que una estructura parecida a una unidad NAL comprenda una cabecera de unidad NAL y una carga útil de unidad NAL como cualquier unidad NAL, pero puede que la prevención de emulación de código de arranque (la cual es necesaria para una unidad NAL) no se siga en una estructura parecida a una unidad NAL. En el caso de la HEVC, un extractor contiene uno o más constructores. Un constructor de muestra extrae, por referencia, unos datos de unidad NAL de una muestra de otra pista. Un constructor en línea incluye datos de unidad NAL. Cuando un extractor es procesado por un lector de archivos que lo requiere, el extractor es reemplazado lógicamente por los bytes que son el resultado de resolver los constructores contenidos en su orden de aparición. Puede que no se permita una extracción anidada; por ejemplo, los bytes referenciados por un constructor de muestras no contendrán extractores; un extractor no referenciará, directa o indirectamente, otro extractor. Un extractor puede contener uno o más constructores para extraer datos de la pista actual o de otra pista que esté vinculada a la pista en la que reside el extractor por medio de una referencia de pista de tipo “ scal” . Los bytes de un extractor resuelto pueden representar una o más unidades NAL completas. Un extractor resuelto comienza con un campo de longitud válida y un una cabecera de unidad NAL. Los bytes de un constructor de muestras solo se copian de la única muestra identificada en la pista que se ha referenciado mediante la referencia de pista “ scal” indicada. La alineación tiene lugar en el tiempo de decodificación, es decir, solo se utiliza la tabla de tiempos para muestrear, seguido de un desfase contado en el número de muestras. Una pista de extractores puede definirse como una pista que contiene uno o más extractores.
Una pista de piezas especificada en la norma ISO/IEC 14496-15 permite el almacenamiento de uno o más conjuntos de piezas temporales constreñidas en cuanto al movimiento como una pista. Cuando una pista de piezas contiene piezas de una capa base de HEVC, se utiliza el tipo de entrada de muestra “ hvt1” . Cuando una pista de piezas contiene piezas de una capa no de base, se utiliza el tipo de entrada de muestra “ lht1” . Una muestra de una pista de piezas consta de una o más piezas completas en uno o más segmentos de corte completos. Una pista de piezas es independiente de cualquier otra pista de piezas que incluya unidades NAL VCL de la misma capa que esta pista de piezas. Una pista de piezas tiene una referencia de pista “tbas” a una pista base de piezas. La pista base de piezas no incluye unidades NAL VCL. Una pista base de piezas indica el ordenamiento de piezas utilizando una referencia de pista “ sabt” a las pistas de piezas. Una imagen codificada por HEVC que corresponde a una muestra en la pista base de piezas puede reconstruirse recopilando los datos codificados de las muestras alineadas en el tiempo de las pistas indicadas por la referencia de pista “ sabt” en el orden de las referencias de pista.
Un conjunto de piezas conforme a imágenes completas {track | bitstream} es un conjunto de piezas {track | bitstream} que se ajusta al formato {track | bitstream} de imagen completa. Aquí, la notación {optionA | optionB} ilustra unas alternativas, es decir, o bien la opción A, o bien la opción B, que se seleccionan sistemáticamente en todas las selecciones. Una pista de conjunto de piezas conforme a imágenes completas se puede reproducir como cualquier pista de imagen completa usando el proceso de análisis y decodificación de pistas de imagen completa. Un flujo de bits conforme a imágenes completas se puede decodificar como cualquier flujo de bits de imagen completa utilizando el proceso de decodificación de flujos de bits de imagen completa. Una pista de imagen completa es una pista que representa un flujo de bits original (incluidas todas sus piezas). Un flujo de bits de conjunto de piezas es un flujo de bits que contiene un conjunto de piezas de un flujo de bits original, pero que no representa todo el flujo de bits original. Una pista de conjunto de piezas es una pista que representa un conjunto de piezas de un flujo de bits original, pero que no representa todo el flujo de bits original.
Una pista de conjunto de piezas conforme a imágenes completas puede comprender unos extractores tal y como se han definido para la HEVC. Un extractor puede ser, por ejemplo, un constructor en línea que incluya una cabecera de segmento de corte y un constructor de muestras que extraiga datos de vídeo codificados para un conjunto de piezas de una pista de imagen completa referenciada.
Una subimagen puede definirse como una región, tal como una pieza o un rectángulo de pieza, de una imagen. Una pista de subimágenes puede definirse como una pista que representa una secuencia de subimágenes, es decir, una región de una secuencia de imágenes, y se ajusta a un formato de pista convencional, tal como el “ hvc1” o el “ hev1” definido para la HEVC en la norma ISO/IEC 14496-15. En un enfoque para generar pistas de subimágenes, una secuencia de imágenes de origen se divide en unas secuencias de subimágenes antes de codificarse. Una secuencia de subimágenes se codifica luego independientemente de otras secuencias de subimágenes como un flujo de bits monocapa, tal como el flujo de bits de perfil principal de HEVC. El flujo de bits monocapa codificado se encapsula en una pista de subimágenes. Tal y como se define más adelante, el flujo de bits para una pista de subimágenes puede codificarse con unas imágenes constreñidas en cuanto al movimiento. En otro enfoque para generar pistas de subimágenes, una secuencia de imágenes de origen se codifica con unos conjuntos de piezas constreñidos en cuanto al movimiento en un flujo de bits, se genera un flujo de bits de conjuntos de piezas conformes a imágenes completas a partir del flujo de bits y se genera una pista de subimágenes encapsulando el flujo de bits de conjunto de piezas conforme a imágenes completas en una pista. Las pistas de subimágenes generadas de esta manera comprenden imágenes constreñidas en cuanto al movimiento.
Una pista recopiladora puede definirse como una pista que extrae implícita o explícitamente MCTS o subimágenes de otras pistas. Una pista recopiladora puede ser una pista conforme a imágenes completas. Una pista recopiladora puede, por ejemplo, extraer MCTS o subimágenes para formar una secuencia de imágenes codificadas donde los MCTS o las subimágenes están dispuestas formando una cuadrícula. Por ejemplo, cuando una pista recopiladora extrae dos MCTS o subimágenes, éstos pueden disponerse formando una cuadrícula de 2x1 de MCTS o subimágenes. Una pista base de piezas puede considerarse una pista recopiladora, y una pista de extractores que extrae MCTS o subimágenes de otras pistas puede considerarse una pista recopiladora. Una pista recopiladora también puede denominarse pista de recopilación. Una pista que es una fuente para extraerla a una pista recopiladora puede denominarse pista de elementos de recopilación.
La predicción intervista puede proporcionar una ganancia de compresión significativa para la codificación de vídeo estereoscópica y multivista, pero convencionalmente solo está admitida en algunos perfiles de estándares de codificación de vídeo, tal como el perfil Multiview Main de la HEVC. En la predicción intervista constreñida, la codificación de vídeo estereoscópico o multivista está constreñida de una manera tal que el contenido codificado puede reescribirse para que puedan usarse uno o más decodificadores monocapa y monovista, tales como el(los) decodificador(es) de perfil Main de HEVC. Solo se puede seleccionar un subconjunto limitado de imágenes, tales como imágenes IRAP de la HEVC, de una vista independiente para usarse como imágenes de referencia en la codificación de una vista predicha. Se puede generar un flujo de bits monocapa y monovista para la vista predicha incluyendo el subconjunto limitado de imágenes de la vista independiente en el flujo de bits de la vista predicha. Cuando se genera el flujo de bits monocapa y monovista de la vista predicha puede ser necesaria una reescritura de las estructuras sintácticas de alto nivel, tales como los conjuntos de parámetros y las cabeceras de corte. Se pueden generar unas pistas conformes a imágenes completas para que actúen de guía en la reescritura, y pueden comprender unos extractores para incluir datos de imagen codificados del subconjunto limitado de la vista independiente y pueden comprender unos constructores en línea para reescribir las estructuras sintácticas de alto nivel. La reescritura del flujo de bits de vista predicho se puede realizar resolviendo las pistas conformes a imágenes completas, es decir, resolviendo los extractores y los constructores en línea que haya en las mismas.
Un identificador uniforme de recurso (URI) puede definirse como una cadena de caracteres que se utiliza para identificar un nombre de un recurso. Tal identificación permite una interacción con unas representaciones del recurso por una red, utilizando unos protocolos específicos. Un URI se define a través de un plan que especifica para el mismo una sintaxis concreta y un protocolo asociado. El localizador uniforme de recurso (URL) y el nombre uniforme de recurso (URN) son formas de URI. Un URL se puede definir como un URI que identifica un recurso web y especifica los medios de actuación en u obtención de la representación del recurso, especificando tanto su mecanismo de acceso principal como su ubicación de red. Un URN se puede definir como un<u>R<i>que identifica un recurso por su nombre en un espacio de nombres particular. Se puede usar un URN para identificar un recurso sin insinuar su ubicación o cómo acceder a él.
En muchos sistemas de comunicación o transmisión de vídeo, mecanismos de transporte y formatos de archivo contenedor multimedia existen unos mecanismos para transmitir o almacenar una capa de escalabilidad por separado de otra capa de escalabilidad del mismo flujo de bits, por ejemplo, para transmitir o almacenar la capa base por separado de la(s) capa(s) de mejora. Se puede considerar que las capas se almacenan o transmiten a través de canales lógicos independientes. Por ejemplo, en el ISOBMFF, la capa base se puede almacenar como una pista, y cada capa de mejora se puede almacenar en otra pista, que se puede vincular a la pista de la capa base utilizando unas denominadas referencias de pista.
Muchos sistemas de comunicación o transmisión de vídeo, mecanismos de transporte y formatos de archivo contenedor multimedia proporcionan unos medios para asociar entre sí unos datos codificados de unos canales lógicos independientes, tales como de distintas pistas o sesiones. Por ejemplo, existen mecanismos para asociar entre sí unos datos codificados de la misma unidad de acceso. Por ejemplo, se pueden proporcionar unos tiempos de decodificación o de salida en el formato de archivo contenedor o en el mecanismo de transporte, y se puede considerar que unos datos codificados con el mismo tiempo de decodificación o de salida forman una unidad de acceso.
En tiempos recientes se ha venido utilizando mucho el protocolo de transferencia de hipertexto (HTTP) para distribuir contenido multimedia en tiempo real por internet, tal como en aplicaciones de transmisión en continuo de vídeo. A diferencia del uso del protocolo de transporte en tiempo real (RT<p>) en vez del protocolo de datagramas de usuario (UDP), el HTTP es fácil de configurar, y normalmente se le permite atravesar cortafuegos y traductores de direcciones de red (NAT), lo que lo hace atractivo para aplicaciones de transmisión en continuo multimedia.
Se han lanzado en el mercado varias soluciones comerciales para la transmisión en continuo adaptativa a través del HTTP, tal como Smooth Streaming de Microsoft®, Adaptive HTTP Live Streaming de Apple ® y Dynamic Streaming de Adobe ®, y se han llevado a cabo proyectos de estandarización. La transmisión en continuo adaptativa de HTTP (AHS) se estandarizó por primera vez en la versión 9 del servicio de transmisión en continuo por conmutación de paquetes (PSS) del Proyecto de Asociación de Tercera Generación (3GPP) (TS 26.234, versión 9: “Transparent end-to-end packet-switched streaming service [PSS]; protocols and codecs” del 3GPP). El MPEG tomó la versión 9 de AHS de 3GPP como punto de partida para desarrollar el estándar DASH del MPEG (ISO/IEC 23009-1: “ Dynamic adaptive streaming over HTTP [DASH]-Part 1: Media presentation description and segment formats” , estándar internacional, 2a edición, 2014). El 3GPp siguió trabajando en la transmisión en continuo adaptativa de HTTP en comunicación con el MPEG y publicó el estándar 3GP-dAs H (Dynamic Adaptive Streaming over HTTP; 3GPP TS 26.247:: “ Transparent end-to-end packet-switched streaming Service [PSS]; Progressive download and dynamic adaptive Streaming over HTTP [3GP-DASH]” del 3GPP). Los estándares D<a>S<h>del MPEG y 3GP-DASH son técnicamente muy parecidos y, por lo tanto, pueden denominarse colectivamente DASH. A continuación se describen algunos conceptos, formatos y operaciones de la DASH como ejemplo de un sistema de transmisión en continuo de vídeo en donde se pueden implementar las realizaciones. Los aspectos de la invención no se limitan a la DASH, sino que, más bien, la descripción se proporciona para que sirva de un fundamento posible sobre el que puede realizarse total o parcialmente la invención.
En la DASH, el contenido multimedia se puede almacenar en un servidor de HTTP y se puede distribuir usando el HTTP. El contenido se puede almacenar en el servidor en dos partes: una descripción de presentación multimedia (MPD), que describe un manifiesto del contenido disponible, sus diversas alternativas, sus direcciones URL y otras características; y unos segmentos que contienen los flujos de bits multimedia reales en forma de trozos, en uno o varios archivos. La MDP proporciona la información necesaria para que los clientes establezcan una transmisión en continuo adaptativa y dinámica a través del HTTP. La MPD contiene información que describe una presentación de medios, tal como un localizador uniforme de recurso (URL) de HTTP de cada segmento, para realizar una solicitud GET Segment. Para reproducir el contenido, el cliente DASH puede obtener la MPD usando, por ejemplo, el HTTP, un correo electrónico, una memoria USB, una difusión u otros métodos de transporte. Mediante el análisis de la MPD, el cliente DASH puede conocer la temporización de programas, la disponibilidad del contenido multimedia, los tipos de medios, las resoluciones, los anchos de banda mínimo y máximo y la existencia de diversas alternativas codificadas de componentes multimedia, las funciones de accesibilidad y la gestión de derechos digitales (DRM) requerida, las ubicaciones de componente de medios en la red y otras características de contenido. Con esta información, el cliente DASH puede seleccionar la alternativa codificada adecuada y comenzar a transmitir en continuo el contenido buscando y trayendo los segmentos mediante, por ejemplo, solicitudes GET de HTTP. Tras un almacenamiento temporal adecuado para tener en cuenta las variaciones de caudal de red, el cliente puede seguir buscando y trayendo los segmentos subsiguientes y también supervisar las fluctuaciones de ancho de banda de red. El cliente puede decidir cómo adaptarse al ancho de banda disponible buscando y trayendo segmentos de distintas alternativas (con tasas de bits más bajas o más altas) para mantener un colchón temporal adecuado.
En la DASH se emplea un modelo jerárquico de datos para estructurar la presentación de medios, tal y como se muestra en la Figura 7. Una presentación de medios consta de una secuencia de uno o más períodos (Period), cada período contiene uno o más grupos (Group), cada grupo contiene uno o más conjuntos de adaptación (Adaptation Set), cada conjunto de adaptación contiene una o más representaciones (Representation) y cada representación consta de uno o más segmentos (Segment). Una representación es una de las opciones alternativas del contenido de medios o de un subconjunto del mismo que normalmente difiere en la opción de codificación, por ejemplo, en la tasa de bits, la resolución, el idioma, el códec, etc. El segmento contiene cierta duración de unos datos de medios, y unos metadatos para decodificar y presentar el contenido de medios incluido. Un segmento se identifica mediante un URI, y normalmente se puede solicitar mediante una solicitud GET de HTTP. Un segmento puede definirse como una unidad de datos que está asociada a un HTTP-URL y, opcionalmente, un intervalo de bytes que se especifica mediante una MPD.
La MPD de DASH es conforme al lenguaje de marcado extensible (XML) y, por lo tanto, se especifica a través de unos elementos y atributos que están definidos en XML. La MPD se puede especificar utilizando las siguientes convenciones: los elementos en un documento XML pueden identificarse con la primera letra en mayúscula, y pueden aparecer en negrita comoElement. Para expresar que un elementoElementlestá contenido en otro elementoElement2, se puede escribirElement2.Element1. Si el nombre de un elemento consta de dos o más palabras combinadas, se puede usar la grafía camel case, por ejemplo,ImportantElement. Los elementos o bien pueden estar presentes exactamente una vez, o bien sus apariciones mínima y máxima pueden definirse mediante <minOccurs> ... <maxOccurs>. Los atributos de un documento XML pueden identificarse con la primera letra en minúscula y pueden ir precedidos de '@'-sign, por ejemplo, @attribute. Para indicar un atributo específico @attribute que esté contenido en un elementoElement, se puede escribir lo siguiente:Element@attribute. Si el nombre de un atributo consta de dos o más palabras combinadas, se puede usar la grafía camel Case después de la primera palabra, por ejemplo, @veryImportantAttribute. Puede que a los atributos se les haya asignado un estado en el XML como obligatorio (mandatory, o M), opcional (optional, u O), opcional con valor predeterminado (optional with default value, u OD) y condicionalmente obligatorio (conditionally mandatory, o CM).
Un servicio DASH se puede proporcionar como un servicio bajo demanda o un servicio en vivo. En el primer caso, la MPD es estática, y todos los segmentos de una presentación de medios ya están disponibles cuando un proveedor de contenidos publica una MPD. Sin embargo, en el segundo caso, la MPD puede ser estática o dinámica dependiendo del método de construcción de URL de segmento empleado por una MPD, y se crean continuamente segmentos a medida que un proveedor de contenidos produce y publica contenidos para clientes DASH. El método de construcción de URL de segmento puede ser, o bien un método de construcción de URL de segmento basado en plantillas, o bien el método de generación de listas de segmentos. En el primer caso, un cliente DASH puede construir URL de segmento sin actualizar una MPD antes de solicitar un segmento. En el segundo caso, un cliente DASH tiene que descargar periódicamente las MPD actualizadas para obtener los URL de segmento. Así pues, en el caso de un servicio en vivo, el método de construcción de URL de segmento basado en plantillas es superior al método de generación de listas de segmentos.
En el contexto de la DASH, se pueden usar las siguientes definiciones: un componente de contenido de medios o componente de medios se puede definir como un componente continuo del contenido de medios con un tipo de componente de medios asignado que se puede codificar individualmente en un flujo de medios. Contenido de medios se puede definir como un período de contenido de medios o una secuencia contigua de períodos de contenido de medios. Tipo de componente de contenido de medios se puede definir como un único tipo de contenido de medios, tal como audio, vídeo o texto. Un flujo de medios se puede definir como una versión codificada de un componente de contenido de medios.
Un segmento de inicialización (Initialization Segment) se puede definir como un segmento que contiene unos metadatos que son necesarios para presentar los flujos de medios que están encapsulados en unos segmentos de medios (Media Segment). En los formatos de segmento basados en ISOBMFF, un segmento de inicialización puede comprender la caja de película (Movie Box) (“ moov” ), que puede que no incluya metadatos para ninguna muestra, es decir, cualesquier metadatos para muestras se proporcionan en cajas “ moof” .
Un segmento de medios contiene una cierta duración de datos de medios para su reproducción a una velocidad normal, tal duración se denomina duración de segmento de medios o duración de segmento. El productor de contenidos o proveedor de servicios puede seleccionar la duración de segmento según las características deseadas del servicio. Por ejemplo, en un servicio en vivo se puede usar una duración de segmento relativamente corta para conseguir una latencia de extremo a extremo corta. El motivo es que la duración de segmento normalmente es un límite inferior de la latencia de extremo a extremo percibida por un cliente DASH, puesto que un segmento es una unidad discreta de generación de datos de medios para la DASh . La generación de contenido se realiza normalmente de tal manera que se ponga a disposición de un servidor un segmento completo de datos de medios. Además, muchas implementaciones de cliente utilizan un segmento como la unidad para solicitudes GET. Por lo tanto, en las preparaciones típicas para prestar servicios en vivo, un cliente DASH solo puede solicitar un segmento si toda la duración del segmento de medios está disponible, así como si está codificada y encapsulada en un segmento. En el caso de un servicio bajo demanda, se pueden utilizar distintas estrategias para seleccionar la duración de segmento.
Un segmento puede partirse asimismo en unos subsegmentos para, por ejemplo, permitir una descarga de segmentos en múltiples partes. Puede que se requiera que los subsegmentos contengan unidades de acceso completas. Los subsegmentos se pueden indexar mediante una caja de índices de segmento (Segment Index), que contiene información para mapear el intervalo de tiempos de presentación y el intervalo de bytes para cada subsegmento. La caja de índices de segmento también puede describir unos subsegmentos y puntos de acceso de flujo en el segmento al señalar sus duraciones y sus desfases de bytes. Un cliente DASH puede usar la información obtenida de la(s) caja(s) de índices de segmento para realizar una solicitud GET de HTTP para un subsegmento específico utilizando una solicitud de HTTP de intervalo de bytes. Si se usa una duración de segmento relativamente larga, entonces se pueden usar subsegmentos para hacer que el tamaño de las respuestas de HTTP siga siendo razonable y flexible para la adaptación de tasa de bits. La información de indexación de un segmento puede meterse en la única caja que hay al comienzo de ese segmento o puede distribuirse entre las muchas cajas de indexación que haya en el segmento. Son posibles distintos métodos de distribución, tales como el jerárquico, en cadena de tipo margarita y el híbrido. Esta técnica puede evitar el tener que añadir una caja grande al comienzo del segmento y, por lo tanto, puede evitar un posible retardo de descarga inicial.
La notación (Sub)segment se refiere o bien a un segmento, o bien a un subsegmento. Si no hay cajas de índices de segmento presentes, la notación (Sub)segment se refiere a un segmento. Si hay presentes cajas de índices de segmento, la notación (Sub)segment puede referirse a un segmento o a un subsegmento dependiendo de si, por ejemplo, el cliente emite solicitudes por segmento o por subsegmento.
Los segmentos (o, respectivamente, los subsegmentos) pueden definirse de la siguiente manera para que no se solapen: SeaTe(S,í)el momento de presentación más temprano de cualquier unidad de acceso en un flujoide un segmento o subsegmento S, y seaTl(S,í)el momento de presentación más tardío de cualquier unidad de acceso en el flujo i de un segmento o subsegmento S. Puede definirse que dos segmentos (o, respectivamente, subsegmentos), A y B, que pueden o no pertenecer a representaciones diferentes, no se solapen cuandoTL(A,i)<TE(B,i)para todos los flujos de mediosien A y B o siTl(B,í)<TE(A,i)para todos los flujosien A y B, donde i se refiere al mismo componente de medios.
En MPEG-DASH se definen los formatos de contenedor de segmentos tanto para el formato de archivo base de medios de ISO como para los flujos de transporte de MPEG-2. Otras especificaciones pueden especificar formatos de segmento basados en otros formatos de contenedor. Por ejemplo, se ha propuesto un formato de segmento basado en el formato de archivo contenedor Matroska, que puede resumirse de la siguiente manera. Cuando se transportan archivos Matroska como segmentos DASH o similares, la asociación entre unidades DASH y unidades Matroska se puede especificar de la siguiente manera. Un subsegmento (de la DASH) puede definirse como uno o más conglomerados consecutivos de contenido encapsulado en Matroska. Puede que se requiera que un segmento de inicialización de la DASH comprenda la cabecera de EBML, la cabecera de segmento (de Matroska), la información de segmento (de Matroska) y las pistas, y, opcionalmente, puede comprender otros elementos de nivel 1 y un relleno. Un índice de segmento de DASH puede comprender un elemento de indicaciones de Matroska.
DASH especifica distintos cronogramas, incluidos el cronograma de presentación de medios (Media Presentation) y los tiempos de disponibilidad de segmento. El primero indica el tiempo de presentación de una unidad de acceso que tiene un contenido de medios que se ha asignado al cronograma de presentación común global. El cronograma de presentación de medios permite que en la DASH se sincronicen sin problemas distintos componentes de medios que se han codificado con distintas técnicas de codificación y comparten un cronograma común. El segundo indica un tiempo real transcurrido, y se utiliza para indicar a los clientes el tiempo de disponibilidad de segmentos, que se identifica mediante los URL de HTTP. Un cliente DASH puede identificar el tiempo de disponibilidad de un cierto segmento comparando el tiempo real transcurrido con el tiempo de disponibilidad de segmento que se ha asignado a ese segmento. El tiempo de disponibilidad de segmento desempeña un papel esencial en la distribución en vivo de segmentos de medios, lo cual se denomina servicio en vivo. En el caso de un servicio en vivo, el tiempo de disponibilidad de segmento es diferente de un segmento a otro, y el tiempo de disponibilidad de un cierto segmento depende de su posición en el cronograma de presentación de medios. En el caso de un servicio bajo demanda, el tiempo de disponibilidad de segmento es normalmente igual para todos los segmentos.
La DASH admite una adaptación de tasa al pedir dinámicamente que segmentos de medios de distintas representaciones dentro de un conjunto de adaptación se igualen a anchos de banda de red variables. Puede usarse un cambio entre representaciones de distintas tasas de bits para, por ejemplo, hacer igualar la tasa de bits transmitida al caudal de red esperado y/o para impedir que haya congestiones en la red. Cuando un cliente DASH aumenta o reduce la representación, hay que tener en cuenta las dependencias de codificación dentro de la representación. Convencionalmente, un cambio de representación solo puede tener lugar en un punto de acceso aleatorio (RAP), lo cual se usa normalmente en técnicas de codificación de vídeo como H.264/AVC. En la DASH se ha introducido un concepto más general denominado punto de acceso al flujo (SAP) con el fin de proporcionar una solución independiente de códecs para acceder a una representación y cambiar entre representaciones. En la DASH, un SAP se especifica como una posición en una representación que permite empezar la reproducción de un flujo de medios utilizando solo la información contenida en unos datos de representación desde esa posición en adelante (precedidos de unos datos de inicialización en el segmento de inicialización, si los hubiera). Así pues, en el SAP se puede realizar un cambio de representación.
Se han especificado varios tipos de SAP, incluidos los siguientes. El tipo 1 de SAP corresponde a lo que se conoce en algunos planes de codificación como “ punto de acceso aleatorio a GOP cerrado” (en el que todas las imágenes, en el orden de decodificación, pueden decodificarse correctamente, lo que da como resultado una secuencia temporal continua de imágenes correctamente decodificadas y sin espacios), y, además, la primera imagen en el orden de decodificación es también la primera imagen en el orden de presentación. El tipo 2 de SAP corresponde a lo que se conoce en algunos planes de codificación como “ punto de acceso aleatorio a GOP cerrado” (en el que todas las imágenes, en el orden de decodificación, pueden decodificarse correctamente, lo que da como resultado una secuencia temporal continua de imágenes correctamente decodificadas y sin espacios), para el cual, la primera imagen en el orden de decodificación puede no ser la primera imagen en el orden de presentación. El tipo 3 de SAP corresponde a lo que se conoce en algunos planes de codificación como “ punto de acceso aleatorio a GOP abierto” , en el que en el orden de decodificación puede haber algunas imágenes que no se puedan decodificar correctamente y que tenga tiempos de presentación más cortos que los de una imagen intracodificada que esté asociada al SAP.
Un proveedor de contenidos puede crear segmentos y subsegmentos de múltiples representaciones de una manera tal que se simplifique el cambio. En un caso sencillo, cada segmento y cada subsegmento comienzan con un SAP, y los límites de segmento y de subsegmento están alineados a lo largo de la representación de un conjunto de adaptación. En este caso, un cliente DASH puede cambiar de representación sin que haya una deriva de errores al pedir que se transfieran segmentos o subsegmentos de una representación original a una nueva representación. En la DAS<h>, las restricciones para construir segmentos y subsegmentos se especifican en la MPD y en el índice de segmento para facilitar que un cliente DASH cambie de representación sin introducir una deriva de errores. Uno de los usos del perfil especificado en la DASH es proporcionar distintos niveles de restricciones para construir segmentos y subsegmentos.
El borrador de la especificación MPEG-DASH incluye una prestación de señalización de SAP independiente del segmento (SISSI), que permite la señalización de segmentos que empiezan con un SAP y que tienen duraciones diferentes. El borrador de la especificación MPEG-DASH define la señalización SISSI para realizar un cambio dentro de un conjunto de adaptación y entre conjuntos de adaptación.
Cuando se realiza un cambio dentro de un conjunto de adaptación, el cambio se refiere a la presentación de unos datos decodificados desde una representación hasta un cierto tiempo t y a la presentación de unos datos decodificados de otra representación desde el momento t en adelante. Si en un conjunto de adaptación se incluyen representaciones y el cliente realiza el cambio correctamente, se espera que la presentación de medios se perciba sin problemas durante todo el cambio. Los clientes pueden ignorar aquellas representaciones que dependen de códecs u otras tecnologías de renderizado que ellos no admiten o que no son adecuadas por algún otro motivo.
El elementoCambio, tal y como se define en la tabla 1, proporciona unas instrucciones de unos puntos de cambio dentro de un conjunto de adaptación y las opciones de cambio permitidas, tal y como se definen en la tabla 2. Este elemento se puede usar en vez de los atributos @segmentAlignment y @bitstreamSwitching.
Tabla 1 - Señalización de puntos de cambio
En la tabla 2 se definen distintas estrategias de cambio que dan instrucciones al cliente sobre los procedimientos para realizar un cambio adecuadamente dentro de un conjunto de adaptación.
Tabla 2 - Estrategias de cambio
Acceso aleatorio puede referirse a empezar a procesar, decodificar y presentar la representación desde el punto de acceso aleatorio en el momento t en adelante al inicializar la representación con el segmento de inicialización, si está presente, y decodificando y presentando la representación desde el segmento señalizado en adelante, es decir, desde el momento de presentación más temprano del segmento señalizado. El punto de acceso aleatorio se puede señalizar con el elementoAcceso aleatorio, tal y como se define en la tabla 3.
Tabla 3 - Señalización de puntos de acceso aleatorios
Tabla 4 - Valores de tipo de acceso aleatorio
El estándar DASH incluye unos mecanismos para permitir un inicio rápido de una sesión de medios. Por ejemplo, la MPD puede anunciar más de una representación, con distintas tasas de bits, en un conjunto de adaptación. Además, cada segmento y/o cada subsegmento podría(n) empezar con un punto de acceso al flujo, donde las imágenes que están dentro del segmento y/o del subsegmento se codifican sin hacer referencia a ninguna otra imagen de un segmento diferente. De esta manera, un cliente DASH puede empezar con una representación de tasa de bits más baja para hacer subir rápidamente el nivel de ocupación de memoria intermedia. Luego, el cliente puede pasar a solicitar segmentos y/o subsegmentos de una representación de tasa de bits más alta (que puede tener, por ejemplo, una mayor resolución espacial que la representación recibida anteriormente). El cliente puede querer alcanzar un cierto nivel de ocupación de memoria intermedia, por ejemplo, en términos de duración de contenido de medios, durante el inicio rápido y puede querer mantener, después de una fase de inicio rápido, el mismo o parecido nivel de ocupación de memoria intermedia durante el funcionamiento. El cliente puede dar comienzo a una reproducción de medios después de iniciar una sesión de transmisión en continuo de medios y/o después de realizar una operación de acceso aleatorio únicamente después de que se haya almacenado temporalmente una cierta cantidad de contenido de medios. Esta cantidad de contenido de medios puede ser igual que, pero no tiene por qué estar relacionada con, el nivel de ocupación de memoria intermedia que se pretende alcanzar durante el inicio rápido. En todos los casos, el inicio rápido puede permitir al cliente comenzar la reproducción de medios más rápidamente de lo que sería posible si solo se recibiera sistemáticamente una representación de tasa de bits más alta después de iniciarse una sesión de transmisión de medios y/o después de realizarse una operación de acceso aleatorio.
Tal y como se ha descrito anteriormente, el cliente o reproductor puede solicitar que se transmitan segmentos o subsegmentos de distintas representaciones de manera parecida a cómo se pueden determinar las capas y/o subcapas transmitidas de un flujo de bits de vídeo escalable. Las expresiones reducción de representación y reducción de flujo de bits pueden referirse a solicitar o transmitir una representación de tasa de bits más baja que la solicitada o transmitida (respectivamente) previamente. Las expresiones aumento de representación y aumento de flujo de bits pueden referirse a solicitar o transmitir una representación de tasa de bits más alta que la solicitada o transmitida (respectivamente) previamente. Las expresiones cambio de representación y cambio de flujo de bits pueden referirse colectivamente a un aumento y una reducción de representación y de flujo de bits, respectivamente, y también, o alternativamente, pueden abarcar el cambio de representación o de flujo de bits de distintos puntos de vista.
En la DASH, todos los elementos descriptores están estructurados de la misma manera; a saber, contienen un atributo @schemeIdUri que proporciona un URI para identificar el plan y un atributo @value opcional y un atributo @id opcional. La semántica del elemento es específica del plan empleado. El URI que identifica el plan puede ser un URN o un URL. En el estándar MPEG-DASH (ISO/IEC 23009-1) se especifican algunos descriptores, mientras que en otras especificaciones se pueden especificar, adicional o alternativamente, descriptores. Cuando se especifican en especificaciones que no son el estándar MPEG-DASH, la MPD no proporciona ninguna información específica sobre cómo usar los elementos descriptores. La aplicación o la especificación que emplea formatos DASH es responsable de instanciar los elementos de descripción con una información de plan adecuada. Las aplicaciones o especificaciones que utilizan uno de estos elementos definen un identificador de plan (Scheme Identifier) en forma de<u>R<i>y el espacio de valores del elemento cuando se usa ese identificador de plan. El identificador de plan aparece en el atributo @schemeIdUri. En caso de que se requiera un sencillo conjunto de valores enumerados, se puede definir una cadena de texto para cada valor, y esta cadena se puede incluir en el atributo @value. Si se requieren datos estructurados, entonces en un espacio de nombres independiente se puede definir cualquier elemento o atributo de ampliación. El valor @id se puede usar para referirse a un descriptor único o a un grupo de descriptores. En este último caso, puede que sea necesario que los descriptores que tengan valores idénticos para el atributo @id sean sinónimos, es decir, basta con procesar uno de los descriptores que tenga un valor idéntico para @id.
En la DASH, representación independiente se puede definir como una representación que se puede procesar independientemente de cualquier otra representación. Se puede entender que una representación independiente comprende un flujo de bits independiente o una capa independiente de un flujo de bits. Representación dependiente se puede definir como una representación para la que son necesarios unos segmentos de sus representaciones complementarias para la presentación y/o decodificación de los componentes de contenido de medios. Se puede entender que una representación dependiente comprende, por ejemplo, una capa predicha de un flujo de bits escalable. Una representación complementaria puede definirse como una representación que complementa al menos una representación dependiente. Una representación complementaria puede ser una representación independiente o una representación dependiente. Las representaciones dependientes se pueden describir mediante un elementoRepresentaciónque contiene un atributo @dependencyId. Las representaciones dependientes pueden considerarse representaciones normales, salvo que dependen de un conjunto de representaciones complementarias para la decodificación y/o la presentación. @dependencyId contiene los valores del atributo @id de todas las representaciones complementarias, es decir, las representaciones que son necesarias para presentar y/o decodificar los componentes de contenido de medios que están contenidos en esta representación dependiente.
Una preselección de DASH (DASH Preselection) define un subconjunto de componentes de medios de una MPD que se espera que sean consumidos conjuntamente por una única instancia de decodificador, en donde el consumo puede comprender una decodificación y una renderización. El conjunto de adaptación que contiene el componente de medios principal para una preselección se denomina conjunto de adaptación principal. Además, cada preselección puede incluir uno o múltiples conjuntos de adaptación parciales. Puede que sea necesario procesar los conjuntos de adaptación parciales en combinación con el conjunto de adaptación principal. Un conjunto de adaptación principal y unos conjuntos de adaptación parciales pueden indicarse mediante uno de los dos medios: un descriptor de preselección y un elemento de preselección.
Entre los sistemas de transmisión parecidos a MPEG-DASH se incluye, por ejemplo, HTTP Live Streaming (también conocida como HLS), especificada en la RFC 8216 de la IETF. La HLS utiliza un formato M3U ampliado como formato de manifiesto que corresponde a la MPD. M3U es un formato de archivo para listas de reproducción multimedia que fue desarrollado originalmente para archivos de audio. Una lista de reproducción M3U es un archivo de texto que consta de líneas individuales, y cada línea es un URI, está vacía o comienza con el carácter “#” , lo cual indica que es una etiqueta o un comentario. Una línea URI identifica un segmento de medios o un archivo de lista de reproducción.
Las etiquetas comienzan con #EXT. La especificación HLS especifica una serie de etiquetas, que pueden considerarse pares clave-valor. La parte de valor de las etiquetas puede comprender una lista de atributos, que es una lista separada por comas de pares atributo-valor, donde se puede considerar que un par atributo-valor tiene la sintaxis AttributeName=AttributeValue. Así pues, las etiquetas de los archivos M3U8 de HLS pueden considerarse parecidas a los elementos en MPD o XML, y los atributos de los archivos M3U8 de HLS pueden considerarse parecidos a los atributos en MPD o XML. Los segmentos de medios en la HLS pueden formatearse según el flujo de transporte MPEG-2 y contener un único programa MPEG-2. Se recomienda que cada segmento de medios comience con una tabla de asociación de programas (PAT) y una tabla de mapas de programas (PMT). En las versiones posteriores de la HLS, puede que los segmentos de medios se ajusten al ISOBMFF.
Flujo de bits encapsulado puede definirse como un flujo de bits de medios, tal como un flujo de bits de vídeo (p. ej., un flujo de bits de HEVC), que está almacenado en un archivo contenedor o en un(os) subsegmento(s), y se puede considerar que comprende los metadatos de formato de archivo, tal como cajas del ISOBMFF.
Tal y como se explicó anteriormente, la DASH y otros sistemas de transmisión similares proporcionan un protocolo y/o unos formatos para aplicaciones de transmisión multimedia en continuo, especialmente para flujos de bits de vídeo codificados multivista. Una tendencia reciente en la transmisión en continuo para reducir la tasa de bits de transmisión en continuo de vídeo de RV es la siguiente: un subconjunto de contenido de vídeo de 360 grados que abarca la ventana gráfica principal (i.e., la orientación de visión actual) se transmite con la mejor calidad/a la mejor resolución, mientras que el resto del vídeo de 360 grados se transmite con una peor calidad/a una resolución más baja. Por lo general, existen dos enfoques para la transmisión en continuo adaptativa a la ventana gráfica:
1. Codificación y transmisión en continuo específicas de la ventana gráfica, también conocidas como codificación y transmisión en continuo dependientes de la ventana gráfica, también conocidas como proyección asimétrica.
En este enfoque, el contenido de imagen de 360 grados se empaqueta en el mismo fotograma, poniéndose un énfasis (p. ej., una mayor área espacial) en la ventana gráfica principal. Los fotogramas de RV empaquetados se codifican en un único flujo de bits.
Por ejemplo, la cara frontal de un mapa cúbico puede muestrearse con una resolución más alta en comparación con otras caras de cubo, y las caras de cubo pueden asignarse al mismo fotograma de RV empaquetado que el mostrado en la Figura 8, donde la cara de cubo frontal se muestrea con el doble de resolución en comparación con las otras caras de cubo.
2. Codificación y transmisión en continuo basadas en piezas
En este enfoque, el contenido de 360 grados se codifica y se pone a disposición de una manera que permite una transmisión en continuo selectiva de unas ventanas gráficas procedentes de distintas codificaciones.
Con cualquier códec de vídeo se puede utilizar un enfoque de codificación y transmisión en continuo basadas en piezas, que puede denominarse codificación y transmisión en continuo basadas en rectángulos de piezas o codificación y transmisión en continuo basadas en subimágenes, aunque no hubiera piezas parecidas a las de la HEVC disponibles en el códec o aunque no se implementasen conjuntos de piezas constreñidos en cuanto al movimiento o similares en un codificador. En la codificación basada en rectángulos de piezas, el contenido de origen se divide en unas secuencias de rectángulos de piezas (también conocidas como secuencias de subimágenes) antes de la codificación. Cada secuencia de rectángulos de piezas abarca un subconjunto del área espacial del contenido de origen, tal como un contenido panorámico completo, que puede tener, por ejemplo, un formato de proyección equirrectangular. A continuación, cada secuencia de rectángulos de pieza se codifica independientemente de las demás como un flujo de bits monocapa. Se pueden codificar varios flujos de bits a partir de la misma secuencia de rectángulos de piezas, por ejemplo, para distintas tasas de bits. Cada flujo de bits de rectángulos de piezas puede encapsularse en un archivo como su propia pista (o similar) y ponerse a disposición para su transmisión. En el lado del receptor, las pistas que se van a transmitir pueden seleccionarse basándose en la orientación de visionado. El cliente puede recibir unas pistas que abarquen todo el contenido omnidireccional. Se pueden recibir pistas de mejor calidad o mayor resolución para la ventana gráfica actual en comparación con la calidad o la resolución relacionada con las restantes ventanas gráficas que no son visibles actualmente. En un ejemplo, cada pista puede decodificarse con una instancia de decodificador aparte.
En un ejemplo de codificación y transmisión en continuo basadas en rectángulos de piezas, cada cara de cubo puede codificarse y encapsularse por separado en su propia pista (y representación). Para cada cara de cubo se puede proporcionar más de un flujo de bits codificado, por ejemplo, cada uno con una resolución espacial diferente. Los reproductores pueden elegir las pistas (o representaciones) que tienen que decodificar y reproducir basándose en la orientación de visionado actual. Se pueden seleccionar pistas (o representaciones) de alta resolución para las caras de cubo utilizadas para la renderización para la orientación de visionado actual, mientras que las caras de cubo restantes se pueden obtener de sus pistas (o representaciones) de baja resolución.
En un enfoque de codificación y transmisión en continuo basadas en piezas, la codificación se realiza de una manera tal que el flujo de bits resultante comprenda unos conjuntos de piezas constreñidos en cuanto al movimiento. Se codifican varios flujos de bits del mismo contenido de origen utilizando conjuntos de piezas constreñidos en cuanto al movimiento.
En un enfoque, de un flujo de bits se extraen una o más secuencias de conjuntos de piezas constreñidos en cuanto al movimiento, y cada secuencia de conjuntos de piezas constreñidos en cuanto al movimiento extraída se almacena en un archivo como una pista de conjuntos de piezas (p. ej., una pista de piezas de HEVC o una pista de conjuntos de piezas conforme a imágenes completas). Se puede generar y almacenar en un archivo una pista base de piezas (p. ej., una pista base de piezas de HEVC o una pista de imágenes completas que comprende extractores para extraer datos de las pistas de conjuntos de piezas). La pista base de piezas representa el flujo de bits recopilando implícitamente conjuntos de piezas constreñidos en cuanto al movimiento de las pistas de conjuntos de piezas o extrayendo explícitamente (p. ej., mediante extractores HEVC) conjuntos de piezas constreñidos en cuanto al movimiento de las pistas de conjuntos de piezas. Las pistas de conjuntos de piezas y la pista base de piezas de cada flujo de bits pueden encapsularse en un archivo propio, y en todos los archivos pueden usarse los mismos identificadores de pista. En el lado del receptor, las pistas de conjuntos de piezas que se van a transmitir pueden seleccionarse basándose en la orientación de visionado. El cliente puede recibir pistas de conjuntos de piezas que abarcan todo el contenido omnidireccional. Se pueden recibir pistas de conjuntos de piezas de mejor calidad o mayor resolución para la ventana gráfica actual en comparación con la calidad o la resolución relacionada con las restantes ventanas gráficas que no son visibles actualmente.
En un ejemplo, el contenido panorámico equirrectangular se codifica usando conjuntos de piezas constreñidos en cuanto al movimiento. Se puede proporcionar más de un flujo de bits codificado, por ejemplo, a una resolución espacial diferente y/o con una calidad de imagen diferente. Cada conjunto de piezas constreñido en cuanto al movimiento se pone a disposición en su propia pista (y representación). Los reproductores pueden elegir las pistas (o representaciones) que tienen que decodificar y reproducir basándose en la orientación de visionado actual. Se pueden seleccionar pistas (o representaciones) de alta resolución o alta calidad para los conjuntos de piezas que abarquen la ventana gráfica principal actual, mientras que la zona restante del contenido de 360 grados se puede obtener de pistas (o representaciones) de baja resolución o baja calidad.
En un enfoque, cada pista de conjuntos de piezas recibida se decodifica con un decodificador o un instancia de decodificador independiente.
En otro enfoque, en la decodificación se utiliza una pista base de piezas de la siguiente manera. Si todas las pistas de piezas recibidas proceden de unos flujos de bits de la misma resolución (o, más generalmente, si las pistas base de piezas de los flujos de bits son idénticas o equivalentes, o si los segmentos de inicialización u otros datos de inicialización, tales como unos conjuntos de parámetros, de todos los flujos de bits son los mismos), se puede recibir una pista base de piezas y usarse para construir un flujo de bits. El flujo de bits construido puede decodificarse con un único decodificador.
En otro enfoque más, un primer conjunto de pistas de rectángulos de piezas y/o de pistas de conjuntos de piezas puede fusionarse en un primer flujo de bits conforme a imágenes completas, y un segundo conjunto de pistas de rectángulos de piezas y/o de pistas de conjuntos de piezas puede fusionarse en un segundo flujo de bits conforme a imágenes completas. El primer flujo de bits conforme a imágenes completas puede decodificarse con un primer decodificador o instancia de decodificador, y el segundo flujo de bits conforme a imágenes completas puede decodificarse con un segundo decodificador o instancia de decodificador. En general, este enfoque no está limitado a dos conjuntos de pistas de rectángulos de piezas y/o de pistas de conjuntos de piezas, dos flujos de bits conformes a imágenes completas o dos decodificadores o instancias de decodificador, sino que es aplicable a cualquier número de ellos. Con este enfoque, el cliente puede controlar el número de decodificadores o instancias de decodificador paralelos. Además, los clientes que no son capaces de decodificar pistas de piezas (p. ej., pistas de piezas de HEVC) sino únicamente flujos de bits conformes a imágenes completas pueden realizar la fusión de una manera tal que se obtengan flujos de bits conformes a imágenes completas. La fusión se puede realizar únicamente en el cliente, o bien se pueden generar pistas de conjuntos de piezas conformes a imágenes completas para ayudar a la fusión realizada por el cliente.
También se pueden combinar los enfoques 1. (codificación y transmisión específicas de la ventana gráfica) y 2. (codificación y transmisión en continuo basadas en piezas) más arriba.
Hay que entender que la codificación y la transmisión en continuo basadas en piezas pueden realizarse dividiendo una imagen de origen en unas secuencias de rectángulos de piezas que se solapen parcialmente. Alternativa o adicionalmente, pueden generarse flujos de bits con conjuntos de piezas constreñidos en cuanto al movimiento a partir del mismo contenido de origen con distintas cuadrículas de piezas o cuadrículas de conjuntos de piezas. Podríamos entonces imaginar el espacio de 360 grados dividido en un conjunto discreto de ventanas gráficas, cada una separada por una cierta distancia (p. ej., expresada en grados), de manera que el espacio omnidireccional puede imaginarse como un mapa de ventanas gráficas solapadas, y la ventana gráfica principal se cambia discretamente a medida que el usuario cambia de orientación mientras ve el contenido con un HMD. Cuando el solapamiento entre ventanas gráficas se reduzca a cero, las ventanas gráficas pueden imaginarse como piezas adyacentes no superpuestas dentro del espacio de 360 grados.
Tal y como se ha explicado anteriormente, en la transmisión en continuo adaptativa a la ventana gráfica, la ventana gráfica principal (i.e., la orientación de visionado actual) se transmite con la mejor calidad/a la mejor resolución, mientras que el resto del vídeo de 360 grados se transmite con una calidad/a una resolución inferior. Cuando la orientación de visionado cambia, por ejemplo, cuando el usuario gira la cabeza cuando está viendo el contenido con un visor montado en la cabeza, es necesario emitir otra versión del contenido que coincida con la nueva orientación de visionado. En general, la nueva versión se puede solicitar empezando a partir de un punto de acceso al flujo (SAP), puntos que normalmente están alineados con unos (sub)segmentos. En los flujos de bits de vídeo monocapa, los SAP se intracodifican y, por tanto, son costosos en términos de rendimiento tasa-distorsión. Convencionalmente se utilizan, por tanto, intervalos de SAP relativamente largos y, en consecuencia, duraciones de (sub)segmento relativamente largas, del orden de segundos. Así, el retardo (denominado aquí retardo de actualización de calidad de ventana gráfica) a la hora de mejorar la calidad después de un cambio de orientación de visionado (p. ej., un giro de la cabeza) es convencionalmente del orden de segundos y, por lo tanto, es claramente perceptible y molesto.
Existen varias alternativas para distribuir el vídeo omnidireccional dependiente de la ventana gráfica. Se puede distribuir como, por ejemplo, flujos de bits de HEVC de igual resolución con conjuntos de piezas constreñidos en cuanto al movimiento (M<c t>S). Así, varios flujos de bits de HEVC del mismo contenido de origen omnidireccional se codifican a la misma resolución, pero con distintas calidades y tasas de bits, utilizando conjuntos de piezas constreñidos en cuanto al movimiento. La cuadrícula de MCTS es idéntica en todos los flujos de bits. Para permitir al cliente usar la misma pista base de piezas para reconstruir un flujo de bits a partir de los MCTS recibidos de distintos flujos de bits originales, cada flujo de bits se encapsula en su propio archivo, y en todos estos archivos se usa el mismo identificador de pista para cada pista de piezas de la misma posición de cuadrícula de piezas. Las pistas de piezas de HEVC se forman a partir de cada secuencia de conjuntos de piezas constreñidos en cuanto al movimiento, y, además, se forma una pista base de piezas. El cliente analiza la pista base de piezas para reconstruir implícitamente un flujo de bits a partir de las pistas de piezas. El flujo de bits reconstruido se puede decodificar con un decodificador de HEVC conforme.
Los clientes pueden elegir qué versión de cada MCTS se recibe. La misma pista base de piezas es suficiente para combinar MCTS de distintos flujos de bits, puesto que en las respectivas pistas de piezas se utilizan los mismos identificadores de pista.
La Figura 9a muestra un ejemplo de cómo se pueden usar pistas de piezas de la misma resolución para realizar una transmisión en continuo de vídeo omnidireccional basada en piezas. A la hora de formar los conjuntos de piezas constreñidos en cuanto al movimiento se ha utilizado una cuadrícula de piezas de 4x2. Dos flujos de bits de HEVC que proceden del mismo contenido de origen se codifican con distintas calidades de imagen y tasas de bits. Cada flujo de bits está encapsulado en su propio archivo, en donde cada secuencia de conjuntos de piezas constreñidos en cuanto al movimiento está incluida en una pista de piezas, y también se incluye una pista base de piezas. El cliente elige la calidad con la que se recibe cada pista de piezas basándose en la orientación de visionado. En este ejemplo, el cliente recibe unas pistas 1,2, 5 y 6 de piezas con una calidad particular y unas pistas 3, 4, 7 y 8 de piezas con otra calidad. La pista base de piezas se usa para ordenar los datos de pista de piezas recibidos en un flujo de bits que se puede decodificar con un decodificador de HEVC.
Otra opción para distribuir el vídeo omnidireccional dependiente de la ventana gráfica es llevar a cabo una codificación de escalabilidad de región de interés por SHVC. En ella, la capa base se codifica convencionalmente. Además, se codifican unas capas de mejora de región de interés (ROI) con un perfil principal escalable por SHVC. Por ejemplo, se pueden codificar varias capas por cada posición de pieza, cada una para una tasa de bits o resolución diferente. Las capas de mejora de ROI pueden ser capas de escalabilidad espacial o de calidad. Se pueden codificar varios flujos de bits de SHVC para tasas de bits que sean significativamente diferentes, puesto que se puede suponer que la adaptación de tasa de bits se puede gestionar en gran medida únicamente con capas de mejora. Este enfoque de codificación se ilustra en la Figura 9b.
La capa base siempre se recibe y se decodifica. Además, se reciben y decodifican unas capas de mejora (EL1, ..., ELN) seleccionadas en función de la orientación de visionado actual.
Unos puntos de acceso al flujo (SAP) para las capas de mejora se predicen por intercapa a partir de la capa base y, por tanto, son más compactos que SAP similares llevados a cabo con imágenes intracodificadas. Como la capa base se recibe y decodifica sistemáticamente, el intervalo de SAP para la capa base puede ser más largo que el intervalo para las EL.
El enfoque basado en ROI con SHVC también puede implementarse sin una predicción intercapa, lo que en la presente memoria se denomina enfoque sin ILP.
Al comparar el rendimiento del enfoque basado en piezas (mostrado en la fig. 9a) con el enfoque basado en ROI con SHVC (mostrado en la fig. 9b), se ha observado que la tasa de bits del enfoque de ROI con SHVC se reduce significativamente (más de un 20%de media) en comparación con la tasa de bits del enfoque basado en piezas. Así, el enfoque de ROI con SHVC supera significativamente a la distribución dependiente de la ventana gráfica basada en MCTS en términos de reducción de tasa de bits, y permitir una predicción intercapa proporciona una ganancia de compresión significativa en comparación con no usar ninguna predicción intercapa.
Sin embargo, el enfoque de ROI con SHVC presenta algunas desventajas. La predicción intercapa solo está permitida en las ampliaciones de códec, tales como la ampliación SHVC de HEVc . Puede que tales ampliaciones de códec no estén comúnmente admitidas en la decodificación, en particular, cuando se consideran implementaciones de decodificador de hardware. Además, el enfoque de ROI con SHVC, así como el enfoque sin ILP, aumentan significativamente la complejidad de decodificación en comparación con el enfoque basado en MCTS. Por ejemplo, si se usa una cuadrícula de piezas de 4x2, la capa de mejora en el enfoque de r O i con SHVC y en el enfoque sin ILP normalmente abarca 2x2 piezas de la cuadrícula, es decir, provoca un aumento de complejidad de decodificación del 50 %.
Otro método para permitir una distribución de vídeo omnidireccional dependiente de la ventana gráfica se llama predicción intercapa constreñida (CILP). Se ha ilustrado la CILP haciendo referencia a la Figura 10, en la que se muestra cómo la secuencia de imágenes de entrada se codifica en dos o más flujos de bits, cada uno de los cuales representa toda la secuencia de imágenes de entrada, es decir, en los flujos de bits se codifican las mismas imágenes de entrada o en los flujos de bits se codifica un subconjunto de las mismas imágenes de entrada, potencialmente con una tasa de imágenes reducida.
Se eligen ciertas imágenes de entrada para codificarlas en dos imágenes codificadas en el mismo flujo de bits, donde la primera se denomina imagen codificada compartida, y las dos imágenes codificadas pueden denominarse par de imágenes codificadas compartidas. Una imagen codificada compartida o bien está intracodificada, o bien solo usa otras imágenes codificadas compartidas (o las respectivas imágenes reconstruidas) como referencias de predicción. Una imagen codificada compartida en un primer flujo de bits (de los dos o más flujos de bits codificados) es idéntica a la respectiva imagen codificada compartida en un segundo flujo de bits (de los dos o más flujos de bits codificados), donde “ idéntica” puede definirse como una representación codificada idéntica, que potencialmente excluye ciertas estructuras sintácticas de alto nivel, tales como mensajes SEI, y/o una imagen reconstruida idéntica. Cualquier imagen posterior a una imagen codificada compartida particular en orden de decodificación no se predice a partir de ninguna imagen que preceda a la imagen codificada compartida particular y no es una imagen codificada compartida.
Se puede indicar que una imagen codificada compartida es una imagen no de salida. Como respuesta a la decodificación de una indicación de imagen no de salida, el decodificador no da salida a la imagen codificada compartida reconstruida. El método de codificación facilita una decodificación de un primer flujo de bits hasta una imagen codificada compartida seleccionada, exclusiva, y una decodificación de un segundo flujo de bits empezando desde la respectiva imagen codificada compartida. No se requiere ninguna imagen intracodificada para empezar la decodificación del segundo flujo de bits y, en consecuencia, la eficiencia de compresión mejora en comparación con un enfoque convencional.
La CILP permite el uso del codificador y el decodificador de perfil principal de HEVC y, por tanto, tiene una mejor compatibilidad con unas implementaciones que el enfoque de ROI con SHVC. Además, la CILP aprovecha una frecuencia intraimagen relativamente baja (de manera parecida al enfoque de ROI con SHVC). Sin embargo, en comparación con el enfoque de ROI con SHVC, la CILP se ve afectada por el uso de MCTS para las piezas de calidad de base. El rendimiento de tasa de transmisión en continuo-distorsión de la CILP es parecido al del enfoque SHVC-ROI en cuadrículas de piezas relativamente bastas (de hasta 6x3). Sin embargo, la ClLP tiene un rendimiento de tasa de transmisión en continuo-distorsión inferior en comparación con el enfoque SHVC-ROI cuando se utilizan cuadrículas de pieza más finas, supuestamente debido al uso de MCTS para la calidad de base.
En consecuencia, los enfoques de ROI con SHVC y de CILP tienen ventajas el uno sobre el otro en distintas situaciones, pero ninguno de ellos supera al otro en todas las situaciones.
Para obtener mejor las ventajas tanto del enfoque de ROI con SHVC como de la CILP, se ha propuesto un método de codificación llamado predicción intercapa constreñida y empaquetada espacialmente (SP-CILP).
En el enfoque SP-CILP, una secuencia de imágenes de entrada se codifica en un flujo de bits, de manera que una zona de imagen se divide en una primera zona de imagen constituyente y una primera zona de piezas que no se solapan dentro de la zona de imagen. La zona de imagen constituyente se utiliza para llevar la codificación de calidad de base y la zona de piezas se usa para llevar piezas de calidad mejorada. Para permitir una predicción de piezas de calidad mejorada a partir de la imagen constituyente de calidad de base alineada en el tiempo de una manera similar a la de los enfoques de ROI con SHVC y de CILP, ciertas imágenes de entrada pueden codificarse como dos imágenes codificadas. En la primera imagen codificada de estas dos imágenes codificadas, la zona de piezas puede estar vacía. En la segunda imagen codificada de estas dos imágenes codificadas, la zona de piezas puede predecirse a partir de la imagen constituyente de calidad de base de la primera imagen codificada. La zona de imagen constituyente de la segunda imagen codificada puede estar vacía, o puede codificarse haciendo referencia a la primera imagen codificada con movimiento nulo y sin un error de predicción (i.e., “ codificada por omisión” ).
En la práctica, se codifican varios (al menos dos) flujos de bits, cada uno con una selección diferente de piezas de calidad mejorada, pero con las mismas imágenes constituyentes de calidad de base. Por ejemplo, cuando se usa la cuadrícula de piezas de 4*2 y se seleccionan cuatro piezas para codificarse con una calidad mejorada que coincide con una orientación de visionado, puede que sea necesario codificar unos 40 flujos de bits para una selección diferente de piezas de calidad mejorada. El intervalo de imágenes IRAP puede seleccionarse para que sea más largo que el intervalo de codificación de una imagen de entrada como dos imágenes codificadas, tal y como se ha descrito anteriormente. La Figura 11a muestra un ejemplo donde se codifican dos flujos de bits, en donde “ b” se refiere a una pieza vacía, tal y como se ha descrito anteriormente, y unos “ corte B” comprenden al menos un corte B o P y pueden comprender adicionalmente cualquiera de otros cortes, por ejemplo, unos cortes I, P o B.
La codificación de una imagen de entrada como dos imágenes codificadas, tal y como se ha descrito anteriormente, genera un punto de cambio que permite cambiar de un flujo de bits a otro. Como la imagen constituyente de calidad de base es idéntica en los flujos de bits codificados, la imagen constituyente de calidad de base en el punto de cambio se puede predecir a partir de una(s) imagen(imágenes) anterior(es). Siguiendo con el ejemplo de la Figura 11a, la Figura 11b muestra un ejemplo de cambio de unas piezas 1, 2, 5, 6 de calidad mejorada a unas piezas 3, 4, 7, 8 de calidad mejorada en el primer punto de cambio no iRAP.
Como consecuencia, se logra una distribución de vídeo omnidireccional dependiente de la ventana gráfica que puede tanto codificarse como decodificarse con un codificador/decodificador monocapa, tal como un codificador/decodificador de perfil principal de HEVC. Así, se obtienen ventajas similares a las que se logran que con la CILP. Además, se pueden codificar con poca frecuencia unas imágenes intra para obtener la calidad de base, pero aun así posibilitan una capacidad de cambio de punto de vista aún frecuente, de manera similar a las ventajas del enfoque ROI con SHVC y de la CILP. Por otro lado, se evita el uso de MCTS para la calidad de base, lo que mejora el rendimiento de compresión para la codificación de calidad de base de manera similar al enfoque de ROI con SHVC. Además, se consigue una ganancia de compresión de tasa de transmisión en continuo-distorsión de manera similar al enfoque de ROI con SHVC.
Sin embargo, en el enfoque SP-CILP, los vectores de movimiento espacialmente adyacentes y/o temporalmente coubicados en piezas de calidad mejorada pueden tener una magnitud significativamente diferente. Para la predicción de vectores de movimiento sería más beneficioso un campo de movimiento suave. Además, el número de flujos de bits codificados requeridos para la SP-CILP es proporcional al número de combinaciones diferenciadas para seleccionar piezas de alta resolución o de alta calidad, respectivamente. Aunque solo es necesario almacenar una pista para la secuencia de imágenes constituyentes de calidad de base, se requiere una pista de piezas por cada par de posición de la pieza en la imagen original y posición de la pieza en la pista de extractor. Además, la selección de piezas de calidad mejorada para la codificación SP-CILP se realiza basándose en la suposición de un campo de visión (máximo) que ha de ser admitido en la(s) ventana(s) gráfica(s) de los dispositivos de reproducción. Si los campos de visión de las ventanas gráficas que están admitidas en un servicio tienen una gran variación, hay que realizar unas codificaciones independientes para los distintos tamaños de campo de visión de ventana gráfica.
Ahora se presenta un método mejorado para permitir una distribución de vídeo omnidireccional dependiente de la ventana gráfica y/o para la codificación de vídeo multivista.
El método, que se muestra en la Figura 12, comprende codificar (1200) una imagen de entrada en una imagen constituyente codificada; reconstruir (1202), como parte de dicha codificación, una imagen constituyente decodificada que corresponde a la imagen constituyente codificada; codificar (1204) una región espacial en una pieza codificada, comprendiendo la codificación: determinar (1204a) un desfase horizontal y un desfase vertical que son indicativos de una posición de anclaje por regiones de la región espacial que está dentro de la imagen constituyente decodificada; codificar (1204b) el desfase horizontal y el desfase vertical; determinar (1204c) que una unidad de predicción en una posición de una primera coordenada horizontal y una primera coordenada vertical de la pieza codificada se predice en relación con la posición de anclaje por regiones, en donde la primera coordenada horizontal y la primera coordenada vertical son unas coordenadas horizontal y vertical, respectivamente, dentro de la región espacial; indicar (1204d) que la unidad de predicción se predice en relación con una posición de anclaje de unidad de predicción que es relativa a la posición de anclaje por regiones; obtener (1204e) una posición de anclaje de unidad de predicción que sea igual a la suma de la primera coordenada horizontal y del desfase horizontal, y de la primera coordenada vertical y el desfase vertical, respectivamente; determinar (1204f) un vector de movimiento para la unidad de predicción; y aplicar (1204g) el vector de movimiento en relación con la posición de anclaje de unidad de predicción para obtener un bloque de predicción.
En una realización que es aplicable a la distribución de vídeo omnidireccional dependiente de la ventana gráfica, la región espacial procede de la imagen de entrada, y la posición de anclaje por regiones corresponde a la posición de la región espacial que está dentro de la imagen de entrada.
En consecuencia, se codifican una o más versiones del mismo contenido, diferenciadas por, por ejemplo, la tasa de bits. Las imágenes codificadas comprenden una imagen constituyente que representa todo el campo de visión del contenido. La imagen constituyente puede comprender, por ejemplo, una imagen de proyección equirrectangular que represente toda la esfera. En este contexto, la imagen constituyente puede llamarse imagen constituyente de calidad de base o imagen constituyente compartida, puesto que si hay muchas versiones del mismo contenido, la imagen constituyente compartida puede codificarse de manera idéntica en todas ellas y, por tanto, la imagen constituyente compartida puede ser idéntica independientemente de qué versión codificada se decodifique.
Las imágenes codificadas también comprenden piezas del mismo contenido que pueden, pero no tienen por qué, representar todo el campo de visión del contenido. Los piezas normalmente tienen una mayor calidad en comparación con la de la respectiva imagen constituyente compartida.
En una realización que es aplicable a la codificación de vídeo multivista, la región espacial procede de una segunda imagen de entrada, que representa una vista diferente que la imagen de entrada. La región espacial puede comprender, por ejemplo, una segunda imagen de entrada completa. La posición de anclaje por regiones puede determinarse, por ejemplo, sobre la base de una disparidad media o global entre la imagen de entrada y la segunda imagen de entrada. La posición de anclaje por regiones puede corresponder, por ejemplo, a una posición de la región espacial en la imagen de entrada suponiendo que el contenido de la región espacial esté a una distancia de fondo o a una distancia media de la escena. Esta realización ayuda a mejorar la eficiencia de compresión cuando se permite una predicción intervista para un vídeo multivista empaquetado por fotogramas a través de una predicción de copias intrabloque. En particular, cuando se selecciona una predicción intervista en la unidad de predicción actual y no hay ninguna unidad de predicción vecina que use una predicción intervista (sino que todas utilizan una predicción temporal o una intracodificación), es probable que la realización reduzca la necesaria diferencia entre vectores de movimiento y, por tanto, mejore la compresión.
En una realización que es aplicable a cualquier codificación de vídeo, la región espacial es una segunda imagen de entrada, que representa un tiempo diferente al de la imagen de entrada. La imagen constituyente puede codificarse como una primera imagen codificada, y la región espacial puede codificarse como una segunda imagen codificada. La posición de anclaje por regiones puede determinarse, por ejemplo, sobre la base de un movimiento global entre la imagen de entrada y la segunda imagen de entrada. Por ejemplo, en el caso de una panoramización con cámara, la posición de anclaje por regiones puede corresponder a, por ejemplo, la magnitud y la dirección de la panoramización entre las imágenes de entrada. Esta realización puede ayudar a mejorar la eficiencia de compresión. Se observa que se puede permitir que el desfase horizontal y/o el desfase vertical estén fuera de los límites de imagen constituyente y/o se puede permitir que las posiciones de anclaje de unidad de predicción estén fuera de los límites de imagen constituyente.
En lo que sigue se describen algunas realizaciones haciendo referencia a expresiones tales como imagen constituyente compartida y/o pieza de calidad mejorada. Si bien estas expresiones se refieren a la realización relacionada con la distribución dependiente de la ventana gráfica, hay que entender que las realizaciones pueden usarse igualmente en otros escenarios de uso, tales como la realización relacionada con la codificación multivista reemplazando las expresiones por otras más genéricas (p. ej., imagen constituyente en vez de imagen constituyente compartida y/o pieza codificada en vez de pieza de calidad mejorada). Debe entenderse que también unas realizaciones se pueden aplicar a otros escenarios de uso distintos a los descritos en la presente memoria.
En la presente memoria, posición de anclaje de vector de movimiento se define como una posición (p. ej., unas coordenadas horizontal y vertical) dentro de una zona de imagen en relación con la cual se aplica el vector de movimiento. Convencionalmente, la posición de anclaje de vector de movimiento es la misma que la posición de la unidad de predicción para la que se proporciona el vector de movimiento.
En una realización, la codificación de la imagen constituyente codificada está constreñida de una manera tal que los vectores de movimiento no dan lugar a referencias a muestras que están fuera de la imagen constituyente codificada (o de la respectiva imagen constituyente decodificada) en los procesos de predicción. Por lo demás, la codificación y la decodificación de la imagen constituyente codificada se pueden realizar de manera convencional.
En una realización, la codificación de la imagen constituyente codificada puede dar lugar a referencias que están fuera de los límites de imagen, pero está constreñida para que los vectores de movimiento no den lugar a referencias a muestras que estén dentro de los límites de imagen sino fuera de los límites de imagen constituyente. Por lo demás, la codificación y la decodificación de la imagen constituyente codificada se pueden realizar de manera convencional.
La Figura 13 ilustra una posible disposición de codificación, donde la codificación y la decodificación de las piezas (enumeradas de 1 al 8 en la Figura de ejemplo anterior) se realiza de la siguiente manera.
Cuando se posibilita el uso de un desfase de posición de anclaje, se proporcionan un desfase horizontal y un desfase vertical para la posición de anclaje (tile_ref_x, tile_ref_y) en la cabecera de corte, el conjunto de parámetros de corte, la cabecera de pieza, el conjunto de parámetros de pieza o similares. tile_ref_x y tile_ref_y son indicativos de la esquina superior izquierda de la pieza dentro de la imagen constituyente compartida. En general, tile_ref_x y tile_ref_y pueden ser indicativos de cualquier ubicación de referencia predefinida o indicada, tal como el punto central, de la pieza dentro de la imagen constituyente compartida. tile_ref_x y tile_ref_y pueden constreñirse para que sean indicativos de una ubicación dentro de la imagen constituyente compartida, pero en general pueden ser indicativos de una ubicación que está más allá de los límites de la imagen constituyente compartida.
Puede estar predefinido en, por ejemplo, un estándar de codificación, o ser codificado por un codificador en el flujo de bits y/o ser decodificado por un decodificador del flujo de bits, que tile_ref_x y tile_ref_y sean relativos a la esquina superior izquierda de la imagen que comprende la imagen constituyente compartida. En este caso, el codificador puede seleccionar los valores de tile_ref_x, tile_ref_y y otros posibles parámetros de una manera tal que tile_ref_x y tile_ref_y sean indicativos de la esquina superior izquierda de la esquina superior izquierda de la pieza que está dentro de la imagen constituyente compartida. Alternativamente, tile_ref_x y tile ref_y son relativos a una ubicación de referencia para la imagen constituyente compartida, y la ubicación de referencia puede ser indicada por un codificador en el flujo de bits y/o decodificada por un decodificador a partir de un flujo de bits, o inferida por un codificador y/o un decodificador.
Puede predefinirse o indicarse un sistema de coordenadas particular para indicar unas ubicaciones y/o dimensiones dentro de una imagen constituyente compartida y/o una(s) imagen(imágenes) que contienen la imagen constituyente compartida. En la presente memoria se supone que el sistema de coordenadas tiene su origen en la esquina superior izquierda de la imagen constituyente compartida o de la imagen que contiene la imagen constituyente compartida, que las coordenadas horizontales aumentan hacia la derecha y que las coordenadas verticales aumentan hacia abajo. Hay que entender que podrían llevarse a cabo realizaciones de manera equivalente con otros tipos de sistemas de coordenadas.
Supóngase que la esquina superior izquierda de la pieza actual tiene una posición (tile_x, tile_y) dentro de la imagen. Supóngase que la esquina superior izquierda de la P<u>actual tiene una posición de una primera coordenada horizontal y una primera coordenada vertical (rel_x, rel_y) en relación con la esquina superior izquierda de la pieza actual. En consecuencia, la posición de anclaje de vector de movimiento es convencionalmente (tile_x rel_x, tile_y rel_y). El codificador puede indicar, por ejemplo, en una unidad de predicción codificada, y/o el decodificador puede decodificar, por ejemplo, a partir de una unidad de predicción codificada, que se haga que la posición de anclaje de vector de movimiento sea igual a (tile ref_x rel_x, tile ref_y rel_y) para la unidad de predicción.
La señalización de los desfases horizontal y vertical permite disponer las piezas en cualquier posición dentro de las imágenes codificadas que se decodifican. En otras palabras, las piezas que hay en las imágenes codificadas no tienen que tener la misma posición que en las imágenes codificadas que se decodifican. Esto permite una reconstrucción selectiva de los flujos de bits a partir de piezas, tal y como se describe en las modificaciones de formato de archivo. Así, el número de flujos de bits codificados y de pistas de piezas de calidad mejorada almacenadas puede reducirse en comparación con los que son necesarios en la SP-CILP.
Según una realización, cuando la imagen de referencia es la imagen actual (i.e., cuando se está utilizando la copia intrabloque) y el vector de movimiento es igual a (0, 0), se hace que la posición de anclaje de vector de movimiento sea igual a (tile_ref_x rel_x, tile_ref_y rel_y). En consecuencia, el bloque de predicción es el bloque en la imagen constituyente compartida que corresponde espacialmente al bloque actual. Puede considerarse que esto es parecido a la predicción de muestras intercapa en la codificación de vídeo escalable.
Hay distintas maneras de indicar que se está utilizando la posición de anclaje de vector de movimiento (tile_ref_x rel_x, tile_ref_y rel_y). Según una realización, el codificador indica, por ejemplo, con un indicador, para un corte o una pieza, que el mecanismo de desfase de posición de anclaje de vector de movimiento se aplica a todos los vectores de movimiento del corte o la pieza, respectivamente. Del mismo modo, según una realización, el decodificador decide, por ejemplo, a partir de un indicador, para un corte o una pieza, que el mecanismo de desfase de posición de anclaje de vector de movimiento se aplique a todos los vectores de movimiento del corte o de la pieza, respectivamente.
Según una realización, el codificador indica, por ejemplo, con un indicador, para un corte o una pieza, que el mecanismo de desfase de posición de anclaje de vector de movimiento se aplica a todos los vectores de movimiento de copia intrabloque del corte o la pieza, respectivamente. Según una realización, el decodificador decide, por ejemplo, con un indicador, para un corte o una pieza, que el mecanismo de desfase de posición de anclaje de vector de movimiento se aplique a todos los vectores de movimiento de copia intrabloque del corte o de la pieza, respectivamente.
Según una realización, el codificador indica, por ejemplo, con un indicador, para un corte o una pieza, que el mecanismo de desfase de posición de anclaje de vector de movimiento se aplica a todos los vectores de movimiento temporales del corte o la pieza, respectivamente. Según una realización, el decodificador decide, por ejemplo, con un indicador, para un corte o una pieza, que el mecanismo de desfase de posición de anclaje de vector de movimiento se aplique a todos los vectores de movimiento temporales del corte o de la pieza, respectivamente.
Según una realización, el codificador indica que el mecanismo de desfase de posición de anclaje de vector de movimiento está permitido a, por ejemplo, nivel de corte o de pieza. La determinación de si se aplica el desfase de posición de anclaje de vector de movimiento todavía puede realizarse, por ejemplo, por unidades de predicción. Del mismo modo, según una realización, el decodificador decide, por ejemplo, a partir de una cabecera de corte o de pieza, que el mecanismo de desfase de posición de anclaje de vector de movimiento está permitido. El decodificador puede decodificar, por ejemplo, para cada unidad de predicción, si se aplica el desfase de posición de anclaje de vector de movimiento.
Según una realización, el codificador indica si el desfase de posición de anclaje de vector de movimiento se usa, por ejemplo, en una unidad de codificación o en unidad de predicción. La indicación puede ser, por ejemplo, un indicador codificado por CABAC. Del mismo modo, según una realización, el decodificador decide, por ejemplo, a partir de una unidad de codificación o de una unidad de predicción, si se usa el desfase de posición de anclaje de vector de movimiento.
Según una realización, el codificador indica que la unidad de predicción se predice en relación con una posición de anclaje que es relativa a los desfases horizontal y vertical determinando el vector de movimiento de una manera tal que haga que, en la obtención del bloque de predicción, se utilice al menos una muestra que esté fuera de la pieza. Según una realización, el decodificador decodifica concluye que el vector de movimiento hace que en la obtención del bloque de predicción se utilice al menos una muestra que esté fuera de la pieza y, en consecuencia, concluye que la unidad de predicción se predice en relación con una posición de anclaje que es relativa a los desfases horizontal y vertical. Estas realizaciones se pueden aplicar para permitir que los vectores de movimiento se refieran a través de los límites de pieza para lograr una compresión mejorada.
Según una realización, cuando la indicación indique que el desfase de posición de anclaje está permitido y que la imagen de referencia es la imagen actual (i.e., cuando se está utilizando la copia intrabloque) y el vector de movimiento hace que la obtención del bloque de predicción se refiera a muestras que no se han codificado o decodificado todavía, se hace que la posición de anclaje de vector de movimiento sea igual a (tile_ref_x rel_x, tile_ref_y rel_y).
Convencionalmente, las piezas pueden ser codificadas en paralelo (por, p. ej., distintos núcleos de procesador) y, en muchos casos, también ser decodificadas en paralelo. En las realizaciones (específicamente en aquéllas en las que se utiliza la copia intrabloque) en las que se utilizan vectores de movimiento que se refieren a la imagen constituyente compartida de una pieza de calidad mejorada, la imagen constituyente compartida y la pieza tienen que codificarse y decodificarse secuencialmente. No obstante, se puede codificar o decodificar varias piezas de calidad mejorada en paralelo.
Según una realización, el codificador indica que se requiere una decodificación secuencial de piezas, por ejemplo, en un conjunto de parámetros de imagen y/o en un conjunto de parámetros de secuencia. Según una realización, el decodificador decide que se requiere la decodificación secuencial de las piezas, por ejemplo, a partir de un conjunto de parámetros de imagen y/o de un conjunto de parámetros de secuencia.
Según una realización, cada pieza está asociada a un conglomerado de piezas de entre dos o más conglomerados de piezas. Los piezas que están dentro de un grupo de piezas se pueden decodificar en paralelo. Se determina el orden de decodificación de los conglomerados de piezas.
Según una realización, las piezas se asocian a conglomerados de piezas de una manera predefinida. Por ejemplo, la pieza más a la izquierda en cada fila de piezas puede agruparse en un primer conglomerado de piezas y todas los demás piezas en un segundo conglomerado de piezas. El segundo conglomerado de piezas tiene que decodificarse antes que el segundo conglomerado de piezas.
Según una realización, el codificador codifica una indicación, tal como un indicador o un índice, por cada pieza, en donde la indicación es indicativa del conglomerado de piezas de la pieza. En una realización, el decodificador decodifica una indicación, tal como un indicador o un índice, por cada pieza, en donde la indicación es indicativa del conglomerado de piezas de la pieza. La indicación puede residir en, por ejemplo, una cabecera de corte, una cabecera de pieza, un conjunto de parámetros de imagen y/o un conjunto de parámetros de secuencia.
Según una realización, la imagen constituyente compartida puede tener una densidad de muestreo diferente que la de las piezas. Así, puede que sea necesario volver a muestrear como parte de la obtención del bloque de predicción. En la Figura 14 se ilustra un ejemplo, donde las piezas son partes de una primera imagen equirrectangular de 360 grados, y la imagen constituyente compartida es una segunda imagen equirrectangular de 360 grados que tiene la mitad de la resolución horizontal y verticalmente en comparación con la primera imagen equirrectangular de 360 grados.
Según una realización, un codificador codifica una información indicativa de la razón de muestreo entre la imagen constituyente compartida y la(s) pieza(s) en el flujo de bits. Del mismo modo, según una realización, un decodificador decodifica una información indicativa de la razón de muestreo entre la imagen constituyente compartida y la(s) pieza(s) del flujo de bits.
Según una realización, la posición de la unidad de predicción (rel_x, rel_y) se ajusta a escala según la razón de muestreo para la obtención de la posición de anclaje.
Según una realización, el vector de movimiento codificado o decodificado se ajusta posteriormente a escala según la razón de muestreo para obtener el bloque de predicción. Sin embargo, el vector de movimiento sin tal ajuste a escala se almacena en el campo de movimiento utilizado para referenciar. Esto puede ayudar a obtener un campo de movimiento coherente y, por tanto, aumentar la probabilidad de que haya disponibles candidatos de predicción adecuados.
Según una realización, un bloque de origen para obtener el bloque de predicción se identifica aplicando el vector de movimiento en relación con la posición de anclaje. En la presente memoria, el vector de movimiento y la posición de anclaje se pueden ajustar a escala tal y como se ha descrito anteriormente. El tamaño proporcional del bloque de origen en relación con el tamaño del bloque de predicción puede seleccionarse para que sea igual a la razón de muestreo. El bloque de origen se puede volver a muestrear según la razón de muestreo para obtener el bloque de predicción.
Según una realización, una unidad de predicción se parte en unas unidades de movimiento, que pueden comprender, por ejemplo, muestras de 4x4. Un vector de movimiento para cada unidad de movimiento puede obtenerse del vector de movimiento de la unidad de predicción según la razón de muestreo. Por ejemplo, si la razón de muestreo indica que el intervalo de muestreo de la imagen constituyente compartida es la mitad que el de las piezas tanto horizontal como verticalmente y si el vector de movimiento es (4, 4) en unidades de muestra, se puede deducir que los vectores de movimiento para las unidades de movimiento son iguales a (2, 2). Para cada unidad de movimiento se forman por separado una posición de anclaje y un bloque de predicción. Se puede deducir que la posición de anclaje es igual a (tile_x rel_x * 0,5, tile_y rel_y * 0,5), donde 0,5 es la razón de muestreo y (rel_x, rel_y) es la posición de la unidad de movimiento dentro de la pieza.
Según una realización, un codificador indica o concluye que hay que aplicar una transformación al bloque de origen para obtener un bloque de predicción, y posteriormente aplica la transformación. Del mismo modo, según una realización, un decodificador deduce o concluye que hay que aplicar una transformación al bloque de origen para obtener un bloque de predicción, y posteriormente aplica la transformación. La transformación puede ser, por ejemplo, una rotación de 90, 180 o 270 grados y/o una duplicación horizontal y/o una duplicación vertical. Por ejemplo, en unas imágenes que hay que codificar y/o en unas imágenes decodificadas, la imagen constituyente compartida puede haberse girado 90 grados en comparación con las piezas.
La expresión parámetros de movimiento por regiones puede definirse como una recopilación de los desfases vertical horizontal para la posición de anclaje (tile_ref_x, tile_ref_y), la razón de muestreo entre la imagen constituyente compartida y la pieza, en caso de que se aplique, y la transformación, si la hubiera, que hay que aplicar al bloque de origen que procede de la imagen constituyente compartida para obtener un bloque de predicción para codificar/decodificar una unidad de predicción en la pieza.
Según una realización, una unidad de predicción se parte en unas unidades de movimiento, en donde el vector de movimiento aplicado a la primera unidad de movimiento se refiere únicamente a muestras que hay dentro de la pieza, y se predice una segunda unidad de movimiento en relación con una posición de anclaje que es relativa a los desfases horizontal y vertical. Para cada unidad de movimiento se forman por separado una posición de anclaje y un bloque de predicción. Una posición de anclaje para la primera unidad de movimiento se obtiene convencionalmente, es decir, la posición de anclaje de vector de movimiento sigue siendo la posición de la primera unidad de movimiento. Se hace que una posición de anclaje para una segunda unidad de movimiento sea igual a (tile_x rel_x, tile_y rel_y), donde (rel_x, rel_y) es la posición de la unidad de movimiento en relación con la pieza actual.
Según una realización, cuando se está utilizando una copia intrabloque, el codificador y/o el decodificador infiere(n) que se usa un vector de movimiento nulo a partir de cualquiera de los siguientes aspectos:
- El codificador puede indicar en el flujo de bits, o el decodificador puede deducir a partir del flujo de bits, que el mecanismo de desfase de posición de anclaje de vector de movimiento se aplique a todos los vectores de movimiento de copia intrabloque del corte o de la pieza. En la presente memoria, el corte puede contener la pieza codificada (tal y como se menciona en otras realizaciones) o el corte puede estar contenido en la pieza codificada (tal y como se menciona en otras realizaciones). La indicación puede residir, por ejemplo, en la cabecera de pieza, el conjunto de parámetros de pieza, la cabecera de corte, el conjunto de parámetros de corte, la cabecera de imagen, el conjunto de parámetros de imagen, la cabecera de secuencia y/o el conjunto de parámetros de secuencia que aplica(n) al corte o a la pieza.
- El codificador indica que el desfase de posición de anclaje de vector de movimiento se usa en, por ejemplo, una unidad de codificación o una unidad de predicción y que la copia intrabloque se usa para la misma unidad de codificación o unidad de predicción, respectivamente, por ejemplo, indicando un índice de referencia de la imagen actual. Del mismo modo, el decodificador decide que el desfase de posición de anclaje de vector de movimiento se use a partir de, por ejemplo, una unidad de codificación o una unidad de predicción y que la copia intrabloque se use para la misma unidad de codificación o unidad de predicción, respectivamente, por ejemplo, decidiendo que un índice de referencia de la imagen actual se está utilizando para la unidad de codificación o la unidad de predicción, respectivamente.
Según una realización, como consecuencia de inferir que, cuando se está utilizando la copia intrabloque, se usa un vector de movimiento nulo, el codificador omite indicar y/o el decodificador omite decodificar los elementos sintácticos que son indicativos del candidato a vector de movimiento seleccionado o de la diferencia entre vectores de movimiento. Así, esta realización mejora el rendimiento de compresión.
Según una realización, cuando un candidato de predicción es un vector de movimiento de copia intrabloque y la PU actual no usa la imagen actual como imagen de referencia, el codificador y/o el decodificador excluye(n) el candidato de predicción de la lista de candidatos de predicción. En la presente memoria, el modo de predicción y/o el tipo de lista de candidatos no está(n) limitado(s) a ningún modo o tipo en particular y, por ejemplo, se puede(n) aplicar tanto a la AMVP como al modo de fusión de la HEVC, o similares. A pesar de la anteriormente descrita exclusión de vectores de movimiento de copia intrabloque, la lista de candidatos puede, por lo demás, obtenerse de la manera que se ha explicado anteriormente.
Según una realización, cuando un candidato de predicción es un vector de movimiento de copia intrabloque y la PU actual no usa la imagen actual como imagen de referencia, el codificador y/o el decodificador considera(n) que el candidato de predicción no está disponible para la obtención de la lista de candidatos de predicción. Por ejemplo, si una posición de candidato espacial B0 de entre las posibles posiciones encima de la PU actual contiene un vector de movimiento de copia intrabloque y la PU actual no usa la imagen actual como imagen de referencia, se considera que B0 no está disponible y se comprueba la siguiente posición de candidato posible en un orden predefinido de entre las posibles posiciones encima de la PU actual.
Según una realización, la anteriormente mencionada exclusión o consideración de indisponibilidad para la obtención de la lista de candidatos de predicción se aplica solo cuando el codificador y/o el decodificador infiere(n) que se usa un vector de movimiento nulo cuando se está utilizando la copia intrabloque, tal y como se ha descrito anteriormente.
Estas realizaciones excluyen los candidatos de predicción improbables de la lista de candidatos de predicción y, por tanto, aumenta la probabilidad de que la lista de candidatos de predicción contenga un candidato adecuado que pueda ser seleccionado por el codificador. En consecuencia, es probable que estas realizaciones mejoren el rendimiento de compresión.
Según una realización, se pueden indicar por separado unos parámetros de movimiento por regiones, tales como tile_ref_x y tile_ref_y, para distintos tipos de predicción o distintos tipos de referencias de predicción. Por ejemplo, se puede indicar un conjunto de parámetros de movimiento por regiones para la predicción de copia intrabloque y se puede indicar otro conjunto de parámetros de movimiento por regiones para la interpredicción (temporal). En otro ejemplo, se puede indicar un conjunto de parámetros de movimiento por regiones para imágenes de referencia temporal y se puede indicar otro conjunto de parámetros de movimiento por regiones para imágenes de referencia intervista.
Según una realización, se pueden indicar por separado unos parámetros de movimiento por regiones, tales como tile_ref_x y tile_ref_y, para cada imagen de referencia. El codificador puede, por ejemplo, estimar un movimiento global entre la imagen actual y una imagen de referencia y compensar el movimiento global estableciendo los valores de tile_ref_x y tile_ref_y consiguientemente. El codificador y el decodificador seleccionan qué par de valores tile_ref_x, tile ref_y se usa dependiendo de la imagen de referencia que se esté usando.
Hay que entender que, aunque se describan las realizaciones haciendo referencia al término pieza, las realizaciones se pueden aplicar igualmente a conjuntos de piezas. En este caso, una pieza que esté dentro de un conjunto de piezas puede usarse con fines convencionales, tal como para lograr un procesamiento paralelo. Un codificador puede indicar una conglomeración de piezas en unos conjuntos de piezas y/o una partición de imágenes en unos conjuntos de piezas en el flujo de bits, y un decodificador puede decodificar el agrupamiento de piezas en unos conjuntos de piezas y/o la partición de imágenes en unos conjuntos de piezas a partir del flujo de bits.
En general, las realizaciones se pueden aplicar a cualquier unidad o región para partir imágenes, tales como una o más piezas, cortes o segmentos de corte, y cualquier combinación de los mismos. Es decir, cuando las realizaciones se refieren al término pieza o pieza de calidad mejorada, las realizaciones se pueden aplicar igualmente a otra unidad espacial. Del mismo modo, cuando las realizaciones se refieren a la expresión imagen constituyente compartida o imagen constituyente, se pueden aplicar igualmente a otra unidad espacial. Un codificador puede indicar en el flujo de bits qué unidad espacial es el alcance de los parámetros de movimiento por regiones indicados y/o inferidos, y/o un decodificador puede decodificar a partir del flujo de bits qué unidad espacial es el alcance de los parámetros de movimiento por regiones indicados y/o inferidos.
En una realización, el alcance de los parámetros de movimiento por regiones se infiere de la estructura sintáctica que contiene parámetros de movimiento por regiones. Por ejemplo, si la cabecera de corte o el conjunto de parámetros de corte contiene parámetros de movimiento por regiones, se puede concluir que el alcance de los parámetros de movimiento por regiones es el corte respectivo.
En una realización, el alcance de los parámetros de movimiento por regiones se indica explícitamente en el flujo de bits y/o se decodifica a partir del flujo de bits. Por ejemplo, un codificador puede indicar junto con los parámetros de movimiento por regiones un rectángulo que define el alcance de los parámetros de movimiento por regiones. El rectángulo puede indicarse, por ejemplo, a través de su esquina superior izquierda, su anchura y su altura o a través de sus esquinas superior izquierda e inferior derecha. Las coordenadas y dimensiones del rectángulo pueden indicarse usando una cierta cuadrícula de partición, tal como la cuadrícula de piezas o la cuadrícula de CTU. Puede que sea necesario que el rectángulo conste de un número entero de unidades espaciales, tal como un número entero de piezas y cortes.
La Figura 15 ilustra una realización de una disposición de archivos contenedores. El flujo de bits codificado puede almacenarse como una pista de subimágenes de calidad de base que comprende las imágenes constituyentes compartidas y una pista de subimágenes o piezas por cada pieza de calidad mejorada. Se puede crear una pista de extractores para una combinación de piezas de calidad mejorada que abarque un cierto intervalo de orientaciones de visionado. La pista de extractores incluye unas referencias de pista a la pista de subimágenes de calidad de base y a las pistas de piezas o subimágenes de calidad mejorada seleccionadas. Entre las muestras de la pista de extractores se incluyen unos extractores que incluyen unos constructores que extraen datos de las pistas referidas. En otro ejemplo, la pista de extractores puede incluir los datos de vídeo codificados de las imágenes constituyentes compartidas y contener unos extractores que incluyen unos constructores que extraen datos de las pistas de subimágenes o piezas que contienen piezas de calidad mejorada.
En el archivo, por ejemplo, en el nivel de pista, pueden incluirse metadatos para indicar unas características de las pistas de extractores. Por ejemplo, pueden usarse metadatos de empaquetamiento por regiones para describir la relación de las regiones en las imágenes (de)codificadas en relación con la imagen proyectada de un cierto formato de proyección, tal como la proyección equirrectangular.
Se puede generar otro conjunto de pistas de extractores para otro campo de visión de ventana gráfica máximo objetivo, por ejemplo, extrayendo seis piezas de calidad mejorada (i.e., unas piezas 1, 2, 5, 6, 7, 8) en este ejemplo.
Según una realización, la autoría de archivos contenedores se aplica para múltiples versiones de tasa de bits, tal y como se muestra en el ejemplo de la Figura 16. Los flujos de bits codificados se almacenan en el archivo como pistas de piezas o subimágenes. Se indica un grupo de pistas de piezas o subimágenes que son alternativas para la extracción. En un grupo de alternativas para la extracción, las pistas de piezas o subimágenes no tienen por qué representar la misma región empaquetada, pero son del mismo tamaño en términos de anchura y altura en píxeles. El identificador de grupo de pistas tiene que ser diferente de todos los identificadores de pista. En el caso de ejemplo, en el archivo se genera un grupo de alternativas para la extracción y se indica que todas las pistas de piezas de calidad mejorada son miembros de este grupo de alternativas para la extracción.
En el archivo se crea una pista de extractores. Los extractores están configurados para referirse a la pista de calidad de base y al grupo de pistas alternativas para la extracción. En este ejemplo, una muestra comprende seis extractores, de los cuales dos se utilizan para extraer datos de la pista de calidad de base y cuatro se refieren a datos de las pistas de piezas o subimágenes de calidad mejorada y están etiquetados como a, b, c, d.
En una realización, en vez de almacenar la información de empaquetamiento por regiones en la pista de extractores, la información de empaquetamiento por regiones se divide en dos partes, donde un primer trozo excluye la ubicación de región empaquetada y se almacena en las pistas de piezas o subimágenes, y un segundo trozo incluye la ubicación de región empaquetada y se almacena en la pista de extractores.
En una realización, en vez de almacenar la información de empaquetamiento por regiones en la pista de extractores, la información de empaquetamiento por regiones se almacena en las pistas de piezas o subimágenes, y la ubicación y el tamaño de las pistas de piezas o subimágenes en la pista de extractores resuelta se indican mediante otra caja, tal como un grupo de pistas en particular. Por ejemplo, se puede usar un grupo de pistas de composición de subimágenes. Cuando una pista incluye una TrackGroupTypeBox con el tipo de pista de composición de subimágenes (i.e., una SubPictureCompositionBox), la pista pertenece a una composición de pistas que se pueden disponer espacialmente para obtener unas imágenes de composición. Las pistas visuales asignadas a esta agrupación representan colectivamente el contenido visual que se puede presentar. Cada pista visual individual asignada a esta agrupación puede o no estar destinada a presentarse sola sin otras pistas visuales, mientras que las imágenes de composición son aptas para presentarse. Se puede obtener una imagen de composición disponiendo espacialmente las salidas de decodificación de las muestras alineadas para la composición de todas las pistas que pertenecen al mismo grupo de pistas de composición de subimágenes. La SubPictureCompositionBox contiene la posición espacial, la anchura y la altura de la pista dentro de la imagen de composición.
En una realización, un escritor de archivos incluye la siguiente información en SubPictureCompositionBox: un índice máximo (max_index) y un índice de pista (track_index). Se puede permitir un max_index igual a 0, y puede especificar que una imagen de composición puede obtenerse de cualquier número de pistas de subimágenes. Un max_index mayor que 0 especifica que una imagen de composición se obtiene de las pistas de subimágenes con cada valor de track_index que esté en el intervalo de 0 a max_index, ambos incluidos. El valor de max_index es el mismo para todas las pistas que pertenecen al mismo grupo de pistas de composición de subimágenes. track_index especifica un índice de la pista de subimágenes en el grupo de pistas de composición de subimágenes. Todas las pistas que pertenecen al mismo grupo de alternativas (i.e., que tienen el mismo valor de alternate_group distinto de cero) tienen el mismo valor de track_index. El valor de track_index de una pista A no es igual que el valor de track_index de una pista B, a menos que la pista A y la pista B pertenezcan al mismo grupo de alternativas. En una realización, un analizador de archivos o similar detecta si hay huecos en los valores de track_index en el intervalo de 0 a max_index, ambos inclusive. Si es así, no se han recibido algunas pistas de subimágenes y se puede concluir que las imágenes de composición no se pueden reconstruir correctamente.
Según una realización, en un archivo contenedor y/o en una MPD se indican unas preselecciones de vídeo omnidireccional, por ejemplo, utilizando la función de preselección de DASH, cada una de las cuales define una combinación de pistas de piezas o subimágenes. Cada preselección indica de qué pista(s) de subimágenes o piezas individual(es) se extraen los datos. Se pueden indicar unas características de una preselección que, por ejemplo, comprenden la región esférica de calidad mejorada.
En una disposición alternativa mostrada en la Figura 17, los grupos de pistas alternativas para la extracción se forman a partir de grupos de alternativas en vez de a partir de pistas. En otras palabras, se indica que un(os) grupo(s) de alternativas completo(s) son miembros de un grupo de alternativas para la extracción.
Con las realizaciones de autoría de archivos contenedores anteriores, el receptor puede seleccionar cualquier combinación de pistas de piezas o subimágenes que haya que recibir y decodificar con una cierta pista de extractores. Por consiguiente, el número de flujos de bits codificados y de pistas de piezas de calidad mejorada almacenadas se reduce considerablemente en comparación con los que son necesarios en la SP-CILP.
En lo que sigue se analizan con más detalle algunas realizaciones referentes a un contenido estereoscópico.
Según una realización, se permite que unos vectores de movimiento de copia intrabloque para una unidad de predicción en una pieza de una vista predicha se refieran a la respectiva pieza de una vista independiente. La posición de anclaje de vector de movimiento para dichos vectores de movimiento se obtiene de manera convencional, es decir, sigue siendo la posición de la unidad de predicción actual.
Según una realización, un codificador indica en el flujo de bits que unas imágenes codificadas comprenden un contenido de más de una vista e indica la disposición de empaquetamiento del contenido de unas vistas en unas imágenes decodificadas. Cuando un vector de movimiento de una unidad de predicción de una segunda vista se refiere únicamente a unas muestras de una primera vista, el codificador obtiene la posición de anclaje de vector de movimiento de manera convencional, es decir, la posición de anclaje de vector de movimiento sigue siendo la posición de la unidad de predicción actual. De lo contrario, aplican unas realizaciones descritas anteriormente.
Según una realización, un decodificador decide a partir del flujo de bits que unas imágenes codificadas comprenden un contenido de más de una vista e indica la disposición de empaquetamiento de un contenido de unas vistas en unas imágenes decodificadas. Cuando un vector de movimiento de una unidad de predicción de una segunda vista se refiere únicamente a unas muestras de una primera vista, el decodificador obtiene la posición de anclaje de vector de movimiento de manera convencional, es decir, la posición de anclaje de vector de movimiento sigue siendo la posición de la unidad de predicción actual. De lo contrario, aplican unas realizaciones descritas anteriormente.
Según una realización, un codificador indica en el flujo de bits o el decodificador decodifica a partir del flujo de bits una región de origen permitida o una pieza de origen permitida o similar para una pieza de una vista predicha. Cuando el vector de movimiento se refiere únicamente a unas muestras de la región de origen permitida o de la pieza de origen permitida o similares, el codificador o el decodificador obtiene la posición de anclaje de vector de movimiento de manera convencional, es decir, la posición de anclaje de vector de movimiento sigue siendo la posición de la unidad de predicción actual. De lo contrario, aplican unas realizaciones descritas anteriormente.
En la Figura 18 se ilustra un ejemplo de una disposición para una codificación estereoscópica. La flecha ilustra un vector de movimiento para una unidad de predicción en una pieza R1 de la vista derecha. El vector de movimiento se refiere únicamente a una pieza L1 de la vista izquierda que corresponde a la pieza R1. Se puede suponer que, cuando se decodifica un contenido estereoscópico, se obtienen tanto la pieza L1 como la R1 y, por tanto, que la dependencia de predicción entre ellas es aceptable. Esta predicción puede considerarse parecida a la predicción intervista. El codificador establece un desfase horizontal y un desfase vertical para la posición de anclaje (tile_ref_x, tile_ref_y) para indicar la esquina superior izquierda de la pieza dentro de la respectiva imagen constituyente compartida. Por ejemplo, (tile_ref_x, tile_ref_y) para la pieza R1 indica la posición respectiva de la pieza R1 dentro de la imagen constituyente de calidad de base derecha.
La Figura 19 ilustra otro ejemplo de una disposición para una codificación estereoscópica. Aquí se supone que las piezas de calidad mejorada transmitidas abarcarían la ventana gráfica y, por tanto, la vista predicha de calidad de base (la vista derecha en este ejemplo) podría no ser útil para la visualización y también desfavorable para el rendimiento tasa-distorsión. El ejemplo es parecido al ejemplo anterior, salvo que, cuando establece un desfase horizontal y un desfase vertical para la posición de anclaje (tile_ref_x, tile_ref_y) para las piezas de vista predicha, el codificador puede usar, por ejemplo, una disparidad media o global entre las vistas para indicar la posición relativa de la pieza dentro de la imagen constituyente compartida.
La Figura 20 muestra un diagrama de bloques de un decodificador de vídeo que es apto para emplear unas realizaciones de la invención. La Figura 20 representa una estructura de un decodificador de dos capas, pero se apreciará que las operaciones de decodificación pueden emplearse igualmente en un decodificador monocapa.
El decodificador 550 de vídeo comprende una primera sección 552 de decodificador para una capa base y una segunda sección 554 de decodificador para una capa predicha. Un bloque 556 ilustra un demultiplexor para distribuir información sobre unas imágenes de capa base a la primera sección 552 de decodificador y para distribuir información sobre unas imágenes de capa predicha a la segunda sección 554 de decodificador. La referencia P'n representa una representación predicha de un bloque de imagen. La referencia D'n representa una señal de error de predicción reconstruida. Los bloques 704, 804 ilustran imágenes reconstruidas preliminares (I'n). La referencia R'n representa una imagen reconstruida final. Los bloques 703, 803 ilustran la transformada inversa (T-1). Los bloques 702, 802 ilustran la cuantificación inversa (Q-1). Los bloques 701, 801 ilustran la decodificación por entropía (E-1). Los bloques 705, 805 ilustran una memoria de fotograma de referencia (RFM). Los bloques 706, 806 ilustran la predicción (P) (ya sea interpredicción o intrapredicción). Los bloques 707, 807 ilustran el filtrado (F). Los bloques 708, 808 pueden usarse para combinar una información de errores de predicción decodificada con unas imágenes de capa predicha/capa base predichas para obtener las imágenes reconstruidas preliminares (I'n). Se puede dar salida 709 a unas imágenes de capa base reconstruidas y filtradas preliminares de la primera sección 552 de decodificador y se puede dar salida a 809 a unas imágenes de capa base reconstruidas y filtradas preliminares de la primera sección 554 de decodificador.
Según un aspecto de la invención, el decodificador puede estar dispuesto para llevar a cabo un método de decodificación. El método de decodificación comprende, tal y como se muestra en la Figura 21, decodificar una pieza codificada en una pieza decodificada, comprendiendo la decodificación: decodificar (2100) un desfase horizontal y un desfase vertical; decodificar (2102) una indicación de que una unidad de predicción en una posición de una primera coordenada horizontal y una primera coordenada vertical de la pieza codificada se ha predicho en relación con una posición de anclaje de unidad de predicción que es relativa a los desfases horizontal y vertical; obtener (2104) una posición de anclaje de unidad de predicción que sea igual a la suma de la primera coordenada horizontal y del desfase horizontal, y de la primera coordenada vertical y el desfase vertical, respectivamente; determinar (2106) un vector de movimiento para la unidad de predicción; y aplicar (2108) el vector de movimiento en relación con la posición de anclaje de unidad de predicción para obtener un bloque de predicción.
El desfase horizontal y/o el desfase vertical puede(n) ser indicativo(s) de una ubicación que está fuera de la pieza decodificada. La determinación (2106) de un vector de movimiento para la unidad de predicción puede hacerse, por ejemplo, decodificando el vector de movimiento procedente de la pieza codificada.
En una realización, el método de decodificación comprende además decodificar una imagen constituyente codificada en una imagen constituyente decodificada, y en donde el vector de movimiento es indicativo de una ubicación dentro de la imagen constituyente decodificada.
En una realización, la pieza decodificada representa un subconjunto de contenido representado por la imagen constituyente decodificada. La pieza decodificada puede tener, por ejemplo, una mayor fidelidad en comparación con la de la imagen constituyente decodificada. El desfase horizontal y/o el desfase vertical puede(n) ser indicativo(s) de la correspondencia entre ubicaciones de la pieza decodificada en relación con la imagen constituyente decodificada.
En una realización, el método de decodificación comprende además decodificar unos metadatos de empaquetamiento por regiones de o a lo largo de la pieza codificada y/o la imagen constituyente codificada, tal como de un archivo que contiene la pieza codificada y/o la imagen constituyente codificada, y concluir a partir de la correspondencia entre ubicaciones de metadatos de empaquetamiento por regiones de la pieza decodificada en relación con la imagen constituyente decodificada. La correspondencia entre ubicaciones puede concluirse en, por ejemplo, una imagen proyectada de un formato de proyección omnidireccional particular o en una esfera sobre la que se pueden proyectar la imagen constituyente decodificada y la pieza decodificada.
En una realización, el método de decodificación comprende además concluir que la pieza decodificada se usa en la visualización, siempre y cuando la pieza decodificada y la imagen constituyente decodificada se solapen, basándose en su correspondencia entre ubicaciones. El método de decodificación puede, por ejemplo, decodificar una información de clasificación de calidades por regiones que proporciona unos valores de clasificación de calidades para unas regiones en unas imágenes decodificadas, incluyendo las regiones la pieza decodificada y la imagen constituyente decodificada. La información de clasificación de calidades por regiones puede estar disponible en o a lo largo de la pieza codificada y/o la imagen constituyente codificada, tal como en un archivo que contenga la pieza codificada y/o la imagen constituyente codificada. Basándose en la información de clasificación de calidades por regiones decodificada, el método de decodificación puede concluir que la pieza decodificada tiene una mayor calidad que la imagen constituyente decodificada y, por tanto, la pieza decodificada se usa para la visualización, siempre y cuando la pieza decodificada y la imagen constituyente decodificada se solapen, basándose en su correspondencia entre ubicaciones.
En una realización, la pieza decodificada representa una vista diferente de un vídeo/imagen multivista que la imagen constituyente decodificada. El método de decodificación puede decodificar una información de o a lo largo de la pieza codificada y/o de la imagen constituyente codificada sobre qué vistas representan, tal como un índice de vista o una indicación de la vista izquierda frente a la derecha para un contenido estereoscópico. Por ejemplo, una disposición de empaquetamiento de fotogramas se puede decodificar según un método SEI de H.264/AVC o de la h Ev C, y/o la información de vista se puede decodificar a partir de unos metadatos de empaquetamiento por regiones.
En la presente memoria, debe interpretarse que el decodificador abarca cualquier unidad operativa que sea capaz de llevar a cabo las operaciones de decodificación, tal como un reproductor, un receptor, una pasarela, un demultiplexor y/o un decodificador.
Las operaciones de decodificación pueden llevarse a cabo con un códec monocapa, tal como el códec de perfil principal de HEVC, es decir, no se requiere ninguna ampliación de codificación escalable. El uso de imágenes de códec compartidas, tal y como se ha descrito anteriormente, permite una funcionalidad similar a la proporcionada en el enfoque de ROI con SHVC por las imágenes IRAP poco frecuentes en la capa base y las imágenes IRAP relativamente frecuentes en las capas de mejora. Esta funcionalidad se puede utilizar para conseguir una capacidad de cambio frecuente con una penalización de tasa-distorsión moderada.
La Figura 22 es una representación gráfica de un sistema de comunicación multimedia de ejemplo dentro del cual pueden implementarse diversas realizaciones. Una fuente 1510 de datos proporciona una señal de origen en un formato digital analógico, no comprimido digital o comprimido digital, o cualquier combinación de estos formatos. Un codificador 1520 puede incluir o estar conectado a un preprocesamiento, tal como una conversión y/o un filtrado de formato de datos de la señal de origen. El codificador 1520 codifica la señal de origen en un flujo de bits de medios codificados. Debe observarse que un flujo de bits a decodificar puede recibirse directa o indirectamente desde un dispositivo remoto ubicado dentro de prácticamente cualquier tipo de red. De forma adicional, el flujo de bits puede recibirse desde hardware o software local. El codificador 1520 puede ser capaz de codificar más de un tipo de medio, tal como audio y vídeo, o puede requerirse más de un codificador 1520 para codificar diferentes tipos de medios de la señal de origen. El codificador 1520 también puede obtener una entrada producida sintéticamente, tal como gráficos y texto, o puede ser capaz de producir flujos de bits codificados de medios sintéticos. A continuación, solo se considera el procesamiento de un flujo de bits de medios codificados de un tipo de medios para simplificar la descripción. Debe observarse, sin embargo, que típicamente los servicios de difusión en tiempo real comprenden varios flujos (típicamente al menos un flujo de audio, de vídeo y de subtítulos de texto). También debe tenerse en cuenta que el sistema puede incluir muchos codificadores, pero en la figura solo se representa un codificador 1520 para simplificar la descripción sin una falta de generalidad. Debe entenderse además que, aunque el texto y los ejemplos contenidos en la presente memoria pueden describir específicamente un proceso de codificación, un experto en la técnica entendería que los mismos conceptos y principios también se aplican al proceso de decodificación correspondiente y viceversa.
El flujo de bits de medios codificados puede transferirse a un almacenamiento 1530. El almacenamiento 1530 puede comprender cualquier tipo de memoria masiva para almacenar el flujo de bits de medios codificados. El formato del flujo de bits de medios codificado en el almacenamiento 1530 puede ser un formato de flujo de bits autónomo elemental, o uno o más flujos de bits de medios codificados pueden encapsularse en un archivo contenedor, o el flujo de bits de medios codificado puede encapsularse en un formato de segmento adecuado para la DASH (o un sistema de transmisión en continuo similar) y almacenarse como una secuencia de segmentos. Si uno o más flujos de bits de medios están encapsulados en un archivo contenedor, puede usarse un generador de archivos (no mostrado en la figura) para almacenar el uno más flujos de bits de medios en el archivo y crear metadatos de formato de archivo, que también pueden almacenarse en el archivo. El codificador 1520 o el almacenamiento 1530 pueden comprender el generador de archivos, o el generador de archivos está conectado operativamente al codificador 1520 o al almacenamiento 1530. Algunos sistemas operan en “vivo” , es decir, omiten el almacenamiento y la transferencia del flujo de bits de medios codificados desde el codificador 1520 directamente al emisor 1540. El flujo de bits de medios codificados puede entonces transferirse al emisor 1540, también denominado servidor, basándose en la necesidad. El formato usado en la transmisión puede ser un formato de flujo de bits autónomo elemental, un formato de flujo de paquetes o un formato de segmento adecuado para la DASH (o un sistema de transmisión en continuo parecido), o uno o más flujos de bits de medios codificados pueden estar encapsulados en un archivo contenedor. El codificador 1520, el almacenamiento 1530 y el servidor 1540 pueden residir en el mismo dispositivo físico o pueden incluirse en dispositivos separados. El codificador 1520 y el servidor 1540 pueden funcionar con contenido en tiempo real en vivo, en cuyo caso el flujo de bits de medios codificados típicamente no se almacena permanentemente, sino más bien se almacena en memoria intermedia durante pequeños períodos de tiempo en el codificador 1520 de contenido y/o en el servidor 1540 para suavizar variaciones en el retardo de procesamiento, retardo de transferencia y tasa de bits codificada.
El servidor 1540 envía el flujo de bits de medios codificados usando una pila de protocolos de comunicación. La pila puede incluir, aunque no de forma limitativa, uno o más del Real-Time Transport Protocol (protocolo de transporte en tiempo real - RTP), el User Datagram Protocol (protocolo de datagramas de usuario - UDP), el Hypertext Transfer Protocol (protocolo de transferencia de hipertexto - HTTP), el Transmission Control Protocol (protocolo de control de transmisión - TCP) y el Internet Protocol (protocolo de internet - IP). Cuando la pila de protocolos de comunicación está orientada a paquetes, el servidor 1540 encapsula el flujo de bits de medios codificados en paquetes. Por ejemplo, cuando se usa RTP, el servidor 1540 encapsula el flujo de bits de medios codificados en paquetes RTP según un formato de carga útil del RTP. Típicamente, cada tipo de medio tiene un formato de carga útil del RTP especializado. Debe observarse nuevamente que un sistema puede contener más de un servidor 1540, pero por motivos de simplicidad, la siguiente descripción solo considera un servidor 1540.
Si el contenido de medios está encapsulado en un archivo contenedor para el almacenamiento 1530 o para introducir los datos en el emisor 1540, el emisor 1540 puede comprender o estar unido operativamente a un “ analizador de archivos de envío” (no mostrado en la figura). En particular, si el archivo de contenedor no se transmite como tal pero al menos uno del flujo de bits de medios codificados contenido está encapsulado para el transporte a través de un protocolo de comunicación, un analizador de archivos de envío ubica las partes apropiadas del flujo de bits de medios codificados a transportar a través del protocolo de comunicación. El analizador de archivos de envío también puede ayudar a crear el formato correcto para el protocolo de comunicación, tal como las cabeceras de paquetes y cargas útiles. El archivo contenedor multimedia puede contener unas instrucciones de encapsulación, tales como unas pistas de indicación en el ISOBMFF, para una encapsulación del al menos uno de los flujos de bits de medios contenidos en el protocolo de comunicación.
El servidor 1540 puede o no estar conectado a una pasarela 1550 a través de una red de comunicación, que puede ser, por ejemplo, una combinación de una CDN, internet y/o una o más redes de acceso. La pasarela también, o alternativamente, se puede denominar caja intermedia. Para la DASH, la pasarela puede ser un servidor de borde (de una CDN) o un proxy web. Se observa que el sistema puede comprender generalmente cualquier número de puertas de enlace o similar, pero por motivos de simplicidad, la siguiente descripción solo considera una puerta 1550 de enlace. La puerta 1550 de enlace puede realizar diferentes tipos de funciones, tales como la traducción de un flujo de paquetes según una pila de protocolos de comunicación a otra pila de protocolos de comunicación, la fusión y bifurcación de flujos de datos, y la manipulación de flujo de datos según las capacidades de enlace descendente y/o receptor, tal como controlar la tasa de bits del flujo reenviado según las condiciones de red de enlace descendente predominantes. En diversas realizaciones, la pasarela 1550 puede ser una entidad de servidor.
El sistema incluye uno o más receptores 1560, normalmente capaces de recibir, demodular y desencapsular la señal transmitida en un flujo de bits de medios codificados. El flujo de bits de medios codificados puede transferirse a un almacenamiento 1570 de grabación. El almacenamiento 1570 de grabación puede comprender cualquier tipo de memoria masiva para almacenar el flujo de bits de medios codificados. El almacenamiento 1570 de grabación puede comprender alternativa o aditivamente memoria de cálculo, tal como memoria de acceso aleatorio. El formato del flujo de bits de medios codificados en el almacenamiento 1570 de grabación puede ser un formato de flujo de bits autónomo elemental, o bien uno o más flujos de bits de medios codificados pueden encapsularse en un archivo contenedor. Si hay múltiples flujos de bits de medios codificados, tales como un flujo de audio y un flujo de vídeo, asociados entre sí, típicamente se usa un archivo de contenedor y el receptor 1560 comprende o está unido a un generador de archivo de contenedor que produce un archivo de contenedor a partir de flujos de entrada. Algunos sistemas operan en “vivo” , es decir, omiten el almacenamiento 1570 de grabación y la transferencia del flujo de bits de medios codificados desde el receptor 1560 directamente al decodificador 1580. En algunos sistemas, solo se mantiene la parte más reciente del flujo registrado, p. ej., el extracto de los 10 minutos más recientes del flujo registrado, en el almacenamiento 1570 de grabación, mientras que cualquier dato registrado anteriormente se descarta del almacenamiento 1570 de grabación.
El flujo de bits de medios codificados puede transferirse desde el almacenamiento 1570 de grabación al decodificador 1580. Si hay muchos flujos de bits de medios codificados, tales como un flujo de audio y un flujo de video, asociados entre sí y encapsulados en un archivo contenedor o se encapsula un único flujo de bits de medios en un archivo contenedor, p. ej., para un acceso más fácil, se usa un analizador de archivos (no mostrado en la figura) para desencapsular cada flujo de bits de medios codificados desde el archivo contenedor. El almacenamiento 1570 de grabación o un decodificador 1580 puede comprender el analizador de archivos, o el analizador de archivos está unido o bien al almacenamiento 1570 de grabación o bien al decodificador 1580. También debe tenerse en cuenta que el sistema puede incluir muchos decodificadores, pero en este punto solo se describe un decodificador 1570 para simplificar la descripción sin una falta de generalidad
El flujo de bits de medios codificados puede procesarse además mediante un decodificador 1570, cuya salida es uno o más flujos de medios no comprimidos. Finalmente, un representador 1590 puede reproducir los flujos de medios no comprimidos con un altavoz o una pantalla, por ejemplo. El receptor 1560, el almacenamiento 1570 de grabación, el decodificador 1570 y el representador 1590 pueden residir en el mismo dispositivo físico o pueden incluirse en dispositivos separados.
Un remitente 1540 y/o una pasarela 1550 puede(n) configurarse para realizar un cambio entre distintas representaciones, por ejemplo, para cambiar entre distintas ventanas gráficas de un contenido de vídeo de 360 grados, cambiar de vista o realizar una adaptación de tasa de bits y/o un inicio rápido, y/o un remitente 1540 y/o una pasarela 1550 puede(n) configurarse para seleccionar la(s) representación(ones) transmitida(s). El cambio entre distintas representaciones puede tener lugar por múltiples razones, tales como para responder a solicitudes del receptor 1560 o a condiciones predominantes, tales como el caudal, de la red por la cual se transmite el flujo de bits. En otras palabras, el receptor 1560 puede iniciar el cambio entre representaciones. Una solicitud del receptor puede ser, por ejemplo, una solicitud de un segmento o un subsegmento de una representación diferente que la anterior o una solicitud para un cambio de capas y/o subcapas de escalabilidad transmitidas o un cambio de un dispositivo de renderizado que tiene capacidades diferentes en comparación con el anterior. Una solicitud de un segmento puede ser una solicitud GET de HTTP. Una solicitud de un subsegmento puede ser una solicitud GET de HTTP con un intervalo de bytes. Adicional o alternativamente, puede usarse un ajuste de tasa de bits o una adaptación de tasa de bits para, por ejemplo, proporcionar un denominado inicio rápido en servicios de transmisión en continuo, donde la tasa de bits del flujo transmitido es menor que la tasa de bits de canal después de iniciar o acceder aleatoriamente a la transmisión en continuo para iniciar inmediatamente la reproducción y para lograr un nivel de ocupación de memoria intermedia que tolere retardos y/o retransmisiones de paquetes ocasionales. La adaptación de tasa de bits puede incluir múltiples operaciones de representación o de cambio ascendente de capa y representación o de cambio descendente de capa que tienen lugar en diversos órdenes.
Un decodificador 1580 puede configurarse para realizar un cambio entre distintas representaciones, por ejemplo, para cambiar entre distintas ventanas de visualización de un contenido de vídeo de 360 grados, cambiar de vistas o realizar una adaptación de tasa de bits y/o un inicio rápido, y/o un decodificador 1580 puede configurarse para seleccionar la(s) representación(ones) transmitida(s). El cambio entre distintas representaciones puede tener lugar por múltiples razones, tales como conseguir una operación de decodificación más rápida o adaptar el flujo de bits transmitido, por ejemplo, en términos de tasa de bits, a las condiciones predominantes, tales como el caudal, de la red por la cual se transmite el flujo de bits. Puede que sea necesaria una operación de decodificación más rápida si, por ejemplo, el dispositivo que incluye el decodificador 1580 está realizando múltiples tareas y utilizando recursos de cálculo para fines distintos que la decodificación del flujo de bits de vídeo. En otro ejemplo, podría ser necesaria una operación de decodificación más rápida cuando el contenido se reproduce a un ritmo más rápido que la velocidad de reproducción normal, p. ej., dos veces o tres veces más rápido que la tasa de reproducción en tiempo real convencional.
En lo anterior se han descrito algunas realizaciones haciendo referencia y/o usando la terminología de la HEVC. Hay que entender que pueden realizarse igualmente realizaciones con cualquier codificador de vídeo y/o decodificador de vídeo.
En lo anterior se han descrito algunas realizaciones haciendo referencia a segmentos, por ejemplo, tal y como se definen en MPEG-DASH. Hay que entender que pueden, igualmente, realizarse unas realizaciones con subsegmentos, por ejemplo, tal y como se definen en MPEG-DASH.
En lo anterior se han descrito algunas realizaciones en relación con la DASH o MPEG-DASH. Hay que entender que podrían, igualmente, realizarse unas realizaciones con cualquier otro sistema de transmisión en continuo parecido y/o con cualquier protocolo parecido a los utilizados en la DASH, y/o con cualquier formato de segmento y/o de manifiesto parecido a los utilizados en la DASH, y/o con cualquier funcionamiento de cliente parecido al de un cliente DASH. Por ejemplo, algunas realizaciones podrían realizarse con el formato de manifiesto<m>3<u>.
En lo anterior se han descrito algunas realizaciones en relación con el ISOBMFF, por ejemplo, en el caso del formato de segmento. Hay que entender que podrían, igualmente, realizarse unas realizaciones con cualquier otro formato de archivo, tal como Matroska, que tenga una capacidad y/o unas estructuras parecidas a las del ISOBMFF.
En lo anterior, cuando se han descrito las realizaciones de ejemplo con referencia a un codificador, debe entenderse que el flujo de bits resultante y el decodificador pueden tener elementos correspondientes en ellos. De la misma manera, cuando se han descrito las realizaciones de ejemplo con referencia a un decodificador, debe entenderse que el codificador puede tener una estructura y/o un programa informático para generar el flujo de bits para que se decodifique por el decodificador. Por ejemplo, se han descrito algunas realizaciones que están relacionadas con la generación de un bloque de predicción como parte de la codificación. Se pueden, igualmente, realizar unas realizaciones generando un bloque de predicción como parte de la decodificación, con la diferencia de que unos parámetros de codificación, tales como el desfase horizontal y el desfase vertical, se decodifican a partir del flujo de bits en vez ser determinados por el codificador.
Las realizaciones de la invención descritas anteriormente describen el códec en términos de un aparato codificador y decodificador separado para ayudar al entendimiento de los procesos implicados. Sin embargo, se apreciará que el aparato, las estructuras y las operaciones pueden implementarse como un único aparato/estructura/operación de codificador-decodificador. Además, es posible que el codificador y el decodificador puedan compartir algunos o todos los elementos comunes.
Aunque los ejemplos anteriores describen realizaciones de la invención que funcionan dentro de un códec dentro de un dispositivo electrónico, se apreciará que la invención, como se define en las reivindicaciones, puede implementarse como parte de cualquier códec de vídeo. Por lo tanto, por ejemplo, las realizaciones de la invención pueden implementarse en un códec de vídeo que puede implementar la codificación de vídeo a través de rutas de comunicación fijas o por cable.
Por lo tanto, el equipo de usuario puede comprender un códec de vídeo tal como los descritos en las realizaciones de la invención anteriores. Se apreciará que el término equipo de usuario está destinado a cubrir cualquier tipo adecuado de equipo de usuario inalámbrico, tal como teléfonos móviles, dispositivos portátiles de procesamiento de datos o navegadores web portátiles.
Además, los elementos de una public land mobile network (red móvil pública terrestre - PLMN) también pueden comprender códecs de vídeo como se ha descrito anteriormente.
En general, las diversas realizaciones de la invención pueden implementarse en hardware o circuitos de propósito especial, software, lógica o cualquier combinación de los mismos. Por ejemplo, algunos aspectos pueden implementarse en hardware, mientras que otros aspectos pueden implementarse en firmware o software que puede ejecutarse por un controlador, microprocesador u otro dispositivo informático, aunque la invención no se limita a los mismos. Aunque diversos aspectos de la invención pueden ilustrarse y describirse como diagramas de bloques, diagramas de flujo, o usando alguna otra representación gráfica, se entiende que estos bloques, aparatos, sistemas, técnicas o métodos descritos en la presente memoria pueden implementarse, como ejemplos no limitativos, en hardware, software, firmware, circuitos o lógica de propósito especial, hardware de propósito general o controlador u otros dispositivos informáticos, o alguna combinación de los mismos.
Las realizaciones de esta invención pueden implementarse mediante software informático ejecutable por un procesador de datos del dispositivo móvil, tal como en la entidad de procesador, o mediante hardware, o mediante una combinación de software y hardware. Además, en este sentido, cabe señalar que cualesquiera bloques del flujo lógico como en las Figuras puede representar pasos del programa, o circuitos lógicos interconectados, bloques y funciones, o una combinación de pasos de programa y circuitos lógicos, bloques y funciones. El software puede almacenarse en medios físicos tales como chips de memoria, o bloques de memoria implementados dentro del procesador, medios magnéticos tales como disco duro o disquetes, y medios ópticos tales como, por ejemplo, DVD y sus variantes de datos, CD.
La memoria puede ser de cualquier tipo adecuado para el entorno técnico local y puede implementarse usando cualquier tecnología de almacenamiento de datos adecuada, tal como dispositivos de memoria basados en semiconductores, dispositivos y sistemas de memoria magnéticos, dispositivos y sistemas de memoria ópticos, memoria fija y memoria extraíble. Los procesadores de datos pueden ser de cualquier tipo adecuado para el entorno técnico local, y pueden incluir uno o más de ordenadores de propósito general, ordenadores de propósito especial, microprocesadores, digital signal processors (procesadores de señales digitales - DSP) y procesadores basados en arquitectura de procesador de múltiples núcleos, como ejemplos no limitativos.
Las realizaciones de las invenciones pueden ponerse en práctica en diversos componentes tales como módulos de circuito integrado. El diseño de circuitos integrados es, en gran medida, un proceso altamente automatizado. Hay herramientas de software complejas y potentes disponibles para convertir un diseño de nivel lógico en un diseño de circuito de semiconductores listo para grabarse y formarse en un sustrato semiconductor.
Los programas, tales como los proporcionados por Synopsys, Inc. de Mountain View, California y Cadence Design, de San Jose, California, enrutan automáticamente conductores y localizan componentes en un chip de semiconductor usando reglas de diseño bien establecidas, así como bibliotecas de módulos de diseño previamente almacenados. Una vez que se ha completado el diseño para un circuito de semiconductor, el diseño resultante, en un formato electrónico normalizado (p. ej., Opus, GDSII o similar) puede transmitirse a una instalación de fabricación de semiconductores o “ fab” para su fabricación.
La descripción anterior ha proporcionado, a modo de ejemplo y como ejemplos no limitativos, una descripción completa e informativa de la realización ilustrativa de esta invención. Sin embargo, diversas modificaciones y adaptaciones pueden resultar evidentes para los expertos en las técnicas relevantes a la vista de la descripción anterior, cuando se lee junto con los dibujos adjuntos y las reivindicaciones adjuntas.
Claims (1)
- REIVINDICACIONESUn método que comprende:codificar (1200) una primera imagen de entrada en una imagen constituyente codificada, en donde la imagen constituyente codificada comprende una representación codificada de calidad de base de un campo de visión completo de un contenido de la imagen de entrada;reconstruir (1202), como parte de dicha codificación, una imagen constituyente decodificada que corresponde a la imagen constituyente codificada; ycodificar (1204) una región espacial de la primera imagen de entrada o una segunda imagen de entrada en una pieza codificada que comprende una representación codificada de mayor calidad de al menos una parte del campo de visión del contenido de la imagen de entrada, comprendiendo la codificación (1204):determinar (1204a) un desfase horizontal y un desfase vertical que son indicativos de una posición de anclaje por regiones de la región espacial que está dentro de la imagen constituyente decodificada;codificar (1204b) el desfase horizontal y el desfase vertical; determinar (1204c) que una unidad de predicción en una posición de una primera coordenada horizontal y una primera coordenada vertical de la pieza codificada se predice en relación con la posición de anclaje por regiones, en donde la primera coordenada horizontal y la primera coordenada vertical son unas coordenadas horizontal y vertical, respectivamente, dentro de la región espacial;indicar (1204d) que la unidad de predicción se predice en relación con una posición de anclaje de unidad de predicción que es relativa al desfase horizontal y al desfase vertical; obtener (1204e) la posición de anclaje de unidad de predicción que es igual a la suma de la primera coordenada horizontal y del desfase horizontal, y de la primera coordenada vertical y el desfase vertical, respectivamente;determinar (1204f) un vector de movimiento para la unidad de predicción; y aplicar (1204g) el vector de movimiento en relación con la posición de anclaje de unidad de predicción para obtener un bloque de predicción.Un aparato que comprende unos medios configurados para:codificar (1200) una primera imagen de entrada en una imagen constituyente codificada, en donde la imagen constituyente codificada comprende una representación codificada de calidad de base de un campo de visión completo de un contenido de la imagen de entrada;reconstruir (1202), como parte de dicha codificación, una imagen constituyente decodificada que corresponde a la imagen constituyente codificada;codificar (1204) una región espacial de la primera imagen de entrada o una segunda imagen de entrada en una pieza codificada que comprende una representación codificada de mayor calidad de al menos una parte del campo de visión del contenido de la imagen de entrada, comprendiendo la codificación (1204):determinar (1204a) un desfase horizontal y un desfase vertical que son indicativos de una posición de anclaje por regiones de la región espacial que está dentro de la imagen constituyente decodificada;codificar (1204b) el desfase horizontal y el desfase vertical;determinar (1204c) que una unidad de predicción en una posición de una primera coordenada horizontal y una primera coordenada vertical de la pieza codificada se predice en relación con la posición de anclaje por regiones, en donde la primera coordenada horizontal y la primera coordenada vertical son unas coordenadas horizontal y vertical, respectivamente, dentro de la región espacial;indicar (1204d) que la unidad de predicción se predice en relación con una posición de anclaje de unidad de predicción que es relativa al desfase horizontal y al desfase vertical; obtener (1204e) la posición de anclaje de unidad de predicción que es igual a la suma de la primera coordenada horizontal y del desfase horizontal, y de la primera coordenada vertical y el desfase vertical, respectivamente;determinar (1204f) un vector de movimiento para la unidad de predicción; y aplicar (1204g) el vector de movimiento en relación con la posición de anclaje de unidad de predicción para obtener un bloque de predicción.El aparato según la reivindicación 2, en donde se hace que el aparato además:extraiga la región espacial de la primera imagen de entrada; ydetermine el desfase horizontal y el desfase vertical en función de una ubicación de la región espacial que está dentro de la primera imagen de entrada.4. El aparato según la reivindicación 2, en donde la primera imagen de entrada representa una primera vista, y en donde se hace que el aparato además:obtenga la región espacial a partir de una segunda imagen de entrada que representa una segunda vista que es diferente de la primera vista.5. El aparato según cualquiera de las reivindicaciones 2 a 4, en donde la primera imagen de entrada comprende una imagen constituyente y la pieza codificada, y se hace que el aparato además:determine que el vector de movimiento es nulo; eindique que la primera imagen de entrada es una imagen de referencia para el vector de movimiento.6. El aparato según cualquiera de las reivindicaciones 2 a 4, en donde la imagen constituyente codificada comprende la imagen constituyente y una imagen codificada comprende la pieza codificada, y en donde se hace que el aparato además: indique que la imagen constituyente codificada es una imagen de referencia para el vector de movimiento.7. El aparato según cualquiera de las reivindicaciones 2 a 6, en donde, para indicar que la imagen constituyente codificada es la imagen de referencia para el vector de movimiento, se hace que el aparato además: determine el vector de movimiento, de manera que la aplicación del vector de movimiento en relación con una posición de la unidad de predicción hace que, en la obtención del bloque de predicción, se utilice al menos una muestra que está fuera de la pieza codificada.8. El aparato según cualquiera de las reivindicaciones 2 a 7, en donde se hace que el aparato además: infiera que se usa un vector de movimiento nulo cuando se está utilizando una copia intrabloque indicando en el flujo de bits que se aplica un mecanismo de desfase a todos los vectores de movimiento de copia intrabloque de la pieza codificada o a un corte que comprende la pieza codificada.9. El aparato según la reivindicación 8, en donde se hace que el aparato además: omita, en respuesta a inferir de que se usa un vector de movimiento nulo cuando se está utilizando una copia intrabloque, indicar unos elementos sintácticos indicativos de un candidato de vector de movimiento seleccionado o de una diferencia entre vectores de movimiento.10. Un método para decodificar una pieza codificada de una primera imagen de entrada codificada en una pieza decodificada, comprendiendo la decodificación:decodificar (2100) un desfase horizontal y un desfase vertical;decodificar (2102) una indicación de que una unidad de predicción que está en una posición de una primera coordenada horizontal y una primera coordenada vertical de la pieza codificada se predice en relación con una posición de anclaje de unidad de predicción que es relativa al desfase horizontal y al desfase vertical;obtener (2104) la posición de anclaje de unidad de predicción que es igual a la suma de la primera coordenada horizontal y del desfase horizontal, y de la primera coordenada vertical y el desfase vertical, respectivamente;determinar (2106) un vector de movimiento para la unidad de predicción; yaplicar (2108) el vector de movimiento en relación con la posición de anclaje de unidad de predicción para obtener un bloque de predicción.11. El método según la reivindicación 10, en donde dicha indicación se concluye a partir del vector de movimiento cuando la aplicación del vector de movimiento en relación con una posición de la unidad de predicción hace que, en una obtención del bloque de predicción, se utilice al menos una muestra que está fuera de la pieza decodificada.12. Un aparato que decodifica una pieza codificada de una primera imagen de entrada codificada en una pieza decodificada que comprende medios configurados para:decodificar (2100) un desfase horizontal y un desfase vertical;decodificar (2102) una indicación de que una unidad de predicción en una posición de una primera coordenada horizontal y una primera coordenada vertical de la pieza codificada se predice en relación con una posición de anclaje de unidad de predicción que es relativa al desfase horizontal y al desfase vertical;obtener (2104) la posición de anclaje de unidad de predicción que es igual a la suma de la primera coordenada horizontal y del desfase horizontal, y de la primera coordenada vertical y el desfase vertical, respectivamente;determinar (2106) un vector de movimiento para la unidad de predicción; y aplicar (2108) el vector de movimiento en relación con la posición de anclaje de unidad de predicción para obtener un bloque de predicción.El aparato según la reivindicación 12, en donde dicha indicación se concluye a partir del vector de movimiento cuando la aplicación del vector de movimiento en relación con una posición de la unidad de predicción hace que, en una obtención del bloque de predicción, se utilice al menos una muestra que está fuera de la pieza decodificada.El aparato según la reivindicación 12 o 13, en donde se hace que el aparato además:infiera que se usa un vector de movimiento nulo cuando se está utilizando una copia intrabloque decodificando una indicación del flujo de bits de que se aplica un mecanismo de desfase de posición de anclaje de vector de movimiento a todos los vectores de movimiento de copia intrabloque de la pieza codificada o de un corte que contiene la pieza codificada.El aparato según la reivindicación 14, en donde se hace que el aparato además omita, en respuesta a inferir de que se usa un vector de movimiento nulo cuando se está utilizando una copia intrabloque, decodificar unos elementos sintácticos indicativos de un candidato de vector de movimiento seleccionado o de una diferencia entre vectores de movimiento.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FI20175881 | 2017-10-09 | ||
| PCT/FI2018/050709 WO2019073112A1 (en) | 2017-10-09 | 2018-10-03 | APPARATUS, METHOD, AND COMPUTER PROGRAM FOR VIDEO ENCODING AND DECODING |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2994061T3 true ES2994061T3 (en) | 2025-01-16 |
Family
ID=66101310
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES18865590T Active ES2994061T3 (en) | 2017-10-09 | 2018-10-03 | An apparatus, a method and a computer program for video coding and decoding |
Country Status (10)
| Country | Link |
|---|---|
| US (3) | US11166013B2 (es) |
| EP (2) | EP4387222A3 (es) |
| KR (2) | KR102411337B1 (es) |
| CN (2) | CN118042095A (es) |
| ES (1) | ES2994061T3 (es) |
| MX (1) | MX2020003370A (es) |
| PH (1) | PH12020550095A1 (es) |
| PL (1) | PL3695602T3 (es) |
| RU (1) | RU2741507C1 (es) |
| WO (1) | WO2019073112A1 (es) |
Families Citing this family (38)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2554877B (en) * | 2016-10-10 | 2021-03-31 | Canon Kk | Methods, devices, and computer programs for improving rendering display during streaming of timed media data |
| CN111527752B (zh) * | 2017-12-28 | 2024-04-12 | 韩国电子通信研究院 | 图像编码和解码的方法和装置以及存储比特流的记录介质 |
| EP3811624A1 (en) * | 2018-06-21 | 2021-04-28 | Telefonaktiebolaget LM Ericsson (publ) | Tile shuffling for 360 degree video decoding |
| MX2020013864A (es) | 2018-06-21 | 2021-03-25 | Ericsson Telefon Ab L M | Particiones de mosaicos con sub-mosaicos en codificacion de video. |
| BR112020025887A2 (pt) | 2018-06-21 | 2021-03-23 | Telefonaktiebolaget Lm Ericsson (Publ) | métodos para decodificar e para codificar uma imagem parada, circuitos decodificador e codificador, decodificador, programa de computador, portadora, meio de armazenamento legível por computador não transitório, e, codificador |
| KR102934333B1 (ko) | 2018-07-02 | 2026-03-04 | 노키아 테크놀로지스 오와이 | 비디오 코딩에서 타일 관련 어드레싱을 위한 방법 및 장치 |
| WO2020009344A1 (ko) * | 2018-07-06 | 2020-01-09 | 엘지전자 주식회사 | 360 비디오 데이터의 서브픽처 기반 처리 방법 및 그 장치 |
| KR102629907B1 (ko) | 2018-10-02 | 2024-01-30 | 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) | 타일 그룹 id에 기초한 화상들의 인코딩 및 디코딩 |
| US11284066B2 (en) * | 2018-10-10 | 2022-03-22 | Tencent America LLC | Method and apparatus for intra block copy in intra-inter blending mode and triangle prediction unit mode |
| US11057605B2 (en) * | 2018-11-05 | 2021-07-06 | Korea Electronics Technology Institute | 360-degree VR video segmentation transmission system and method |
| CN117528076A (zh) * | 2018-11-22 | 2024-02-06 | 北京字节跳动网络技术有限公司 | 用于具有几何分割的帧间预测的构建方法 |
| KR102660160B1 (ko) | 2018-11-22 | 2024-04-24 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 서브 블록 기반 인터 예측을 위한 조정 방법 |
| TWI700000B (zh) * | 2019-01-29 | 2020-07-21 | 威盛電子股份有限公司 | 全景影片影像穩定方法及裝置與影像穩定演算法評估方法 |
| ES2980868T3 (es) * | 2019-03-11 | 2024-10-03 | Huawei Tech Co Ltd | Direcciones de segmento basadas en sub-imagen en codificación de vídeo |
| JP7323641B2 (ja) | 2019-05-21 | 2023-08-08 | 北京字節跳動網絡技術有限公司 | アフィンモードのための適応動きベクトル差分分解 |
| US12395638B2 (en) * | 2019-06-19 | 2025-08-19 | Electronics And Telecommunications Research Institute | Image encoding/decoding method and device, and recording medium for storing bitstream |
| CN117336468A (zh) | 2019-08-10 | 2024-01-02 | 北京字节跳动网络技术有限公司 | 视频比特流中的子图片相关信令通知 |
| CN114208184B (zh) | 2019-08-13 | 2025-01-07 | 北京字节跳动网络技术有限公司 | 基于子块的帧间预测中的运动精度 |
| WO2021034238A1 (en) | 2019-08-19 | 2021-02-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and devices for handling media data streams |
| WO2021052507A1 (en) * | 2019-09-22 | 2021-03-25 | Beijing Bytedance Network Technology Co., Ltd. | Sub-picture coding and decoding of video |
| CN114503577B (zh) | 2019-10-02 | 2024-07-05 | 北京字节跳动网络技术有限公司 | 视频比特流中子图片信令通知的语法 |
| CN114631321B (zh) | 2019-10-18 | 2024-04-12 | 北京字节跳动网络技术有限公司 | 子图片与环路滤波之间的相互影响 |
| CN114616830A (zh) * | 2019-11-07 | 2022-06-10 | 英特尔公司 | 超高分辨率视频内容的异构实时流送和解码 |
| CN115280774B (zh) | 2019-12-02 | 2025-08-19 | 抖音视界有限公司 | 视觉媒体处理的方法、装置及非暂时性计算机可读存储介质 |
| US11233669B2 (en) | 2019-12-17 | 2022-01-25 | Google Llc | Context-dependent in-call video codec switching |
| CN113225605B (zh) * | 2020-02-05 | 2024-03-01 | 腾讯科技(深圳)有限公司 | 视频播放处理方法、装置、电子设备及存储介质 |
| EP4094436A4 (en) * | 2020-02-24 | 2023-03-29 | ByteDance Inc. | PARTITION CALCULATION BASED ON A SUB-PICTURE LEVEL |
| CN116962680A (zh) | 2020-02-28 | 2023-10-27 | 华为技术有限公司 | 用于指示条带的图像分割信息的解码器及对应方法 |
| KR20220143857A (ko) | 2020-03-03 | 2022-10-25 | 바이트댄스 아이엔씨 | 비디오 코딩에서의 저 주파수 비-분리가능 변환 시그널링 |
| CN115398892B (zh) | 2020-03-23 | 2025-02-28 | 抖音视界有限公司 | 仿射merge和仿射运动矢量预测模式的预测细化 |
| US11711505B2 (en) * | 2020-07-16 | 2023-07-25 | Nokia Technologies Oy | Viewport dependent delivery methods for omnidirectional conversational video |
| EP4125275A1 (en) | 2021-07-27 | 2023-02-01 | Nokia Technologies Oy | A method, an apparatus and a computer program product for video conferencing |
| CN113657257B (zh) * | 2021-08-16 | 2023-12-19 | 浙江大学 | 一种端到端的手语翻译方法和系统 |
| US20230224554A1 (en) * | 2022-01-12 | 2023-07-13 | Tencent America LLC | Method and apparatus for wire formats for segmented media metadata for parallel processing in a cloud platform |
| CN115695799B (zh) * | 2022-10-18 | 2025-04-15 | 电子科技大学 | 一种考虑时域失真传播的零时延全景视频码率控制方法 |
| US12568241B2 (en) * | 2023-02-10 | 2026-03-03 | Tencent America LLC | Bi-prediction with CU level weight (BCW) |
| US20250056007A1 (en) * | 2023-08-10 | 2025-02-13 | Comcast Cable Communications, Llc | Inter-segment ladder transitioning in adaptive streaming |
| CN118803263B (zh) * | 2024-01-02 | 2025-10-24 | 中移(杭州)信息技术有限公司 | 语义视频编解码方法、安防视频系统及存储介质 |
Family Cites Families (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6400763B1 (en) | 1999-02-18 | 2002-06-04 | Hewlett-Packard Company | Compression system which re-uses prior motion vectors |
| FR2947134A1 (fr) | 2009-06-23 | 2010-12-24 | France Telecom | Procedes de codage et de decodages d'images, dispositifs de codage et de decodage, flux de donnees et programme d'ordinateur correspondants. |
| KR20120112724A (ko) | 2010-02-09 | 2012-10-11 | 니폰덴신뎅와 가부시키가이샤 | 움직임 벡터 예측 부호화 방법, 움직임 벡터 예측 복호 방법, 동화상 부호화 장치, 동화상 복호 장치 및 그들의 프로그램 |
| JP5979848B2 (ja) * | 2011-11-08 | 2016-08-31 | キヤノン株式会社 | 画像符号化方法、画像符号化装置及びプログラム、画像復号方法、画像復号装置及びプログラム |
| US20130287093A1 (en) * | 2012-04-25 | 2013-10-31 | Nokia Corporation | Method and apparatus for video coding |
| GB2501535A (en) * | 2012-04-26 | 2013-10-30 | Sony Corp | Chrominance Processing in High Efficiency Video Codecs |
| JP6005865B2 (ja) | 2012-09-28 | 2016-10-12 | インテル・コーポレーション | スケーラブルビデオ符号化のためのエンハンスド参照領域の利用 |
| JP6290924B2 (ja) * | 2013-01-07 | 2018-03-07 | ノキア テクノロジーズ オサケユイチア | ビデオ・コーディングおよびデコーディングのための方法と装置 |
| WO2014139431A1 (en) * | 2013-03-12 | 2014-09-18 | Mediatek Inc. | Inter-layer motion vector scaling for scalable video coding |
| US20140301463A1 (en) * | 2013-04-05 | 2014-10-09 | Nokia Corporation | Method and apparatus for video coding and decoding |
| US9628795B2 (en) * | 2013-07-17 | 2017-04-18 | Qualcomm Incorporated | Block identification using disparity vector in video coding |
| US20150326875A1 (en) | 2014-05-06 | 2015-11-12 | Mediatek Inc. | Video processing method for determining position of reference block of resized reference frame and related video processing apparatus |
| EP4354856A3 (en) * | 2014-06-19 | 2024-06-19 | Microsoft Technology Licensing, LLC | Unified intra block copy and inter prediction modes |
| JP6440747B2 (ja) | 2014-06-27 | 2018-12-19 | コニンクリーケ・ケイピーエヌ・ナムローゼ・フェンノートシャップ | Hevcでタイル化されたビデオ・ストリームに基づく関心領域の決定 |
| US20170026659A1 (en) * | 2015-10-13 | 2017-01-26 | Mediatek Inc. | Partial Decoding For Arbitrary View Angle And Line Buffer Reduction For Virtual Reality Video |
| FI20165114A (fi) | 2016-02-17 | 2017-08-18 | Nokia Technologies Oy | Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten |
| FI20165257A7 (fi) * | 2016-03-24 | 2017-09-25 | Nokia Technologies Oy | Laitteisto, menetelmä ja tietokoneohjelma videokoodaukseen ja -dekoodaukseen |
| US10419768B2 (en) * | 2016-03-30 | 2019-09-17 | Qualcomm Incorporated | Tile grouping in HEVC and L-HEVC file formats |
| ES2895927T3 (es) | 2017-01-05 | 2022-02-23 | Nokia Technologies Oy | Un aparato, un método y un programa de ordenador para la codificación y decodificación de vídeo |
| EP3349467B1 (en) | 2017-01-10 | 2019-09-04 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
| WO2018178507A1 (en) | 2017-03-27 | 2018-10-04 | Nokia Technologies Oy | An apparatus, a method and a computer program for video coding and decoding |
| WO2019002662A1 (en) | 2017-06-26 | 2019-01-03 | Nokia Technologies Oy | APPARATUS, METHOD AND COMPUTER PROGRAM FOR OMNIDIRECTIONAL VIDEO |
| EP3422724B1 (en) | 2017-06-26 | 2024-05-01 | Nokia Technologies Oy | An apparatus, a method and a computer program for omnidirectional video |
| WO2019073113A1 (en) | 2017-10-09 | 2019-04-18 | Nokia Technologies Oy | APPARATUS, METHOD AND COMPUTER PROGRAM FOR VIDEO ENCODING AND DECODING |
-
2018
- 2018-10-03 PL PL18865590.6T patent/PL3695602T3/pl unknown
- 2018-10-03 MX MX2020003370A patent/MX2020003370A/es unknown
- 2018-10-03 ES ES18865590T patent/ES2994061T3/es active Active
- 2018-10-03 WO PCT/FI2018/050709 patent/WO2019073112A1/en not_active Ceased
- 2018-10-03 CN CN202410193966.5A patent/CN118042095A/zh active Pending
- 2018-10-03 KR KR1020207013043A patent/KR102411337B1/ko active Active
- 2018-10-03 KR KR1020227020231A patent/KR102488330B1/ko active Active
- 2018-10-03 RU RU2020114245A patent/RU2741507C1/ru active
- 2018-10-03 EP EP24174243.6A patent/EP4387222A3/en active Pending
- 2018-10-03 EP EP18865590.6A patent/EP3695602B1/en active Active
- 2018-10-03 US US16/753,511 patent/US11166013B2/en active Active
- 2018-10-03 CN CN201880065662.3A patent/CN111543060B/zh active Active
-
2020
- 2020-03-19 PH PH12020550095A patent/PH12020550095A1/en unknown
-
2021
- 2021-09-23 US US17/483,243 patent/US11671588B2/en active Active
-
2023
- 2023-04-06 US US18/131,432 patent/US12501024B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| KR20220087577A (ko) | 2022-06-24 |
| CN118042095A (zh) | 2024-05-14 |
| RU2741507C1 (ru) | 2021-01-26 |
| KR102488330B1 (ko) | 2023-01-12 |
| EP4387222A2 (en) | 2024-06-19 |
| EP3695602A1 (en) | 2020-08-19 |
| CN111543060B (zh) | 2024-03-08 |
| US20230319286A1 (en) | 2023-10-05 |
| EP3695602B1 (en) | 2024-06-12 |
| CN111543060A (zh) | 2020-08-14 |
| US11671588B2 (en) | 2023-06-06 |
| US20220014733A1 (en) | 2022-01-13 |
| EP3695602A4 (en) | 2021-08-04 |
| US12501024B2 (en) | 2025-12-16 |
| PH12020550095A1 (en) | 2020-09-14 |
| KR20200059297A (ko) | 2020-05-28 |
| US20200260071A1 (en) | 2020-08-13 |
| WO2019073112A1 (en) | 2019-04-18 |
| EP4387222A3 (en) | 2024-08-07 |
| US11166013B2 (en) | 2021-11-02 |
| PL3695602T3 (pl) | 2024-08-19 |
| MX2020003370A (es) | 2020-07-29 |
| KR102411337B1 (ko) | 2022-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2994061T3 (en) | An apparatus, a method and a computer program for video coding and decoding | |
| US12341992B2 (en) | Apparatus, a method and a computer program for video coding and decoding | |
| US12041108B2 (en) | Apparatus, a method and a computer program for video coding and decoding | |
| US10893256B2 (en) | Apparatus, a method and a computer program for omnidirectional video | |
| ES2895927T3 (es) | Un aparato, un método y un programa de ordenador para la codificación y decodificación de vídeo | |
| KR20180113584A (ko) | 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램 | |
| US11909983B2 (en) | Apparatus, a method and a computer program for video coding and decoding | |
| WO2019073113A1 (en) | APPARATUS, METHOD AND COMPUTER PROGRAM FOR VIDEO ENCODING AND DECODING | |
| HK40055642B (zh) | 用於视频编码和解码的装置、方法和计算机程序 | |
| HK40055642A (en) | An apparatus, a method and a computer program for video coding and decoding | |
| HK40033409A (en) | An apparatus, a method and a computer program for video coding and decoding | |
| HK40033409B (zh) | 用於视频编码和解码的装置、方法和计算机程序 |