ES2889976T3 - Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa - Google Patents
Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa Download PDFInfo
- Publication number
- ES2889976T3 ES2889976T3 ES15715536T ES15715536T ES2889976T3 ES 2889976 T3 ES2889976 T3 ES 2889976T3 ES 15715536 T ES15715536 T ES 15715536T ES 15715536 T ES15715536 T ES 15715536T ES 2889976 T3 ES2889976 T3 ES 2889976T3
- Authority
- ES
- Spain
- Prior art keywords
- snapshot
- video
- sps
- temporal
- flag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/187—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/188—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/31—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un método de codificación de información de vídeo usando extensión escalable para Codificación de Vídeo de Alta Eficiencia, SHVC, o Codificación de Vídeo de Alta Eficiencia multivista, MV-HEVC, que comprende: almacenar información de vídeo asociada con una pluralidad de capas; determinar si sps_temporal_id_nesting_flag está presente en un conjunto de parámetros de secuencia de un flujo de bits, en donde sps_temporal_id_nesting_flag se usa para indicar si puede anidarse un identificador, ID, temporal de una instantánea de referencia para instantáneas que se refieren al conjunto de parámetros de secuencia, SPS; y en respuesta a la determinación de que sps_temporal_id_nesting_flag no está presente en el flujo de bits: cuando el valor de sps_max_sub_layers_minus1 del SPS es mayor que cero, indicando sps_max_sub_layers_minus1 un número máximo de subcapas temporales en una capa particular de la pluralidad de capas, inferir que un valor de sps_temporal_id_nesting_flag es igual a un valor de vps_temporal_id_nesting_flag presente en el conjunto de parámetros de vídeo del flujo de bits, indicando vps_temporal_id_nesting_flag si puede anidarse un ID temporal de una instantánea de referencia para cualquier instantánea; y de otra manera, inferir que el valor de sps_temporal_id_nesting_flag es igual a 1.
Description
DESCRIPCIÓN
Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa
Campo técnico
Esta divulgación se refiere al campo de codificación y compresión de vídeo, incluyendo tanto codificación de capa única como codificación de vídeo multicapa. La codificación de vídeo multicapa puede incluir codificación de vídeo escalable, codificación de vídeo multivista, codificación de vídeo tridimensional (3D), etc.
Antecedentes
Las capacidades de vídeo digital pueden incorporarse a una amplia variedad de dispositivos, incluyendo televisiones digitales, sistemas de difusión directa digital, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de sobremesa, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos de radio celular o por satélite, dispositivos de teleconferencia de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) y extensiones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital de manera más eficiente implementando tales técnicas de codificación de vídeo.
Las técnicas de compresión de vídeo realizan predicción espacial (intra instantánea) y/o predicción temporal (inter instantánea) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un corte de vídeo (por ejemplo, un fotograma de vídeo, una porción de un fotograma de vídeo, etc.) puede particionarse en bloques de vídeo, que también pueden denominarse como bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un corte intra codificado (I) de una instantánea se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma instantánea. Los bloques de vídeo en un corte inter codificado (P o B) de una instantánea pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma instantánea o predicción temporal con respecto a muestras de referencia en otras instantáneas de referencia. Las instantáneas pueden denominarse como fotogramas, y las instantáneas de referencia pueden denominarse como fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxel entre el bloque original a codificar y el bloque predictivo. Un bloque inter codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forma el bloque predictivo, e indicando los datos residuales la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra codificado se codifica de acuerdo con un modo de intra codificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio de los píxeles a un dominio de transformada, resultando en coeficientes de transformada residuales, que pueden cuantificarse a continuación. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden explorarse para producir un vector de coeficientes de transformada unidimensional, y la codificación por entropía puede aplicarse para conseguir incluso más compresión.
La codificación de vídeo escalable (SVC) se refiere a codificación de vídeo en la que se usan una capa base (BL), en ocasiones denominada como una capa de referencia (RL), y una o más capas de mejora (EL) escalables. En SVC, la capa base puede transportar datos de vídeo con un nivel base de calidad. La una o más capas de mejora pueden transportar datos de vídeo adicionales para soportar, por ejemplo, mayores niveles espaciales, temporales y/o de señal a ruido (SNR). Las capas de mejora pueden definirse en relación con una capa codificada anteriormente. Por ejemplo, una capa inferior puede servir como una BL, mientras una capa superior puede servir como una EL. Las capas intermedias pueden servir o bien como EL o bien RL o ambas. Por ejemplo, una capa intermedia (por ejemplo, una capa que no es ni la capa inferior ni la capa superior) puede ser una EL para las capas por debajo de la capa intermedia, tal como la capa base o cualquier capa de mejora intermedia, y al mismo tiempo sirven como una 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 de la norma HEVC, puede haber múltiples vistas, y puede utilizarse información de una vista 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). Codificación de vídeo multivista se divulga por TECH G Et AL: "MV-HEVC Draft Text 7", 7. REUNIÓN DE JCT-3V; 11-1-2014 - 17-1-2014; SAN JOSÉ; (EL EQUIPO DE COLABORACIÓN MIXTO SOBRE DESARROLLO DE EXTENSIÓN DE CODIFICACIÓN DE VÍDEO 3D DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL: h t t p ://PHENIX.INTEVRY.FR/JCT2/, n.° JCT3V-G1004-v8, 17 de marzo de 2014 (17-03-2014). Codificación de vídeo escalable se divulga por SATO (SONY) K: "AHG9: On VPS",11. REUNIÓN DE JCT-VC; 102. REUNIÓN DE MPEG; 10-10-2012 - 19-10-2012; SHANGHÁI; (EQUIPO DE COLABORACIÓN MIXTO SOBRE CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, n.° JCTVC-K0173, 1 de octubre de 2012 (01-10-2012) y por ARTURO RODRIGUEZ: "Introduction of temporal_id_type",11. REUNIÓN DE JCT-VC; 102. REUNIÓN DE MPEG; 10-10-2012 - 19-10-2012; SHANGHÁI; (EQUIPO DE COLABORACIÓN MIXTO SOBRE CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/
SC29/WG11 E ITU-T SG.16); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, n.° JCTVC-K0330, 9 de octubre de 2012 (09-10-2012).
Sumario
Se divulgan un método de codificación de vídeo, un aparato para codificar vídeo y un medio legible por ordenador no transitorio que comprende instrucciones que, cuando se ejecutan en un procesador que comprende hardware informático, provocan que el procesador efectúe el método de acuerdo con 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 vídeo de ejemplo que puede utilizar técnicas de acuerdo con aspectos descritos en esta divulgación.
La Figura 1B es un diagrama de bloques que ilustra otro sistema de codificación y decodificación de vídeo de ejemplo que puede realizar técnicas de acuerdo con aspectos descritos en esta divulgación.
La Figura 2A es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación.
La Figura 2B es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación.
La Figura 3A es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación.
La Figura 3B es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación.
La Figura 4 es un diagrama de bloques que ilustra una configuración de ejemplo de instantáneas en diferentes capas, de acuerdo con 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 vídeo, de acuerdo con 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 vídeo, de acuerdo con 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 vídeo, de acuerdo con una realización de la presente divulgación.
Descripción detallada
En general, esta divulgación se refiere a codificación de capa única así como predicción inter capa para codificación de vídeo escalable en el contexto de códecs de vídeo avanzados, tales como HEVC (Codificación de Vídeo de Alta Eficiencia). Más específicamente, la presente divulgación se refiere a sistemas y métodos para un rendimiento mejorado de predicción inter capa en la extensión de codificación de vídeo escalable de HEVC, que puede denominarse como SHVC.
En la descripción a continuación, se describen técnicas de H.264/Codificación de Vídeo Avanzada (AVC) en relación con ciertas realizaciones; también se analizan la norma HEVC y técnicas relacionadas. Mientras ciertas realizaciones se describen en este documento en el contexto de las normas HEVC y/o H.264, un experto en la materia puede apreciar que los sistemas y métodos divulgados en este documento pueden aplicarse a cualquier norma de codificación de vídeo adecuada. Por ejemplo, realizaciones divulgadas en este documento puede ser aplicables a una o más de las siguientes normas: Sector de Normalización de Telecomunicaciones de la Unión Internacional de Telecomunicaciones (ITU) (ITU-T) H.261, Grupo de Expertos en Instantáneas en Movimiento (MPEG) 1 (MPEG-1) Visual de la Organización Internacional de Normalización (ISO) y la Comisión Electrotécnica Internacional (IEC) (ISO/IEC), ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus extensiones de Codificación de Vídeo Escalable (SVC) y Codificación de Vídeo Multivista (MVC).
HEVC generalmente sigue el marco de normas de codificación de vídeo anteriores en muchos aspectos. La unidad de predicción en HEVC es diferente de las unidades de predicción (por ejemplo, macrobloque) en ciertas normas de codificación de vídeo anteriores. De hecho, el concepto de un macrobloque no existe en HEVC como se entiende en ciertas normas de codificación de vídeo anteriores. Un macrobloque se sustituye por una estructura jerárquica basándose en un esquema de árbol cuaternario, que puede proporcionar una flexibilidad alta, entre otros posibles beneficios. Por ejemplo, dentro del esquema de HEVC, se definen tres tipos de bloques, la Unidad de Codificación (CU), la Unidad de Predicción (PU) y la Unidad de Transformada (TU).
CU puede referirse a la unidad básica de división de región. CU puede considerarse análoga al concepto de macrobloque, pero HEVC no restringe el tamaño máximo de las CU y puede permitir una división recursiva en cuatro CU de igual tamaño para mejorar la adaptabilidad de contenido. PU puede considerarse la unidad básica de inter/intra predicción, y una única PU puede contener múltiples particiones de forma arbitraría para codificar de forma efectiva patrones de imagen irregulares. TU puede considerarse la unidad básica de transformada. TU puede definirse independientemente de la PU; sin embargo, el tamaño de una TU puede limitarse al tamaño de la CU a la que
pertenece la TU. Esta separación de la estructura de bloque en tres conceptos diferentes puede permitir que cada unidad se optimice de acuerdo con la respectiva función de la unidad, que puede resultar en eficiencia de codificación mejorada.
Para propósitos de ilustración únicamente, ciertas realizaciones divulgadas en este documento se describen con ejemplos que incluyen únicamente dos capas (por ejemplo, una capa inferior tal como la capa base y una capa superior tal como la capa de mejora) de datos de vídeo. Una "capa" de datos de vídeo puede referirse generalmente a una secuencia de instantáneas que tiene al menos una característica común, tal como una vista, una tasa de fotogramas, una resolución o similar. Por ejemplo, una capa puede incluir datos de vídeo asociados con una vista particular (por ejemplo, perspectiva) de datos de vídeo multivista. Como otro ejemplo, una capa puede incluir datos de vídeo asociados con una capa particular de datos de vídeo escalables. Por lo tanto, esta divulgación puede referirse indistintamente a una capa y una vista de datos de vídeo. Es decir, una vista de datos de vídeo puede denominarse como una capa de datos de vídeo, y una capa de datos de vídeo puede denominarse como una vista de datos de vídeo. Además, un códec multicapa (también denominado como un codificador de vídeo multicapa o codificadordecodificador multicapa) 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 usando MV-HEVC, 3D-HEVC, SHVC u otra técnica de codificación multicapa). La codificación de vídeo y la decodificación de vídeo pueden denominarse ambas generalmente como codificación de vídeo. Debería entenderse que tales ejemplos pueden ser aplicables a configuraciones que incluyen múltiples capas base y/o de mejora. Además, para facilidad de explicación, la siguiente divulgación incluye los términos "fotogramas" o "bloques" con referencia a ciertas realizaciones. Sin embargo, estos términos no pretenden ser limitantes. Por ejemplo, las técnicas descritas a continuación pueden usarse con cualquier unidad de vídeo adecuada, tal como bloques (por ejemplo, CU, PU, TU, macrobloques, etc.), cortes, fotogramas, etc.
Normas de codificación de vídeo
Una imagen digital, tal como una imagen de vídeo, una imagen de TV, una imagen fija o una imagen generada por un grabador de vídeo o un ordenador, puede constar de píxeles o muestras dispuestas en líneas horizontales y verticales. El número de píxeles en una única imagen está habitualmente en las decenas de miles. Cada píxel habitualmente contiene información de luminancia y crominancia. Sin compresión, la ingente cantidad de información a transmitir desde un codificador de imagen a un decodificador de imagen haría imposible la transmisión de imágenes en tiempo real. Para reducir la cantidad de información a transmitir, se han desarrollado un número de diferentes métodos de compresión, tales como las normas JPEG, MPEG y H.263.
Las normas de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus extensiones de SVC y MVC.
Además, se está desarrollado una nueva norma de codificación de vídeo, en concreto Codificación de Vídeo de Alta Eficiencia (HEVC), por el por el Equipo de Colaboración Mixto sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de la ITU-T y el Grupo de Expertos de Imágenes en Movimiento (MPEG) de la ISO/IEC. La cita completa para el Borrador de HEVC 10 es el documento JCTVC-L1003, Bross et al., "High Efficiency Video Coding (HEVC) Text Specification Draft 10", Equipo de Colaboración Mixto sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12a Reunión: Ginebra, Suiza, 14 de enero de 2013 a 23 de enero de 2013. La extensión multivista a HEVC, en concreto MV-HEVC, y la extensión escalable a HEVC, llamada SHVC, se están desarrollando también por el JCT-3V (Equipo de Colaboración Mixto de la ITU-T/ISO/IEC sobre Desarrollo de Extensión de Codificación de Vídeo 3D) y JCT-Vc , respectivamente.
Visión general
En un flujo de datos multicapa, una capa puede incluir una o más subcapas temporales, y cada subcapa temporal puede tener un identificador (ID) asociado con la misma llamado ID temporal. En general, las instantáneas que tienen un ID temporal más alto que la instantánea actual no se usan como instantáneas de referencia para la instantánea actual. La bandera sps_temporal_id_nesting_flag puede indicar adicionalmente si una instantánea particular que tiene un ID temporal igual a o menor que el ID temporal de la instantánea actual puede usarse como una instantánea de referencia cuando existe otra instantánea que tiene un ID temporal más bajo que la instantánea particular y que sigue a la instantánea particular en orden de decodificación, pero precede a la instantánea actual en orden de decodificación.
Las versiones anteriores de SHVC y MV-HEVC (por ejemplo, Borrador de trabajo 5 de SHVC y Borrador de trabajo 7 de MV-HEVC) plantean un conflicto en la derivación de sps_temporal_id_nesting_flag cuando el elemento de sintaxis no está presente en el flujo de bits. En ciertas condiciones, no puede determinarse que el valor de la bandera sea o bien 0 o bien 1. Para abordar estos y otros desafíos, las técnicas de acuerdo con ciertos aspectos pueden definir cómo derivar el valor de sps_temporal_id_nesting_flag en tales condiciones (por ejemplo, establecer prioridad en el proceso de derivación) para eliminar el conflicto.
Además, en HEVC, una AU contiene una instantánea de únicamente una capa, y a menudo el concepto de instantánea y AU pueden usarse indistintamente. En contraste, en SHVC y MV-HEVC, una AU puede contener instantáneas de
más de una capa, que puede hacer incierto si una variable o una bandera debería asociarse con una capa particular (por ejemplo, la capa base) o debería aplicarse a toda la AU. Un ejemplo de una variable de este tipo es HandleCraAsBlaFlag. La variable HandleCraAsBlaFlag puede indicar si tratar una instantánea de CRA como una instantánea de BLA. Las versiones anteriores de SHVC y MV-HEVC hacen que no quede claro si HandleCraAsBlaFlag se asocia únicamente con la capa base o la AU. Para abordar estos y otros desafíos, las técnicas de acuerdo con ciertos aspectos también pueden definir si HandleCraAsBlaFlag debería asociarse únicamente con la capa base o la AU.
Además, como se ha explicado anteriormente con respecto a HandleCraAsBlaFlag, debido a que una AU puede tener instantáneas de más de una capa en SHVC y MV-HEVC, puede ser incierto si una unidad de NAL de EOS debería asociarse con una capa particular (por ejemplo, la capa base) o debería aplicarse a toda la AU. La unidad de NAL de EOS puede indicar el final de una secuencia de vídeo codificada (CVS) y generalmente es seguida por una instantánea de IRAP, tal como una instantánea de IDR, una instantánea de b LA o una instantánea de CRA. Las versiones anteriores de SHVC y MV-HEVC no hacen que quede claro si la unidad de NAL de EOS se asocia únicamente con la capa base o la AU. Para abordar estos y otros desafíos, las técnicas de acuerdo con ciertos aspectos pueden definir si la unidad de NAL de EOS debería asociarse únicamente con la capa base o la AU.
Sistema de codificación de vídeo
Diversos aspectos de los sistemas, aparatos y métodos novedosos se describen más completamente en lo sucesivo con referencia a los dibujos adjuntos. Esta divulgación puede, sin embargo, incorporarse de muchas formas diferentes y no debería interpretarse como limitada a cualquier estructura específica o función presentada a lo largo de toda esta divulgación. En su lugar, estos aspectos se proporcionan de modo que esta divulgación será exhaustiva y completa, y transmitirá completamente el alcance de la divulgación a los expertos en la materia. Basándose en los contenidos en este documento un experto en la materia debería apreciar que el alcance de la divulgación se concibe para cubrir cualquier aspecto de los sistemas, aparatos y métodos novedosos divulgados en este documento, si se implementan independientemente de, o combinados con, cualquier otro aspecto de la presente divulgación. Por ejemplo, un aparato puede implementarse o un método puede ponerse en práctica usando cualquier número de los aspectos explicados en este documento. Además, el alcance de la presente divulgación se concibe para cubrir un aparato de este tipo o método que se pone en práctica usando otra estructura, funcionalidad o estructura y funcionalidad además de u distintos de los diversos aspectos de la presente divulgación expuestos en este documento. Debería entenderse que cualquier aspecto divulgado en este documento puede incorporarse por uno o más elementos de una reivindicación.
Aunque en este documento se describen aspectos particulares, muchas variaciones y permutaciones de estos aspectos se encuentran 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 se concibe para estar limitado a beneficios, usos u objetivos particulares. En su lugar, aspectos de la divulgación se conciben para ser ampliamente aplicables a diferentes tecnologías inalámbricas, configuraciones de sistema, 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 dibujos son solamente ilustrativos de la divulgación en lugar de limitantes, siendo el alcance de la divulgación definido por las reivindicaciones adjuntas y equivalentes de las mismas.
Los dibujos adjuntos ilustran ejemplos. 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, elementos que tienen nombres que comienzan con palabras ordinarias (por ejemplo, "primero", "segundo", "tercero" y así sucesivamente) no implican necesariamente que los elementos tienen un orden particular. En su lugar, tales palabras ordinales se usan solamente para referirse a diferentes elementos de un mismo o similar tipo.
La Figura 1A es un diagrama de bloques que ilustra un sistema de codificación de vídeo 10 de ejemplo que puede utilizar técnicas de acuerdo con aspectos descritos en esta divulgación. Como se usa describe en este documento, el término "codificador de vídeo" se refiere genéricamente tanto a codificadores de vídeo como decodificadores de vídeo. En esta divulgación, los términos "codificación de vídeo" o "codificación" puede referirse genéricamente a codificación de vídeo y decodificación de vídeo. Además de codificadores de vídeo y decodificadores de vídeo, 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 recodificar otro flujo de bits) y cajas intermedias (por ejemplo, dispositivos que pueden modificar, transformar y/o manipular de otra manera un flujo de bits).
Como se muestra en la Figura 1A, el sistema de codificación de vídeo 10 incluye un dispositivo de origen 12 que genera datos de vídeo codificados a decodificar 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. Se observa, sin embargo, que el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar en o ser parte del mismo dispositivo, como se muestra en el ejemplo de la Figura 1b .
Con referencia una vez más a la Figura 1A, el dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender respectivamente cualquiera de una amplia variedad de dispositivos, incluyendo ordenadores de sobremesa,
ordenadores portátiles (por ejemplo, portátiles), ordenadores de tableta, decodificadores de salón, microteléfonos telefónicos tales como los así llamados teléfonos "inteligentes", así llamados mandos "inteligentes", televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivo de difusión en continuo de vídeo 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 vídeo codificados a decodificar. El enlace 16 puede comprender cualquier tipo de medio o dispositivo con capacidad de mover los datos de vídeo 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 habilitar que el dispositivo de origen 12 transmita datos de vídeo codificados al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados pueden modularse de acuerdo con una norma 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 por cable, tal 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, tal como una red de área local, una red de área amplia o una red global, tal como internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que puede ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
Como alternativa, los datos codificados pueden emitirse desde una interfaz de salida 22 a un dispositivo de almacenamiento 31 opcional. De manera similar, los datos codificados pueden accederse desde el dispositivo de almacenamiento 31 por una interfaz de entrada 28, por ejemplo, del dispositivo de destino 14. El dispositivo de almacenamiento 31 puede incluir cualquiera de una diversidad de medios de almacenamiento de datos distribuidos o accedidos localmente tales como un disco duro, memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo 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 mantener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados desde el dispositivo de almacenamiento 31 a través de difusión en continuo o descarga. El servidor de ficheros puede ser cualquier tipo de servidor que puede almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Servidores de ficheros 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 red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluyendo una conexión de 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 digital de abonado (DSL), un módem de cable, etc.) o una combinación de ambos que es adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 31 puede ser una transmisión de difusió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 pueden aplicarse a la codificación de vídeo en soporte de cualquiera de una diversidad de aplicaciones multimedia, tal como durante las difusiones de comunicación aérea, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en difusión en continuo, por ejemplo, a través de la internet (por ejemplo, difusión en continuo adaptativa dinámica sobre Protocolo de Transferencia de Hipertexto (HTTP), etc.), codificación de vídeo digital para almacenamiento en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema de codificación de vídeo 10 puede configurarse para soportar una transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como difusión en continuo de vídeo, reproducción de vídeo, difusión de vídeo y/o telefonía de vídeo.
En el ejemplo de la Figura 1A, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y la 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 vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una cámara de vídeo, un archivo de vídeo que contiene un vídeo anteriormente capturado, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el vídeo de origen o una combinación de tales fuentes. Como un ejemplo, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los así llamados "teléfonos de cámara" o "teléfonos de vídeo", como se ilustra en el ejemplo de la Figura 1B. Sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables a codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o por cable.
El vídeo capturado, precapturado o generado por ordenador puede codificarse por el codificador de vídeo 20. Los datos de vídeo 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 vídeo codificados también (o como alternativa) pueden almacenarse en el dispositivo de almacenamiento 31 para su posterior acceso por el dispositivo de destino 14 u otros dispositivos, para decodificar y/o reproducir. El codificador de vídeo 20 ilustrado en la Figura 1A y 1B puede comprender el codificador de vídeo 20 ilustrado en la Figura 2A, el codificador de vídeo 23 ilustrado en Figura 2b o cualquier otro codificador de
vídeo descrito en este documento.
En el ejemplo de la Figura 1A, el dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de vídeo 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 vídeo codificados a través del enlace 16 y/o desde el dispositivo de almacenamiento 31. Los datos de vídeo codificados comunicados a través del enlace 16, o provistos en el dispositivo de almacenamiento 31, pueden incluir una diversidad de elementos de sintaxis generados por el codificador de vídeo 20 para su uso por un decodificador de vídeo, tal como el decodificador de vídeo 30, en la decodificación de los datos de vídeo. Tales elementos de sintaxis pueden incluirse con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados un servidor de archivos. El decodificador de vídeo 30 ilustrado en la Figura 1A y 1B puede comprender el decodificador de vídeo 30 ilustrado la Figura 3A, el decodificador de vídeo 33 ilustrado en la Figura 3B o cualquier otro decodificador de vídeo descrito en este documento.
El dispositivo de visualización 32 puede integrarse con, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también configurarse para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una diversidad de dispositivos de visualización tal como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo orgánico emisor de luz (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 vídeo 10' de ejemplo en donde los dispositivos de origen y de destino 12, 14 están en o son parte de un dispositivo 11. El dispositivo 11 puede ser un microteléfono de telefonía móvil, tal como un teléfono "inteligente" o similar. El dispositivo 11 puede incluir un dispositivo de controlador/procesador 13 opcional en comunicación operativa con los dispositivos de origen y de destino 12, 14. El sistema 10' de la Figura 1B puede incluir adicionalmente una unidad de procesamiento de vídeo 21 entre el codificador de vídeo 20 y la interfaz de salida 22. En algunas implementaciones, la unidad de procesamiento de vídeo 21 es una unidad separada, como se ilustra en la Figura 1B; sin embargo, en otras implementaciones, la unidad de procesamiento de vídeo 21 puede implementarse como una porción del codificador de vídeo 20 y/o el procesador/dispositivo controlador 13. El sistema 10' también puede incluir un seguidor 29 opcional, que puede realizar el seguimiento de un objeto de interés en una secuencia de vídeo. El objeto o interés a realizar el seguimiento puede segmentarse por una técnica descrita en conexión con uno o más aspectos de la presente divulgación. En aspectos relacionados, el seguimiento puede realizarse por el dispositivo de visualización 32, solo o en conjunto con el seguidor 29. El sistema 10' de la Figura 1B y componentes del mismo son de otra manera similares al sistema 10 de la Figura 1A, y componentes del mismo.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con una norma de compresión de vídeo, tal como la HEVC, y pueden ajustarse a un Modelo de Prueba de HEVC (HM). Como alternativa, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con otras normas propietarias o industriales, tales como la norma ITU-T H.264, como alternativa denominada como MPEG-4, Parte 10, AVC o extensiones de tales normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de compresión de vídeo incluyen MPEG-2 e ITU-T H.263.
Aunque no se muestra en los ejemplos de las Figuras 1A y 1B, cada uno del codificador de vídeo 20 y del decodificador de vídeo 30 puede integrarse con un codificador y decodificador de audio, y puede incluir unidades de MUX-DEMUX apropiadas, y otro hardware y software, para tratar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, en algunos ejemplos, las unidades MUX-DEMUx pueden ajustarse al protocolo multiplexor de la ITU H.223 u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
Cada uno del codificador de vídeo 20 y del decodificador de vídeo 30 puede implementarse como cualquiera de una diversidad de circuitería de codificador adecuada, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio adecuado y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y del decodificador de vídeo 30 puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado en un respectivo dispositivo.
Proceso de codificación de vídeo
Como se ha mencionado brevemente, el codificador de vídeo 20 codifica datos de vídeo. Los datos de vídeo pueden comprender una o más instantáneas. Cada una de las instantáneas es una imagen fija que forma parte de un vídeo. En algunos casos, una instantánea puede denominarse como un "fotograma" de vídeo. Cuando el codificador de vídeo
20 codifica los datos de vídeo, el codificador de vídeo 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 vídeo. El flujo de bits puede incluir instantáneas codificadas y datos asociados. Una instantánea codificada es una representación codificada de una instantánea.
Para generar el flujo de bits, el codificador de vídeo 20 puede realizar operaciones de codificación en cada instantánea en los datos de vídeo. Cuando el codificador de vídeo 20 realiza operaciones de codificación en las instantáneas, el codificador de vídeo 20 puede generar una serie de instantáneas codificadas y datos asociados. Los datos asociados pueden incluir conjuntos de parámetros de vídeo (VPS), conjuntos de parámetros de secuencia (SPS), conjuntos de parámetros de instantánea (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 instantáneas. Un PPS puede contener parámetros aplicables a cero o más instantáneas. Un APS puede contener parámetros aplicables a cero o más instantáneas. Parámetros en un APS pueden ser parámetros que es más probable que cambien que parámetros en un PPS.
Para generar una instantánea codificada, el codificador de vídeo 20 puede dividir una instantánea en bloques de vídeo de igual tamaño. Un bloque de vídeo puede ser una matriz bidimensional de muestras. Cada uno de los bloques de vídeo se asocia con un bloque de árbol. En algunos casos, un bloque de árbol puede denominarse como una unidad de codificación más grande (LCU). Los bloques de árbol de HEVC pueden ser ampliamente análogos a los macrobloques de las normas anteriores, tales como H.264/AVC. Sin embargo, un bloque de árbol no se limita necesariamente a un tamaño particular y puede incluir una o más unidades de codificación CU. El codificador de vídeo 20 puede usar particionamiento de árbol cuaternario para particionar los bloques de vídeo de bloques de árbol en bloques de vídeo asociados con CU, de ahí el nombre de "bloques de árbol".
En algunos ejemplos, el codificador de vídeo 20 puede particionar una instantánea en una pluralidad de cortes. Cada uno de los cortes puede incluir un número entero de CU. En algunos casos, un corte comprende un número entero de bloques de árbol. En otros casos, un límite de un corte puede estar dentro de un bloque de árbol.
Como parte de la realización de una operación de codificación en una instantánea, el codificador de vídeo 20 puede realizar operaciones de codificación en cada corte de la instantánea. Cuando el codificador de vídeo 20 realiza una operación de codificación en un corte, el codificador de vídeo 20 puede generar datos codificados asociados con el corte. Los datos codificados asociados con el corte pueden denominarse como un "corte codificado".
Para generar un corte codificado, el codificador de vídeo 20 puede realizar operaciones de codificación en cada bloque de árbol en un corte. Cuando el codificador de vídeo 20 realiza una operación de codificación en un bloque de árbol, el codificador de vídeo 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 vídeo 20 genera un corte codificado, el codificador de vídeo 20 puede realizar operaciones de codificación en (por ejemplo, codificar) los bloques de árbol en el corte de acuerdo con un orden de exploración por filas. Por ejemplo, el codificador de vídeo 20 puede codificar los bloques de árbol del corte en un orden que procede de izquierda a derecha a través de una fila superior de bloques de árbol en el corte, a continuación de izquierda a derecha a través de una siguiente fila inferior de bloques de árbol, y así sucesivamente hasta que el codificador de vídeo 20 ha codificado cada uno de los bloques de árbol en el corte.
Como resultado de codificar los bloques de árbol de acuerdo con el orden de exploración por filas, los bloques de árbol por encima y a la izquierda de un bloque de árbol dado pueden haberse codificado, pero los bloques de árbol por debajo y a la derecha del bloque de árbol dado aún no han sido codificados. En consecuencia, el codificador de vídeo 20 puede ser capaz de acceder a la información generada codificando bloques de árbol por encima y a la izquierda del bloque de árbol dado cuando se codifica el bloque de árbol dado. Sin embargo, el codificador de vídeo 20 puede ser incapaz de acceder a la información generada codificando bloques de árbol por debajo y a la derecha del bloque de árbol dado cuando se codifica el bloque de árbol dado.
Para generar un bloque de árbol codificado, el codificador de vídeo 20 puede realizar de forma recursiva el particionamiento de árbol cuaternario en el bloque de vídeo del bloque de árbol para dividir el bloque de vídeo en bloques de vídeo progresivamente más pequeños. Cada uno de los bloques de vídeo más pequeños puede asociarse con una CU diferente. Por ejemplo, el codificador de vídeo 20 puede particionar el bloque de vídeo de un bloque de árbol en cuatro subbloques de igual tamaño, particionar uno o más de los subbloques en cuatro subbloques de igual tamaño y así sucesivamente. Una CU particionada puede ser una CU cuyo bloque de vídeo se particiona en bloques de vídeo asociados con otras CU. Una CU no particionada puede ser una CU cuyo bloque de vídeo no se particiona en bloques de vídeo 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 vídeo 20 puede particionar el bloque de vídeo de un bloque de árbol. Un bloque de vídeo de una CU puede tener forma cuadrada. El tamaño del bloque de vídeo de una CU (por ejemplo, el tamaño de la CU) puede oscilar desde 8x8 píxeles hasta el tamaño de un bloque de vídeo de un bloque de árbol (por ejemplo, el tamaño del bloque de árbol) con
un máximo de 64x64 píxeles o mayor.
El codificador de vídeo 20 puede realizar operaciones de codificación en (por ejemplo, codificar) cada CU de un bloque de árbol de acuerdo con un orden de exploración en z. En otras palabras, el codificador de vídeo 20 puede codificar una CU superior izquierda, una CU superior derecha, una CU inferior izquierda y, a continuación, una CU inferior derecha, en ese orden. Cuando el codificador de vídeo 20 realiza una operación de codificación en una CU particionada, el codificador de vídeo 20 puede codificar CU asociadas con subbloques del bloque de vídeo de la CU dividida de acuerdo con el orden de exploración en z. En otras palabras, el codificador de vídeo 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, a continuación, una CU asociada con un subbloque inferior derecho, en ese orden.
Como resultado de codificar las CU de un bloque de árbol de acuerdo con un orden de exploración en z, las CU por encima, por encima y a la izquierda, por encima y a la derecha, izquierda y por debajo y a la izquierda de una CU dada pueden haberse codificado. Las CU por debajo y a la derecha de la CU dada aún no han sido codificadas. En consecuencia, el codificador de vídeo 20 puede ser capaz de acceder a la información generada codificando algunas CU que son vecinas a la CU dada cuando se codifica la CU dada. Sin embargo, el codificador de vídeo 20 puede ser incapaz de acceder a la información generada codificando otras CU que son vecinas a la CU dada cuando se codifica la CU dada.
Cuando el codificador de vídeo 20 codifica una CU no particionada, el codificador de vídeo 20 puede generar una o más unidades de predicción (PU) para la CU. Cada una de las PU de la CU puede asociarse con un bloque de vídeo diferente dentro del bloque de vídeo de la CU. El codificador de vídeo 20 puede generar un bloque de vídeo predicho para cada PU de la CU. El bloque de vídeo predicho de una PU puede ser un bloque de muestras. El codificador de vídeo 20 puede usar intra predicción o inter predicción para generar el bloque de vídeo predicho para una PU.
Cuando el codificador de vídeo 20 usa intra predicción para generar el bloque de vídeo predicho de una PU, el codificador de vídeo 20 puede generar el bloque de vídeo predicho de la PU basándose en muestras decodificadas de la instantánea asociada con la PU. Si el codificador de vídeo 20 usa intra predicción para generar bloques de vídeo predichos de las PU de una CU, la CU es una CU intra predicha. Cuando el codificador de vídeo 20 usa inter predicción para generar el bloque de vídeo predicho de la PU, el codificador de vídeo 20 puede generar el bloque de vídeo predicho de la PU basándose en muestras decodificadas de una o más instantáneas distintas de la instantánea asociada con la PU. Si el codificador de vídeo 20 usa inter predicción para generar bloques de vídeo predichos de las PU de una CU, la CU es una CU inter predicha.
Adicionalmente, cuando el codificador de vídeo 20 usa inter predicción para generar un bloque de vídeo predicho para una PU, el codificador de vídeo 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 vídeo dentro de una instantánea de referencia. La instantánea de referencia puede ser una instantánea distinta de la instantánea asociada con la PU. En algunos casos, un bloque de referencia de una PU también puede denominarse como la "muestra de referencia" de la PU. El codificador de vídeo 20 puede generar el bloque de vídeo predicho para la PU basándose en los bloques de referencia de la PU.
Después de que el codificador de vídeo 20 genera bloques de vídeo predichos para una o más PU de una CU, el codificador de vídeo 20 puede generar datos residuales para la CU basándose en los bloques de vídeo predichos para las PU de la CU. Los datos residuales para la CU pueden indicar diferencias entre muestras en los bloques de vídeo predichos para las PU de la CU y el bloque de vídeo original de la CU.
Adicionalmente, como parte de la realización de una operación de codificación en una CU no particionada, el codificador de vídeo 20 puede realizar particionamiento de árbol cuaternario recursivo en los datos residuales de la CU para particionar los datos residuales de la CU en uno o más bloques de datos residuales (por ejemplo, bloques de vídeo residuales) asociados con las TU de la CU. Cada TU de una CU puede asociarse con un bloque de vídeo residual diferente.
El codificador de vídeo 20 puede aplicar una o más transformadas a bloques de vídeo residuales asociados con las TU para generar bloques de coeficientes de transformada (por ejemplo, bloques de coeficientes de transformada) asociadas con las Tu . Conceptualmente, un bloque de coeficientes de transformada puede ser una matriz bidimensional (2D) de coeficientes de transformada.
Después de generar un bloque de coeficientes de transformada, el codificador de vídeo 20 puede realizar un proceso de cuantificación en el bloque de coeficientes de transformada. La cuantificación generalmente se refiere a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes de transformada, proporcionando una compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes de transformada. Por ejemplo, un coeficiente de transformada de n bits puede redondearse hacia abajo a un coeficiente de transformada de m bits durante la cuantificación, en donde n es mayor que m.
El codificador de vídeo 20 puede asociar cada CU con un valor de parámetro de decuantificación (QP). El valor de QP asociado con una CU puede determinar cómo cuantifica el codificador de vídeo 20 bloques de coeficientes de transformada asociados con la CU. El codificador de vídeo 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes de transformada asociados con una CU ajustando el valor de QP asociado con la CU.
Después de que el codificador de vídeo 20 cuantifica un bloque de coeficientes de transformada, el codificador de vídeo 20 puede generar conjuntos de elementos de sintaxis que representan los coeficientes de transformada en el bloque de coeficiente de transformada cuantificado. El codificador de vídeo 20 puede aplicar operaciones de codificación por entropía, tal como operación de Codificación Binaria Aritmética Adaptativa según Contexto (CABAC), a algunos de estos elementos de sintaxis. También podrían usarse otras técnicas de codificación por entropía tales como codificación de longitud variable adaptable al contexto (CAVLC), codificación de entropía de particionamiento de intervalos de probabilidad (PIPE) u otra codificación aritmética binaria.
El flujo de bits generado por el codificador de vídeo 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 de sintaxis 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 vídeo, un conjunto de parámetros de secuencia, un conjunto de parámetros de instantánea, un corte codificado, información de perfeccionamiento complementaria (SEI), un delimitador de unidad de acceso, datos de relleno u otro tipo de datos. Los datos en una unidad de NAL pueden incluir diversas estructuras de sintaxis.
El decodificador de vídeo 30 puede recibir el flujo de bits generados por el codificador de vídeo 20. El flujo de bits puede incluir una representación codificada de los datos de vídeo codificados por el codificador de vídeo 20. Cuando el decodificador de vídeo 30 recibe el flujo de bits, el decodificador de vídeo 30 puede realizar una operación de análisis en el flujo de bits. Cuando el decodificador de vídeo 30 realiza la operación de análisis, el decodificador de vídeo 30 puede extraer elementos de sintaxis del flujo de bits. El decodificador de vídeo 30 puede reconstruir las instantáneas de los datos de vídeo basándose en los elementos de sintaxis extraídos del flujo de bits. El proceso para reconstruir los datos de vídeo basándose en los elementos de sintaxis puede ser en general recíproco al proceso realizado por el codificador de vídeo 20 para generar los elementos de sintaxis.
Después de que el decodificador de vídeo 30 extrae los elementos de sintaxis asociados con una CU, el decodificador de vídeo 30 puede generar bloques de vídeo predichos para las PU de la CU basándose en los elementos de sintaxis. Además, el decodificador de vídeo 30 puede cuantificar inversamente bloques de coeficientes de transformada asociados con las TU de la CU. El decodificador de vídeo 30 puede realizar transformadas inversas en los bloques de coeficientes de transformada para reconstruir bloques de vídeo residuales asociados con las TU de la CU. Después de generar los bloques de vídeo predichos y reconstruir los bloques de vídeo residuales, el decodificador de vídeo 30 puede reconstruir el bloque de vídeo de la CU basándose en los bloques de vídeo predichos y los bloques de vídeo residuales. De esta manera, el decodificador de vídeo 30 puede reconstruir los bloques de vídeo de las CU basándose en los elementos de sintaxis en el flujo de bits.
Codificador de vídeo
La Figura 2A es un diagrama de bloques que ilustra un ejemplo del codificador de vídeo 20 que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación. El codificador de vídeo 20 puede configurarse para procesar una única capa de un fotograma de vídeo, tal como para HEVC. Además, el codificador de vídeo 20 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación, incluyendo pero sin limitación a los métodos de inferencia de NoOutputOfPriorPicsFlag y procesos relacionados descritos en mayor detalle anteriormente y a continuación con respecto a las Figuras 4 y 5. Como un 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 vídeo 20 incluye una unidad de predicción inter capa 128 opcional que está configurada para realizar cualquiera o todas las técnicas descritas en esta divulgación. En otras realizaciones, la predicción inter capa puede realizarse por la unidad de procesamiento de predicción 100 (por ejemplo, la unidad de inter predicción 121 y/o la unidad de intra predicción 126), en cuyo caso puede omitirse la unidad de predicción inter capa 128. Sin embargo, aspectos de esta divulgación no se limitan de esta forma. En algunos ejemplos, las técnicas descritas en esta divulgación pueden compartirse entre los diversos componentes del codificador de vídeo 20. En algunos ejemplos, adicionalmente o como alternativa, puede configurarse un procesador (no mostrado) para realizar cualquiera o todas las técnicas descritas en esta divulgación.
Para propósitos de explicación, esta divulgación describe el codificador de vídeo 20 en el contexto de codificación de HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros métodos o normas de codificación. El ejemplo representado en la Figura 2A es para un códec de capa única. Sin embargo, como se describirá adicionalmente con respecto a la Figura 2B, parte o todo el codificador de vídeo 20 puede duplicarse para el procesamiento de un códec multicapa.
El codificador de vídeo 20 puede realizar intra e inter codificación de bloques de vídeo dentro de cortes de vídeo. La
intra codificación depende de la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de un fotograma o instantánea de vídeo dado. La inter codificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de fotogramas o instantáneas adyacentes de una secuencia de vídeo. El intra modo (modo I) puede hacer referencia a cualquiera de varios modos de codificación espacial. Los inter modos, tales como predicción unidireccional (modo P) o predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de codificación basados en tiempo.
En el ejemplo de la Figura 2A, el codificador de vídeo 20 incluye una pluralidad de componentes funcionales. Los componentes funcionales del codificador de vídeo 20 incluyen una unidad de procesamiento de predicción 100, una unidad de generación residual 102, una unidad de procesamiento de transformada 104, una unidad de cuantificación 106, una unidad de cuantificación inversa 108, una unidad de transformada inversa 110, una unidad de reconstrucción 112, una unidad de filtro 113, una memoria intermedia de instantánea decodificada 114 y una unidad de codificación por entropía 116. La unidad de procesamiento de predicción 100 incluye una unidad de inter predicción 121, una unidad de estimación de movimiento 122, una unidad de compensación de movimiento 124, una unidad de intra predicción 126 y una unidad de predicción inter capa 128. En otros ejemplos, el codificador de vídeo 20 puede incluir más, menos o diferentes componentes funcionales. Adicionalmente, la unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 pueden estar altamente integradas, pero se representan en el ejemplo de la Figura 2A de forma separada para propósitos de explicación.
El codificador de vídeo 20 puede recibir datos de vídeo. El codificador de vídeo 20 puede recibir los datos de vídeo desde diversas fuentes. Por ejemplo, el codificador de vídeo 20 puede recibir los datos de vídeo desde la fuente de vídeo 18 (por ejemplo, mostrada en la Figura 1A o 1B) u otra fuente. Los datos de vídeo pueden representar una serie de instantáneas. Para codificar los datos de vídeo, el codificador de vídeo 20 puede realizar una operación de codificación en cada una de las instantáneas. Como parte de la realización de la operación de codificación en una instantánea, el codificador de vídeo 20 puede realizar operaciones de codificación en cada corte de la instantánea. Como parte de la realización de una operación de codificación en un corte, el codificador de vídeo 20 puede realizar operaciones de codificación en bloques de árbol en el corte.
Como parte de la realización de una operación de codificación en un bloque de árbol, la unidad de procesamiento de predicción 100 puede realizar particionamiento de árbol cuaternario en el bloque de vídeo del bloque de árbol para dividir el bloque de vídeo en bloques de vídeo progresivamente más pequeños. Cada uno de los bloques de vídeo más pequeños puede asociarse con una CU diferente. Por ejemplo, la unidad de procesamiento de predicción 100 puede particionar un bloque de vídeo de un bloque de árbol en cuatro subbloques de igual tamaño, particionar uno o más de los subbloques en cuatro subsubbloques de igual tamaño y así sucesivamente.
Los tamaños de los bloques de vídeo asociados con las CU pueden oscilar desde muestras de 8x8 hasta el tamaño del bloque de árbol con un máximo de muestras de 64x64 o mayores. En esta divulgación, "NxN" y "N por N" pueden usarse indistintamente para referirse a las dimensiones de muestra de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, muestras de 16x16 o muestras de 16 por 16. En general, un bloque de vídeo de 16x16 tiene dieciséis muestras en una dirección vertical (y = 16) y dieciséis muestras en una dirección horizontal (x = 16). Análogamente, un bloque de NxN generalmente tiene N muestras en una dirección vertical y N muestras en una dirección horizontal, en donde N representa un valor entero no negativo.
Adicionalmente, como parte de la realización de 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 particiona el bloque de vídeo del bloque de árbol en cuatro subbloques, el nodo raíz tiene cuatro nodos hijo en la estructura de datos de árbol cuaternario. Cada uno de los nodos hijo corresponde a una CU asociada con uno de los subbloques. Si la unidad de procesamiento de predicción 100 particiona uno de los subbloques en cuatro subsubbloques, el nodo que corresponde a la CU asociada con el subbloque puede tener cuatro nodos hijo, cada uno de los cuales corresponde a una CU asociada con uno de los subsubbloques.
Cada nodo de la estructura de datos de árbol cuaternario puede contener datos de sintaxis (por ejemplo, elementos de sintaxis) para el correspondiente bloque de árbol o CU. Por ejemplo, un nodo en el árbol cuaternario puede incluir una bandera de división que indica si el bloque de vídeo de la CU que corresponde al nodo se particiona (por ejemplo, divide) en cuatro subbloques. Los elementos de sintaxis para una CU pueden definirse de forma recursiva, y puede depender de si el bloque de vídeo de la CU se divide en subbloques. Una CU cuyo bloque de vídeo no se particiona puede corresponder a un nodo hoja en la estructura de datos de árbol cuaternario. Un bloque de árbol codificado puede incluir datos basándose en la estructura de datos de árbol cuaternario para un correspondiente bloque de árbol.
El codificador de vídeo 20 puede realizar operaciones de codificación en cada CU no particionada de un bloque de árbol. Cuando el codificador de vídeo 20 realiza una operación de codificación en una CU no particionada, el codificador de vídeo 20 genera datos que representan una representación codificada de la CU no particionada.
Como parte de la realización de una operación de codificación en una CU, la unidad de procesamiento de predicción
100 puede particionar el bloque de vídeo de la CU entre una o más PU de la CU. El codificador de vídeo 20 y el decodificador de vídeo 30 pueden soportar diversos tamaños de PU. Suponiendo que el tamaño de una CU particular es 2Nx2N, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden soportar tamaños de PU de 2Nx2N o NxN, e inter predicció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 vídeo 30 también pueden soportar particionamiento asimétrico para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En algunos ejemplos, la unidad de procesamiento de predicción 100 puede realizar particionamiento geométrico para particionar el bloque de vídeo de una CU entre las PU de la CU a lo largo de un límite que no se encuentra con los lados del bloque de vídeo de la CU en ángulos rectos.
La unidad de inter predicción 121 puede realizar inter predicción en cada PU de la CU. La inter predicción puede proporcionar compresión temporal. Para realizar inter predicció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 vídeo predicho para la PU basó la información de movimiento y muestras decodificadas de instantáneas distintas de la instantánea asociada con la CU (por ejemplo, instantáneas de referencia). En esta divulgación, un bloque de vídeo predicho generado por la unidad de compensación de movimiento 124 puede denominarse como un bloque de vídeo inter predicho.
Los cortes pueden ser cortes I, cortes P o cortes 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 corte I, un corte P o un corte B. En un sector I, todas las PU son intra predichas. Por lo tanto, si la PU está en un corte I, la unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 no realizan inter predicción en la PU.
Si la PU está en un corte P, la instantánea que contiene la PU se asocia con una lista de instantáneas de referencia denominada como "lista 0". Cada una de las instantáneas de referencia en la lista 0 contiene muestras que pueden usarse para inter predicción de otras instantáneas. 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 corte P, la unidad de estimación de movimiento 122 puede buscar las instantáneas 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 corresponde más estrechamente a las muestras en el bloque de vídeo de la PU. La unidad de estimación de movimiento 122 puede usar una diversidad de métricas para determinar cómo de cerca corresponde un conjunto de muestras en una instantánea de referencia a las muestras en el bloque de vídeo de una PU. Por ejemplo, la unidad de estimación de movimiento 122 puede determinar cómo de cerca corresponde un conjunto de muestras en una instantánea de referencia a las muestras en el bloque de vídeo 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 corte P, la unidad de estimación de movimiento 122 puede generar un índice de referencia que indica la instantánea 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 diversos ejemplos, la unidad de estimación de movimiento 122 puede generar vectores de movimiento en grados variables de precisión. Por ejemplo, la unidad de estimación de movimiento 122 puede generar vectores de movimiento a una precisión de muestra de un cuarto, una precisión de muestra de un octavo u otra precisión de muestra fraccional. En el caso de precisión de muestra fraccional, los valores de bloque de referencia pueden interpolarse desde valores de muestra de posición entera en la instantánea de referencia. La unidad de estimación de movimiento 122 puede emitir el índice de referencia y el vector de movimiento como la información de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar un bloque de vídeo 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 corte B, la instantánea que contiene la PU puede asociarse con dos listas de instantáneas de referencia, denominadas como "lista 0" y "lista 1". En algunos ejemplos, una instantánea que contiene un corte B puede asociarse con una combinación de listas que es una combinación de la lista 0 y la lista 1.
Adicionalmente, si la PU está en un corte B, la unidad de estimación de movimiento 122 puede realizar predicción unidireccional o predicción bidireccional para la PU. Cuando la unidad de estimación de movimiento 122 realiza predicción unidireccional para la PU, la unidad de estimación de movimiento 122 puede buscar las instantáneas de referencia de la lista 0 o lista 1 para un bloque de referencia para la PU. La unidad de estimación de movimiento 122 puede generar, a continuación, un índice de referencia que indica la instantánea de referencia en la lista 0 o 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 instantánea de referencia en la lista 0 o lista 1. La unidad de compensación de movimiento 124 puede generar el bloque de vídeo 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 predicción bidireccional para una PU, la unidad de estimación de movimiento 122 puede buscar las instantáneas de referencia en la lista 0 para un bloque de referencia
para la PU y también puede buscar las instantáneas de referencia en la lista 1 para otro bloque de referencia para la PU. La unidad de estimación de movimiento 122 puede generar, a continuación, índices de referencia que indican las instantáneas de referencia en la lista 0 y lista 1 que contienen los bloques de referencia y vectores de movimiento que indican 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 la información de movimiento de la PU. La unidad de compensación de movimiento 124 puede generar el bloque de vídeo 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 emite un conjunto completo de información de movimiento para una PU a la unidad de codificación por entropía 116. En su lugar, la unidad de estimación de movimiento 122 puede señalizar 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 vídeo 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 de 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 vídeo 30 puede usar el vector de movimiento de la PU vecina indicada y la diferencia de vector de movimiento para determinar el vector de movimiento de la PU. Haciendo referencia a la información de movimiento de una primera PU cuando se señaliza la información de movimiento de una segunda PU, el codificador de vídeo 20 puede ser capaz de señalizar la información de movimiento de la segunda PU usando menos bits.
Como se ha analizado adicionalmente anteriormente 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 otro bloque de capa de referencia y/o capa de mejora o unidad de vídeo) realizando los métodos ilustrados en las Figuras 5 y 6. Por ejemplo, la unidad de inter predicció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 intra predicción 126 o la unidad de predicción inter capa 128 pueden configurarse para realizar los métodos ilustrados en las Figuras 5 y 6, o bien juntas o bien de forma separada.
Como parte de la realización de una operación de codificación en una CU, la unidad de intra predicción 126 puede realizar intra predicción en las PU de la CU. La intra predicción puede proporcionar compresión espacial. Cuando la unidad de intra predicción 126 realiza intra predicción en una PU, la unidad de intra predicción 126 puede generar datos de predicción para la PU basándose en muestras decodificadas de otras PU en la misma instantánea. Los datos de predicción para la PU pueden incluir un bloque de vídeo predicho y diversos elementos de sintaxis. La unidad de intra predicción 126 puede realizar intra predicción en las PU en cortes I, cortes P y cortes B.
Para realizar intra predicción en una PU, la unidad de intra predicción 126 puede usar múltiples modos de intra predicción para generar múltiples conjuntos de datos de predicción para la PU. Cuando la unidad de intra predicción 126 usa un modo de intra predicción para generar un conjunto de datos de predicción para la PU, la unidad de intra predicción 126 puede extender muestras desde bloques de vídeo de PU vecinas a través del bloque de vídeo de la PU en una dirección y/o gradiente asociado con el modo de intra predicción. Las PU vecinas pueden estar encima, encima y a la derecha, encima y a la izquierda o a la izquierda de la PU, suponiendo un orden de codificación de izquierda a derecha, superior a inferior para las PU, CU y bloques de árbol. La unidad de intra predicción 126 puede usar diversos números de los modos de intra predicción, por ejemplo, 33 modos de intra predicción direccionales, 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 intra predicció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 tasa/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 unidad de intra predicción 126, la unidad de procesamiento de predicción 100 puede señalizar el modo de intra predicción que se usó para generar los datos de predicción para las Pu , por ejemplo, el modo de intra predicción seleccionado. La unidad de procesamiento de predicción 100 puede señalizar el modo de intra predicción seleccionado de diversas formas. Por ejemplo, puede ser probable que el modo de intra predicción seleccionado sea el mismo que el modo de intra predicción de una PU vecina. En otras palabras, el modo de intra predicción 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 intra predicción seleccionado es el mismo que el modo de intra predicción de la PU vecina.
Como se ha analizado anteriormente, el codificador de vídeo 20 puede incluir la unidad de predicción inter capa 128. La unidad de predicción inter capa 128 está configurada para predecir un bloque actual (por ejemplo, un bloque actual
en la 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 como predicción inter capa. La unidad de predicción inter capa 128 utiliza métodos de predicción para reducir la redundancia inter capa, mejorando de este modo la eficiencia de codificación y reduciendo los requisitos de cálculo. Algunos ejemplos de predicción inter capa incluyen intra predicción inter capa, predicción de movimiento inter capa y predicción residual inter capa. La intra predicción inter capa usa 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 inter capa usa información de movimiento de la capa base para predecir movimiento en la capa de mejora. La predicción residual inter capa usa el residual de la capa base para predecir el residual de la capa de mejora. Cada uno de los esquemas de predicción inter capa se analiza a continuación en 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, indicado por el signo menos) los bloques de vídeo predichos de las PU de la CU del bloque de vídeo de la CU. Los datos residuales de una CU pueden incluir bloques de vídeo residuales 2D que corresponden a diferentes componentes de muestra de las muestras en el bloque de vídeo de la CU. Por ejemplo, los datos residuales pueden incluir un bloque de vídeo residual que corresponde a diferencias entre componentes de luminancia de muestras en los bloques de vídeo predichos de las PU de la CU y componentes de luminancia de muestras en el bloque de vídeo original de la CU. Además, los datos residuales de la CU pueden incluir bloques de vídeo residuales que corresponden a las diferencias entre componentes de crominancia de muestras en los bloques de vídeo predichos de las Pu de la CU y el componente de crominancias de las muestras en el bloque de vídeo original de la CU.
La unidad de procesamiento de predicción 100 puede realizar un particionamiento de árbol cuaternario para particionar los bloques de vídeo residuales de una CU en subbloques. Cada bloque de vídeo residual no dividido puede asociarse con una TU diferente de la CU. Los tamaños y posiciones de los bloques de vídeo residuales asociados con las TU de una CU pueden o pueden no basarse en los tamaños y posiciones de bloques de vídeo asociados con las PU de la CU. Una estructura de árbol cuaternario conocido como un "árbol cuaternario residual" (RQT) puede incluir nodos asociados con cada uno de los bloques de vídeo residuales. Las TU de una CU pueden corresponder a nodos hoja del RQT.
La unidad de procesamiento de transformada 104 puede generar uno o más bloques de coeficientes de transformada para cada TU de una CU aplicando una o más transformadas a un bloque de vídeo residual asociado con la TU. Cada uno de los bloques de coeficientes de transformada puede ser una matriz 2D de coeficientes de transformada. La unidad de procesamiento de transformada 104 puede aplicar diversas transformadas al bloque de vídeo residual asociado con una TU. Por ejemplo, la unidad de procesamiento de transformada 104 puede aplicar una Transformada de Coseno Discreta (DCT), una transformada direccional, o una transformada conceptualmente similar al bloque de vídeo residual asociado con una TU.
Después de que la unidad de procesamiento de transformada 104 genera un bloque de coeficientes de transformada asociado con una TU, la unidad de cuantificación 106 puede cuantificar los coeficientes de transformada en el bloque de coeficientes de transformada. La unidad de cuantificación 106 puede cuantificar un bloque de coeficientes de transformada asociado con una TU de una CU basándose en un valor de QP asociado con la Cu .
El codificador de vídeo 20 puede asociar un valor de QP con una CU de diversas formas. Por ejemplo, el codificador de vídeo 20 puede realizar un análisis de distorsión de tasa en un bloque de árbol asociado con la Cu . En el análisis de distorsión de tasa, el codificador de vídeo 20 puede generar múltiples representaciones codificadas del bloque de árbol realizando una operación de codificación múltiples veces en el bloque de árbol. El codificador de vídeo 20 puede asociar diferentes valores de QP con la CU cuando el codificador de vídeo 20 genera diferentes representaciones codificadas del bloque de árbol. El codificador de vídeo 20 puede señalizar que un valor de QP dado se asocia con la CU cuando el valor de QP dado se asocia con la CU en una representación codificada del bloque de árbol que tiene la menor métrica de tasa de bits y distorsión.
La unidad de cuantificación inversa 108 y la unidad de transformada inversa 110 pueden aplicar cuantificación inversa y transformadas inversas al bloque de coeficientes de transformada, respectivamente, para reconstruir un bloque de vídeo residual a partir del bloque de coeficientes de transformada. La unidad de reconstrucción 112 puede añadir el bloque de vídeo residual reconstruido a correspondientes muestras de uno o más bloques de vídeo predichos generados por la unidad de procesamiento de predicción 100 para producir un bloque de vídeo reconstruido asociado con una TU. Reconstruyendo los bloques de vídeo para cada TU de una CU de esta manera, el codificador de vídeo 20 puede reconstruir el bloque de vídeo de la CU.
Después de que la unidad de reconstrucción 112 reconstruye el bloque de vídeo 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 vídeo asociado con la CU. Después de realizar la una o más operaciones de desbloqueo, la unidad de filtro 113 puede almacenar el bloque de vídeo reconstruido de la CU en la memoria intermedia de instantánea decodificada 114. La unidad de estimación de movimiento 122 y la unidad de compensación de movimiento 124 pueden usar una instantánea de referencia que contiene el bloque de vídeo reconstruido para realizar inter predicción en las PU de instantáneas posteriores. Además, la unidad de intra predicción 126 puede usar bloques de vídeo reconstruidos en la memoria
intermedia de instantánea decodificada 114 para realizar intra predicción en otras PU en la misma instantánea que la CU.
La unidad de codificación por entropía 116 puede recibir datos desde otros componentes funcionales del codificador de vídeo 20. Por ejemplo, la unidad de codificación por entropía 116 puede recibir bloques de coeficientes de transformada desde la unidad de cuantificación 106 y puede recibir elementos de sintaxis desde la unidad de procesamiento de predicción 100. Cuando la unidad de codificación por entropía 116 recibe los datos, la unidad de codificación por entropía 116 puede realizar una o más operaciones de codificación por entropía para generar datos codificados por entropía. Por ejemplo, el codificador de vídeo 20 puede realizar una operación de codificación de longitud variable adaptativa según 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 según contexto basada en sintaxis (SBAC), una operación de codificación de Entropía de Particionamiento de Intervalos de Probabilidad u otro tipo de operación de codificación por entropía en los datos. La unidad de codificación por entropía 116 puede emitir un flujo de bits que incluye los datos codificados por entropía.
Como parte de la realización de una operación de codificación por entropía en datos, la unidad de codificación por entropía 116 puede seleccionar un modelo de contexto. Si unidad de codificación por entropía 116 está realizando una operación de CABAC, el modelo de contexto puede indicar estimaciones de probabilidades de bins particulares que tienen valores particulares. En el contexto de CABAC, el término "bin" se usa para referirse a un bit de una versión binarizada de un elemento de sintaxis.
Codificador de vídeo multicapa
La Figura 2B es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo multicapa 23 (también denominado simplemente como codificador de vídeo 23) que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación. El codificador de vídeo 23 puede configurarse para procesar fotogramas de vídeo multicapa, tal como para SHVC y codificación multivista. Además, el codificador de vídeo 23 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación.
El codificador de vídeo 23 incluye un codificador de vídeo 20A y un codificador de vídeo 20B, cada uno de los cuales puede configurarse como el codificador de vídeo 20 y puede realizar las funciones descritas anteriormente con respecto al codificador de vídeo 20. Además, como se indica por la reutilización de números de referencia, los codificadores de vídeo 20A y 20B pueden incluir al menos algunos de los sistemas y subsistemas que el codificador de vídeo 20. Aunque el codificador de vídeo 23 se ilustra como que incluye dos codificadores de vídeo 20A y 20B, el codificador de vídeo 23 no está limitado como tal y puede incluir cualquier número de capas del codificador de vídeo 20. En algunas realizaciones, el codificador de vídeo 23 puede incluir un codificador de vídeo 20 para cada instantánea 0 fotograma en una unidad de acceso. Por ejemplo, una unidad de acceso que incluye cinco instantáneas puede procesarse o codificarse por un codificador de vídeo que incluye cinco capas de codificador. En algunas realizaciones, el codificador de vídeo 23 puede incluir más capas de codificador que fotogramas en una unidad de acceso. En algunos de tales casos, algunas de las capas de codificador de vídeo pueden estar inactivas cuando se procesan algunas unidades de acceso.
Además de los codificadores de vídeo 20A y 20B, el codificador de vídeo 23 puede incluir una unidad de remuestreo 90. La unidad de remuestreo 90 puede sobremuestrear, en algunos casos, una capa base de un fotograma de vídeo recibido para crear, por ejemplo, una capa de mejora. La unidad de remuestreo 90 puede sobremuestrear información particular asociada con la capa base recibida de un fotograma, pero ninguna otra información. Por ejemplo, la unidad de remuestreo 90 puede sobremuestrear el tamaño espacial o número de píxeles de la capa base, pero el número de cortes o el recuento de orden de instantáneas puede permanecer constante. En algunos casos, la unidad de remuestreo 90 puede no procesar el vídeo recibido y/o puede ser opcional. Por ejemplo, en algunos casos, la unidad de procesamiento de predicción 100 puede realizar 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 cortes para cumplir con un conjunto de reglas de límite de corte y/o reglas de exploración por tramas. Aunque se describe esencialmente como 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 difusión en continuo de un vídeo se reduce el ancho de banda, un fotograma puede submuestrearse en lugar de sobremuestrearse.
La unidad de remuestreo 90 puede configurarse para recibir una instantánea o fotograma (o información de instantánea asociada con la instantánea) desde la memoria intermedia de instantánea decodificada 114 del codificador de capa inferior (por ejemplo, el codificador de vídeo 20A) y para sobremuestrear la instantánea (o la información de instantánea recibida). Esta instantánea sobremuestreada puede proporcionarse, a continuación, a la unidad de procesamiento de predicción 100 de un codificador de capa superior (por ejemplo, el codificador de vídeo 20B) configurado para codificar una instantánea 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 vídeo de capa 0 y el codificador de capa 1 de la Figura 2B.
En algunos casos, la unidad de remuestreo 90 puede omitirse o eludirse. En tales casos, la instantánea desde la memoria intermedia de instantánea decodificada 114 del codificador de vídeo 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 vídeo 20B. Por ejemplo, si los datos de vídeo proporcionados al codificador de vídeo 20B y la instantánea de referencia desde la memoria intermedia de instantánea decodificada 114 del codificador de vídeo 20A son del mismo tamaño o resolución, la instantánea de referencia puede proporcionarse al codificador de vídeo 20B sin ningún remuestreo.
En algunas realizaciones, el codificador de vídeo 23 submuestrea datos de vídeo a proporcionarse al codificador de capa inferior usando la unidad de submuestreo 94 antes de proporcionar los datos de vídeo al codificador de vídeo 20A. Como alternativa, la unidad de submuestreo 94 puede ser una unidad de remuestreo 90 con capacidad de sobremuestrear o submuestrear los datos de vídeo. En otras realizaciones más, la unidad de submuestreo 94 puede omitirse.
Como se ilustra en la Figura 2B, el codificador de vídeo 23 puede incluir adicionalmente un multiplexor 98, o mux. El mux 98 puede emitir un flujo de bits combinado desde el codificador de vídeo 23. El flujo de bits combinado puede crearse tomando un flujo de bits de cada uno de los codificadores de vídeo 20A y 20B y alternando qué flujo de bits se emite en un momento dado. Mientras en algunos casos los bits de los dos (o más en el caso de más de dos capas de codificador de vídeo) flujos de bits pueden alternarse un bit cada vez, en muchos casos los flujos de bits se combinan de forma diferente. Por ejemplo, el flujo de bits de salida puede crearse alternando el flujo de bits seleccionado un bloque cada vez. En otro ejemplo, el flujo de bits de salida puede crearse emitiendo una relación diferente de 1:1 de bloques desde cada uno de los codificadores de vídeo 20A y 20B. Por ejemplo, pueden emitirse dos bloques desde el codificador de vídeo 20B para cada bloque emitido desde el codificador de vídeo 20A. En algunas realizaciones, el flujo de salida desde el mux 98 puede programarse. En otras realizaciones, el mux 98 puede combinar los flujos de bits de los codificadores de vídeo 20a , 20B basándose en una señal de control recibida desde un sistema externo al codificador de vídeo 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 basándose en la resolución o tasa de bits de a video desde la fuente de vídeo 18, basándose en un ancho de banda del enlace 16, basándose en una suscripción asociada con un usuario (por ejemplo, una suscripción pagada frente a una suscripción gratuita) o basándose en cualquier otro factor para determinar una resolución emitida deseada desde el codificador de vídeo 23.
Decodificador de vídeo
La Figura 3A es un diagrama de bloques que ilustra un ejemplo del decodificador de vídeo 30 que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación. El decodificador de vídeo 30 puede configurarse para procesar una única capa de un fotograma de vídeo, tal como para HEVC. Además, el decodificador de vídeo 30 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación, incluyendo, pero sin limitación a, los métodos de inferencia de NoOutputOfPriorPicsFlag y procesos relacionados descritos en mayor detalle anteriormente y a continuación con respecto a las Figuras 4 y 5. Como un ejemplo, unidad de compensación de movimiento 162 y/o unidad de intra predicción 164 puede configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación. En una realización, el decodificador de vídeo 30 puede incluir opcionalmente una unidad de predicción inter capa 166 que está configurada para realizar cualquiera o todas las técnicas descritas en esta divulgación. En otras realizaciones, la unidad de procesamiento de predicción 152 (por ejemplo, la unidad de compensación de movimiento 162 y/o la unidad de intra predicción 164) puede realizar predicción inter capa, en cuyo caso puede omitirse la unidad de predicción inter capa 166. Sin embargo, aspectos de esta divulgación no se limitan de esta forma. En algunos ejemplos, las técnicas descritas en esta divulgación pueden compartirse entre los diversos componentes del decodificador de vídeo 30. En algunos ejemplos, adicionalmente o como alternativa, puede configurarse un procesador (no mostrado) para realizar cualquiera o todas las técnicas descritas en esta divulgación.
Para propósitos de explicación, esta divulgación describe el decodificador de vídeo 30 en el contexto de codificación de HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros métodos o normas de codificación. El ejemplo representado en la Figura 3A es para un códec de capa única. Sin embargo, como se describirá adicionalmente con respecto a la Figura 3B, parte o todo el decodificador de vídeo 30 puede duplicarse para el procesamiento de un códec multicapa.
En el ejemplo de la Figura 3A, el decodificador de vídeo 30 incluye una pluralidad de componentes funcionales. Los componentes funcionales del decodificador de vídeo 30 incluyen una unidad de decodificación por entropía 150, una unidad de procesamiento de predicción 152, una unidad de cuantificación inversa 154, una unidad de transformada inversa 156, una unidad de reconstrucción 158, una unidad de filtro 159 y una memoria intermedia de instantánea decodificada 160. La unidad de procesamiento de predicción 152 incluye una unidad de compensación de movimiento 162, una unidad de intra predicción 164 y una unidad de predicción inter capa 166. En algunos ejemplos, el decodificador de vídeo 30 puede realizar un pase de decodificación generalmente recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 de la Figura 2A. En otros ejemplos, el decodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
El decodificador de vídeo 30 puede recibir un flujo de bits que comprende datos de vídeo codificados. El flujo de bits
puede incluir una pluralidad de elementos de sintaxis. Cuando el decodificador de vídeo 30 recibe el flujo de bits, la unidad de decodificación por entropía 150 puede realizar una operación de análisis en el flujo de bits. Como resultado de la realización de la operación de análisis en el flujo de bits, la unidad de decodificación por 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, la unidad de decodificación por 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 transformada 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 vídeo decodificados basándose en los elementos de sintaxis extraídos del flujo de bits.
Como se ha analizado anteriormente, el flujo de bits puede comprender una serie de unidades de NAL. Las unidades de NAL del flujo de bits puede incluir unidades de NAL de conjunto de parámetros de vídeo, unidades de NAL de conjunto de parámetros de secuencia, unidades de NAL de conjunto de parámetros de instantánea, unidades de NAL de SEI y así sucesivamente. Como parte de la realización de la operación de análisis en el flujo de bits, la unidad de decodificación por entropía 150 puede realizar operaciones de análisis que extraen y decodifican por entropía conjuntos de parámetros de secuencia de unidades de NAL de conjunto de parámetros de secuencia, conjuntos de parámetros de instantánea de unidades de NAL de conjunto de parámetros de instantánea, datos de SEI de unidades de NAL de SEI y así sucesivamente.
Además, las unidades de NAL del flujo de bits pueden incluir unidades de NAL de corte codificado. Como parte de la realización de la operación de análisis en el flujo de bits, la unidad de decodificación por entropía 150 puede realizar operaciones de análisis que extraen y decodifican por entropía cortes codificados de las unidades de NAL de corte codificado. Cada uno de los cortes codificados puede incluir un encabezamiento de corte y datos de corte. El encabezamiento de corte puede contener elementos de sintaxis que pertenece a un corte. Los elementos de sintaxis en el encabezamiento de corte pueden incluir un elemento de sintaxis que identifica un conjunto de parámetros de instantánea asociada con una instantánea que contiene el corte. La unidad de decodificación por entropía 150 puede realizar operaciones de decodificación por entropía, tales como operaciones de decodificación de CABAC, en elementos de sintaxis en el encabezamiento de corte codificado para recuperar el encabezamiento de corte.
Como parte de la extracción del corte datos de las unidades de NAL de corte codificado, la unidad de decodificación por entropía 150 puede realizar operaciones de análisis que extraen elementos de sintaxis de las CU codificadas en los datos de corte. Los elementos de sintaxis extraídos pueden incluir elementos de sintaxis asociados con bloques de coeficientes de transformada. La unidad de decodificación por entropía 150 puede realizar, a continuación, operaciones de decodificación de CABAC en algunos de los elementos de sintaxis.
Después de que la unidad de decodificación por entropía 150 realiza una operación de análisis en una CU no particionada, el decodificador de vídeo 30 puede realizar una operación de reconstrucción en la CU no particionada. Para realizar la operación de reconstrucción en una CU no particionada, el decodificador de vídeo 30 puede realizar una operación de reconstrucción en cada TU de la CU. Realizando la operación de reconstrucción para cada TU de la CU, el decodificador de vídeo 30 puede reconstruir un bloque de vídeo residual asociado con la CU.
Como parte de la realización de una operación de reconstrucción en una TU, la unidad de cuantificación inversa 154 puede cuantificar inversamente, por ejemplo, decuantificar, un bloque de coeficientes de transformada asociado con la TU. La unidad de cuantificación inversa 154 puede cuantificar inversamente el bloque de coeficientes de transformada de una manera similar a los procesos de cuantificación inversa propuestos para HEVC o definidos por la norma de codificación H.264. La unidad de cuantificación inversa 154 puede usar un parámetro de decuantificación QP calculado por el codificador de vídeo 20 para una CU del bloque de coeficientes de transformada para determinar un grado de cuantificación y, análogamente, un grado de cuantificación inversa para unidad de cuantificación inversa 154 a aplicar.
Después de que la unidad de cuantificación inversa 154 cuantifica inversamente un bloque de coeficientes de transformada, la unidad de transformada inversa 156 puede generar un bloque de vídeo residual para la TU asociada con el bloque de coeficientes de transformada. La unidad de transformada inversa 156 puede aplicar una transformada inversa al bloque de coeficientes de transformada para generar el bloque de vídeo residual para la TU. Por ejemplo, la unidad de transformada inversa 156 puede aplicar una DCT inversa, una transformada entera inversa, una transformada de Karhunen-Loeve (KLT) inversa, una transformada rotacional inversa, una transformada direccional inversa u otra transformada inversa al bloque de coeficientes de transformada. En algunos ejemplos, la unidad de transformada inversa 156 puede determinar una transformada inversa a aplicar al bloque de coeficientes de transformada basándose en la señalización desde el codificador de vídeo 20. En tales ejemplos, la unidad de transformada inversa 156 puede determinar la transformada inversa basándose en una transformada señalizada en el nodo raíz de un árbol cuaternario para un bloque de árbol asociado con el bloque de coeficientes de transformada. En otros ejemplos, la unidad de transformada inversa 156 puede inferir la transformada inversa de una o más características de codificación, tales como tamaño de bloque, modo de codificación o similar. En algunos ejemplos, la unidad de transformada inversa 156 puede aplicar una transformada inversa en cascada.
En algunos ejemplos, la unidad de compensación de movimiento 162 puede refinar el bloque de vídeo predicho de
una PU realizando interpolación basándose en filtros de interpolación. Los identificadores para los filtros de interpolación a usar para 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 vídeo 20 durante la generación del bloque de vídeo 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 vídeo 20 de acuerdo con la información de sintaxis recibida y usar los filtros de interpolación para producir el bloque de vídeo predicho.
Como se ha analizado adicionalmente anteriormente 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 otro bloque de capa de referencia y/o capa de mejora o unidad de vídeo) realizando los métodos ilustrados en las Figuras 5 y 6. Por ejemplo, la unidad de compensación de movimiento 162, la unidad de intra predicción 164 o la unidad de predicción inter capa 166 pueden configurarse para realizar los métodos ilustrados en las Figuras 5 y 6, o bien juntas o bien de forma separada.
Si se codifica una PU usando intra predicción, la unidad de intra predicción 164 puede realizar intra predicción para generar un bloque de vídeo predicho para la PU. Por ejemplo, la unidad de intra predicción 164 puede determinar un modo de intra predicció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 intra predicción 164 puede usar para determinar el modo de intra predicción de la PU.
En algunos casos, los elementos de sintaxis pueden indicar que la unidad de intra predicción 164 tiene que usar el modo de intra predicción de otra PU para determinar el modo de intra predicción de la PU actual. Por ejemplo, puede ser probable que el modo de intra predicción de la PU actual sea el mismo que el modo de intra predicción de una PU vecina. En otras palabras, el modo de intra predicción 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 intra predicción de la PU es el mismo que el modo de intra predicción de la PU vecina. La unidad de intra predicción 164 puede usar, a continuación, el modo de intra predicción para generar datos de predicción (por ejemplo, muestras predichas) para la PU basándose en los bloques de vídeo de las PU espacialmente vecinas.
Como se ha analizado anteriormente, el decodificador de vídeo 30 también puede incluir la unidad de predicción inter capa 166. La unidad de predicción inter capa 166 está configurada para predecir un bloque actual (por ejemplo, un bloque actual en la EL) usando una o más capas diferentes que están disponibles en s Vc (por ejemplo, una capa base o de referencia). Tal predicción puede denominarse como predicción inter capa. La unidad de predicción inter capa 166 utiliza métodos de predicción para reducir la redundancia inter capa, mejorando de este modo la eficiencia de codificación y reduciendo los requisitos de cálculo. Algunos ejemplos de predicción inter capa incluyen intra predicción inter capa, predicción de movimiento inter capa y predicción residual inter capa. La intra predicción inter capa usa 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 inter capa usa información de movimiento de la capa base para predecir movimiento en la capa de mejora. La predicción residual inter capa usa el residual de la capa base para predecir el residual de la capa de mejora. Cada uno de los esquemas de predicción inter capa se analiza a continuación en mayor detalle.
La unidad de reconstrucción 158 puede usar los bloques de vídeo residuales asociados con las TU de una CU y los bloques de vídeo predichos de las PU de la CU, por ejemplo, o bien datos de intra predicción o bien datos de inter predicción, según sea aplicable, para reconstruir el bloque de vídeo de la CU. Por lo tanto, el decodificador de vídeo 30 puede generar un bloque de vídeo predicho y un bloque de vídeo residual basándose en elementos de sintaxis en el flujo de bits y puede generar un bloque de vídeo basándose en el bloque de vídeo predicho y el bloque de vídeo residual.
Después de que la unidad de reconstrucción 158 reconstruye el bloque de vídeo de la CU, la unidad de filtro 159 puede realizar una operación de desbloqueo para reducir artefactos de bloqueo asociados con la CU. Después de que la unidad de filtro 159 realiza una operación de desbloqueo para reducir artefactos de bloqueo asociados con la Cu , el decodificador de vídeo 30 puede almacenar el bloque de vídeo de la CU en la memoria intermedia de instantánea decodificada 160. La memoria intermedia de instantánea decodificada 160 puede proporcionar instantáneas de referencia para una compensación de movimiento posterior, intra predicció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 vídeo 30 puede realizar, basándose en los bloques de vídeo en la memoria intermedia de instantánea decodificada 160, operaciones de intra predicción o inter predicción en las PU de otras CU.
Decodificador multicapa
La Figura 3B es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo multicapa 33 (también denominado simplemente como decodificador de vídeo 33) que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación. El decodificador de vídeo 33 puede configurarse para procesar fotogramas de vídeo multicapa, tal como para SHVC y codificación multivista. Además, el decodificador de vídeo 33 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación.
El decodificador de vídeo 33 incluye un decodificador de vídeo 30A y un decodificador de vídeo 30B, cada uno de los cuales puede configurarse como el decodificador de vídeo 30 y puede realizar las funciones descritas anteriormente con respecto al decodificador de vídeo 30. Además, como se indica por la reutilización de números de referencia, los decodificadores de vídeo 30A y 30B pueden incluir al menos algunos de los sistemas y subsistemas como el decodificador de vídeo 30. Aunque el decodificador de vídeo 33 se ilustra como que incluye dos decodificadores de vídeo 30A y 30B, el decodificador de vídeo 33 no está limitado como tal y puede incluir cualquier número de capas del decodificador de vídeo 30. En algunas realizaciones, el decodificador de vídeo 33 puede incluir un decodificador de vídeo 30 para cada instantánea o fotograma en una unidad de acceso. Por ejemplo, una unidad de acceso que incluye cinco instantáneas puede procesarse o decodificarse por un decodificador de vídeo que incluye cinco capas de decodificador. En algunas realizaciones, el decodificador de vídeo 33 puede incluir más capas de decodificador que fotogramas en una unidad de acceso. En algunos de tales casos, algunas de las capas de decodificador de vídeo pueden estar inactivas cuando se procesan algunas unidades de acceso.
Además de los decodificadores de vídeo 30A y 30B, el decodificador de vídeo 33 puede incluir una unidad de sobremuestreo 92. En algunas realizaciones, la unidad de sobremuestreo 92 puede sobremuestrear una capa base de un fotograma de vídeo recibido para crear una capa mejorada a añadir a la lista de instantáneas de referencia para el fotograma o unidad de acceso. Esta capa mejorada puede almacenarse en la memoria intermedia de instantánea decodificada 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 sobremuestrear una capa y reorganizar, redefinir, modificar o ajustar uno o más cortes para cumplir con un conjunto de reglas de límite de corte y/o reglas de exploración por tramas. En algunos casos, la unidad de sobremuestreo 92 puede ser una unidad de remuestreo configurada para sobremuestrear y/o submuestrear una capa de un fotograma de vídeo recibido
La unidad de sobremuestreo 92 puede configurarse para recibir una instantánea o fotograma (o información de instantánea asociada con la instantánea) desde la memoria intermedia de instantánea decodificada 160 del decodificador de capa inferior (por ejemplo, el decodificador de vídeo 30A) y para sobremuestrear la instantánea (o la información de instantánea recibida). Esta instantánea sobremuestreada puede proporcionarse, a continuación, a la unidad de procesamiento de predicción 152 de un decodificador de capa superior (por ejemplo, el decodificador de vídeo 30B) configurado para decodificar una instantánea 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 omitirse o eludirse. En tales casos, la instantánea desde la memoria intermedia de instantánea decodificada 160 del decodificador de vídeo 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 vídeo 30B. Por ejemplo, si los datos de vídeo proporcionados al decodificador de vídeo 30B y la instantánea de referencia desde la memoria intermedia de instantánea decodificada 160 del decodificador de vídeo 30A son del mismo tamaño o resolución, la instantánea de referencia puede proporcionarse al decodificador de vídeo 30B sin sobremuestreo. Además, en algunas realizaciones, la unidad de sobremuestreo 92 puede ser una unidad de remuestreo 90 configurada para sobremuestrear o submuestrear una instantánea de referencia recibida desde la memoria intermedia de instantánea decodificada 160 del decodificador de vídeo 30A.
Como se ilustra en la Figura 3B, el decodificador de vídeo 33 puede incluir adicionalmente un demultiplexor 99, o demux. El demux 99 puede dividir un flujo de bits de vídeo codificado en múltiples flujos de bits con cada flujo de bits emitido por el demux 99 proporcionándose a un decodificador de vídeo 30A y 30B diferente. Los múltiples flujos de bits pueden crearse recibiendo un flujo de bits y cada uno de los decodificadores de vídeo 30A y 30B recibe una porción del flujo de bits en un momento dado. Mientras en algunos casos los bits del flujo de bits recibido en el demux 99 pueden alternarse un bit cada vez entre cada uno de los decodificadores de vídeo (por ejemplo, los decodificadores de vídeo 30A y 30B en el ejemplo de la Figura 3B), en muchos casos el flujo de bits se divide de forma diferente. Por ejemplo, el flujo de bits puede dividirse alternando qué decodificador de vídeo recibe el flujo de bits un bloque cada vez. En otro ejemplo, el flujo de bits puede dividirse por una relación diferente de 1:1 de bloques a cada uno de los decodificadores de vídeo 30A y 30B. Por ejemplo, pueden proporcionarse dos bloques al decodificador de vídeo 30B para cada bloque proporcionado al decodificador de vídeo 30A. En algunas realizaciones, la división del flujo de bits por el demux 99 puede programarse. 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 vídeo 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 basándose en la resolución o tasa de bits de un vídeo desde la interfaz de entrada 28, basándose en un ancho de banda del enlace 16, basándose en una suscripción asociada con un usuario (por ejemplo, una suscripción pagada frente a una suscripción gratuita) o basándose en cualquier otro factor para determinar una resolución obtenible por el decodificador de vídeo 33.
Instantáneas de punto de acceso intra aleatorio (IRAP)
Algunos esquemas de codificación de vídeo pueden proporcionar diversos puntos de acceso aleatorio a lo largo del flujo de bits de tal forma que el flujo de bits puede decodificarse comenzando desde cualquiera de esos puntos de acceso aleatorio sin necesidad de decodificar ninguna instantánea que precede a esos puntos de acceso aleatorio en el flujo de bits. En tales esquemas de codificación de vídeo, todas las instantáneas que siguen a un punto de acceso aleatorio en orden de emisión (por ejemplo, incluyendo esas instantáneas que están en la misma unidad de acceso que la instantánea que proporciona el punto de acceso aleatorio) pueden decodificarse correctamente sin usar ninguna instantánea que precede al punto de acceso aleatorio. Por ejemplo, incluso si se pierde una porción del flujo de bits durante la transmisión o durante la decodificación, un decodificador puede reanudar la codificación del flujo de bits comenzando desde el siguiente punto de acceso aleatorio. Un soporte para acceso aleatorio puede facilitar, por ejemplo, servicios de difusión en continuo dinámicos, operaciones de búsqueda, conmutación de canales, etc.
En algunos esquemas de codificación, tales puntos de acceso aleatorio pueden proporcionarse por instantáneas que se denominan como instantáneas de IRAP. Por ejemplo, un punto de acceso aleatorio (por ejemplo, proporcionado por una instantánea 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 capa de tal forma que para cada capa de referencia ("capaB") de la capaA (por ejemplo, una capa de referencia que 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 una auA en orden de decodificación (o un punto de acceso aleatorio contenido en auA), las instantáneas en la capaA que siguen a la auB en orden de emisión (incluyendo esas instantáneas ubicadas en la auB) son correctamente decodificables sin necesidad de decodificar ninguna instantánea en la capaA que precede a la auB.
Las instantáneas de IRAP pueden codificarse usando intra predicción (por ejemplo, codificarse sin hacer referencia a otras instantáneas), y pueden incluir, por ejemplo, instantáneas de regeneración instantánea de decodificación (IDR), instantáneas acceso aleatorio limpio (CRA) e instantáneas de acceso de enlace roto (BLA). Cuando existe una instantánea de IDR en el flujo de bits, todas las instantáneas que preceden a la instantánea de IDR en orden de decodificación no se usan para predicción por instantáneas que siguen a la instantánea de IDR en orden de codificación. Cuando existe una instantánea de CRA en el flujo de bits, las instantáneas que siguen a la instantánea de CRA pueden o pueden no usar instantáneas que preceden a la instantánea de CRA en orden de decodificación para predicción. Esas instantáneas que siguen a la instantánea de CRA en orden de decodificación, pero usan instantáneas que preceden a la instantánea de CRA en orden de decodificación, pueden denominarse como instantáneas iniciales omitidas de acceso aleatorio (RASL). Otro tipo de instantánea que sigue a una instantánea de IRAP en orden de decodificación y precede a la instantánea de IRAP en orden de emisión es una instantánea inicial decodificable de acceso aleatorio (RADL), que puede no contener referencias a ninguna instantánea que precede a la instantánea de IRAP en orden de decodificación. La instantánea de RASL puede descartarse por el decodificador si las instantáneas que preceden a la instantánea de CRA no están disponibles. Una instantánea de BLA indica al decodificador que las instantáneas que preceden a la instantánea de BLA pueden no estar disponibles para el decodificador (por ejemplo, porque se juntan dos flujos de bits y la instantánea de BLA es la primera instantánea del segundo flujo de bits en orden de decodificación). Una unidad de acceso (por ejemplo, un grupo de instantáneas que consta de todas las instantáneas codificadas asociadas con el mismo tiempo de emisión a través de múltiples capas) que contiene una instantánea de capa base (por ejemplo, una instantánea que tiene un valor de ID de capa de 0) que es una instantánea de IRAP puede denominarse como una unidad de acceso de IRAP.
Alineamiento de capas cruzadas de instantáneas de IRAP
En SVC, puede no requerirse que las instantáneas de IRAP se alineen (por ejemplo, contengan en la misma unidad de acceso) a través de diferentes capas. Por ejemplo, si se requiriera que las instantáneas de IRAP se alinearan, cualquier unidad de acceso que contiene al menos una instantánea de IRAP contendría únicamente instantáneas de IRAP. Por otra parte, si no se requiriera que las instantáneas de IRAP se alinearan, en una única unidad de acceso, una instantánea (por ejemplo, en una primera capa) puede ser una instantánea de IRAP, y otra instantánea (por ejemplo, en una segunda capa) puede ser una instantánea no de IRAP. Tener tales instantáneas de IRAP no alineadas en un flujo de bits puede proporcionar algunas ventajas. Por ejemplo, en un flujo de bits de dos capas, si existen más instantáneas de IRAP en la capa base que en la capa de mejora, en aplicaciones de difusión y multidifusión, puede conseguirse un retardo de sintonización bajo y una alta eficiencia de codificación.
En algunos esquemas de codificación de vídeo, puede usarse un recuento de orden de instantánea (POC) para realizar el seguimiento del orden relativo en el que se visualizan las instantáneas decodificadas. Algunos de tales esquemas de codificación pueden provocar que los valores de POC se restablezcan (por ejemplo, se establezcan a cero o establezcan a algún valor señalizado en el flujo de bits) siempre que ciertos tipos de instantáneas aparecen en el flujo de bits. Por ejemplo, los valores de POC de ciertas instantáneas de IRAP pueden restablecerse, provocando que los valores de p Oc de otras instantáneas que preceden a esas instantáneas de IRAP en orden de decodificación también se restablezcan. Esto puede ser problemático cuando no se requiere que las instantáneas de IRAP se alineen a través de diferentes capas. Por ejemplo, cuando una instantánea ("picA") es una instantánea de IRAP y otra instantánea ("picB") en la misma unidad de acceso no es una instantánea de IRAP, el valor de POC de una instantánea ("picC"), que se restablece debido a que la picA es una instantánea de IRAP, en la capa que contiene la picA, puede ser diferente del valor de POC de una instantánea ("picD"), que no se restablece, en la capa que contiene la picB, en donde la picC y picD están en la misma unidad de acceso. Esto provoca que las picC y picD tengan diferentes valores
de POC aunque pertenecen a la misma unidad de acceso (por ejemplo, mismo tiempo de emisión). Por lo tanto, en este ejemplo, el proceso de derivación para derivar los valores de POC de picC y picD puede modificarse para producir valores de POC que son consistentes con la definición de valores de POC y unidades de acceso.
Instantánea de inicialización de capa (LIP)
En algunos esquemas de codificación, una instantánea de inicialización de capa ("instantánea de LIP") puede definirse como una instantánea que es una instantánea de IRAP que tiene una bandera de NoRaslOutputFlag (por ejemplo, una bandera que indica que las instantáneas de RASL no tienen que emitirse si se establecen a 1 e indica que las instantáneas de RASL tienen que emitirse si se establecen a 0) establecida a 1 o una instantánea que se contiene una unidad de acceso de IRAP inicial, que es una unidad de acceso de IRAP en la que la instantánea de capa base (por ejemplo, una instantánea que tiene un ID de capa de 0 o ID de capa más pequeño definido en el flujo de bits) tiene la NoRaslOutputFlag establecida a 1.
En algunas realizaciones, puede activarse un SPS en cada instantánea de LIP. Por ejemplo, cada instantánea de IRAP que tiene una bandera de NoRaslOutputFlag establecida a 1 o cada instantánea que se contiene en una unidad de acceso de IRAP inicial, un nuevo SPS, que puede ser diferente (por ejemplo, que especifica diferentes resoluciones de instantánea, etc.) del SPS que se activó anteriormente. Sin embargo, en un caso en el que la instantánea de LIP no es una instantánea de IRAP (por ejemplo, cualquier instantánea contenida en una unidad de acceso de IRAP inicial) y la instantánea de capa base en la unidad de acceso de IRAP inicial es una instantánea de IDR con una bandera de NoClrasOutputFlag de bandera (por ejemplo, una bandera que indica que las instantáneas de omisión de acceso aleatorio de capas cruzadas no tienen que emitirse si se establecen a 1 e indica que las instantáneas de omisión de acceso aleatorio de capas cruzadas tienen que emitirse si se establecen a 0) establecida a 0, no debería permitirse que la instantánea de LIP active un nuevo SPS. Si se activa un nuevo SPS en la instantánea de LIP de este tipo en un caso de este tipo, particularmente cuando los contenidos de la RBSP de SPS del nuevo SPS es diferente de los del SPS que estaba anteriormente activo antes de la unidad de acceso de IRAP inicial, podría haber problemas con diferentes resoluciones de instantánea y elasticidad a errores. Por ejemplo, el nuevo SPS puede actualizar la resolución y usar predicción temporal para referirse a instantáneas de diferentes tamaños.
Empuje y expulsión de instantáneas
Las instantáneas que se decodifican (por ejemplo, de modo que pueden visualizare o usarse para predecir otras instantáneas) se almacenan en una memoria intermedia de instantánea decodificada (DPB). Las instantáneas que tienen que emitirse pueden marcarse como "necesarias para emisión", y las instantáneas que tienen que usarse para predecir otras instantáneas pueden marcarse como "usadas para referencia". Las instantáneas decodificadas que no se marcan como "necesarias para emisión" ni como "usadas para referencia" (por ejemplo, instantáneas que se marcaron inicialmente como "usadas para referencia" o "necesarias para emisión", pero posteriormente se marcaron como "no usadas para referencia" o "no necesarias para emisión") pueden estar presentes en la DPB hasta que se eliminan por el proceso de decodificación. En codificadores de conformidad con el orden de emisión, el proceso de eliminación de instantáneas de la DPB a menudo sigue inmediatamente a la emisión de instantáneas que se marcan como "necesarias para emisión". Este proceso de emisión y posterior eliminación puede denominarse como "empuje".
También existen situaciones en las que el decodificador puede eliminar las instantáneas en la DPB sin emitir, aunque estas instantáneas pueden marcarse como "necesarias para emisión". Para facilidad de descripción en este documento, las instantáneas decodificadas que están presentes en la DPB en el momento de la decodificación de una instantánea de IRAP (independientemente de si las instantáneas decodificadas se marcan como "necesarias para emisión" o "usadas para referencia") se denominan como "instantáneas de DPB con retardo" asociadas con la instantánea de IRAP o "instantáneas de DPB con retardo asociadas" de la instantánea de IRAP. Algunos ejemplos de tales situaciones, en el contexto de HEVC, se describen a continuación.
En un ejemplo, cuando una instantánea de CRA con NoRaslOutputFlag igual a un valor de "1" está presente en el medio de un flujo de bits (por ejemplo, no la primera instantánea en el flujo de bits), las instantáneas de DPB con retardo asociadas con la instantánea de CRA no se emitirían y se eliminarían de la DPB. Es probable que tales situaciones se produzcan en puntos de empalme, en los que dos flujos de bits se juntan y la primera instantánea del segundo flujo de bits es una instantánea de CRA con NoRaslOutputFlag igual a un valor de "1". En otro ejemplo, cuando una instantánea de IRAP picA que tiene NoRaslOutputFlag igual a un valor de "1" y que no es una instantánea de CRA (por ejemplo, una instantánea de IDR) está presente en el medio de un flujo de bits y la resolución de la instantánea cambia en la picA (por ejemplo, con la activación de un nuevo SPS), las instantáneas de DPB con retardo asociadas de la picA pueden eliminarse de la DPB antes de que puedan emitirse, porque si las instantáneas de DPB con retardo asociadas continúan ocupando la DPB, la decodificación de las instantáneas comenzando desde la picA puede volverse problemática, por ejemplo, debido a un desbordamiento de memoria intermedia. En este caso, el valor de no_output_of_prior_pics_flag (por ejemplo, una bandera que indica que las instantáneas que se decodificaron y almacenaron anteriormente en la DPB deberían eliminarse de la DPB sin emitirse si se establecen a 1, e indica que las instantáneas que se decodificaron y almacenaron anteriormente en la DPB no deberían eliminarse de la DPB sin emitirse si se establecen a 0) asociado con la picA debería establecerse igual a un valor de "1" por el codificador o empalmador, o NoOutputOfPriorPicsFlag (por ejemplo, un valor derivado que puede determinarse basándose en la
información incluida en el flujo de bits) puede derivarse para ser igual a un valor de "1" por el decodificador, para expulsar las instantáneas con retardo sin salida de la DPB. La operación de empalme se describe adicionalmente a continuación con respecto a la Figura 4.
Este proceso de eliminación de instantáneas de DPB con retardo asociadas de la DPB sin emitir puede denominarse como "expulsión". Incluso en situaciones no descritas anteriormente, una instantánea de IRAP puede especificar el valor de no_output_of_prior_pics_flag igual a un valor de "1", de modo que el decodificador expulsará las instantáneas con retardo de DPB asociadas de la instantánea 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 multicapa 400 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 instantánea de EL 412A, y la BL 410B incluye una instantánea de BL 412B. La EL 420A incluye las instantáneas de EL 422A, 424A y 426A, y la BL 420B incluye las instantáneas de BL 422B, 424B y 426B. El flujo de datos multicapa 400 incluye adicionalmente las unidades de acceso (AU) 430-460. La AU 430 incluye la instantánea de EL 412A y la instantánea de BL 412B, la AU 440 incluye la instantánea de EL 422A y la instantánea de BL 422B, la AU 450 incluye la instantánea de EL 424A y la instantánea de BL 424B, y la AU 460 incluye la instantánea de EL 426A y la instantánea de BL 426B. En el ejemplo de la Figura 4, la instantánea de BL 422B es una instantánea de IRAP, y la correspondiente instantánea de EL 422A en la AU 440 es una instantánea final (por ejemplo, una instantánea no de IRAP), y en consecuencia, la AU 440 es una AU de IRAP no alineada. También, debería observarse 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 juntan dos flujos de bits diferentes, en algunas realizaciones, un punto de empalme puede estar presente cuando se elimina una porción del flujo de bits. Por ejemplo, un flujo de bits puede tener las porciones A, B y C, estando la porción B entre las porciones A y C. Si la porción B se elimina del flujo de bits, las porciones restantes A y C pueden juntarse, y el punto en el que se juntan puede denominarse como un punto de empalme. Más en general, un punto de empalme como se ha analizado en la presente solicitud puede considerarse que está presente cuando uno o más parámetros o banderas señalizados o derivados tienen valores predeterminados. Por ejemplo, sin recibir una indicación específica de que un punto de empalme existe en una ubicación particular, un decodificador puede determinar el valor de una bandera (por ejemplo, NoClrasOutputFlag), y realizar una o más técnicas descritas en esta solicitud basándose en el valor de la bandera.
Expulsión de instantáneas en un contexto multicapa
El proceso de expulsión de instantáneas es también relevante en flujos de datos multicapa. Más específicamente, es relevante para todas las instantáneas que pertenecen a una unidad de acceso de IRAP inicial, y también a instantáneas de IRAP que no están en una unidad de acceso de IRAP inicial. Como se ha descrito anteriormente, en algunas implementaciones existentes tales como SHVC y MV-HEVC, una unidad de acceso de IRAP puede definirse como una unidad de acceso que contiene una instantánea de IRAP que tiene nuh_layer_id igual a un valor de "0" (independientemente de si otras instantáneas en la unidad de acceso son instantáneas de IRAP), y una unidad de acceso de IRAP inicial puede definirse como una unidad de acceso que contiene una instantánea de IRAP que tiene nuh_layer_id igual a un valor de "0" y que tiene NoRaslOutputFlag igual a un valor de "1" (de nuevo, independientemente de si otras instantáneas en la unidad de acceso son instantáneas de IRAP).
Con la posibilidad de tener instantáneas de IRAP no alineadas en unidades de acceso (por ejemplo, una unidad de acceso puede contener tanto instantáneas de IRAP como instantáneas no de IRAP) en SHVC y MV-HEVC, las situaciones descritas en la sección anterior en el contexto de HEVC pueden producirse en diferentes capas de un flujo de bits de SHVC/MV-HEVC. Por ejemplo, una instantánea de CRA picA que tiene NoRaslOutputFlag 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 instantánea de CRA en la misma capa como la picA. También, el cambio de resolución de una instantánea podría producirse en instantáneas de IRAP en una capa de mejora en una unidad de acceso en la que la resolución de la capa base no cambia, o viceversa. Pueden surgir situaciones similares para diferentes tamaños de DPB.
Expulsión de instantáneas en SVC y MVC
Debido al diseño de codificación de bucle único de SVC, únicamente se inserta en la DPB una instantánea reconstruida por unidad de acceso, excepto para casos cuando la así denominada escalabilidad granular media (MGS) está en uso (en cuyo caso puede haber dos instantáneas decodificadas de las así denominadas unidades de acceso de instantánea clave que se almacenan en la DPB). Sin embargo, en cada unidad de acceso únicamente puede emitirse la instantánea decodificada de la capa más alta. Las operaciones para gestionar la DPB, incluyendo la expulsión de instantáneas, por lo tanto, únicamente se refieren a instantáneas en la capa más alta, principalmente porque no se requiere que una instantánea decodificada de una capa base esté presente en la DPB para predecir la capa de mejora.
En MVC, más de una vista puede ser una vista de salida objetivo, y necesitan mantenerse los componentes de vista decodificados para predecir componentes de vista en otra capa, incluso si no se necesitan para predecir 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. La bandera no_output_of_prior_pics_flag se señaliza para cada componente de vista de IDR (por ejemplo, un componente de vista de iDr de una vista no de base se señaliza con non_idr_flag igual a un valor de "0"), y la expulsión de componentes de vista es específica de capa (o específica de vista). En MVC, por simplicidad, se alinean los componentes de vista de IDR en una unidad de acceso en MVC. 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 son también componentes de vista de IDR. Por lo tanto, la operación de expulsión también se realiza a través de todas las vistas en el flujo de bits, aunque la operación puede ser específica de vista/capa.
Expulsión de instantáneas en SHVC y MV-HEVC
Cuando se produce la expulsión en el diseño actual en SHVC y MV-HEVC, se eliminan todas las instantáneas en la DPB sin emitirse (por ejemplo, visualizadas). No es posible que se expulsen instantáneas de únicamente una capa en el flujo de bits (excepto en el caso trivial en el que únicamente la capa base está presente en el flujo de bits), por lo tanto la expulsión no es específica de capa.
Conformidad de temporización de salida
En algunas implementaciones (por ejemplo, SHVC, MV-HEVC, etc.), tal como Borrador de Trabajo (WD) de SHVC 5 y Borrador de Trabajo (WD) de MV-HEVC 7, la emisión y eliminación de instantáneas de la DPB para conformidad de temporización de emisión se realizan como se describe a continuación.
Tabla 1 - conformidad de tem orización de emisión en WD de SHVC 5 WD de MV-HEVC 7
_____________________ (continuación)_______________________________________ antáneas de la DPB
s siguientes condiciones son ciertas para cualquier instantánea k en la DPB, todas de DPB se eliminan de la DPB:
arca como "no usada para referencia"
PicOutputFlag igual a 0 o su tiempo de emisión de DPB es menor que o igual al CPB de la primera unidad de decodificación (indicada como unidad de decodificación al n; es decir DpbOutputTime[k] es menor que o igual a CpbRemovalTime(m)
Conformidad de orden de emisión
En algunas implementaciones (por ejemplo, SHVC, MV-HEVC, etc.), la emisión y eliminación de instantáneas de la DPB para conformidad de orden de emisión se realizan como se describe a continuación.
Tabla 2 - conformidad de orden de emisión en WD de SHVC 5 WD de MV-HEVC 7
continuación
Comparación de conformidad de temporización de emisión y conformidad de orden de emisión
Como se ha descrito anteriormente, tanto la conformidad de temporización de emisión como la conformidad de orden de emisión pueden no resultar en el mismo comportamiento de expulsión. Por ejemplo, para decodificadores de conformidad de temporización de emisión, se invoca la expulsión para cada instantánea en una capa que no es la primera instantánea de la capa en el flujo de bits y que tiene NoRaslOutputFlag igual a un valor de "1". Cuando se invoca la expulsión, se expulsan todas las instantáneas decodificadas de esa capa en la DPB. Por otra parte, para decodificadores de conformidad de orden de emisión, la expulsión se invoca únicamente para una instantánea en la capa base que no es la primera instantánea en el flujo de bits y que tiene NoRaslOutputFlag igual a un valor de "1". Cuando la expulsión se invoca, se expulsan todas las instantáneas decodificadas de todas las capas en la DPB.
En un flujo de bits que tiene dos capas, cuando una instantánea de LIP en la EL que es una instantánea de IRAP y no pertenece a una AU de IRAP activa una resolución diferente, y la resolución de la BL no puede cambiar en esta AU debido a que la instantánea de BL está en una AU no de IRAp (por ejemplo, no una instantánea de IRAP), puede desearse una expulsión específica de capa de instantáneas. En este punto, únicamente tienen que expulsarse instantáneas de la EL, pero no de la BL. Esta características no está disponible para conformidad de orden de emisión.
En un flujo de bits que tiene dos capas, en un caso en el que una unidad de acceso incluye una instantánea de BL que es una instantánea de IDR y una instantánea de EL que es una instantánea no de IRAP, la resolución de la instantánea de BL puede actualizarse en la unidad de acceso, mientras que la resolución de la instantánea de EL no se actualiza. En un caso de este tipo, la expulsión debería realizarse únicamente para las instantáneas de la BL, y las instantáneas de EL no deberían expulsarse. Esta características no está disponible para conformidad de orden de emisión.
Señalización de bandera que indica emisión de instantáneas anteriores
En algunas realizaciones, la variable NoOutputOfPriorPicsFlag (por ejemplo, un valor derivado por el decodificador para determinar, cuando se decodifica una instantánea de IRAP, si emitir o no las instantáneas en la DPB antes de que se expulse la DPB) se deriva basándose en no_output_of_prior_pics_flag y otras condiciones. Por ejemplo, no_output_of_prior_pics_flag puede ser un valor que se señaliza en el flujo de bits, mientras que NoOutputOfPriorPicsFlag puede ser un valor derivado por un codificador basándose en la información incluida en el flujo de bits. Un decodificador puede derivar el valor de NoOutputOfPriorPicsFlag basándose en el valor de no_output_of_prior_pics_flag y otras condiciones y, a continuación, usar el valor derivado de NoOutputOfPriorPicsFlag para determinar si emitir instantáneas o no. En algunas realizaciones, la bandera NoOutputOfPriorPicsFlag puede indicar si la unidad de acceso actual comprende un punto de empalme, en el que dos flujos de bits diferentes se cosen juntos.
En algunas realizaciones, NoClRasOutputFlag y NoRaslOutputFlag pueden ser variables derivadas basándose en la información incluida en el flujo de bits. Por ejemplo, NoRaslOutputFlag puede derivarse para cada instantánea de IRAP (por ejemplo, en BL y/o EL), y NoClRasOutputFlag puede derivarse únicamente para las instantáneas de capa inferior (por ejemplo, instantáneas de BL). El valor de cada una de NoClRasOutputFlag y NoRaslOutputFlag puede indicar que algunas instantáneas en el flujo de bits pueden no ser correctamente decodificables debido a la indisponibilidad de ciertas instantáneas de referencia. Tal indisponibilidad de instantáneas de referencia puede producirse en puntos de acceso aleatorios. Instantáneas de omisión de acceso aleatorio de capas cruzadas (CL-RAS) son, de algunas formas, el equivalente multicapa de las instantáneas de RASL. Si un decodificador comienza a
decodificar un flujo de bits en un punto de acceso aleatorio (por ejemplo, una unidad de acceso que tiene una instantánea de IRAP de BL), y la instantánea de EL en la unidad de acceso no es una instantánea de IRAP, entonces esa instantánea de EL es una instantánea de una CL-RAS. Todas instantáneas en la EL pueden ser instantáneas de CL-RAS (por ejemplo, decodificables, pero no correctamente decodificables) hasta que se produce una instantánea de IRAP en la El . Cuando una instantánea de IRAP de EL de este tipo se proporciona en el flujo de bits, puede decirse que la EL se ha inicializado.
Por ejemplo, en el ejemplo de la Figura 4, la instantánea de EL 422A puede ser una instantánea de LIP que no es una instantánea de IRAP, y la instantánea de BL 422B puede ser una instantánea de IRAP que tiene una bandera NoClRasOutputFlag asociada con la misma. En este ejemplo, el valor de NoOutputOfPriorPicsFlag asociado con la instantánea de EL 422A puede inferirse basándose en el valor de NoClRasOutputFlag asociado con la instantánea de BL 422B. Por ejemplo, si NoClRasOutputFlag es igual a un valor de "1", NoOutputOfPriorPicsFlag para la instantánea de EL 422A también puede establecerse a un valor de "1", provocando que las instantáneas en la DPB no se emitan antes de que se eliminen de la DPB. Por otra parte, si NoClRasOutputFlag es igual a un valor de "0", NoOutputOfPriorPicsFlag para la instantánea de EL 422A también puede establecerse a un valor de "0", provocando que las instantáneas en la DPB se eliminen de la DPB después de la emisión.
Derivación de información de anidación de ID temporal de SPS y unidad de NAL de final de secuencia (EOS) para flujos de bits multicapa
En un flujo de datos multicapa, una capa puede incluir una o más subcapas temporales. Cada subcapa temporal puede tener un identificador (ID) asociado con la misma llamado ID temporal. Por ejemplo, si la capa base en el flujo de datos multicapa 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 instantáneas que tienen un ID temporal más alto que la instantánea actual no se usan como instantáneas de referencia para la instantánea actual. La bandera sps_temporal_id_nesting_flag puede indicar adicionalmente si una instantánea particular que tiene un ID temporal igual a o menor que el ID temporal de la instantánea actual puede usarse como una instantánea de referencia cuando existe otra instantánea que tiene un ID temporal más bajo que la instantánea particular y que sigue a la instantánea particular en orden de decodificación, pero precede a la instantánea actual en orden de decodificación. Por ejemplo, cuando se habilita sps_temporal_id_nesting_flag (por ejemplo, se establece igual a 1), si la instantánea A tiene un ID temporal menor que o igual a la instantánea actual, pero la instantánea B un ID temporal más bajo que la instantánea A y está entre la instantánea A y la instantánea actual en orden de decodificación (por ejemplo, un valor de POC entre el valor de POC de la instantánea A y la instantánea actual), entonces la instantánea A no puede usarse como una instantánea de referencia para la instantánea actual. Por otra parte, cuando sps_temporal_id_nesting_flag no está habilitada (por ejemplo, se establece igual a 0), si la instantánea A tiene un ID temporal menor que o igual a la instantánea actual, pero la instantánea B tiene un ID temporal más bajo que la instantánea A y está entre la instantánea A y la instantánea actual en orden de decodificación (por ejemplo, un valor de POC entre el valor de POC de la instantánea A y la instantánea actual), la instantánea A puede usarse como una instantánea de referencia para la instantánea actual.
Las versiones anteriores de SHVC y MV-HEVC (por ejemplo, Borrador de trabajo 5 de SHVC y Borrador de trabajo 7 de MV-HEVC) plantean un conflicto en la derivación de sps_temporal_id_nesting_flag cuando el elemento de sintaxis no está presente en el flujo de bits. En ciertas condiciones, no puede determinarse que el valor de la bandera sea o bien 0 o bien 1. Para abordar estos y otros desafíos, las técnicas de acuerdo con ciertos aspectos pueden definir cómo derivar el valor de sps_temporal_id_nesting_flag en tales condiciones (por ejemplo, establecer prioridad en el proceso de derivación) para eliminar el conflicto.
Además, en HEVC, una AU contiene una instantánea de únicamente una capa, y a menudo el concepto de instantánea y AU pueden usarse indistintamente. En contraste, en SHVC y MV-HEVC, una AU puede contener instantáneas de más de una capa, que puede hacer incierto si una variable o una bandera debería asociarse con una capa particular (por ejemplo, la capa base) o debería aplicarse a toda la AU. Un ejemplo de una variable de este tipo es HandleCraAsBlaFlag. La variable HandleCraAsBlaFlag puede indicar si tratar una instantánea de CRA como una instantánea de BLA. Por ejemplo, cuando un flujo de bits se accede aleatoriamente o empalma en una CRA, la CRA se convertiría a una BLA, por ejemplo, para eliminar cualquier instantánea de RASL que sigue a la CRA. La variable puede introducirse, por ejemplo, a través de medios externos, para facilitar el proceso de tratar una CRA como una BLA. Un decodificador o empalmador puede procesar fácilmente la CRA como BLA basándose en el valor de la variable, en lugar de convertir realmente la CRA a una BLA, que puede requerir cambiar el encabezamiento de corte de una CRA. Las versiones anteriores de SHVC y MV-HEVC hacen que no quede claro si HandleCraAsBlaFlag se asocia únicamente con la capa base o la AU. Para abordar estos y otros desafíos, las técnicas de acuerdo con ciertos aspectos también pueden definir si HandleCraAsBlaFlag debería asociarse únicamente con la capa base o la AU.
Además, como se ha explicado anteriormente con respecto a HandleCraAsBlaFlag, debido a que una AU puede tener instantáneas de más de una capa en SHVC y MV-HEVC, puede ser incierto si una unidad de NAL de EOS debería asociarse con una capa particular (por ejemplo, la capa base) o debería aplicarse a toda la AU. La unidad de NAL de EOS puede indicar el final de una secuencia de vídeo codificada (CVS) y generalmente es seguida por una instantánea de IRAP, tal como una instantánea de IDR, una instantánea de b LA o una instantánea de CRA. Las versiones
anteriores de SHVC y MV-HEVC no hacen que quede claro si la unidad de NAL de EOS se asocia únicamente con la capa base o la AU. Para abordar estos y otros desafíos, las técnicas de acuerdo con ciertos aspectos pueden definir si la unidad de NAL de EOS debería asociarse únicamente con la capa base o la AU.
Ciertos detalles relacionados con la derivación de información de anidación de ID temporal de SPS e información de unidad de NAL de EOS para flujos de datos multicapa, así como derivación de HandleCraAsBlaFlag, se explican adicionalmente a continuación. Diversos términos usados a lo largo de toda esta divulgación son términos amplios que tienen su significado ordinario. Además, en algunas realizaciones, ciertos términos se refieren a los siguientes conceptos de vídeo. Los medios externos pueden referirse a cualquier aparato o entidad que no es una parte de un codificador o un decodificador, pero interactúa con el codificador o el decodificador, por ejemplo, a través de una interfaz de programación de aplicación (API). En ciertas realizaciones, los medios externos también pueden denominarse como un aparato externo.
Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa
En las versiones anteriores de SHVC y MV-HEVC, las semánticas de sps_temporal_id_nesting_flag pueden especificarse como se indica a continuación:
T l - m r l i n in fl n WD HV WD MV-HEV 7
En las versiones anteriores de SHVC y MV-HEVC, cuando sps_temporal_id_nesting_flag es igual a 1, puede aplicarse lo siguiente:
• Sea tIdA el valor de TemporalId de la instantánea actual picA.
• Cualquier instantánea picB con TemporalId igual a tIdB que es menor que o igual a tIdA no se incluirá en RefPicSetStCurrBefore, RefPicSetStCurrAfter o RefPicSetLtCurr de picA cuando existe una instantánea picC que tiene TemporalId menor que tIdB, sigue a picB en orden de decodificación, y precede a picA en orden de decodificación.
Puede haber problemas con la inferencia de sps_temporal_id_nesting_flag cuando el elemento de sintaxis no está presente o indicado. Algunas de las condiciones y/o restricciones pueden ser como se indica a continuación: 1) cuando no está presente, bandera de sps_temporal_id_nesting se infiere que sea igual a vps_temporal_id_nesting_flag; y 2) cuando sps_max_sub_layers_minus1 es igual a 0, bandera de sps_temporal_id_nesting es igual a 1.
Puede producirse un conflicto cuando sps_temporal_id_nesting_flag no está presente y los valores de vps_temporal_id_nesting_flag y sps_max_sub_layers_minus1 son ambos iguales a 0. En tales casos, ambas de las condiciones anteriormente mencionadas no se satisfacen al mismo tiempo, y puede no estar claro si el valor de sps_temporal_id_nesting_flag debería inferirse para ser igual a 0 o 1.
Realización de ejemplo 1
Para abordar el conflicto, las semánticas de sps_temporal_id_nesting_flag pueden modificarse como se indica a continuación. Las realizaciones de ejemplo en esta divulgación se proporcionan en el contexto de versiones anteriores de SHVC y MV-HEVC (por ejemplo, WD de SHVC 5 y WD de MV-HEVC 7). Adiciones a las versiones anteriores de SHVC y MV-HEVC se indican en cursiva, y eliminaciones de las versiones anteriores de SHVC y MV-HEVC se indican tachadas.
T l 4 - r liz i n m l 1
De acuerdo con algunas realizaciones, los elementos de sintaxis y variables usados en la inferencia de sps_temporal_id_nesting_flag pueden referirse a lo siguiente:
• El elemento de sintaxis o variable bandera de vps_temporal_id_nesting puede ser similar a sps_temporal_id_nesting_flag y se asocia con un VPS.
- Por ejemplo, vps_temporal_id_nesting_flag puede indicar un nivel de VPS si una instantánea particular que tiene un ID temporal igual a o menor que el ID temporal de la instantánea actual puede usarse como una instantánea de referencia cuando existe otra instantánea que tiene un ID temporal más bajo que la instantánea particular y que sigue a la instantánea particular en orden de decodificación, pero precede a la instantánea actual en orden de decodificación.
- vps_temporal_id_nesting_flag puede tener menos prioridad que sps_temporal_id_nesting_flag. Si tanto vps_temporal_id_nesting_flag como sps_temporal_id_nesting_flag están presentes para una capa particular, se usa el valor de sps_temporal_id_nesting_flag para esa capa, no el valor de vps_temporal_id_nesting_flag.
• El elemento de sintaxis o variable sps_max_sub_layers_minus1 se refiere al número máximo de subcapas temporales en una capa particular menos 1.
- Por ejemplo, si existe únicamente 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_layers_minus1 es 0. En otro ejemplo, si existen 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_layers_minus1 es 1.
En esta realización, cuando el elemento de sintaxis sps_temporal_id_nesting_flag no está presente en el flujo de bits, el valor de sps_temporal_id_nesting_flag puede inferirse comprobando el valor de sps_max_sub_layers_minus1. Si sps_max_sub_layers_minus1 es mayor que 0, el valor de sps_temporal_id_nesting_flag se establece igual al valor de vps_temporal_id_nesting_flag. Si sps_max_sub_layers_minus1 es menor que o igual a 0, el valor de sps_temporal_id_nesting_flag se establece igual a 1. La realización de ejemplo 1 establece la prioridad para cuál de las condiciones y/o restricciones 1) y 2) anteriores debería aplicarse primero. La realización de ejemplo 1 puede definir primero cómo inferir el valor de sps_temporal_id_nesting_flag cuando sps_max_sub_layers_minus1 es mayor que 0 ya que una capa tiene más de una subcapa temporal en este caso. Cuando sps_max_sub_layers_minus1 es menor que o igual a 0, una capa tiene más de una subcapa temporal de forma que el valor de sps_temporal_id_nesting_flag puede no ser tan importante.
De esta manera, las técnicas pueden eliminar el conflicto en derivación de sps_temporal_id_nesting_flag cuando sps_temporal_id_nesting_flag no está presente en el flujo de bits y los valores de vps_temporal_id_nesting_flag y sps_max_sub_layers_minus1 son ambos iguales a 0.
Método de derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa
La Figura 5 es un diagrama de flujo que ilustra un método de codificación de información de vídeo, de acuerdo con una realización de la presente divulgación. El método se refiere a la derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa. El proceso 500 puede realizarse 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 realizarse por otros componentes, tal como un codificador, como se ha mencionado anteriormente. El decodificador de vídeo de capa 1 30B del decodificador 33 y/o el decodificador de capa 0 30A del decodificador 33 puede realizar el proceso 500, dependiendo de la realización. Todas las realizaciones descritas con respecto a la Figura 5 pueden implementarse de forma separada, 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 se inicia en el bloque 501. El decodificador 33 puede incluir una memoria para almacenar información de vídeo 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 puede asociarse con un SPS y una primera bandera indicativa de si el ID temporal de una instantánea de referencia para instantáneas que se refieren al SPS puede anidarse. En una realización, la primera bandera indica si una instantánea actual en una AU actual que se refiere al SPS puede usar una primera instantánea como una instantánea de referencia en donde la primera instantánea tiene un ID temporal que es menor que o igual a un ID temporal de la instantánea actual y precede a la instantánea actual en orden de decodificación cuando una segunda instantánea tiene un ID temporal menor que el ID temporal de la primera instantánea y sigue a la primera instantánea, pero precede a la instantánea actual en orden de decodificación. En algunas realizaciones, la primera bandera incluye sps_temporal_id_nesting_flag. La primera instantánea puede no usarse como una instantánea de referencia cuando el valor de la primera bandera se establece igual a 1. El primer elemento de sintaxis puede incluir sps_temporal_id_nesting_flag.
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_layers_minus1.
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 de la primera bandera igual al valor de una segunda bandera, la segunda bandera indicativa de si el ID temporal de una instantánea de referencia para cualquier instantánea puede anidarse basándose al menos en parte en el valor del segundo elemento de sintaxis. En una realización, la segunda bandera indica si una instantánea actual en una AU actual puede usar una tercera instantánea como una instantánea de referencia en donde la tercera instantánea tiene un ID temporal que es menor que o igual a un ID temporal de la instantánea actual y precede a la instantánea actual en orden de decodificación cuando una cuarta instantánea tiene un ID temporal menor que el ID temporal de la tercera instantánea y sigue a la tercera instantánea, pero precede a la instantánea actual en orden de decodificación. En algunas realizaciones, la segunda bandera incluye vps_temporal_id_nesting_flag.
El decodificador 33 puede establecer el valor de la primera bandera igual al valor de la segunda bandera, en respuesta a que el valor del segundo elemento de sintaxis es mayor que 0, la segunda bandera asociada con un VPS en el flujo de bits. El decodificador 33 puede establecer el valor de la primera bandera igual a 1, en respuesta a que el valor del segundo elemento de sintaxis es menor que o igual a 0.
El proceso 500 finaliza en el bloque 505. Pueden añadirse y/u omitirse bloques en el proceso 500, dependiendo de la realización, y los bloques del proceso 500 pueden realizarse en diferentes órdenes, dependiendo de la realización. A continuación se describen ciertos detalles relacionados con el proceso 500 en conexión con la Figura 5A.
Cualquier característica y/o realización descrita con respecto a la derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa en esta divulgación puede implementarse de forma separada o en cualquier combinación de las mismas. Por ejemplo, cualquier característica y/o realización descrita en conexión con las Figuras 1-4 y otras partes de la divulgación puede 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 vídeo, de acuerdo con una realización de la presente divulgación. El método se refiere a la derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa. El proceso 500A puede realizarse 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 realizarse por otros componentes, tales como un codificador, como se ha mencionado anteriormente. El decodificador de vídeo de capa 1 30B del decodificador 33 y/o el decodificador de capa 0 30A del decodificador 33 puede realizar el proceso 500A, dependiendo de la realización. Todas las realizaciones descritas con respecto a la Figura 5A pueden implementarse de forma separada, 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 se inicia en el bloque 501A. El decodificador 33 puede incluir una memoria para almacenar información de vídeo asociada con una pluralidad de capas.
En el bloque 502A, el decodificador 33 determina si un primer elemento de sintaxis asociado con una primera bandera está presente en un flujo de bits. La primera bandera puede ser indicativa de si el ID temporal de una instantánea de referencia puede anidarse y puede asociarse con un SPS en el flujo de bits. La primera bandera puede indicar si una instantánea actual en una AU actual puede usar una primera instantánea como una instantánea de referencia en donde la primera instantánea tiene un ID temporal que es menor que o igual a un ID temporal de la instantánea actual y precede a la instantánea actual en orden de decodificación cuando una segunda instantánea tiene un ID temporal menor que el ID temporal de la primera instantánea y sigue a la primera instantánea, pero precede a la instantánea actual en orden de decodificación. La primera instantánea puede no usarse como una instantánea de referencia cuando el valor de la primera bandera se establece igual a 1. En una realización, el primer elemento de sintaxis es el primer elemento de sintaxis es sps_temporal_id_nesting_flag. En una realización, la primera bandera es sps_temporal_id_nesting_flag.
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_layers_minus1.
En el bloque 504A, si el valor del segundo elemento de sintaxis es mayor que 0, el decodificador 33 establece el valor de la primera bandera igual al valor de una segunda bandera que indica si un ID temporal de una instantánea de referencia puede anidarse, en donde la segunda bandera se asocia con un VPS en el biflujo, en el bloque 505A. La segunda bandera puede ser indicativa de si una instantánea actual en una AU actual puede usar una tercera instantánea como una instantánea de referencia en donde la tercera instantánea tiene un ID temporal que es menor que o igual a un ID temporal de la instantánea actual y precede a la instantánea actual en orden de decodificación cuando una cuarta instantánea tiene un ID temporal menor que el ID temporal de la tercera instantánea y sigue a la tercera instantánea, pero precede a la instantánea actual en orden de decodificación. La tercera instantánea y la cuarta
instantánea pueden referirse a la misma instantánea que la primera instantánea y la segunda instantánea anteriores, respectivamente. La primera y segunda banderas pueden indicar si una instantánea particular que tiene el mismo o menor ID temporal que la instantánea actual puede usarse como una instantánea de referencia cuando existe otra instantánea que tiene un ID temporal más bajo que la instantánea particular y sigue a la instantánea particular pero precede a la instantánea actual en orden de decodificación. En una realización, la segunda bandera es vps_temporal_id_nesting_flag.
En el bloque 504A, si el valor del segundo elemento de sintaxis es menor que o igual a 0, el decodificador 33 establece el valor de la primera bandera 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, dependiendo de la realización, y los bloques del proceso 500A pueden realizarse en diferentes órdenes, dependiendo de la realización.
Cualquier característica y/o realización descrita con respecto a la derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa en esta divulgación puede implementarse de forma separada o en cualquier combinación de las mismas. Por ejemplo, cualquier característica y/o realización descrita en conexión con las Figuras 1-5 y otras partes de la divulgación puede 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 fin de secuencia para flujos de datos multicapa
Dado que SHVC y MV-HEVC pueden contener instantáneas de una o más capas, una unidad de acceso puede contener instantáneas que son de diferentes capas, pero tienen el mismo valor de POC. Por lo tanto, puede no estar claro si una unidad de NAL de fin de secuencia se aplica a una cierta capa o se aplica a varias o todas las capas. Una unidad de NAL de EOS puede indicar el final de una secuencia de instantáneas o unidades de acceso. Por ejemplo, la instantánea o unidad de acceso después de una EOS pertenece a otra secuencia. En flujos de datos multicapa (por ejemplo, SHVC o MV-HEVC), ya que una unidad de acceso puede contener más de una instantánea, no está claro si el alcance de una unidad de NAL de fin de secuencia se asocia con una instantánea o una unidad de acceso. Por consiguiente, las técnicas de acuerdo con ciertos aspectos pueden modificar las versiones anteriores de SHVC y MV-HEVC para clarificar si la unidad de NAL de EOS se aplica a una capa particular, o a alguna 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 MV-HEVC (por ejemplo, WD de SHVC 5 y WD de MV-HEVC 7). Las instrucciones para modificar las versiones anteriores de SHVc y MV-HEVC se indican en cursiva, y eliminaciones de las versiones anteriores de SHVC y MV-HEVC se indican tachadas.
T l - r liz i n m l 2
En esta realización, existe 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 diversos tipos, y el tipo EOS_NUT puede indicar que la unidad de NAL contiene una EOS. De acuerdo con ciertos aspectos, una unidad de NAL que es del tipo de EOS_NUT puede denominarse como la unidad de NAL de EOS.
La realización de ejemplo 2 clarifica que la unidad de NAL de EOS se aplica a todas las capas y de este modo elimina la ambigüedad en el procesamiento de unidades de NAL de EOS en flujos de datos multicapa.
Realización de ejemplo 3
Las realizaciones de ejemplo en esta divulgación se proporcionan en el contexto de versiones anteriores de SHVC y MV-HEVC (por ejemplo, WD de SHVC 5 y WD de m V-HEVC 7). Las instrucciones para modificar las versiones anteriores de SHVc y MV-HEVC se indican en cursiva. Adiciones a las versiones anteriores de SHVC y MV-HEVC se indican en cursiva y subrayado, y eliminaciones de las versiones anteriores de SHVC y MV-HEVC se indican tachadas.
T l - r liz i n m l
En esta realización, una unidad de NAL de EOS en una capa particular es únicamente aplicable a esa capa. Por ejemplo, cada capa puede tener su propia unidad de NAL de Eo S, y una AU puede incluir más de una unidad de NAL de EOS. Una instantánea que sigue a una unidad de NAL de EOS de una capa particular debería ser una instantánea de IRAP, que puede ser una instantánea de IDR, una instantánea de BLA o una instantánea de CRA. Cuando una unidad de NAL de EOS existe para una capa particular, la unidad de NAL de EOS puede seguir a las unidades de NAL de capa de codificación de vídeo (VCL) con el mismo ID como o un ID de capa inferior que la capa particular y preceden a la unidad de NAL de fin de flujo de bits (EOB), cuando está presente, en la AU.
De esta manera, la realización de ejemplo 3 clarifica que la unidad de NAL de EOS en una capa particular se aplica únicamente a la capa particular y de este modo elimina la ambigüedad en el procesamiento de unidades de NAL de EOS en flujos de datos multicapa.
Método de derivación de información de unidad de NAL de EOS para flujos de datos multicapa
La Figura 6 es un diagrama de flujo que ilustra un método de codificación de información de vídeo, de acuerdo con una realización de la presente divulgación. El método se refiere a derivación de información de unidad de NAL de EOS
para flujos de datos multicapa. El proceso 600 puede realizarse 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 realizarse por otros componentes, tal como un codificador, como se ha mencionado anteriormente. El decodificador de vídeo de capa 1 30B del decodificador 33 y/o el decodificador de capa 030A del decodificador 33 puede realizar el proceso 600, dependiendo de la realización. Todas las realizaciones descritas con respecto a la Figura 6 pueden implementarse de forma separada, 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 se inicia en el bloque 601. El decodificador 33 puede incluir una memoria para almacenar información de vídeo 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, incluyendo la pluralidad de capas una capa de referencia y al menos una correspondiente capa de mejora.
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, teniendo la primera unidad de NAL de EOS el mismo ID de capa que la capa de referencia. Una instantánea 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 instantánea de IRAP seleccionada de una o más de: una instantánea de IDR, una instantánea de BLA o una instantánea de CRA. En ciertas realizaciones, una instantánea 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 NoRaslOutputFlag 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 inferior que la capa de referencia, y la primera unidad de NAL de EOS precede a cualquier unidad de NAL de fin 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, teniendo la segunda unidad de NAL de EOS el mismo ID de capa que la capa de mejora. Una instantánea 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 instantánea de IRAP seleccionada de una o más de: una instantánea de IDR, una instantánea de BLA o una instantánea de CRA. En cierta realización, una instantánea 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 NoRaslOutputFlag 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 inferior que la capa de mejora, y la segunda unidad de NAL de EOS precede a cualquier unidad de NAL de fin de flujo de bits en la AU actual.
El proceso 600 finaliza en el bloque 605. Pueden añadirse y/u omitirse bloques en el proceso 600, dependiendo de la realización, y los bloques del proceso 600 pueden realizarse en diferentes órdenes, dependiendo de la realización.
Cualquier característica y/o realización descrita con respecto a derivación de información de unidad de NAL de EOS para flujos de bits multicapa en esta divulgación puede implementarse de forma separada o en cualquier combinación de las mismas. Por ejemplo, cualquier característica y/o realización descrita en conexión con las Figuras 1-5 y otras partes de la divulgación puede implementarse en cualquier combinación con cualquier característica y/o realización descrita en conexión con la Figura 6, y viceversa.
Tratamiento de CRA como BLA para flujos de datos multicapa
Si una AU contiene instantáneas de más de una capa como en SHVC y MV-HEVC, puede ser incierto si una variable o una bandera asociada con una capa particular (por ejemplo, la capa base), tal como la variable HandleCraAsBlaFlag, debería aplicarse a toda la AU o únicamente a la capa particular con la que está asociada. Con los enfoques existentes para SHVC/MV-HEVC, HandleCraAsBlaFlag puede asociarse con cada instantánea de CRA. La variable puede introducirse como un medio externo para facilitar acceso aleatorio o empalme donde el sistema no puede cambiar una instantánea de CRA a una instantánea de BLA. En contexto multicapa, el acceso aleatorio o empalme puede hacerse en una instantánea de IRAP en la capa base (por ejemplo, una unidad de acceso de IRAP). Por lo tanto, el valor de HandleCraAsBlaFlag para una instantánea de CRA en la capa base o en cualquier otra capa debería ser el mismo. Por ejemplo, cuando sucede acceso aleatorio en una unidad de acceso de IRAP con una instantánea de CRA en la capa base, y una o más (o incluso todas) instantáneas de capa de mejora en la misma unidad de acceso son también instantáneas de CRA, puede ser deseable que tengan el mismo valor de HandleCraAsBlaFlag, de tal forma que el decodificador trataría o manejaría las mismas de la misma manera. En consecuencia, la variable HandleCraAsBlaFlag puede simplificarse a asociarse con una unidad de acceso, en lugar de asociarse con una instantánea.
Realización de ejemplo 4
Las realizaciones de ejemplo en esta divulgación se proporcionan en el contexto de versiones anteriores de SHVC y MV-HEVC (por ejemplo, WD de SHVC 5 y WD de m V-HEVC 7). Adiciones a las versiones anteriores de SHVC y MV-HEVC se indican en cursiva, y eliminaciones de las versiones anteriores de SHVC y MV-HEVC se indican tachadas.
T l 7 - r liz i n jemplo 4_________________________________ eas de CRA, la variable HandleCraAsBlaFlag eriva como se especifica a continuación: stá disponible para establecer la variable se establece igual al valor proporcionado por el
En esta realización, cuando una AU contiene una o más instantáneas de CRA, la variable HandleCraAsBlaFlag se deriva que sea la misma para todas las instantáneas de CRA en esa AU. Si medios externos pueden proporcionar el valor de HandleCraAsBlaFlag, el valor proporcionado por los medios externos se usa para establecer el valor de HandleCraAsBlaFlag. Si no es así, HandleCraAsBlaFlag se establece igual a 0.
Asociar HandleCraAsBlaFlag con cada instantánea de CRA puede conducir potencialmente a tener diferentes valores para HandleCraAsBlaFlag para las diferentes instantáneas de CRA. Por consiguiente, las técnicas pueden simplificar la inferencia del valor de HandleCraAsBlaFlag asegurándose de que el valor de HandleCraAsBlaFlag para todas las instantáneas de CRA en una AU es el mismo.
Información y señales divulgadas en este documento puede representarse usando cualquiera de una diversidad de diferentes tecnologías y técnicas. Por ejemplo, datos, instrucciones, órdenes, información, señales, bits, símbolos y chips a los que pueden hacerse referencia a lo largo de toda la anterior descripción pueden representarse mediante tensiones, corrientes, ondas electromagnéticas, campos o partículas magnéticos, campos o partículas ópticos o cualquier combinación de los mismos.
Los diversos bloques lógicos ilustrativos, circuitos y etapas de algoritmos descritos en conexión con las realizaciones divulgadas en este documento pueden implementarse como hardware electrónico, software informático o combinaciones de ambos. Para ilustrar de forma clara esta intercambiabilidad de hardware y software, diversos componentes ilustrativos, bloques, módulos, circuitos y etapas se han descrito anteriormente generalmente en términos de su funcionalidad. Si tal funcionalidad se implementa como hardware o software depende de la aplicación particular y restricciones de diseño impuestas en el sistema general. Expertos pueden implementar la funcionalidad descrita de diversas formas para cada aplicación particular, pero tales decisiones de implementación no deberían interpretarse como que provocan una desviación del alcance de la presente invención.
Las técnicas descritas en este documento pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Tales técnicas pueden implementarse en cualquiera de una diversidad de dispositivos tales como ordenadores de fin general, microteléfonos de dispositivo de comunicación inalámbrica o dispositivos de circuito integrado que tienen múltiples usos que incluyen la aplicación en microteléfonos de dispositivo de comunicación inalámbrica y otros dispositivos. Cualesquiera características descritas como módulos o componentes pueden implementarse juntas en un dispositivo lógico integrado o de forma separada como dispositivos lógicos discretos aunque interoperables. Si se implementan en software, las técnicas pueden realizarse al menos en parte por un medio de almacenamiento de datos legible por ordenador que comprende código de programa que incluye instrucciones que, cuando se ejecutan, realiza 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 una memoria o medios de almacenamiento de datos, tales como memoria de acceso aleatorio (RAM) tales como 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 eléctricamente programable borrable (EEPROM), memoria flash, medios de almacenamiento de datos magnético u óptico y similares. Las técnicas adicionalmente, o como alternativa, pueden realizarse al menos en parte por 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 pueden accederse, leerse y/o ejecutarse por un ordenador, tal como señales u ondas propagadas.
El código de programa puede ejecutarse por un procesador, que puede incluir uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de fin general, un circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA) u otra circuitería lógica integrada o discreta equivalente. Un procesador de este tipo puede configurarse para realizar cualquiera de las técnicas descritas en esta divulgación. Un procesador de fin general puede ser un microprocesador; pero como alternativa, el procesador puede ser cualquier procesador convencional, controlador, microcontrolador o máquina de estados. Un procesador también puede implementarse como una combinación de dispositivos informáticos, por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores en conjunto con un núcleo de d Sp o cualquier otra configuración de este tipo. Por consiguiente, el término "procesador", como se usa en este documento puede referirse a cualquiera de la estructura anterior, cualquier combinación de la estructura anterior o cualquier otra estructura o aparato adecuado para su implementación de las técnicas descritas en este documento. Además, en algunos aspectos, la funcionalidad descrita en este documento puede proporcionarse dentro de módulos de software o módulos de hardware especializados configurados
para codificar y decodificar, o incorporarse en un codificador-decodificador de vídeo combinado (CODEC). También, las técnicas podrían implementarse totalmente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, incluyendo un microteléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos o unidades en esta divulgación para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización por diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por una colección de unidades de hardware inter operativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.
Se han descrito diversas realizaciones de la divulgación. Estas y otras realizaciones pertenecen al alcance de las siguientes reivindicaciones.
Claims (8)
1. Un método de codificación de información de vídeo usando extensión escalable para Codificación de Vídeo de Alta Eficiencia, SHVC, o Codificación de Vídeo de Alta Eficiencia multivista, MV-HEVC, que comprende:
almacenar información de vídeo asociada con una pluralidad de capas;
determinar si sps_temporal_id_nesting_flag está presente en un conjunto de parámetros de secuencia de un flujo de bits, en donde sps_temporal_id_nesting_flag se usa para indicar si puede anidarse un identificador, ID, temporal de una instantánea de referencia para instantáneas que se refieren al conjunto de parámetros de secuencia, SPS; y en respuesta a la determinación de que sps_temporal_id_nesting_flag no está presente en el flujo de bits:
cuando el valor de sps_max_sub_layers_minus1 del SPS es mayor que cero, indicando sps_max_sub_layers_minus1 un número máximo de subcapas temporales en una capa particular de la pluralidad de capas, inferir que un valor de sps_temporal_id_nesting_flag es igual a un valor de vps_temporal_id_nesting_flag presente en el conjunto de parámetros de vídeo del flujo de bits, indicando vps_temporal_id_nesting_flag si puede anidarse un ID temporal de una instantánea de referencia para cualquier instantánea; y
de otra manera, inferir que el valor de sps_temporal_id_nesting_flag es igual a 1.
2. El método de la reivindicación 1, en donde sps_temporal_id_nesting_flag indica si una instantánea actual en una unidad de acceso (AU) actual que se refiere al SPS puede usar una primera instantánea como una instantánea de referencia en donde la primera instantánea tiene un ID temporal que es menor que o igual a un ID temporal de la instantánea actual y precede a la instantánea actual en orden de decodificación cuando una segunda instantánea tiene un ID temporal menor que el ID temporal de la primera instantánea y sigue a la primera instantánea, pero precede a la instantánea actual en orden de decodificación.
3. El método de la reivindicación 2, en donde la primera instantánea no se usa como una instantánea de referencia cuando el valor de sps_temporal_id_nesting_flag es igual a 1.
4. El método de la reivindicación 1, en donde vps_temporal_id_nesting_flag indica si una instantánea actual en una AU actual puede usar una tercera instantánea como una instantánea de referencia en donde la tercera instantánea tiene un ID temporal que es menor que o igual a un ID temporal de la instantánea actual y precede a la instantánea actual en orden de decodificación cuando una cuarta instantánea tiene un ID temporal menor que el ID temporal de la tercera instantánea y sigue a la tercera instantánea, pero precede a la instantánea actual en orden de decodificación.
5. Un medio legible por ordenador no transitorio que comprende instrucciones que, cuando se ejecutan en un procesador que comprende hardware informático, provocan que el procesador efectúe el método de cualquiera de las reivindicaciones 1 a 4.
6. Un aparato para codificar información de vídeo usando extensión escalable para Codificación de Vídeo de Alta Eficiencia, SHVC, o Codificación de Vídeo de Alta Eficiencia multivista, MV-HEVC, que comprende:
medios para almacenar información de vídeo asociada con una pluralidad de capas; y
medios para determinar si sps_temporal_id_nesting_flag está presente en un conjunto de secuencias de parámetros, SPS, de un flujo de bits, en donde se usa sps_temporal_id_nesting_flag para indicar si puede anidarse un identificador, ID, temporal de una instantánea de referencia para instantáneas que se refieren al SPS, los medios configurados para: en respuesta a la determinación de que sps_temporal_id_nesting_flag no está presente en el flujo de bits:
cuando el valor de sps_max_sub_layers_minus1 del SPS es mayor que cero, indicando sps_max_sub_layers_minus1 un número máximo de subcapas temporales en una capa particular de la pluralidad de capas, inferir que un valor de sps_temporal_id_nesting_flag es igual a un valor de vps_temporal_id_nesting_flag en el conjunto de parámetros de vídeo del biflujo, indicando vps_temporal_id_nesting_flag si puede anidarse un ID temporal de una instantánea de referencia para cualquier instantánea; y
de otra manera inferir que el valor de sps_temporal_id_nesting_flag es igual a 1.
7. El aparato de la reivindicación 6, en donde sps_temporal_id_nesting_flag indica si una instantánea actual en una unidad de acceso (AU) actual que se refiere al SPS puede usar una primera instantánea como una instantánea de referencia en donde la primera instantánea tiene un ID temporal que es menor que o igual a un ID temporal de la instantánea actual y precede a la instantánea actual en orden de decodificación cuando una segunda instantánea tiene un ID temporal menor que el ID temporal de la primera instantánea y sigue a la primera instantánea, pero precede a la instantánea actual en orden de decodificación.
8. El aparato de la reivindicación 6, en donde vps_temporal_id_nesting_flag indica si una instantánea actual en una AU actual puede usar una tercera instantánea como una instantánea de referencia en donde la tercera instantánea tiene un ID temporal que es menor que o igual a un ID temporal de la instantánea actual y precede a la instantánea actual en orden de decodificación cuando una cuarta instantánea tiene un ID temporal menor que el ID temporal de la tercera instantánea y sigue a la tercera instantánea, pero precede a la instantánea actual en orden de decodificación.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461955158P | 2014-03-18 | 2014-03-18 | |
US14/657,617 US11388441B2 (en) | 2014-03-18 | 2015-03-13 | Derivation of SPS temporal ID nesting information for multi-layer bitstreams |
PCT/US2015/020691 WO2015142712A1 (en) | 2014-03-18 | 2015-03-16 | Derivation of sps temporal id nesting information for multi-layer bitstreams |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2889976T3 true ES2889976T3 (es) | 2022-01-14 |
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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
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 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11388441B2 (es) |
EP (2) | EP3120551B1 (es) |
JP (2) | JP6542251B2 (es) |
KR (2) | KR102257870B1 (es) |
CN (2) | CN106105223B (es) |
BR (1) | BR112016021473B1 (es) |
ES (2) | ES2889976T3 (es) |
MX (2) | MX359458B (es) |
WO (2) | WO2015142712A1 (es) |
Families Citing this family (17)
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 |
WO2019162230A1 (en) * | 2018-02-20 | 2019-08-29 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Picture/video coding supporting varying resolution and/or efficiently handling region-wise packing |
US10999590B2 (en) * | 2018-12-28 | 2021-05-04 | Tencent America LLC | Method for identification of random access point and picture types |
WO2020159994A1 (en) * | 2019-01-28 | 2020-08-06 | Op Solutions, Llc | Online and offline selection of extended long term reference picture retention |
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 |
EP4104434A4 (en) * | 2020-03-17 | 2023-08-23 | ByteDance Inc. | INDICATING AN IMAGE OUTPUT FLAG IN VIDEO ENCODING |
KR20230013052A (ko) | 2020-05-22 | 2023-01-26 | 바이트댄스 아이엔씨 | 코딩된 비디오의 시퀀스 끝 표시 |
JP7513764B2 (ja) | 2020-06-12 | 2024-07-09 | バイトダンス インコーポレイテッド | マルチレイヤビデオコーディングのピクチャヘッダ制約 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100825743B1 (ko) | 2005-11-15 | 2008-04-29 | 한국전자통신연구원 | 실시간으로 비트스트림의 공간 해상도를 변환할 수 있는스케일러블 비디오 코딩 방법 및 그 방법을 이용한 코덱 |
US9516379B2 (en) | 2011-03-08 | 2016-12-06 | Qualcomm Incorporated | Buffer management in video codecs |
BR112014031146B1 (pt) | 2012-06-22 | 2023-05-16 | Sun Patent Trust | Método de codificação de imagem que usa codificação aritmética, método de decodificação de imagem usa decodificação aritmética, aparelho de codificação de imagem e aparelho de decodificação de imagem |
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 |
JP6050488B2 (ja) | 2012-07-06 | 2016-12-21 | サムスン エレクトロニクス カンパニー リミテッド | ランダムアクセスのためのマルチレイヤビデオ符号化方法及びその装置、並びにランダムアクセスのためのマルチレイヤビデオ復号化方法及びその装置 |
US9621906B2 (en) | 2012-12-10 | 2017-04-11 | Lg Electronics Inc. | Method for decoding image and apparatus using same |
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 |
CN105723712B (zh) | 2013-10-14 | 2019-06-28 | 韩国电子通信研究院 | 基于多层的图像编码/解码方法和设备 |
WO2015056941A1 (ko) | 2013-10-14 | 2015-04-23 | 한국전자통신연구원 | 다계층 기반의 영상 부호화/복호화 방법 및 장치 |
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 |
-
2015
- 2015-03-13 US US14/657,617 patent/US11388441B2/en active Active
- 2015-03-13 US US14/657,624 patent/US9794595B2/en active Active
- 2015-03-16 EP EP15717693.4A patent/EP3120551B1/en active Active
- 2015-03-16 ES ES15715536T patent/ES2889976T3/es active Active
- 2015-03-16 EP EP15715536.7A patent/EP3120563B1/en active Active
- 2015-03-16 WO PCT/US2015/020691 patent/WO2015142712A1/en active Application Filing
- 2015-03-16 KR KR1020167026506A patent/KR102257870B1/ko active IP Right Grant
- 2015-03-16 MX MX2016011959A patent/MX359458B/es active IP Right Grant
- 2015-03-16 CN CN201580013633.9A patent/CN106105223B/zh active Active
- 2015-03-16 ES ES15717693T patent/ES2887368T3/es active Active
- 2015-03-16 CN CN201580013697.9A patent/CN106105224B/zh active Active
- 2015-03-16 JP JP2016557935A patent/JP6542251B2/ja active Active
- 2015-03-16 MX MX2016011758A patent/MX360168B/es active IP Right Grant
- 2015-03-16 JP JP2016558115A patent/JP6622211B2/ja active Active
- 2015-03-16 BR BR112016021473-0A patent/BR112016021473B1/pt active IP Right Grant
- 2015-03-16 WO PCT/US2015/020734 patent/WO2015142725A1/en active Application Filing
- 2015-03-16 KR KR1020167026507A patent/KR102257861B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
BR112016021473B1 (pt) | 2024-01-23 |
BR112016021473A2 (pt) | 2017-08-15 |
BR112016021473A8 (pt) | 2021-07-06 |
ES2887368T3 (es) | 2021-12-22 |
JP2017513352A (ja) | 2017-05-25 |
WO2015142712A1 (en) | 2015-09-24 |
EP3120551B1 (en) | 2021-08-25 |
US20150271526A1 (en) | 2015-09-24 |
KR20160132874A (ko) | 2016-11-21 |
JP6542251B2 (ja) | 2019-07-10 |
CN106105223B (zh) | 2019-03-29 |
JP2017509254A (ja) | 2017-03-30 |
CN106105224A (zh) | 2016-11-09 |
CN106105223A (zh) | 2016-11-09 |
BR112016021453A2 (pt) | 2017-08-15 |
CN106105224B (zh) | 2019-04-12 |
WO2015142725A1 (en) | 2015-09-24 |
EP3120563B1 (en) | 2021-08-25 |
US20150271506A1 (en) | 2015-09-24 |
MX2016011758A (es) | 2016-12-12 |
MX360168B (es) | 2018-10-12 |
US9794595B2 (en) | 2017-10-17 |
EP3120563A1 (en) | 2017-01-25 |
MX359458B (es) | 2018-09-28 |
KR20160132875A (ko) | 2016-11-21 |
BR112016021453A8 (pt) | 2021-07-06 |
US11388441B2 (en) | 2022-07-12 |
MX2016011959A (es) | 2016-12-05 |
KR102257861B1 (ko) | 2021-05-27 |
JP6622211B2 (ja) | 2019-12-18 |
KR102257870B1 (ko) | 2021-05-27 |
EP3120551A1 (en) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2889976T3 (es) | Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa | |
ES2778463T3 (es) | Inferencia mejorada de indicador de no emisión de imagen previa en codificación de video | |
ES2895442T3 (es) | Dispositivo y método para la codificación escalable de informació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 | |
ES2854274T3 (es) | Dispositivo y procedimiento para codificación escalable de información de vídeo | |
EP3090551B1 (en) | Support of base layer of a different codec in multi-layer video coding | |
ES2905124T3 (es) | Dispositivo y método para procesar datos de video | |
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 | |
CA2930165A1 (en) | Method for coding recovery point supplemental enhancement information (sei) messages and region refresh information sei messages 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 |