ES2913983T3 - Un aparato, un método y un programa informático para codificación y decodificación de vídeo - Google Patents

Un aparato, un método y un programa informático para codificación y decodificación de vídeo Download PDF

Info

Publication number
ES2913983T3
ES2913983T3 ES15765714T ES15765714T ES2913983T3 ES 2913983 T3 ES2913983 T3 ES 2913983T3 ES 15765714 T ES15765714 T ES 15765714T ES 15765714 T ES15765714 T ES 15765714T ES 2913983 T3 ES2913983 T3 ES 2913983T3
Authority
ES
Spain
Prior art keywords
image
layer
decoding
images
temporal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES15765714T
Other languages
English (en)
Inventor
Miska Hannuksela
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Technologies Oy
Original Assignee
Nokia Technologies Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Technologies Oy filed Critical Nokia Technologies Oy
Application granted granted Critical
Publication of ES2913983T3 publication Critical patent/ES2913983T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods 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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un método para decodificar vídeo codificado, comprendiendo el método: recibir (1200) imágenes codificadas de una primera capa de escalabilidad que comprende una o más subcapas temporales; decodificar (1202) las imágenes codificadas de la primera capa de escalabilidad; recibir (1204) imágenes codificadas de una segunda capa de escalabilidad que comprende una o más subcapas temporales, dependiendo la segunda capa de escalabilidad de la primera capa de escalabilidad; seleccionar (1206) una imagen de acceso de capa en la segunda capa de escalabilidad a partir de las imágenes codificadas de la segunda capa de escalabilidad, en donde la imagen de acceso de capa seleccionada es una imagen de step-wise temporal sub-layer access (acceso de subcapa temporal por etapas - STSA) en una subcapa temporal más baja, posibilitando la imagen STSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma subcapa temporal, en donde no se permite la interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen STSA, en orden de decodificación; ignorar (1208) imágenes codificadas en la segunda capa de escalabilidad antes, en orden de decodificación, de la imagen de acceso de capa seleccionada; y decodificar (1210) o seleccionar la imagen de acceso de capa seleccionada y las imágenes posteriores, si las hay, en orden de decodificación, en la misma o una subcapa temporal superior.

Description

DESCRIPCIÓN
Un aparato, un método y un programa informático para 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
La codificación de vídeo escalable se refiere a la estructura de codificación donde un flujo de bits puede contener múltiples representaciones del contenido a diferentes tasas de bits, resoluciones o velocidades de fotograma. En estos casos, el receptor puede extraer la representación deseada dependiendo de sus características. 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. 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.
Un estándar o sistema de codificación puede referirse a una expresión punto de operación o similar, que puede indicar las capas y/o subcapas escalables bajo las cuales opera la decodificación y/o puede asociarse con un subflujo de bits que incluye las capas escalables y/o subcapas que se están decodificando.
En SHVC (extensión escalable a H.265/HEVC) y MV-HEVC (extensión de múltiples vistas a H.265/HEVC), una definición de punto de funcionamiento puede incluir una consideración de un conjunto de capas de salida objetivo. En SHVC y MV-HEVC, un punto de operación puede definirse como un flujo de bits que se crea a partir de otro flujo de bits mediante el funcionamiento del proceso de extracción de subflujo de bits con el otro flujo de bits, un nivel temporal más alto objetivo y una lista de identificador de capa objetivo como entradas, y que está asociado con un conjunto de capas de salida objetivo.
Sin embargo, los diseños de escalabilidad en el estado actual de los diversos estándares de codificación de vídeo tienen algunas limitaciones. Por ejemplo, en SHVC, se requiere que las imágenes de una unidad de acceso tengan el mismo nivel temporal. Esto deshabilita los codificadores para determinar las jerarquías de predicción de manera diferente a través de las capas, limitando así las posibilidades de usar puntos de conmutación ascendente de subcapa frecuentes y/o para lograr un mejor rendimiento de tasa-distorsión. Además, una limitación adicional es que las imágenes de conmutación de nivel temporal no se permiten al nivel temporal más bajo. Esto deshabilita indicar una imagen de acceso o punto de acceso a una capa que permite la decodificación de algunos niveles temporales (pero no necesariamente todos ellos).
WO 2014/002469 se considera la técnica anterior más cercana en la comunicación oficial. D1 describe el concepto de una imagen GTLA (Gradual Temporal Layer Access - Acceso a Capa Temporal Gradual), que puede proporcionar funcionalidad de conmutación de capa temporal. La imagen GTLA puede incluir un identificador temporal. Una imagen posterior en orden de decodificación que se codifica después de la imagen GTLA, que tiene un identificador temporal igual al identificador temporal de la imagen GTLA puede usar una imagen anterior para la interpredicción que tiene un identificador temporal menor que el identificador temporal de la imagen GTLA y que precede a la imagen GTLA en orden de decodificación. No se puede incluir una imagen de referencia con un identificador temporal mayor o igual al identificador temporal de la imagen GTLA en una corriente a corto plazo de reference picture set (conjunto de imágenes de referencia - RPS) antes de la lista, una corriente a corto plazo de RPS después de la lista y/o una lista de corriente de largo plazo de RPS para una imagen actual.
“Adaptive HTTP streaming utilizing temporal sub-layers of HEVC” por S. Deshpande, 2013 IEEE International symposium on Multimedia, 9 de diciembre de 2013 describe que las imágenes GTLA (más tarde STSA) pueden usarse para la adaptación específica de la subcapa de un flujo de medios.
“ On Gradual Temporal Layer Access” por S. Deshpande, jVTVC-J0305, 3 de julio de 2012, contiene otra presentación de imágenes GTLA.
“ MV-HEVC/ SHVC HLS: On Various Cross-layer Alignments” por Y. Wang, jVTVC-N0084, 16 de julio de 2013 describe cómo las imágenes IRAP pueden usarse junto con imágenes de STSA para proporcionar funcionalidad de conmutación de capa.
Resumen
Ahora con el fin de reducir al menos los problemas anteriores, en la presente memoria se introducen métodos para codificar y decodificar imágenes de acceso a capa restringida.
La invención se refiere a un método para decodificar vídeo codificado, comprendiendo el método recibir (1200) imágenes codificadas de una primera capa de escalabilidad que comprende una o más subcapas temporales; decodificar (1202) las imágenes codificadas de la primera capa de escalabilidad; recibir (1204) imágenes codificadas de una segunda capa de escalabilidad que comprende una o más subcapas temporales, dependiendo la segunda capa de escalabilidad en la primera capa de escalabilidad; seleccionar (1206) una imagen de acceso de capa en la segunda capa de escalabilidad a partir de las imágenes codificadas de la segunda capa de escalabilidad, en donde la imagen de acceso de capa seleccionada es una imagen de step-wise temporal sub-layer access (acceso de subcapa temporal por etapas - STSA) en una subcapa temporal más baja, posibilitando la imagen STSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma subcapa temporal, en donde no se permite la interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen STSA, en orden de decodificación; ignorar (1208) imágenes codificadas en la segunda capa de escalabilidad antes, en orden de decodificación, de la imagen de acceso de capa seleccionada; y decodificar (1210) o seleccionar la imagen de acceso de capa seleccionada y las imágenes posteriores, si las hay, en orden de decodificación, en la misma o una subcapa temporal superior.
Las reivindicaciones 1, 8, 15, 16, 20 y 24 independientes describen un método, aparato, medio de almacenamiento legible por ordenador relacionados para decodificar y codificar vídeo escalable.
Breve descripción de las figuras
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:
La Figura 1 muestra esquemáticamente un dispositivo electrónico que emplea realizaciones de la invención;
La Figura 2 muestra esquemáticamente un equipo de usuario adecuado para emplear realizaciones de la invención; La 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;
La Figura 4 muestra esquemáticamente un codificador adecuado para implementar realizaciones de la invención; La Figura 5 muestra un ejemplo de una imagen que consiste en dos piezas;
La Figura 6 muestra un ejemplo de un bloque actual y cinco vecinos espaciales utilizables como candidatos de predicción de movimiento;
La Figura 7 muestra un diagrama de flujo de un método de codificación según una realización de la invención; La Figura 8 ilustra un ejemplo de codificación según una realización de la invención;
La Figura 9 ilustra un ejemplo de codificación según otra realización de la invención;
La Figura 10 ilustra un ejemplo de codificación según aún otra realización de la invención;
La Figura 11 ilustra un ejemplo de codificación según aún otra realización de la invención;
La Figura 12 muestra un diagrama de flujo de un método de decodificación según una realización de la invención; La Figura 13 muestra un diagrama de flujo de un método de adaptación de tasa de bits según una realización de la invención;
La Figura 14 ilustra un ejemplo de adaptación de tasa de bits según una realización de la invención;
La Figura 15 ilustra un ejemplo de adaptación de tasa de bits según otra realización de la invención;
La Figura 16 ilustra un ejemplo de adaptación de tasa de bits según aún otra realización de la invención;
La Figura 17 ilustra un ejemplo de adaptación de tasa de bits según aún otra realización de la invención;
La Figura 18 muestra un diagrama esquemático de un decodificador adecuado para implementar realizaciones de la invención;
Las Figuras 19a y 19b ilustran el uso de desplazamientos de capa de referencia escalada; y
La Figura 20 muestra un diagrama esquemático de un ejemplo de sistema de comunicación multimedia dentro del cual pueden implementarse diversas realizaciones.
Descripción detallada de algunas realizaciones de ejemplo
A continuación, se describe en mayor detalle un aparato adecuado y mecanismos posibles para codificar una subimagen de capa de mejora sin sacrificar significativamente la eficiencia de codificación. A este respecto, en primer lugar, 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 según una realización ilustrativa como un diagrama de bloques esquemático de un aparato ilustrativo o dispositivo electrónico 50, que puede incorporar un códec según una realización de la invención. La Figura 2 muestra una distribución de un aparato según una realización ilustrativa. Los elementos de las Figuras 1 y 2 se explicarán a continuación.
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 40 (o, en otras realizaciones de la invención, el dispositivo puede ser alimentado por cualquier dispositivo de energía móvil adecuado tal como célula solar, célula de combustible o generador autómata). El aparato puede comprender además una cámara 42 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 o procesador 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.
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 alámbricas o inalámbricas que incluyen, aunque no de forma limitativa, una red de telefonía celular inalámbrica (tal como una red GSM, UMTS, CDMA, etc.), una wireless local area network (red de área local inalámbrica -WLAN) tal como se define por 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 que incluye, aunque no de forma limitativa, 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.
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. 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 códecs de vídeo híbrido típicos, por ejemplo, muchas implementaciones de codificador de ITU-T H.263 y H.264, 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).
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 modos 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). La salida 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. Por lo tanto, cada modo puede realizar la intrapredicción y proporcionar 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, 403r 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.
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).
El 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 es o se publicará 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). Hay proyectos de estandarización actualmente en curso para desarrollar extensiones a H.265/HEVC, incluidas extensiones escalables, de múltiples vistas, tridimensionales y rango de fidelidad, que pueden abreviarse como SHVC, MV-HEVC, 3D-HEVC y REXT, respectivamente.
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 e1Hypothetical 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.
En la descripción de los estándares existentes, así como en la descripción de realizaciones ilustrativas, un elemento de sintaxis puede definirse como un elemento de datos representados en el flujo de bits. Una estructura de sintaxis puede definirse como cero o más elementos de sintaxis presentes juntos en el flujo de bits en un orden especificado. En la descripción de los estándares existentes, así como en la descripción de realizaciones ilustrativas, se puede usar una expresión “por medios externos” o “a través de medios externos” . Por ejemplo, una entidad, tal como una estructura de sintaxis o un valor de una variable usada en el proceso de decodificación, puede proporcionarse “por medios externos” al proceso de decodificación. La expresión “por medios externos” puede indicar que la entidad no se incluye en el flujo de bits creado por el codificador, sino que, en su lugar, se transmite externamente desde el flujo de bits, por ejemplo, usando un protocolo de control. Alternativamente o de forma adicional, puede significar que la entidad no es creada por el codificador, sino que puede crearse, por ejemplo, en el reproductor o en la lógica de control de decodificación o similar que esté usando el decodificador. El decodificador puede tener una interfaz para introducir los medios externos, tales como valores variables.
Puede definirse un perfil como un subconjunto de toda la sintaxis de flujo de bits que se especifica mediante un estándar o especificación de decodificación/codificación. Dentro de los límites impuestos por la sintaxis de un perfil dado, aún es posible requerir una variación muy grande en el rendimiento de los codificadores y decodificadores dependiendo de los valores tomados por elementos de sintaxis en el flujo de bits, tal como el tamaño especificado de las imágenes decodificadas. En muchas aplicaciones, podría no ser práctico ni económico implementar un decodificador capaz de tratar con todos los usos hipotéticos de la sintaxis dentro de un perfil particular. Para abordar este problema, se pueden usar niveles. Un nivel puede definirse como un conjunto especificado de restricciones impuestas sobre los valores de los elementos de sintaxis en el flujo de bits y las variables especificadas en un estándar o especificación de decodificación/codificación. Estas restricciones pueden ser límites sencillos en valores. Alternativamente o, además, pueden tomar la forma de restricciones en combinaciones aritméticas de valores (p. ej., anchura de imagen multiplicada por la altura de imagen multiplicada por el número de imágenes decodificadas por segundo). También pueden usarse otros medios para especificar restricciones para los niveles. Algunas de las restricciones especificadas en un nivel pueden estar relacionadas, por ejemplo, con el tamaño máximo de imagen, tasa de bits máxima y tasa de datos máxima en términos de unidades de codificación, tales como macrobloques, por un período de tiempo, tal como un segundo. El mismo conjunto de niveles puede definirse para todos los perfiles. Puede ser preferible, por ejemplo, aumentar la interoperabilidad de los terminales que implementan diferentes perfiles que la mayoría o todos los aspectos de la definición de cada nivel pueden ser comunes a través de diferentes perfiles
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 una decodificada 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.
Cuando el submuestreo de croma está en uso (p. ej., 4:2:0 o 4:2:2 de muestreo de croma), la ubicación de las muestras de croma con respecto a las muestras de luma puede determinarse en el lado del codificador (p. ej., como etapa de procesamiento previo o como parte de la codificación). Las posiciones de la muestra de croma con respecto a las posiciones de la muestra de luma pueden estar predefinidas, por ejemplo, en un estándar de codificación, tal como H.264/AVC o HEVC, o pueden indicarse en el flujo de bits, por ejemplo, como parte de VUI de H.264/AVC o HEVC.
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.
En H.264/AVC, un macrobloque es un bloque de 16 x 16 de muestras de luma y los bloques correspondientes de muestras de croma. Por ejemplo, en el patrón de muestreo 4:2:0, un macrobloque contiene un bloque 8 x 8 de muestras de croma por cada componente de croma. En H.264/AVC, una imagen se divide en uno o más grupos de cortes, y un grupo de cortes contiene uno o más cortes. En H.264/AVC, un corte consiste en un número entero de macrobloques ordenados consecutivamente en la exploración de barrido por tramas dentro de un grupo de cortes particular.
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 coding tree block (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 coding tree unit (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 coding unit (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.
En algunos códecs de vídeo, tales como el códec de High Efficiency Video Coding (Codificación de Vídeo de Alta Eficiencia - HEVC), las imágenes de vídeo se dividen en coding units (unidades de codificación - CU) que cubren el área de la imagen. Una CU consiste en una o más prediction units (unidades de predicción - PU) que definen el proceso de predicción para las muestras dentro de la CU y una o más transform units (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. Una CU con el tamaño máximo permitido se puede denominar LCU (largest coding unit - unidad de codificación más grande) o coding tree unit (unidad de árbol de codificación - CTU) y la imagen de vídeo se divide en LCU no superpuestas. Una LCU puede dividirse de forma adicional en una combinación de CU más pequeñas, p. ej., dividiendo recursivamente la LCU y las CU resultantes. Cada CU resultante tiene típicamente al menos una PU y al menos una TU asociada con ella. 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).
La direccionalidad de un modo de predicción para intrapredicción, es decir, la dirección de predicción que se aplicará en un modo de predicción particular, puede ser vertical, horizontal, diagonal. Por ejemplo, en HEVC, la intrapredicción proporciona hasta 33 modos de predicción direccional, dependiendo del tamaño de las PU, y cada uno de los modos de intrapredicción tiene una dirección de predicción asignada.
Similarmente, cada TU está asociada con información que describe el proceso de decodificación de error de predicción para las muestras dentro de dicha TU (incluida, p. ej., información de coeficiente de DCT). De forma típica, se indica a nivel de CU si la codificación de error de predicción se aplica o no para cada CU, en el caso de que no haya ningún error de predicción asociado a la CU, se puede considerar que no hay TU para la 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 una HEVC borrador, 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. La Figura 5 muestra un ejemplo de una imagen que consiste en dos piezas divididas en unidades de codificación cuadradas (líneas continuas) que se han dividido de forma adicional en unidades de predicción rectangulares (líneas discontinuas).
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, sample adaptive offset (desplazamiento adaptativo de muestras - SAO) y/o adaptive loop filtering (filtrado de bucle adaptativo - ALF).
En SAO, una imagen se divide en regiones donde se toma una decisión SAO separada para cada región. La información SAO en una región se encapsula en una unidad de adaptación de parámetros SAO (unidad SAO) y en HEVC, la unidad básica para adaptar parámetros SAO es la CTU (por lo tanto, una región SAO es el bloque cubierto por la CTU correspondiente).
En el algoritmo SAO, las muestras en una CTU se clasifican según un conjunto de reglas y cada conjunto clasificado de muestras se mejora añadiendo valores de desplazamiento. Los valores de desplazamiento se señalizan en el flujo de bits. Existen dos tipos de desplazamiento: 1) Desplazamiento de banda 2) Desplazamiento de borde. Para una CTU, no se emplea ningún SAO o desplazamiento de banda o desplazamiento de borde. La elección de si no se va a utilizar SAO o desplazamiento de banda o de borde puede decidirse por el codificador con, p. ej., distortion optimization (optimización de tasa-distorsión - RDO) y se señaliza al decodificador.
En el desplazamiento de banda, todo el intervalo de valores de muestra se divide en ciertos casos en 32 bandas de igual ancho. Por ejemplo, para muestras de 8 bits, la anchura de una banda es 8 (=256/32). De 32 bandas, 4 de ellas se seleccionan y se señalizan diferentes desplazamientos para cada una de las bandas seleccionadas. La decisión de selección se realiza por el codificador y puede señalizarse de la siguiente manera: Se señaliza el índice de la primera banda y a continuación se infiere que las siguientes cuatro bandas son las elegidas. El desplazamiento de banda puede ser útil para corregir errores en regiones suaves.
En el tipo de desplazamiento de borde, el tipo de edge offset (desplazamiento de borde - EO) puede elegirse de cuatro tipos posibles (o clasificaciones de borde) donde cada tipo está asociado con una dirección: 1) vertical, 2) horizontal, 3) diagonal de 135 grados y 4) diagonal 45 grados. La elección de la dirección se proporciona por el codificador y se señaliza al decodificador. Cada tipo define la ubicación de dos muestras vecinas para una muestra dada basándose en el ángulo. Entonces, cada muestra en la CTU se clasifica en una de cinco categorías basándose en la comparación del valor de la muestra frente a los valores de las dos muestras vecinas. Las cinco categorías se describen a continuación:
1. Valor de muestra actual es menor que las dos muestras vecinas
2. El valor de muestra actual es menor que una de las vecinas e igual a la otra vecina
3. El valor de muestra actual es mayor que una de las vecinas e igual a la otra vecina
4. El valor de muestra actual es mayor que dos muestras vecinas
5. Ninguna de las anteriores
No se requiere que estas cinco categorías se señalicen al decodificador porque la clasificación está basada solo en muestras reconstruidas, que pueden estar disponibles y ser idénticas tanto en el codificador como en el decodificador.
Después de que cada muestra en una CTU de tipo de desplazamiento de borde se clasifique como una de las cinco categorías, se determina un valor de desplazamiento para cada una de las primeras cuatro categorías y se señaliza al decodificador. El desplazamiento para cada categoría se añade a los valores de la muestra asociados con la categoría correspondiente. Los desplazamientos de borde pueden ser efectivos para corregir artefactos de anillamiento.
Los parámetros SAO pueden señalizarse como intercalados en datos de CTU. Por encima de CTU, la cabecera de corte contiene un elemento de sintaxis que especifica si se usa el SAO en el corte. Si se usa SAO, entonces dos elementos de sintaxis adicionales especifican si se aplica el SAO a componentes de Cb y Cr. Para cada CTU, hay tres opciones: 1) copiar parámetros SAO de la CTU izquierda, 2) copiar parámetros SAO de la CTU anterior, o 3) señalizar nuevos parámetros SAO.
El adaptive loop filter (filtro de bucle adaptativo - ALF) es otro método para mejorar la calidad de las muestras reconstruidas. Esto se puede lograr filtrando los valores de muestra en el bucle. El codificador puede determinar qué región de las imágenes se deben filtrar y los coeficientes de filtro basados en, p. ej., RDO y esta información se señaliza al decodificador.
En códecs de vídeo típicos, la información de movimiento se indica con vectores de movimiento asociados con cada bloque de imágenes con compensación de movimiento. 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 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.
Los códecs de vídeo típicos permiten el uso de unipredicción, donde se usa un único bloque de predicción para un bloque que se está (de)codificado, y bipredicción, donde se combinan dos bloques de predicción para formar la predicción para un bloque que se está (de)codificando. Algunos códecs de vídeo permiten la predicción ponderada, donde los valores de muestra de los bloques de predicción se ponderan antes de añadir información residual. Por ejemplo, el factor de ponderación multiplicativo y un desplazamiento aditivo que pueden aplicarse. En la predicción ponderada explícita, habilitada por algunos códecs de vídeo, puede codificarse un factor de ponderación y un desplazamiento, por ejemplo, en la cabecera de corte para cada índice de imagen de referencia admisible. En la predicción ponderada implícita, habilitada por algunos códecs de vídeo, no se codifican los factores de ponderación y/o desplazamientos, sino que se obtienen, p. ej., basándose en las distancias de picture order count (recuento de orden de imagen - POC) relativas de las imágenes de referencia.
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 de Lagrange para encontrar modos de codificación óptimos, p. ej., el modo de Macrobloque deseado y los 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 = D AR, (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, las muestras de un macro bloque o CU vecina pueden considerarse no disponibles para intrapredicción, si el macrobloque vecino o CU 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 Network Abstraction Layer (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 raw byte sequence payload (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 HEVC, la cabecera de la unidad NAL indica el tipo de la unidad NAL. En H.264/AVC, la cabecera de unidad NAL indica si un corte codificado contenido en la unidad NAL es una parte de una imagen de referencia o una imagen no de referencia.
La cabecera de unidad de NAL H.264/AVC incluye un elemento de sintaxis nal_ref_idc de 2 bits, que cuando es igual a 0 indica que un corte codificado contenido en la unidad NAL es una parte de una imagen no de referencia y cuando es mayor que 0 indica que un corte codificado contenido en la unidad NAL es una parte de una imagen de referencia. La cabecera para las unidades de NAL de SVC y MVC puede contener de forma adicional diversas indicaciones relacionadas con la jerarquía de escalabilidad y de múltiples vistas.
En HEVC, se usa una cabecera de unidad NAL de dos bytes para todos los tipos de unidad NAL especificados. La cabecera de 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 un nivel temporal (puede ser necesario que sea mayor o igual a 1) y un campo reservado de seis bits (denominado id. de capa nuh). 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. 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. Por consiguiente, una imagen que tiene TemporalId igual a TID no usa ninguna imagen que tiene un TemporalId mayor que TID como referencia de interpredicción. Una subcapa o una subcapa temporal puede definirse que es una capa escalable temporal de un flujo de bits escalable temporal, que consiste en unidades NAL de VCL con un valor particular de la variable TemporalId y las unidades NAL de VCL no asociadas.
Se espera que el campo reservado de seis bits (nuh_layer_id) se utilice por extensiones tales como una extensión de vídeo escalable y 3D futura. Se espera que estos seis bits transportaran información sobre la jerarquía de escalabilidad. Sin pérdida de generalidad, en algunas realizaciones realizaciones de ejemplo, se deriva una variable LayerId del valor de nuh_layer_id, por ejemplo, de la siguiente manera: LayerId = nuh_layer_id. A continuación, el identificador de capa, LayerId, nuh_layer_id y el id de capa se usan indistintamente salvo que se indique lo contrario.
Las unidades NAL pueden clasificarse en unidades NAL de Video Coding Layer (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 H.264/AVC, las unidades NAL de corte codificado contienen elementos de sintaxis que representan uno o más macrobloques codificados, cada uno de los cuales corresponde a un bloque de muestras en la imagen no comprimida. En HEVC, las unidades NAL de corte codificado contienen elementos de sintaxis que representan una o más CU.
En H.264/AVC, una unidad NAL de corte codificado puede indicarse como un corte codificado en una imagen de Instantaneous Decoding Refresh (Refresco de Decodificación Instantánea - IDR) o un corte codificado en una imagen no IDR.
En HEVC, una unidad NAL de corte codificado puede indicarse como uno de los siguientes tipos:
Figure imgf000013_0001
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 Sublayer 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 Random Access Point (imagen de punto de acceso aleatorio - RAP), que también puede denominarse intra random access point (imagen de punto de acceso intra aleatorio - IRAP), es una imagen donde cada corte o segmento de corte tiene nal_unit_type en el intervalo de 16 a 23, inclusive. Una imagen RAP solo contiene cortes intracodificados, y puede ser una imagen BLA, una imagen CRA o una imagen IDR. La primera imagen en el flujo de bits es una imagen RAP. Siempre que los conjuntos de parámetros necesarios estén disponibles cuando deben activarse, la imagen RAP y todas las imágenes no RASL posteriores en orden de decodificación pueden decodificarse correctamente sin realizar el proceso de decodificación de ninguna imagen que preceden a la imagen RAP en orden de decodificación. Puede haber imágenes en un flujo de bits que contengan solo cortes intracodificados que no sean imágenes RAP.
En HEVC, una imagen CRA puede ser la primera imagen en el flujo de bits en orden de decodificación, o puede aparecer más adelante en el flujo de bits. Las imágenes CRA en HEVC permiten las llamadas imágenes principales que siguen a la imagen CRA en orden de decodificación pero que la preceden en orden de salida. Algunas de las imágenes principales, las denominadas imágenes RASL, pueden usar imágenes decodificadas antes de la imagen CRA como referencia. Las imágenes que siguen a una imagen CRA tanto en orden de decodificación como de salida son decodificables si se realiza un acceso aleatorio en la imagen CRA y, por lo tanto, se logra un acceso aleatorio limpio similarmente a la funcionalidad de acceso aleatorio limpio de una imagen IDR.
Una imagen CRA puede tener imágenes RADL o RASL asociadas. Cuando una imagen CRA es la primera imagen en el flujo de bits en orden de decodificación, la imagen CRA es la primera imagen de una secuencia de vídeo codificado en orden de decodificación, y cualquier imagen RASL asociada no se emite por el decodificador y puede no ser decodificable, ya que pueden contener referencias a imágenes que no están presentes en el flujo de bits.
Una imagen principal es una imagen que precede a la imagen RAP asociada en orden de salida. La imagen RAP asociada es la imagen RAP anterior en orden de decodificación (si está presente). Una imagen principal es una imagen RADL o una imagen RASL.
Todas las imágenes RASL son imágenes principales de una imagen BLA o CRA asociada. Cuando la imagen RAP asociada es una imagen BLA o es la primera imagen codificada en el flujo de bits, la imagen RASL no se emite y puede no ser decodificable correctamente, ya que la imagen RASL puede contener referencias a imágenes que no están presentes en el flujo de bits. Sin embargo, una imagen RASL puede decodificarse correctamente si la decodificación ha comenzado desde una imagen RAP antes de la imagen RAP asociada de la imagen RASL. Las imágenes RASL no se usan como imágenes de referencia para el proceso de decodificación de imágenes no RASL. Cuando está presente, todas las imágenes RASL preceden, en orden de decodificación, todas las imágenes posteriores de la misma imagen RAP asociada. En algunos borradores del estándar HEVC, se hizo referencia a una imagen RASL para la imagen de Tagged for Discard (Etiquetada para Descarte - TFD).
Todas las imágenes RADL son imágenes principales. Las imágenes RADL no se usan como imágenes de referencia para el proceso de decodificación de las imágenes posteriores de la misma imagen RAP asociada. Cuando está presente, todas las imágenes RADL preceden, en orden de decodificación, todas las imágenes posteriores de la misma imagen RAP asociada. Las imágenes RADL no se refieren a ninguna imagen que precede a la imagen RAP asociada en orden de decodificación y, por lo tanto, pueden decodificarse correctamente cuando la decodificación comienza a partir de la imagen RAP asociada. En algunos borradores del estándar HEVC, se hizo referencia a una imagen RADL a una Decodable Leading Picture (Imagen Principal Decodificable - DLP).
Cuando una parte de un flujo de bits que comienza desde una imagen CRA se incluye en otro flujo de bits, las imágenes RASL asociadas a la imagen CRA podrían no decodificarse correctamente, porque algunas de sus imágenes de referencia podrían no estar presentes en el flujo de bits combinado. Para realizar una operación de empalme de este tipo sencilla, el tipo de unidad NAL de la imagen CRA puede cambiarse para indicar que es una imagen BLA. Las imágenes RASL asociadas con una imagen BLA pueden no decodificarse correctamente, por lo tanto, no se emiten/muestran. Además, las imágenes RASL asociadas con una imagen BLA pueden omitirse de la decodificación.
Una imagen BLA puede ser la primera imagen en el flujo de bits en orden de decodificación, o puede aparecer más adelante en el flujo de bits. Cada imagen BLA comienza una nueva secuencia de vídeo codificado, y tiene un efecto similar en el proceso de decodificación como una imagen IDR. Sin embargo, una imagen BLA contiene elementos de sintaxis que especifican un conjunto de imágenes de referencia no vacía. Cuando una imagen BLA tiene nal_unit_type igual a BLA_W_LP, puede tener imágenes RASL asociadas, que no son emitidas por el decodificador y pueden no ser decodificables, ya que pueden contener referencias a imágenes que no están presentes en el flujo de bits. Cuando una imagen BLA tiene nal_unit_type igual a BLA_W_LP, también puede tener imágenes RADL asociadas, que se especifican para decodificarse. Cuando una imagen BLA tiene nal_unit_type igual a BLA_W_DLP, no tiene imágenes RASL asociadas, pero puede tener imágenes RADL asociadas, que se especifican para decodificarse. Cuando una imagen BLA tiene nal_unit_type igual a BLA_N_LP, no tiene ninguna imagen principal asociada.
Una imagen IDR que tiene nal_unit_type igual a IDR_N_LP no tiene imágenes principales asociadas presentes en el flujo de bits. Una imagen IDR que tiene nal_unit_type igual a IDR_W_LP no tiene imágenes RASL asociadas presentes en el flujo de bits, pero puede tener imágenes RADL asociadas en el flujo de bits.
Cuando el valor de unit_type de nal es igual a TRAIL_N, TSA_N, STSA N, RADL N, RASL_N, RSV_VCL_N10, RSV_VCL_N12 o RSV_VCL_N14 la imagen decodificada no se usa como referencia para cualquier otra imagen de la misma subcapa temporal. Es decir, en HEVC, cuando el valor de nal_unit_type es igual a TRAIL_N, TSA_N, STSA N, RADL_N, RASL N, RSV_VCL_N10, RSV_VCL_N12 o RSV_VCL_N14, la imagen decodificada no se incluye en ninguno de RefPicSetStCurrBefore, RefPicSetStCurrAfter y RefPicSetLtCurr de cualquier imagen con el mismo valor de TemporalId. Se puede descartar una imagen codificada con nal_unit_type igual a TRAIL N, TSA_N, STSA_N, RADL N, RASL_N, RSV_VCL_N10, RSV_VCL_N12 o RSV_VCL_N14 sin afectar la capacidad de decodificación de otras imágenes con el mismo valor de TemporalId.
Una imagen posterior puede definirse como una imagen que sigue a la imagen RAP asociada en orden de salida. Cualquier imagen que sea una imagen posterior no tiene nal_unit_type igual a RADL N, RADL R, RASL N o RASL R. Cualquier imagen que sea una imagen principal puede estar restringida a preceder, en orden de decodificación, todas las imágenes posteriores que están asociadas con la misma imagen RAP. Ninguna imagen RASL está presente en el flujo de bits que está asociados con una imagen BLA que tiene nal_unit_type igual a BLA_W_DLP o BLA_N_LP. No hay imágenes de RADL presentes en el flujo de bits que estén asociadas con una imagen BLA que tiene un tipo de unidad de nal igual a BLA_N_LP o que estén asociadas con una imagen IDR que tiene nal_unit_type igual a IDR_N_LP. Cualquier imagen RASL asociada con una imagen CRA o BLA puede estar restringida a preceder a cualquier imagen de RADL asociada con la imagen CRA o BLA en orden de salida. Cualquier imagen RASL asociada con una imagen CRA puede estar restringida a seguir, en orden de salida, cualquier otra imagen RAP que preceda a la imagen CRA en orden de decodificación.
En HEVC hay dos tipos de imágenes, los tipos de imagen de TSA y STSA que pueden usarse para indicar puntos de conmutación de subcapa temporal. Si se han decodificado las subcapas temporales con TemporalId de hasta N hasta la imagen TSA o STSA (exclusiva) y la imagen TSA o STSA tienen TemporalId igual a N+1, la imagen TSA o STSA permite decodificar todas las imágenes posteriores (en orden de decodificación) que tienen TemporalId igual a N+1. El tipo de imagen TSA puede imponer restricciones en la propia imagen de TSA y todas las imágenes en la misma subcapa que siguen a la imagen de TSA en orden de decodificación. Ninguna de estas imágenes se permite usar interpredicción a partir de cualquier imagen en la misma subcapa que precede a la imagen de TSA en orden de decodificación. La definición de TSA puede imponer además restricciones sobre las imágenes en subcapas superiores que siguen a la imagen de TSA en orden de decodificación. Ninguna de estas imágenes se permite para referirse a una imagen que precede a la imagen de TSA en orden de decodificación si esa imagen pertenece a la misma o a la subcapa superior como la imagen de TSA. Las imágenes de TSA tienen TemporalId mayor que 0. El STSA es similar a la imagen de TSA, pero no impone restricciones en las imágenes en subcapas superiores que siguen a la imagen de STSA en orden de decodificación y, por lo tanto, permiten la conmutación ascendente solo sobre la subcapa donde reside la imagen de STSA.
Una unidad NAL no de 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 supplemental enhancement information (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 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 video usability information (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. Existen tres unidades NAL especificadas en H.264/AVC para transportar conjuntos de parámetros de secuencia: la unidad NAL de conjunto de parámetros de secuencia que contiene todos los datos para las unidades de NAL de VCL H.264/AVC en la secuencia, la unidad de NAL de extensión de conjunto de parámetros de secuencia que contiene los datos para imágenes codificadas auxiliares, y el conjunto de parámetros de secuencia de subconjunto para las unidades NAL de VCL de MVC y SVC. 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 un estándar de HEVC de borrador, también hubo un tercer tipo de conjuntos de parámetros, denominado aquí como un Adaptation Parameter Set (conjunto de parámetros de adaptación - APS), que incluye parámetros que probablemente no se cambien en varios cortes codificados pero que pueden cambiar, por ejemplo, para cada imagen o cada una de las imágenes. En una HEVC de borrador, la estructura de sintaxis APS incluye parámetros o elementos de sintaxis relacionados con quantization matrices (matrices de cuantificación - QM), adaptive sample offset (desplazamiento de muestra adaptativo - SAO), adaptive loop filtering (filtrado de bucle adaptativo - ALF) y filtrado de desbloqueo. En una HEVC de borrador, un APS es una unidad NAL y se codifica sin referencia o predicción de cualquier otra unidad NAL. Un identificador, denominado elemento de sintaxis aps_id, está incluido en la unidad NAL APS, e incluido y usado en la cabecera de corte para referirse a un APS particular. En otro estándar de HEVC de borrador, una estructura de sintaxis APS solo contiene parámetros de ALF. En un estándar de HEVC de borrador, un RBSP de conjunto de parámetros de adaptación incluye parámetros que pueden referenciarse por las unidades NAL de segmento codificado de una o más imágenes codificadas cuando al menos uno de sample_adaptive_offset_enabled_flag o adaptive_loop_filter son iguales a 1. En la HEVC publicada final, la estructura de sintaxis APS se retiró del texto de la memoria descriptiva.
En HEVC, un video parameter set (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 video parameter set (conjunto de parámetros de vídeo - VPS), el sequence parameter set (conjunto de parámetros de secuencia - SPS) y el picture parameter set (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.
H.264/AVC y la sintaxis HEVC permiten muchas instancias de conjuntos de parámetros, y cada instancia se identifica con un identificador único. Para limitar el uso de memoria necesaria para conjuntos de parámetros, se ha limitado el intervalo de valores para identificadores de conjunto de parámetros. En H.264/AVC y HEVC, cada cabecera de corte incluye el identificador del conjunto de parámetros de imagen que está activo para la decodificación de la imagen que contiene el corte, y cada conjunto de parámetros de imagen contiene el identificador del conjunto de parámetros de secuencia activo. En un estándar de HEVC de borrador, una cabecera de corte contiene de forma adicional un identificador de APS, aunque en el estándar de HEVC publicada el identificador de APS se retiró de la cabecera de corte. Por consiguiente, la transmisión de conjuntos de parámetros de imagen y secuencia no tiene que sincronizarse con precisión con la transmisión de cortes. En cambio, es suficiente que los conjuntos de parámetros de secuencia activa e imagen se reciban en cualquier momento antes de que se referencien, lo que permite la transmisión de conjuntos de parámetros “fuera de banda” usando un mecanismo de transmisión más fiable en comparación con los protocolos utilizados para los datos de corte. Por ejemplo, los conjuntos de parámetros pueden incluirse como un parámetro en la descripción de la sesión para sesiones de Real-time Transport Protocol (Protocolo de Transporte en Tiempo Real - RTP). Si los conjuntos de parámetros se transmiten en banda, se pueden repetir para mejorar la robustez de errores.
Un conjunto de parámetros puede activarse mediante una referencia de un corte o de otro conjunto de parámetros activo o, en algunos casos, de otra estructura de sintaxis tal como un mensaje SEI de período de almacenamiento en memoria intermedia.
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.
Se han especificado varios mensajes SEI anidados en los estándares AVC y HEVC o se proponen de cualquier manera. La idea de los mensajes SEI anidados es contener uno o más mensajes SEI dentro de un mensaje SEI de anidamiento y proporcionar un mecanismo para asociar los mensajes SEI contenidos con un subconjunto del flujo de bits y/o un subconjunto de datos decodificados. Puede ser necesario que un mensaje SEI anidado contenga uno o más mensajes SEI que no sean los propios mensajes SEI. Un mensaje SEI contenido en un mensaje SEI anidado puede denominarse un mensaje SEI anidado. Un mensaje SEI no contenido en un mensaje SEI anidado puede denominarse un mensaje SEI no anidado. El mensaje SEI de anidamiento escalable de HEVC permite identificar un subconjunto de flujo de bits (resultante de un proceso de extracción de subflujo de bits) o un conjunto de capas a las que se aplican los mensajes SEI anidados. Un subconjunto de flujo de bits también puede denominarse como un subflujo de bits.
Una imagen codificada es una representación codificada de una imagen. Una imagen codificada en H.264/AVC comprende las unidades VCL NAL que se requieren para la decodificación de la imagen. En H.264/AVC, una imagen codificada puede ser una imagen codificada primaria o una imagen codificada redundante. Una imagen codificada primaria se usa en el proceso de decodificación de flujos de bits válidos, mientras que una imagen codificada redundante es una representación redundante que solo debería decodificarse cuando la imagen codificada primaria no puede decodificarse con éxito. En HEVC, no se ha especificado una imagen codificada redundante.
En H.264/AVC, una access unit (unidad de acceso - AU) comprende una imagen codificada primaria y aquellas unidades NAL que están asociadas con ella. En H.264/AVC, el orden de aparición de las unidades NAL dentro de una unidad de acceso se restringe de la siguiente manera. Una unidad de NAL de delimitador de unidad de acceso opcional puede indicar el inicio de una unidad de acceso. Se sigue por cero o más unidades NAL SEI. Los cortes codificados de la imagen codificada primaria aparecen a continuación. En H.264/AVC, el corte codificado de la imagen codificada primaria puede ser seguido por segmentos codificados para cero o más imágenes codificadas redundantes. Una imagen codificada redundante es una representación codificada de una imagen o una parte de una imagen. Una imagen codificada redundante puede decodificarse si la imagen codificada primaria no es recibida por el decodificador, por ejemplo, debido a una bss en la transmisión o a una corrupción en medio de almacenamiento físico.
En H.264/AVC, una unidad de acceso también puede incluir una imagen codificada auxiliar, que es una imagen que complementa la imagen codificada primaria y puede usarse, por ejemplo, en el proceso de visualización. Una imagen codificada auxiliar puede usarse, por ejemplo, como un canal alfa o un plano alfa que especifica el nivel de transparencia de las muestras en las imágenes decodificadas. Un canal o plano alfa puede usarse en una composición o sistema de renderización en capas, donde la imagen de salida se forma superponiendo imágenes que son al menos parcialmente transparentes una encima de la otra. Una imagen codificada auxiliar tiene las mismas restricciones sintácticas y semánticas que una imagen codificada redundante monocromo. En H.264/AVC, una imagen codificada auxiliar contiene el mismo número de macrobloques que la imagen codificada primaria.
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 HEVC, una access unit (unidad de acceso - AU) puede definirse como un conjunto de unidades NAL que están asociadas entre sí según una regla de clasificación especificada, son consecutivas en orden de decodificación, y contienen una o más imágenes codificadas con diferentes valores 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.
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 coded video sequence (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 ser una unidad de acceso IDR, una unidad de acceso BLA o una unidad de acceso CRA. El valor de NoRaslOutputFlag es igual a 1 para cada unidad de acceso IDR, cada unidad de acceso BLA, y cada unidad de acceso CRA que es la primera unidad de acceso en el flujo de bits en orden de decodificación, es la primera unidad de acceso que sigue un extremo de la unidad de NAL de secuencia en orden de decodificación o tiene HandleCraAsBlaFlag igual a 1. NoRaslOutputFlag igual a 1 tiene un impacto que las imágenes RASL asociadas con la imagen IRAP para la que se establece NoRaslOutputFlag no se emiten por el decodificador. 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.
Una Structure of Pictures (estructura de imágenes - SOP) puede definirse como una o más imágenes codificadas consecutivas en orden de decodificación, en la que la primera imagen codificada en orden de decodificación es una imagen de referencia en la subcapa temporal más baja y ninguna imagen codificada, excepto potencialmente la primera imagen codificada en orden de decodificación, es una imagen RAP. Todas las imágenes en la SOP anterior preceden en el orden de decodificación a todas las imágenes en la SOP actual y todas las imágenes en la siguiente SOP suceden en el orden de decodificación a todas las imágenes en la SOP actual. Una SOP puede representar una estructura de interpredicción jerárquica y repetitiva. La expresión group of pictures (grupo de imágenes - GOP) a veces se puede usar indistintamente con el término SOP y tener la misma semántica que la semántica de SOP.
La sintaxis de flujo de bits de H.264/AVC y HEVC indica si una imagen particular es una imagen de referencia para la interpredicción de cualquier otra imagen. Las imágenes de cualquier tipo de codificación (I, P, B) pueden ser imágenes de referencia o imágenes no de referencia en H.264/AVC y HEVC.
H.264/AVC especifica el proceso para el marcaje de imagen de referencia decodificada para controlar el consumo de memoria en el decodificador. El número máximo de imágenes de referencia utilizadas para la interpredicción, denominado como M, se determina en el conjunto de parámetros de secuencia. Cuando se decodifica una imagen de referencia, se marca como “usada para referencia” . Si la decodificación de la imagen de referencia causó más de M imágenes marcadas como “usadas para referencia” , al menos una imagen se marca como “no usada para referencia” . Hay dos tipos de operación para el marcaje de imagen de referencia decodificada: control de memoria adaptativa y ventana deslizante. El modo de operación para el marcaje de imagen de referencia decodificada se selecciona en una base por imagen. El control de memoria adaptativo permite la señalización explícita que las imágenes que se marcan como “ no usadas para referencia” y también pueden asignar índices a largo plazo a imágenes de referencia a corto plazo. El control de memoria adaptativo puede requerir la presencia de parámetros de memory management control operation (operación de control de gestión de memoria - MMCO) en el flujo de bits. Los parámetros MMCO pueden incluirse en una estructura de sintaxis de marcaje de imágenes de referencia decodificadas. Si el modo de operación de la ventana deslizante está en uso y hay M imágenes marcadas como “usadas para referencia” , la imagen de referencia a corto plazo que era la primera imagen decodificada entre esas imágenes de referencia a corto plazo que se marcan como “usadas para referencia” se marca como “no usada para referencia” . En otras palabras, el modo de operación de ventana deslizante da como resultado una operación de almacenamiento en memoria intermedia de primero en entrar primero en salir entre imágenes de referencia a corto plazo.
Una de las operaciones de control de gestión de memoria en H.264/AVC hace que todas las imágenes de referencia excepto la imagen actual, se marquen como “ no usadas para referencia” . Una instantaneous decoding refresh (imagen de actualización de decodificación instantánea - IDR) contiene solo segmentos intracodificados y provoca un “ reinicio” similar de imágenes de referencia.
En HEVC, no se usan estructuras de sintaxis de marcaje de imágenes de referencia y procesos de decodificación relacionados, pero, en cambio, se usa una estructura de sintaxis y un proceso de decodificación de reference picture set (conjunto de imágenes de referencia - RPS), en su lugar, para un propósito similar. Un conjunto de imágenes de referencia válido o activo para una imagen incluye todas las imágenes de referencia usadas como referencia para la imagen y todas las imágenes de referencia que se mantienen marcadas como “ usadas para referencia” para cualquier imagen posterior en orden de decodificación. Hay seis subconjuntos del conjunto de imágenes de referencia, que reciben el nombre RefPicSetStCurr0 (también conocido como RefPicSetStCurrBefore), RefPicSetStCurr1 (también conocido como RefPicSetStCurrAfter), RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr y RefPicSetLtFoll. RefPicSetStFoll0 y RefPicSetStFoll1 también se puede considerar que forman conjuntamente un subconjunto RefPicSetStFoll. La notación de los seis subconjuntos es la siguiente. “ Curr” se refiere a imágenes de referencia que se incluyen en las listas de imágenes de referencia de la imagen actual y, por lo tanto, pueden usarse como referencia de interpredicción para la imagen actual. “ Foll” se refiere a imágenes de referencia que no están incluidas en las listas de imágenes de referencia de la imagen actual, pero pueden usarse en imágenes posteriores en orden de decodificación como imágenes de referencia. “St” se refiere a imágenes de referencia a corto plazo, que generalmente pueden identificarse a través de un cierto número de bits menos significativos de su valor POC. “ Lt” se refiere a imágenes de referencia a largo plazo, que se identifican específicamente y generalmente tienen una mayor diferencia de valores de POC en relación con la imagen actual que lo que puede representarse por el determinado número mencionado de bits menos significativos. “0” se refiere a aquellas imágenes de referencia que tienen un valor POC menor que el de la imagen actual. “ 1” se refiere a aquellas imágenes de referencia que tienen un valor POC mayor que el de la imagen actual. RefPicSetStCurr0, RefPicSetStCurrl, RefPicSetStFoll0 y RefPicSetStFoll1, reciben el nombre colectivamente como el subconjunto a corto plazo del conjunto de imágenes de referencia. RefPicSetLtCurr y RefPicSetLtFoll reciben el nombre como el subconjunto a largo plazo del conjunto de imágenes de referencia.
En HEVC, un conjunto de imágenes de referencia puede especificarse en un conjunto de parámetros de secuencia y tomarse en uso en la cabecera de corte a través de un índice al conjunto de imágenes de referencia. También se puede especificar un conjunto de imágenes de referencia en una cabecera de corte. Un subconjunto a largo plazo de un conjunto de imágenes de referencia se especifica generalmente solo en una cabecera de corte, mientras que los subconjuntos a corto plazo del mismo conjunto de imágenes de referencia pueden especificarse en el conjunto de parámetros de imagen o cabecera de corte. Un conjunto de imágenes de referencia puede codificarse independientemente o puede predecirse a partir de otro conjunto de imágenes de referencia (conocido como predicción inter-RPS). Cuando un conjunto de imágenes de referencia se codifica independientemente, la estructura de sintaxis incluye hasta tres bucles que iteran sobre diferentes tipos de imágenes de referencia; imágenes de referencia a corto plazo con valor POC inferior que la imagen actual, imágenes de referencia a corto plazo con valor POC más alto que la imagen actual e imágenes de referencia a largo plazo. Cada entrada de bucle especifica una imagen que se va a marcar como “usada para la referencia” . En general, la imagen se especifica con un valor POC diferencial. La predicción inter-RPS aprovecha el hecho de que el conjunto de imágenes de referencia de la imagen actual puede predecirse a partir del conjunto de imágenes de referencia de una imagen previamente decodificada. Esto se debe a que todas las imágenes de referencia de la imagen actual son imágenes de referencia de la imagen anterior o la imagen previamente decodificada en sí misma. Solo es necesario indicar cuál de estas imágenes debe ser imágenes de referencia y usarse para la predicción de la imagen actual. En ambos tipos de codificación de conjunto de imágenes de referencia, se envía de forma adicional una bandera (used_by_curr_pic_X_flag) para cada imagen de referencia que indica si se usa la imagen de referencia para la referencia de la imagen actual (incluida en una lista Curr *) o no (incluida en una lista Foll *). Las imágenes que se incluyen en el conjunto de imágenes de referencia usado por el corte actual se marcan como “usadas para referencia” , y las imágenes que no están en el conjunto de imágenes de referencia usado por el corte actual se marcan como “ no usadas para referencia” . Si la imagen actual es una imagen IDR, RefPicSetStCurr0, RefPicSetStCurrl, RefPicSetStFoll0, RefPicSetStFoll1, RefPicSetLtCurr y RefPicSetLtFoll se establecen en vacío.
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).
Una lista de imágenes de referencia, tal como la lista 0 de imágenes de referencia y la lista 1 de imágenes de referencia, se construye típicamente en dos etapas: En primer lugar, se genera una lista de imágenes de referencia inicial. La lista de imágenes de referencia inicial puede generarse, por ejemplo, basándose en frame_num, POC, temporaljd (o TemporalId o similares), o en información sobre la jerarquía de predicción tal como la estructura de GOP, o cualquier combinación de los mismos. En segundo lugar, la lista de imágenes de referencia inicial puede reordenarse mediante comandos de reference picture list reordering (reordenación de lista de imágenes de referencia - RPLR), también conocidos como estructura de sintaxis de modificación de la lista de imágenes de referencia, que puede estar contenida en cabeceras de corte. En H.264/AVC, los comandos RPLR indican las imágenes que se ordenan al comienzo de la lista de imágenes de referencia respectiva. Esta segunda etapa también puede denominarse el proceso de modificación de la lista de imágenes de referencia, y los comandos RPLR pueden incluirse en una estructura de sintaxis de modificación de la lista de imágenes de referencia. Si se usan conjuntos de imágenes de referencia, la lista 0 de imágenes de referencia puede inicializarse para contener RefPicSetStCurr0 en primer lugar, seguido por RefPicSetStCurr1, seguido por RefPicSetLtCurr. La lista 1 de imágenes de referencia puede inicializarse para contener RefPicSetStCurr1 en primer lugar, seguido por RefPicSetStCurr0. En HEVC, las listas de imágenes de referencia iniciales pueden modificarse a través de la estructura de sintaxis de modificación de la lista de imágenes de referencia, donde las imágenes de las listas de imágenes de referencia iniciales pueden identificarse a través de un índice de entrada a la lista. En otras palabras, en HEVC, se codifica la modificación de la lista de imágenes de referencia en una estructura de sintaxis que comprende un bucle sobre cada entrada en la lista de imágenes de referencia final, donde cada entrada de bucle es un índice codificado de longitud fija a la lista de imágenes de referencia inicial e indica la imagen en orden de posición ascendente en la lista de imágenes de referencia final.
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.
Para representar vectores de movimiento eficientemente en flujos de bits, los vectores de movimiento pueden codificarse diferencialmente con respecto a un vector de movimiento predicho específico de bloque. En muchos códecs de vídeo, 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, a veces denominadas advanced motion vector prediction (predicción de vector de movimiento avanzada - AMVP), 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, se puede predecir el índice de referencia de la 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. La codificación diferencial de vectores de movimiento está típicamente deshabilitada a través de los límites de corte.
La advanced motion vector prediction (predicción de vector de movimiento avanzada - AMVP) o similar puede funcionar, por ejemplo, como sigue, mientras que también son posibles otras realizaciones similares de la predicción de vector de movimiento avanzada, por ejemplo, con diferentes conjuntos de posiciones candidatas y ubicaciones candidatas con conjuntos de posiciones candidatos. Se pueden derivar dos spatial motion vector predictors (predictores de vector de movimiento espaciales - MVP) y se puede derivar un temporal motion vector predictor (predictor de vector de movimiento temporal - TMVP). Pueden seleccionarse entre las posiciones mostradas en la Figura 6: tres posiciones candidatas de predictor de vector de movimiento espacial 603, 604, 605, situadas por encima del bloque de predicción actual 600 (B0, B1, B2) y dos 601, 602 a la izquierda (A0, A1). El primer predictor de vector de movimiento que está disponible (p. ej., reside 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 esa dirección de predicción (arriba o izquierda) en la competencia de vector de movimiento. Un índice de referencia para el predictor de vector de movimiento temporal puede indicarse por el codificador en la cabecera de fragmento (p. ej., como un elemento de sintaxis collocated_ref_idx). El vector de movimiento obtenido de la imagen coubicada puede escalarse según las proporciones de las diferencias de recuento de orden de imagen 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.
Muchos códecs de vídeo de alta eficiencia, tales como el códec de HEVC, emplean un mecanismo de codificación/decodificación de información de movimiento adicional, a menudo llamado modo/proceso/mecanismo de fusión/fusionar, donde toda la información de movimiento de un bloque/PU se predice y usa sin ninguna modificación/corrección. La información de movimiento mencionada anteriormente para una PU puede comprender uno o más de lo siguiente: 1) La información de si 'la PU se unipredice usando solo la lista 0 de imágenes de referencia' o 'la PU se unipredice usando solo la lista 1 de imágenes de referencia' o 'la PU se bipredice usando tanto lista 0 como la lista 1 de imágenes de referencia'; 2) El valor del vector de movimiento correspondiente a la lista 0 de imágenes de referencia, que puede comprender un componente de vector de movimiento horizontal y vertical; 3) Índice de imágenes de referencia en la lista 0 de imágenes de referencia y/o un identificador de una imagen de referencia señalada por el vector de movimiento correspondiente a la lista 0 de imágenes de referencia, donde el identificador de una imagen de referencia puede ser, por ejemplo, un valor de recuento de orden de imagen, un valor de identificador de capa (para predicción intercapa), o un par de un valor de recuento de orden de imagen y un valor de identificador de capa; 4) Información del marcaje de imagen de referencia de la imagen de referencia, p. ej., información de si la imagen de referencia se marcó como “ usada para referencia a corto plazo” o “usada para referencia a largo plazo” ; 5) - 7) Lo mismo que 2) - 4), respectivamente, pero para la lista 1 de imágenes de referencia. Similarmente, la predicción de la información de movimiento se lleva a cabo usando la información de movimiento de bloques adyacentes y/o bloques coubicados en imágenes de referencia temporal. Una lista, a menudo llamada lista de fusión, puede construirse incluyendo candidatos de predicción de movimiento asociados con bloques adyacentes/coubicados disponibles y se señaliza el índice de candidato de predicción de movimiento seleccionado en la lista y se copia la información de movimiento del candidato seleccionado a la información de movimiento de la PU actual. Cuando se emplea el mecanismo de fusión para una CU completa y se usa la señal de predicción para la CU como la señal de reconstrucción, es decir, el residuo de predicción no se procesa, este tipo de codificación/decodificación de la CU se denomina típicamente como modo de omisión o modo de omisión basado en fusión. Además del modo de omisión, el mecanismo de fusión también puede emplearse para PU individuales (no necesariamente toda la CU como en modo de omisión) y, en este caso, el residuo de predicción puede utilizarse para mejorar la calidad de la predicción. Este tipo de modo de predicción se denomina típicamente como un modo interfusión.
Uno de los candidatos en la lista de fusión puede ser un candidato TMVP, que puede derivarse del bloque coubicado dentro de una imagen de referencia indicada o inferida, tal como la imagen de referencia indicada, por ejemplo, en la cabecera de corte, por ejemplo, usando el elemento de sintaxis collocated_ref_idx o similar.
En HEVC, el denominado índice de referencia objetivo para la predicción del vector de movimiento temporal en la lista de fusión se establece como 0 cuando el modo de codificación de movimiento es el modo de fusión. Cuando el modo de codificación de movimiento en HEVC que utiliza la predicción del vector de movimiento temporal es el modo de predicción de vector de movimiento avanzado, los valores de índice de referencia objetivo se indican explícitamente (p. ej., por cada PU).
Cuando se ha determinado el valor del índice de referencia objetivo, el valor del vector de movimiento de la predicción del vector de movimiento temporal puede derivarse de la siguiente manera: Se calcula el vector de movimiento en el bloque que está coubicado con el vecino inferior-derecho de la unidad de predicción actual. La imagen donde reside el bloque coubicado puede determinarse, p. ej., según el índice de referencia señalado en la cabecera de corte como se ha descrito anteriormente. El vector de movimiento determinado en el bloque coubicado se escala con respecto a la relación de una primera diferencia de recuento de orden de imagen y una segunda diferencia de recuento de orden de imagen. La primera diferencia de recuento de orden de imagen se deriva entre la imagen que contiene el bloque coubicado y la imagen de referencia del vector de movimiento del bloque coubicado. La segunda diferencia de recuento de orden de imagen se deriva entre la imagen actual y la imagen de referencia objetivo. Si una, pero no ambas de la imagen de referencia objetivo y la imagen de referencia del vector de movimiento del bloque coubicado es una imagen de referencia a largo plazo (mientras que la otra es una imagen de referencia a corto plazo), el candidato de TMVP puede considerarse no disponible. Si tanto la imagen de referencia objetivo como la imagen de referencia del vector de movimiento del bloque coubicado son imágenes de referencia a largo plazo, no se puede aplicar un escalamiento de vector de movimiento basado en POC.
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. 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 fine-grain or finegranularity scalability (escalabilidad de grano fino o de granularidad fina - FGS), medium-grain or medium-granularity scalability (escalabilidad de grano medio o de granularidad media - MGS), y/o coarse-grain or coarse-granularity scalability (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 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 iTU-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.
- 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 con H.264/AVC y una capa de mejora puede codificarse con una extensión 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.
Actualmente se investigan y desarrollan diversas tecnologías para proporcionar contenido de vídeo tridimensional (3D). 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. Se pueden necesitar más de dos vistas paralelas para aplicaciones que permiten la conmutación de punto de vista o para pantallas autoestereoscópicas que pueden presentar un gran número de vistas simultáneamente y dejar que los observadores observen el contenido desde diferentes puntos de vista. Los estudios intensos se han centrado en la codificación de vídeo para pantallas autoestereoscópicas y tales aplicaciones de múltiples vistas en donde un visor puede ver solo un par de vídeos estéreo desde un punto de vista específico y otro par de vídeos estéreo desde un punto de vista diferente. Uno de los enfoques más factibles para tales aplicaciones de múltiples vistas ha resultado ser tal en donde se proporciona solo un número limitado de vistas, p. ej., un vídeo mono o estéreo más algunos datos complementarios, a un lado del decodificador y todas las vistas requeridas se representan (es decir, se sintetizan) localmente es el decodificador que se mostrarán en una pantalla.
Una vista puede definirse como una secuencia de imágenes que representa una cámara o un punto de vista. Las imágenes que representan una vista también pueden denominarse componentes de vista. En otras palabras, un componente de vista puede definirse como una representación codificada de una vista en una única unidad de acceso. En la codificación de vídeo de múltiples vistas, se codifica más de una vista en un flujo de bits. Dado que las vistas están normalmente destinadas a mostrarse en la pantalla estereoscópica o autoestereoscópica de múltiples vistas o para usarse para otras disposiciones 3D, típicamente representan la misma escena y se superponen parcialmente a nivel de contenido, aunque representan diferentes puntos de vista para el contenido.
Por lo tanto, puede utilizarse la predicción intervista en la codificación de vídeo de múltiples vistas para aprovechar la correlación intervista y mejorar la eficiencia de compresión. Una forma de realizar la predicción intervista es incluir una o más imágenes decodificadas de una o más vistas de otras vistas en la lista o listas de imágenes de referencia de una imagen que se codifica o decodifica que reside dentro de una primera vista. La escalabilidad de vista puede referirse a tales flujos de bits de vídeo de múltiples vistas o de codificación de vídeo de múltiples vistas, que permiten la eliminación u omisión de una o más vistas codificadas, mientras que el flujo de bits resultante permanece conforme y representa vídeo con un número menor de vistas que originalmente.
La region of Interest (región de interés - ROI) puede definirse para referirse a la codificación de una región particular, dentro de un video en una fidelidad más alta. Existen varios métodos para que los codificadores y/u otras entidades determinen las ROI de las imágenes de entrada a codificar. Por ejemplo, se puede usar la detección facial y se pueden determinar las caras para ser ROI. Adicional o alternativamente, en otro ejemplo, los objetos que están enfocados pueden detectarse y determinarse para que sean ROI, mientras que los objetos fuera de foco se determinan para estar fuera de las ROI. Adicional o alternativamente, en otro ejemplo, puede estimarse o conocerse la distancia a los objetos, p. ej., basándose en un sensor de profundidad, y se pueden determinar las ROI para que sean aquellos objetos que están relativamente cerca de la cámara en lugar de en el fondo.
La escalabilidad de ROI se puede definir como un tipo de escalabilidad en donde una capa de mejora solo parte de una imagen de capa de referencia, p. ej., espacialmente, a nivel de calidad, en profundidad de bits y/o a lo largo de otras dimensiones de escalabilidad. Como la escalabilidad de la ROI se puede usar junto con otros tipos de escalabilidades, se puede considerar que forma una categorización diferente de tipos de escalabilidad. Existen varias aplicaciones diferentes para la codificación de ROI con diferentes requisitos, que pueden realizarse usando escalabilidad de ROI. Por ejemplo, una capa de mejora puede transmitirse para mejorar la calidad y/o una resolución de una región en la capa base. Un decodificador que recibe tanto el flujo de bits de capa de mejora como de base podría decodificar ambas capas y superponer las imágenes decodificadas entre sí y mostrar la imagen final.
La correspondencia espacial entre la imagen de la capa de mejora y la región de la capa de referencia o, similarmente, la región de la capa de mejora y la imagen de la capa base, puede indicarse por el codificador y/o decodificarse por el decodificador usando, por ejemplo, los llamados desplazamientos de capa de referencia escalados. Puede considerarse que los desplazamientos de capa de referencia escalados especifican las posiciones de las muestras de esquina de la imagen de la capa de referencia sobremuestreada con respecto a las muestras de esquina respectivas de la imagen de la capa de mejora. Los valores de desplazamiento pueden firmarse, lo que permite el uso de los valores de desplazamiento que se utilizarán en ambos tipos de escalabilidad espacial extendida, como se ilustra en la Figura 19a y la Figura 19b. En el caso de la escalabilidad de la región de interés (Fig. 19a), la imagen 110 de la capa de mejora corresponde a una región 112 de la imagen de la capa de referencia 116 y los desplazamientos de la capa de referencia escalados indican las esquinas de la imagen de la capa de referencia sobremuestreada que extienden el área de la imagen de la capa de mejora. Los desplazamientos de capa de referencia escalados pueden indicarse por cuatro elementos de sintaxis (p. ej., por un par de una capa de mejora y su capa de referencia), que pueden denominarse scaled_ref_layer_top_offset 118, scaled_ref_layer_bottom_offset 120,
scaled_ref_layer_right_offset 122 y scaled_ref_layer left offset 124. Puede concluirse la región de capa de referencia que se sobremuestrea por el codificador y/o el decodificador mediante escala descendente de los desplazamientos de capa de referencia escalados según la relación entre la altura o anchura de la imagen de capa de mejora y la altura o anchura de la imagen de capa de referencia sobremuestreada, respectivamente. El desplazamiento de la capa de referencia escalado submuestreado puede usarse entonces para obtener la región de la capa de referencia que se sobremuestrea y/o para determinar qué muestras de la imagen de la imagen de la capa de referencia se coubican con ciertas muestras de la imagen de la capa de mejora. En caso de que la imagen de capa de referencia corresponda a una región de la imagen de capa de mejora (Fig. 19b), los desplazamientos de capa de referencia escalada indican las esquinas de la imagen de capa de referencia sobremuestreada que están dentro del área de la imagen de capa de mejora. La compensación de capa de referencia escalada puede usarse para determinar qué muestras de la imagen de la capa de referencia sobremuestreada se coubican a ciertas muestras de la imagen de la capa de mejora. También es posible mezclar los tipos de escalabilidad espacial extendida, es decir, aplicar un tipo horizontalmente y otro tipo verticalmente. Los desplazamientos de capa de referencia escalados pueden indicarse por el codificador y/o decodificarse por el decodificador desde, por ejemplo, una estructura de sintaxis de nivel de secuencia, tal como SPS y/o VPS. La precisión de los desplazamientos de referencia escalados puede predefinirse, por ejemplo, en un estándar de codificación y/o especificarse por el codificador y/o decodificarse por el decodificador a partir del flujo de bits. Por ejemplo, puede usarse una precisión de 1/16 de tamaño de muestra de luma en la capa de mejora. Los desplazamientos de capa de referencia escalados pueden indicarse, decodificarse y/o usarse en el proceso de codificación, decodificación y/o visualización cuando no tiene lugar predicción intercapa entre dos capas.
Algunos estándares de codificación permiten la creación de flujos de bits escalables. Una representación decodificada significativa puede producirse al decodificar solo ciertas partes de un flujo de bits escalable. Los flujos de bits escalables pueden usarse, por ejemplo, para la adaptación de tasa de flujos de unidifusión precodificados en un servidor de envío por flujo continuo y para la transmisión de un único flujo de bits a terminales que tienen diferentes capacidades y/o con diferentes condiciones de red. Una lista de algunos otros casos de uso para la codificación de vídeo escalable se puede encontrar en el documento de salida del estándar ISO/IEC JTC1 SC29 WG11 (MPEG) N5540, “Applications and Requirements for Scalable Video Coding” , la 64a reunión del MPEG, 10 a 14 de marzo de 2003, Pattaya, Tailandia.
Un estándar de codificación puede incluir un proceso de extracción de subflujo de bits, y este se especifica, por ejemplo, en SVC, MVC y HEVC. El proceso de extracción de subflujo de bits se refiere a convertir un flujo de bits, típicamente eliminando unidades NAL, a un subflujo de bits, que también puede denominarse un subconjunto de flujo de bits. El subflujo de bits aún permanece conforme al estándar. Por ejemplo, en HEVC, el flujo de bits creado excluyendo todas las unidades NAL de VCL que tienen un valor de TemporalId mayor que un valor seleccionado y que incluyen todas las otras unidades NAL de VCL permanece conforme. En HEVC, el proceso de extracción de subflujo de bits toma un TemporalId y/o una lista de valores nuh_layer_id como entrada y deriva un subflujo de bits (también conocido como subconjunto de flujo de bits) eliminando del flujo de bits todas las unidades NAL con TemporalId mayor que el valor de TemporalId de entrada o el valor nuh_layer_id no entre los valores en la lista de entrada de valores nuh_layer_id.
Un estándar o sistema de codificación puede referirse a una expresión punto de operación o similar, que puede indicar las capas y/o subcapas escalables bajo las cuales opera la decodificación y/o puede asociarse con un subflujo de bits que incluye las capas escalables y/o subcapas que se están decodificando. A continuación, se proporcionan algunas definiciones no limitantes de un punto de operación.
En HEVC, un punto de operación se define como flujo de bits creado a partir de otro flujo de bits mediante la operación del proceso de extracción de subflujo de bits con el otro flujo de bits, un TemporalId más alto objetivo y una lista de identificadores de capa objetivo como entradas.
El VPS de HEVC especifica conjuntos de capas y parámetros HRD para estos conjuntos de capas. Se puede usar un conjunto de capas como la lista de identificadores de capa objetivo en el proceso de extracción de subflujo de bits.
En SHVC y MV-HEVC, una definición de punto de operación puede incluir una consideración de un conjunto de capas de salida objetivo. En SHVC y MV-HEVC, un punto de operación puede definirse como un flujo de bits que se crea a partir de otro flujo de bits mediante el funcionamiento del proceso de extracción de subflujo de bits con el otro flujo de bits, un TemporalId más alto objetivo y una lista de identificador de capa objetivo como entradas, y que está asociado con un conjunto de capas de salida objetivo.
Un conjunto de capas de salida puede definirse como un conjunto de capas que consisten en las capas de uno de los conjuntos de capas especificados, donde una o más capas en el conjunto de capas están indicadas para ser capas de salida. Una capa de salida puede definirse como una capa de un conjunto de capas de salida que se emite cuando el decodificador y/o el HRD operan usando el conjunto de capas de salida como el conjunto de capas de salida objetivo. En MV-HEVC/SHVC, la variable TargetOptLayerSetIdx puede especificar qué conjunto de capas de salida es el conjunto de capas de salida objetivo estableciendo TargetOptLayerSetIdx igual al índice del conjunto de capas de salida que es el conjunto de capas de salida objetivo. El HRD puede establecer, por ejemplo, TargetOptLayerSetIdx, y/o puede establecerse por medios externos, por ejemplo, por un reproductor o similar a través de una interfaz proporcionada por el decodificador. En MV-HEVC/SHVC, una capa de salida objetivo puede definirse como una capa que se va a emitir y es una de las capas de salida de la capa de salida establecida con índice olsIdx de manera que TargetOptLayerSetIdx es igual a olsIdx.
MV-HEVC/SHVC posibilita la derivación de un conjunto de capas de salida “predeterminado” para cada conjunto de capas especificado en el VPS usando un mecanismo específico o indicando las capas de salida explícitamente. Se han especificado dos mecanismos específicos: puede especificarse en el VPS que cada capa es una capa de salida o que solo la capa más alta es una capa de salida en un conjunto de capas de salida “predeterminado” . Pueden excluirse capas de imagen auxiliares de la consideración cuando se determina si una capa es una capa de salida usando los mecanismos específicos mencionados. Además, para los conjuntos de capas de salida “predeterminados” , la extensión VPS permite especificar conjuntos de capas de salida adicionales con capas seleccionadas que se indican que son capas de salida.
En MV-HEVC/SHVC, una estructura de sintaxis profile_tier_level( ) está asociada para cada conjunto de capas de salida. Para ser más exactos, se proporciona una lista de estructuras de sintaxis p rof i le_tier_leve l ( ) en la extensión VPS, y se proporciona un índice al p rof i le_tier_leve l ( ) aplicable dentro de la lista para cada conjunto de capas de salida. En otras palabras, se indica una combinación de valores de perfil, estrato y nivel para cada conjunto de capas de salida.
Aunque un conjunto constante de capas de salida se adecúa bien a los casos de uso y los flujos de bits donde la capa más alta permanece sin cambios en cada unidad de acceso, pueden no soportar casos de uso donde la capa más alta cambia de una unidad de acceso a otra. Por lo tanto, se ha propuesto que los codificadores puedan especificar el uso de capas de salida alternativas dentro del flujo de bits y, en respuesta, al uso de decodificadores de capas de salida alternativas que emiten una imagen decodificada a partir de una capa de salida alternativa en ausencia de una imagen en una capa de salida dentro de la misma unidad de acceso. Existen varias posibilidades de cómo indicar capas de salida alternativas. Por ejemplo, cada capa de salida en un conjunto de capas de salida puede asociarse con una capa de salida alternativa mínima, y se pueden usar elemento o elementos de sintaxis a nivel de capa de salida para especificar la capa o capas de salida alternativas para cada capa de salida. Alternativamente, el mecanismo de conjunto de capas de salida alternativas puede estar limitado a usarse solo para conjuntos de capas de salida que contienen solo una capa de salida, y se pueden usar elemento o elementos de sintaxis a nivel de conjunto de capas de salida para especificar la capa o capas de salida alternativas para la capa de salida del conjunto de capas de salida. Alternativamente, el mecanismo de conjunto de capas de salida alternativas puede estar limitado a usarse solo para flujos de bits o CVS en los que todos los conjuntos de capas de salida especificados contienen solo una capa de salida, y la capa o capas de salida alternativas pueden indicarse por elemento o elementos de sintaxis a nivel de flujo de bits o de CVS. La capa o capas de salida alternativas pueden especificarse, por ejemplo, enumerando, p. ej., dentro de VPS las capas de salida alternativas (p. ej., usando sus identificadores de capa o índices de la lista de capas de referencia directa o indirecta), lo que indica una capa de salida alternativa mínima (p. ej., usando su identificador de capa o su índice dentro de la lista de capas de referencia directa o indirecta), o una bandera que especifica que cualquier capa de referencia directa o indirecta es una capa de salida alternativa. Cuando se habilita más de una capa de salida alternativa para que se use, puede especificarse que la primera imagen de referencia intercapa directa o indirecta presente en la unidad de acceso en el orden de la capa descendente se emite hasta la capa de salida alternativa mínima indicada.
En la MVC, un punto de operación puede definirse como sigue: Se identifica un punto de operación por un valor temporaljd que representa el nivel temporal objetivo y un conjunto de valores view_id que representan las vistas de salida objetivo. Un punto de operación está asociado con un subconjunto de flujo de bits, que consiste en las vistas de salida objetivo y todas las demás vistas de las vistas de salida objetivo que dependen, que se derivan usando el proceso de extracción de subflujo de bits con tIdTarget igual al valor tem poraljd y viewIdTargetList, que consiste en el conjunto de valores de id de vista como entradas. Más de un punto de operación puede estar asociado con el mismo subconjunto de flujo de bits. Cuando “se decodifica un punto de operación” , se puede decodificar un subconjunto de flujo de bits correspondiente al punto de operación y posteriormente se pueden emitir las vistas de salida objetivo.
Como se indicó anteriormente, MVC es una extensión de H.264/AVC. Muchas de las definiciones, conceptos, estructuras de sintaxis, semánticas y procesos de decodificación de H.264/AVC se aplican también a MVC como tal o con ciertas generalizaciones o restricciones. Algunas definiciones, conceptos, estructuras de sintaxis, semánticas y procesos de decodificación de MVC se describen a continuación.
Una unidad de acceso en MVC se define como un conjunto de unidades NAL que son consecutivas en orden de decodificación y contienen exactamente una imagen codificada primaria que consiste en una o más componentes de vista. Además de la imagen codificada primaria, una unidad de acceso también puede contener una o más imágenes codificadas redundantes, una imagen codificada auxiliar u otras unidades NAL que no contienen cortes o particiones de datos de corte de una imagen codificada. La decodificación de una unidad de acceso da como resultado una imagen decodificada que consiste en uno o más componentes de la vista decodificada, cuando no se producen errores de decodificación, errores de flujo de bits u otros errores que pueden afectar a la decodificación. En otras palabras, una unidad de acceso en MVC contiene los componentes de vista de las vistas para una instancia de tiempo de salida.
Un componente de vista puede denominarse una representación codificada de una vista en una única unidad de acceso.
La predicción intervista puede usarse en MVC y puede referirse a la predicción de un componente de vista a partir de muestras decodificadas de diferentes componentes de vista de la misma unidad de acceso. En la MVC, se realiza la predicción intervista similarmente a la interpredicción. Por ejemplo, las imágenes de referencia intervista se colocan en la misma lista o listas de imágenes de referencia como imágenes de referencia para la interpredicción, y se codifica o infiere un índice de referencia, así como un vector de movimiento, similarmente para las imágenes intervista e interreferencia.
Una imagen de anclaje es una imagen codificada en la que todos los cortes pueden hacer referencia solo a cortes dentro de la misma unidad de acceso, es decir, se puede usar la predicción intervista, pero no se usa interpredicción, y todas las siguientes imágenes codificadas en orden de salida no usan interpredicción de ninguna imagen previa a la imagen codificada en orden de decodificación. La predicción intervista puede usarse para componentes de vista IDR que forman parte de una vista no base. Una vista de base en MVC es una vista que tiene el valor mínimo del índice de orden de vista en una secuencia de vídeo codificado. La vista de base puede decodificarse independientemente de otras vistas y no usa predicción intervista. La vista de base puede decodificarse por los decodificadores H.264/AVC que soportan solo los perfiles de una sola vista, tales como el perfil de referencia o el perfil alto de H.264/AVC.
En el estándar MVC, muchos de los subprocesos del proceso de decodificación de MVC utilizan los respectivos subprocesos del estándar H.264/AVC sustituyendo los términos “ imagen” , “ fotograma” y “campo” en la especificación de subproceso del estándar H.264/AVC por “componente de vista” , “componente de vista de fotograma” y “componente de vista de campo” , respectivamente. De la misma manera, los términos “ imagen” , “fotograma” y “campo” se usan a menudo en lo sucesivo para significar “componente de vista” , “componente de vista de fotograma” y “componente de vista de campo” , respectivamente.
En el contexto de la codificación de vídeo de múltiples vistas, el índice de orden de vista puede definirse como un índice que indica la decodificación o el orden de flujo de bits de los componentes de vista en una unidad de acceso. En MVC, las relaciones de dependencia intervista se indican en una extensión de MVC de conjunto de parámetros de secuencia, que se incluye en un conjunto de parámetros de secuencia. Según el estándar MVC, todas las extensiones de MVC del conjunto de parámetros de secuencia que se referencian por una secuencia de vídeo codificado se requiere que sean idénticas.
Una vista de textura se refiere a una vista que representa contenido de vídeo normal, por ejemplo, se ha capturado utilizando una cámara normal, y normalmente es adecuada para la representación en una pantalla. Una vista de textura comprende típicamente imágenes que tienen tres componentes, un componente de luma y dos componentes de croma. A continuación, una imagen de textura comprende típicamente todas sus imágenes de componente o componentes de color salvo que se indique lo contrario, por ejemplo, los con términos imagen de textura de luma e imagen de textura de croma.
Una vista de profundidad se refiere a una vista que representa información de distancia de una muestra de textura del sensor de cámara, disparidad o información de paralaje entre una muestra de textura y una muestra de textura respectiva en otra vista, o información similar. Una vista de profundidad puede comprender imágenes de profundidad (también conocidas como mapas de profundidad) que tienen un componente, similar al componente de luma de las vistas de textura. Un mapa de profundidad es una imagen con información de profundidad por píxel o similar. Por ejemplo, cada muestra en un mapa de profundidad representa la distancia de la respectiva muestra o muestras de textura del plano en el que se encuentra la cámara. En otras palabras, si el eje z está a lo largo del eje de disparo de las cámaras (y, por lo tanto, ortogonal al plano en el que se encuentran las cámaras), una muestra en un mapa de profundidad representa el valor en el eje z. La semántica de valores de mapa de profundidad puede incluir, por ejemplo, lo siguiente:
1. Cada valor de muestra de luma en un componente de vista de profundidad codificado representa una inversa del valor de distancia en el mundo real (Z), es decir 1/Z, normalizado en el rango dinámico de las muestras de luma, tal como al intervalo de 0 a 255, inclusive, para la representación de luma de 8 bits. La normalización puede realizarse de una manera donde la cuantificación 1/Z es uniforme en términos de disparidad.
2. Cada valor de muestra de luma en un componente de vista de profundidad codificada representa una inversa del valor de distancia en el mundo real (Z), es decir 1/Z, que se mapea con el rango dinámico de las muestras de luma, tal como al intervalo de 0 a 255, inclusive, para la representación de luma de 8 bits, usando una función de mapeo f(1/Z) o tabla, tal como un mapeo lineal por partes. En otras palabras, los valores de mapa de profundidad dan como resultado la aplicación de la función f(1/Z).
3. Cada valor de muestra de luma en un componente de vista de profundidad codificado representa una distancia en el mundo real (Z) normalizado en el rango dinámico de las muestras de luma, tal como al intervalo de 0 a 255, inclusive, para la representación de luma de 8 bits.
4. Cada valor de muestra de luma en un componente de vista de profundidad codificada representa un valor de disparidad o paralaje de la presente vista de profundidad a otra vista de profundidad o posición de vista indicada o derivada.
La semántica de valores de mapa de profundidad puede indicarse en el flujo de bits, por ejemplo, dentro de una estructura de sintaxis de conjunto de parámetros de vídeo, una estructura de sintaxis de conjunto de parámetros de secuencia, una estructura de sintaxis de información de usabilidad de vídeo, una estructura de sintaxis de conjunto de parámetros de imagen, una estructura de sintaxis de conjunto de parámetros de cámara/profundidad/adaptación, un mensaje de información de mejora complementaria o cualquier cosa similar.
El vídeo de profundidad mejorada se refiere a vídeo de textura que tiene una o más vistas asociadas con vídeo de profundidad que tiene una o más vistas de profundidad. Se pueden usar varios enfoques para representar vídeo de profundidad mejorada, incluido el uso de video plus depth (vídeo más profundidad - V+D), multiview video plus depth (vídeo de múltiples vistas más profundidad - MVD) y layered depth video (vídeo de profundidad en capas -LDV). En la representación de video plus depth (vídeo más profundidad - V+D), una única vista de textura y la vista respectiva de profundidad se representan como secuencias de imagen de textura e imágenes de profundidad, respectivamente. La representación MVD contiene un número de vistas de textura y vistas de profundidad respectivas. En la representación LDV, se representa convencionalmente la textura y la profundidad de la vista central, mientras que la textura y la profundidad de las otras vistas se representan parcialmente y cubren solo las áreas desocluidas requeridas para corregir la síntesis de vista de vistas intermedias.
Un componente de vista de textura puede definirse como una representación codificada de la textura de una vista en una única unidad de acceso. Un componente de vista de textura en el flujo de bits de vídeo de profundidad mejorada puede codificarse de una manera que sea compatible con un flujo de bits de textura de una sola vista o un flujo de bits de textura de múltiples vistas de modo que un decodificador de una sola vista o de múltiples vistas pueda decodificar las vistas de textura incluso si no tiene capacidad para decodificar vistas de profundidad. Por ejemplo, un decodificador H.264/AVC puede decodificar una única vista de textura a partir de un flujo de bits de H.264/AVC de profundidad mejorada. Un componente de vista de textura puede codificarse alternativamente de una manera que un decodificador capaz de una decodificación de textura de una sola vista o de múltiples visualizaciones, tal como decodificador H.264/AVC o MVC, no puede decodificar el componente de vista de textura, por ejemplo, porque utiliza herramientas de codificación basadas en profundidad. Un componente de vista de profundidad puede definirse como una representación codificada de la profundidad de una vista en una única unidad de acceso. Una pareja de componentes de vista puede definirse como un componente de vista de textura y un componente de vista de profundidad de la misma vista dentro de la misma unidad de acceso.
El vídeo de profundidad mejorada puede codificarse de una manera donde la textura y la profundidad se codifican independientemente entre sí. Por ejemplo, las vistas de textura pueden codificarse como un flujo de bits de MVC y las vistas de profundidad pueden codificarse como otro flujo de bits de MVC. El vídeo de profundidad mejorada también se puede codificar de una manera donde la textura y la profundidad se codifican conjuntamente. En una forma de codificación conjunta de vistas de textura y profundidad, algunas muestras decodificadas de una imagen de textura o elementos de datos para la decodificación de una imagen de textura se predicen o derivan de algunas muestras decodificadas de una imagen de profundidad o elementos de datos obtenidos en el proceso de decodificación de una imagen de profundidad. Alternativamente o, además, algunas muestras decodificadas de una imagen de profundidad o elementos de datos para la decodificación de una imagen de profundidad se predicen o derivan de algunas muestras decodificadas de una imagen de textura o elementos de datos obtenidos en el proceso de decodificación de una imagen de textura. En otra opción, los datos de vídeo codificados de textura y datos de vídeo codificados de profundidad no se predicen entre sí o uno no se codifica/decodifica basándose en la otra, pero la textura codificada y la vista de profundidad pueden multiplexarse en el mismo flujo de bits en la codificación y demultiplexarse del flujo de bits en la decodificación. En aún otra opción, aunque los datos de vídeo codificados de textura no se predicen a partir de datos de vídeo codificados de profundidad en, p. ej., debajo de la capa de corte, algunas de las estructuras de codificación de alto nivel de vistas de textura y vistas de profundidad pueden compartirse o predecirse entre sí. Por ejemplo, una cabecera de corte de corte de profundidad codificado puede predecirse a partir de una cabecera de corte de un corte de textura codificado. Además, pueden usarse algunos de los conjuntos de parámetros tanto por vistas de textura codificadas como vistas de profundidad codificadas.
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.
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.
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).
SVC usa un mecanismo de predicción intercapa, en donde cierta información puede predecirse a partir de capas distintas de la capa actualmente reconstruida o la siguiente capa inferior. La información que podría predecirse intercapa incluye intra textura, de movimiento y datos residuales. La predicción de movimiento intercapa incluye la predicción de modo de codificación de bloque, información de cabecera, partición de bloque, etc., en donde el movimiento de la capa inferior puede usarse para la predicción de la capa superior. En caso de intracodificación, es posible una predicción de macrobloques circundantes o de macrobloques coubicados de capas inferiores. Estas técnicas de predicción no emplean información de unidades de acceso codificadas anteriores y, por lo tanto, se denominan técnicas de intrapredicción. Además, los datos residuales de capas inferiores también se pueden emplear para la predicción de la capa actual.
La codificación (decodificación) de vídeo escalable puede realizarse con un concepto conocido como decodificación de bucle único, donde las imágenes de referencia decodificadas se reconstruyen solo para que la capa más alta se decodifique mientras que las imágenes en capas inferiores pueden no decodificarse completamente o pueden descartarse después de usarlas para la predicción intercapa. En la decodificación de bucle único, el decodificador realiza la compensación de movimiento y la reconstrucción de imágenes completa solo para la capa escalable deseada para la reproducción (llamada la “capa deseada” o la “capa objetivo” ), reduciendo así la complejidad de decodificación en comparación con la decodificación de múltiples bucles. Todas las capas distintas de la capa deseada no necesitan decodificarse completamente porque la totalidad o parte de los datos de imagen codificados no se necesitan para la reconstrucción de la capa deseada. Sin embargo, pueden usarse las capas inferiores (que la capa objetivo) para la sintaxis intercapa o la predicción de parámetros, tal como la predicción de movimiento intercapa. Adicional o alternativamente, se pueden usar capas inferiores para intrapredicción intercapa y, por lo tanto, pueden tener que decodificarse bloques intracodificados de capas inferiores. Adicional o alternativamente, puede aplicarse la predicción residual intercapa, donde la información residual de las capas inferiores puede usarse para decodificar la capa objetivo y puede ser necesario decodificar o reconstruir la información residual. En algunas disposiciones de codificación, se necesita un único bucle de decodificación para decodificar la mayoría de las imágenes, mientras que puede aplicarse selectivamente un segundo bucle de decodificación para reconstruir las llamadas representaciones de base (es decir, imágenes de capa base decodificadas), que pueden ser necesarias como referencias de predicción, pero no para salida o visualización.
SVC permite el uso de decodificación de bucle único. Se posibilita usando un modo de predicción intratextura restringida, por lo que puede aplicarse la predicción intra textura intracapa a macrobloques (MB) para el que el bloque correspondiente de la capa base esté ubicado dentro de los intra-MB. Al mismo tiempo, estos intra-MB en la capa base usan intrapredicción restringida (p. ej., teniendo el elemento de sintaxis “constrained_intra_pred_flag” igual a 1). En la decodificación de bucle único, el decodificador realiza la compensación de movimiento y la reconstrucción de imágenes completa solo para la capa escalable deseada para la reproducción (llamada la “capa deseada” o la “capa objetivo” ), reduciendo así enormemente la complejidad de decodificación. Todas las capas distintas de la capa deseada no necesitan decodificarse completamente porque todos o parte de los datos de los MB no utilizados para la predicción intercapa (ya sea la predicción intra textura intercapa, la predicción de movimiento intercapa o la predicción residual intercapa) no es necesaria para la reconstrucción de la capa deseada.
Se necesita un único bucle de decodificación para decodificar la mayoría de imágenes, mientras que se aplica un segundo bucle de decodificación selectivamente para reconstruir las representaciones de base, que se necesitan como referencias de predicción, pero no para la salida o visualización, y se reconstruyen solo para las llamadas imágenes clave (para las cuales “store_ref_base_pic_flag” es igual a 1).
Se incluyó FGS en algunas versiones de borrador del estándar SVC, pero eventualmente se excluyó del estándar SVC final. Las FGS se analizan posteriormente en el contexto de algunas versiones de borrador del estándar SVC. La escalabilidad proporcionada por esas capas de mejora que no se pueden truncar se denomina coarsegrained scalability (escalabilidad de grano grueso [granularidad] - CGS). Colectivamente, también incluye la escalabilidad de calidad tradicional (SNR) y la escalabilidad espacial. El estándar SVC soporta la llamada medium-grained scalability (escalabilidad de grano medio - MGS), donde se codifican las imágenes de mejora de calidad similarmente a las imágenes de capa escalable de SNR, pero se indican mediante elementos de sintaxis de alto nivel similarmente a las imágenes de capa de FGS, teniendo el elemento de sintaxis quality_id mayor que 0.
La estructura de escalabilidad en SVC puede caracterizarse por tres elementos de sintaxis: “temporaljd” , “dependency_id” y “quality jd” . El elemento de sintaxis “temporaljd” se usa para indicar la jerarquía de escalabilidad temporal o, indirectamente, la tasa de fotogramas. Una representación de capa escalable que comprende imágenes de un valor de “temporaljd” máximo más pequeño tiene una tasa de fotogramas más pequeña que una representación de capa escalable que comprende imágenes de un “temporaljd” máximo mayor. Una capa temporal dada depende típicamente de las capas temporales inferiores (es decir, las capas temporales con valores de “temporal id” más pequeños) pero no depende de ninguna capa temporal superior. El elemento de sintaxis “dependency_id” se usa para indicar la jerarquía de dependencia de codificación intercapa de CGS (que, como se ha mencionado anteriormente, incluye tanto s Nr como escalabilidad espacial). En cualquier ubicación de nivel temporal, se puede usar una imagen de un valor de “dependency_id” menor para la predicción intercapa para la codificación de una imagen con un valor de “dependency_id” mayor. El elemento de sintaxis “quality_id” se usa para indicar la jerarquía de nivel de calidad de una capa FGS o MGS. En cualquier ubicación temporal, y con un valor de “quality_id” idéntico, una imagen con “quality_id” igual a QL utiliza la imagen con “quality_id” igual a QL-1 para predicción intercapa. Un corte codificado con “quality_id” mayor que 0 puede codificarse como un corte de FGS truncable o un corte de MGS no truncable.
Para simplificar, todas las unidades de datos (p. ej., unidades de Capa de Abstracción de Red o unidades NAL en el contexto SVC) en una unidad de acceso que tiene un valor idéntico de “dependency_id” se denominan una unidad de dependencia o una representación de dependencia. Dentro de una unidad de dependencia, todas las unidades de datos que tienen un valor idéntico de “quality_id” se denominan como una unidad de calidad o una representación de capa.
Una representación de base, también conocida como una imagen base decodificada, es una imagen decodificada que resulta de decodificar las unidades NAL de laVideo Coding Layer (capa de codificación de vídeo - VCL) de una unidad de dependencia que tiene “quality_id” igual a 0 y para la que “ store_ref_base_pic_flag” se establece igual a 1. Una representación de mejora, también denominada una imagen decodificada, resulta del proceso de decodificación normal en el que se decodifican todas las representaciones de capa que están presentes para la representación de dependencia más alta.
Como se mencionó anteriormente, CGS incluye tanto escalabilidad espacial como escalabilidad de SNR. La escalabilidad espacial está diseñada inicialmente para soportar representaciones de vídeo con diferentes resoluciones. Para cada caso de tiempo, las unidades NAL de VCL se codifican en la misma unidad de acceso y estas unidades de NAL de VCL pueden corresponder a diferentes resoluciones. Durante la decodificación, una unidad NAL de VCL de baja resolución proporciona el campo de movimiento y el residuo que se puede heredar opcionalmente por la decodificación y la reconstrucción final de la imagen de alta resolución. Cuando se compara con los estándares de compresión de vídeo más antiguos, la escalabilidad espacial de SVC se ha generalizado para permitir que la capa base sea una versión recortada y ampliada de la capa de mejora.
Las capas de calidad de MGS se indican con “quality_id” similarmente a las capas de calidad de FGS. Para cada unidad de dependencia (con el mismo “dependency_id” ), hay una capa con “quality_id” igual a 0 y puede haber otras capas con “quality_id” mayor que 0. Estas capas con “quality_id” mayor que 0 son capas de MGS o capas de FGS, dependiendo de si los cortes se codifican como cortes truncables.
En la forma básica de las capas de mejora de FGS, solo se usa predicción intercapa. Por lo tanto, las capas de mejora de FGS pueden truncarse libremente sin causar ninguna propagación de errores en la secuencia decodificada. Sin embargo, la forma básica de FGS sufre de baja eficiencia de compresión. Este problema surge porque solo se usan imágenes de baja calidad para referencias de interpredicción. Por lo tanto, se ha propuesto que las imágenes de FGS mejorada se usen como referencias de interpredicción. Sin embargo, esto puede provocar un desajuste de la codificación-decodificación, también denominada desviación, cuando se descartan algunos datos de FGS.
Una característica de un estándar SVC de borrador es que las unidades NAL de FGS pueden descartarse o truncarse libremente, y una característica del estándar SVC es que las unidades NAL de MGS pueden descartarse libremente (pero no pueden truncarse) sin afectar la conformidad del flujo de bits. Como se analizó anteriormente, cuando los datos de FGS o MGS se han utilizado para la referencia de interpredicción durante la codificación, el descarte o el truncamiento de los datos daría como resultado un desajuste entre las imágenes decodificadas en el lado del decodificador y en el lado del codificador. Este desajuste también se conoce como desviación.
Para controlar la desviación debido al descarte o truncamiento de los datos de FGS o MGS, SVC aplicó la siguiente solución: En una determinada unidad de dependencia, se almacena una representación de base (decodificando solo la imagen CGS con “quality_id” igual a 0 y todos los datos de capa inferior dependientes) en la memoria intermedia de imágenes decodificadas. Cuando se codifica una unidad de dependencia posterior con el mismo valor de “dependency_id” , todas las unidades NAL, incluidas las unidades NAL de FGS o MGS, utilizan la representación de base para la referencia de interpredicción. Por consiguiente, se detiene toda la desviación debido al descarte o truncamiento de unidades NAL de FGS o MGS en una unidad de acceso anterior en esta unidad de acceso. Para otras unidades de dependencia con el mismo valor de “dependency_id” , todas las unidades NAL usan las imágenes decodificadas para referencia de interpredicción, para una alta eficiencia de codificación.
Cada unidad NAL incluye en la cabecera de la unidad NAL un elemento de sintaxis “ use_ref_base_pic_flag” . Cuando el valor de este elemento es igual a 1, la decodificación de la unidad NAL utiliza las representaciones de base de las imágenes de referencia durante el proceso de interpredicción. El elemento de sintaxis “ store_ref_base_pic_flag” especifica si (cuando es igual a 1) o no (cuando es igual a 0) almacenar la representación de base de la imagen actual para futuras imágenes que van a usarse para la interpredicción.
Las unidades NAL con “quality_id” mayor que 0 no contienen elementos de sintaxis relacionados con la construcción de listas de imágenes de referencia y la predicción ponderada, es decir, los elementos de sintaxis “ num_ref_active_1x_minus1” (x=0 o 1), la tabla de sintaxis de reordenación de lista de imágenes de referencia, y la tabla de sintaxis de predicción ponderada no están presentes. Por consiguiente, las capas de MGS o FGS tienen que heredar estos elementos de sintaxis de las unidades NAL con “quality_id” igual a 0 de la misma unidad de dependencia cuando sea necesario.
En SVC, una lista de imágenes de referencia consiste en solo representaciones de base (cuando “ use_ref_base_pic_flag” es igual a 1) o solo las imágenes decodificadas no marcadas como “ representación de base” (cuando “ use_ref_base_pic_flag” es igual a 0), pero nunca ambas al mismo tiempo.
Otra categorización de codificación escalable se basa en si se usa el mismo o diferente estándar o tecnología de codificación como base para la capa base y las capas de mejora. Los términos escalabilidad de códec híbrido o escalabilidad estándar pueden usarse para indicar un escenario donde se usa un estándar o sistema de codificación para algunas capas, mientras que se usa otro estándar o sistema de codificación para algunas otras capas. Por ejemplo, la capa base puede codificarse por AVC, mientras que una o más capas de mejora pueden codificarse con una extensión de HEVC, tal como SHVC o MV-HEVC.
El trabajo está en curso para especificar extensiones escalables y de múltiples vistas al estándar HEVC. La extensión de múltiples vistas de HEVC, denominada MV-HEVC, es similar a la extensión de MVC de H.264/AVC. 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 extensión escalable de HEVC, denominada SHVC, está planeada para especificarse de modo que utiliza operación de decodificación de múltiples bucles (a diferencia de la extensión de SVC de H.264/AVC). La SHVC está basada en índice de referencia, es decir, puede incluirse una imagen de referencia intercapa en una o más listas de imágenes de referencia de la imagen actual que se está codificando o decodificando (como se ha descrito anteriormente).
Es posible utilizar muchas de las mismas estructuras de sintaxis, semántica y procesos de decodificación para MV-HEVC y SHVC. Otros tipos de escalabilidad, tales como vídeo de profundidad mejorada, también pueden realizarse con las mismas o similares estructuras de sintaxis, semántica y procesos de decodificación como en MV-HEVC y SHVC.
Para la codificación de capa de mejora, pueden usarse los mismos conceptos y herramientas de codificación de HEVC en SHVC, 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.
En MV-HEVC, SHVC y/o similares, VPS puede incluir, por ejemplo, un mapeo del valor LayerId derivado de la cabecera de la unidad de NAL a uno o más valores de dimensión de escalabilidad, por ejemplo, corresponder a dependency_id, quality_id, view_id y depth_flag para la capa definida similarmente a SVC y MVC.
En MV-HEVC/SHVC, se puede indicar en el VPS que una capa con valor de identificador de capa mayor que 0 no tiene capas de referencia directa, es decir, que la capa no se predice intercapa de ninguna otra capa. En otras palabras, un flujo de bits MV-HEVC/SHVC puede contener capas que son independientes entre sí, que pueden denominarse capas de difusión simultánea.
Una parte de VPS, que especifica las dimensiones de escalabilidad que pueden estar presentes en el flujo de bits, el mapeo de valores nuh_layer_id a valores de dimensión de escalabilidad, y las dependencias entre capas, puede especificarse con la siguiente sintaxis:
Figure imgf000031_0001
La semántica de la parte mostrada anteriormente del VPS puede especificarse como se describe en los siguientes párrafos.
splitting_flag igual a 1 indica que los elementos de sintaxis dimension_id[i][j]no están presentes y que la representación binaria del valor nuh_layer_id en la cabecera de unidad NAL se divide en segmentos NumScalabilityTypes con longitudes, en bits, según los valores de dimension_id_len_minus1 [j] y que los valores de
dimension_id[LayerIdxInVps[nuh_layer_id]][j] se infieren a partir de los segmentos NumScalabilityTypes. splitting_flag es igual a 0 indica que los elementos de sintaxis dimension_id[i][j] están presentes. En la siguiente semántica de ejemplo, sin pérdida de generalidad, se supone que splitting_flag es igual a 0.
scalability_mask_flag[i] igual a 1 indica que los elementos de sintaxis dimension_id correspondientes a la dimensión de escalabilidad de orden i están presentes en la siguiente tabla. scalability_mask_flag[i] igual a 0 indica que los elementos de sintaxis dimension_id correspondientes a la dimensión de escalabilidad de orden i no están presentes.
Figure imgf000031_0002
En futuras extensiones en 3D de HEVC, puede usarse el índice de máscara de escalabilidad 0 para indicar mapas de profundidad.
dimension_id_len_minus1[j] más 1 especifica la longitud, en bits, del elemento de sintaxis dimension_id[i][j].
vps_nuh_layer_id_present_flag igual a 1 especifica que layer_id_in_nuh[i] para i de 0 a MaxLayersMinusI (que es igual al número máximo de capas especificadas en el VPS menos 1), inclusive, están presentes. vps_nuh_layer_id_present_flag igual a 0 especifica que layer_id_in_nuh[i] para i de 0 a MaxLayersMinus1, inclusive, no están presentes.
layer_id_in_nuh[i] especifica el valor del elemento de sintaxis nuh_layer_id en unidades NAL de VCL de la capa de orden i. Para i en el intervalo de 0 a MaxLayersMinus1, inclusive, cuando layer_id_in_nuh[i] no está presente, se infiere que el valor es igual a i. Cuando i es mayor que 0, layer_id_in_nuh[i] es mayor que layer_id_in_nuh[i - 1]. Para i de 0 a MaxLayersMinus1, inclusive, la variable LayerIdxInVps[layer_id_in_nuh[i]] se establece igual a i.
dimension_id[i][j] especifica el identificador del tipo de dimensión de escalabilidad de orden j presente de la capa de orden i. El número de bits utilizados para la representación de dimension_id[i][j] es dimension_id_len_minus1[j] 1 bits. Cuando splitting_flag es igual a 0, para j de 0 a NumScalabilityTypes - 1, inclusive, dimension_id[0][j] se infiere que es igual a 0
La variable ScalabilityId[i][smIdx] que especifica el identificador del tipo de dimensión de escalabilidad de orden smldx de la capa de orden i, la variable ViewOrderIdx[layer_id_in_nuh[i]] que especifica el índice de orden de vista de la capa de orden i, DependencyId[layer_id_in_nuh[i]] que especifica el identificador de escalabilidad espacial/de calidad de la capa e orden i, y la variable ViewScalExtLayerFlag[layer_id_in_nuh[i]] que especifica si la capa de orden i es una capa de extensión de escalabilidad de vista se derivan como sigue:
NumViews = 1
for(i = 0; i <= MaxLayersMinus1; i++) {
lId = layer_id_in_nuh[i]
for(smIdx= 0, j = 0; smIdx < 16; smIdx++)
if(scalability_mask_flag[smIdx])
ScalabilityId[i][sm Idx] = dimension_id[i][j++]
ViewOrderIdx[lId] = ScalabilityId[i][1]
DependencyId[lId] = ScalabilityId[i][2]
if(i > 0 && (ViewOrderIdx[lId] != ScalabilityId[i - 1][1]))
NumViews++
ViewScalExtLayerFlag[1 Id] = (ViewOrderIdx[1 Id] > 0)
AuxId[1 Id] = ScalabilityId[i][3] }
Se puede indicar que las capas o capas de mejora con un valor de identificador de capa mayor que 0 contienen vídeo auxiliar que complementa la capa base u otras capas. Por ejemplo, en el borrador actual de MV-HEVC, las imágenes auxiliares pueden codificarse en un flujo de bits usando capas de imagen auxiliares. Una capa de imagen auxiliar está asociada con su propio valor de dimensión de escalabilidad, AuxId (similarmente a, p. ej., índice de orden de vista). Las capas con AuxId mayor que 0 contienen imágenes auxiliares. Una capa lleva solo un tipo de imágenes auxiliares, y el tipo de imágenes auxiliares incluidas en una capa puede indicarse por su valor AuxId. En otras palabras, los valores de AuxId pueden mapearse a tipos de imágenes auxiliares. Por ejemplo, AuxId igual a 1 puede indicar planos alfa y AuxId igual a 2 puede indicar imágenes de profundidad. Una imagen auxiliar puede definirse como una imagen que no tiene efecto normativo en el proceso de decodificación de imágenes principales. En otras palabras, las imágenes principales (con AuxId igual a 0) pueden estar limitadas a no predecir a partir de imágenes auxiliares. Una imagen auxiliar puede predecir a partir de una imagen primaria, aunque puede haber restricciones que deshabilitan dicha predicción, por ejemplo, basándose en el valor AuxId. Los mensajes SEI pueden usarse para transmitir características más detalladas de capas de imágenes auxiliares, tales como el rango de profundidad representado por una capa auxiliar de profundidad. El borrador actual de MV-HEVC incluye el soporte de capas auxiliares de profundidad.
Pueden usarse diferentes tipos de imágenes auxiliares que incluyen, aunque no de forma limitativa, lo siguiente: Imágenes de profundidad; Imágenes alfa; Imágenes de superposición; e imágenes de etiqueta. En las imágenes de profundidad, un valor de muestra representa la disparidad entre el punto de vista (o posición de la cámara) de la imagen de profundidad o la profundidad o la distancia. En las imágenes alfa (también conocidas como planos alfa e imágenes de mate alfa) un valor de muestra representa transparencia u opacidad. Las imágenes alfa pueden indicar para cada píxel un grado de transparencia o, de manera equivalente, un grado de opacidad. Las imágenes alfa pueden ser imágenes monocromo o los componentes de croma de las imágenes alfa pueden establecerse para indicar que no hay cromaticidad (p. ej., 0 cuando se considera que los valores de las muestras de croma son con signo o 128 cuando los valores de las muestras de croma son 8 bits y se consideran sin signo). Las imágenes de superposición pueden superponerse sobre las imágenes principales en la visualización. Las imágenes de superposición pueden contener varias regiones y fondos, donde todos o un subconjunto de las regiones pueden superponerse en la visualización y el fondo no se superpone. Las imágenes de etiqueta contienen diferentes etiquetas para diferentes regiones de superposición, que pueden usarse para identificar regiones de superposición únicas.
Continuando con cómo puede especificarse la semántica del extracto de VPS presentado: view_id_len especifica la longitud, en bits, del elemento de sintaxis view_id_val[i]. view_id_val[i] especifica el identificador de vista de la vista de orden i especificada por el VPS. La longitud del elemento de sintaxis view_id_val[i] es los bits view_id_len. Cuando no está presente, se infiere que el valor de view_id_val[i] es igual a 0. Para cada capa con nuh_layer_id igual a nuhLayerId, el valor ViewId[nuhLayerId] se establece igual a v¡ew_¡d_val[V¡ewOrderIdx[nuhLayerId]]. direct_dependency_flag[i][j] igual a 0 especifica que la capa con índice j no es una capa de referencia directa para la capa con índice i. direct_dependency_flag[i][j] igual a 1 especifica que la capa con índice j puede ser una capa de referencia directa para la capa con índice i. Cuando direct_dependency_flag[i][j] no está presente para i y j en el rango de 0 a MaxLayersMinus 1, se infiere que es igual a 0.
Las variables NumDirectRefLayers[iNuhLId] pueden definirse como el número de capas de referencia directa para la capa con nuh_layer_id igual a iNuhLId basándose en la información de dependencia de capa. La variable RefLayerId[iNuhLId][j] puede definirse como la lista de valores nuh_layer_id de las capas de referencia directa de la capa con nuh_layer_id igual a iNuhLId, donde j está en el intervalo de 0 a NumDirectRefLayers[iNuhLId] - 1, inclusive, y cada artículo j en la lista corresponde a una capa de referencia directa. Las variables NumDirectRefLayers[iNuhLId] y RefLayerId[iNuhLId][j] pueden especificarse como sigue, donde MaxLayersMinus 1 es igual al número máximo de capas especificadas en el VPS menos 1:
for(i = 0; i <= MaxLayersMinus1; i++) {
iNuhLId = layer_id_in_nuh[i]
NumDirectRefLayers[iNuhLId] = 0
for(j = 0; j < i; j++)
if(direct_dependency_flag[i][j])
RefLayerId[iNuhLId][NumDirectRefLayers[iNuhLId]++] =
layer_id_in_nuh[j] }
El VPS también puede incluir información sobre subcapas temporales, restricciones basadas en TemporalId en la predicción intercapa y otras restricciones en la predicción intercapa, por ejemplo, usando la siguiente sintaxis:
Figure imgf000033_0001
La semántica del extracto anterior de la sintaxis de VPS puede especificarse como se describe en los siguientes párrafos.
vps_sub_layers_max_minus1_present_flag igual a 1 especifica que los elementos de sintaxis sub_layers_vps_max_minus1[i] están presentes. vps_sub_layers_max_minus1_present_flag igual a 0 especifica que los elementos de sintaxis sub_layers_vps_max_minus1[i] no están presentes.
sub_layers_vps_max_minus1[i] más 1 especifica el número máximo de subcapas temporales que pueden estar presentes en la CVS para la capa con nuh_layer_id igual a layer_id_in_nuh[i]. Cuando no está presente, sub_layers_vps_max_minus1[i] se infiere que es igual a vps_max_sub_layers_minus1 (que está presente anteriormente en la sintaxis VPS).
max_tid_ref_present_flag igual a 1 especifica que el elemento de sintaxis max_tid_il_ref_pics_plus1 [i][j] está presente. max_tid_ref_present_flag igual a 0 especifica que el elemento de sintaxis max_tid_il_ref_pics_plus1 [i][j] no está presente.
max_tid_il_ref_pics_plus1[i][j] igual a 0 especifica que dentro de las imágenes no IRAP de CVS con nuh_layer_id igual a layer_id_in_nuh[i] no se usan como referencia para la predicción intercapa para imágenes con nuh_layer_id_ igual a layer_id_in_nuh[j]. max_tid_il_ref_pics_plus1 [i][j] mayor que 0 especifica que dentro de las imágenes CVS con nuh_layer_id igual a layer_id_in_nuh[i] y TemporalId mayor que max_tid_il_ref_pics_plus1 [i][j] - 1 no se usan como referencia para la predicción intercapa para las imágenes con nuh_layer_id igual a layer_id_in_nuh[j]. Cuando no está presente, max_tid_il_ref_pics_plus1[i][j] se infiere que es igual a 7.
all_ref_layers_active_flag igual a 1 especifica que para cada imagen que hace referencia al VPS, las imágenes de capa de referencia que pertenecen a todas las capas de referencia directa de la capa que contiene la imagen y que podrían usarse para la predicción intercapa como se especifica por los valores de sub_layers_vps_max_minus1[i] y max_tid_il_ref_pics_plus1 [i][j] están presentes en la misma unidad de acceso que la imagen y se incluyen en el conjunto de imágenes de referencia intercapa de la imagen. all_ref_layers_active_flag igual a 0 especifica que la restricción anterior puede o no aplicarse.
max_one_active_ref_layer_flag igual a 1 especifica que como máximo se usa una imagen para la predicción intercapa para cada imagen en la CVS. max_one_active_ref_layer_flag igual a 0 especifica que puede usarse más de una imagen para la predicción intercapa para cada imagen en la CVS.
Un árbol de capa puede definirse como un conjunto de capas de modo que cada capa en el conjunto de capas sea una capa predicha directa o indirecta o una capa de referencia directa o indirecta de al menos otra capa en el conjunto de capas y ninguna capa fuera del conjunto de capas es una capa predicha directa o indirecta o una capa de referencia directa o indirecta de cualquier capa en el conjunto de capas. Una capa predicha directa puede definirse como una capa para la que otra capa es una capa de referencia directa. 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 indirecta puede definirse como una capa para la que otra capa es una capa de referencia indirecta. 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.
Alternativamente, un árbol de capa puede definirse como un conjunto de capas donde cada capa tiene una relación de predicción intercapa con al menos otra capa en el árbol de capa y ninguna capa fuera del árbol de capa tiene una relación de predicción intercapa con cualquier capa en el árbol de capa.
En SHVC, MV-HEVC y/o similares, el proceso de sintaxis y decodificación de nivel de bloque no se cambia para soportar la predicción de textura intercapa. Solo se ha modificado la sintaxis de alto nivel, generalmente en referencia a las estructuras de sintaxis que incluyen la cabecera de corte, PPS, SPS y VPS, (en comparación con la de HEVC) de modo que las imágenes reconstruidas (sobremuestreadas si es necesario) de una capa de referencia de la misma unidad de acceso pueden usarse como imágenes de referencia para codificar la imagen de la capa de mejora actual. Las imágenes de referencia intercapa así como las imágenes de referencia temporal se incluyen en las listas de imágenes de referencia. El índice de imagen de referencia señalizado se usa para indicar si la Prediction Unit (unidad de predicción - PU) actual se predice a partir de una imagen de referencia temporal o una imagen de referencia intercapa. El uso de esta característica puede controlarse por el codificador e indicarse en el flujo de bits, por ejemplo, en un conjunto de parámetros de vídeo, un conjunto de parámetros de secuencia, un parámetro de imagen y/o una cabecera de corte. La indicación o indicaciones puede o pueden ser específicas de una capa de mejora, una capa de referencia, un par de una capa de mejora y una capa de referencia, valores específicos de TemporalId, tipos de imagen específicos (p. ej., imágenes RAP), tipos de cortes específicos (p. ej., cortes P y B pero no cortes I), imágenes de un valor POC específico y/o unidades de acceso específicas, por ejemplo. El alcance y/o persistencia de la indicación o indicaciones puede indicarse junto con la indicación o indicaciones mismas y/o puede inferirse.
La lista o listas de referencia en SHVC, MV-HEVC y/o similares puede inicializarse usando un proceso específico en el que se puede incluir la imagen o imágenes de referencia intercapa, si la hay, en la lista o listas de imágenes de referencia iniciales. Por ejemplo, las referencias temporales pueden añadirse en primer lugar a las listas de referencia (L0, L1) de la misma manera que la construcción de lista de referencia en HEVC. Después de eso, pueden añadirse las referencias intercapa después de las referencias temporales. Las imágenes de referencia intercapa se pueden concluir, por ejemplo, de la información de dependencia de capa proporcionada en la extensión VPS. Las imágenes de referencia intercapa se pueden agregar a la lista L0 de imágenes de referencia inicial si el corte de capa de mejora actual es un corte P, y puede añadirse a ambas listas iniciales de imágenes de referencia L0 y L1 si el corte de capa de mejora actual es un corte B. Las imágenes de referencia intercapa pueden añadirse a las listas de imágenes de referencia en un orden específico, que puede, pero no necesariamente, ser el mismo para ambas listas de imágenes de referencia. Por ejemplo, puede usarse un orden opuesto a añadir imágenes de referencia intercapa en la lista 1 de imágenes de referencia inicial en comparación con la lista 0 de imágenes de referencia inicial. Por ejemplo, las imágenes de referencia intercapa pueden insertarse en la imagen 0 de referencia inicial en un orden ascendente de nuh_layer_id, mientras que puede usarse un orden opuesto para inicializar la lista 1 de imágenes de referencia inicial.
A continuación, se proporciona un segundo ejemplo de construcción de la lista o listas de imágenes de referencia. Las imágenes de referencia intercapa candidatas se pueden concluir, por ejemplo, de la información de dependencia de capa, que puede incluirse en el VPS, por ejemplo. El codificador puede incluir información de nivel de imagen en un flujo de bits y el decodificador puede decodificar información de nivel de imagen del flujo de bits de cuáles de las imágenes de referencia intercapa candidatas se pueden usar como referencia para la predicción intercapa. La información de nivel de imagen puede residir, por ejemplo, en una cabecera de corte y puede denominarse como un conjunto de imágenes de referencia intercapa. Por ejemplo, las imágenes de referencia intercapa candidatas pueden indexarse en un cierto orden y uno o más índices pueden incluirse en el conjunto de imágenes de referencia intercapa. En otro ejemplo, una bandera para cada imagen de referencia intercapa candidata indica si puede usarse como una imagen de referencia intercapa. Como anteriormente, las imágenes de referencia intercapa se pueden agregar a la lista L0 de imágenes de referencia inicial si el corte de capa de mejora actual es un corte P, y puede añadirse a ambas listas L0 y L1 de imágenes de referencia iniciales si el corte de capa de mejora actual es un corte B. Las imágenes de referencia intercapa pueden añadirse a las listas de imágenes de referencia en un orden específico, que puede, pero no necesariamente, ser el mismo para ambas listas de imágenes de referencia.
A continuación, se proporciona un tercer ejemplo de construcción de la lista o listas de imágenes de referencia. En el tercer ejemplo, se especifica un conjunto de imágenes de referencia intercapa en la estructura de sintaxis de cabecera de segmento de corte de la siguiente manera:
Figure imgf000035_0001
La variable numérica NumDirectRefLayers[layerId] se ha derivado para ser el número de capas de referencia directa para la capa con nuh_layer_id igual a layerId basándose en la información de dependencia de capa. En el contexto de MV-HEVC, SHVC y similares,
NumDirectRefLayers[layerId] puede derivarse basándose en los elementos de sintaxis direct_dependency_flag[i][j] de VPS.
La semántica del extracto anterior de la estructura de sintaxis de cabecera de segmento de corte puede especificarse como se describe en los siguientes párrafos.
inter_layer_pred_enabled_flag igual a 1 especifica que la predicción intercapa puede usarse en la decodificación de la imagen actual. Inter_layer_pred_enabled_flag igual a 0 especifica que la predicción intercapa no se usa en la decodificación de la imagen actual.
num_inter_layer_ref_pics_minus1 más 1 especifica el número de imágenes que pueden usarse en la decodificación de la imagen actual para la predicción intercapa. La longitud del elemento de sintaxis num_inter_layer_ref_pics_minus1 son los bits de Techo(Log2(NumDirectRefLayers[nuh_layer_id])). El valor de num_inter_layer_ref_pics_minus1 estará en el intervalo de 0 a NumDirectRefLayers[nuh_layer_i d] - 1, inclusive.
Las variables numRefLayerPics y refLayerPicIdc[j] pueden derivarse de la siguiente manera:
for(i = 0, j = 0; i < NumDirectRefLayers[nuh_layer_id]; i++) {
refLayerIdx = LayerIdxInVps[RefLayerId[nuh_layer_id][i]]
if(sub_layers_vps_max_minus1[refLayerIdx] >= TemporalId && max_tid_il_ref_pics_plus1[refLayerIdx][LayerIdxInVps[nuh_layer_id]] >
TemporalId)
refLayerPicIdc[j++] = i
}
numRefLayerPics = j
Se puede considerar que la lista refLayerPicIdc[j] indica las imágenes de referencia intercapa candidatas con referencia al segundo ejemplo anterior.
La variable NumActiveRefLayerPics se puede derivar de la siguiente manera:
if(nuh_layer_id = = 0 || NumDirectRefLayers[nuh_layer_id] = = 0)
NumActiveRefLayerPics = 0
else if(all_ref_layers_active_flag)
NumActiveRefLayerPics = numRefLayerPics
else if(!inte r_laye r_p red_e nabled_flag)
NumActiveRefLayerPics = 0
else if(max_one_active_ref_layer_flag | | NumDirectRefLayers[nuh_layer_id] = = 1)
NumActiveRefLayerPics = 1
else
NumActiveRefLayerPics = num_inter_layer_ref_pics_minus1 1
inter_layer_pred_layer_idc[i] especifica la variable, RefPicLayerId[i], que representa nuh_layer_id de la imagen de orden i que puede usarse por la imagen actual para la predicción intercapa. La longitud del elemento de sintaxis inter_layer_pred_layer_idc[i] es Techo(Log2(NumDirectRefLayers[nuh_layer_id])) bits. El valor de inter_layer_pred_layer_idc[i] deberá estar en el intervalo de 0 a NumDirectRefLayers[nuh_layer_id] - 1, inclusive. Cuando no está presente, se infiere que el valor de inter_layer_pred_layer_idc[i] es igual a refLayerPicIdc[i].
Las variables RefPicLayerId[i] para todos los valores de i en el intervalo de 0 a NumActiveRefLayerPics - 1, inclusive, se obtienen como sigue:
for(i = 0, j = 0; i < NumActiveRefLayerPics; i++)
RefPicLayerId[i] = RefLayerId[nuh_layer_id][inter_layer_pred_layer_idc[i]]
inter_layer_pred_layer_idc[i] puede considerarse información de nivel de imagen de cuáles de las imágenes de referencia intercapa candidatas pueden usarse como referencia para la predicción intercapa, con referencia al segundo ejemplo anterior.
Las imágenes identificadas por la variable RefPicLayerId[i] para todos los valores de i en el intervalo de 0 a NumActiveRefLayerPics - 1, inclusive, pueden incluirse en listas de imágenes de referencia iniciales. Como anteriormente, las imágenes identificadas por la variable RefPicLayerId[i] pueden añadirse a la lista L0 de imágenes de referencia inicial si el corte de capa de mejora actual es un corte P, y pueden añadirse a ambas listas L0 y L1 de imágenes de referencia inicial si el corte de la capa de mejora actual es un corte B. Las imágenes identificadas por la variable RefPicLayerId[i] pueden añadirse a las listas de imágenes de referencia en un orden específico, que puede, pero no necesariamente, ser el mismo para ambas listas de imágenes de referencia. Por ejemplo, los valores de ViewId derivados pueden afectar el orden de adición de las imágenes identificadas por la variable RefPicLayerId[i] en las listas de imágenes de referencia inicial.
En el proceso de codificación y/o decodificación, las imágenes de referencia intercapa pueden tratarse como imágenes de referencia a largo plazo.
Un tipo de predicción intercapa, que puede denominarse predicción de movimiento intercapa, puede realizarse de la siguiente manera. Un proceso de predicción del vector de movimiento temporal, tal como TMVP de H.265/HEVC, puede usarse para aprovechar la redundancia de datos de movimiento entre diferentes capas. Esto puede hacerse de la siguiente manera: cuando la imagen de capa base decodificada se sobremuestrea, los datos de movimiento de la imagen de capa base también se mapean a la resolución de una capa de mejora. Si la imagen de la capa de mejora utiliza la predicción del vector de movimiento a partir de la imagen de la capa base, p. ej., con un mecanismo de predicción del vector de movimiento temporal, tal como TMVP de H.265/HEVC, se origina el correspondiente predictor de vector de movimiento del campo de movimiento de capa base mapeado. De esta manera, puede aprovecharse la correlación entre los datos de movimiento de diferentes capas para mejorar la eficiencia de codificación de un codificador de vídeo escalable.
En SHVC y/o similares, puede realizarse la predicción de movimiento intercapa estableciendo la imagen de referencia intercapa como la imagen de referencia coubicada para la derivación de TMVP. Puede realizarse un proceso de mapeo de campo de movimiento entre dos capas, por ejemplo, para evitar la modificación del proceso de decodificación de nivel de bloque en la derivación de TMVP. El uso de la característica de mapeo de campo de movimiento puede controlarse por el codificador e indicarse en el flujo de bits, por ejemplo, en un conjunto de parámetros de vídeo, un conjunto de parámetros de secuencia, un parámetro de imagen y/o una cabecera de corte. La indicación o indicaciones puede o pueden ser específicas de una capa de mejora, una capa de referencia, un par de una capa de mejora y una capa de referencia, valores específicos de TemporalId, tipos de imagen específicos (p. ej., imágenes RAP), tipos de cortes específicos (p. ej., cortes P y B pero no cortes I), imágenes de un valor POC específico y/o unidades de acceso específicas, por ejemplo. El alcance y/o persistencia de la indicación o indicaciones puede indicarse junto con la indicación o indicaciones mismas y/o puede inferirse.
En un proceso de mapeo de campo de movimiento para escalabilidad espacial, el campo de movimiento de la imagen de referencia intercapa sobremuestreada puede lograrse basándose en el campo de movimiento de la imagen de capa de referencia respectiva. Los parámetros de movimiento (que pueden incluir, p. ej., un valor de vector de movimiento horizontal y/o vertical y un índice de referencia) y/o un modo de predicción para cada bloque de la imagen de referencia intercapa sobremuestreada pueden derivarse de los parámetros de movimiento correspondientes y/o el modo de predicción del bloque coubicado en la imagen de capa de referencia. El tamaño de bloque usado para la derivación de los parámetros de movimiento y/o el modo de predicción en la imagen de referencia intercapa sobremuestreada puede ser, por ejemplo, 16 x 16. El tamaño de bloque 16 x 16 es el mismo que en el proceso de derivación de la TMVP de HEVC donde se usa el campo de movimiento comprimido de la imagen de referencia.
Como se ha analizado anteriormente, en HEVC, se usa una cabecera de unidad NAL de dos bytes para todos los tipos de unidad NAL especificados. La cabecera de unidad NAL contiene un bit reservado, una indicación de tipo de unidad NAL de seis bits (llamada nal_unit_type), un campo reservado de seis bits (llamado nuh_layer_id) y una indicación temporal_id_plus1 de tres bits para el nivel temporal. 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. 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. Por consiguiente, una imagen que tiene TemporalId igual a TID no usa ninguna imagen que tiene un TemporalId mayor que TID como referencia de interpredicción. Una subcapa o una subcapa temporal puede definirse que es una capa escalable temporal de un flujo de bits escalable temporal, que consiste en unidades NAL de VCL con un valor particular de la variable TemporalId y las unidades NAL de VCL no asociadas.
En extensiones de HEVC nuh_layer_id y/o elementos de sintaxis similares en la cabecera de la unidad NAL llevan información de capa de escalabilidad. Por ejemplo, el valor LayerId nuh_layer_id y/o elementos de sintaxis similares pueden mapearse a valores de variables o elementos de sintaxis que describen diferentes dimensiones de escalabilidad.
En la codificación de vídeo escalable y/o de múltiples vistas, puede soportarse al menos los siguientes principios para codificar imágenes y/o unidades de acceso con propiedad de acceso aleatorio.
- Una imagen IRAP dentro de una capa puede ser una imagen intracodificada sin predicción intercapa/intervista. Dicha imagen permite la capacidad de acceso aleatorio a la capa/vista en que reside.
- Una imagen IRAP dentro de una capa de mejora puede ser una imagen sin interpredicción (es decir, predicción temporal) pero con predicción intercapa/intervista permitida. Dicha imagen permite iniciar la decodificación de la capa/vista en que reside la imagen siempre que todas las capas/vistas de referencia estén disponibles. En la decodificación de bucle único, puede ser suficiente si las capas/vistas de referencia codificadas están disponibles (que pueden ser el caso, p. ej., para imágenes IDR que tienen dependency _id mayor que 0 en SVC). En la decodificación de múltiples bucles, puede ser necesario que se decodifiquen las capas/vistas de referencia. Dicha imagen puede denominarse, por ejemplo, una stepwise layer access (imagen de acceso por etapas - STLA) o una imagen IRAP de capa de mejora.
- Una unidad de acceso de anclaje o una unidad de acceso de IRAP completa pueden definirse para que incluya solo imagen o imágenes intracodificadas e imágenes STLA en todas las capas. En la decodificación de múltiples bucles, una unidad de acceso de este tipo permite el acceso aleatorio a todas las capas/vistas. Un ejemplo de una unidad de acceso de este tipo es la unidad de acceso de anclaje MVC (entre la que el tipo de unidad de acceso IDR es un caso especial).
- Una unidad de acceso IRAP por etapas puede definirse para incluir una imagen IRAP en la capa base pero no necesita contener una imagen IRAP en todas las capas de mejora. Una unidad de acceso IRAP por etapas permite iniciar la decodificación de capa base, mientras que la decodificación de capa de mejora puede iniciarse cuando la capa de mejora contiene una imagen IRAP, y (en el caso de decodificación de múltiples bucles) todas sus capas/vistas de referencia se decodifican en ese punto.
En una extensión escalable de HEVC o cualquier extensión escalable para un esquema de codificación de una sola capa similar a HEVC, pueden especificarse imágenes IRAP para tener una o más de las siguientes propiedades.
- Los valores de tipo de unidad NAL de las imágenes IRAP con nuh_layer_id mayor que 0 pueden usarse para indicar puntos de acceso aleatorio de capa de mejora.
- Una imagen IRAP de capa de mejora puede definirse como una imagen que permite iniciar la decodificación de esa capa de mejora cuando se han decodificado todas sus capas de referencia antes de la imagen EL IRAP.
- Se puede permitir la predicción intercapa para unidades NAL de IRAP con nuh_layer_id mayor que 0, mientras que se no está permitida la interpredicción.
- Las unidades NAL de IRAP no necesitan estar alineadas a través de las capas. En otras palabras, una unidad de acceso puede contener tanto imágenes IRAP como imágenes no IRAP.
- Después de una imagen BLA en la capa base, se inicia la decodificación de una capa de mejora cuando la capa de mejora contiene una imagen IRAP y se ha iniciado la decodificación de todas sus capas de referencia. En otras palabras, una imagen BLA en la capa base inicia un proceso de arranque por capas.
- Cuando comienza la decodificación de una capa de mejora desde una imagen CRA, sus imágenes RASL se manejan similarmente a las imágenes RASL de una imagen BLA (en la versión 1 de HEVC).
Pueden usarse flujos de bits escalables con imágenes IRAP o similares que no están alineados en capas, por ejemplo, pueden usarse imágenes IRAP más frecuentes en la capa base, donde pueden tener un tamaño codificado más pequeño debido a, p. ej., una resolución espacial más pequeña. 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 arranque por capas del 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, las vistas, los componentes adicionales tales como la profundidad o una combinación) a medida que se decodifican imágenes posteriores de las capas de mejora adicionales en el proceso de decodificación. 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 mecanismo de arranque por capas puede generar imágenes no disponibles para las imágenes de referencia de la primera imagen en orden de decodificación en una capa de mejora particular. Alternativamente, un decodificador puede omitir la decodificación de imágenes anteriores, en orden de decodificación, la imagen IRAP a partir de la cual puede iniciarse la decodificación de una capa. Estas imágenes que pueden omitirse pueden etiquetarse específicamente por el codificador u otra entidad dentro del flujo de bits. Por ejemplo, pueden usarse uno o más tipos de unidad NAL específicas para ello. Estas imágenes, independientemente de si se marcan específicamente con un tipo de unidad NAL o se infieren, p. ej., por el decodificador, se pueden denominar imágenes de cross-layer random access skip (omisión de acceso aleatorio de capa transversal - CL-RAS). El decodificador puede omitir la salida de las imágenes no disponibles generadas y las imágenes CL-RAS decodificadas.
Un mecanismo de arranque por capas puede comenzar la salida de imágenes de capa de mejora de una imagen IRAP en esa capa de mejora, cuando se han inicializado todas las capas de referencia de esa capa de mejora similarmente con una imagen IRAP en las capas de referencia. En otras palabras, cualquier imagen (dentro de la misma capa) que precede dicha imagen IRAP en orden de salida podría no emitirse del decodificador y/o no mostrarse. En algunos casos, pueden emitirse imágenes principales decodificables asociadas con dicha imagen IRAP mientras que otras imágenes que preceden de tal imagen IRAP pueden no emitirse.
La concatenación de datos de vídeo codificados, que también puede denominarse empalme, puede ocurrir, por ejemplo, cuando se concatenan secuencias de vídeo codificado en un flujo de bits que se difunde o envía por flujo continuo o almacena en una memoria masiva. Por ejemplo, las secuencias de vídeo codificado que representan anuncios comerciales o publicidad pueden concatenarse con películas u otro contenido “ primario” .
Los flujos de bits de vídeo escalable podrían contener imágenes IRAP que no están alineadas a través de las capas. Sin embargo, puede ser conveniente posibilitar la concatenación de una secuencia de vídeo codificado que contenga una imagen IRAP en la capa base en su primera unidad de acceso, pero no necesariamente en todas las capas. Una segunda secuencia de vídeo codificado que se empalma después de una primera secuencia de vídeo codificado debería desencadenar un proceso de arranque de decodificación por capas. Esto es porque la primera unidad de acceso de dicha segunda secuencia de vídeo codificado podría no contener una imagen IRAP en todas sus capas y, por lo tanto, algunas imágenes de referencia para las imágenes no IRAP en esa unidad de acceso pueden no estar disponibles (en el flujo de bits concatenado) y, por lo tanto, no pueden decodificarse. La entidad que concatena las secuencias de vídeo codificado, denominada a continuación en la memoria como el empalmador, debería, por lo tanto, modificar la primera unidad de acceso de la segunda secuencia de vídeo codificado de modo que desencadene un proceso de arranque por capas en el decodificador o decodificadores.
Pueden existir indicaciones en la sintaxis de flujo de bits para indicar el desencadenamiento de un proceso de arranque por capas. Esta indicación o indicaciones pueden generarse por codificadores o empalmadores y pueden obedecerse por los decodificadores. Esta indicación o indicaciones pueden usarse para tipo o tipos de imágenes particulares o tipo o tipos de unidad NAL solo, tales como solo para imágenes IDR, mientras que, en otras realizaciones, esta indicación o indicaciones pueden usarse para cualquier tipo o tipos de imagen. Sin pérdida de generalidad, se hace referencia a continuación a una indicación llamada cross_layer_bla_flag que se considera incluida en una cabecera de segmento de corte. Debe entenderse que podría usarse de forma adicional 0 alternativamente una indicación similar con cualquier otro nombre o incluida en cualquier otra estructura de sintaxis.
Independientemente de la indicación o indicaciones que desencadenan un proceso de arranque por capas, un tipo o tipos de unidades NAL y/o tipo o tipos de imagen pueden desencadenar un proceso de arranque por capas. Por ejemplo, una imagen BLA de capa base puede desencadenar un proceso de arranque por capas.
Un mecanismo de arranque por capas puede iniciarse en uno o más de los siguientes casos:
- Al comienzo de un flujo de bits.
- Al comienzo de una secuencia de vídeo codificado, cuando se controla específicamente, p. ej., cuando se inicia o reinicia un proceso de decodificación, p, ej., como respuesta a la sintonización en una difusión o búsqueda a una posición en un archivo o flujo. El proceso de decodificación puede introducir una variable, p. ej., denominada NoClrasOutputFlag, que puede controlarse por medios externos, tales como el reproductor de vídeo o similares.
- Una imagen BLA de capa base.
- Una imagen IDR de capa base con cross_layer_bla_flag igual a 1. (O una imagen IRAP de capa base con cross_layer_bla_flag igual a 1).
Cuando se inicia un mecanismo de arranque por capas, todas las imágenes de la DPB pueden marcarse como “ no usadas para referencia” . En otras palabras, todas las imágenes de todas las capas pueden marcarse como “ no usadas para referencia” y no se utilizarán como referencia para la predicción para la imagen que inicia el mecanismo de arranque por capas o cualquier imagen posterior en orden de decodificación.
Las imágenes cross-layer random access skipped (omitidas de acceso aleatorio de capa transversal - CL-RAS) pueden tener la propiedad de que cuando se invoca un mecanismo de arranque por capas (p. ej., cuando NoClrasOutputFlag es igual a 1), las imágenes CL-RAS no se emiten y pueden no decodificarse correctamente, ya que la imagen CL-RAS puede contener referencias a imágenes que no están presentes en el flujo de bits. Se puede especificar que las imágenes CL-RAS no se usan como imágenes de referencia para el proceso de decodificación de imágenes no CL-RAS.
Las imágenes CL-RAS pueden indicarse explícitamente, p. ej., por uno o más tipos de unidad NAL o banderas de cabecera de corte (p. ej., mediante el cambio de nombre de cross_layer_bla_flag a cross_layer_constraint_flag y redefiniendo la semántica de cross_layer_bla_flag para imágenes no IRAP). Una imagen puede considerarse como una imagen CL-RAS cuando es una imagen no IRAP (p. ej., según lo determinado por su tipo de unidad NAL), reside en una capa de mejora y tiene cross_layer_constraint_flag (o similar) igual a 1. De cualquier manera, una imagen puede clasificarse como que es una imagen no CL-RAS. Cross_layer_bla_flag puede inferirse que es igual a 1 (o una variable respectiva puede establecerse a 1), si la imagen es una imagen IRAP (p. ej., según lo determinado por su tipo de unidad NAL), reside en la capa base, y cross_layer_constraint_flag es igual a 1. De cualquier manera, se puede inferir que cross_layer_bla_flag es igual a 0 (o una variable respectiva puede establecerse a 0). Alternativamente, se pueden inferir imágenes CL-RAS. Por ejemplo, una imagen con nuh_layer_id igual a layerId puede inferirse que es una imagen CL-RAS cuando LayerInitializedFlag[layerId] es igual a 0. Una imagen CL-RAS puede definirse como una imagen con nuh_layer_id igual a layerId de tal manera que LayerInitializedFlag[layerId] es igual a 0 cuando se inicia la decodificación de una imagen codificada con nuh_layer_id mayor que 0.
Un proceso de decodificación puede especificarse de manera que una cierta variable controle si se usa o no un proceso de arranque por capas. Por ejemplo, se puede usar una variable NoClrasOutputFlag, que, cuando es igual a 0, indica una operación de decodificación normal y, cuando es igual a 1, indica una operación de por capas. NoClrasOutputFlag puede establecerse, por ejemplo, utilizando una o más de las siguientes etapas:
1) Si la imagen actual es una imagen IRAP que es la primera imagen en el flujo de bits, NoClrasOutputFlag se establece igual a 1.
2) De cualquier manera, si algunos medios externos están disponibles para establecer la variable NoCIrasOutputFIag igual a un valor para una imagen IRAP de capa base, la variable NoClrasOutputFlag se establece igual al valor proporcionado por los medios externos.
3) De cualquier manera, si la imagen actual es una imagen BLA que es la primera imagen en una coded video sequence (secuencia de vídeo codificado - CVS), NoClrasOutputFlag se establece igual a 1.
4) De cualquier manera, si la imagen actual es una imagen IDR que es la primera imagen en una coded video sequence (secuencia de vídeo codificado - CVS) y cross_layer_bla_flag es igual a 1, NoClrasOutputFlag se establece igual a 1.
5) De cualquier manera, NoClrasOutputFlag se establece igual a 0.
La etapa 4 anterior puede expresarse alternativamente más generalmente, por ejemplo, como sigue: “ De cualquier manera, si la imagen actual es una imagen IRAP que es la primera imagen en una CVS y una indicación del proceso de arranque por capas está asociada con la imagen IRAP, NoClrasOutputFlag se establece igual a 1” . La etapa 3 anterior puede retirarse, y la imagen BLA puede especificarse para iniciar un proceso de arranque por capas (es decir, establecer NoClrasOutputFlag igual a 1), cuando cross_layer_bla_flag para ello es igual a 1. Debe entenderse que son posibles otras formas de expresión de la condición y que son igualmente aplicables.
Un proceso de decodificación para arranque por capas puede controlarse, por ejemplo, por dos variables de matriz; LayerInitializedFlag[i] y FirstPicInLayerDecodedFlag[i] que pueden tener entradas para cada capa (posiblemente excluyendo la capa base y posiblemente otras capas independientes también). Cuando se invoca el proceso de arranque por capas, por ejemplo, como respuesta a que NoClrasOutputFlag sea igual a 1, estas variables de matriz pueden reiniciarse a sus valores predeterminados. Por ejemplo, cuando hay 64 capas habilitadas (p. ej., con una nuh_layer_id de 6 bits), las variables pueden reiniciarse de la siguiente manera: la variable LayerInitializedFlag[i] se establece igual a 0 para todos los valores de i de 0 a 63, inclusive, y la variable FirstPicInLayerDecodedFlag[i] se establece igual a 0 para todos los valores de i de 1 a 63, inclusive.
El proceso de decodificación puede incluir lo siguiente o similar para controlar la salida de imágenes RASL. Cuando la imagen actual es una imagen IRAP, se aplica lo siguiente:
- Si LayerInitializedFlag[nuh_layer_id] es igual a 0, la variable NoRaslOutputFlag se establece igual a 1.
- De cualquier manera, si algunos medios externos están disponibles para establecer la variable HandleCraAsBlaFlag a un valor para la imagen actual, la variable HandleCraAsBlaFlag se establece igual al valor proporcionado por los medios externos y la variable NoRaslOutputFlag se establece igual a HandleCraAsBlaFlag.
- De cualquier manera, la variable HandleCraAsBlaFlag se establece igual a 0 y la variable NoRaslOutputFlag se establece igual a 0.
El proceso de decodificación puede incluir lo siguiente para actualizar LayerInitializedFlag para una capa. Cuando la imagen actual es una imagen IRAP y una de las siguientes es verdadera,
LayerInitializedFlag[nuh_layer_id] se establece igual a 1.
- nuh layer id es igual a 0.
- LayerInitializedFlag[nuh_layer_id] es igual a 0 y LayerInitializedFlag[refLayerId] es igual a 1 para todos los valores de refLayerId igual a RefLayerId[nuh_layer_id][j], donde j está en el intervalo de 0 a NumDirectRefLayers[nuh_layer_id] - 1, inclusive.
Cuando FirstPicInLayerDecodedFlag[nuh_layer_id] es igual a 0, puede invocarse el proceso de decodificación para generar imágenes de referencia no disponibles antes de decodificar la imagen actual. El proceso de decodificación para generar imágenes de referencia no disponibles puede generar imágenes para cada imagen en un conjunto de imágenes de referencia con valores predeterminados. El proceso de generación de imágenes de referencia no disponibles puede especificarse principalmente solo para la especificación de restricciones de sintaxis para las imágenes CL-RAS, donde una imagen CL-RAS puede definirse como una imagen con nuh_layer_id igual a layerId y LayerInitializedFlag[layerId] es igual a 0. En las operaciones HRD, puede ser necesario tener en cuenta las imágenes CL-RAS en la derivación de los tiempos de llegada y retirada de la CPB. Los decodificadores pueden ignorar cualesquiera imágenes CL-RAS, ya que estas imágenes no se especifican para la salida y no tienen efecto en el proceso de decodificación de ninguna otra imagen que se especifique para la salida.
La salida de imágenes en la codificación escalable puede controlarse, por ejemplo, como sigue: Para cada imagen se deriva en primer lugar PicOutputFlag en el proceso de decodificación similarmente que para un flujo de bits de una sola capa. Por ejemplo, puede tenerse en cuenta la bandera pic_output incluida en el flujo de bits para la imagen en la derivación de PicOutputFIag. Cuando se ha decodificado una unidad de acceso, se usa las capas de salida y las posibles capas de salida alternativas para actualizar la PicOutputFlag para cada imagen de la unidad de acceso, por ejemplo, de la siguiente manera:
- Si se ha habilitado el uso de una capa de salida alternativa (p. ej., AltOptLayerFlag[TargetOptLayerSetIdx] es igual a 1 en MV-HEVC/SHVC de borrador) y una unidad de acceso no contiene una imagen en la capa de salida objetivo o contiene una imagen en la capa de salida objetivo que tiene PicOutputFlag igual a 0, se aplican las siguientes etapas ordenadas:
o La lista nonOutputLayerPictures es la lista de las imágenes de la unidad de acceso con PicOutputFlag igual a 1 y con valores nuh_layer_id entre los valores nuh_layer_id de las capas de referencia directa e indirecta de la capa de salida objetivo.
o La imagen con el valor nuh_layer_id más alto entre la lista nonOutputLayerPictures se retira de la lista nonOutputLayerPictures.
o PicOutputFlag para cada imagen que se incluye en la lista nonOutputLayerPictures se establece igual a 0.
- De cualquier manera, PicOutputFlag para imágenes que no están incluidas en una capa de salida objetivo se establece igual a 0.
Alternativamente, la condición anterior para desencadenar la salida de una imagen de una capa de salida alternativa puede limitarse a preocuparse de que solo las imágenes CL-RAS en lugar de todas las imágenes con PicOutputFlag igual a 0. En otras palabras, la condición puede expresarse de la siguiente manera:
Si se ha habilitado el uso de una capa de salida alternativa (p. ej., AltOptLayerFlag[TargetOptLayerSetIdx] es igual a 1 en MV-HEVC/SHVC de borrador) y una unidad de acceso no contiene una imagen en la capa de salida objetivo o contiene una imagen CL-RAS en la capa de salida objetivo que tiene PicOutputFlag igual a 0, se aplican las siguientes etapas ordenadas:
Alternativamente, la condición puede expresarse de la siguiente manera:
- Si se ha habilitado el uso de una capa de salida alternativa (p. ej., AltOptLayerFlag[TargetOptLayerSetIdx] es igual a 1 en MV-HEVC/SHVC de borrador) y una unidad de acceso no contiene una imagen en la capa de salida objetivo o contiene una imagen con PicOutputFlag igual a 0 en la layer lId de salida objetivo de manera que LayerInitializedFlag[lId] es igual a 0, se aplican las siguientes etapas ordenadas:
Sin embargo, los diseños de escalabilidad en el estado actual de los diversos estándares de codificación de vídeo anteriormente descritos tienen algunas limitaciones. Por ejemplo, en SVC y SHVC, se requiere que las imágenes (o similares) de una unidad de acceso tengan el mismo nivel temporal (p. ej., valor de TemporalId en HEVC y sus extensiones). Esto tiene la consecuencia de que deshabilita los codificadores para determinar las jerarquías de predicción de manera diferente a través de las capas. Se podrían usar diferentes jerarquías de predicción a través de capas para codificar algunas capas con un mayor número de valores de TemporalId y puntos de conmutación ascendente de subcapa frecuentes y algunas capas con una jerarquía de predicción que apunta a un mejor rendimiento de tasa-distorsión. Además, los codificadores no pueden codificar árboles de capa del mismo flujo de bits independientemente entre sí. Por ejemplo, la capa base y una capa de imagen auxiliar podrían codificarse por diferentes codificadores, y/o la codificación de diferentes árboles de capa podría tener lugar en diferentes momentos. Sin embargo, se requiere actualmente que las capas tengan el mismo orden de (de)codificación y TemporalId de las imágenes respectivas.
Una limitación adicional, por ejemplo en SVC y SHVC, es que las imágenes de conmutación de nivel temporal, tales como imágenes TSA y STSA de HEVC y sus extensiones, no se permiten en el nivel temporal más bajo, tal como TemporalId igual a 0 en HEVC y sus extensiones. Esto tiene la consecuencia de que deshabilita indicar una imagen de acceso o punto de acceso a una capa que permite la decodificación de algunos niveles temporales (pero no necesariamente todos ellos). Sin embargo, tal punto de acceso podría usarse, por ejemplo, para el arranque por etapas de la decodificación de una capa de una manera por subcapas y/o la adaptación de tasa de bits.
Ahora con el fin de reducir al menos los problemas anteriores, en la presente memoria se presentan de aquí en adelante métodos para codificar y decodificar imágenes de acceso a capa restringida.
En el método de codificación, que se describe en la Figura 7, se codifica (750) una primera imagen en una primera capa de escalabilidad y en una subcapa temporal más baja, y se codifica (752) una segunda imagen en una segunda capa de escalabilidad y en la subcapa temporal más baja, en donde la primera imagen y la segunda imagen representan el mismo instante de tiempo. Después de que se codifica (754) uno o más primeros elementos de sintaxis, asociados con la primera imagen, con un valor que indica que un tipo de imagen de la primera imagen es diferente de una imagen de acceso de subcapa temporal por etapas. Similarmente, se codifican (756) uno o más segundos elementos de sintaxis, asociados con la segunda imagen con un valor que indica que un tipo de imagen de la segunda imagen es una imagen de acceso a subcapa temporal por etapas. Después, se codifica (758) al menos una tercera imagen en una segunda capa de escalabilidad y en una subcapa temporal más alta que la subcapa temporal más baja.
Según una realización, la imagen de acceso de subcapa temporal por etapas proporciona un punto de acceso para la inicialización por capas de la decodificación de un flujo de bits con una o más subcapas temporales.
Por lo tanto, el codificador codifica una imagen de acceso o punto de acceso a una capa, en donde la imagen de acceso o el punto de acceso permite la decodificación de algunas subcapas temporales (pero no necesariamente todas las mismas). Un punto de acceso de este tipo puede usarse, por ejemplo, para el arranque por etapas de la decodificación de una capa de manera por subcapas (p. ej., por un decodificador) y/o por adaptación de tasa de bits (p. ej., por un emisor), como se describirá más adelante.
Según una realización, la imagen de acceso de subcapa temporal por etapas es una imagen de STSA con TemporalId igual a 0.
La Figura 8 ilustra un ejemplo, donde se usa una imagen de STSA con TemporalId igual a 0 para indicar una imagen de acceso de capa restringida. En la Figura 8, tanto la base layer (capa base - BL) como la enhancement layer (capa de mejora - EL) comprenden imágenes en cuatro subcapas temporales (TemporalId (TID) = 0, 1, 2, 3). El orden de decodificación de las imágenes es 0, 1, ..., 9, A, B, C,..., mientras que el orden de salida de las imágenes es el orden de las imágenes de izquierda a derecha en la Figura 8. El estado de decoded picture buffer (memoria intermedia de imágenes decodificadas - DPB) o el volcado de DPB para cada imagen en la Figura 8 y las figuras posteriores muestran las imágenes decodificadas que se marcan como “usadas para referencia” . En otras palabras, el volcado de DPB considera imágenes marcadas como “usadas para referencia” pero no considera las imágenes marcadas como “necesarias para la salida” (que podrían haberse marcado ya “sin usar para referencia” ). El estado de DPB puede incluir las siguientes imágenes:
la imagen en cuestión que se codifica o decodifica (el elemento más bajo en el estado de DPB indicado en la Figura 8 y en las figuras posteriores);
las imágenes que no se usan como referencia para codificar (y decodificar) la imagen en cuestión pero pueden usarse como referencia para codificar (y decodificar) imágenes posteriores en orden de decodificación (los elementos en el estado de DPB indicado con cursiva y subrayado en la Figura 8 y figuras posteriores); y
las imágenes que pueden usarse como referencia para codificar (y decodificar) la imagen en cuestión (todos los demás elementos en el estado de DPB indicado en la Figura 8 y las figuras posteriores).
La imagen EL 1 es una imagen de acceso de capa que proporciona acceso a subcapas con TemporalId 0, 1 y 2 pero no proporciona acceso a la subcapa con TemporalId igual a 3. En este ejemplo, no hay imágenes de TSA o STSA entre las imágenes presentadas (5, 7, 8, C, D, F, G) del TID 3 de EL.
Según una realización, el método comprende además señalizar la imagen de acceso de subcapa temporal por etapas en el flujo de bits mediante un tipo de unidad NAL específico. Por lo tanto, en lugar de reusar nal_unit_type de STSA nal_unit_type, puede tenerse en cuenta un tipo de unidad NAL específico y puede denominarse imagen de acceso de capa restringida a la subcapa.
Según una realización, el método comprende además señalizar la imagen de acceso de subcapa temporal por etapas con un mensaje SEI. El mensaje SEI también puede definir el número de subcapas decodificables. El mensaje SEI puede usarse además de o en lugar de usar un tipo de unidad NAL que indica una imagen de acceso de capa de subcapa restringida o una imagen de STSA con TemporalId igual a 0. El mensaje SEI también puede incluir el número de subcapas que pueden decodificarse (a una tasa de imagen completa) cuando la decodificación de la capa comienza a partir de la imagen de acceso de capa asociada. Por ejemplo, haciendo referencia al ejemplo en la Figura 8, la imagen EL 1, que es una imagen de acceso de capa, puede indicarse para proporcionar acceso a tres subcapas (TID 0, 1, 2).
Según una realización, el método comprende además codificar dicha segunda o cualquier capa de escalabilidad adicional para comprender imágenes TSA o STSA más frecuentes que la primera capa de escalabilidad. De este modo, un emisor o un decodificador o similar puede determinar dinámicamente y en forma por capas cuántas subcapas se transmiten o decodifican. Cuando la capa de mejora contiene imágenes TSA o STSA más frecuentes que en la capa base, puede realizarse el ajuste de tasa de bits de grano más fino que lo que puede lograrse determinando el número de capas y/o el número de las subcapas ortogonalmente.
Se remarca que, cuando el mecanismo de capa de salida alternativo está en uso y no hay imagen en la capa de salida objetivo, se debe emitir una imagen de la capa inferior. Por consiguiente, incluso si se omiten las imágenes de la capa de salida objetivo de la transmisión, la tasa de imágenes de salida (de un decodificador) puede permanecer sin cambios.
La Figura 9 ilustra un ejemplo cuando la capa de base BL tiene menos imágenes de TSA (imágenes 2, 3, 4) que la capa de mejora EL (imágenes 2, 3, 4, 5, 7, 8, A, B, C, D, F, G). Se remarca que algunas flechas de predicción de las imágenes TID0 no se incluyen en la ilustración (pero se puede concluir desde el volcado de la DPB).
Según una realización, es posible codificar imágenes de acceso de subcapa temporal no alineadas cuando solo se usan ciertos niveles temporales para la predicción intercapa.
En este caso de uso, se supone que se usan las imágenes de solo algunos valores de TemporalId como referencia para la predicción intercapa, que puede indicarse en una estructura de sintaxis de nivel de secuencia, tal como usando el elemento de sintaxis max_tid_il_ref_pics_plus1 de la extensión VPS de MV-HEVC, SHVC y/o similares. Se supone además que el emisor sabe que el receptor usa un conjunto de capas de salida, donde solo se emite EL. Por consiguiente, el emisor omite la transmisión de imágenes BL con un valor de TemporalId de manera que se indica que no se use como referencia para la predicción intercapa. Se supone además que el emisor realiza ajuste de tasa de bits o adaptación de tasa de bits seleccionando adaptativamente TemporalId máximo que se transmite desde EL.
La Figura 10 muestra un ejemplo, que es similar al ejemplo en la Figura 9, pero donde las imágenes BL con TemporalId mayor o igual que 2 no se usan como referencia para la predicción intercapa, es decir, en MV-HEVC, SHVC y/o similares esto puede indicarse estableciendo el elemento de sintaxis m ax_t i d i l_ref p i c s_p lus1 entre la capa de base y de mejora igual a 2.
Según una realización, que puede aplicarse junto con o independientemente de otras realizaciones, es posible codificar imágenes de acceso de subcapa temporal no alineadas cuando TemporalId no necesita alinearse a través de capas en la misma unidad de acceso. Esto puede utilizarse, por ejemplo, en esquemas de codificación de vídeo escalables que permiten imágenes con diferentes valores de TemporalId (o similares) en la misma unidad de acceso.
Tener diferentes valores de TemporalId para imágenes en la misma unidad de acceso puede permitir proporcionar flexibilidad a los codificadores en la determinación de jerarquías de predicción de manera diferente a través de las capas, permitiendo que algunas capas se codifiquen con un mayor número de valores de TemporalId y puntos de conmutación ascendente de subcapa frecuentes y algunas capas con una jerarquía de predicción que apunta a un mejor rendimiento de tasa-distorsión. Además, proporciona flexibilidad para codificar árboles de capa del mismo flujo de bits independientemente entre sí. Por ejemplo, la capa base y una capa de imagen auxiliar podrían codificarse por diferentes codificadores, y/o la codificación de diferentes árboles de capa podría tener lugar en diferentes momentos. Al permitir que los codificadores funcionen independientemente entre sí, los codificadores tienen flexibilidad en la determinación de una jerarquía de predicción y el número de valores de TemporalId utilizados según la señal de entrada.
El codificador puede indicar, p. ej., en una estructura de sintaxis de nivel de secuencia, tal como VPS, si valores de TemporalId o similares están alineados (es decir, iguales) para imágenes codificadas dentro de una unidad de acceso. El decodificador puede decodificar, p. ej., a partir de una estructura de sintaxis de nivel de secuencia, tal como VPS, una indicación de si los valores de TemporalId o similares están alineados para imágenes codificadas dentro de una unidad de acceso. Basándose en los valores de TemporalId o similares que se alinean para imágenes codificadas dentro de una unidad de acceso, el codificador y/o el decodificador pueden elegir diferentes sintaxis, semánticas y/u operación que cuando los valores de TemporalId o similares podrían no estar alineados para imágenes codificadas dentro de una unidad de acceso. Por ejemplo, cuando los valores de TemporalId o similares se alinean para imágenes codificadas dentro de una unidad de acceso, la sintaxis de RPS intercapa, la semántica y/o la derivación en la codificación y/o la decodificación pueden utilizar información de qué valores de TemporalId usan las imágenes como referencia para la predicción intercapa entre una capa de referencia y una capa predicha pueda tener y/o qué valores de TemporalId usan las imágenes como referencia para la predicción intercapa entre una capa de referencia y una capa predicha que no están permitidas a tener. Por ejemplo, puede incluirse un elemento de sintaxis llamado tid_aligned_flag en el VPS y su semántica puede especificarse de la siguiente manera: tid _aligned flag igual a 0 especifica que TemporalId puede o no ser el mismo para diferentes imágenes codificadas de la misma unidad de acceso. tid_aligned_flag igual a 1 especifica que TemporalId es el mismo para todas las imágenes codificadas de la misma unidad de acceso. Puede tenerse en cuenta la bandera tid _aligned al derivar una lista de imágenes de referencia intercapa candidatas. Por ejemplo, con referencia al tercer ejemplo descrito anteriormente de la construcción de la lista o listas de imágenes de referencia, el pseudocódigo para especificar una lista que identifica imágenes de referencia intercapa candidatas, refLayerPicIdc[] puede especificarse de la siguiente manera:
for(i = 0, j = 0; i < NumDirectRefLayers[nuh_layer_id]; i++) {
refLayerIdx = LayerIdxInVps[RefLayerId[nuh_layer_id][i]]
if(sub_layers_vpsmax_minus1[refLayerIdx] >= TemporalId && (max_tid_il_ref_pics_plus1[refLayerIdx][LayerIdxInVps[nuh_layer_id]] >
TemporalId
| | !tid_aligned_flag))
refLayerPicIdc[j++] = i
}
numRefLayerPics = j
Cuando los valores de TemporalId se indican para alinearse para todas las imágenes en una unidad de acceso, el valor máximo indicado de TemporalId que puede usarse para la predicción intercapa afecta a la derivación de una lista de imágenes de referencia intercapa candidatas, es decir, solo las imágenes con un valor de TemporalId menor o igual que el valor máximo indicado de TemporalId se incluyen en la lista de imágenes de referencia intercapa candidatas. Cuando los valores de TemporalId pueden o no alinearse para todas las imágenes en una unidad de acceso, las imágenes de cualquier valor de TemporalId se incluyen en la lista de imágenes de referencia intercapa candidatas.
La Figura 11 muestra un ejemplo donde se determinan las jerarquías de predicción de manera diferente a través de las capas. En este ejemplo, la base layer (capa base - BL) se codifica con una jerarquía de predicción jerárquica en la que codifica todas las imágenes con TemporalId de todas las imágenes que es igual 0. Se supone que la jerarquía de predicción usada en BL se ha utilizado para obtener un buen rendimiento de tasa-distorsión para la capa base. La enhancement layer (capa de mejora - EL) tiene cuatro subcapas e imágenes de TSA frecuentes, que proporcionan la capacidad de seleccionar dinámicamente cuántas subcapas se transmiten para la EL.
Similarmente a la Figura 9, se remarca que algunas flechas de predicción de las imágenes EL TID0 no se incluyen en la ilustración de la Figura 11 (pero se puede concluir desde el volcado de la DPB). De la misma manera, las flechas de predicción BL se excluyen y se pueden concluir del volcado de DPB.
A continuación, se describe una realización, que puede aplicarse junto con o independiente de otras realizaciones. Con referencia a los ejemplos presentados de sintaxis VPS y semántica, así como el tercer ejemplo descrito anteriormente de construcción de la lista o listas de imágenes de referencia, se han identificado los siguientes problemas:
- Cuando se deriva una lista que identifica las imágenes de referencia intercapa candidatas, refLayerPicIdc[ ], la condición “ max_tid_il_ref_pics_plus1[refLayerIdx][LayerIdxInVps[nuh_layer_id]] > TemporalId” tiene la consecuencia de que cuando max_tid_il_ref_pics_plus1[refLayerIdx][LayerIdxInVps[nuh_layer_id]] es igual a 0 (es decir, cuando solo pueden usarse las imágenes IRAP de la capa de referencia como referencia para la predicción intercapa), el índice de la capa de referencia no se incluye en in refLayerPicIdc[ ].
- max_tid_il_ref_pics_plus1[ ][ ] se usa en la sintaxis y semántica de RPS intercapa de una manera subóptima, porque:
o Los elementos de sintaxis del RPS intercapa se incluyen en la cabecera de corte incluso si TemporalId es tal que la predicción intercapa no está permitida según los valores max_tid_il_ref_pics_plus1[ ][ ].
o La longitud de los elementos de sintaxis num_inter_layer_ref_pics_minus1 y inter_layer_pred_layer_idc[i]se determina basándose en NumDirectRefLayers[nuh_layer_id]. Sin embargo, una longitud más pequeña podría determinarse potencialmente si se tuvo en cuenta max_tid_il_ref_pics_plus1[ ][ ] y el TemporalId de la imagen actual y, por consiguiente, inter_layer_pred_layer_idc[i] podría ser un índice entre esas capas de referencia que pueden usarse como referencia para la predicción intercapa para el TemporalId actual.
Para tener una operación correcta cuando solo las imágenes IRAP de la capa de referencia pueden usarse como referencia para la predicción intercapa, el pseudocódigo para especificar una lista que identifica las imágenes de referencia intercapa candidatas refLayerPicIdc[] puede especificarse de la siguiente manera:
for(i = 0, j = 0; i < NumDirectRefLayers[nuh_layer_id]; i++) {
refLayerIdx = LayerIdxInVps[RefLayerId[nuh_layer_id][i]]
if(sub_layers_vps_max_minus1[refLayerIdx] >= TemporalId && (max_tid_il_ref_pics_plus1[refLayerIdx][LayerIdxInVps[nuh_layer_id]] >
TemporalId
| | TemporalId = = 0))
refLayerPicIdc[j++] = i
}
numRefLayerPics = j
Como se mencionó, la realización descrita en la presente memoria se puede aplicar junto con otras realizaciones. La realización descrita en la presente memoria puede aplicarse con una realización en la que el codificador puede codificar y/o el decodificador puede decodificar, p. ej., en/desde una estructura de sintaxis de nivel de secuencia, tal como VPS, una indicación de si los valores de TemporalId o similares están alineados para imágenes codificadas dentro de una unidad de acceso como se describe a continuación. Para tener una operación correcta cuando solo las imágenes IRAP de la capa de referencia pueden usarse como referencia para la predicción intercapa, el pseudocódigo para especificar una lista que identifica las imágenes de referencia intercapa candidatas refLayerPicIdc[] puede especificarse de la siguiente manera:
for(i = 0, j = 0; i < NumDirectRefLayers[nuh_layer_id]; i++) {
refLayerIdx = LayerIdxInVps[RefLayerId[nuh_layer_id][iÍ]
if(sub_layers_vps_max_minus1[refLayerIdx] >= TemporalId && (max_tid_il_ref_pics_plus1[refLayerIdx][LayerIdxInVps[nuh_layer_id]] >
TemporalId
| | TemporalId = = 0 | | !tid_aligned_flag))
refLayerPicIdc[j++] = i
}
numRefLayerPics = j
Alternativamente, cuando también utiliza max_tid_il_ref_pics_plus1[ ][ ] más óptimamente, la realización puede realizarse como se describe en los siguientes párrafos.
El codificador puede codificar o el decodificador puede decodificar los elementos de sintaxis relacionados con RPS intercapa con codificación de longitud fija, p. ej., u(v), donde pueden seleccionarse las longitudes de elementos de sintaxis según el número de capas de referencia potenciales habilitadas por el valor nuh_layer_id y el valor de Temporalld de la imagen actual que se codifica o decodifica. Los valores de elementos de sintaxis pueden indicar imágenes de referencia entre las posibles capas de referencia habilitadas por el valor nuh_layer_id y el valor de TemporalId. Las posibles capas de referencia pueden indicarse en una estructura de sintaxis de nivel de secuencia, tal como VPS. Las capas de referencia directa de cada capa pueden indicarse por separado de las subcapas que pueden usarse como referencia para la predicción intercapa. Por ejemplo, en MV-HEVC, SHVC y/o similares, pueden usarse los elementos de sintaxis direct_dependency_flag[i][j] para indicar posibles capas de referencia y pueden usarse los elementos de sintaxis max_tid_il_ref_pics_plus1 [i][j] para indicar si la predicción intercapa puede tener lugar solo a partir de imágenes IRAP y, si ese no es el caso, la subcapa máxima de la que puede tener lugar la predicción intercapa.
En el contexto de MV-HEVC, SHVC y/o similar, se derivan las variables NumDirectRefLayersForTid[lId][tId] y RefLayerIdListForTid[lId][tId][k] basándose en la información de extensión de VPS. NumDirectRefLayersForTid[lId][tId] indica el número de capas de referencia directa que pueden usarse para la predicción intercapa de una imagen con nuh_layer_id igual a lId y TemporalId igual a tId. RefLayerIdListForTid[lId][tId][k] es una lista de valores nuh_layer_id de capas de referencia directa que pueden usarse para la predicción intercapa de una imagen con nuh_layer_id igual a lId y TemporalId igual a tId. Por ejemplo, puede usarse el siguiente pseudocódigo para derivar NumDirectRefLayersForTid[lId][tId] y RefLayerIdListForTid[lId][tId][k], donde MaxLayersMinus1 es el número de capas especificadas en el VPS menos 1 y LayerIdxInVps[layerId] especifica el índice de la capa (en el intervalo de 0 a MaxLayersMinus1, inclusive) dentro de algunas estructuras y bucles especificados en el VPS.
for(lIdx = 0; lIdx <= MaxLayersMinus1; lIdx++) {
lId = layer_id_in_nuh[l Idx]
for(tId = 0; tId < 7; tId++) {
for(rCnt = 0, k = 0; rCnt < NumDirectRefLayers[lId]; rCnt++) {
refLayerIdx = LayerIdxInVps[RefLayerId[lId][rCnt]]
if(sub_layers_vps_max_minus1[refLayerIdx] >= tId && (max_tid_il_ref_pics_plus1[refLayerIdx][lIdx] > tId | | tId = =
0))
RefLayerIdListForTid[lId][tId][k++] =
RefLayerId[lId][rCnt]
}
NumDirectRefLayersForTid[lId][tId] = k
}
}
Como se mencionó, la realización descrita en la presente memoria se puede aplicar junto con otras realizaciones. La realización descrita en la presente memoria puede aplicarse con una realización en la que el codificador puede codificar y/o el decodificador puede decodificar, p. ej., en/desde una estructura de sintaxis de nivel de secuencia, tal como VPS, una indicación de si los valores de TemporalId o similares están alineados para imágenes codificadas dentro de una unidad de acceso como se describe a continuación. Para tener una operación correcta cuando solo pueden usarse las imágenes IRAP de la capa de referencia como referencia para la predicción intercapa, el pseudocódigo para derivar NumDirectRefLayersForTid[lId][tId] y
RefLayerIdListForTid[lId][tId][k] puede especificarse como sigue:
for(l Idx = 0; lldx <= MaxLayersMinus1; lIdx++) {
lId = l aye r_id_in_nuh[lIdx]
for(tId = 0; tId < 7; tId++) {
for(rCnt = 0, k = 0; rCnt < NumDirectRefLayers[lId]; rCnt++) {
refLayerIdx = LayerIdxInVps[RefLayerId[lId][rCnt]]
if(sub_layers_vps_max_minus1[refLayerIdx] >= tId && (max_tid_il_ref_pics_plus1[refLayerIdx][lIdx] > tId | | tId = =
0
| | !tid_aligned_flag))
RefLayerIdListForTid[lId][tId][k++] =
RefLayerId[lId][rCnt]
}
NumDirectRefLayersForTid[lId][tId] = k
}
}
NumDirectRefLayersForTid[nuh_layer_id][TemporalId] se usa en lugar de NumDirectRefLayers[nuh_layer_id] en la sintaxis y semántica de RPS intercapa. Además, inter_layer_pred_layer_idc[i] es un índice k a RefLayerIdListForTid[nuh_layer_id][TemporalId][k] (en lugar de a un índice k a RefLayerId[nuh_layer_id][k]). Como consecuencia, los elementos de sintaxis del RPS intercapa se incluyen en la cabecera de corte solo si TemporalId es tal que la predicción intercapa no está permitida según los valores max_tid_il_ref_pics_plus1[ ][ ]. Además, se determina la longitud de los elementos de sintaxis num_inter_layer_ref_pics_minus1 e inter_layer_pred_layer_idc[i] basándose en NumDirectRefLayersForTid[nuh_layer_id][TemporalId] y, por lo tanto, puede ser más corta que si las longitudes se determinaron basándose en NumDirectRefLayers[nuh_layer_id].
Por ejemplo, puede usarse la siguiente sintaxis en la estructura de sintaxis de cabecera de segmento de corte:
Figure imgf000046_0001
La semántica anterior excepto en la estructura de sintaxis de encabezamiento de segmento de corte puede especificarse como se describe en los siguientes párrafos.
num_inter_layer_ref_pics_minus1 más 1 especifica el número de imágenes que pueden usarse en la decodificación de la imagen actual para la predicción intercapa. La longitud del elemento de sintaxis num_inter_layer_ref_pics_minus1 es Techo(Log2(NumDirectRefLayersForTid[nuh_layer_id][TemporalId])) bits. El valor de num_inter_layer_ref_pics_minus1 estará en el intervalo de 0 a NumDirectRefLayersForTid[nuh_layer_id][TemporalId] - 1, inclusive.
La variable NumActiveRefLayerPics se puede derivar de la siguiente manera:
if(nuh_layer_id = = 0 | | NumDirectRefLayersForTid[nuh_layer_id][TemporalId] = =0) NumActiveRefLayerPics = 0
else if(all_ref_layers_active_flag)
NumActiveRefLayerPics = numRefLayerPics
else if(!inte r_laye r_p red_e nabled_flag)
NumActiveRefLayerPics = 0
else if(max_one_active_ref_layer_flag | |
NumDirectRefLayersForTid[nuh_layer_id][TemporalId] = = 1)
NumActiveRefLayerPics = 1
else
NumActiveRefLayerPics = num_inter_layer_ref_pics_minus1 1
inter_layer_pred_layer_idc[i] especifica la variable, RefPicLayerId[i], que representa nuh_layer_id de la imagen de orden i que puede usarse por la imagen actual para la predicción intercapa. La longitud del elemento de sintaxis inter_layer_pred_layer_idc[i] es Techo(Log2(NumDirectRefLayersForTid[nuh_layer_id][TemporalId])) bits. El valor de inter_layer_pred_layer_idc[i] estará en el intervalo de 0 a NumDirectRefLayersForTid[nuh_layer_id][TemporalId] - 1, inclusive. Cuando no está presente, se infiere que el valor de inter_layer_pred_layer_idc[i] es igual a refLayerPicIdc[i].
Las variables RefPicLayerId[i] para todos los valores de i en el intervalo de 0 a NumActiveRefLayerPics - 1, inclusive, pueden derivarse como sigue:
for(i = 0, j = 0; i < NumActiveRefLayerPics; i++)
RefPicLayerId[i] = RefLayerIdListForTid
[nuh_layer_id][TemporalId][inter_layer_pred_layer_idc[i]]
En el caso de la escalabilidad de códec híbrido, se puede proporcionar una imagen decodificada de una capa base externa para codificar y/o decodificar las capas de mejora, p. ej., para servir como referencia para la predicción intercapa. En algunas realizaciones, puede ser necesario, por ejemplo, en un estándar de codificación, que los valores de TemporalId de las imágenes codificadas en una unidad de acceso sean iguales, y el valor de TemporalId de la imagen de la capa base externa pueda inferirse para que sea igual al valor de TemporalId de las imágenes de la unidad de acceso con la que esté asociada la imagen de la capa base externa. En algunos modos de realización, puede indicarse, por ejemplo, usando el tid_aligned_flag o similares, si se requieren los valores de TemporalId de las imágenes codificadas en una unidad de acceso para que sean iguales. Cuando la bandera tid alineada o similares indica que los valores de TemporalId de las imágenes codificadas en una unidad de acceso son iguales, se infiere que el valor de TemporalId de la imagen de la capa base externa es igual al valor de TemporalId de las imágenes de la unidad de acceso con las que está asociada la imagen de la capa base externa. De cualquier manera, el valor de TemporalId de la imagen de la capa base externa podría no tener un impacto en la codificación o decodificación de las imágenes en la unidad de acceso con la que está asociada la capa base externa y, por lo tanto, no necesita derivarse un valor de TemporalId para la imagen de la capa base externa. En algunas realizaciones, el valor de TemporalId de la imagen de la capa base externa puede inferirse para que sea igual al valor de TemporalId de una imagen seleccionada en la unidad de acceso con la que está asociada la imagen de la capa base externa. La imagen seleccionada puede seleccionarse según las restricciones y/o un algoritmo, que puede especificarse, por ejemplo, en un estándar de codificación. Por ejemplo, la imagen seleccionada puede ser una imagen para la cual la imagen de la capa base externa es una imagen de referencia directa. Si hay múltiples imágenes para las cuales la imagen de la capa base externa es una imagen de referencia directa, por ejemplo, puede seleccionarse la que tenga el valor nuh_layer_id más pequeño. Puede haber restricciones adicionales en los valores de TemporalId de las imágenes para una unidad de acceso que tiene una imagen de capa base externa asociada. Por ejemplo, puede ser necesario, p. ej., por un estándar de codificación, que los valores de TemporalId de cada imagen que usan o pueden usar la capa base externa como una imagen de referencia intercapa deban ser iguales. Por consiguiente, el valor de TemporalId de la imagen de la capa base externa puede derivarse de cualquier imagen para la cual la imagen de la capa base externa es una imagen de referencia directa.
Un método de decodificación, que se describe en la Figura 12, utiliza un flujo de bits codificado según cualquiera de las realizaciones descritas anteriormente. Según muestra la Figura 12, se reciben (1200) y se decodifican (1202) imágenes codificadas de una primera capa de escalabilidad. Se reciben (1204) las imágenes codificadas de una segunda capa de escalabilidad, en donde la segunda capa de escalabilidad depende de la primera capa de escalabilidad. A continuación, se selecciona (1206) una imagen de acceso de capa en la segunda capa de escalabilidad de las imágenes codificadas de una segunda capa de escalabilidad, en donde la imagen de acceso de capa seleccionada es una imagen de acceso de subcapa temporal por etapas en una subcapa temporal más baja. Se ignoran (1208) las imágenes codificadas en una segunda capa de escalabilidad antes, en orden de decodificación, de la imagen de acceso de capa seleccionada, y se decodifica (1210) la imagen de acceso de capa seleccionada.
En una realización, el método de la Figura 13 puede añadirse en etapas posteriores a las presentadas en la Figura 13 como sigue. Se puede concluir el número de subcapas cuya decodificación está habilitada por la imagen de acceso de capa seleccionada. A continuación, se envían las imágenes siguientes, en orden de decodificación, la imagen de acceso de capa seleccionada en esas subcapas cuya decodificación se habilita, mientras que, las imágenes siguientes, en orden de decodificación, de la imagen de acceso de capa seleccionada en aquellas subcapas cuya decodificación no está habilitada, se ignoran hasta que se alcanza una imagen de acceso de subcapa adecuada.
Además de o en lugar de la decodificación, puede utilizarse un flujo de bits codificado según cualquiera de las realizaciones descritas anteriormente en la adaptación de tasa de bits mediante un aparato de envío (p. ej., un servidor de envío por flujo continuo) y/o por un aparato de puerta de enlace. En el método de adaptación de tasa de bits, que se muestra en la Figura 13, se reciben (1300) imágenes codificadas de una primera capa de escalabilidad. También se reciben (1302) las imágenes codificadas de una segunda capa de escalabilidad, en donde la segunda capa de escalabilidad depende de la primera capa de escalabilidad. Se selecciona (1304) una imagen de acceso de capa en la segunda capa de escalabilidad de las imágenes codificadas de una segunda capa de escalabilidad, en donde la imagen de acceso de capa seleccionada es una imagen de acceso de subcapa temporal por etapas en la subcapa temporal más baja. Se ignoran (1306) las imágenes codificadas en una segunda capa de escalabilidad antes de, en orden de decodificación, la imagen de acceso de capa seleccionada, y se envían (1308) las imágenes codificadas de la primera capa de escalabilidad y la imagen de acceso de capa seleccionada en un flujo de bits.
En una realización, el método de decodificación de la Figura 12 puede añadirse en etapas posteriores a las presentadas en la Figura 12 como sigue. Se puede concluir el número de subcapas cuya decodificación está habilitada por la imagen de acceso de capa seleccionada. A continuación, se decodifican las imágenes siguientes, en orden de decodificación, la imagen de acceso de capa seleccionada en esas subcapas cuya decodificación se habilita, mientras que, las imágenes siguientes, en orden de decodificación, de la imagen de acceso de capa seleccionada en aquellas subcapas cuya decodificación no está habilitada, se ignoran hasta que se alcanza una imagen de acceso de subcapa adecuada.
Según una realización, la imagen de acceso de capa es la imagen de acceso de subcapa temporal por etapas, que depende del caso de uso, proporciona un punto de acceso ya sea para la inicialización por capas de la decodificación de un flujo de bits con una o más subcapas temporales o para la adaptación de tasa de bits por capas de un flujo de bits con una o más subcapas temporales.
El proceso de decodificación se puede llevar a cabo como un proceso de arranque por subcapas y por capas conjunto para la decodificación presentada. Este proceso de arranque de decodificación permite la inicialización por subcapas de la decodificación de un flujo de bits con una o más capas.
Por lo tanto, según una realización, el método comprende además iniciar la decodificación del flujo de bits en respuesta a una capa base que contiene una imagen IRAP o una imagen STSA en la subcapa más baja; iniciar la decodificación por etapas de al menos una capa de mejora en respuesta a que dicha al menos una capa de mejora contiene imágenes IRAP; y aumentar progresivamente el número de capas decodificadas y/o el número de subcapas temporales decodificadas. En la presente memoria, las capas pueden representar una mejora a lo largo de cualquier dimensión o dimensiones de escalabilidad, tales como las descritas anteriormente, p. ej., una mejora en la resolución espacial, el nivel de calidad, las vistas, los componentes adicionales tales como la profundidad o una combinación de cualquiera de los anteriores.
Según una realización, el método comprende además generar imágenes no disponibles para imágenes de referencia de una primera imagen en orden de decodificación en una capa de mejora particular.
Según una realización alternativa, el método comprende además omitir la decodificación de imágenes anteriores, en orden de decodificación, de la imagen IRAP a partir de la cual puede iniciarse la decodificación de una capa de mejora particular. Según una realización, dichas imágenes omitidas pueden estar etiquetadas por uno o más tipos de unidad NAL específicos. Estas imágenes, independientemente de si se marcan específicamente con un tipo de unidad NAL o se infieren, p. ej., por el decodificador, se pueden denominar imágenes de cross-layer random access skip (omisión de acceso aleatorio de capa transversal - CL-RAS).
El decodificador puede omitir la salida de las imágenes no disponibles generadas y/o las imágenes CL-RAS decodificadas.
Según una realización, el método comprende además mantener información de qué subcapas de cada capa se han decodificado correctamente (es decir, se han inicializado). Por ejemplo, en lugar de LayerInitializedFlag[i] usada en el proceso de arranque por capas presentado anteriormente, se puede mantener una variable HighestTidPlus1InitializedForLayer[i] para cada identificador de capa i. HighestTidPlus1 InitializedForLayer[i] igual a 0 puede indicar que no se ha decodificado correctamente ninguna imagen en capa con el identificador i ya que se inició por última vez el mecanismo de arranque. HighestTidPlus1 InitializedForLayer[i] - 1 mayor o igual que 0 puede indicar el valor de Temporald más alto que de las imágenes que se han decodificado correctamente desde que se inició por última vez el mecanismo de arranque.
Puede iniciarse un proceso de arranque similar o idénticamente a lo que se ha descrito anteriormente para el mecanismo de arranque por capas. Cuando se inicia un mecanismo de arranque por capas, todas las imágenes de la DPB pueden marcarse como “ no usadas para referencia” . En otras palabras, todas las imágenes de todas las capas pueden marcarse como “ no usadas para referencia” y no se utilizarán como referencia para la predicción para la imagen que inicia el mecanismo de arranque por capas o cualquier imagen posterior en orden de decodificación.
Un proceso de decodificación para un arranque puede controlarse, por ejemplo, por dos variables de matriz; HighestTidPlus1InitializedForLayer[i] y FirstPicInLayerDecodedFlag[i] que pueden tener entradas para cada capa (posiblemente excluyendo la capa base y posiblemente otras capas independientes también). Cuando se invoca el proceso de arranque, por ejemplo, como respuesta a que NoClrasOutputFlag sea igual a 1, estas variables de matriz pueden reiniciarse a sus valores predeterminados. Por ejemplo, cuando hay 64 capas habilitadas (p. ej., con una nuh_layer_id de 6 bits), las variables pueden reiniciarse de la siguiente manera: la variable HighestTidPlus1InitializedForLayer[i] se establece igual a 0 para todos los valores de i de 0 a 63, inclusive, y la variable FirstPicInLayerDecodedFlag[i] se establece igual a 0 para todos los valores de i de 1 a 63, inclusive.
El proceso de decodificación puede incluir lo siguiente o similar para controlar la salida de imágenes RASL. Cuando la imagen actual es una imagen IRAP, se aplica lo siguiente:
- Si HighestTidPlus1InitializedForLayer[nuh_layer_id] es igual a 0, la variable NoRaslOutputFlag se establece igual a 1.
- De cualquier manera, si algunos medios externos están disponibles para establecer la variable HandleCraAsBlaFlag a un valor para la imagen actual, la variable HandleCraAsBlaFlag se establece igual al valor proporcionado por los medios externos y la variable NoRaslOutputFlag se establece igual a HandleCraAsBlaFlag.
- De cualquier manera, la variable HandleCraAsBlaFlag se establece igual a 0 y la variable NoRaslOutputFlag se establece igual a 0.
Según una realización, iniciar la decodificación por etapas comprende una o más de las siguientes operaciones condicionales:
cuando una imagen actual es una imagen IRAP y se ha iniciado la decodificación de todas las capas de referencia de la imagen IRAP, se decodifican la imagen IRAP y todas las imágenes que la siguen, en orden de decodificación, en la misma capa.
Cuando la imagen actual es una imagen STSA en la subcapa más baja y se ha iniciado la decodificación de la subcapa más baja de todas las capas de referencia de la imagen STSA, se decodifica la imagen STSA y todas las imágenes en la subcapa más baja después de la imagen STSA, en orden de decodificación, en la misma capa.
Cuando la imagen actual es una imagen de TSA o STSA a una subcapa superior que la subcapa más baja y se ha iniciado la decodificación de la siguiente subcapa inferior en la misma capa, y se ha iniciado la decodificación de la misma subcapa de todas las capas de referencia de la imagen de TSA o STSA, se decodifican la imagen de TSA o STSA y todas las imágenes a la misma subcapa que siguen a la imagen de TSA o STSA, en orden de decodificación, en la misma capa.
Estas operaciones condicionales pueden especificarse en mayor detalle, por ejemplo, como sigue. El proceso de decodificación puede incluir lo siguiente para actualizar HighestTidPlus1InitializedForLayer para una capa. Cuando la imagen actual es una imagen IRAP y una de las siguientes es verdadera, HighestTidPlus1 InitializedForLayer[nuh_layer_id] se establece igual a un valor máximo de TemporalId más 1 (donde el valor máximo de TemporalId se ha, p. ej., especificado en el VPS o está previamente definido en un estándar de codificación).
- nuh layer id es igual a 0.
- HighestTidPlus1InitializedForLayer[nuh_layer_id] es igual a 0 y HighestTidPlus1InitializedForLayer[refLayerId] es igual al valor máximo de TemporalId más 1 para todos los valores de refLayerId igual a RefLayerId[nuh_layer_id][j], donde j está en el intervalo de 0 a NumDirectRefLayers[nuh_layer_id] - 1, inclusive.
Cuando la imagen actual es una imagen de STSA con TemporalId igual a 0 y uno de los siguientes es verdadero, HighestTidPlus1 InitializedForLayer[nuh_layer_id] se establece igual a 1.
- nuh layer id es igual a 0.
- HighestTidPlus1InitializedForLayer[nuh_layer_id] es igual a 0 y HighestTidPlus1InitializedForLayer[refLayerId] es mayor que 0 para todos los valores de refLayerId igual a RefLayerId[nuh_layer_id][j], donde j está en el intervalo de 0 a NumDirectRefLayers[nuh_layer_id] - 1, inclusive.
Cuando la imagen actual es una imagen de TSA o una imagen de STSA con TemporalId mayor que 0 y ambas de las siguientes son verdaderas, HighestTidPlus1 InitializedForLayer[nuh_layer_id] se establece igual a TemporalId 1.
- HighestTidPlus1 InitializedForLayer[nuh_layer_id] es igual a TemporalId.
- HighestTidPlus1 InitializedForLayer[refLayerId] es mayor o igual que TemporalId 1 para todos los valores de refLayerId iguales a RefLayerId[nuh_layer_id][j], donde j está en el intervalo de 0 a NumDirectRefLayers[nuh_layer_id] - 1, inclusive.
Cuando FirstPicInLayerDecodedFlag[nuh_layer_id] es igual a 0, puede invocarse el proceso de decodificación para generar imágenes de referencia no disponibles antes de decodificar la imagen actual. El proceso de decodificación para generar imágenes de referencia no disponibles puede generar imágenes para cada imagen en un conjunto de imágenes de referencia con valores predeterminados. El proceso de generación de imágenes de referencia no disponibles puede especificarse principalmente solo para la especificación de restricciones de sintaxis para las imágenes CL-RAS, donde una imagen CL-RAS puede definirse como una imagen con nuh_layer_id igual a layerId y LayerInitializedFlag[layerId] es igual a 0. En las operaciones HRD, puede ser necesario tener en cuenta las imágenes CL-RAS en la derivación de los tiempos de llegada y retirada de la CPB. Los decodificadores pueden ignorar cualquier imagen CL-RAS, ya que estas imágenes no se especifican para la salida y no tienen efecto en el proceso de decodificación de ninguna otra imagen que se especifique para la salida.
Una imagen que tiene tal nuh_layer_id (o similar) y TemporalId (o similar) para la que aún no se ha inicializado la decodificación puede manejarse por un decodificador de manera que no se emita por el decodificador. La decodificación de nuh_layer_id (o similar) con cualquier valor de TemporalId (o similar) puede considerarse inicializada cuando hay una imagen IRAP con ese valor nuh_layer_id y se ha inicializado la decodificación de todas las capas de referencia directa de la capa con ese valor nuh_layer_id. La decodificación de nuh_layer_id (o similar) y TemporalId (o similar) puede considerarse inicializada cuando hay una instantánea de TSA o STSA (o similar) con ese valor nuh_layer_id y ese valor de TemporalId, y que se ha inicializado la decodificación de todas las capas de referencia directa de la capa con ese valor nuh_layer_id y ese valor Temporal, y (cuando TemporalId es mayor que 0) se ha inicializado la decodificación de la capa con ese valor nuh_layer_id y ese valor de TemporalId menos 1. En el contexto de MV-HEVC, SHVC y/o similares, el control de la salida de una imagen puede especificarse como sigue o de una manera similar. Se puede determinar que una imagen con TemporalId igual a subLayerId y nuh_layer_id igual a layerId se emite (p. ej., estableciendo PicOutputFlag igual a1) por el decodificador, si HighestTidPlus1InitializedForLayer[layerId] es mayor que subLayerId en el inicio de la decodificación de la imagen. De cualquier manera, puede determinarse que la imagen no se emite (p. ej., estableciendo PicOutputFlag igual a 0) por el decodificador. La determinación de una imagen a emitir puede verse afectada además si layerId está entre las capas de salida del conjunto de capas de salida objetivo y/o si una imagen que se va a emitir está entre capas de salida alternativas si una imagen en una capa de salida asociada no está presente o no se debe emitir.
Las imágenes Cross-layer random access skipped (omitidas de acceso aleatorio de capa transversal - CL-RAS) puede definirse que son imágenes con TemporalId igual a subLayerId y nuh_layer_id igual a layerId para las que HighestTidPlus1InitializedForLayer[layerId] es mayor que subLayerId en el inicio de la decodificación de la imagen. Las imágenes CL-RAS pueden tener la propiedad de que no se emiten y no pueden decodificarse correctamente, ya que la imagen CL-RAS puede contener referencias a imágenes que no están presentes en el flujo de bits. Se puede especificar que las imágenes CL-RAS no se usan como imágenes de referencia para el proceso de decodificación de imágenes no CL-RAS.
Según una realización, una imagen de acceso a capa puede codificarse por un codificador a un flujo de bits que contiene solo una capa. Por ejemplo, una imagen de acceso a capa puede ser una imagen de STSA con nuh_layer_id igual a 0 y TemporalId igual a 0.
Según una realización, el decodificador puede iniciar la decodificación desde una imagen de acceso a de capa en la capa más baja. Por ejemplo, el decodificador puede iniciar la decodificación de un STSA con nuh_layer_id igual a 0 y TemporalId igual a 0. La decodificación puede comprender un arranque por subcapas, por ejemplo, como se ha descrito anteriormente. Por ejemplo, la decodificación puede comprender mantener información de qué subcapas de cada capa se han decodificado correctamente (es decir, se han inicializado) y conmutar a la siguiente subcapa o capa disponible cuando está disponible una imagen de acceso de capa, imagen de acceso de subcapa o imagen IRAP adecuada en orden de decodificación. El flujo de bits que se decodifica puede comprender solo una capa o puede comprender varias capas.
La utilización de las realizaciones en la adaptación de tasa de bits se describe en vista de varios ejemplos.
En la Figura 14, se supone que el flujo de bits se ha codificado según muestra la Figura 8 y que el emisor realiza el ajuste de tasa de bits seleccionando adaptativamente el TemporalId máximo que se transmite desde EL. Para el primer GOP, no se transmiten imágenes EL. Para el segundo GOP, el emisor determina aumentar la tasa de bits de video y transmite tantas subcapas de EL como sea posible. Como hay imágenes de STSA disponibles en TID 0, 1 y 2 (es decir, las imágenes 1, A y B, respectivamente), el emisor conmuta para transmitir subcapas con TID 0 a 2 comenzando desde el segundo GOP de la EL. La conmutación hacia el TID 3 de la capa de mejora puede tener lugar después, cuando hay una imagen EL IRAP o una imagen de TSA o STSA de EL con TID igual a 3. Se observa que, si se habilita el uso de capas de salida alternativas, las imágenes se emitirán constantemente a una tasa de imágenes “completa” en este ejemplo.
Si el flujo de bits se ha codificado de tal manera que al menos una capa de mejora comprende imágenes de TSA o STSA más frecuentes que la capa base, por ejemplo, según muestra la Figura 9, el emisor puede adaptar dinámicamente la tasa de bits de la transmisión en una manera por capas determinando cuántas subcapas se transmiten.
El ajuste de tasa de bits o la adaptación de tasa de bits puede usarse, por ejemplo, para proporcionar el denominado arranque rápido en servicios de transmisión por envío por flujo 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 al envío por flujo continuo para iniciar la reproducción inmediatamente y para lograr un nivel de ocupación de memoria intermedia que tolera retardos y/o retransmisiones de paquetes ocasionales. El ajuste de tasa de bits también se usa cuando se hace coincidir la tasa de bits de flujo transmitida con la tasa de bits de rendimiento de canal predominante. En este caso de uso, es posible usar un mayor número de imágenes de referencia en la capa base para lograr un mejor rendimiento de tasa-distorsión.
En el ejemplo de la Figura 15, se supone que se ha codificado el flujo de bits según muestra la Figura 9 y que ha sido necesario para reducir la tasa de bits del primer GOP cuando se transmite el flujo de bits. En este ejemplo, solo las imágenes con TemporalId (TID) igual a 0 se transmiten para el primer GOP. Se supone además, que el flujo de bits puede transmitirse a su tasa de bits completa comenzando desde el segundo GOP. Como el segundo GOP en EL empieza con imágenes de TSA, es posible iniciar la transmisión de imágenes de EL con todos los valores de TID.
En el ejemplo de la Figura 16, se supone que se ha codificado el flujo de bits de manera que se codifican las imágenes de acceso de subcapa temporal no alineadas cuando solo se usan ciertos niveles temporales para la predicción intercapa, como se muestra en el ejemplo de la Figura 10. Se supone además que el emisor es consciente de que el receptor utiliza un conjunto de capas de salida donde solo la capa de mejora es una capa de salida y, por lo tanto, se omite la transmisión de subcapas BL que no se usan como referencia para la predicción intercapa. También se supone que ha sido necesario reducir la tasa de bits del primer GOP cuando se transmite el flujo de bits. En este ejemplo, las imágenes EL con TemporalId en el intervalo de 0 a 2, inclusive, se transmiten para el primer GOP. Se supone además, que el flujo de bits puede transmitirse a su tasa de bits completa comenzando desde el segundo GOP. Como el segundo GOP en EL empieza con imágenes de TSA, es posible iniciar la transmisión de imágenes de EL con todos los valores de TID.
En el ejemplo de la Figura 17, se supone que se ha codificado el flujo de bits de manera que se determinan las jerarquías de predicción de manera diferente a través de las capas, según muestra la Figura 11. Se supone además que el emisor ajusta la tasa de bits del flujo de bits transmitido, después de lo cual el emisor elige transmitir solo tres subcapas (TID 0, 1 y 2) de la EL. Se observa que, si se habilita el uso de capas de salida alternativas, las imágenes se emitirán constantemente a una tasa de imágenes “completa” en este ejemplo.
La Figura 18 muestra un diagrama de bloques de un decodificador de vídeo adecuado para emplear realizaciones de la invención. La Figura 18 representa una estructura de un decodificador de dos capas, pero se apreciará que las operaciones de decodificación pueden emplearse similarmente en un decodificador de una sola capa.
El decodificador 550 de vídeo comprende una primera sección 552 de decodificador para componentes de vista de base y una segunda sección 554 de decodificador para componentes de vista no de base. El bloque 556 ilustra un demultiplexor para entregar información sobre los componentes de la vista de base a la primera sección 552 de decodificador y para entregar información sobre los componentes de vista no base 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 reference frame memory (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 la información de error de predicción decodificada con componentes de vista de base y de vista no de base previstos para obtener las imágenes reconstruidas preliminares (I'n). Las imágenes preliminares de vista de base reconstruidas y filtradas pueden emitirse 709 de la primera sección 552 de decodificador y las imágenes preliminares de vista de base reconstruidas y filtradas pueden emitirse 809 desde la primera sección 554 de decodificador.
La Figura 20 es una representación gráfica de un ejemplo de sistema de comunicación multimedia 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 con un preprocesamiento, tal como la conversión de formato de datos y/o el filtrado 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 codificados 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. 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 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 instrucciones de encapsulación, tales como pistas de indicación en el Formato de Archivo de Medios de Base ISO, para la encapsulación del al menos uno de los flujos de bits de medios contenidos en el protocolo de comunicación.
El servidor 540 puede estar conectado o no a una puerta 1550 de enlace a través de una red de comunicación. 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. Los ejemplos de puertas 1550 de enlace incluyen multipoint conference control units (unidades de control de conferencia de múltiples puntos -MCU), puertas de enlace entre videotelefonía de conmutación de circuitos y de conmutación de paquetes, servidores de pulsar y Push-to-talk over Cellular (hablar sobre celular - PoC), encapsuladores IP en sistemas de digital video broadcasting-handheld (difusión de vídeo digital - DVB-H) portátiles, o decodificadores de salón u otros dispositivos que reenvían transmisiones de difusión local localmente a redes inalámbricas domésticas. Cuando se utiliza RTP, la puerta 1550 de enlace puede llamarse un mezclador RTP o un traductor RTP y puede actuar como un punto final de una conexión RTP.
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 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.
Puede configurarse un emisor 1540 y/o una puerta 1550 de enlace para realizar la adaptación de tasa de bits según diversas realizaciones descritas, y/o puede configurarse un emisor 1540 y/o una puerta 1550 de enlace para seleccionar las capas y/o subcapas transmitidas de un flujo de bits de vídeo escalable según diversas realizaciones. La adaptación de tasa de bits y/o la selección de las capas y/o subcapas transmitidas pueden tener lugar por múltiples razones, tales como responder a solicitudes del receptor 1560 o condiciones predominantes, tales como el rendimiento de la red a través de la cual se transmite el flujo de bits. Una solicitud del receptor puede ser, por ejemplo, una solicitud para un cambio de capas y/o subcapas de escalabilidad transmitidas, o un cambio de un dispositivo de representación que tiene diferentes capacidades en comparación con el anterior.
Un decodificador 1580 puede configurarse para realizar la adaptación de tasa de bits según diversas realizaciones descritas, y/o un decodificador 1580 puede configurarse para seleccionar las capas y/o subcapas transmitidas de un flujo de bits de vídeo escalable según diversas realizaciones. La adaptación de la tasa de bits y/o la selección de las capas y/o subcapas transmitidas pueden tener lugar por múltiples razones, tal como para lograr una operación de decodificación más rápida. Una operación de decodificación más rápida podría ser necesaria, por ejemplo, si el dispositivo que incluye el decodificador 580 es multitarea y utiliza recursos informáticos para otros fines que la decodificación del flujo de bits de vídeo escalable. 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.
Los estándares disponibles de formato de archivo de medios incluyen el formato de archivo de medios de base ISO (ISO/IEC 14496-12, que puede abreviarse como ISOBMFF), formato de archivo MPEG-4 (ISO/IEC 14496-14, también conocido como formato MP4), formato de archivo para vídeo estructurado de unidad NAL (ISO/IEC 14496-15) y formato de archivo 3GPP (3GPP TS 26.244, también conocido como el formato 3GP). Los formatos de archivo SVC y MVC se especifican como modificaciones al formato del archivo AVC. El formato de archivo ISO es la base para la derivación de todos los formatos de archivo mencionados anteriormente (excluyendo el propio formato de archivo ISO). Estos formatos de archivo (incluido el propio formato de archivo ISO) se denominan generalmente los formatos de archivo de la familia ISO.
El bloque básico de construcción en el formato de archivo de medios de base ISO se denomina una 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 de formatos de archivo ISO, un archivo incluye datos de medios y metadatos que se encierran en cajas separadas. En una realización de ejemplo, los datos de medios pueden proporcionarse en una caja de datos de medios (mdat) y la caja de película (moov) puede usarse para encerrar los metadatos. En algunos casos, para que un archivo sea operable, deben estar presentes ambas cajas mdat y moov. La caja de película (moov) puede incluir una o más pistas, y cada pista puede residir en una caja de pista correspondiente. Una pista puede ser uno de los siguientes tipos: medios, indicación, metadatos temporizados. Una pista de medios se refiere a muestras formateadas según un formato de compresión de medios (y su encapsulación al formato de archivo de medios de base ISO). Una pista de indicación se refiere a muestras de indicación, que contienen instrucciones de tipo recetario para construir paquetes para su transmisión a través de un protocolo de comunicación indicado. Las instrucciones de tipo recetario pueden incluir una guía para la construcción de la cabecera de paquetes e incluir la construcción de la carga útil de paquetes. En la construcción de la carga útil de paquetes, se puede hacer referencia a los datos que residen en otras pistas o elementos. Como tal, por ejemplo, los datos que residen en otras pistas o elementos pueden indicarse mediante una referencia a la que se instruye la pieza de datos en una pista o elemento particular para que se copie en un paquete durante el proceso de construcción de paquete. Una pista de metadatos temporizada puede referirse a muestras que describen muestras de medios y/o de indicación referidas. Para la presentación de un tipo de medios, típicamente se selecciona una pista de medios. Las muestras de una pista pueden asociarse implícitamente con números de muestra que se incrementan en 1 en el orden de decodificación indicado de muestras. La primera muestra en una pista puede estar asociada con el número de muestra 1.
Un ejemplo de una estructura de archivo simplificada según el formato de archivo de medios de base ISO puede describirse como sigue. El archivo puede incluir la caja de moov y la caja mdat y la caja de moov puede incluir una o más pistas que corresponden a vídeo y audio, respectivamente.
El formato de archivo de medios de base ISO no limita una presentación que esté contenida en un archivo. Como tal, una presentación puede estar comprendida dentro de varios archivos. Como ejemplo, un archivo puede incluir los metadatos para toda la presentación y, por lo tanto, puede incluir todos los datos de medios para hacer la presentación autónoma. Otros archivos, si se usan, pueden no ser necesarios para formatearse al formato de archivo de medios de base ISO, y pueden usarse para incluir datos de medios, y también pueden incluir datos de medios no utilizados u otra información. El formato de archivo de medios de base ISO se refiere a la estructura del archivo de presentación solamente. El formato de los archivos de datos de medios puede estar limitado por el formato de archivo de medios de base ISO o sus formatos derivados solo en que los datos de medios en los archivos de medios se formatean# como se especifica en el formato de archivo de medios de base ISO o sus formatos derivados.
La capacidad de referirse a archivos externos se puede realizar a través de referencias de datos. En algunos ejemplos, una caja de descripción de muestra incluida en cada pista puede proporcionar una lista de entradas de muestra, cada una de las cuales proporciona información detallada sobre el tipo de codificación usado, y cualquier información de inicialización necesaria para esa codificación. Todas las muestras de un segmento y todas las muestras de un fragmento de pista pueden usar la misma entrada de muestra. Un segmento puede definirse como un conjunto contiguo de muestras para una pista. La caja de Referencia de Datos (dref), también incluida en cada pista, puede definir una lista indexada de uniform resource locators (localizadores de recursos uniformes - URL), uniform resource names (nombres de recursos uniformes - URN) y/o autoreferencias al archivo que contiene los metadatos. Una entrada de muestra puede apuntar a un índice de la caja de Referencia de Datos, indicando de esta manera el archivo que contiene las muestras del respectivo segmento o fragmento de pista
Pueden usarse los fragmentos de película cuando se registran contenido a archivos ISO para evitar perder datos si se bloquea una aplicación de grabación, se ejecuta fuera de espacio de memoria o se produce algún otro incidente. Sin fragmentos de película, la pérdida de datos puede ocurrir porque el formato de archivo puede requerir típicamente que todos los metadatos, p. ej., la caja de película, se escriben en una zona contigua del archivo. Además, cuando se registra un archivo, puede no haber suficiente cantidad de espacio de memoria (p. ej., RAM) para almacenar una caja de película para el tamaño del almacenamiento disponible, y volver a calcular los contenidos de una caja de película cuando la película está cerrada puede ser demasiado lento. 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. Finalmente, se puede requerir una duración más pequeña del almacenamiento en memoria intermedia inicial para la descarga progresiva, p. ej., la recepción y la reproducción simultánea 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 con el mismo contenido de medios pero estructurado sin fragmentos de película.
La característica de fragmento de película puede permitir dividir los metadatos que se residían convencionalmente en la caja de película en múltiples piezas. Cada pieza puede corresponder a un cierto período de tiempo para 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, como es habitual, 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.
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. Como puede haber más de una agrupación de muestras para las muestras en una pista, cada agrupación de muestras tiene un campo de tipo para indicar el tipo de agrupación. Las agrupaciones de muestras se representan por dos estructuras de datos enlazadas: (1) una caja SampleToGroup (caja sbgp) representa la asignación de muestras a grupos de muestras; y (2) una caja SampleGroupDescription (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 las cajas SampleToGroup y SampleGroupDescription basándose en diferentes criterios de agrupación. Estos se distinguen por un campo de tipo usado para indicar el tipo de agrupación.
Las cajas de grupos de muestras (caja SampleGroupDescription y caja SampleToGroup) residen dentro de la caja de tabla de muestras (stbl), que está encerrada en las cajas de información de medios (minf), de medios (mdia) y de pista (trak) (en ese orden) dentro de una caja de película (moov). Se permite que la caja SampleToGroup resida en un fragmento de película. Por lo tanto, la agrupación de muestras puede hacerse fragmento a fragmento.
En una realización, que puede aplicarse independientemente o junto con otras realizaciones, un codificador u otra entidad, tal como un creador de archivos, codifica o inserta una indicación de una o más imágenes de acceso de capa en un archivo contenedor, que puede adaptarse, por ejemplo, al formato de archivo de medios de base ISO y, posiblemente, a algunos de sus formatos de archivo derivados. Puede especificarse una agrupación de muestras para imágenes de acceso de capa, por ejemplo, o puede indicarse la imagen de acceso de capa dentro de otra agrupación de muestras más genérica, p. ej., para la indicación de puntos de acceso aleatorio.
En algunas realizaciones, un decodificador u otra entidad, tal como un reproductor de medios o un analizador de archivos, decodifica u obtiene una indicación de una o más imágenes de acceso de capa en un archivo contenedor, que puede adaptarse, por ejemplo, al formato de archivo de medios de base ISO y, posiblemente, a algunos de sus formatos de archivo derivados. Por ejemplo, la indicación puede obtenerse de una agrupación de muestras para imágenes de acceso de capa, o de otra agrupación de muestras más genérica, p. ej., para la indicación de puntos de acceso aleatorio, que también es capaz de indicar imágenes de acceso de capa. La indicación puede usarse para iniciar la decodificación u otro procesamiento de la capa con la que está asociada la indicación.
Debe entenderse que una unidad de acceso para codificación de vídeo escalable puede definirse de diversas maneras, incluida, aunque no de forma limitativa, la definición de una unidad de acceso para HEVC como se ha descrito anteriormente. Las realizaciones pueden aplicarse con diferentes definiciones de una unidad de acceso. Por ejemplo, la definición de unidad de acceso de HEVC puede relajarse para que se requiera que una unidad de acceso incluya imágenes codificadas asociadas con el mismo tiempo de salida y que pertenecen al mismo árbol de capa. Cuando el flujo de bits tiene múltiples árboles de capas, una unidad de acceso puede, pero no se requiere, incluir imágenes codificadas asociadas con el mismo tiempo de salida y que pertenecen a diferentes árboles de capa.
En lo anterior, se han descrito algunas realizaciones usando MV-HEVC, SHVC y/o similares como ejemplos, y, por consiguiente, se ha usado alguna terminología, variables, elementos de sintaxis, tipos de imagen y así sucesivamente para MV-HEVC, SHVC y/o similares. Debe entenderse que las realizaciones podrían realizarse con una respectiva terminología, variables, elementos de sintaxis, tipos de imagen y así sucesivamente de otros estándares y/o métodos de codificación. Por ejemplo, en lo anterior, se han descrito algunas realizaciones con referencia a nuh_layer_id y/o TemporalId. Debe entenderse que las realizaciones podrían realizarse con cualquier otra indicación, elementos de sintaxis y/o variables para un identificador de capa y/o un identificador de subcapa, respectivamente.
En lo anterior, se han descrito algunas realizaciones con referencia a una imagen de acceso de subcapa temporal por etapas en una subcapa temporal más baja. Debe entenderse que las realizaciones podrían realizarse similarmente con cualquier tipo de una imagen de acceso de capa que proporcione la capacidad de decodificación correcta para un subconjunto de imágenes de las capas, tal como para algunas, pero no necesariamente todas, las subcapas de una capa.
En lo anterior, se ha descrito algunas realizaciones en relación con indicaciones de codificación, elementos de sintaxis y/o estructuras de sintaxis en un flujo de bits o en una secuencia de vídeo codificado y/o indicaciones de decodificación, elementos de sintaxis y/o estructuras de sintaxis de un flujo de bits o de una secuencia de vídeo codificado. Sin embargo, debe entenderse que las realizaciones podrían realizarse cuando se codifican indicaciones, elementos de sintaxis y/o estructuras de sintaxis en una estructura de sintaxis o una unidad de datos que es externa de un flujo de bits o una secuencia de vídeo codificado que comprende datos de capa de codificación de vídeo, tales como cortes codificados, y/o indicaciones de decodificación, elementos de sintaxis y/o estructuras de sintaxis de una estructura de sintaxis o una unidad de datos que es externa de un flujo de bits o una secuencia de vídeo codificado que comprende datos de capa de codificación de vídeo, tales como cortes codificados.
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.
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 etapas del programa, o circuitos lógicos interconectados, bloques y funciones, o una combinación de etapas 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. Sin embargo, todas esas modificaciones y similares de las enseñanzas de esta invención estarán todavía dentro del alcance de esta invención.

Claims (20)

  1. REIVINDICACIONES
    i . Un método para decodificar vídeo codificado, comprendiendo el método:
    recibir (1200) imágenes codificadas de una primera capa de escalabilidad que comprende una o más subcapas temporales;
    decodificar (1202) las imágenes codificadas de la primera capa de escalabilidad;
    recibir (1204) imágenes codificadas de una segunda capa de escalabilidad que comprende una o más subcapas temporales, dependiendo la segunda capa de escalabilidad de la primera capa de escalabilidad;
    seleccionar (1206) una imagen de acceso de capa en la segunda capa de escalabilidad a partir de las imágenes codificadas de la segunda capa de escalabilidad, en donde la imagen de acceso de capa seleccionada es una imagen de step-wise temporal sub-layer access (acceso de subcapa temporal por etapas - STSA) en una subcapa temporal más baja, posibilitando la imagen STSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma subcapa temporal, en donde no se permite la interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen STSA, en orden de decodificación;
    ignorar (1208) imágenes codificadas en la segunda capa de escalabilidad antes, en orden de decodificación, de la imagen de acceso de capa seleccionada; y
    decodificar (1210) o seleccionar la imagen de acceso de capa seleccionada y las imágenes posteriores, si las hay, en orden de decodificación, en la misma o una subcapa temporal superior.
  2. 2. El método según la reivindicación 1, en donde dicha selección comprende concluir que una imagen es una imagen de acceso de subcapa temporal por etapas basándose en su tipo de unidad de Network Access Layer (capa de acceso de red - NAL) que indica la imagen de acceso de subcapa temporal por etapas y su identificador de subcapa temporal que indica la subcapa temporal más baja.
  3. 3. El método según la reivindicación 1 o 2, comprendiendo el método además:
    recibir una indicación acerca de la imagen de acceso de subcapa temporal por etapas con un mensaje SEI que define el número de subcapas decodificables.
  4. 4. El método según cualquiera de las reivindicaciones 1 - 3, comprendiendo el método además:
    iniciar la decodificación del flujo de bits en respuesta a una capa base que contiene una imagen de intra random access point (punto de acceso intra aleatorio - IRAP) o una imagen de step-wise temporal sub-layer access (acceso de subcapa temporal por etapas - STSA) en la subcapa más baja, siendo la imagen IRAP en la capa base una imagen intracodificada sin predicción intercapa o intervista;
    iniciar la decodificación por etapas de al menos una capa de mejora en respuesta a dicha al menos una capa de mejora que contiene una imagen IRAP o una imagen STSA en la subcapa más baja, siendo la imagen IRAP en la capa de mejora una imagen sin interpredicción pero con predicción intercapa o intervista permitida; y
    aumentar progresivamente el número de capas decodificadas y/o el número de subcapas temporales decodificadas.
  5. 5. El método según la reivindicación 4, comprendiendo el método además:
    omitir la decodificación de imágenes que preceden a la imagen IRAP a partir de la cual puede iniciarse la decodificación de una capa de mejora particular.
  6. 6. El método según la reivindicación 5, comprendiendo el método además:
    etiquetar dichas imágenes omitidas por uno o más tipos de unidad NAL específicos.
  7. 7. El método según cualquiera de las reivindicaciones 4-6, en donde iniciar la decodificación por etapas comprende una o más de las siguientes operaciones condicionales:
    - cuando una imagen actual es una imagen IRAP y se ha iniciado la decodificación de todas las capas de referencia de la imagen IRAP, se decodifican la imagen IRAP y todas las imágenes que la siguen, en orden de decodificación, en la misma capa.
    - cuando la imagen actual es una imagen STSA en la subcapa más baja y se ha iniciado la decodificación de la subcapa más baja de todas las capas de referencia de la imagen STSA, se decodifican la imagen STSA y todas las imágenes en la subcapa más baja después de la imagen STSA, en orden de decodificación, en la misma capa.
    - cuando la imagen actual es una imagen de temporal sub-layer access (acceso de subcapa temporal - TSA), posibilitando la imagen TSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma o una subcapa temporal superior, en donde no se permite interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen TSA, en orden de decodificación, o la imagen STSA en una subcapa más alta que la subcapa más baja y se ha iniciado la decodificación de la siguiente subcapa inferior en la misma capa, y se ha iniciado la decodificación de la misma subcapa de todas las capas de referencia de la imagen TSA o STSA, se decodifican la imagen TSA o STSA y todas las imágenes en la misma subcapa después de la imagen TSA o STSA, en orden de decodificación, en la misma capa.
  8. 8. Un aparato para decodificar un vídeo codificado, comprendiendo el aparato:
    medios para recibir (1200) imágenes codificadas de una primera capa de escalabilidad que comprende una o más subcapas temporales;
    medios para decodificar (1202) las imágenes codificadas de la primera capa de escalabilidad; medios para recibir (1204) imágenes codificadas de una segunda capa de escalabilidad que comprende una o más subcapas temporales, dependiendo la segunda capa de escalabilidad de la primera capa de escalabilidad;
    medios para seleccionar (1206) una imagen de acceso de capa en la segunda capa de escalabilidad a partir de las imágenes codificadas de la segunda capa de escalabilidad, en donde la imagen de acceso de capa seleccionada es una imagen de step-wise temporal sub-layer access (acceso de subcapa temporal por etapas - STSA) en la subcapa temporal más baja, posibilitando la imagen STSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma subcapa temporal, en donde no se permite la interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen STSA, en orden de decodificación;
    medios para ignorar (1208) imágenes codificadas en la segunda capa de escalabilidad antes, en orden de decodificación, de la imagen de acceso de capa seleccionada;
    medios para decodificar (1210) o seleccionar la imagen de acceso de capa seleccionada y las imágenes posteriores, si las hay, en orden de decodificación, en la misma o una subcapa temporal superior.
  9. 9. El aparato según la reivindicación 8, que comprende además:
    medios para concluir que una imagen es una imagen de acceso de subcapa temporal por etapas basándose en su tipo de unidad de Network Access Layer (capa de acceso de red - NAL) que indica la imagen de acceso de subcapa temporal por etapas y su identificador de subcapa temporal que indica la subcapa temporal más baja.
  10. 10. El aparato de la reivindicación 8 o 9, que comprende además:
    Medios para recibir una indicación acerca de la imagen de acceso de subcapa temporal por etapas con un mensaje SEI que define el número de subcapas decodificables.
  11. 11. El aparato según cualquiera de las reivindicaciones 8-10, que comprende además:
    Medios para iniciar la decodificación del flujo de bits en respuesta a una capa base que contiene una imagen de intra random access point (punto de acceso intra aleatorio - IRAP) o una imagen de step-wise temporal sub-layer access (acceso de subcapa temporal por etapas - STSA) en la subcapa más baja, siendo la imagen IRAP en la capa base una imagen intracodificada sin predicción intercapa o intervista;
    Medios para iniciar la decodificación por etapas de al menos una capa de mejora en respuesta a dicha al menos una capa de mejora que contiene una imagen IRAP o una imagen STSA en la subcapa más baja, siendo la imagen IRAP en la capa de mejora una imagen sin interpredicción pero con predicción intercapa o intervista permitida; y
    Medios para aumentar progresivamente el número de capas decodificadas y/o el número de subcapas temporales decodificadas.
  12. 12. El aparato según la reivindicación 11, que comprende además:
    Medios para omitir la decodificación de imágenes que preceden a la imagen IRAP a partir de la cual puede iniciarse la decodificación de una capa de mejora particular.
  13. 13. El aparato según la reivindicación 12, que comprende además:
    Medios para etiquetar dichas imágenes omitidas por uno o más tipos de unidad NAL específicos.
  14. 14. El aparato según cualquiera de las reivindicaciones 11-13, en donde iniciar la decodificación por etapas comprende una o más de las siguientes operaciones condicionales:
    - cuando una imagen actual es una imagen IRAP y se ha iniciado la decodificación de todas las capas de referencia de la imagen IRAP, se decodifican la imagen IRAP y todas las imágenes que la siguen, en orden de decodificación, en la misma capa.
    - cuando la imagen actual es una imagen STSA en la subcapa más baja y se ha iniciado la decodificación de la subcapa más baja de todas las capas de referencia de la imagen STSA, se decodifican la imagen STSA y todas las imágenes en la subcapa más baja después de la imagen STSA, en orden de decodificación, en la misma capa.
    - cuando la imagen actual es una imagen de temporal sub-layer access (acceso de subcapa temporal - TSA), posibilitando la imagen TSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma o una subcapa temporal superior, en donde no se permite interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen TSA, en orden de decodificación, o la imagen STSA en una subcapa más alta que la subcapa más baja y se ha iniciado la decodificación de la siguiente subcapa inferior en la misma capa, y se ha iniciado la decodificación de la misma subcapa de todas las capas de referencia de la imagen TSA o STSA, se decodifican la imagen TSA o STSA y todas las imágenes en la misma subcapa después de la imagen TSA o STSA, en orden de decodificación, en la misma capa.
  15. 15. Un medio de almacenamiento legible por ordenador almacenado con código en el mismo para su uso por un aparato, que cuando se ejecuta por un procesador, hace que el aparato realice:
    recibir (1200) imágenes codificadas de una primera capa de escalabilidad que comprende una o más subcapas temporales;
    decodificar (1202) las imágenes codificadas de la primera capa de escalabilidad;
    recibir (1204) imágenes codificadas de una segunda capa de escalabilidad que comprende una o más subcapas temporales, dependiendo la segunda capa de escalabilidad en la primera capa de escalabilidad;
    seleccionar (1206) una imagen de acceso de capa en la segunda capa de escalabilidad a partir de las imágenes codificadas de la segunda capa de escalabilidad, en donde la imagen de acceso de capa seleccionada es una imagen de acceso de subcapa temporal por etapas en la subcapa temporal más baja; posibilitando la imagen STSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma subcapa temporal, en donde no se permite interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen STSA, en orden de decodificación;
    ignorar (1208) imágenes codificadas en la segunda capa de escalabilidad antes, en orden de decodificación, de la imagen de acceso de capa seleccionada;
    decodificar (1210) o seleccionar la imagen de acceso de capa seleccionada y las imágenes posteriores, si las hay, en orden de decodificación, en la misma o una subcapa temporal superior.
  16. 16. Un método de codificación de vídeo, comprendiendo el método:
    codificar (750) una primera imagen en una subcapa temporal más baja de una primera capa de escalabilidad que comprende una o más subcapas temporales;
    codificar (752) una segunda imagen en una subcapa temporal más baja de una segunda capa de escalabilidad que comprende una o más subcapas temporales, en donde la primera imagen y la segunda imagen representan el mismo instante de tiempo,
    codificar (754) uno o más primeros elementos de sintaxis, asociados con la primera imagen, con un valor que indica que un tipo de imagen de la primera imagen es diferente de una imagen de step-wise temporal sub-layer access (acceso de subcapa temporal por etapas - STSA), permitiendo la imagen STSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma subcapa temporal, en donde no se permite la interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen STSA, en orden de decodificación;
    codificar (756) uno o más segundos elementos de sintaxis, asociados con la segunda imagen, con un valor que indica que un tipo de imagen de la segunda imagen es una imagen de acceso de subcapa temporal por etapas; y
    codificar (758) al menos una tercera imagen en la segunda capa de escalabilidad y en una subcapa temporal más alta que la subcapa temporal más baja.
  17. 17. El método según la reivindicación 16, en donde la imagen de acceso de subcapa temporal por etapas proporciona un punto de acceso para la inicialización por capas de la decodificación de un flujo de bits con una o más subcapas temporales.
  18. 18. El método según la reivindicación 16 o 17, en donde la imagen de acceso de subcapa temporal por etapas es una imagen de acceso de subcapa temporal por etapas en la subcapa temporal más baja.
  19. 19. El método según cualquiera de las reivindicaciones 16-18, comprendiendo el método además:
    señalizar la imagen de acceso de subcapa temporal por etapas en el flujo de bits mediante un tipo de unidad NAL específico o en un mensaje SEI que define el número de subcapas decodificables.
  20. 20. Un aparato de codificación de vídeo, comprendiendo el aparato:
    medios para codificar (750) una primera imagen en una subcapa temporal más baja una primera capa de escalabilidad que comprende una o más subcapas temporales;
    medios para codificar (752) una segunda imagen en una subcapa temporal más baja una segunda capa de escalabilidad que comprende una o más subcapas temporales, en donde la primera imagen y la segunda imagen representan el mismo instante de tiempo,
    medios para codificar (754) uno o más primeros elementos de sintaxis, asociados con la primera imagen, con un valor que indica que un tipo de imagen de la primera imagen es diferente de una imagen de acceso de subcapa temporal por etapas, permitiendo la imagen STSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma subcapa temporal, en donde no se permite la interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen STSA, en orden de decodificación;
    medios para codificar (756) uno o más segundos elementos de sintaxis, asociados con la segunda imagen, con un valor que indica que un tipo de imagen de la segunda imagen es una imagen de acceso de subcapa temporal por etapas; y
    medios para codificar (758) al menos una tercera imagen en la segunda capa de escalabilidad y en una subcapa temporal más alta que la subcapa temporal más baja.
    El aparato según la reivindicación 20, en donde la imagen de acceso de subcapa temporal por etapas proporciona un punto de acceso para la inicialización por capas de la decodificación de un flujo de bits con una o más subcapas temporales.
    El aparato según la reivindicación 20 o 21, en donde la imagen de acceso de subcapa temporal por etapas es una imagen de acceso de subcapa temporal por etapas en la subcapa temporal más baja.
    El aparato según cualquiera de las reivindicaciones 20-22, que comprende además:
    Medios para señalizar la imagen de acceso de subcapa temporal por etapas en el flujo de bits mediante un tipo de unidad NAL específico o en un mensaje SEI que define el número de subcapas decodificables.
    Un medio de almacenamiento legible por ordenador almacenado con código en el mismo para su uso por un aparato, que cuando se ejecuta por un procesador, hace que el aparato realice:
    codificar (750) una primera imagen en una subcapa temporal más baja una primera capa de escalabilidad que comprende una o más subcapas temporales;
    codificar (752) una segunda imagen en una subcapa temporal más baja una segunda capa de escalabilidad que comprende una o más subcapas temporales, en donde la primera imagen y la segunda imagen representan el mismo instante de tiempo,
    codificar (754) uno o más primeros elementos de sintaxis, asociados con la primera imagen, con un valor que indica que un tipo de imagen de la primera imagen es diferente de una imagen de acceso de subcapa temporal por etapas, permitiendo la imagen STSA la decodificación de imágenes posteriores, en orden de decodificación, en la misma subcapa temporal, en donde no se permite la interpredicción de ninguna imagen en la misma subcapa temporal antes de dicha imagen STSA, en orden de decodificación;
    codificar (756) uno o más segundos elementos de sintaxis, asociados con la segunda imagen, con un valor que indica que un tipo de imagen de la segunda imagen es una imagen de acceso de subcapa temporal por etapas; y
    codificar (758) al menos una tercera imagen en la segunda capa de escalabilidad y en una subcapa temporal más alta que la subcapa temporal más baja.
ES15765714T 2014-03-17 2015-03-16 Un aparato, un método y un programa informático para codificación y decodificación de vídeo Active ES2913983T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201461954306P 2014-03-17 2014-03-17
PCT/FI2015/050171 WO2015140401A1 (en) 2014-03-17 2015-03-16 An apparatus, a method and a computer program for video coding and decoding

Publications (1)

Publication Number Publication Date
ES2913983T3 true ES2913983T3 (es) 2022-06-07

Family

ID=54143796

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15765714T Active ES2913983T3 (es) 2014-03-17 2015-03-16 Un aparato, un método y un programa informático para codificación y decodificación de vídeo

Country Status (8)

Country Link
US (3) US10334260B2 (es)
EP (1) EP3120553B1 (es)
KR (1) KR102224703B1 (es)
CN (1) CN106464893B (es)
CA (1) CA2942838C (es)
ES (1) ES2913983T3 (es)
RU (1) RU2725656C2 (es)
WO (1) WO2015140401A1 (es)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109982078B (zh) * 2012-12-14 2023-03-28 Lg 电子株式会社 编码视频的方法、解码视频的方法以及使用其的装置
GB2516224A (en) 2013-07-11 2015-01-21 Nokia Corp An apparatus, a method and a computer program for video coding and decoding
GB2516824A (en) 2013-07-23 2015-02-11 Nokia Corp An apparatus, a method and a computer program for video coding and decoding
US20150036738A1 (en) * 2013-07-30 2015-02-05 Texas Instruments Incorporated Method and apparatus for real-time sao parameter estimation
WO2015140401A1 (en) * 2014-03-17 2015-09-24 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
KR20150110295A (ko) * 2014-03-24 2015-10-02 주식회사 케이티 멀티 레이어 비디오 신호 인코딩/디코딩 방법 및 장치
US9402083B2 (en) * 2014-04-24 2016-07-26 Vidyo, Inc. Signaling conformance points using profile space
WO2015168581A1 (en) * 2014-05-01 2015-11-05 Arris Enterprises, Inc. Reference layer and scaled reference layer offsets for scalable video coding
US20170134742A1 (en) * 2014-06-18 2017-05-11 Sharp Kabushiki Kaisha Slice type and decoder conformance
US10091532B2 (en) * 2014-06-26 2018-10-02 Qualcomm Incorporated Bitstream conformance constraints in scalable video coding
GB2531271A (en) * 2014-10-14 2016-04-20 Nokia Technologies Oy An apparatus, a method and a computer program for image sequence coding and decoding
GB2538997A (en) * 2015-06-03 2016-12-07 Nokia Technologies Oy A method, an apparatus, a computer program for video coding
FI20165115A (fi) * 2016-02-17 2017-08-18 Nokia Technologies Oy Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten
GB2547934B (en) * 2016-03-03 2021-07-07 V Nova Int Ltd Adaptive video quality
US11336909B2 (en) * 2016-12-27 2022-05-17 Sony Corporation Image processing apparatus and method
US10602239B2 (en) * 2017-03-23 2020-03-24 Mediatek Inc. Method and apparatus for track composition
GB2560921B (en) * 2017-03-27 2020-04-08 Canon Kk Method and apparatus for encoding media data comprising generated content
US20180352240A1 (en) * 2017-06-03 2018-12-06 Apple Inc. Generalized Temporal Sub-Layering Frame Work
DE102017117859A1 (de) * 2017-08-07 2019-02-07 Osram Opto Semiconductors Gmbh Verfahren zum Betreiben einer autostereoskopischen Anzeigevorrichtung und autostereoskopische Anzeigevorrichtung
US10645380B2 (en) * 2018-07-09 2020-05-05 Tencent America LLC Method and apparatus for video coding
US10375416B1 (en) * 2018-09-05 2019-08-06 Tencent America LLC Segment types in video coding
MX2021010337A (es) * 2019-02-27 2021-09-28 Huawei Tech Co Ltd Un codificador, un decodificador y metodos correspondientes.
KR102311046B1 (ko) 2019-03-11 2021-10-12 돌비 레버러토리즈 라이쎈싱 코오포레이션 프레임 레이트 스케일러블 비디오 코딩
US11166038B2 (en) * 2019-06-20 2021-11-02 Tencent America LLC Method for support of scalability with adaptive picture resolution
US11539957B2 (en) * 2019-06-20 2022-12-27 Tencent America LLC Layered random access with reference picture resampling
CN116233436A (zh) * 2019-06-20 2023-06-06 腾讯美国有限责任公司 视频解码方法、设备和计算机可读存储介质
KR20220029715A (ko) * 2019-07-04 2022-03-08 인터디지털 브이씨 홀딩스 프랑스 에스에이에스 볼류메트릭 데이터 처리
EP4011079A1 (en) * 2019-08-06 2022-06-15 Dolby Laboratories Licensing Corporation Canvas size scalable video coding
KR20220042125A (ko) 2019-08-10 2022-04-04 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 서브픽처 디코딩에서의 버퍼 관리
WO2021061391A1 (en) * 2019-09-24 2021-04-01 Futurewei Technologies, Inc. Hrd parameters for layer based conformance testing
US11936880B2 (en) 2019-09-27 2024-03-19 Tencent America LLC Method for signaling output subpicture layer set
JP7322290B2 (ja) 2019-10-02 2023-08-07 北京字節跳動網絡技術有限公司 ビデオビットストリームにおけるサブピクチャシグナリングのための構文
CN117676135A (zh) 2019-10-18 2024-03-08 北京字节跳动网络技术有限公司 子图片与环路滤波之间的相互影响
US20230051024A1 (en) * 2019-12-12 2023-02-16 Lg Electronics Inc. Methods and device for signaling image information
WO2021164736A1 (en) * 2020-02-19 2021-08-26 Mediatek Inc. Constraints for inter-layer referencing
BR112022018206A2 (pt) 2020-03-19 2022-10-25 Bytedance Inc Método e aparelho de processamento de vídeo, método de armazenamento de um fluxo contínuo de bits de um vídeo, e, mídia legível por computador
WO2021188810A1 (en) 2020-03-20 2021-09-23 Bytedance Inc. Constraints on reference picture lists for subpictures
JP2023522224A (ja) 2020-04-20 2023-05-29 バイトダンス インコーポレイテッド 参照ピクチャリスト上の制約
WO2021246841A1 (ko) * 2020-06-06 2021-12-09 엘지전자 주식회사 레이어 정보 시그널링 기반 영상 코딩 장치 및 방법
CN112468818B (zh) * 2021-01-22 2021-06-29 腾讯科技(深圳)有限公司 视频通信的实现方法及装置、介质和电子设备
US20240056591A1 (en) * 2021-04-12 2024-02-15 Lg Electronics Inc. Method for image coding based on signaling of information related to decoder initialization
WO2022246999A1 (en) * 2021-05-26 2022-12-01 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Multiview video encoding and decoding
WO2024059998A1 (en) * 2022-09-20 2024-03-28 Qualcomm Incorporated Variable intra-frame (i-frame) time interval and group of picture (gop) length for video coding

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2007012564A (es) * 2005-04-13 2007-11-15 Nokia Corp Codificacion, almacenamiento y senalizacion de informacion de escalabilidad.
JP4950206B2 (ja) 2005-10-11 2012-06-13 ノキア コーポレイション 効率的なスケーラブルストリーム適応のためのシステム及び方法
CN101127900A (zh) * 2006-08-17 2008-02-20 上海乐金广电电子有限公司 利用基本层的图像信号的编码/解码方法及装置
CN101690229A (zh) 2007-06-26 2010-03-31 诺基亚公司 用于指示时间层切换点的系统和方法
US9866877B2 (en) * 2011-03-08 2018-01-09 Cox Communications, Inc. Transparent scalable video coding
EP2805520A1 (en) * 2012-01-20 2014-11-26 Telefonaktiebolaget LM Ericsson (Publ) Sub-bitstream extraction
EP2865177B1 (en) * 2012-06-25 2018-10-03 Huawei Technologies Co., Ltd. Method for signaling a gradual temporal layer access picture
JP6050488B2 (ja) * 2012-07-06 2016-12-21 サムスン エレクトロニクス カンパニー リミテッド ランダムアクセスのためのマルチレイヤビデオ符号化方法及びその装置、並びにランダムアクセスのためのマルチレイヤビデオ復号化方法及びその装置
US9161039B2 (en) * 2012-09-24 2015-10-13 Qualcomm Incorporated Bitstream properties in video coding
US10038899B2 (en) * 2012-10-04 2018-07-31 Qualcomm Incorporated File format for video data
US9674533B2 (en) * 2013-04-05 2017-06-06 Qualcomm Incorporated Picture alignments in multi-layer video coding
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
US20160261878A1 (en) * 2013-10-11 2016-09-08 Sharp Kabushiki Kaisha Signaling information for coding
WO2015053601A1 (ko) * 2013-10-12 2015-04-16 삼성전자 주식회사 멀티 레이어 비디오 부호화 방법 및 그 장치, 멀티 레이어 비디오 복호화 방법 및 그 장치
MX352916B (es) * 2013-10-14 2017-12-14 Ericsson Telefon Ab L M Alineación de conteo de orden de imágenes en video escalable.
WO2015140401A1 (en) * 2014-03-17 2015-09-24 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding

Also Published As

Publication number Publication date
CN106464893A (zh) 2017-02-22
USRE49887E1 (en) 2024-03-26
US10681360B2 (en) 2020-06-09
RU2725656C2 (ru) 2020-07-03
EP3120553B1 (en) 2022-02-23
RU2016138687A (ru) 2018-04-18
CA2942838A1 (en) 2015-09-24
CN106464893B (zh) 2019-12-03
KR20160132992A (ko) 2016-11-21
EP3120553A4 (en) 2017-11-22
US10334260B2 (en) 2019-06-25
EP3120553A1 (en) 2017-01-25
CA2942838C (en) 2019-10-01
WO2015140401A1 (en) 2015-09-24
US20190320192A1 (en) 2019-10-17
KR102224703B1 (ko) 2021-03-09
US20150312580A1 (en) 2015-10-29

Similar Documents

Publication Publication Date Title
ES2913983T3 (es) Un aparato, un método y un programa informático para codificación y decodificación de vídeo
US10863182B2 (en) Apparatus, a method and a computer program for video coding and decoding of a monoscopic picture
CN108702503B (zh) 用于提供视频比特流的方法及装置
US11800131B2 (en) Apparatus, a method and a computer program for video coding and decoding
US9800893B2 (en) Apparatus, a method and a computer program for video coding and decoding
US10284867B2 (en) Apparatus, a method and a computer program for video coding and decoding
ES2895927T3 (es) Un aparato, un método y un programa de ordenador para la codificación y decodificación de vídeo
CA2988107A1 (en) An apparatus, a method and a computer program for video coding and decoding
WO2017140946A1 (en) An apparatus, a method and a computer program for video coding and decoding
WO2017140948A1 (en) An apparatus, a method and a computer program for video coding and decoding
WO2017162911A1 (en) An apparatus, a method and a computer program for video coding and decoding