ES2887368T3 - Derivación de la información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas - Google Patents

Derivación de la información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas Download PDF

Info

Publication number
ES2887368T3
ES2887368T3 ES15717693T ES15717693T ES2887368T3 ES 2887368 T3 ES2887368 T3 ES 2887368T3 ES 15717693 T ES15717693 T ES 15717693T ES 15717693 T ES15717693 T ES 15717693T ES 2887368 T3 ES2887368 T3 ES 2887368T3
Authority
ES
Spain
Prior art keywords
layer
image
video
current
unit
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
ES15717693T
Other languages
English (en)
Inventor
Fnu Hendry
Adarsh Krishnan Ramasubramonian
Ye-Kui Wang
Vadim Seregin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2887368T3 publication Critical patent/ES2887368T3/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un aparato para codificar información de video según la extensión de codificación de video escalable de HEVC, que comprende: una memoria para almacenar información de video asociada con una o más capas; y un procesador de hardware acoplado operativamente a la memoria y configurado para: codificar una unidad de acceso actual (AU) en un flujo de bits que incluye una pluralidad de capas, la pluralidad de capas incluye una capa de referencia que tiene un primer identificador de capa, ID, elemento de sintaxis nuh_capa_id y al menos una capa de mejora correspondiente que tiene un segundo elemento de sintaxis de ID de capa nuh_capa_id que es mayor que el ID de la primera capa, en donde la AU actual puede incluir más de una unidad de capa de abstracción de red (NAL) de final de secuencia (EOS); en la AU actual, codificar una primera unidad de NAL de EOS asociada con la capa de referencia, la primera unidad de NAL de EOS tiene el mismo primer elemento de sintaxis de ID de capa que la capa de referencia; en la AU actual, codificar una segunda unidad de NAL de EOS asociada con la capa de mejora, la segunda unidad de NAL de EOS tiene el mismo segundo ID de capa que la capa de mejora, en donde cada capa puede tener su propia unidad de NAL de EOS y una unidad de NAL de EOS en una capa en particular solo es aplicable a esa capa, en donde una imagen que está en una AU posterior a la AU actual y tiene el mismo ID de capa que la primera unidad de NAL de EOS es una imagen de punto de acceso intraaleatorio (IRAP) seleccionada de una o más de una imagen de actualización de decodificación instantánea (IDR), una imagen de acceso a enlace roto (BLA) o una imagen de acceso aleatorio limpio (CRA); y en donde una imagen que está en una AU posterior a la AU actual y tiene el mismo ID de capa que la segunda unidad de NAL de EOS es una imagen de IRAP seleccionada entre una o más de una imagen de IDR, una imagen de BLA o una imagen de CRA; codificar la AU posterior a la AU actual basándose en la restricción de un primer SinRaslSalidaIndicador de la primera imagen e IRAP para que sea igual a 1 en respuesta a (i) la AU actual que contiene la primera unidad de NAL de EOS que tiene la primera ID de capa y (ii) la siguiente AU que contiene una primera imagen de IRAP que tiene el primer ID de capa; SinRaslSalidaIndicador indica que las imágenes principales omitidas de acceso aleatorio (RASL) no se emitirán si se establecen en 1 y que las imágenes de RASL se emitirán si se establecen en 0; y restringir un segundo SinRaslSalidaIndicador de la segunda imagen de IRAP para que sea igual a 1 en respuesta a (i) la AU actual que contiene la segunda unidad de NAL de EOS que tiene el segundo ID de capa y (ii) la AU subsiguiente que contiene una segunda imagen de IRAP que tiene el segundo ID; en donde la primera unidad de NAL de EOS es posterior a una o más unidades de capa de codificación de video (VCL) en la AU actual que tienen el mismo ID de capa o un ID de capa inferior que la capa de referencia, y en donde la primera unidad de NAL de EOS precede a cualquier unidad NAL de final de flujo de bits en la AU actual; en donde la segunda unidad de NAL de EOS es posterior a una o más unidades de VCL en la AU actual que tienen el mismo ID de capa o un ID de capa más bajo que la capa de mejora, y en donde la segunda unidad de NAL de EOS precede a cualquier unidad de NAL de final de flujo de bits en la AU actual.

Description

DESCRIPCIÓN
Derivación de la información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas CAMPO TÉCNICO
Esta divulgación se refiere al campo de la codificación y compresión de video, incluida la codificación de video de una sola capa y la codificación de video de múltiples capas. La codificación de video de múltiples capas puede incluir codificación de video escalable, codificación de video multivista, codificación de video tridimensional (3D), etc.
ANTECEDENTES
Las capacidades de video digital se pueden incorporar en una amplia gama de dispositivos, incluidos televisores digitales, sistemas de transmisión digital directa, sistemas de transmisión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos celulares o satelitales, dispositivos de video teleconferencia y similares. Los dispositivos de video digital implementan técnicas de compresión de video, como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de video avanzada (AVC), el Estándar de codificación de video de alta eficiencia (HEVC) y extensiones de dichos estándares. Los dispositivos de video pueden transmitir, recibir, codificar, decodificar y/o almacenar información de video digital de manera más eficiente implementando tales técnicas de codificación de video.
Las técnicas de compresión de video realizan predicciones espaciales (intraimagen) y/o predicciones temporales (interimagen) para reducir o eliminar la redundancia inherente a las secuencias de video. Para la codificación de video basada en bloques, un segmento de video (por ejemplo, una trama de video, una parte de una trama de video, etc.) se puede dividir en bloques de video, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de video en un segmento intracodificado (I) de una imagen se codifican utilizando la predicción espacial con respecto a las muestras de referencia en los bloques vecinos en la misma imagen. Los bloques de video en un segmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse tramas y las imágenes de referencia pueden denominarse tramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para la codificación de un bloque. Los datos residuales representan las diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica según un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica según un modo de intracodificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformación, lo que resulta en coeficientes de transformación residuales, que luego pueden cuantificarse. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden escanear para producir un vector unidimensional de coeficientes de transformación, y se puede aplicar codificación de entropía para lograr una compresión aún mayor.
La codificación de video escalable (SVC) se refiere a la codificación de video en la que se utilizan una capa base (BL), a veces denominada capa de referencia (RL), y una o más capas de mejora escalables (EL). En SVC, la capa base puede transportar datos de video con un nivel básico de calidad. Una o más capas de mejora pueden transportar datos de video adicionales para admitir, por ejemplo, niveles más altos espaciales, temporales y/o de señal a ruido (SNR). Las capas de mejora pueden definirse en relación con una capa previamente codificada. Por ejemplo, una capa inferior puede servir como BL, mientras que una capa superior puede servir como EL. Las capas intermedias pueden servir como EL o RL, o ambas. Por ejemplo, una capa intermedia (por ejemplo, una capa que no es ni la capa más baja ni la capa más alta) puede ser una EL para las capas debajo de la capa intermedia, como la capa base o cualquier capa de mejora intermedia, y al mismo tiempo sirven como RL para una o más capas de mejora por encima de la capa intermedia. De manera similar, en la extensión multivista o 3D del estándar HEVC, puede haber múltiples vistas, y la información de una vista se puede utilizar para codificar (por ejemplo, codificar o decodificar) la información de otra vista (por ejemplo, estimación de movimiento, predicción de vector de movimiento y/u otras redundancias). Estas técnicas de codificación de video escalables se divulgan en el documento US 2009/161762 A1 (JUN DONG-SAN [KR] ET AL) 25 de junio de 2009 (25-06-2009), Y-K WANG ET AL: "AHG9: Sobre alineaciones entre capas en HEVC 3dV y extensiones escalables", 13. REUNIÓN JCT-VC; 104. REUNIÓN MPEG; 18-04-2013 - 26-04-2013; INCHEON; (EQUIPO CONJUNTO COLABORATIVO SOBRE CODIFICACIÓN DE VIDEO DE ISO/IEC JTC1/SC29/ WG11 E ITU-T SG.16); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, n. ° JCTVC-M0266, 9 de abril de 2013 (09-04-2013), CHO Y ET AL: "MV-HEVC/SHVC HLS: Comentarios sobre el proceso de decodificación general y selección de la operación CPB en la operación HRD", 8. REUNIÓN JCT-3V; 29­ 03-2014 - 04-04-2014; VALENCIA; (EQUIPO COLABORATIVO CONJUNTO SOBRE EL DESARROLLO DE LA EXTENSIÓN DE LA CODIFICACIÓN DE VIDEO 3D DE ISO/IEC JTC1/SC29/WG11 Y UIT-T SG.16); URL: HTTP://PHENIX.INTEVRY.FR/JCT2/' n. ° JCT3V-H0023, 17 de marzo de 2014 (17-03-2014) y CHEN J ET AL: "Borrador de trabajo 1 de SHVC", 12. REUNIÓN JCT-VC; 103. REUNIÓN MPEG; 14-01-2013-23-01-2013; GINEBRA; (EQUIPO COLABORATIVO CONJUNTO SOBRE CODIFICACIÓN DE VIDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL: HTTP:// WFTP3.ITU.INT/AV-ARCH/JCTVCSITE/, n. ° JCTVC-L1008, 20 de marzo de 2013 (20-03-2013).
SUMARIO
Se divulgan un aparato para codificar información de video, un método para codificar información de video y un medio legible por ordenador no transitorio que comprende instrucciones que cuando se ejecutan en un procesador que comprende hardware informático hacen que el procesador lleve a cabo el método según las reivindicaciones. BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1A es un diagrama de bloques que ilustra un sistema de codificación y decodificación de video de ejemplo que puede utilizar las técnicas según los aspectos descritos en la presente divulgación.
La figura 1B es un diagrama de bloques que ilustra otro sistema de codificación y decodificación de video de ejemplo que puede realizar las técnicas según los aspectos descritos en la presente divulgación.
La figura 2A es un diagrama de bloques que ilustra un ejemplo de un codificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación.
La figura 2B es un diagrama de bloques que ilustra un ejemplo de un codificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación.
La figura 3A es un diagrama de bloques que ilustra un ejemplo de un decodificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación.
La figura 3B es un diagrama de bloques que ilustra un ejemplo de un decodificador de video que puede implementar las técnicas según los aspectos descritos en la presente divulgación.
La figura 4 es un diagrama de bloques que ilustra una configuración de ejemplo de imágenes en diferentes capas, según una realización de la presente divulgación.
La figura 5 es un diagrama de flujo que ilustra un método de codificación de información de video, según una realización de la presente divulgación.
La figura 5A es un diagrama de flujo que ilustra un método de codificación de información de video, según una realización de la presente divulgación.
La figura 6 es un diagrama de flujo que ilustra un método de codificación de información de video, según una realización de la presente divulgación.
DESCRIPCIÓN DETALLADA
En general, esta divulgación se refiere a la codificación de una sola capa, así como a la predicción entre capas para la codificación de video escalable en el contexto de códecs de video avanzados, como HEVC (Codificación de video de alta eficiencia). Más específicamente, la presente divulgación se refiere a sistemas y métodos para el rendimiento mejorado de la predicción entre capas en la extensión de codificación de video escalable de HEVC, que puede denominarse SHVC.
En la siguiente descripción, se describen técnicas H.264/Codificación de video avanzada (AVC) relacionadas con determinadas realizaciones; también se analizan el estándar HEVC y las técnicas relacionadas. Si bien ciertas realizaciones se describen en la presente en el contexto de los estándares HEVC y/o H.264, un experto en la técnica puede apreciar que los sistemas y métodos divulgados en la presente pueden ser aplicables a cualquier estándar de codificación de video adecuado. Por ejemplo, las realizaciones divulgadas en la presente pueden aplicarse a uno o más de los siguientes estándares: Unión internacional de telecomunicaciones (UIT) Sector de estandarización de telecomunicaciones (UIT-T) H.261, Organización internacional de estandarización (ISO) y Comisión electrotécnica internacional (IEC) (ISO/IEC) Grupo de expertos en imágenes en movimiento (MPEG) 1 (MPEG-1) visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC), incluidas sus extensiones de codificación de video escalable (SVC) y codificación de video de multivista (MVC).
HEVC generalmente sigue el marco de los estándares de codificación de video anteriores en muchos aspectos. La unidad de predicción en HEVC es diferente de las unidades de predicción (por ejemplo, macrobloque) en ciertos estándares de codificación de video anteriores. De hecho, el concepto de macrobloque no existe en HEVC, como se entiende en ciertos estándares de codificación de video anteriores. Un macrobloque es reemplazado por una estructura jerárquica basada en un esquema de árbol cuaternario, que puede proporcionar una alta flexibilidad, entre otros posibles beneficios. Por ejemplo, dentro del esquema HEVC, se definen tres tipos de bloques, Unidad de codificación (CU), Unidad de predicción (PU) y Unidad de transformación (TU). La CU puede referirse a la unidad básica de división de regiones. La CU puede considerarse análoga al concepto de macrobloque, pero HEVC no restringe el tamaño máximo de las CU y puede permitir la división recursiva en cuatro CU de igual tamaño para mejorar la adaptabilidad del contenido. La PU puede considerarse la unidad básica de inter/intra predicción, y una sola PU puede contener múltiples particiones de formas arbitrarias para codificar eficazmente patrones de imagen irregulares. La TU puede considerarse la unidad básica de transformación. La TU se puede definir independientemente de la PU; sin embargo, el tamaño de una TU puede estar limitado al tamaño de la CU a la que pertenece la TU. Esta separación de la estructura de bloques en tres conceptos diferentes puede permitir que cada unidad se optimice según la función respectiva de la unidad, lo que puede resultar en una eficiencia de codificación mejorada.
Solo con fines ilustrativos, ciertas realizaciones descritas en la presente se describen con ejemplos que incluyen solo dos capas (por ejemplo, una capa inferior como la capa base y una capa superior como la capa de mejora) de datos de video. Una "capa" de datos de video puede referirse generalmente a una secuencia de imágenes que tienen al menos una característica común, como una vista, una velocidad de tramas, una resolución o similares. Por ejemplo, una capa puede incluir datos de video asociados con una vista particular (por ejemplo, perspectiva) de datos de video de múltiples vistas. Como otro ejemplo, una capa puede incluir datos de video asociados con una capa particular de datos de video escalables. Por lo tanto, esta divulgación puede referirse indistintamente a una capa y una vista de datos de video. Es decir, una vista de datos de video puede denominarse una capa de datos de video, y una capa de datos de video puede denominarse vista de datos de video. Además, un códec de múltiples capas (también denominado codificador de video de múltiples capas o codificador-decodificador de múltiples capas) puede referirse conjuntamente a un códec multivista o un códec escalable (por ejemplo, un códec configurado para codificar y/o decodificar datos de vídeo utilizando MV-HEVC, 3D-HEVC, SHVC u otra técnica de codificación de múltiples capas). La codificación y decodificación de video pueden denominarse generalmente codificación de vídeo. Debe entenderse que tales ejemplos pueden ser aplicables a configuraciones que incluyen múltiples capas de base y/o de mejora. Además, para facilitar la explicación, la siguiente descripción incluye los términos "tramas" o "bloques" con referencia a determinadas realizaciones. Sin embargo, estos términos no pretenden ser restrictivos. Por ejemplo, las técnicas descritas a continuación se pueden usar con cualquier unidad de video adecuada, como bloques (por ejemplo, CU, PU, TU, macrobloques, etc.), segmentos, tramas, etc.
Estándares de codificación de video
Una imagen digital, como una imagen de video, una imagen de televisión, una imagen fija o una imagen generada por una grabadora de video o una computadora, puede consistir en píxeles o muestras dispuestas en líneas horizontales y verticales. El número de píxeles en una sola imagen suele ser de decenas de miles. Cada píxel normalmente contiene información de luminancia y crominancia. Sin compresión, la gran cantidad de información que se transmite desde un codificador de imágenes a un decodificador de imágenes haría imposible la transmisión de imágenes en tiempo real. Para reducir la cantidad de información a transmitir, se han desarrollado varios métodos de compresión diferentes, como los estándares JPEG, MPEG y H.263.
Los estándares de codificación de video incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC), incluidas sus extensiones SVC y MVC.
Además, un nuevo estándar de codificación de video, a saber, codificación de video de alta eficiencia (HEVC), es desarrollado por el equipo de colaboración conjunta sobre codificación de video (JCT-VC) del grupo de expertos en codificación de video ITU-T (VCEG) y el grupo de expertos en imágenes en movimiento ISO/IEC (MPEG). La cita completa para el borrador HEVC 10 es el documento JCTVC-L1003, Bross et al., "Borrador 10 de la especificación de texto de codificación de video de alta eficiencia (HEVC)" Equipo colaborativo conjunto sobre codificación de video (JCTVC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12a reunión: Ginebra, Suiza, 14 de enero de 2013 al 23 de enero de 2013. La extensión de multivista para HEVC, a saber, MV-HEVC, y la extensión escalable para HEVC, denominada SHVC, también están siendo desarrolladas por JCT-3V (Equipo colaborativo conjunto ITU-T/ISO/IEC sobre el desarrollo de extensiones de codificación de video 3D) y JCT-VC, respectivamente.
Información general
En un flujo de bits de múltiples capas, una capa puede incluir una o más subcapas temporales, y cada subcapa temporal puede tener un identificador (ID) asociado llamado ID temporal. En general, las imágenes que tienen un ID temporal más alto que la imagen actual no se utilizan como imágenes de referencia para la imagen actual. El indicador sps_temporal_id_anidamiento_indicador puede indicar además si una imagen particular que tiene un ID temporal igual o menor que el ID temporal de la imagen actual puede usarse como imagen de referencia cuando existe otra imagen que tiene un ID temporal más bajo que la imagen particular y que sigue a la imagen particular en el orden de decodificación, pero precede a la imagen actual en el orden de decodificación.
Las primeras versiones de SHVC y MV-HEVC (por ejemplo, el borrador de trabajo 5 de SHVC y el borrador de trabajo 7 de MV-HEVC) plantean un conflicto en la derivación de sps_temporal_id_anidamiento_indicador cuando el elemento de sintaxis no está presente en el flujo de bits. En determinadas condiciones, no se puede determinar que el valor del indicador sea 0 o 1. Para abordar estos y otros desafíos, las técnicas según ciertos aspectos pueden definir cómo derivar el valor de sps_temporal_id_anidamiento_indicador en tales condiciones (por ejemplo, establecer precedencia en el proceso de derivación) para eliminar el conflicto.
Además, en HEVC, una AU contiene una imagen de una sola capa y, a menudo, el concepto de imagen y AU se pueden utilizar indistintamente. Por el contrario, en SHVC y MV-HEVC, una AU puede contener imágenes de más de una capa, lo que puede hacer que sea incierto si una variable o un indicador deben asociarse con una capa en particular (por ejemplo, la capa base) o deben aplicarse a toda la UA. Un ejemplo de una variable de este tipo es ManejarCraComoBlaIndicador. La variable ManejarCraComoBlaIndicador puede indicar si se debe manejar una imagen de CRA como una imagen de BLA. Las primeras versiones de SHVC y MV-HEVC hacen que no quede claro si ManejarCraComoBlaIndicador está asociado solo con la capa base o con la AU. Para abordar estos y otros desafíos, las técnicas según ciertos aspectos también pueden definir si ManejarCraComoBlaIndicador debe asociarse solo con la capa base o con la AU.
Además, como se explicó anteriormente con respecto a ManejarCraComoBlaIndicador, debido a que una AU puede tener imágenes de más de una capa en SHVC y MV-HEVC, puede resultar incierto si una unidad de NAL de EOS debe asociarse con una capa en particular (por ejemplo, la capa base) o debería aplicarse a toda la UA. La unidad de NAL de EOS puede indicar el final de una secuencia de video codificada (CVS) y generalmente va seguida de una imagen de IRAP, como una imagen de IDR, una imagen de BLA o una imagen de CRA. Las primeras versiones de SHVC y MV-HEVC no dejan claro si la unidad de NAL de EOS está asociada solo con la capa base o con la AU. Para abordar estos y otros desafíos, las técnicas según ciertos aspectos pueden definir si la unidad de NAL de EOS debe asociarse solo con la capa base o con la AU.
Sistema de codificación de video
Varios aspectos de los nuevos sistemas, aparatos y métodos se describen con mayor detalle a continuación con referencia a los dibujos adjuntos. Sin embargo, esta divulgación puede realizarse de muchas formas diferentes y no debe interpretarse como limitada a ninguna estructura o función específica presentada a lo largo de esta divulgación. Por el contrario, estos aspectos se proporcionan manera que esta divulgación sea exhaustiva y completa, y transmitirá completamente el alcance de la divulgación a los expertos en la técnica. Con base en las enseñanzas de la presente, un experto en la técnica debe apreciar que el alcance de la divulgación está destinado a cubrir cualquier aspecto de los nuevos sistemas, aparatos y métodos divulgados en la presente, ya sea implementado independientemente o en combinación con cualquier otro aspecto de la presente divulgación. Por ejemplo, se puede implementar un aparato o se puede llevar a la práctica un método usando cualquier número de los aspectos establecidos en la presente. Además, el alcance de la presente divulgación está destinado a cubrir tal aparato o método que se practica usando otra estructura, funcionalidad o estructura y funcionalidad además de los diversos aspectos de la presente divulgación expuestos en la presente o distintos de ellos. Debe entenderse que cualquier aspecto divulgado en la presente puede estar incluido en uno o más elementos de una reivindicación.
Aunque en la presente se describen aspectos particulares, muchas variaciones y permutaciones de estos aspectos están dentro del alcance de la divulgación. Aunque se mencionan algunos beneficios y ventajas de los aspectos preferidos, el alcance de la divulgación no pretende limitarse a beneficios, usos u objetivos particulares. Más bien, se pretende que los aspectos de la divulgación sean ampliamente aplicables a diferentes tecnologías inalámbricas, configuraciones de sistemas, redes y protocolos de transmisión, algunos de los cuales se ilustran a modo de ejemplo en las figuras y en la siguiente descripción de los aspectos preferidos. La descripción detallada y los dibujos son meramente ilustrativos de la divulgación más que limitativos, el alcance de la divulgación está definido por las reivindicaciones adjuntas y equivalentes de las mismas.
Los dibujos adjuntos ilustran ejemplos. Los elementos indicados por números de referencia en los dibujos adjuntos corresponden a elementos indicados por números de referencia similares en la siguiente descripción. En esta divulgación, los elementos que tienen nombres que comienzan con palabras ordinales (por ejemplo, "primero", "segundo", "tercero", etc.) no implican necesariamente que los elementos tengan un orden particular. Más bien, estas palabras ordinales se utilizan meramente para referirse a diferentes elementos de un tipo igual o similar.
La figura 1A es un diagrama de bloques que ilustra un ejemplo del sistema de codificación de video 10 que puede utilizar las técnicas según los aspectos descritos en la presente divulgación. Como se usa en la presente, el término "codificador de video" se refiere genéricamente tanto a codificadores de video como a decodificadores de video. En esta divulgación, los términos "codificación de video" o "codificación" pueden referirse genéricamente a la codificación y decodificación de video. Además de los codificadores de video y los decodificadores de video, los aspectos descritos en la presente solicitud pueden extenderse a otros dispositivos relacionados tales como transcodificadores (por ejemplo, dispositivos que pueden decodificar un flujo de bits y volver a codificar otro flujo de bits) y cajas intermedias (por ejemplo, dispositivos que pueden modificar, transformar y/o manipular de otro modo un flujo de bits).
Como se muestra en la figura 1, el sistema de codificación de video 10 incluye un dispositivo de origen 12 que genera datos de video codificados para ser decodificados en un momento posterior por un dispositivo de destino 14. En el ejemplo de la figura 1A, el dispositivo de origen 12 y el dispositivo de destino 14 constituyen dispositivos separados. Sin embargo, se observa que los dispositivos de origen y destino 12, 14 pueden estar en el mismo dispositivo o ser parte del mismo, como se muestra en el ejemplo de la figura 1B.
Nuevamente con referencia a la figura 1A, el dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender, respectivamente, cualquiera de una amplia gama de dispositivos, que incluyen ordenadores de escritorio, ordenadores portátiles (por ejemplo, ordenadores portátiles), tabletas, decodificadores, aparato telefónico con microteléfono como los denominados teléfonos "inteligentes", los denominadas teclados "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de video o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo de destino 14 puede recibir, a través del enlace 16, los datos de video codificados a decodificar. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de video codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En el ejemplo de la figura 1A, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita datos de video codificados al dispositivo de destino 14 en tiempo real. Los datos de video codificados pueden modularse según un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o cableada, como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, como una red de área local, una red de área amplia o una red global como Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
Alternativamente, los datos codificados pueden salir desde una interfaz de salida 22 a un dispositivo de almacenamiento 31 opcional. De manera similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 31 mediante una interfaz de entrada 28, por ejemplo, del dispositivo de destino 14. El dispositivo de almacenamiento 31 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o de acceso local, tales como un disco duro, memoria rápida, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento 31 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede contener el video codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de video almacenados desde el dispositivo de almacenamiento 31 mediante transmisión o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor de Protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados a la red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de video codificados a través de cualquier conexión de datos estándar, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión de red de área local inalámbrica (WLAN)), una conexión por cable (por ejemplo, una línea de suscriptor digital (DSL), un módem de cable, etc.), o una combinación de ambos que sea adecuada para acceder a los datos de video codificados almacenados en un servidor de archivos. La transmisión de datos de video codificados desde el dispositivo de almacenamiento 31 puede ser una transmisión en continuo, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no se limitan a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de video para respaldar cualquiera de una variedad de aplicaciones multimedia, como transmisiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de video en continuo, por ejemplo, a través de Internet (por ejemplo, transmisión adaptativa dinámica sobre el protocolo de transferencia de hipertexto (HTTP), etc.), codificación de video digital para almacenamiento en un medio de almacenamiento de datos, decodificación de video digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema de codificación de video 10 puede configurarse para admitir transmisión de video unidireccional o bidireccional para admitir aplicaciones tales como transmisión de video, reproducción de video, difusión de video y/o telefonía de video.
En el ejemplo de la figura 1A, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/demodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de video 18 puede incluir una fuente tal como un dispositivo de captura de video, por ejemplo, una cámara de video, un archivo de video que contiene un video capturado previamente, una interfaz de alimentación de video para recibir videos desde un proveedor de contenido de videos y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el video de origen, o una combinación de tales fuentes. Como ejemplo, si la fuente de video 18 es una cámara de video, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los llamados "teléfonos con cámara" o "teléfonos con video", como se ilustra en el ejemplo de la figura 1B. Sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de video en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas.
El video capturado, precapturado o generado por ordenador puede ser codificado por el codificador de video 20. Los datos de video codificados pueden transmitirse al dispositivo de destino 14 a través de la interfaz de salida 22 del dispositivo de origen 12. Los datos de video codificados también pueden (o alternativamente) almacenarse en el dispositivo de almacenamiento 31 para un acceso posterior por el dispositivo de destino 14 u otros dispositivos, para la decodificación y/o reproducción. El codificador de video 20 ilustrado en la figura 1A y 1B pueden comprender el codificador de video 20 ilustrado en la figura 2A, el codificador de video 23 ilustrado en la figura 2B, o cualquier otro codificador de video descrito en la presente.
En el ejemplo de la figura 1A, el dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de video 30 y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 puede recibir los datos de video codificados a través del enlace 16 y/o desde el dispositivo de almacenamiento 31. Los datos de video codificados comunicados a través del enlace 16, o proporcionados en el dispositivo de almacenamiento 31, pueden incluir una variedad de elementos de sintaxis generados por el codificador de video 20 para su uso por un decodificador de video, como el decodificador de video 30, al decodificar los datos de video. Tales elementos de sintaxis pueden incluirse con los datos de video codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos. El decodificador de video 30 ilustrado en la figura 1A y 1B pueden comprender el decodificador de video 30 ilustrado en la figura 3A, el decodificador de video 33 ilustrado en la figura 3B, o cualquier otro decodificador de video descrito en la presente.
El dispositivo de visualización 32 puede estar integrado o ser externo al dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino puede ser un dispositivo de visualización 14. En general, el dispositivo de visualización 32 muestra los datos de video decodificados a un usuario y puede comprender cualquiera de una variedad de dispositivos de visualización tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánica (OLED), u otro tipo de dispositivo de visualización.
En aspectos relacionados, la figura 1B muestra un sistema de codificación y decodificación de video de ejemplo 10' en donde los dispositivos de origen y destino 12, 14 están en un dispositivo 11 o son parte del mismo. El dispositivo 11 puede ser un auricular de teléfono, como un teléfono "inteligente" o similar. El dispositivo 11 puede incluir un dispositivo controlador/procesador 13 opcional en comunicación operativa con los dispositivos de origen y destino 12, 14. El sistema 10' de la figura 1B puede incluir además una unidad de procesamiento de video 21 entre el codificador de video 20 y la interfaz de salida 22. En algunas implementaciones, la unidad de procesamiento de video 21 es una unidad separada, como se ilustra en la figura 1B; sin embargo, en otras implementaciones, la unidad de procesamiento de video 21 puede implementarse como una parte del codificador de video 20 y/o el dispositivo procesador/controlador 13. El sistema 10' también puede incluir un rastreador opcional 29, que puede rastrear un objeto de interés en una secuencia de video. El objeto o interés que se va a rastrear puede segmentarse mediante una técnica descrita en relación con uno o más aspectos de la presente divulgación. En aspectos relacionados, el seguimiento puede ser realizado por el dispositivo de visualización 32, solo o junto con el rastreador 29. El sistema 10' de la figura 1B, y sus componentes, son por lo demás similares al sistema 10 de la figura 1A y componentes del mismo.
El codificador de video 20 y el decodificador de video 30 pueden funcionar según un estándar de compresión de video, como el HEVC, y pueden ajustarse a un modelo de prueba HEVC (HM). Alternativamente, el codificador de video 20 y el decodificador de video 30 pueden funcionar según otros estándares de propiedad o de la industria, como el estándar ITU-T H.264, también conocido como MPEG-4, Parte 10, AVC, o extensiones de tales estándares. Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación particular. Otros ejemplos de estándares de compresión de video incluyen MPEG-2 e ITU-T H.263.
Aunque no se muestra en los ejemplos de las figuras 1A y 1B, el codificador de video 20 y el decodificador de video 30 pueden estar integrados cada uno con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro hardware y software, para manejar la codificación de audio y video en un flujo de datos común o flujos de datos separados. Si corresponde, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo multiplexor ITU H.223 u otros protocolos como el protocolo de datagramas de usuario (UDP). El codificador de video 20 y el decodificador de video 30 pueden implementarse cada uno como cualquiera de una variedad de circuitos de codificador adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, microprograma o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador adecuado y no transitorio y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada codificador de video 20 y decodificador de video 30 se puede incluir en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CÓDEC) en un dispositivo respectivo.
Proceso de codificación de video
Como se mencionó brevemente con anterioridad, el codificador de video 20 codifica datos de video. Los datos de video pueden comprender una o más imágenes. Cada una de las imágenes es una imagen fija que forma parte de un video. En algunos casos, una imagen puede denominarse "trama" de video. Cuando el codificador de video 20 codifica los datos de video, el codificador de video 20 puede generar un flujo de bits. El flujo de bits puede incluir una secuencia de bits que forman una representación codificada de los datos de video. El tren de bits puede incluir imágenes codificadas y datos asociados. Una imagen codificada es una representación codificada de una imagen. Para generar el flujo de bits, el codificador de video 20 puede realizar operaciones de codificación en cada imagen en los datos de video. Cuando el codificador de video 20 realiza operaciones de codificación en las imágenes, el codificador de video 20 puede generar una serie de imágenes codificadas y datos asociados. Los datos asociados pueden incluir conjuntos de parámetros de video (VPS), conjuntos de parámetros de secuencia (SPS), conjuntos de parámetros de imagen (PPS), conjuntos de parámetros de adaptación (APS) y otras estructuras de sintaxis. Un SPS puede contener parámetros aplicables a cero o más secuencias de imágenes. Un PPS puede contener parámetros aplicables a cero o más imágenes. Un APS puede contener parámetros aplicables a cero o más imágenes. Los parámetros en un APS pueden ser parámetros que tienen más probabilidades de cambiar que los parámetros en un PPS.
Para generar una imagen codificada, el codificador de video 20 puede dividir una imagen en bloques de video de igual tamaño. Un bloque de video puede ser una matriz bidimensional de muestras. Cada uno de los bloques de video está asociado con un bloque de árbol. En algunos casos, un bloque de árbol puede denominarse unidad de codificación más grande (LCU). Los bloques de árbol de HEVC pueden ser ampliamente análogos a los macrobloques de estándares anteriores, como H.264/AVC. Sin embargo, un bloque de árbol no está necesariamente limitado a un tamaño particular y puede incluir una o más unidades de codificación (CU). El codificador de video 20 puede usar la partición de árbol cuaternario para dividir los bloques de video de los bloques de árbol en bloques de video asociados con las CU, de ahí el nombre "bloques de árbol".
En algunos ejemplos, el codificador de video 20 puede dividir una imagen en una pluralidad de segmentos. Cada uno de los segmentos puede incluir un número entero de CU. En algunos casos, una segmento comprende un número entero de bloques de árboles. En otros casos, el límite de un segmento puede estar dentro de un bloque de árbol.
Como parte de llevar a cabo una operación de codificación en una imagen, el codificador de video 20 puede realizar operaciones de codificación en cada segmento de la imagen. Cuando el codificador de video 20 realiza una operación de codificación en un segmento, el codificador de video 20 puede generar datos codificados asociados con el segmento. Los datos codificados asociados con el segmento pueden denominarse "segmento codificado". Para generar un segmento codificado, el codificador de video 20 puede realizar operaciones de codificación en cada bloque de árbol en un segmento. Cuando el codificador de video 20 realiza una operación de codificación en un bloque de árbol, el codificador de video 20 puede generar un bloque de árbol codificado. El bloque de árbol codificado puede comprender datos que representan una versión codificada del bloque de árbol.
Cuando el codificador de video 20 genera un segmento codificado, el codificador de video 20 puede realizar operaciones de codificación en (por ejemplo, codificar) los bloques de árbol en el segmento según un orden de exploración de trama. Por ejemplo, el codificador de video 20 puede codificar los bloques de árbol del segmento en un orden que proceda de izquierda a derecha a través de una fila superior de bloques de árbol en el segmento, luego de izquierda a derecha a través de la siguiente fila inferior de bloques de árbol, y así sucesivamente hasta el codificador de video 20 haya codificado cada uno de los bloques de árbol en el segmento.
Como resultado de la codificación de los bloques de árboles según el orden de exploración de trama, los bloques de árboles arriba y a la izquierda de un bloque de árboles determinado pueden haber sido codificados, pero los bloques de árboles debajo y a la derecha del bloque de árboles determinado aún no se han codificado. Por consiguiente, el codificador de video 20 puede acceder a la información generada codificando bloques de árbol que se encuentran arriba y a la izquierda del bloque de árbol determinado cuando se codifica el bloque de árbol determinado. Sin embargo, es posible que el codificador de video 20 no pueda acceder a la información generada codificando los bloques de árbol que se encuentran debajo y a la derecha del bloque de árbol determinado cuando se codifica el bloque de árbol determinado.
Para generar un bloque de árbol codificado, el codificador de video 20 puede realizar de forma recursiva una división de árbol cuaternario en el bloque de video del bloque de árbol para dividir el bloque de video en bloques de video progresivamente más pequeños. Cada uno de los bloques de video más pequeños puede estar asociado con una CU diferente. Por ejemplo, el codificador de video 20 puede dividir el bloque de video de un bloque de árbol en cuatro subbloques de igual tamaño, dividir uno o más de los subbloques en cuatro sub- subbloques de igual tamaño, y así sucesivamente. Una CU dividida puede ser una CU cuyo bloque de video está dividido en bloques de video asociados con otras CU. Una CU no dividida puede ser una CU cuyo bloque de video no está dividido en bloques de video asociados con otras CU.
Uno o más elementos de sintaxis en el flujo de bits pueden indicar un número máximo de veces que el codificador de video 20 puede dividir el bloque de video de un bloque de árbol. Un bloque de video de una CU puede tener forma cuadrada. El tamaño del bloque de video de una Cu (por ejemplo, el tamaño de la CU) puede variar de 8x8 píxeles hasta el tamaño de un bloque de video de un bloque de árbol (por ejemplo, el tamaño del bloque de árbol) con un máximo de 64x64 píxeles o superior.
El codificador de video 20 puede realizar operaciones de codificación (por ejemplo, codificar) en cada CU de un bloque de árbol según un orden de exploración z. En otras palabras, el codificador de video 20 puede codificar una CU superior izquierda, una CU superior derecha, una CU inferior izquierda y luego una CU inferior derecha, en ese orden. Cuando el codificador de video 20 realiza una operación de codificación en una CU dividida, el codificador de video 20 puede codificar las CU asociadas con subbloques del bloque de video de la CU dividida según el orden de exploración z. En otras palabras, el codificador de video 20 puede codificar una CU asociada con un subbloque superior izquierdo, una CU asociada con un subbloque superior derecho, una CU asociada con un subbloque inferior izquierdo y luego una CU asociada con un subbloque inferior derecho, en ese orden.
Como resultado de la codificación de las CU de un bloque de árbol según un orden de exploración z, se pueden haber codificado las CU de arriba, arriba y hacia la izquierda, arriba y hacia la derecha, izquierda y abajo y hacia la izquierda de una CU determinada. Las CU que se encuentran debajo y a la derecha de la CU determinada aún no se han codificado. Por consiguiente, el codificador de video 20 puede acceder a la información generada codificando algunas CU vecinas a la CU determinada al codificar la CU determinada. Sin embargo, el codificador de video 20 no puede acceder a la información generada codificando otras CU vecinas a la CU determinada al codificar la CU determinada.
Cuando el codificador de video 20 codifica una CU no dividida, el codificador de video 20 puede generar una o más unidades de predicción (PU) para la CU. Cada una de las PU de la CU puede estar asociada con un bloque de video diferente dentro del bloque de video de la CU. El codificador de video 20 puede generar un bloque de video predicho para cada PU de la CU. El bloque de video predicho de una PU puede ser un bloque de muestras. El codificador de video 20 puede usar intrapredicción o interpredicción para generar el bloque de video predicho para una PU.
Cuando el codificador 20 de video usa intrapredicción para generar el bloque de video predicho de una PU, el codificador 20 de video puede generar el bloque de video predicho de la PU basándose en muestras decodificadas de la imagen asociada con la PU. Si el codificador de video 20 usa intrapredicción para generar bloques de video predichos de las PU de una CU, la CU es una CU intrapredicha. Cuando el codificador de video 20 usa la interpredicción para generar el bloque de video predicho de la PU, el codificador de video 20 puede generar el bloque de video predicho de la PU basándose en muestras decodificadas de una o más imágenes distintas de la imagen asociada con la PU. Si el codificador de video 20 usa interpredicción para generar bloques de video predichos de las PU de una CU, la CU es una CU interpredicha.
Además, cuando el codificador de video 20 usa la interpredicción para generar un bloque de video predicho para una PU, el codificador de video 20 puede generar información de movimiento para la PU. La información de movimiento para una PU puede indicar uno o más bloques de referencia de la PU. Cada bloque de referencia de la PU puede ser un bloque de video dentro de una imagen de referencia. La imagen de referencia puede ser una imagen distinta de la imagen asociada con la PU. En algunos casos, un bloque de referencia de una PU también puede denominarse "muestra de referencia" de la PU. El codificador de video 20 puede generar el bloque de video predicho para la PU basándose en los bloques de referencia de la PU.
Después de que el codificador de video 20 genera bloques de video predichos para una o más PU de una CU, el codificador de video 20 puede generar datos residuales para la CU basándose en los bloques de video predichos para las PU de la CU. Los datos residuales para la CU pueden indicar diferencias entre las muestras en los bloques de video predichos para las PU de la CU y el bloque de video original de la CU.
Además, como parte de llevar a cabo una operación de codificación en una CU no dividida, el codificador de video 20 puede realizar divisiones recursivas de árbol cuaternario sobre los datos residuales de la CU para dividir los datos residuales de la CU en uno o más bloques de datos residuales (por ejemplo, bloques de video residuales) asociados con unidades de transformación (TU) de la CU. Cada TU de una CU puede estar asociada con un bloque de video residual diferente.
El codificador de video 20 puede aplicar una o más transformaciones a bloques de video residuales asociados con las TU para generar bloques de coeficientes de transformación (por ejemplo, bloques de coeficientes de transformación) asociados con las TU. Conceptualmente, un bloque de coeficiente de transformación puede ser una matriz bidimensional (2D) de coeficientes de transformación.
Después de generar un bloque de coeficiente de transformación, el codificador de video 20 puede realizar un proceso de cuantificación en el bloque de coeficiente de transformación. La cuantificación generalmente se refiere a un proceso en el que los coeficientes de transformación se cuantifican para posiblemente reducir la cantidad de datos utilizados para representar los coeficientes de transformación, proporcionando una mayor compresión. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformación. Por ejemplo, un coeficiente de transformación de n-bits puede redondearse hacia abajo a un coeficiente de transformación de m-bits durante la cuantificación, donde n es mayor que m.
El codificador de video 20 puede asociar cada CU con un valor de parámetro de cuantificación (QP). El valor de QP asociado con una CU puede determinar cómo el codificador de video 20 cuantifica los bloques de coeficientes de transformación asociados con la CU. El codificador de video 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes de transformación asociados con una CU ajustando el valor de QP asociado con la CU. Después de que el codificador de video 20 cuantifique un bloque de coeficientes de transformación, el codificador de video 20 puede generar conjuntos de elementos de sintaxis que representan los coeficientes de transformación en el bloque de coeficientes de transformación cuantificados. El codificador de video 20 puede aplicar operaciones de codificación de entropía, tales como operaciones de codificación aritmética binaria adaptativa al contexto (CABAC), a algunos de estos elementos de sintaxis. También podrían usarse otras técnicas de codificación de entropía, como la codificación de longitud variable adaptativa de contenido (CAVLC), la codificación de entropía de división de intervalo de probabilidad (PIPE) u otra codificación aritmética binaria.
El flujo de bits generado por el codificador de video 20 puede incluir una serie de unidades de capa de abstracción de red (NAL). Cada una de las unidades de NAL puede ser una estructura sintáctica que contiene una indicación de un tipo de datos en la unidad de NAL y bytes que contienen los datos. Por ejemplo, una unidad de NAL puede contener datos que representan un conjunto de parámetros de video, un conjunto de parámetros de secuencia, un conjunto de parámetros de imagen, un segmento codificado, información de mejora complementaria (SEI), un delimitador de la unidad de acceso, datos de relleno u otro tipo de datos. Los datos en una unidad de NAL pueden incluir varias estructuras de sintaxis.
El decodificador de video 30 puede recibir un flujo de bits generado por el codificador de video 20. El flujo de bits puede incluir una representación codificada de los datos de video codificados por el codificador de video 20. Cuando el decodificador de video 30 recibe el flujo de bits, el decodificador de video 30 puede realizar una operación de análisis sintáctico en el flujo de bits. Cuando el decodificador de video 30 lleva a cabo la operación de análisis sintáctico, el decodificador de video 30 puede extraer elementos de sintaxis del flujo de bits. El decodificador de video 30 puede reconstruir las imágenes de los datos de video basándose en los elementos de sintaxis extraídos del flujo de bits. El proceso para reconstruir los datos de video basándose en los elementos de sintaxis puede ser generalmente recíproco al proceso realizado por el codificador de video 20 para generar los elementos de sintaxis. Después de que el decodificador de video 30 extrae los elementos de sintaxis asociados con una CU, el decodificador de video 30 puede generar bloques de video predichos para las PU de la CU basándose en los elementos de sintaxis. Además, el decodificador de video 30 puede cuantificar de forma inversa los bloques de coeficientes de transformación asociados con las TU de la CU. El decodificador de video 30 puede realizar transformaciones inversas en los bloques de coeficientes de transformación para reconstruir los bloques de video residuales asociados con las TU de la CU. Después de generar los bloques de video predichos y reconstruir los bloques de video residuales, el decodificador de video 30 puede reconstruir el bloque de video de la CU basándose en los bloques de video predichos y los bloques de video residuales. De esta manera, el decodificador de video 30 puede reconstruir los bloques de video de las CU basándose en los elementos de sintaxis en el flujo de bits.
Codificador de video
La figura 2A es un diagrama de bloques que ilustra un ejemplo del codificador de video 20 que puede implementar las técnicas según los aspectos descritos en la presente divulgación. El codificador de video 20 puede configurarse para procesar una sola capa de una trama de video, como para HEVC. Además, el codificador de video 20 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación, incluidos, entre otros, los métodos para inferir SinSalidaDeAnteriorImagenIndicador y los procesos relacionados descritos con mayor detalle anteriormente y a continuación con respecto a las figuras 4 y 5. Como ejemplo, la unidad de procesamiento de predicción 100 puede configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación. En otra realización, el codificador de video 20 incluye una unidad de predicción entre capas 128 opcional que está configurada para realizar cualquiera o todas las técnicas descritas en esta divulgación. En otras realizaciones, la predicción entre capas se puede realizar mediante la unidad de procesamiento de predicciones 100 (por ejemplo, la unidad de interpredicción 121 y/o la unidad de intrapredicción 126), en cuyo caso la unidad 128 de predicción entre capas se puede omitir. Sin embargo, los aspectos de esta divulgación no están tan limitados. En algunos ejemplos, las técnicas descritas en esta divulgación pueden compartirse entre los diversos componentes del codificador de video 20. En algunos ejemplos, de manera adicional o alternativa, un procesador (no mostrado) puede configurarse para realizar alguna o todas las técnicas descritas en esta divulgación.
A efectos explicativos, esta divulgación describe el codificador de video 20 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros estándares o métodos de codificación. El ejemplo representado en la figura 2A es para un códec de una sola capa. Sin embargo, como se describirá adicionalmente con respecto a la figura 2B, algunos o todos los codificadores de video 20 pueden duplicarse para el procesamiento de un códec de múltiples capas.
El codificador de video 20 puede realizar intracodificación e intercodificación de bloques de video dentro de segmentos de video. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el video dentro de una trama o imagen de video determinado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el video dentro de tramas o imágenes adyacentes de una secuencia de video. El intramodo (modo I) puede referirse a cualquiera de varios modos de codificación basados en el espacio. Los intermodos, como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de codificación basados en el tiempo.
En el ejemplo de la figura 2A, el codificador de video 20 incluye una pluralidad de componentes funcionales. Los componentes funcionales del codificador de video 20 incluyen una unidad de procesamiento de predicción 100, una unidad de generación residual 102, una unidad de procesamiento de transformación 104, una unidad de cuantificación 106, una unidad de cuantificación inversa 108, una unidad de transformación inversa 110, una unidad de reconstrucción 112, una unidad de filtro 113, una memoria intermediaria de imágenes decodificadas 114 y una unidad de codificación de entropía 116. La unidad de procesamiento de predicción 100 incluye una unidad de interpredicción 121, una unidad de estimación de movimiento 122, una unidad de compensación de movimiento 124, una unidad de intrapredicción 126 y una unidad de predicción entre capas 128. En otros ejemplos, el codificador de video 20 puede incluir más, menos o diferentes componentes funcionales. Además, la unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 pueden estar muy integradas, pero están representadas en el ejemplo de la figura 2A por separado a fines explicativos.
El codificador de video 20 puede recibir datos de video. El codificador de video 20 puede recibir los datos de video desde varias fuentes. Por ejemplo, el codificador de video 20 puede recibir los datos de video desde la fuente de video 18 (por ejemplo, mostrada en la figura 1A o 1B) u otra fuente. Los datos de video pueden representar una serie de imágenes. Para codificar los datos de video, el codificador de video 20 puede realizar una operación de codificación en cada una de las imágenes. Como parte de llevar a cabo la operación de codificación en una imagen, el codificador de video 20 puede realizar operaciones de codificación en cada segmento de la imagen. Como parte de llevar a cabo una operación de codificación en un segmento, el codificador de video 20 puede realizar operaciones de codificación en bloques de árbol en el segmento.
Como parte de llevar a cabo una operación de codificación en un bloque de árbol, la unidad de procesamiento de predicción 100 puede realizar una partición de árbol cuaternario en el bloque de video del bloque de árbol para dividir el bloque de video en bloques de video progresivamente más pequeños. Cada uno de los bloques de video más pequeños puede estar asociado con una Cu diferente. Por ejemplo, la unidad de procesamiento de predicción 100 puede dividir un bloque de video de un bloque de árbol en cuatro subbloques de igual tamaño, dividir uno o más de los subbloques en cuatro subsubbloques de igual tamaño, y así sucesivamente.
Los tamaños de los bloques de video asociados con las CU pueden variar desde muestras de 8x8 hasta el tamaño del bloque de árbol con un máximo de 64x64 muestras o más. En esta descripción, "NxN" y "N por N" pueden usarse indistintamente para referirse a las dimensiones de muestra de un bloque de video en términos de dimensiones verticales y horizontales, por ejemplo, muestras de 16 x 16 o muestras de 16 x 16. En general, un bloque de video de 16x16 tiene dieciséis muestras en dirección vertical (y = 16) y dieciséis muestras en dirección horizontal (x = 16). Asimismo, un bloque NxN generalmente tiene N muestras en una dirección vertical y N muestras en una dirección horizontal, donde N representa un valor entero no negativo.
Además, como parte de llevar a cabo la operación de codificación en un bloque de árbol, la unidad de procesamiento de predicción 100 puede generar una estructura de datos de árbol cuaternario jerárquico para el bloque de árbol. Por ejemplo, un bloque de árbol puede corresponder a un nodo raíz de la estructura de datos de árbol cuaternario. Si la unidad de procesamiento de predicción 100 divide el bloque de video del bloque de árbol en cuatro subbloques, el nodo raíz tiene cuatro nodos secundarios en la estructura de datos de árbol cuaternario. Cada uno de los nodos secundarios corresponde a una CU asociada con uno de los subbloques. Si la unidad de procesamiento de predicción 100 divide uno de los subbloques en cuatro subbloques, el nodo correspondiente a la CU asociada con el subbloque puede tener cuatro nodos secundarios, cada uno de los cuales corresponde a una CU asociada con uno de las subsubbloques.
Cada nodo de la estructura de datos de árbol cuaternario puede contener datos de sintaxis (por ejemplo, elementos de sintaxis) para el bloque de árbol o CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división que indica si el bloque de video de la CU correspondiente al nodo está particionado (por ejemplo, dividido) en cuatro subbloques. Los elementos de sintaxis para una CU pueden definirse de forma recursiva y pueden depender de si el bloque de video de la CU está dividido en subbloques. Una CU cuyo bloque de video no está dividido puede corresponder a un nodo hoja en la estructura de datos de árbol cuaternario. Un bloque de árbol codificado puede incluir datos basados en la estructura de datos de árbol cuaternario para un bloque de árbol correspondiente.
El codificador de video 20 puede realizar operaciones de codificación en cada CU no dividida de un bloque de árbol. Cuando el codificador de video 20 realiza una operación de codificación en una CU no dividida, el codificador de video 20 genera datos que representan una representación codificada de la CU no dividida.
Como parte de llevar a cabo una operación de codificación en una CU, la unidad de procesamiento de predicción 100 puede dividir el bloque de video de la CU entre una o más PU de la CU. El codificador de video 20 y el decodificador de vídeo 30 pueden admitir varios tamaños de PU. Suponiendo que el tamaño de una CU particular es 2Nx2N, el codificador de video 20 y el decodificador de video 30 pueden admitir tamaños de PU de 2Nx2N o NxN, e interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, nLx2N, nRx2N o similar. El codificador de vídeo 20 y el decodificador de video 30 también pueden admitir particiones asimétricas para tamaños de PU de 2NxnU, 2NxnD, nLx2N, y nRx2N. En algunos ejemplos, la unidad de procesamiento de predicción 100 puede realizar divisiones geométricas para dividir el bloque de video de una CU entre las PU de la CU a lo largo de un límite que no coincide con los lados del bloque de video de la CU en ángulos rectos.
La unidad de interpredicción 121 puede realizar una interpredicción en cada PU de la CU. La interpredicción puede proporcionar compresión temporal. Para realizar la interpredicción en una PU, la unidad de estimación de movimiento 122 puede generar información de movimiento para la PU. La unidad de compensación de movimiento 124 puede generar un bloque de video predicho para la PU basándose en la información de movimiento y muestras decodificadas de imágenes distintas de la imagen asociada con la CU (por ejemplo, imágenes de referencia). En esta divulgación, un bloque de video predicho generado por la unidad de compensación de movimiento 124 puede denominarse bloque de video interpredicho.
Los segmentos pueden ser segmentos I, segmentos P o segmentos B. La unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 pueden realizar diferentes operaciones para una PU de una CU dependiendo de si la PU está en un segmento I, un segmento P o un segmento B. En un segmento I, todas las PU están intrapredichas. Por lo tanto, si la PU está en un segmento I, la unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 no realizan interpredicción en la PU.
Si la PU está en un segmento P, la imagen que contiene la PU se asocia con una lista de imágenes de referencia denominada "lista 0". Cada una de las imágenes de referencia en la lista 0 contiene muestras que pueden usarse para la interpredicción de otras imágenes. Cuando la unidad de estimación de movimiento 122 realiza la operación de estimación de movimiento con respecto a una PU en un segmento P, la unidad de estimación de movimiento 122 puede buscar las imágenes de referencia en la lista 0 para un bloque de referencia para la PU. El bloque de referencia de la PU puede ser un conjunto de muestras, por ejemplo, un bloque de muestras, que se corresponde más estrechamente con las muestras en el bloque de video de la PU. La unidad de estimación de movimiento 122 puede usar una variedad de métricas para determinar qué tan cerca un conjunto de muestras en una imagen de referencia se corresponde con las muestras en el bloque de video de una PU. Por ejemplo, la unidad de estimación de movimiento 122 puede determinar qué tan cerca un conjunto de muestras en una imagen de referencia corresponde a las muestras en el bloque de video de una PU por suma de diferencia absoluta (SAD), suma de diferencia cuadrada (SSD) u otras métricas de diferencia.
Después de identificar un bloque de referencia de una PU en un segmento P, la unidad de estimación de movimiento 122 puede generar un índice de referencia que indica la imagen de referencia en la lista 0 que contiene el bloque de referencia y un vector de movimiento que indica un desplazamiento espacial entre la PU y el bloque de referencia. En varios ejemplos, la unidad de estimación de movimiento 122 puede generar vectores de movimiento con diversos grados de precisión. Por ejemplo, la unidad de estimación de movimiento 122 puede generar vectores de movimiento con una precisión de un cuarto de muestra, precisión de un octavo de muestra u otra precisión de muestra fraccionada. En el caso de la precisión fraccional de la muestra, los valores del bloque de referencia pueden interpolarse a partir de los valores de la muestra de posición entera en la imagen de referencia. La unidad de estimación de movimiento 122 puede emitir el índice de referencia y el vector de movimiento como información de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar un bloque de video predicho de la PU basándose en el bloque de referencia identificado por la información de movimiento de la PU.
Si la PU está en un segmento B, la imagen que contiene la PU puede asociarse con dos listas de imágenes de referencia, denominadas "lista 0" y "lista 1". En algunos ejemplos, una imagen que contiene un segmento B puede asociarse con una combinación de lista que es una combinación de la lista 0 y la lista 1.
Además, si la PU está en un segmento B, la unidad de estimación de movimiento 122 puede realizar una predicción unidireccional o una predicción bidireccional para la PU. Cuando la unidad de estimación de movimiento 122 realiza una predicción unidireccional para la PU, la unidad de estimación de movimiento 122 puede buscar en las imágenes de referencia de la lista 0 o la lista 1 un bloque de referencia para la PU. La unidad de estimación de movimiento 122 puede luego generar un índice de referencia que indica la imagen de referencia en la lista 0 o la lista 1 que contiene el bloque de referencia y un vector de movimiento que indica un desplazamiento espacial entre la PU y el bloque de referencia. La unidad de estimación de movimiento 122 puede emitir el índice de referencia, un indicador de dirección de predicción y el vector de movimiento como la información de movimiento de la PU. El indicador de dirección de predicción puede indicar si el índice de referencia indica una imagen de referencia en la lista 0 o en la lista 1. La unidad de compensación de movimiento 124 puede generar el bloque de video predicho de la PU basándose en el bloque de referencia indicado por la información de movimiento de la PU.
Cuando la unidad de estimación de movimiento 122 realiza una predicción bidireccional para una PU, la unidad de estimación de movimiento 122 puede buscar en las imágenes de referencia en la lista 0 un bloque de referencia para la PU y también puede buscar en las imágenes de referencia en la lista 1 otro bloque de referencia para la PU. La unidad de estimación de movimiento 122 puede luego generar índices de referencia que indican las imágenes de referencia en la lista 0 y la lista 1 que contienen los bloques de referencia y los vectores de movimiento que indican los desplazamientos espaciales entre los bloques de referencia y la PU. La unidad de estimación de movimiento 122 puede emitir los índices de referencia y los vectores de movimiento de la PU como información de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar el bloque de video predicho de la PU basándose en los bloques de referencia indicados por la información de movimiento de la PU.
En algunos casos, la unidad de estimación de movimiento 122 no genera un conjunto completo de información de movimiento para una PU a la unidad de codificación de entropía 116. Más bien, la unidad de estimación de movimiento 122 puede señalar la información de movimiento de una PU con referencia a la información de movimiento de otra PU. Por ejemplo, la unidad de estimación de movimiento 122 puede determinar que la información de movimiento de la PU es suficientemente similar a la información de movimiento de una PU vecina. En este ejemplo, la unidad de estimación de movimiento 122 puede indicar, en una estructura de sintaxis asociada con la PU, un valor que indica al decodificador de video 30 que la PU tiene la misma información de movimiento que la PU vecina. En otro ejemplo, la unidad de estimación de movimiento 122 puede identificar, en una estructura de sintaxis asociada con la PU, una PU vecina y una diferencia de vector de movimiento (MVD). La diferencia del vector de movimiento indica una diferencia entre el vector de movimiento de la PU y el vector de movimiento de la PU vecina indicada. El decodificador de video 30 puede utilizar el vector de movimiento de la PU vecina indicada y la diferencia del vector de movimiento para determinar el vector de movimiento de la PU. Haciendo referencia a la información de movimiento de una primera PU al señalizar la información de movimiento de una segunda PU, el codificador de video 20 puede ser capaz de señalizar la información de movimiento de la segunda PU utilizando menos bits.
Como se analiza con mayor detalle a continuación con referencia a las figuras 5 y 6, la unidad de procesamiento de predicción 100 puede configurarse para codificar (por ejemplo, codificar o decodificar) la PU (o cualquier otra capa de referencia y/o bloques de capa de mejora o unidades de video) al llevar a cabo los métodos ilustrados en las figuras 5 y 6. Por ejemplo, la unidad de interpredicción 121 (por ejemplo, a través de la unidad de estimación de movimiento 122 y/o la unidad de compensación de movimiento 124), la unidad de intrapredicción 126 o la unidad de predicción entre capas 128 pueden configurarse para realizar los métodos ilustrados en las figuras 5 y 6, ya sea juntos o por separado.
Como parte de llevar a cabo una operación de codificación en una CU, la unidad de intrapredicción 126 puede realizar intrapredicción en las PU de la CU. La intrapredicción puede proporcionar compresión espacial. Cuando la unidad de intrapredicción 126 realiza una intrapredicción en una PU, la unidad de intrapredicción 126 puede generar datos de predicción para la PU basándose en muestras decodificadas de otras PU en la misma imagen. Los datos de predicción para la PU pueden incluir un bloque de video predicho y varios elementos de sintaxis. La unidad de intrapredicción 126 puede realizar una intrapredicción en las PU en los segmentos I, los segmentos P y los segmentos B.
Para realizar una intrapredicción en una PU, la unidad de intrapredicción 126 puede usar múltiples modos de intrapredicción para generar múltiples conjuntos de datos de predicción para la PU. Cuando la unidad de intrapredicción 126 usa un modo de intrapredicción para generar un conjunto de datos de predicción para la PU, la unidad intrapredicción 126 puede extender muestras de bloques de video de PU vecinas a través del bloque de video de la PU en una dirección y/o gradiente asociado con el modo de intrapredicción. Las PU vecinas pueden estar arriba, arriba y a la derecha, arriba y a la izquierda, o a la izquierda de la PU, asumiendo un orden de codificación de izquierda a derecha, de arriba a abajo para las PU, CU y bloques de árbol. La unidad de intrapredicción 126 puede utilizar varios números de modos de intrapredicción, por ejemplo, 33 modos de intrapredicción direccional, dependiendo del tamaño de la PU.
La unidad de procesamiento de predicción 100 puede seleccionar los datos de predicción para una PU de entre los datos de predicción generados por la unidad de compensación de movimiento 124 para la PU o los datos de predicción generados por la unidad de intrapredicción 126 para la PU. En algunos ejemplos, la unidad de procesamiento de predicción 100 selecciona los datos de predicción para la PU basándose en métricas de velocidad/distorsión de los conjuntos de datos de predicción.
Si la unidad de procesamiento de predicción 100 selecciona datos de predicción generados por la unidad de predicción interna 126, la unidad de procesamiento de predicción 100 puede señalar el modo de intrapredicción que se usó para generar los datos de predicción para las PU, por ejemplo, el modo de intrapredicción seleccionado. La unidad de procesamiento de predicción 100 puede señalar el modo de intrapredicción seleccionado de diversas formas. Por ejemplo, puede ser probable que el modo de intrapredicción seleccionado sea el mismo que el modo de intrapredicción de una PU vecina. En otras palabras, el modo de predicción intra de la PU vecina puede ser el modo más probable para la PU actual. Por lo tanto, la unidad de procesamiento de predicción 100 puede generar un elemento de sintaxis para indicar que el modo de intrapredicción seleccionado es el mismo que el modo de intrapredicción de la PU vecina.
Como se analizó anteriormente, el codificador de video 20 puede incluir una unidad de predicción entre capas 128. La unidad de predicción entre capas 128 está configurada para predecir un bloque actual (por ejemplo, un bloque actual en el EL) usando una o más capas diferentes que están disponibles en SVC (por ejemplo, una capa base o de referencia). Tal predicción puede denominarse predicción intercapa. La unidad de predicción entre capas 128 utiliza métodos de predicción para reducir la redundancia entre capas, mejorando así la eficiencia de la codificación y reduciendo los requisitos de recursos computacionales. Algunos ejemplos de predicción intercapa incluyen la predicción intercapa e intracapa, la predicción del movimiento intercapa y la predicción residual intercapa. La predicción intercapa utiliza la reconstrucción de bloques coubicados en la capa base para predecir el bloque actual en la capa de mejora. La predicción de movimiento intercapa utiliza información de movimiento de la capa base para predecir el movimiento en la capa de mejora. La predicción residual intercapa utiliza el residuo de la capa base para predecir el residuo de la capa de mejora. Cada uno de los esquemas de predicción intercapa se analiza a continuación con mayor detalle.
Después de que la unidad de procesamiento de predicción 100 selecciona los datos de predicción para las PU de una CU, la unidad de generación residual 102 puede generar datos residuales para la CU restando (por ejemplo, según se indica por el signo menos) los bloques de video predichos de las PU de la CU del bloque de video de la CU. Los datos residuales de una CU pueden incluir bloques de video residuales 2D que corresponden a diferentes componentes de muestra de las muestras en el bloque de video de la CU. Por ejemplo, los datos residuales pueden incluir un bloque de video residual que corresponde a las diferencias entre los componentes de luminancia de las muestras en los bloques de video predichos de las PU de la CU y los componentes de luminancia de las muestras en el bloque de video original de la CU. Además, los datos residuales de la CU pueden incluir bloques de video residuales que corresponden a las diferencias entre los componentes de crominancia de las muestras en los bloques de video predichos de las PU de la CU y los componentes de crominancia de las muestras en el bloque de video original de la CU.
La unidad de procesamiento de predicción 100 puede realizar divisiones de árbol cuaternario para dividir los bloques de video residuales de una CU en subbloques. Cada bloque de video residual no dividido puede estar asociado con una TU diferente de la CU. Los tamaños y posiciones de los bloques de video residuales asociados con las TU de una CU pueden o no basarse en los tamaños y posiciones de los bloques de video asociados con las PU de la CU. Una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT) puede incluir nodos asociados con cada uno de los bloques de video residuales. Las TU de una CU pueden corresponder a los nodos hoja del RQT.
La unidad de procesamiento de transformación 104 puede generar uno o más bloques de coeficientes de transformación para cada TU de una CU aplicando una o más transformaciones a un bloque de video residual asociado con la TU. Cada uno de los bloques de coeficientes de transformación puede ser una matriz 2D de coeficientes de transformación. La unidad de procesamiento de transformación 104 puede aplicar varias transformaciones al bloque de video residual asociado con una TU. Por ejemplo, la unidad de procesamiento de transformación 104 puede aplicar una transformación de coseno discreta (DCT), una transformación direccional o una transformación conceptualmente similar al bloque de video residual asociado con una TU.
Después de que la unidad de procesamiento de transformación 104 genera un bloque de coeficiente de transformación asociado con una TU, la unidad de cuantificación 106 puede cuantificar los coeficientes de transformación en el bloque de coeficiente de transformación. La unidad de cuantificación 106 puede cuantificar un bloque de coeficiente de transformación asociado con una TU de una CU basándose en un valor de QP asociado con la CU.
El codificador de video 20 puede asociar un valor de QP con una CU de varias formas. Por ejemplo, el codificador de video 20 puede realizar un análisis de distorsión de velocidad en un bloque de árbol asociado con la CU. En el análisis de la distorsión de velocidad, el codificador de video 20 puede generar múltiples representaciones codificadas del bloque de árbol realizando una operación de codificación varias veces en el bloque de árbol. El codificador de video 20 puede asociar diferentes valores de QP con la CU cuando el codificador de video 20 genera diferentes representaciones codificadas del bloque de árbol. El codificador de video 20 puede señalar que un valor de QP determinado está asociado con la CU cuando el valor de QP determinado está asociado con la CU en una representación codificada del bloque de árbol que tiene una métrica de distorsión y tasa de bits más baja.
La unidad de cuantificación inversa 108 y la unidad de transformación inversa 110 pueden aplicar cuantificación inversa y transformaciones inversas al bloque de coeficiente de transformación, respectivamente, para reconstruir un bloque de video residual a partir del bloque de coeficiente de transformación. La unidad de reconstrucción 112 puede agregar el bloque de video residual reconstruido a las muestras correspondientes de uno o más bloques de video predichos generados por la unidad de procesamiento de predicción 100 para producir un bloque de video reconstruido asociado con una TU. Al reconstruir bloques de video para cada TU de una CU de esta manera, el codificador de video 20 puede reconstruir el bloque de video de la CU.
Después de que la unidad de reconstrucción 112 reconstruye el bloque de video de una CU, la unidad de filtro 113 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo en el bloque de video asociado con la CU. Después de llevar a cabo una o más operaciones de desbloqueo, la unidad de filtro 113 puede almacenar el bloque de video reconstruido de la CU en la memoria intermediaria de imágenes decodificadas 114. La unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 pueden usar una imagen de referencia que contiene el bloque de video reconstruido para realizar interpredicción en PU de imágenes posteriores. Además, la unidad de intrapredicción 126 puede utilizar bloques de video reconstruidos en la memoria intermediaria de imágenes decodificadas 114 para realizar intrapredicción en otras PU en la misma imagen que la CU.
La unidad de codificación de entropía 116 puede recibir datos de otros componentes funcionales del codificador de video 20. Por ejemplo, la unidad de codificación de entropía 116 puede recibir bloques de coeficientes de transformación de la unidad de cuantificación 106 y puede recibir elementos de sintaxis de la unidad de procesamiento de predicción 100. Cuando la unidad de codificación de entropía 116 recibe los datos, la unidad de codificación de entropía 116 puede realizar una o más operaciones de codificación de entropía para generar datos codificados de entropía. Por ejemplo, el codificador de video 20 puede realizar una operación de codificación de longitud variable adaptativa al contexto (CAVLC), una operación de CABAC, una operación de codificación de longitud de variable a variable (V2V), una operación de codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), una operación de codificación de entropía de partición de intervalo de probabilidad (PIPE) u otro tipo de operación de codificación de entropía en los datos. La unidad de codificación de entropía 116 puede generar un flujo de bits que incluye los datos codificados de entropía.
Como parte de llevar a cabo una operación de codificación de entropía en datos, la unidad de codificación de entropía 116 puede seleccionar un modelo de contexto. Si la unidad de codificación de entropía 116 realiza un operación de CABAC, el modelo de contexto puede indicar estimaciones de las probabilidades de que los contenedores particulares tengan valores particulares. En el contexto de CABAC, el término "contenedor" se utiliza para referirse a un bit de una versión binarizada de un elemento sintáctico.
Codificador de video multicapa
La figura 2B es un diagrama de bloques que ilustra un ejemplo de un codificador de video de múltiples capas 23 (también denominado simplemente codificador de video 23) que puede implementar técnicas según los aspectos descritos en la presente divulgación. El codificador de video 23 puede configurarse para procesar tramas de vídeo de múltiples capas, como para la codificación SHVC y multivista. Además, el codificador de video 23 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación.
El codificador de video 23 incluye un codificador de video 20A y un codificador de video 20B, cada uno de los cuales pueden configurarse como el codificador de video 20 y puede realizar las funciones descritas anteriormente con respecto al codificador de video 20. Además, como indica la reutilización de los números de referencia, los codificadores de video 20A y 20B pueden incluir al menos algunos de los sistemas y subsistemas como el codificador de video 20. Aunque se ilustra que el codificador de video 23 incluye dos codificadores de video 20A y 20B, el codificador de video 23 no está limitado como tal y puede incluir cualquier número de capas del codificador de video 20. En algunas realizaciones, el codificador de video 23 puede incluir un codificador de video 20 para cada imagen o trama en una unidad de acceso. Por ejemplo, una unidad de acceso que incluye cinco imágenes puede ser procesada o codificada por un codificador de video que incluye cinco capas de codificador. En algunas realizaciones, el codificador de video 23 puede incluir más capas de codificador que tramas en una unidad de acceso. En algunos de estos casos, algunas de las capas del codificador de video pueden estar inactivas al procesar algunas unidades de acceso.
Además de los codificadores de video 20A y 20B, el codificador de video 23 puede incluir una unidad de remuestreo 90. La unidad de remuestreo 90 puede, en algunos casos, sobremuestrear una capa base de una trama de video recibida, por ejemplo, para crear una capa de mejora. La unidad de remuestreo 90 puede sobremuestrear la información particular asociada con la capa base recibida de una trama, pero no otra información. Por ejemplo, la unidad de remuestreo 90 puede sobremuestrear el tamaño espacial o el número de píxeles de la capa base, pero el número de segmentos o el recuento del orden de las imágenes pueden permanecer constantes. En algunos casos, la unidad de remuestreo 90 puede no procesar el video recibido y/o puede ser opcional. Por ejemplo, en algunos casos, la unidad de procesamiento de predicción 100 puede realizar un sobremuestreo. En algunas realizaciones, la unidad de remuestreo 90 está configurada para sobremuestrear una capa y reorganizar, redefinir, modificar o ajustar uno o más segmentos para cumplir con un conjunto de reglas de límites de segmentos y/o reglas de exploración de tramas. Aunque se describe principalmente como un sobremuestreo de una capa base, o una capa inferior en una unidad de acceso, en algunos casos, la unidad de remuestreo 90 puede submuestrear una capa. Por ejemplo, si durante la transmisión de un video se reduce el ancho de banda, se puede submuestrear una trama en lugar de sobremuestrearla.
La unidad de remuestreo 90 puede configurarse para recibir una imagen o trama (o información de imagen asociada con la imagen) desde la memoria intermediaria de imágenes decodificadas 114 del codificador de capa inferior (por ejemplo, el codificador de video 20A) y para sobremuestrear la imagen (o la información de la imagen recibida). Esta imagen sobremuestreada puede luego proporcionarse a la unidad de procesamiento de predicción 100 de un codificador de capa superior (por ejemplo, el codificador de video 20B) configurado para codificar una imagen en la misma unidad de acceso que el codificador de capa inferior. En algunos casos, el codificador de capa superior es una capa eliminada del codificador de capa inferior. En otros casos, puede haber uno o más codificadores de capa superior entre el codificador de video de capa 0 y el codificador de capa 1 de la figura 2B.
En algunos casos, la unidad de remuestreo 90 puede ignorarse u omitirse. En tales casos, la imagen de la memoria intermediaria de imágenes decodificadas 114 del codificador de video 20A puede proporcionarse directamente, o al menos sin proporcionarse a la unidad de remuestreo 90, a la unidad de procesamiento de predicción 100 del codificador de video 20B. Por ejemplo, si los datos de video proporcionados al codificador de video 20B y la imagen de referencia de la memoria intermediaria de imágenes decodificadas 114 del codificador de video 20A son del mismo tamaño o resolución, la imagen de referencia puede proporcionarse al codificador de video 20B sin ningún remuestreo.
En algunas realizaciones, el codificador de video 23 submuestrea de los datos de video que se van a proporcionar al codificador de la capa inferior utilizando la unidad de submuestreo 94 antes de proporcionar los datos de video al codificador de video 20A. Alternativamente, la unidad de submuestreo 94 puede ser una unidad de remuestreo 90 capaz de sobremuestrear o submuestrear los datos de video. En otras realizaciones, la unidad de submuestreo 94 puede omitirse.
Como se ilustra en la figura 2B, el codificador de video 23 puede incluir además un multiplexor 98, o mux. El mux 98 puede generar un flujo de bits combinado desde el codificador de video 23. El flujo de bits combinado puede crearse tomando un flujo de bits de cada uno de los codificadores de video 20A y 20B y alternando qué flujo de bits se emite en un momento determinado. Mientras que en algunos casos los bits de los dos (o más en el caso de más de dos capas de codificador de video) se pueden alternar un bit a la vez, en muchos casos los flujos de bits se combinan de manera diferente. Por ejemplo, el flujo de bits de salida puede crearse alternando el flujo de bits seleccionado un bloque a la vez. En otro ejemplo, el flujo de bits de salida puede crearse emitiendo una relación de bloques que no sea 1:1 de cada uno de los codificadores de video 20A y 20b . Por ejemplo, pueden salir dos bloques del codificador de video 20B para cada salida de bloque del codificador de video 20A. En algunas realizaciones, el flujo de salida del mux 98 puede estar preprogramado. En otras realizaciones, el mux 98 puede combinar los flujos de bits de los codificadores de video 20a , 20B en base a una señal de control recibida desde un sistema externo al codificador de video 23, tal como desde un procesador en un dispositivo de origen que incluye el dispositivo de origen 12. La señal de control puede generarse en base a la resolución o tasa de bits de un video de la fuente de video 18, en base a un ancho de banda del enlace 16, en base a una suscripción asociada con un usuario (por ejemplo, una suscripción paga frente a una suscripción gratuita), o en base a cualquier otro factor para determinar una salida de resolución deseada del codificador de video 23.
Decodificador de video
La figura 3A es un diagrama de bloques que ilustra un ejemplo del decodificador de video 30 que puede implementar las técnicas según los aspectos descritos en la presente divulgación. El decodificador de video 30 puede configurarse para procesar una sola capa de una trama de video, como para HEVC. Además, el decodificador de video 30 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación, incluidos, entre otros, los métodos para inferir SinSalidaDeAnteriorImagenIndicador y los procesos relacionados descritos con mayor detalle anteriormente y a continuación con respecto a las figuras 4 y 5. Como ejemplo, la unidad de compensación de movimiento 162 y/o la unidad de intrapredicción 164 pueden configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación. En una realización, el decodificador de video 30 puede incluir opcionalmente una unidad de predicción entre capas 166 que está configurada para realizar cualquiera o todas las técnicas descritas en esta divulgación. En otras realizaciones, la predicción entre capas se puede realizar mediante la unidad de procesamiento de predicción 152 (por ejemplo, la unidad de compensación de movimiento 162 y/o la unidad de intrapredicción 164), en cuyo caso la unidad de predicción entre capas 166 puede omitirse. Sin embargo, los aspectos de esta divulgación no están tan limitados. En algunos ejemplos, las técnicas descritas en esta divulgación pueden compartirse entre los diversos componentes del decodificador de video 30. En algunos ejemplos, de manera adicional o alternativa, un procesador (no mostrado) puede configurarse para realizar alguna o todas las técnicas descritas en esta divulgación.
A efectos explicativos, esta divulgación describe el decodificador de video 30 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros estándares o métodos de codificación. El ejemplo representado en la figura 3A es para un códec de una sola capa. Sin embargo, como se describirá adicionalmente con respecto a la figura 3B, algunos o todos los decodificadores de video 30 pueden duplicarse para el procesamiento de un códec de múltiples capas.
En el ejemplo de la figura 3A, el decodificador de video 30 incluye una pluralidad de componentes funcionales. Los componentes funcionales del decodificador de video 30 incluyen una unidad de decodificación de entropía 150, una unidad de procesamiento de predicción 152, una unidad de cuantificación inversa 154, una unidad de transformación inversa 156, una unidad de reconstrucción 158, una unidad de filtro 159 y una memoria intermediaria de imágenes decodificadas 160. La unidad de procesamiento de predicción 152 incluye una unidad de compensación de movimiento 162, una unidad de intrapredicción 164 y una unidad de predicción entre capas 166. En algunos ejemplos, el decodificador de video 30 puede realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de video 20 de la figura 2A. En otros ejemplos, el decodificador de video 30 puede incluir más, menos o diferentes componentes funcionales.
El decodificador de video 30 puede recibir un flujo de bits que comprende datos de video codificados. El flujo de bits puede incluir una pluralidad de elementos de sintaxis. Cuando el decodificador de video 30 recibe el flujo de bits, la unidad de decodificación de entropía 150 puede realizar una operación de análisis sintáctico en el flujo de bits. Como resultado de llevar a cabo la operación de análisis sintáctico en el flujo de bits, la unidad de decodificación de entropía 150 puede extraer elementos de sintaxis del flujo de bits. Como parte de la realización de la operación de análisis sintáctico, la unidad de decodificación de entropía 150 puede decodificar por entropía elementos de sintaxis codificados por entropía en el flujo de bits. La unidad de procesamiento de predicción 152, la unidad de cuantificación inversa 154, la unidad de transformación inversa 156, la unidad de reconstrucción 158 y la unidad de filtro 159 pueden realizar una operación de reconstrucción que genera datos de video decodificados basándose en los elementos de sintaxis extraídos del flujo de bits.
Como se analizó anteriormente, el flujo de bits puede comprender una serie de unidades de NAL. Las unidades de NAL del flujo de bits pueden incluir unidades de NAL del conjunto de parámetros de video, unidades de NAL del conjunto de parámetros de secuencia, unidades de NAL del conjunto de parámetros de imagen, unidades de NAL de SEI, etc. Como parte de la operación de análisis sintáctico del flujo de bits, la unidad de decodificación de entropía 150 puede realizar operaciones de análisis sintáctico que extraen y decodifican de forma entrópica conjuntos de parámetros de secuencia de unidades de NAL de conjuntos de parámetros de secuencia, conjuntos de parámetros de imagen de unidades de NAL de conjuntos de parámetros de imagen, datos de SEI de unidades de NAL de SEI, etc.
Además, las unidades de NAL del flujo de bits pueden incluir unidades de NAL de segmento codificado. Como parte de llevar a cabo la operación de análisis sintáctico en el flujo de bits, la unidad de decodificación de entropía 150 puede llevar a cabo operaciones de análisis sintáctico que extraen y decodifican de forma entrópica segmentos codificados de las unidades de NAL de segmentos codificados. Cada uno de los segmentos codificados puede incluir un encabezado de segmento y datos de segmento. El encabezado de segmento puede contener elementos de sintaxis pertenecientes a un segmento. Los elementos de sintaxis en el encabezado de segmento pueden incluir un elemento de sintaxis que identifica un conjunto de parámetros de imagen asociado con una imagen que contiene el segmento. La unidad de decodificación de entropía 150 puede llevar a cabo operaciones de decodificación de entropía, tales como operaciones de decodificación de CABAC, en elementos de sintaxis en el encabezado de segmento codificado para recuperar el encabezado de segmento.
Como parte de la extracción de los datos del segmento de las unidades de NAL del segmento codificado, la unidad de decodificación de entropía 150 puede realizar operaciones de análisis sintáctico que extraen elementos de sintaxis de las CU codificadas en los datos del segmento. Los elementos de sintaxis extraídos pueden incluir elementos de sintaxis asociados con bloques de coeficientes de transformación. La unidad de decodificación de entropía 150 puede luego realizar operaciones de decodificación de CABAC en algunos de los elementos de sintaxis.
Después de que la unidad de decodificación de entropía 150 lleva a cabo una operación de análisis sintáctico en una CU no dividida, el decodificador de video 30 puede realizar una operación de reconstrucción en la CU no dividida. Para realizar la operación de reconstrucción en una CU no dividida, el decodificador de video 30 puede realizar una operación de reconstrucción en cada TU de la CU. Al realizar la operación de reconstrucción para cada TU de la CU, el decodificador de video 30 puede reconstruir un bloque de video residual asociado con la CU.
Como parte de llevar a cabo una operación de reconstrucción en una TU, la unidad de cuantificación inversa 154 puede cuantificar inversamente, por ejemplo, descuantificar, un bloque de coeficiente de transformación asociado con la TU. La unidad de cuantificación inversa 154 puede cuantificar inversamente el bloque de coeficiente de transformación de una manera similar a los procesos de cuantificación inversa propuestos para HEVC o definidos por el estándar de decodificación H.264. La unidad de cuantificación inversa 154 puede utilizar un parámetro de cuantificación de QP calculado por el codificador de video 20 para una CU del bloque de coeficiente de transformación para determinar un grado de cuantificación y, de igual forma, un grado de cuantificación inversa para aplicar la unidad de cuantificación inversa 154.
Después de que la unidad de cuantificación inversa 154 cuantifique inversamente un bloque de coeficiente de transformación, la unidad de transformación inversa 156 puede generar un bloque de video residual para la TU asociada con el bloque de coeficiente de transformación. La unidad de transformación inversa 156 puede aplicar una transformación inversa al bloque de coeficiente de transformación para generar el bloque de video residual para la TU. Por ejemplo, la unidad de transformación inversa 156 puede aplicar una DCT inversa, una transformación entera inversa, una transformación Karhunen-Loeve inversa (KLT), una transformación rotacional inversa, una transformación direccional inversa u otra transformación inversa al bloque de coeficientes de transformación. En algunos ejemplos, la unidad de transformación inversa 156 puede determinar una transformación inversa para aplicar al bloque de coeficiente de transformación basándose en la señalización del codificador de video 20. En tales ejemplos, la unidad de transformación inversa 156 puede determinar la transformación inversa basándose en una transformación señalizada en el nodo raíz de un árbol cuaternario para un bloque de árbol asociado con el bloque de coeficiente de transformación. En otros ejemplos, la unidad de transformación inversa 156 puede inferir la transformación inversa a partir de una o más características de codificación, tales como tamaño de bloque, modo de codificación o similares. En algunos ejemplos, la unidad de transformación inversa 156 puede aplicar una transformación inversa en cascada.
En algunos ejemplos, la unidad de compensación de movimiento 162 puede refinar el bloque de video predicho de una PU realizando una interpolación basada en filtros de interpolación. Los identificadores de los filtros de interpolación que se utilizarán para la compensación de movimiento con precisión de submuestra pueden incluirse en los elementos de sintaxis. La unidad de compensación de movimiento 162 puede usar los mismos filtros de interpolación usados por el codificador de video 20 durante la generación del bloque de video predicho de la PU para calcular valores interpolados para muestras subenteras de un bloque de referencia. La unidad de compensación de movimiento 162 puede determinar los filtros de interpolación usados por el codificador de video 20 según la información de sintaxis recibida y usar los filtros de interpolación para producir el bloque de video predicho.
Como se analiza con mayor detalle a continuación con referencia a las figuras 5 y 6, la unidad de procesamiento de predicción 152 puede codificar (por ejemplo, codificar o decodificar) la PU (o cualquier otra capa de referencia y/o bloques de capa de mejora o unidades de video) al llevar a cabo los métodos ilustrados en las figuras 5 y 6. Por ejemplo, la unidad de compensación de movimiento 162, la unidad de intrapredicción 164 o la unidad de predicción entre capas 166 pueden configurarse para realizar los métodos ilustrados en las figuras 5 y 6, ya sea juntos o por separado.
Si se codifica una PU usando intrapredicción, la unidad de intrapredicción 164 puede realizar intrapredicción para generar un bloque de video predicho para la PU. Por ejemplo, la unidad de intrapredicción 164 puede determinar un modo de intrapredicción para la PU basándose en elementos de sintaxis en el flujo de bits. El flujo de bits puede incluir elementos de sintaxis que la unidad de intrapredicción 164 puede utilizar para determinar el modo de intrapredicción de la PU.
En algunos casos, los elementos de sintaxis pueden indicar que la unidad de intrapredicción 164 va a utilizar el modo de intrapredicción de otra PU para determinar el modo de intrapredicción de la PU actual. Por ejemplo, puede ser probable que el modo de intrapredicción de la PU actual sea el mismo que el modo de intrapredicción de una PU vecina. En otras palabras, el modo de predicción intra de la PU vecina puede ser el modo más probable para la PU actual. Por lo tanto, en este ejemplo, el flujo de bits puede incluir un pequeño elemento de sintaxis que indica que el modo de intrapredicción de la PU es el mismo que el modo de intrapredicción de la PU vecina. La unidad de intrapredicción 164 puede luego utilizar el modo de intrapredicción para generar datos de predicción (por ejemplo, muestras predichas) para la PU basándose en los bloques de video de las PU espacialmente vecinas.
Como se analizó anteriormente, el decodificador de video 30 también puede incluir una unidad de predicción entre capas 166. La unidad de predicción entre capas 166 está configurada para predecir un bloque actual (por ejemplo, un bloque actual en el EL) usando una o más capas diferentes que están disponibles en SVC (por ejemplo, una capa base o de referencia). Tal predicción puede denominarse predicción intercapa. La unidad de predicción entre capas 166 utiliza métodos de predicción para reducir la redundancia entre capas, mejorando así la eficiencia de la codificación y reduciendo los requisitos de recursos computacionales. Algunos ejemplos de predicción intercapa incluyen la predicción intercapa e intracapa, la predicción del movimiento intercapa y la predicción residual intercapa. La predicción intercapa utiliza la reconstrucción de bloques coubicados en la capa base para predecir el bloque actual en la capa de mejora. La predicción de movimiento intercapa utiliza información de movimiento de la capa base para predecir el movimiento en la capa de mejora. La predicción residual intercapa utiliza el residuo de la capa base para predecir el residuo de la capa de mejora. Cada uno de los esquemas de predicción intercapa se analiza a continuación con mayor detalle.
La unidad de reconstrucción 158 puede usar los bloques de video residuales asociados con las TU de una CU y los bloques de video predichos de las PU de la CU, por ejemplo, datos de intrapredicción o datos de interpredicción, según corresponda, para reconstruir el bloque de video de la CU. Por lo tanto, el decodificador de video 30 puede generar un bloque de video predicho y un bloque de video residual basado en elementos de sintaxis en el flujo de bits y puede generar un bloque de video basado en el bloque de video predicho y el bloque de video residual.
Después de que la unidad de reconstrucción 158 reconstruye el bloque de video de la CU, la unidad de filtro 159 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con la CU. Después de que la unidad de filtro 159 realiza una operación de desbloqueo para reducir los artefactos de bloqueo asociados con la CU, el decodificador de video 30 puede almacenar el bloque de video de la CU en la memoria intermediaria de imágenes decodificadas 160. La memoria intermediaria de imágenes decodificadas 160 puede proporcionar imágenes de referencia para compensación de movimiento posterior, intrapredicción y presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1A o 1B. Por ejemplo, el decodificador de video 30 puede realizar, en base a los bloques de video en la memoria intermediaria de imágenes decodificadas 160, operaciones de intrapredicción o interpredicción en PU de otras CU.
Decodificador multicapa
La figura 3B es un diagrama de bloques que ilustra un ejemplo de un decodificador de video de múltiples capas 33 (también denominado simplemente decodificador de video 33) que puede implementar técnicas según los aspectos descritos en la presente divulgación. El decodificador de video 33 puede configurarse para procesar tramas de vídeo de múltiples capas, como para la codificación SHVC y multivista. Además, el decodificador de video 33 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación.
El decodificador de video 33 incluye un decodificador de video 30A y un decodificador de video 30B, cada uno de los cuales pueden configurarse como el decodificador de video 30 y puede realizar las funciones descritas anteriormente con respecto al decodificador de video 30. Además, como indica la reutilización de los números de referencia, los decodificadores de video 30A y 30B pueden incluir al menos algunos de los sistemas y subsistemas como el decodificador de video 30. Aunque se ilustra que el decodificador de video 33 incluye dos decodificadores de video 30A y 30B, el decodificador de video 33 no está limitado como tal y puede incluir cualquier número de capas del decodificador de video 30. En algunas realizaciones, el decodificador de video 33 puede incluir un decodificador de video 30 para cada imagen o trama en una unidad de acceso. Por ejemplo, una unidad de acceso que incluye cinco imágenes puede ser procesada o decodificada por un decodificador de video que incluye cinco capas de decodificador. En algunas realizaciones, el decodificador de video 33 puede incluir más capas de decodificador que tramas en una unidad de acceso. En algunos de estos casos, algunas de las capas del decodificador de video pueden estar inactivas al procesar algunas unidades de acceso.
Además de los decodificadores de video 30A y 30B, el decodificador de video 33 puede incluir una unidad de sobremuestreo 92. En algunas realizaciones, la unidad de sobremuestreo 92 puede sobremuestrear una capa base de una trama de video recibida para crear una capa mejorada que se añadirá a la lista de imágenes de referencia para la trama o unidad de acceso. Esta capa mejorada se puede almacenar en la memoria intermediaria de imágenes decodificadas 160. En algunas realizaciones, la unidad de sobremuestreo 92 puede incluir algunas o todas las realizaciones descritas con respecto a la unidad de remuestreo 90 de la figura 2A. En algunas realizaciones, la unidad de sobremuestreo 92 está configurada para interpolar una capa y reorganizar, redefinir, modificar o ajustar uno o más segmentos para cumplir con un conjunto de reglas de límites de segmentos y/o reglas de exploración de tramas. En algunos casos, la unidad de sobremuestreo 92 puede ser una unidad de remuestreo configurada para sobremuestrear y/o submuestrear una capa de una trama de video recibida.
La unidad de sobremuestreo 92 puede configurarse para recibir una imagen o trama (o información de imagen asociada con la imagen) desde la memoria intermediaria de imágenes decodificadas 160 del decodificador de capa inferior (por ejemplo, el decodificador de video 30A) y para sobremuestrear la imagen (o la información de la imagen recibida). Esta imagen sobremuestreada puede luego proporcionarse a la unidad de procesamiento de predicción 152 de un decodificador de capa superior (por ejemplo, el decodificador de video 30B) configurado para decodificar una imagen en la misma unidad de acceso que el decodificador de capa inferior. En algunos casos, el decodificador de capa superior es una capa eliminada del decodificador de capa inferior. En otros casos, puede haber uno o más decodificadores de capa superior entre el decodificador de capa 0 y el decodificador de capa 1 de la figura 3B.
En algunos casos, la unidad de sobremuestreo 92 puede ignorarse u omitirse. En tales casos, la imagen de la memoria intermediaria de imágenes decodificadas 160 del decodificador de video 30A puede proporcionarse directamente, o al menos sin proporcionarse a la unidad de sobremuestreo 92, a la unidad de procesamiento de predicción 152 del decodificador de video 30B. Por ejemplo, si los datos de video proporcionados al decodificador de video 30B y la imagen de referencia de la memoria intermediaria de imágenes decodificadas 160 del decodificador de video 30a son del mismo tamaño o resolución, la imagen de referencia puede proporcionarse al decodificador de video 30B sin sobremuestreo. Además, en algunas realizaciones, la unidad de sobremuestreo puede 92 ser una unidad 90 de remuestreo configurada para sobremuestrear o submuestrear una imagen de referencia recibida desde la memoria intermediaria de imágenes decodificadas 160 del decodificador de video 30A.
Como se ilustra en la figura 3B, el decodificador 33 de video puede incluir además un demultiplexor 99, o demux. El demux 99 puede dividir un flujo de bits de video codificado en múltiples flujos de bits, proporcionándose cada flujo de bits de salida del demux 99 a un decodificador de video diferente 30A y 30B. Los múltiples flujos de bits pueden crearse recibiendo un flujo de bits y cada uno de los decodificadores de video 30A y 30B recibe una parte del flujo de bits en un momento determinado. Mientras que en algunos casos los bits del flujo de bits recibidos en el demux 99 pueden alternarse un bit a la vez entre cada uno de los decodificadores de video (por ejemplo, decodificadores de video 30A y 30B en el ejemplo de la figura 3B), en muchos casos el flujo de bits se divide de manera diferente. Por ejemplo, el flujo de bits puede dividirse alternando qué decodificador de video recibe el flujo de bits un bloque a la vez. En otro ejemplo, el flujo de bits puede dividirse por una relación de bloques que no sea 1:1 para cada uno de los decodificadores de video 30A y 30B. Por ejemplo, se pueden proporcionar dos bloques al decodificador de video 30B para cada bloque proporcionado al decodificador de video 30A. En algunas realizaciones, la división del flujo de bits por el demux 99 puede estar preprogramada. En otras realizaciones, el demux 99 puede dividir el flujo de bits basándose en una señal de control recibida desde un sistema externo al decodificador de video 33, tal como desde un procesador en un dispositivo de destino que incluye el módulo de destino 14. La señal de control puede generarse en base a la resolución o tasa de bits de un video desde la interfaz de entrada 28, en base a un ancho de banda del enlace 16, en base a una suscripción asociada con un usuario (por ejemplo, una suscripción paga frente a una suscripción gratuita), o en base a cualquier otro factor para determinar una resolución obtenible por el decodificador de video 33.
Imágenes de punto de acceso intraaleatorio (IRAP)
Algunos esquemas de codificación de video pueden proporcionar varios puntos de acceso aleatorio a lo largo del flujo de bits, de manera que el flujo de bits se puede decodificar comenzando desde cualquiera de esos puntos de acceso aleatorio sin necesidad de decodificar ninguna imagen que preceda a esos puntos de acceso aleatorio en el flujo de bits. En tales esquemas de codificación de video, todas las imágenes que siguen a un punto de acceso aleatorio en orden de salida (por ejemplo, incluidas aquellas imágenes que están en la misma unidad de acceso que la imagen que proporciona el punto de acceso aleatorio) se pueden decodificar correctamente sin usar ninguna imagen que preceda al punto de acceso aleatorio. Por ejemplo, incluso si una parte del flujo de bits se pierde durante la transmisión o durante la decodificación, un decodificador puede reanudar la decodificación del flujo de bits a partir del siguiente punto de acceso aleatorio. La compatibilidad con el acceso aleatorio puede facilitar, por ejemplo, servicios de transmisión dinámica, operaciones de búsqueda, cambio de canal, etc.
En algunos esquemas de codificación, dichos puntos de acceso aleatorio pueden proporcionarse mediante imágenes que se denominan imágenes de IRAP. Por ejemplo, un punto de acceso aleatorio (por ejemplo, proporcionado por una imagen de IRAP de capa de mejora) en una capa de mejora ("capaA") contenida en una unidad de acceso ("auA") puede proporcionar acceso aleatorio específico de la capa para cada capa de referencia ("capaB") de capa A (por ejemplo, una capa de referencia es una capa que se usa para predecir la capaA) que tiene un punto de acceso aleatorio contenido en una unidad de acceso ("auB") que está en la capaB y precede a la auA en el orden de decodificación (o un punto de acceso aleatorio contenido en la auA), las imágenes en la capaA que siguen a la auB en orden de salida (incluidas aquellas imágenes ubicadas en la auB), se pueden decodificar correctamente sin necesidad de decodificar ninguna imagen en la capaA que preceda a la auB.
Las imágenes de IRAP pueden codificarse mediante intrapredicción (por ejemplo, codificadas sin hacer referencia a otras imágenes) y pueden incluir, por ejemplo, imágenes de actualización de decodificación instantánea (IDR), imágenes de acceso aleatorio limpio (CRA) e imágenes de acceso a enlace roto (BLA). Cuando hay una imagen de IDR en el flujo de bits, todas las imágenes que preceden a la imagen de IDR en el orden de decodificación no se utilizan para la predicción de las imágenes que siguen a la imagen de IDR en el orden de decodificación. Cuando hay una imagen de CRA en el flujo de bits, las imágenes que siguen a la imagen de CRA pueden utilizar o no imágenes que preceden a la imagen de CRA en el orden de decodificación para la predicción. Las imágenes que siguen a la imagen de CRA en el orden de decodificación, pero utilizan imágenes que preceden a la imagen de CRA en el orden de decodificación pueden denominarse imágenes principales omitidas de acceso aleatorio (RASL). Otro tipo de imagen que sigue a una imagen de IRAP en el orden de decodificación y precede a la imagen de IRAP en el orden de salida es una imagen principal decodificable de acceso aleatorio (RADL), que puede no contener referencias a ninguna imagen que preceda a la imagen de IRAP en el orden de decodificación. El decodificador puede descartar las imágenes de RASL si las imágenes que preceden a la imagen de CRA no están disponibles. Una imagen de BLA indica al decodificador que las imágenes que preceden a la imagen de BLA pueden no estar disponibles para el decodificador (por ejemplo, porque dos flujos de bits se empalman y la imagen e BLA es la primera imagen del segundo flujo de bits en el orden de decodificación). Una unidad de acceso (por ejemplo, un grupo de imágenes que consiste en todas las imágenes codificadas asociadas con el mismo tiempo de salida en varias capas) que contiene una imagen de capa base (por ejemplo, una imagen que tiene un valor de ID de capa de 0) que es una imagen de IRAP puede denominarse unidad de acceso de IRAP.
Alineación entre capas de imágenes de IRAP
En SVC, es posible que no se requiera que las imágenes de IRAP estén alineadas (por ejemplo, contenidas en la misma unidad de acceso) en diferentes capas. Por ejemplo, si se requiriera alinear las imágenes de IRAP, cualquier unidad de acceso que contenga al menos una imagen de IRAP solo contendría imágenes de IRAP. Por otro lado, si no fuera necesario alinear las imágenes de IRAP, en una sola unidad de acceso, una imagen (por ejemplo, en una primera capa) puede ser una imagen de IRAP y otra imagen (por ejemplo, en una segunda capa) puede ser una imagen sin IRAp . Tener tales imágenes de IRAP no alineadas en un flujo de bits puede proporcionar algunas ventajas. Por ejemplo, en un flujo de bits de dos capas, si hay más imágenes de IRAP en la capa base que en la capa de mejora, en aplicaciones de difusión y multidifusión, se puede lograr un retraso de sintonización bajo y una alta eficiencia de codificación.
En algunos esquemas de codificación de video, se puede usar un recuento de orden de imágenes (POC) para realizar un seguimiento del orden relativo en el que se muestran las imágenes decodificadas. Algunos de tales esquemas de codificación pueden hacer que los valores de POC se reestablezcan (por ejemplo, se fijen en cero o se fijen en algún valor señalado en el flujo de bits) siempre que ciertos tipos de imágenes aparezcan en el flujo de bits. Por ejemplo, los valores de POC de ciertas imágenes de IRAP pueden reestablecerse, provocando que también se reestablezcan los valores de POC de otras imágenes que preceden a esas imágenes de IRAP en el orden de decodificación. Esto puede resultar problemático cuando no es necesario alinear las imágenes de IRAP en diferentes capas. Por ejemplo, cuando una imagen ("imagenA") es una imagen de IRAP y otra imagen ("imagenB") en la misma unidad de acceso no es una imagen de IRAP, el valor de POC de una imagen ("imagenC"), que se restablece debido a que la imagenA es una imagen de IRAP, en la capa que contiene imagenA puede ser diferente del valor de POC de una imagen ("imagenD"), que no se reestablece, en la capa que contiene imagenB, donde imagenC e imagenD están en la misma unidad de acceso. Esto hace que imagenC e imagenD tengan diferentes valores de POC, aunque pertenezcan a la misma unidad de acceso (por ejemplo, el mismo tiempo de salida). Por lo tanto, en este ejemplo, el proceso de derivación para derivar los valores de POC de imagenC e imagenD se puede modificar para producir valores de POC que sean coherentes con la definición de los valores de POC y las unidades de acceso.
Imagen de inicialización de capa (LIP)
En algunos esquemas de codificación, una imagen de inicialización de capa ("imagen de LIP") puede definirse como una imagen que es una imagen de IRAP que tiene un indicador SinRaslSalidaIndicador (por ejemplo, un indicador que indica que las imágenes de RASL no se emitirán si se establecen en 1 e indica que las imágenes de RASL deben emitirse si se establecen en 0) establecido en 1 o una imagen que está contenida en una unidad de acceso de IRAP inicial, que es una unidad de acceso de IRAP en la que la imagen de capa base (por ejemplo, una imagen que tiene un ID de capa de 0 o el ID de capa más pequeño definido en el flujo de bits) tiene SinRaslSalidaIndicador establecido en 1.
En algunas realizaciones, se puede activar un SPS en cada imagen de LIP. Por ejemplo, cada imagen de IRAP que tiene un indicador SinRaslSalidaIndicador establecido en 1 o cada imagen que está contenida en una unidad de acceso IRAP inicial, un nuevo SPS, que puede ser diferente (por ejemplo, especificando diferentes resoluciones de imagen, etc.) del SPS que fue activado previamente. Sin embargo, en un caso en el que la imagen de LIP no sea una imagen de IRAP (por ejemplo, cualquier imagen contenida en una unidad de acceso de IRAP inicial) y la imagen de capa base en la unidad de acceso de IRAP inicial sea una imagen de IDR con un indicador SinClrasSalidaIndicador (por ejemplo, un indicador que indica que las imágenes de salto de acceso aleatorio de capas cruzadas no se emitirán si se establecen en 1 e indica que las imágenes de salto de acceso aleatorio de capas cruzadas se emitirán si se establecen en 0) establecida en 0, no se debe permitir que la imagen de LIP active un nuevo SPS. Si se activa un nuevo SPS en la imagen de LIP en tal caso, particularmente cuando el contenido del RBSP de SPS del nuevo SPS es diferente al del SPS que estaba previamente activo antes de la unidad de acceso de IRAP inicial, podría haber problemas en las diferentes resoluciones de imagen y en la resistencia a los errores. Por ejemplo, el nuevo SPS puede actualizar la resolución y usar la predicción temporal para referirse a imágenes de diferentes tamaños.
Choque y descarga de imágenes
Las imágenes que se decodifican (por ejemplo, para que se puedan mostrar o utilizar para predecir otras imágenes) se almacenan en una memoria intermediaria de imágenes decodificadas (DPB). Las imágenes que se van a emitir pueden marcarse como "necesarias para la salida" y las imágenes que se utilizarán para predecir otras imágenes se pueden marcar como "utilizadas como referencia". Las imágenes decodificadas que no están marcadas como "necesarias para la salida" ni como "utilizadas como referencia" (por ejemplo, imágenes que se marcaron inicialmente como "utilizadas como referencia" o "necesarias para la salida", pero posteriormente marcadas como "no utilizadas como referencia" o "no necesarias para la salida") pueden estar presentes en el DPB hasta que se eliminen mediante el proceso de decodificación. En los decodificadores conformes con el orden de salida, el proceso de eliminar imágenes de la DPB a menudo sigue inmediatamente a la salida de las imágenes que están marcadas como "necesarias para la salida". Este proceso de salida y posterior eliminación puede denominarse "choque". También hay situaciones en las que el decodificador puede eliminar las imágenes en el DPB sin salida, aunque estas imágenes pueden marcarse como "necesarias para la salida". Para facilitar la descripción en la presente, las imágenes decodificadas que están presentes en el DPB en el momento de decodificar una imagen de IRAP (independientemente de si las imágenes decodificadas están marcadas como "necesarias para la salida" o "utilizadas como referencia") se denominan "imágenes de DPB retrasadas" asociadas con la imagen de IRAP o "imágenes de DPB retrasadas asociadas" de la imagen de IRAP. Algunos ejemplos de tales situaciones, en el contexto HEVC, se describen a continuación.
En un ejemplo, cuando una imagen de CRA con SinRaslSalidaIndicador igual a un valor de "1" está presente en el medio de un flujo de bits (por ejemplo, no la primera imagen en el flujo de bits), las imágenes de DPB retrasadas asociadas con la imagen de CRA no serían emitidas y se eliminarían de la DPB. Es probable que estas situaciones ocurran en puntos de empalme, donde dos flujos de bits se unen y la primera imagen del último flujo de bits es una imagen de CRA con SinRaslSalidaIndicador igual a un valor de "1". En otro ejemplo, cuando una imagen de IRAP imagenA que tiene SinRaslSalidaIndicador igual a un valor de "1" y que no es una imagen de CRA (por ejemplo, una imagen de IDR) está presente en el medio de un flujo de bits y la resolución de la imagen cambia en imagenA (por ejemplo, con la activación de un nuevo SPS), las imágenes de DPB retrasadas asociadas de imagenA pueden eliminarse de la DPB antes de que se puedan emitir, porque si las imágenes de DPB retrasadas asociadas continúan ocupando la DPB, la decodificación de las imágenes comenzando en imagenA puede resultar problemática, por ejemplo, debido al desbordamiento de la memoria intermediaria. En este caso, el valor de sin_salida_de_anterior_imagen_indicador (por ejemplo, un indicador que indica que las imágenes que se decodificaron y almacenaron previamente en la DPB deben eliminarse de la DPB sin ser emitidas si se establecen en 1, e indica que las imágenes que se decodificaron y almacenaron previamente en la DPB no debe eliminarse de la DPB sin ser emitidas si se establecen en 0) asociado con imagenA debe establecerse igual a un valor de "1" por el codificador o empalmador, o SinSalidaDeAnteriorImagenIndicador (por ejemplo, un valor derivado que puede ser determinado en base a la información incluida en el flujo de bits) puede derivarse para ser igual a un valor de "1" por el decodificador, para descargar las imágenes retrasadas sin salida de la DPB. La operación de empalme se describe más adelante con respecto a la figura 4.
Este proceso para eliminar imágenes de la DPB retrasadas asociadas de la DPB sin salida puede denominarse "descarga". Incluso en las situaciones no descritas anteriormente, una imagen de IRAP puede especificar el valor de sin_salida_de_anterior_imagen_indicador igual a un valor de "1", para que el decodificador descargue las imágenes retrasadas de la DPB asociadas de la imagen de IRAP.
Flujo de bits que incluye un punto de empalme
Con referencia a la figura 4, se describirá un flujo de bits de ejemplo que tiene un punto de empalme. La figura 4 muestra un flujo de bits 400 de múltiples capas creado empalmando los flujos de bits 410 y 420. El flujo de bits 410 incluye una capa de mejora (EL) 410A y una capa base (BL) 410B, y el flujo de bits 420 incluye una EL 420A y una BL 420B. La EL 410A incluye una imagen EL 412A y la BL 410B incluye una imagen BL 412B. La EL 420A incluye imágenes EL 422A, 424A y 426A, y la BL 420B incluye imágenes BL 422B, 424B y 426B. El flujo de bits de múltiples capas 400 incluye además unidades de acceso (AU) 430-460. La AU 430 incluye la imagen EL 412A y la imagen BL 412B, la AU 440 incluye la imagen EL 422A y la imagen BL 422B, la AU 450 incluye la imagen EL 424a y la imagen BL 424B, y la AU 460 incluye la imagen EL 426A y la imagen BL 426B. En el ejemplo de la figura 4, la imagen BL 422B es una imagen de IRAp , y la imagen EL 422A correspondiente en la AU 440 es una imagen final (por ejemplo, una imagen sin IRAP) y, en consecuencia, la AU 440 es una AU IRAP no alineada. Además, debe tenerse en cuenta que la AU 440 es una unidad de acceso que sigue inmediatamente a un punto de empalme 470.
Aunque el ejemplo de la figura 4 ilustra un caso en el que se unen dos flujos de bits diferentes, en algunas realizaciones, puede estar presente un punto de empalme cuando se elimina una parte del flujo de bits. Por ejemplo, un flujo de bits puede tener partes A, B y C, la parte B está entre las partes A y C. Si la parte B se elimina del flujo de bits, las partes restantes A y C pueden unirse y el punto en el que se unen puede denominarse punto de empalme. De manera más general, se puede considerar que un punto de empalme, como se describe en la presente solicitud, está presente cuando uno o más parámetros o indicadores señalizados o derivados tienen valores predeterminados. Por ejemplo, sin recibir una indicación específica de que existe un punto de empalme en una ubicación particular, un decodificador puede determinar el valor de un indicador (por ejemplo, SinClrasSalidaIndicador) y realizar una o más técnicas descritas en esta solicitud en función del valor del indicador.
Descarga de imágenes en contexto multicapa
El proceso de descarga de imágenes también es relevante en flujos de bits de múltiples capas. Más específicamente, es relevante para todas las imágenes que pertenecen a una unidad de acceso de IRAP inicial, y también para las imágenes de IRAP que no están en una unidad de acceso de IRAP inicial. Como se describió anteriormente, en algunas implementaciones existentes como SHVC y MV-HEVC, una unidad de acceso de IRAP puede definirse como una unidad de acceso que contiene una imagen de IRAP que tiene nuh _capa_id igual a un valor de "0" (independientemente de si otras imágenes en la unidad de acceso son imágenes de IRAP), y una unidad de acceso de IRAp inicial puede definirse como una unidad de acceso que contiene una imagen de IRAp que tiene nuh_capa_id igual a un valor de "0" y que tiene SinRaslSalidaIndicador igual a un valor de "1" (de nuevo independientemente de si las demás imágenes de la unidad de acceso son imágenes de IRAP).
Con la posibilidad de tener imágenes de IRAP no alineadas en las unidades de acceso (por ejemplo, una unidad de acceso puede contener imágenes de IRAP y sin IRAP) en SHVC y MV-HEVC, las situaciones descritas en la sección anterior en el contexto de HEVC pueden ocurrir en diferentes capas de un flujo de bits SHVC/MV-HEVC. Por ejemplo, una imagen de CRA imagenA que tiene SinRaslSalidaIndicador igual a un valor de "1" puede estar presente en una capa de mejora en el medio de un flujo de bits (por ejemplo, no en la primera unidad de acceso del flujo de bits) que comienza con una unidad de acceso de IRAP inicial que no tiene una imagen de CRA en la misma capa que la imagenA. Además, el cambio de resolución de una imagen podría ocurrir en imágenes de IRAP en una capa de mejora en una unidad de acceso donde la resolución de la capa base no cambia, o viceversa. Pueden surgir situaciones similares para diferentes tamaños de DPB.
Descarga de imágenes en SVC y MVC
Debido al diseño de codificación de bucle único de SVC, solo se inserta una imagen reconstruida por unidad de acceso en la DPB, excepto en los casos en que se utiliza la llamada escalabilidad granular media (MGS) (en cuyo caso puede haber dos imágenes decodificadas de las llamadas unidades de acceso a imágenes clave que se almacenan en la DPB). Sin embargo, en cada unidad de acceso solo se puede emitir la imagen decodificada de la capa más alta. Las operaciones para gestionar la DPB, incluida la descarga de imágenes, por lo tanto, solo se refieren a imágenes en la capa más alta, principalmente porque no se requiere que esté presente una imagen decodificada de una capa base en la DPB para predecir la capa de mejora.
En MVC, más de una vista puede ser vista de salida de destino, y los componentes de vista decodificados se deben mantener para predecir los componentes de vista en otra capa, incluso si no son necesarios para predecir los componentes de vista en la misma capa. Por lo tanto, los componentes de vista de más de una vista pueden estar presentes en la DPB. El indicador sin_salida_de_anterior_imagen_indicador se señala para cada componente de vista de IDR (por ejemplo, un componente de vista de IDR de una vista no base se señala con no_idr_indicador igual a un valor de "0"), y la descarga de los componentes de vista es específico de la capa (o específico de la vista). Para simplificar, en MVC los componentes de vista de IDR en una unidad de acceso en mVc están alineados. Por ejemplo, si un componente de vista en una unidad de acceso es un componente de vista de IDR, todos los componentes de vista en esa unidad de acceso también son componentes de vista de IDR. Por lo tanto, la operación de descarga también se realiza en todas las vistas en el flujo de bits, aunque la operación puede ser específica de la vista/capa.
Descarga de imágenes en SHVC y MV-HEVC
Cuando se produce una descarga con el diseño actual en SHVC y MV-HEVC, todas las imágenes en el DPB se eliminan sin emitirse (por ejemplo, visualizadas). No es posible que las imágenes de una sola capa en el flujo de bits (excepto en el caso trivial en el que solo está presente la capa base en el flujo de bits) se descarguen, por lo que la descarga no es específica de la capa.
Conformidad del tiempo de salida
En algunas implementaciones (por ejemplo, SHVC, MV-HEVC, etc.), como el borrador de trabajo de SHVC (WD) 5 y el borrador de trabajo 7 de MV-HEVC, la salida y eliminación de imágenes de la DPB para la conformidad del tiempo de salida se realizan como se describe a continuación.
_______ Tabla 1 - Conformidad del tiempo de salida en SHVC WD 5 y MV-HEVC WD 7___________________ ión de imágenes de la DPB
gen actual no es la imagen 0 en la capa actual, la eliminación de imágenes en la capa actual, con igual a actualCapaId, de la DPB antes de decodificar la imagen actual, es decir, la imagen n, pero analizar el encabezado del segmento del primer segmento de la imagen actual, ocurre nte en el momento de eliminación de CPB de la primera unidad de decodificación de la imagen e de la siguiente manera:
proceso de decodificación para RPS especificado en la subcláusula 8.3.1.
agen actual es una imagen de IRAP con SinRaslSalidaIndicador igual a 1, o la imagen de capa base de acceso actual es una imagen de IRAP con SinRaslSalidaIndicador igual a 1 y Indicador es igual a 1, se aplican los siguientes pasos ordenados:
SinSalidaDeAnteriorImagenIndicador se deriva para el decodificador bajo prueba de la siguiente
agen actual es una imagen de CRA con SinRaslSalidaIndicador igual a 1, teriorImagenIndicador se establece igual a 1 (independientemente del valor de anterior_imagen_indicador).
io, si la imagen actual es una imagen de IRAP con SinRaslSalidaIndicador igual a 1 y el valor de ancho_en_luma_muestras, imagen_altura_en_luma_muestras, croma_formato_idc, _luma_menos8, bit_profundidad_ croma_menos8 o sps_max_dec_imagen_memoria_menos1[ erivado del SPS activo para la capa actual es diferente del valor de pic_ancho_en_luma_muestras, uma_muestras, croma_formato_ idc, bit_profundidad_luma_menos8, _croma_menos8, o sps_max_dec_imagen_memoria_menos1[ SuperiorTid ], respectivamente, PS que estaba activo para la capa actual al decodificar la imagen anterior en la capa actual, teriorImagenIndicador puede (pero no debe) estar establecido en 1 por el decodificador bajo prueba, ente del valor de sin_salida_de_anterior_imagen_indicador.
Aunque se prefiere establecer SinSalidaDeAnteriorImagenIndicador igual a anterior_imagen_indicador en estas condiciones, el decodificador bajo prueba puede establecer teriorImagenIndicador en 1 en este caso.
rario, si la imagen actual es una imagen de IRAP con SinRaslSalidaIndicador igual a 1, teriorImagenIndicador se establece igual a sin_salida_de_anterior_imagen_indicador. o (la imagen actual no es una imagen de IRAP con SinRaslSalidaIndicador igual a 1, la imagen de la la unidad de acceso actual es una imagen de IRAP con SinRaslSalidaIndicador igual a 1, y Indicador es igual a 1), SinSalidaDeAnteriorImagenIndicador es igual a 1. inSalidaDeAnteriorImagenIndicador derivado para el decodificador bajo prueba se aplica a HRD, de cuando el valor de SinSalidaDeAnteriorImagenIndicador es igual a 1, todas las memorias de almacenamiento de imágenes que contienen imágenes con nuh_capa_id igual a actualCapaId en vacían sin salida de las imágenes que contienen, y la totalidad de DPB se reduce por el número de mediarias de almacenamiento de imágenes que se vaciaron.
os condiciones siguientes se cumplen para cualquier imagen k en la DPB, todas esas imágenes k en inan de la DPB:
stá marcada como "no utilizada como referencia"
iene ImagenSalidaIndicador igual a 0 o su tiempo de salida de DPB es menor o igual que el tiempo de CPB de la primera unidad de decodificación (indicada como unidad de decodificación m) de la n; es decir, DpbSalidaTiempo [ k ] es menor o igual que CpbEliminaciónTiempo (m)
Figure imgf000024_0001
gen que se elimina de la d Pb , la plenitud de la DPB se reduce a uno.__________________________
Conformidad con el orden de salida
En algunas implementaciones (por ejemplo, SHVC, MV-HEVC, etc.), la salida y eliminación de imágenes de la DPB para la conformidad del orden de salida se realizan como se describe a continuación.
Tabla 2 - Conformidad del orden de salida en SHVC WD 5 y MV-HEVC WD 7
Figure imgf000025_0001
_______ (continuación)_________________________________________ uh_capa_id igual a actualCapaId en la sub-DPB se vacían sin salida de d de sub-DPB se reduce por el número de memorias intermediarias de aron.
agenIndicador es igual a 0), todas las memorias intermediarias de enen una imagen marcada como "no necesaria para la salida" y "no n salida), y todas las memorias intermediarias de almacenamiento de ágenes con nuh_capa_id igual a actualCapaId en la sub-DPB se generan "choque" especificado en la subcláusula C.5.2.4 hasta que todas estas as para la salida", todas las imágenes que tienen nuh_capa_id igual a y la plenitud de la sub-DPB se reduce por el número de memorias
Figure imgf000026_0001
genes vacías.________________________________________________
Comparación de la conformidad del tiempo de salida y la conformidad del orden de salida
Como se describió anteriormente, la conformidad del tiempo de salida y la conformidad del orden de salida pueden no dar como resultado el mismo comportamiento de descarga. Por ejemplo, para los decodificadores de conformidad del tiempo de salida, se invoca la descarga para cada imagen en una capa que no es la primera imagen de la capa en el flujo de bits y que tiene SinRaslSalidaIndicador igual a un valor de "1". Cuando se invoca la descarga, se descargan todas las imágenes decodificadas de esa capa en la DPB. Por otro lado, para los decodificadores de conformidad del orden de salida, la descarga solo se invoca para una imagen en la capa base que no es la primera imagen en el flujo de bits y que tiene SinRaslSalidaIndicador igual a un valor de "1". Cuando se invoca la descarga, se descargan todas las imágenes decodificadas de todas las capas de la DPB.
En un flujo de bits que tiene dos capas, cuando una imagen de LIP en EL que es una imagen de IRAP y no pertenece a una AU de IRAP activa una resolución diferente, y la resolución de BL no puede cambiar en esta AU debido a que la imagen de BL está en una AU que no es IRAP (por ejemplo, una imagen sin IRAP), se puede desear una descarga de imágenes específica de la capa. En este caso, solo se eliminarán las imágenes de EL, pero no de BL. Esta función no está disponible para la conformidad con el orden de salida.
En un flujo de bits que tiene dos capas, en un caso en el que una unidad de acceso incluye una imagen de BL que es una imagen de IDR y una imagen de EL que es una imagen sin IRAP, la resolución de la imagen de BL puede actualizarse en la unidad de acceso, mientras que la resolución de la imagen de EL no se actualiza. En tal caso, la descarga debe realizarse solo para las imágenes de BL, y las imágenes de EL no deben ser descargadas. Esta función no está disponible para la conformidad con el orden de salida.
Señalización de indicador que indica la salida de imágenes anteriores
En algunas realizaciones, la variable SinSalidaDeAnteriorImagenIndicador (por ejemplo, un valor derivado por el decodificador para determinar, al decodificar una imagen de IRAP, si emitir o no las imágenes en la DPB antes de la descarga de la DPB) se deriva en base a sin_salida_de_anterior_imagen_indicador y demás condiciones. Por ejemplo, sin_salida_de_anterior_imagen_indicador puede ser un valor señalado en el flujo de bits, mientras que SinSalidaDeAnteriorImagenIndicador puede ser un valor derivado por un codificador basado en la información incluida en el flujo de bits. Un decodificador puede derivar el valor de SinSalidaDeAnteriorImagenIndicador basado en el valor de sin_salida_de_anterior_imagen_indicador y demás condiciones, y luego usar el valor derivado de SinSalidaDeAnteriorImagenIndicador para determinar si generar imágenes o no. En algunas realizaciones, el indicador SinSalidaDeAnteriorImagenIndicador puede indicar si la unidad de acceso actual comprende un punto de empalme, en el que se unen dos flujos de bits diferentes.
En algunas realizaciones, SinClRasSalidaIndicador y SinRaslSalidaIndicador pueden ser variables derivadas en base a la información incluida en el flujo de bits. Por ejemplo, SinRaslSalidaIndicador puede derivarse para cada imagen de IRAP (por ejemplo, en BL y/o EL), y SinClRasSalidaIndicador puede derivarse solo para las imágenes de la capa más baja (por ejemplo, imágenes BL). El valor de cada uno de SinClRasSalidaIndicador y SinRaslSalidaIndicador puede indicar que algunas imágenes en el flujo de bits pueden no ser correctamente decodificables debido a la falta de disponibilidad de ciertas imágenes de referencia. Esa indisponibilidad de imágenes de referencia puede ocurrir en puntos de acceso aleatorios. Las imágenes de salto de acceso aleatorio de capas cruzadas (CL-RAs ) son, de alguna manera, el equivalente multicapa de las imágenes de RASL. Si un decodificador comienza decodificando un flujo de bits en un punto de acceso aleatorio (por ejemplo, una unidad de acceso que tiene una imagen de BL IRAP) y la imagen de EL en la unidad de acceso no es una imagen de IRAP, entonces esa imagen de EL es una imagen de CLRAS. Todas las imágenes en EL pueden ser imágenes de CL-RAS (por ejemplo, decodificables, pero no decodificables correctamente) hasta que aparezca una imagen de IRAP en EL. Cuando se proporciona una imagen de EL IRAP de este tipo en el flujo de bits, se puede decir que EL se ha inicializado.
Por ejemplo, en el ejemplo de la figura 4, la imagen de EL 422A puede ser una imagen de LIP que no es una imagen de IRAP, y la imagen de BL 422B puede ser una imagen de IRAP que tiene un indicador SinClRasSalidaIndicador asociado con la misma. En este ejemplo, el valor de SinSalidaDeAnteriorImagenIndicador asociado con la imagen de EL 422A puede inferirse basándose en el valor de SinClRasSalidaIndicador asociado con la imagen de BL 422B. Por ejemplo, si SinClRasSalidaIndicador es igual a un valor de "1", SinSalidaDeAnteriorImagenIndicador para la imagen de EL 422A también puede establecerse en un valor de "1", lo que hace que las imágenes en la DPB no se emitan antes de que se eliminen de la DPB. Por otro lado, si SinClRasSalidaIndicador es igual a un valor de "0", SinSalidaDeAnteriorImagenIndicador para la imagen de EL 422A también puede establecerse en un valor de "0", lo que hace que las imágenes en la DPB se eliminen de la DPB después de su salida.
Derivación de información de anidamiento de ID temporal de SPS e información de unidad NAL de final de secuencia (EOS) para flujos de bits de múltiples capas
En un flujo de bits de múltiples capas, una capa puede incluir una o más subcapas temporales. Cada subcapa temporal puede tener un identificador (ID) asociado a la misma denominado ID temporal. Por ejemplo, si la capa base en el flujo de bits de múltiples capas tiene dos subcapas temporales, el ID temporal para la primera subcapa temporal es 0 y el ID temporal para la segunda subcapa temporal es 1. En general, las imágenes que tienen un ID temporal más alto que la imagen actual no se utilizan como imágenes de referencia para la imagen actual. El indicador sps_temporal_id_anidamiento_indicador puede indicar además si una imagen particular que tiene un ID temporal igual o menor que el ID temporal de la imagen actual puede usarse como imagen de referencia cuando existe otra imagen que tiene un ID temporal más bajo que la imagen particular y que sigue a la imagen particular en el orden de decodificación, pero precede a la imagen actual en el orden de decodificación. Por ejemplo, cuando sps temporal _id anidamiento _indicador está habilitado (por ejemplo, se establece igual a 1), si la imagen A tiene un ID temporal menor o igual a la imagen actual, pero la imagen B tiene un ID temporal menor que la imagen A y está entre la imagen A y la imagen actual en el orden de decodificación (por ejemplo, valor de POC entre el valor de POC de la imagen A y la imagen actual), luego la imagen A no se puede utilizar como imagen de referencia para la imagen actual. Por otro lado, cuando sps_temporal_id_anidamiento_indicador no está habilitado (por ejemplo, se establece igual a 0), si la imagen A tiene un ID temporal menor o igual que la imagen actual, pero la imagen B tiene un ID temporal menor que la imagen A y está entre imagen A y la imagen actual en el orden de decodificación (por ejemplo, valor de POC entre el valor de POC de la imagen A y la imagen actual), la imagen A se puede utilizar como imagen de referencia para la imagen actual.
Las primeras versiones de SHVC y MV-HEVC (por ejemplo, el borrador de trabajo 5 de SHVC y el borrador de trabajo 7 de MV-HEVC) plantean un conflicto en la derivación de sps_temporal_id_anidamiento_indicador cuando el elemento de sintaxis no está presente en el flujo de bits. En determinadas condiciones, no se puede determinar que el valor del indicador sea 0 o 1. Para abordar estos y otros desafíos, las técnicas según ciertos aspectos pueden definir cómo derivar el valor de sps_temporal_id_anidamiento_indicador en tales condiciones (por ejemplo, establecer precedencia en el proceso de derivación) para eliminar el conflicto.
Además, en HEVC, una AU contiene una imagen de una sola capa y, a menudo, el concepto de imagen y AU se pueden utilizar indistintamente. Por el contrario, en SHVC y MV-HEVC, una AU puede contener imágenes de más de una capa, lo que puede hacer que sea incierto si una variable o un indicador deben asociarse con una capa en particular (por ejemplo, la capa base) o deben aplicarse a toda la UA. Un ejemplo de una variable de este tipo es ManejarCraComoBlaIndicador. La variable ManejarCraComoBlaIndicador puede indicar si se debe manejar una imagen de CRA como una imagen de BLA. Por ejemplo, cuando se accede aleatoriamente a un flujo de bits o se empalma en un CRA, el CRA se convertiría en un BLA, por ejemplo, para eliminar cualquier imagen de RASL que siga al CRA. La variable puede introducirse, por ejemplo, a través de medios externos, para facilitar el proceso de tratar un CRA como un BLA. Un decodificador o empalmador puede procesar fácilmente el CRA como BLA en función del valor de la variable, en lugar de convertir el CRA en un BLA, lo que puede requerir cambiar el encabezado de segmento de un CRA. Las primeras versiones de SHVC y MV-HEVC hacen que no quede claro si ManejarCraComoBlaIndicador está asociado solo con la capa base o con la AU. Para abordar estos y otros desafíos, las técnicas según ciertos aspectos también pueden definir si ManejarCraComoBlaIndicador debe asociarse solo con la capa base o con la AU.
Además, como se explicó anteriormente con respecto a ManejarCraComoBlaIndicador, debido a que una AU puede tener imágenes de más de una capa en SHVC y MV-HEVC, puede resultar incierto si una unidad de NAL de EOS debe asociarse con una capa en particular (por ejemplo, la capa base) o debería aplicarse a toda la UA. La unidad de NAL de EOS puede indicar el final de una secuencia de video codificada (CVS) y generalmente va seguida de una imagen de IRAP, como una imagen de IDR, una imagen de BLA o una imagen de CRA. Las primeras versiones de SHVC y MV-HEVC no dejan claro si la unidad de NAL de EOS está asociada solo con la capa base o con la AU. Para abordar estos y otros desafíos, las técnicas según ciertos aspectos pueden definir si la unidad de NAL de EOS debe asociarse solo con la capa base o con la AU.
Ciertos detalles relacionados con la derivación de la información de anidamiento de ID temporal de SPS y la información de la unidad de NAL de EOS para flujos de bits de múltiples capas, así como la derivación de ManejarCraComoBlaIndicador, se explican más adelante. Varios términos usados a lo largo de esta divulgación son términos amplios que tienen su significado común. Además, en algunas realizaciones, ciertos términos se relacionan con los siguientes conceptos de video. Los medios externos pueden referirse a cualquier aparato o entidad que no es parte de un codificador o decodificador, pero que interactúa con el codificador o decodificador, por ejemplo, a través de una interfaz de programación de aplicaciones (API). En determinadas realizaciones, los medios externos también pueden denominarse aparato externo.
Derivación de información de anidamiento de ID temporal de SPS para flujos de bits de múltiples capas
En las primeras versiones de SHVC y MV-HEVC, la semántica de sps_temporal_id_anidamiento_indicador se puede especificar de la siguiente manera:
_____________ Tabla 3 - sps tempral id anidamiento indicador en SHVC WD 5 y MV-HEVC WD 7_____________ Sps_temporal_id_anidamiento_indicador, cuando sps_max_sub_capas_menosl es mayor que 0, especifica si la interpredicción está adicionalmente restringida para los CVS que se refieren al SPS. Cuando vps_temporal_id_anidamiento_indicador es igual a 1, sps_temporal_id_jerarquización_indicador será igual a 1. Cuando sps_max_sub_capas_menosl es igual a 0, sps_ temporal_id_anidamiento_indicador será igual a 1. Cuando no está presente, se infiere que sps_temporal_id_anidamiento_indicador es igual a vps temporal id anidamiento indicador._____________________________________________________________ En las primeras versiones de SHVC y MV-HEVC, cuando sps_temporal_id_anidamiento_indicador es igual a 1, se puede aplicar lo siguiente:
• Permitir que tIdA sea el valor de TemporalId de la imagen actual imagenA.
• Cualquier imagen imagenB con TemporalId igual a tIdB que sea menor o igual a tIdA no se incluirá en RefImagenEstablecidaStActualAntes, RefImagenEstablecidaStActualDespués o RefImagenEstablecidaLtActual de imagenA cuando existe una imagen imagenC que tiene TemporalId menor que tIdB, sigue imagenB en el orden de decodificación, y precede a imagenA en el orden de decodificación.
Puede haber problemas con la inferencia de sps_temporal_id_anidamiento_indicador cuando el elemento de sintaxis no está presente o indicado. Algunas de las condiciones y/o restricciones pueden ser las siguientes: 1) cuando no está presente, se infiere que el indicador sps_temporal_id_anidamiento es igual a vps_temporal_id_anidamiento_indicador; y 2) cuando sps_max_sub_capas_menos1 es igual a 0, el indicador sps_temporal_id_anidamiento es igual a 1.
Puede ocurrir un conflicto cuando sps_temporal_id_anidamiento_indicador no está presente y los valores de vps_temporal_id_anidamiento_indicador y sps_max_sub_capas_menos1 son ambos iguales a 0. En tales casos, ambas condiciones mencionadas anteriormente no se cumplen al mismo tiempo, y puede que no esté claro si el valor de sps temporaljd anidamiento _indicador debe inferirse que es igual a 0 o 1.
Realización de ejemplo 1
Para abordar el conflicto, la semántica de sps_temporal_id_anidamiento_indicador puede modificarse de la siguiente manera. Las realizaciones de ejemplo en esta divulgación se proporcionan en el contexto de versiones anteriores de SHVC y MV-HEVC (por ejemplo, SHVC WD 5 y MV-HEVC WD 7). Las adiciones a las versiones anteriores de SHVC y MV-HEVC se indican en cursiva, y las eliminaciones de las versiones anteriores de SHVC y MV-HEVC se indican en tachado.
__________ Tabla 4 - Realización de ejemplo 1________________________________ nto_indicador, cuando sps_max_sub_capas_menosl es mayor que 0, especifica si la cionalmente restringida para los CVS que se refieren al SPS. Cuando nto_indicador es igual a 1, sps_temporal_id_jerarquización_indicador será igual a 1. as_menosl es igual a 0, sps_ temporal_id_anidamiento_indicador será igual a 1. l valor de sps_temporal_id_anidamiento_indicador se infiere de la siguiente manera: pas_menos1 es mayor que 0, se infiere que el valor de nto_indicador es igual a vps_temporal_id_anidamiento_indicador.
Figure imgf000028_0001
que el valor de sps temporal id anidamiento indicador es igual a 1.________________
Según algunas realizaciones, los elementos de sintaxis y las variables que se utilizan en la inferencia de sps_temporal_id_anidamiento_indicador pueden referirse a lo siguiente:
• El elemento de sintaxis o variable vps_temporal_id_anidamiento_indicador puede ser similar a sps_temporal_id_anidamiento_indicador y está asociado con un VPS.
- Por ejemplo, vps_temporal_id_anidamiento_indicador puede indicar en el nivel de VPS si una imagen particular que tiene un ID temporal igual o menor que el ID temporal de la imagen actual puede usarse como imagen de referencia cuando existe otra imagen que tiene un ID temporal más bajo que la imagen particular y que sigue a la imagen particular en el orden de decodificación, pero precede a la imagen actual en el orden de decodificación. - vps_temporal_id_anidamiento_indicador puede tener menos precedencia que sps_temporal_id_anidamiento_indicador. Si tanto vps_temporal_id_anidamiento_indicador como sps_temporal_id_anidamiento_indicador están presentes para una capa en particular, se usa el valor de sps_temporal_id_anidamiento_indicador para esa capa, no el valor de vps_temporal_id_anidamiento_indicador. • El elemento de sintaxis o variable sps_max_sub_capas_menos1 se refiere al número máximo de subcapas temporales en una capa en particular menos 1.
- Por ejemplo, si solo hay una subcapa temporal en una capa, el número máximo de subcapas temporales en la capa es 1 y, por lo tanto, el valor de sps_max_sub_capas_menos1 es 0. En otro ejemplo, si hay dos subcapas temporales en una capa, el número máximo de subcapas temporales en la capa es 2 y, por lo tanto, el valor de sps_max_sub_capas_menos1 es 1.
En esta realización, cuando el elemento de sintaxis sps_temporal_id_anidamiento_indicador no está presente en el flujo de bits, el valor de sps_temporal_id_anidamiento_indicador puede inferirse comprobando el valor de sps_max_sub_capas_menos1. Si sps_max_sub_capas_menos1 es mayor que 0, el valor de sps_temporal_id_anidamiento_indicador se establece igual al valor de vps_temporal_id_anidamiento_indicador. Si sps_max_sub_layers_minus1 es menor o igual que 0, el valor de sps_temporal_id_anidamiento_indicador se establece en 1. La realización de ejemplo 1 establece precedencia sobre cuál de las condiciones y/o restricciones 1) y 2) anteriores deben aplicarse primero. La realización de ejemplo 1 puede definir primero cómo inferir el valor de sps_temporal_id_anidamiento_indicador cuando sps_max_sub_capas_menos1 es mayor que 0 ya que una capa tiene más de una subcapa temporal en este caso. Cuando sps_max_sub_capas_menos1 es menor o igual que 0, una capa tiene más de una subcapa temporal, por lo que el valor de sps_temporal_id_anidamiento_indicador puede no ser tan importante.
De esta manera, las técnicas pueden eliminar el conflicto en la derivación de sps_temporal_id_anidamiento_indicador cuando sps_temporal_id_anidamiento_indicador no está presente en el flujo de bits y los valores de vps_temporal_id_anidamiento_indicador y sps_max_sub_capas_menos 1 son ambos iguales a 0.
Método de derivación de información de anidamiento de ID temporal de SPS para flujos de bits de múltiples capas La figura 5 es un diagrama de flujo que ilustra un método de codificación de información de video, según una realización de la presente divulgación. El método se refiere a la derivación de información de anidamiento de ID temporal del SPS para flujos de bits de múltiples capas. El proceso 500 puede ser realizado por un codificador (por ejemplo, el codificador como se muestra en la figura 2A, 2B, etc.), un decodificador (por ejemplo, el decodificador como se muestra en la figura 3A, 3B, etc.), o cualquier otro componente, dependiendo de la realización. Los bloques del proceso 500 se describen con respecto al decodificador 33 en la figura 3B, pero el proceso 500 puede ser realizado por otros componentes, tales como un codificador, como se mencionó anteriormente. El decodificador de video de capa 130B del decodificador 33 y/o el decodificador de capa 030A del decodificador 33 pueden realizar el proceso 500, dependiendo de la realización. Todas las realizaciones descritas con respecto a la figura 5 pueden implementarse por separado o en combinación entre sí. Ciertos detalles relacionados con el proceso 500 se explican anteriormente, por ejemplo, con respecto a la figura 4.
El proceso 500 comienza en el bloque 501. El decodificador 33 puede incluir una memoria para almacenar información de video asociada con una pluralidad de capas.
En el bloque 502, el decodificador 33 determina si un primer elemento de sintaxis está presente en un flujo de bits. El primer elemento de sintaxis se puede asociar con un SPS y un primer indicador indicativo de si se puede anidar el ID temporal de una imagen de referencia para imágenes que se refieren al SPS. En una realización, el primer indicador indica si una imagen actual en una AU actual que se refiere al SPS puede usar una primera imagen como imagen de referencia en donde la primera imagen tiene un ID temporal que es menor o igual a un ID temporal de la imagen actual y precede a la imagen actual en el orden de decodificación cuando una segunda imagen tiene un ID temporal menor que el ID temporal de la primera imagen y sigue a la primera imagen pero precede a la imagen actual en el orden de decodificación. En algunas realizaciones, el primer indicador incluye sps_temporal_id_anidamiento_indicador. La primera imagen no se puede utilizar como imagen de referencia cuando el valor del primer indicador se establece en 1. El primer elemento de sintaxis puede incluir sps_ temporal_id_anidamiento_indicador.
En el bloque 503, si el primer elemento de sintaxis no está presente en el flujo de bits, el decodificador 33 obtiene un segundo elemento de sintaxis que indica un número máximo de subcapas temporales en una capa particular de la pluralidad de capas. El segundo elemento de sintaxis puede incluir sps_max_sub_capas_menos1.
En el bloque 504, si el primer elemento de sintaxis no está presente en el flujo de bits, el decodificador 33 determina si establecer el valor del primer indicador igual al valor de un segundo indicador, el segundo indicador indica si el ID temporal de una imagen de referencia de cualquier imagen se puede anidar basándose, al menos en parte, en el valor del segundo elemento de sintaxis. En una realización, el segundo indicador indica si una imagen actual en una AU actual puede usar una tercera imagen como imagen de referencia en donde la tercera imagen tiene un ID temporal que es menor o igual a un ID temporal de la imagen actual y precede a la imagen actual en el orden de decodificación cuando una cuarta imagen tiene un ID temporal menor que el ID temporal de la tercera imagen y sigue a la tercera imagen pero precede a la imagen actual en el orden de decodificación. En algunas realizaciones, el segundo indicador incluye vps_temporal_id_anidamiento_indicador.
El decodificador 33 puede establecer el valor del primer indicador igual al valor del segundo indicador, en respuesta a que el valor del segundo elemento de sintaxis sea mayor que 0, el segundo indicador se asocia con un VPS en el flujo de bits. El decodificador 33 puede establecer el valor del primer indicador igual a 1, en respuesta a que el valor del segundo elemento de sintaxis sea menor o igual a 0.
El proceso 500 termina en el bloque 505. Pueden añadirse y/u omitirse bloques en el proceso 500, según la realización, y los bloques del proceso 500 pueden realizarse en diferentes órdenes, según la realización. Ciertos detalles relacionados con el proceso 500 se describen en relación con la figura 5A a continuación.
Cualquier característica y/o realización descrita con respecto a la derivación de información de anidamiento de ID temporal del SPS para flujos de bits de múltiples capas en esta divulgación puede implementarse por separado o en cualquier combinación de los mismos. Por ejemplo, cualquier característica y/o realización descrita en relación con las figuras 1-4 y otras partes de la divulgación pueden implementarse en cualquier combinación con cualquier característica y/o realización descrita en conexión con la figura 5 y viceversa.
La figura 5A es un diagrama de flujo que ilustra un método de codificación de información de video, según una realización de la presente divulgación. El método se refiere a la derivación de información de anidamiento de ID temporal del SPS para flujos de bits de múltiples capas. El proceso 500A puede ser realizado por un codificador (por ejemplo, el codificador como se muestra en la figura 2A, 2b , etc.), un decodificador (por ejemplo, el decodificador como se muestra en la figura 3A, 3B, etc.), o cualquier otro componente, dependiendo de la realización. Los bloques del proceso 500A se describen con respecto al decodificador 33 en la figura 3B, pero el proceso 500A puede ser realizado por otros componentes, tales como un codificador, como se mencionó anteriormente. El decodificador de video de capa 130B del decodificador 33 y/o el decodificador de capa 030A del decodificador 33 pueden realizar el proceso 500a , dependiendo de la realización. Todas las realizaciones descritas con respecto a la figura 5A pueden implementarse por separado o en combinación entre sí. Ciertos detalles relacionados con el proceso 500A se explican anteriormente, por ejemplo, con respecto a las figuras 4 y 5.
El proceso 500A comienza en el bloque 501A. El decodificador 33 puede incluir una memoria para almacenar información de video asociada con una pluralidad de capas.
En el bloque 502A, el decodificador 33 determina si un primer elemento de sintaxis asociado con un primer indicador está presente en un flujo de bits. El primer indicador puede indicar si el ID temporal de una imagen de referencia se puede anidar y se puede asociar con un SPS en el flujo de bits. El primer indicador puede indicar si una imagen actual en una AU actual puede usar una primera imagen como imagen de referencia donde la primera imagen tiene un ID temporal que es menor o igual a un ID temporal de la imagen actual y precede a la imagen actual en el orden de decodificación cuando una segunda imagen tiene un ID temporal menor que el ID temporal de la primera imagen y sigue a la primera imagen pero precede a la imagen actual en el orden de decodificación. La primera imagen no se puede utilizar como imagen de referencia cuando el valor del primer indicador se establece en 1. En una realización, el primer elemento de sintaxis es el primer elemento de sintaxis es sps_temporal_id_anidamiento_indicador. En una realización, el primer indicador es sps_temporal_id_anidamiento_indicador.
En el bloque 503A, si el primer elemento de sintaxis no está presente en el flujo de bits, el decodificador 33 obtiene un segundo elemento de sintaxis que indica un número máximo de subcapas temporales en una capa particular de la pluralidad de capas. En una realización, el segundo elemento de sintaxis es sps_max_sub_capas_menos1.
En el bloque 504A, si el valor del segundo elemento de sintaxis es mayor que 0, el decodificador 33 establece el valor del primer indicador igual al valor de un segundo indicador que indica si se puede anidar un ID temporal de una imagen de referencia, donde el segundo indicador está asociado con un VPS en el flujo de bits, en el bloque 505A. El segundo indicador puede indicar si una imagen actual en una AU actual puede usar una tercera imagen como imagen de referencia donde la tercera imagen tiene un ID temporal que es menor o igual a un ID temporal de la imagen actual y precede a la imagen actual en el orden de decodificación cuando una cuarta imagen tiene un ID temporal menor que el ID temporal de la tercera imagen y sigue a la tercera imagen pero precede a la imagen actual en el orden de decodificación. La tercera imagen y la cuarta imagen pueden referirse a la misma imagen que la primera imagen y la segunda imagen de arriba, respectivamente. El primer y segundo indicador pueden indicar si una imagen en particular que tiene el mismo ID temporal o uno menor que la imagen actual puede usarse como imagen de referencia cuando existe otra imagen que tiene un ID temporal menor que la imagen particular y sigue a la imagen particular pero precede a la imagen actual en el orden de decodificación. En una realización, el segundo indicador es vps_temporal_id_anidamiento_indicador.
En el bloque 504A, si el valor del segundo elemento de sintaxis es menor o igual a 0, el decodificador 33 establece el valor del primer indicador igual a 1, en el bloque 506A.
El proceso 500A finaliza en el bloque 507A. Pueden añadirse y/u omitirse bloques en el proceso 500A, según la realización, y los bloques del proceso 500A pueden realizarse en diferentes órdenes, según la realización.
Cualquier característica y/o realización descrita con respecto a la derivación de información de anidamiento de ID temporal del SPS para flujos de bits de múltiples capas en esta divulgación puede implementarse por separado o en cualquier combinación de los mismos. Por ejemplo, cualquier característica y/o realización descrita en relación con las figuras 1-5 y otras partes de la divulgación pueden implementarse en cualquier combinación con cualquier característica y/o realización descrita en conexión con la figura 5A y viceversa.
Información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas
Dado que SHVC y MV-HEVC pueden contener imágenes de una o más capas, una unidad de acceso puede contener imágenes de diferentes capas pero con el mismo valor de POC. Por lo tanto, puede que no esté claro si una unidad de NAL de final de secuencia se aplica a una determinada capa o se aplica a varias o todas las capas. Una unidad de NAL de EOS puede indicar el final de una secuencia de imágenes o unidades de acceso. Por ejemplo, la imagen o la unidad de acceso después de un EOS pertenecen a otra secuencia. En flujos de bits de múltiples capas (por ejemplo, SHVC o MV-HEVC), dado que una unidad de acceso puede contener más de una imagen, no está claro si el alcance de una unidad de NAL de final de secuencia está asociado con una imagen o una unidad de acceso. En consecuencia, las técnicas según ciertos aspectos pueden modificar las versiones anteriores de SHVC y MV-HEVC para aclarar si la unidad de NAL de EOS se aplica a una capa en particular, o algunas o todas las capas.
Realización de ejemplo 2
Las realizaciones de ejemplo en esta divulgación se proporcionan en el contexto de versiones anteriores de SHVC y MVHEVC (por ejemplo, SHVC WD 5 y MV-HEVC WD 7). Las instrucciones para modificar las versiones anteriores de SHVC y MVHEVC se indican en cursiva, y las eliminaciones de las versiones anteriores de SHVC y MV-HEVC se indican en tachado.
_________________________________ Tabla 5 - Realización de ejemplo 2________________________________ Subcláusula F.7.4.2.2
Aplicar la siguiente adición:
- Cuando nal_unidad_tipo es igual a EOS_NUT, el valor de nuh_capa_id será igual a 0. Los decodificadores ignorarán (es decir, eliminarán del flujo de bits y descartarán) todas las unidades de NAL con un valor de tipo nal unidad igual a EOS NUT y un valor de nuh capa id no igual a 0._____________________________________ Subcláusula F.7.4.2.4.3:
Aplicar la siguiente modificación:
Reemplazar
Es un requisito de conformidad del flujo de bits que, cuando esté presente, la siguiente unidad de acceso después de una unidad de acceso que contiene una unidad de NAL de final de secuencia o una unidad de NAL de final de flujo de bits sea una unidad de acceso IRAP, que puede ser una unidad de acceso IDR, una unidad de acceso BLA o una unidad de acceso CRA.
con
Es un requisito de conformidad del flujo de bits que, cuando esté presente, la siguiente unidad de acceso después de una unidad de acceso que contenga una unidad de NAL de final de secuencia o una unidad de NAL de final de flujo de bits sea una unidad de acceso de IRAP._______________________________________________________ Subcláusula F.7.4.3.6:
Aplicar la siguiente adición:_______________________________________________________________________ _________________________________________ (continuación)__________________________
Hay como máximo una unidad de NAL de final de secuencia presente en una unidad de acceso.
Subcláusula F.7.4.3.7:
Aplicar la siguiente adición:
Hay como máximo una unidad de NAL de final de flujo de bits presente en una unidad de acceso.
En esta realización, hay una unidad de NAL de EOS en una AU que se aplica a todas las capas en la AU. Por ejemplo, la unidad de NAL de EOS que está presente en una AU tiene un ID de capa igual a 0. Si la unidad de NAL de EOS tiene un ID de capa mayor que 0, el decodificador puede ignorar la unidad de NAL de EOS. Una unidad de NAL puede tener varios tipos y el tipo EOS_NUT puede indicar que la unidad de NAL contiene un EOS. Según ciertos aspectos, una unidad de NAL que es del tipo EOS_NUT puede denominarse unidad de NAL de EOS.
La realización de ejemplo 2 aclara que la unidad de NAL de EOS se aplica a todas las capas y, por lo tanto, elimina la ambigüedad en el procesamiento de unidad de NAL de EOS en flujos de bits de múltiples capas.
Realización de ejemplo 3
Las realizaciones de ejemplo en esta divulgación se proporcionan en el contexto de versiones anteriores de SHVC y MVHEVC (por ejemplo, SHVC WD 5 y MV-HEVC WD 7). Las instrucciones para modificar las versiones anteriores de SHVC y MVHEVc se indican en cursiva. Las adiciones a las versiones anteriores de SHVC y MV-HEVC se indican en cursiva y subrayado, y las eliminaciones de las versiones anteriores de SHVC y MV-HEVC se indican en tachado.
__________________________________ Tabla 6 - Realización de ejemplo 3________________________________ Subcláusula 8.1:
Cuando la imagen actual es una imagen de IRAP, se aplica lo siguiente:
- Si la imagen actual con un valor particular de nuh_capa_id es una imagen de IDR, una imagen de BLA, la primera imagen con ese valor particular de nuh_capa_id en el flujo de bits en orden de decodificación, o la primera imagen con ese valor particular de nuh_capa_id que sigue a una unidad de NAL de final de secuencia con ese particular valor de nuh- capa id en el orden de decodificación, la variable SinRaslSalidaIndicador se establece igual a 1. Subcláusula F.7.4.2.4.3:__________________________________________________________________________ Agregar la siguiente modificación:
Reemplazar
Es un requisito de conformidad del flujo de bits que, cuando esté presente, la siguiente unidad de acceso después de una unidad de acceso que contiene una unidad de NAL de final de secuencia o una unidad de NAL de final de flujo de bits sea una unidad de acceso IRAP, que puede ser una unidad de acceso IDR, una unidad de acceso BLA o una unidad de acceso CRA.
con
Es un requisito de conformidad del flujo de bits que, cuando esté presente, la siguiente unidad de acceso después de una unidad de acceso que contenga una unidad de NAL de final de flujo de bits sea una unidad de acceso de IRAP. Es un requisito de conformidad del flujo de bits que, cuando esté presente, la siguiente imagen con un valor particular de nuh_capa_id después de una unidad de NAL de EOS con ese valor particular de nuh_capa_id sea una imagen de IRAP, que puede ser una imagen de IDR, una imagen de BLA o una imagen de CRA.____________ Subcláusula F.7.4.2.4.4:
Aplicar la siguiente modificación:
Reemplazar
- Cuando está presente una unidad de NAL de final de secuencia, será la última unidad de NAL en la unidad de acceso distinta de una unidad de NAL de final de flujo de bits (cuando esté presente).
con
- Cuando está presente una unidad NAL de final de secuencia con un valor particular de nuh_capa_id, seguirá todas las unidades de NAL de VCL con nuh_capa_id menor o igual que ese valor particular de nuh_capa_id en la unidad de acceso, y precederá a la unidad de NAL de final de flujo de bits, cuando esté presente, en la unidad de acceso._______________________________________________________________________________________ En esta realización, una unidad de NAL de EOS en una capa particular solo es aplicable a esa capa. Por ejemplo, cada capa puede tener su propia unidad de NAL de EOS y una AU puede incluir más de una unidad de NAL de EOS. Una imagen que sigue a una unidad de NAL de EOS de una capa particular debe ser una imagen de IRAP, que puede ser una imagen de IDR, una imagen de BLA o una imagen de CRA. Cuando existe una unidad de NAL de EOS para una capa particular, la unidad de NAL de EOS puede seguir las unidades de NAL de la capa de codificación de video (VCL) con el mismo ID o un ID de capa más bajo que la capa particular y preceder a la unidad de NAL de final del flujo de bits (EOB), cuando está presente, en la AU.
De esta manera, la realización de ejemplo 3 aclara que la unidad de NAL de EOS en una capa particular se aplica solo a la capa particular y, por lo tanto, elimina la ambigüedad en el procesamiento de unidades de NAL de EOS en flujos de bits de múltiples capas.
Método de derivación de información de la unidad de NAL de para flujos de bits de múltiples capas
La figura 6 es un diagrama de flujo que ilustra un método de codificación de información de video, según una realización de la presente divulgación. El método se refiere a la derivación de información de la unidad NAL de EOS para flujos de bits de múltiples capas. El proceso 600 puede ser realizado por un codificador (por ejemplo, el codificador como se muestra en la figura 2A, 2B, etc.), un decodificador (por ejemplo, el decodificador como se muestra en la figura 3A, 3B, etc.), o cualquier otro componente, dependiendo de la realización. Los bloques del proceso 600 se describen con respecto al decodificador 33 en la figura 3B, pero el proceso 600 puede ser realizado por otros componentes, tales como un codificador, como se mencionó anteriormente. El decodificador de video de capa 130B del decodificador 33 y/o el decodificador de capa 030A del decodificador 33 pueden realizar el proceso 600, dependiendo de la realización. Todas las realizaciones descritas con respecto a la figura 6 pueden implementarse por separado o en combinación entre sí. Ciertos detalles relacionados con el proceso 600 se explican anteriormente, por ejemplo, con respecto a las figuras 4 y 5.
El proceso 600 comienza en el bloque 601. El decodificador 33 puede incluir una memoria para almacenar información de video asociada con una o más capas.
En el bloque 602, el decodificador 33 codifica una AU actual en un flujo de bits que incluye una pluralidad de capas, la pluralidad de capas incluye una capa de referencia y al menos una capa de mejora correspondiente.
En el bloque 603, el decodificador 33 codifica una primera unidad de NAL de EOS asociada con la capa de referencia en la AU actual, la primera unidad de NAL de EOS tiene el mismo ID de capa que la capa de referencia. Una imagen que está en una Au posterior a la AU actual y tiene el mismo ID de capa que la primera unidad de NAL de EOS puede ser una imagen de IRAP seleccionada entre una o más de una imagen de IDR, una imagen de BLA o una imagen de CRA. En determinadas realizaciones, una imagen de IRAP en una AU posterior a la AU actual, que tiene el mismo ID de capa que la primera unidad de NAL de EOS, tiene un valor de SinRaslSalidaIndicador igual a 1. En algunas realizaciones, la primera unidad de NAL de EOS es posterior a una o más unidades de VCL en la AU actual que tienen el mismo ID de capa o un ID de capa más bajo que la capa de referencia, y la primera unidad de NAL de EOS precede a cualquier unidad de NAL de final de flujo de bits en la AU actual.
En el bloque 604, el decodificador 33 codifica una segunda unidad de NAL de EOS asociada con la capa de mejora en la AU actual, la segunda unidad de NAL de EOS tiene el mismo ID de capa que la capa de mejora. Una imagen que está en una AU posterior a la AU actual y tiene el mismo ID de capa que la segunda unidad de NAL de EOS puede ser una imagen de IRAP seleccionada entre una o más de una imagen de IDR, una imagen de BLA o una imagen de CRA. En determinadas realizaciones, una imagen de IRAP en una AU posterior a la AU actual, que tiene el mismo ID de capa que la segunda unidad de NAL de EOS, tiene un valor de SinRaslSalidaIndicador igual a 1. En algunas realizaciones, la segunda unidad de NAL de EOS es posterior a una o más unidades de VCL en la AU actual que tienen el mismo ID de capa o un ID de capa más bajo que la capa de mejora, y la segunda unidad de NAL de EOS precede a cualquier unidad de NAL de final de flujo de bits en la AU actual.
El proceso 600 termina en el bloque 605. Pueden añadirse y/u omitirse bloques en el proceso 600, según la realización, y los bloques del proceso 600 pueden realizarse en diferentes órdenes, según la realización.
Cualquier característica y/o realización descrita con respecto a la derivación de información de unidad de NAL de EOS para flujos de bits de múltiples capas en esta divulgación puede implementarse por separado o en cualquier combinación de los mismos. Por ejemplo, cualquier característica y/o realización descrita en relación con las figuras 1-5 y otras partes de la divulgación pueden implementarse en cualquier combinación con cualquier característica y/o realización descrita en conexión con la figura 6 y viceversa.
Manejo de CRA como BLA para flujos de bits de múltiples capas
Si una AU contiene imágenes de más de una capa como en SHVC y MV-HEVC, puede ser incierto si una variable o un indicador asociado con una capa en particular (por ejemplo, la capa base), como la variable ManejarCraComoBlaIndicador, debería aplicarse a toda la UA o solo la capa particular con la que está asociada. Con los enfoques existentes para SHVC / MVHEVC, ManejarCraComoBlaIndicador puede asociarse con cada imagen de c Ra . La variable puede introducirse como un medio externo para facilitar el acceso aleatorio o el empalme cuando el sistema no puede cambiar una imagen de CRA a una imagen de BLA. En el contexto de múltiples capas, el acceso aleatorio y el empalme se pueden realizar en una imagen de IRAP en la capa base (por ejemplo, una unidad de acceso de IRAP). Por lo tanto, el valor de ManejarCraComoBlaIndicador para una imagen de CRA en la capa base o en cualquier otra capa debe ser el mismo. Por ejemplo, cuando el acceso aleatorio ocurre en una unidad de acceso de IRAP con una imagen de CRA en la capa base, y una o más (o incluso todas) las imágenes de la capa de mejora en la misma unidad de acceso también son imágenes de CRA, puede ser deseable que tengan el mismo valor de ManejarCraComoBlaIndicador, de modo que el decodificador las trataría o manejaría de la misma manera. Por consiguiente, la variable ManejarCraComoBlaIndicador se puede simplificar para asociarla con una unidad de acceso, en lugar de asociarla con una imagen.
Realización de ejemplo 4
Las realizaciones de ejemplo en esta divulgación se proporcionan en el contexto de versiones anteriores de SHVC y MVHEVC (por ejemplo, SHVC WD 5 y MV-HEVC WD 7). Las adiciones a las versiones anteriores de SHVC y MV­ HEVC se indican en cursiva, y las eliminaciones de las versiones anteriores de SHVC y MV-HEVC se indican en tachado.
_________________________________ Tabla 7 - Realización de ejemplo 4________________________________ Cuando la unidad de acceso actual contiene una o más imágenes de CRA, la variable ManejarCraComoBlaIndicador para todas las imágenes de CRA en la unidad de acceso se deriva como se especifica a continuación:
- Si algún medio externo no especificado en esta memoria descriptiva está disponible para establecer la variable ManejarCraComoBlaIndicador en un valor, la variable ManejarCraComoBlaIndicador se establece igual al valor proporcionado por el medio externo.
- De lo contrario, la variable ManejarCraComoBlaIndicador se establece en 0._______________________________ En esta realización, cuando una AU contiene una o más imágenes de CRA, la variable ManejarCraComoBlaIndicador se deriva para que sea la misma para todas las imágenes de CRA en esa AU. Si los medios externos pueden proporcionar el valor de ManejarCraComoBlaIndicador, el valor proporcionado por los medios externos se utiliza para establecer el valor de ManejarCraComoBlaIndicador. De lo contrario, ManejarCraComoBlaIndicador se establece en 0.
La asociación de ManejarCraComoBlaIndicador con cada imagen de CRA puede conducir potencialmente a tener diferentes valores para ManejarCraComoBlaIndicador para las diferentes imágenes de CRA. Por consiguiente, las técnicas pueden simplificar la inferencia del valor de ManejarCraComoBlaIndicador asegurándose de que el valor de ManejarCraComoBlaIndicador para todas las imágenes de CRA en una AU sea el mismo.
La información y las señales divulgadas en la presente invención pueden ser representadas utilizando cualquiera de una variedad de tecnologías y técnicas diferentes. Por ejemplo, los datos, instrucciones, comandos, información, señales, bits, símbolos y chips a los que se puede hacer referencia en toda la descripción anterior pueden estar representados por voltajes, corrientes, ondas electromagnéticas, campos magnéticos o partículas, campos ópticos o partículas, o cualquier combinación de los mismos.
Los diversos bloques lógicos, circuitos y pasos de algoritmo ilustrativos descritos en relación con las realizaciones divulgadas en la presente pueden implementarse como hardware electrónico, software informático o combinaciones de ambos. Para ilustrar claramente esta intercambiabilidad de hardware y software, diversos componentes, bloques, módulos, circuitos y pasos ilustrativos se han descrito anteriormente generalmente en términos de su funcionalidad. Si dicha funcionalidad se implementa como hardware o software depende de la aplicación particular y las restricciones de diseño impuestas en el sistema general. Los expertos pueden implementar la funcionalidad descrita de diferentes maneras para cada aplicación en particular, pero dichas decisiones de implementación no deben interpretarse como una desviación del alcance de la presente invención.
Las técnicas descritas en la presente pueden implementarse en hardware, software, microprograma o cualquier combinación de los mismos. Dichas técnicas se pueden implementar en cualquiera de una variedad de dispositivos tales como ordenadores de uso general, dispositivos de comunicación inalámbrica o dispositivos de circuitos integrados que tienen múltiples usos, incluida la aplicación en dispositivos de comunicación inalámbrica y demás dispositivos. Todas las características descritas como módulos o componentes pueden implementarse juntas en un dispositivo lógico integrado o por separado como dispositivos lógicos discretos pero interoperables. Si se implementan en software, las técnicas pueden realizarse al menos en parte mediante un medio de almacenamiento de datos legible por ordenador que comprende un código de programa que incluye instrucciones que, cuando se ejecutan, realizan uno o más de los métodos descritos anteriormente. El medio de almacenamiento de datos legible por ordenador puede formar parte de un producto de programa informático, que puede incluir materiales de embalaje. El medio legible por ordenador puede comprender memoria o medios de almacenamiento de datos, como memoria de acceso aleatorio (RAM), como una memoria de acceso aleatorio dinámica síncrona (SDRAM), memoria de solo lectura (ROM), memoria de acceso aleatorio no volátil (NVRAM), memoria de solo lectura programable borrable eléctricamente (EEPROM), memoria rápida, medios de almacenamiento de datos magnéticos u ópticos, y similares. Las técnicas, adicional o alternativamente, pueden realizarse al menos en parte mediante un medio de comunicación legible por ordenador que transporta o comunica código de programa en forma de instrucciones o estructuras de datos y que se puede acceder, leer y/o ejecutar por un ordenador, como señales u ondas propagadas.
El código del programa puede ser ejecutado por un procesador, que puede incluir uno o más procesadores, como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (f PgA), u otro circuito lógico integrado o discreto equivalente. Dicho procesador puede configurarse para realizar cualquiera de las técnicas descritas en esta divulgación. Un procesador de propósito general puede ser un microprocesador, pero como alternativa, el procesador puede ser cualquier procesador convencional, controlador, microcontrolador o máquina de estado. Un procesador también puede implementarse como una combinación de dispositivos informáticos, por ejemplo, una combinación de la Tabla 7 - Ejemplo de realización 4 de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores junto con un núcleo DSP, o cualquier otra configuración. Por consiguiente, el término "procesador", como se usa en la presente, puede referirse a cualquiera de las estructuras anteriores, cualquier combinación de la estructura anterior o cualquier otra estructura o aparato adecuado para la implementación de las técnicas descritas en la presente. Además, en algunos aspectos, la funcionalidad descrita en la presente puede proporcionarse dentro de módulos de software dedicados o módulos de hardware configurados para codificar y decodificar, o incorporarse en un codificador-decodificador de video combinado (CÓDEC). Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, incluido un microteléfono, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se describió anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o microprograma adecuados.
Se han descrito varias realizaciones de la divulgación. Estas y otras realizaciones están dentro del alcance de las siguientes reivindicaciones.

Claims (3)

REIVINDICACIONES
1. Un aparato para codificar información de video según la extensión de codificación de video escalable de HEVC, que comprende:
una memoria para almacenar información de video asociada con una o más capas; y
un procesador de hardware acoplado operativamente a la memoria y configurado para:
codificar una unidad de acceso actual (AU) en un flujo de bits que incluye una pluralidad de capas, la pluralidad de capas incluye una capa de referencia que tiene un primer identificador de capa, ID, elemento de sintaxis nuh_capa_id y al menos una capa de mejora correspondiente que tiene un segundo elemento de sintaxis de ID de capa nuh_capa_id que es mayor que el ID de la primera capa, en donde la AU actual puede incluir más de una unidad de capa de abstracción de red (NAL) de final de secuencia (EOS);
en la AU actual, codificar una primera unidad de NAL de EOS asociada con la capa de referencia, la primera unidad de NAL de EOS tiene el mismo primer elemento de sintaxis de ID de capa que la capa de referencia;
en la AU actual, codificar una segunda unidad de NAL de EOS asociada con la capa de mejora, la segunda unidad de NAL de EOS tiene el mismo segundo ID de capa que la capa de mejora, en donde cada capa puede tener su propia unidad de NAL de EOS y una unidad de NAL de EOS en una capa en particular solo es aplicable a esa capa, en donde una imagen que está en una AU posterior a la AU actual y tiene el mismo ID de capa que la primera unidad de NAL de EOS es una imagen de punto de acceso intraaleatorio (IRAP) seleccionada de una o más de una imagen de actualización de decodificación instantánea (IDR), una imagen de acceso a enlace roto (BLA) o una imagen de acceso aleatorio limpio (CRA); y
en donde una imagen que está en una Au posterior a la AU actual y tiene el mismo ID de capa que la segunda unidad de NAL de EOS es una imagen de IRAP seleccionada entre una o más de una imagen de IDR, una imagen de BLA o una imagen de CRA;
codificar la AU posterior a la AU actual basándose en la restricción de un primer SinRaslSalidaIndicador de la primera imagen e IRAP para que sea igual a 1 en respuesta a (i) la AU actual que contiene la primera unidad de NAL de EOS que tiene la primera ID de capa y (ii) la siguiente
AU que contiene una primera imagen de IRAP que tiene el primer ID de capa; SinRaslSalidaIndicador indica que las imágenes principales omitidas de acceso aleatorio (RASL) no se emitirán si se establecen en 1 y que las imágenes de RASL se emitirán si se establecen en 0; y restringir un segundo SinRaslSalidaIndicador de la segunda imagen de IRAP para que sea igual a 1 en respuesta a (i) la AU actual que contiene la segunda unidad de NAL de EOS que tiene el segundo ID de capa y (ii) la AU subsiguiente que contiene una segunda imagen de IRAP que tiene el segundo ID;
en donde la primera unidad de NAL de EOS es posterior a una o más unidades de capa de codificación de video (VCL) en la AU actual que tienen el mismo ID de capa o un ID de capa inferior que la capa de referencia, y en donde la primera unidad de nAl de EOS precede a cualquier unidad NAL de final de flujo de bits en la AU actual;
en donde la segunda unidad de nAl de EOS es posterior a una o más unidades de VCL en la AU actual que tienen el mismo ID de capa o un ID de capa más bajo que la capa de mejora, y en donde la segunda unidad de NAL de EOS precede a cualquier unidad de NAL de final de flujo de bits en la AU actual.
2. Un método de codificación de información de video según la extensión de codificación de video escalable de HEVC, que comprende:
almacenar información de video asociada con una o más capas;
codificar una unidad de acceso actual (AU) en un flujo de bits que incluye una pluralidad de capas, la pluralidad de capas incluye una capa de referencia que tiene un primer identificador de capa, ID, elemento de sintaxis nuh_capa_id y al menos una capa de mejora correspondiente que tiene un segundo elemento de sintaxis de ID de capa nuh_capa_id que es mayor que el ID de la primera capa, en donde la AU actual puede incluir más de una unidad de capa de abstracción de red (NAL) de final de secuencia (EOS); en la AU actual, codificar una primera unidad de NAL de EOS asociada con la capa de referencia, la primera unidad de NAL de EOS tiene el mismo primer elemento de sintaxis de ID de capa que la capa de referencia;
en la AU actual, codificar una segunda unidad de NAL de EOS asociada con la capa de mejora, la segunda unidad de NAL de EOS tiene el mismo segundo ID de capa que la capa de mejora, en donde cada capa puede tener su propia unidad de NAL de EOS y una unidad de NAL de EOS en una capa en particular solo es aplicable a esa capa, en donde una imagen que está en una AU posterior a la AU actual y tiene el mismo ID de capa que la primera unidad de NAL de EOS es una imagen de punto de acceso intraaleatorio (IRAP) seleccionada de una o más de una imagen de actualización de decodificación instantánea (IDR), una imagen de acceso a enlace roto (BLA) o una imagen de acceso aleatorio limpio (CRA); y en donde una imagen que está en una AU posterior a la AU actual y tiene el mismo ID de capa que la segunda unidad de NAL de EOS es una imagen de IRAP seleccionada entre una o más de una imagen de IDR, una imagen de BLA o una imagen de CRA;
codificar la AU posterior a la AU actual basándose en la restricción de un primer SinRaslSalidaIndicador de la primera imagen de TRAP para que sea igual a 1, en respuesta a (i) la AU actual que contiene la primera unidad de NAL de EOS que tiene la primera ID de capa y (ii) la AU posterior que contiene una primera imagen de IRAP que tiene el primer ID de capa; SinRaslSalidaIndicador indica que las imágenes principales omitidas de acceso aleatorio (RASL) no se emitirán si se establecen en 1 y que las imágenes de RASL se emitirán si se establecen en 0; y restringir un segundo SinRaslSalidaIndicador de la segunda imagen de IRAP para que sea igual a 1 en respuesta a (i) la AU actual que contiene la segunda unidad de NAL de EOS que tiene el segundo ID de capa y (ii) la AU subsiguiente que contiene una segunda imagen de IRAP que tiene el segundo ID;
en donde la primera unidad de NAL de EOS es posterior a una o más unidades de capa de codificación de video (VCL) en la AU actual que tienen el mismo ID de capa o un ID de capa inferior que la capa de referencia, y en donde la primera unidad de nAl de EOS precede a cualquier unidad NAL de final de flujo de bits en la AU actual; y en donde la segunda unidad de nAl de EOS es posterior a una o más unidades de VCL en la AU actual que tienen el mismo ID de capa o un ID de capa más bajo que la capa de mejora, y en donde la segunda unidad de NAL de EOS precede a cualquier unidad de NAL de final de flujo de bits en la AU actual.
3. Un medio legible por ordenador no transitorio que comprende instrucciones que cuando se ejecutan en un procesador que comprende hardware informático hacen que el procesador lleve a cabo el método de la reivindicación 2.
ES15717693T 2014-03-18 2015-03-16 Derivación de la información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas Active ES2887368T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461955158P 2014-03-18 2014-03-18
US14/657,624 US9794595B2 (en) 2014-03-18 2015-03-13 Derivation of end of sequence NAL unit information for multi-layer bitstreams
PCT/US2015/020734 WO2015142725A1 (en) 2014-03-18 2015-03-16 Derivation of end of sequence nal unit information for multi-layer bitstreams

Publications (1)

Publication Number Publication Date
ES2887368T3 true ES2887368T3 (es) 2021-12-22

Family

ID=54143328

Family Applications (2)

Application Number Title Priority Date Filing Date
ES15715536T Active ES2889976T3 (es) 2014-03-18 2015-03-16 Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa
ES15717693T Active ES2887368T3 (es) 2014-03-18 2015-03-16 Derivación de la información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES15715536T Active ES2889976T3 (es) 2014-03-18 2015-03-16 Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa

Country Status (9)

Country Link
US (2) US11388441B2 (es)
EP (2) EP3120563B1 (es)
JP (2) JP6622211B2 (es)
KR (2) KR102257870B1 (es)
CN (2) CN106105224B (es)
BR (1) BR112016021473B1 (es)
ES (2) ES2889976T3 (es)
MX (2) MX360168B (es)
WO (2) WO2015142725A1 (es)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11388441B2 (en) 2014-03-18 2022-07-12 Qualcomm Incorporated Derivation of SPS temporal ID nesting information for multi-layer bitstreams
WO2015194183A1 (en) * 2014-06-18 2015-12-23 Sharp Kabushiki Kaisha Slice Type and Decoder Conformance
WO2016098056A1 (en) * 2014-12-18 2016-06-23 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
US11595652B2 (en) 2019-01-28 2023-02-28 Op Solutions, Llc Explicit signaling of extended long term reference picture retention
US10349067B2 (en) * 2016-02-17 2019-07-09 Qualcomm Incorporated Handling of end of bitstream NAL units in L-HEVC file format and improvements to HEVC and L-HEVC tile tracks
US10623755B2 (en) * 2016-05-23 2020-04-14 Qualcomm Incorporated End of sequence and end of bitstream NAL units in separate file tracks
GB2553556B (en) * 2016-09-08 2022-06-29 V Nova Int Ltd Data processing apparatuses, methods, computer programs and computer-readable media
CN117857812A (zh) * 2018-02-20 2024-04-09 弗劳恩霍夫应用研究促进协会 支持变化的分辨率和/或有效地处理区域级打包的图片/视频编码
US10999590B2 (en) * 2018-12-28 2021-05-04 Tencent America LLC Method for identification of random access point and picture types
EP3918801A4 (en) * 2019-01-28 2022-06-15 OP Solutions, LLC ONLINE AND OFFLINE CHOICE OF EXTENDED LONG-TERM REFERENCE IMAGE STORAGE
US11109041B2 (en) * 2019-05-16 2021-08-31 Tencent America LLC Method and apparatus for video coding
US11153583B2 (en) * 2019-06-07 2021-10-19 Qualcomm Incorporated Spatial scalability support in video encoding and decoding
US11228777B2 (en) * 2019-12-30 2022-01-18 Tencent America LLC Method for layerwise random access in a coded video stream
US11356698B2 (en) 2019-12-30 2022-06-07 Tencent America LLC Method for parameter set reference constraints in coded video stream
MX2022011208A (es) * 2020-03-17 2022-09-19 Bytedance Inc Uso de conjunto de parametros de video en codificacion de video.
CN115668933A (zh) 2020-05-22 2023-01-31 字节跳动有限公司 编解码视频中nal单元的排序
EP4150901A4 (en) 2020-06-12 2023-10-18 ByteDance Inc. IMAGE HEADER CONSTRAINTS FOR MULTILAYER VIDEO CODING

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090161762A1 (en) 2005-11-15 2009-06-25 Dong-San Jun Method of scalable video coding for varying spatial scalability of bitstream in real time and a codec using the same
US9516379B2 (en) 2011-03-08 2016-12-06 Qualcomm Incorporated Buffer management in video codecs
RU2680749C2 (ru) 2012-06-22 2019-02-26 Вилос Медиа Интернэшнл Лимитед Способ кодирования изображения, способ декодирования изображения, устройство кодирования изображения, устройство декодирования изображения и устройство кодирования и декодирования изображения
US9602827B2 (en) 2012-07-02 2017-03-21 Qualcomm Incorporated Video parameter set including an offset syntax element
US9912941B2 (en) 2012-07-02 2018-03-06 Sony Corporation Video coding system with temporal layers and method of operation thereof
CN104620578B (zh) 2012-07-06 2018-01-02 三星电子株式会社 用于随机访问的多层视频编码的方法和设备以及用于随机访问的多层视频解码的方法和设备
CN104137561B (zh) 2012-12-10 2017-10-03 Lg电子株式会社 解码图像的方法和使用其的装置
US9674533B2 (en) * 2013-04-05 2017-06-06 Qualcomm Incorporated Picture alignments in multi-layer video coding
US9532052B2 (en) 2013-04-08 2016-12-27 Qualcomm Incorporated Cross-layer POC alignment for multi-layer bitstreams that may include non-aligned IRAP pictures
WO2015056941A1 (ko) 2013-10-14 2015-04-23 한국전자통신연구원 다계층 기반의 영상 부호화/복호화 방법 및 장치
CN105723712B (zh) 2013-10-14 2019-06-28 韩国电子通信研究院 基于多层的图像编码/解码方法和设备
US20150195554A1 (en) * 2014-01-03 2015-07-09 Sharp Laboratories Of America, Inc. Constraints and enhancements for a scalable video coding system
US11388441B2 (en) 2014-03-18 2022-07-12 Qualcomm Incorporated Derivation of SPS temporal ID nesting information for multi-layer bitstreams

Also Published As

Publication number Publication date
KR102257861B1 (ko) 2021-05-27
CN106105224A (zh) 2016-11-09
CN106105223B (zh) 2019-03-29
WO2015142725A1 (en) 2015-09-24
MX2016011959A (es) 2016-12-05
EP3120551B1 (en) 2021-08-25
US11388441B2 (en) 2022-07-12
KR20160132875A (ko) 2016-11-21
EP3120551A1 (en) 2017-01-25
EP3120563B1 (en) 2021-08-25
MX360168B (es) 2018-10-12
US9794595B2 (en) 2017-10-17
WO2015142712A1 (en) 2015-09-24
JP6622211B2 (ja) 2019-12-18
EP3120563A1 (en) 2017-01-25
MX359458B (es) 2018-09-28
JP6542251B2 (ja) 2019-07-10
BR112016021473A2 (pt) 2017-08-15
CN106105223A (zh) 2016-11-09
CN106105224B (zh) 2019-04-12
KR20160132874A (ko) 2016-11-21
US20150271506A1 (en) 2015-09-24
BR112016021473A8 (pt) 2021-07-06
ES2889976T3 (es) 2022-01-14
JP2017509254A (ja) 2017-03-30
KR102257870B1 (ko) 2021-05-27
BR112016021473B1 (pt) 2024-01-23
MX2016011758A (es) 2016-12-12
BR112016021453A2 (pt) 2017-08-15
JP2017513352A (ja) 2017-05-25
US20150271526A1 (en) 2015-09-24
BR112016021453A8 (pt) 2021-07-06

Similar Documents

Publication Publication Date Title
ES2887368T3 (es) Derivación de la información de unidad de NAL de final de secuencia para flujos de bits de múltiples capas
ES2895442T3 (es) Dispositivo y método para la codificación escalable de información de video
ES2778463T3 (es) Inferencia mejorada de indicador de no emisión de imagen previa en codificación de video
ES2879635T3 (es) Vaciado de imágenes e inferencia de parámetros de búfer de imágenes decodificadas para flujos de bits multicapa
ES2895270T3 (es) Codificación de mensajes SEI de MCTS-EIS de una unidad de acceso
ES2898663T3 (es) Perfil, capa, nivel para la 0-ésima capa de salida establecida en la codificación de vídeo
ES2854274T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2905124T3 (es) Dispositivo y método para procesar datos de video
EP3090551B1 (en) Support of base layer of a different codec in multi-layer video coding
ES2834481T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
CA2951530C (en) Full picture order count reset for multi-layer codecs
ES2887369T3 (es) Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa
CA2930446C (en) Method for coding a reference picture set (rps) in multi-layer coding
NZ719895B2 (en) Improved inference of nooutputofpriorpicsflag in video coding
BR112016030211B1 (pt) Restrições de conformidade de fluxo de bits em codificação de vídeo escalonável