ES2887369T3 - Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa - Google Patents
Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa Download PDFInfo
- Publication number
- ES2887369T3 ES2887369T3 ES14822049T ES14822049T ES2887369T3 ES 2887369 T3 ES2887369 T3 ES 2887369T3 ES 14822049 T ES14822049 T ES 14822049T ES 14822049 T ES14822049 T ES 14822049T ES 2887369 T3 ES2887369 T3 ES 2887369T3
- Authority
- ES
- Spain
- Prior art keywords
- video
- layer
- snapshot
- inter
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000010410 layer Substances 0.000 title abstract description 162
- 238000000034 method Methods 0.000 title abstract description 101
- 239000011229 interlayer Substances 0.000 title abstract description 98
- 230000004044 response Effects 0.000 abstract description 3
- 230000033001 locomotion Effects 0.000 description 87
- 238000012545 processing Methods 0.000 description 39
- 238000013139 quantization Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 15
- 239000013598 vector Substances 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 14
- 238000005192 partition Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 14
- 238000012952 Resampling Methods 0.000 description 13
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 9
- 239000000523 sample Substances 0.000 description 8
- 239000002356 single layer Substances 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013469 resistive pulse sensing Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- FMYKJLXRRQTBOR-UBFHEZILSA-N (2s)-2-acetamido-4-methyl-n-[4-methyl-1-oxo-1-[[(2s)-1-oxohexan-2-yl]amino]pentan-2-yl]pentanamide Chemical group CCCC[C@@H](C=O)NC(=O)C(CC(C)C)NC(=O)[C@H](CC(C)C)NC(C)=O FMYKJLXRRQTBOR-UBFHEZILSA-N 0.000 description 1
- 241000985610 Forpus Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- 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/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- 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/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- 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/65—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
-
- 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
-
- 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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234327—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un método para decodificar información de vídeo de un flujo de datos multicapa, siendo dicho flujo de bits un flujo de bits de Codificación de Vídeo de Alta Eficiencia, HEVC, multivista, comprendiendo la información de vídeo un conjunto de instantáneas de referencia inter capa, RPS, que incluye una pluralidad de subconjuntos inter capa, comprendiendo el método: determinar (705) si una instantánea de referencia inter capa candidata está presente en el flujo de bits; en respuesta a la determinación de que la instantánea de referencia inter capa candidata no está presente en el flujo de bits: determinar (710) un subconjunto de RPS inter capa al que pertenece la instantánea de referencia inter capa candidata, basándose la determinación del subconjunto de RPS inter capa al que pertenece la instantánea de referencia inter capa candidata en: (i) el identificador de vista de la capa actual, (ii) el identificador de vista de la capa a la que pertenece la instantánea de referencia inter capa candidata y (iii) el identificador de vista de la capa base; indicar (715) que no hay presente ninguna instantánea de referencia en el subconjunto de RPS inter capa al que pertenece la instantánea de referencia inter capa candidata; y decodificar la información de vídeo.
Description
DESCRIPCIÓN
Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa
Campo técnico
Esta divulgación se refiere al campo de la codificación y compresión de vídeo, particularmente a la codificación de vídeo multivista.
Antecedentes
Descripción de la técnica relacionada
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 el Grupo de Expertos en Imágenes en Movimiento-2 (MPEG-2), MPEG-4, Sector de Normalización de Telecomunicaciones de la Unión Telegráfica Internacional (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.
Una secuencia de vídeo codificada puede incluir un conjunto de instantáneas de referencia (RPS) que se asocia con una instantánea y contiene listas de instantáneas de referencia que identifican instantáneas que pueden usarse para inter predicción de la instantánea asociada o cualquier instantánea siguiente. Un RPS también puede incluir instantáneas usadas para predicción inter capa. Una secuencia de vídeo codificada también puede incluir una unidad de capa de acceso a la red (NAL) de fin de flujo de bits (EoB) que se incluye opcionalmente al final de una unidad de acceso. En los esquemas de codificación multicapa, las unidades de NAL incluyen un identificador de capa que identifica una capa a la que pertenece la unidad de NAL.
Tech G et al en "MV-HEVC Draft Text 6", 6. Reunión del JCT-3V; 25-10-2013 - 1-11-2013; Ginebra; (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); n.° JCT3V-F1004, 7 de noviembre de 2013 divulgan en la sección G.8.1.2 un proceso de decodificación para un conjunto de instantáneas de referencia inter capa, en donde cuando una instantánea de referencia inter capa candidata no está presente en el flujo de bits recibido por un decodificador, es decir, no se recibe una instantánea de referencia identificada en un subconjunto inter capa de RPS, una entrada de "sin instantánea de referencia" que indica que no existe ninguna instantánea de referencia se inserta en la inter capa cero de RPS.
Sumario
La invención se establece en el conjunto adjunto de las reivindicaciones.
El fundamento para la invención reivindicada puede encontrarse particularmente en el dibujo adjunto 7 en conjunto con su descripción asociada. Los otros dibujos y fragmentos de la descripción son útiles para el entendimiento de los antecedentes de la invención.
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 unidad de acceso de un flujo de datos multicapa de
acuerdo con aspectos descritos en esta divulgación.
La Figura 5 es un diagrama de bloques que ilustra un ejemplo de cómo se genera un RPS por un codificador o decodificador.
Las Figuras 6-8 son diagramas de flujo que ilustran métodos para codificar o decodificar información de vídeo de acuerdo con aspectos descritos en esta divulgación.
Descripción detallada
Ciertas realizaciones descritas en este documento se refieren a unidades de capa de acceso a la red (NAL) de fin de flujo de bits (EoB) y RPS para codificación de vídeo multicapa en el contexto de códecs de vídeo avanzados, tales como Codificación de Vídeo de Alta Eficiencia (HEVC). Más específicamente, la presente divulgación se refiere a sistemas y métodos para el rendimiento mejorado en la codificación y decodificación de unidades de NAL de EoB y RPS en las extensiones multivista y escalable de HEVC, en concreto MV-HEVC y SHVC.
En la descripción a continuación, se describen las técnicas de H.264/Codificación de Vídeo Avanzada (AVC) relacionadas con ciertas realizaciones; también se analizan la norma HEVC y técnicas relacionadas. En particular, algunos esquemas de codificación de vídeo incluyen unidades de acceso que pueden incluir unidades de NAL de EoB que indican el final de flujo de bits para la correspondiente unidad de acceso. Las unidades de NAL pueden tener un identificador de capa que identifica la capa en la que se incluye la unidad de NAL. Cuando el identificador de capa de unidades de NAL de EoB no está restringido, la unidad de NAL de EoB puede descartarse (o procesarse de forma incorrecta) del flujo de bits. Ya que la decodificación correcta del flujo de bits puede depender de la presencia de unidades de nAl de EoB, esto puede resultar en una decodificación de flujo de bits incorrecta. Algunos esquemas de codificación de vídeo también pueden mantener un conjunto de instantáneas de referencia (RPS) asociado con una instantánea de la secuencia de vídeo codificada (CVS). El RPS para una instantánea dada contiene un conjunto de instantáneas de referencia que incluye todas las instantáneas de referencia anteriores a la instantánea asociada en orden de decodificación que puede usarse para inter predicción de la instantánea asociada o cualquier instantánea siguiente a la instantánea asociada en orden de decodificación. Los esquemas de codificación convencionales no determinan en qué subconjunto inter capa de RPS en el que debería insertarse una entrada de "sin instantánea de referencia" cuando se descarta (o procesa incorrectamente) una instantánea del flujo de bits. Por consiguiente, los subconjuntos inter capa de RPS pueden no tener un contenido correcto.
Esta divulgación se refiere a la semántica para esquemas de codificación multicapa que puede evitar que se descarten (o procesen incorrectamente) unidades de NAL de EoB forman el flujo de bits debido a identificadores de capa sin restricciones. Específicamente, los identificadores de capa para unidades de NAL de EoB pueden limitarse para evitar que se descarten las unidades de NAL de EoB, habilitando de este modo la decodificación correcta del flujo de bits cuando dependen de la presencia de unidades de NAL de EoB. Esta divulgación también se refiere a la semántica para esquemas de codificación multicapa que puede introducir una entrada de "sin instantánea de referencia" en el subconjunto inter capa de RPS correcto. Por consiguiente, pueden introducirse entradas de "sin instantánea de referencia" en el subconjunto inter capa de RPS correcto basándose en un identificador de vista de la instantánea actual.
Mientras ciertas realizaciones se describen en este documento en el contexto de las normas de HEVC y/o H.264, un experto en la materia puede apreciar que los sistemas y métodos divulgados en este documento pueden ser aplicables a cualquier norma de codificación de vídeo adecuada. Por ejemplo, las realizaciones divulgadas en este documento pueden 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, Organización Internacional de Normalización/Comisión Electrotécnica Internacional (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 escalable y multivista.
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, macrobloques) 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 codificador-decodificador 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 escalable y multivista.
Además, se ha desarrollado una norma de codificación de vídeo, en concreto 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 e ISO/IEC MPEG. 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.
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, puede implementarse un aparato o puede ponerse en práctica un método 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.
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 diversas realizaciones, 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 un dispositivo de almacenamiento 31 (presente opcionalmente). 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 las Figuras 1A y 1B puede comprender el codificador de vídeo 20 ilustrado en la Figura 2A, el codificador de vídeo 23 ilustrado en la 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 la 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 las Figuras 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 de vídeo 10' de ejemplo en donde el dispositivo de origen 12 y el dispositivo de destino 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 (presente opcionalmente) en comunicación operativa con el dispositivo de origen 12 y el dispositivo de destino 14. El sistema de codificación de vídeo 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 dispositivo procesador/controlador 13. El sistema de codificación de vídeo 10' también puede incluir un seguidor 29 (presente opcionalmente), que puede realizar el seguimiento de un objeto de interés en una secuencia de vídeo. El objeto o interés al que 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 de codificación de vídeo 10' de la Figura 1B y componentes del mismo son de otra manera
similares al sistema de codificación de vídeo 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 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 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 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 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. 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, un procesador (no mostrado) puede configurarse 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 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 la 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 e L) usando una o más capas diferentes que están disponibles en la extensión escalable a HEVC (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.
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 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 MV-HEVC. 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 o 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 mantenerse 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 (o mux) 98. 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. 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, un procesador (no mostrado) puede configurarse 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.
Si una PU se codifica usando intra predicción, entonces 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 capa de mejora) usando una o más capas diferentes que están disponibles en la extensión escalable a HEVC (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 (o demux) 99. 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 dispositivo 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 decodificación, excepto las instantáneas iniciales omitidas de acceso aleatorio (RASL), pueden decodificarse correctamente sin usar ninguna instantánea que precede el 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 punto de acceso intra aleatorio (IRAP). Por ejemplo, un punto de acceso aleatorio asociado con una instantánea de IRAP de capa de mejora en una capa de mejora ("capaA") que se contiene 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 asociado con una instantánea contenida en una unidad de acceso ("auB") que está en la capaB y precede la auA en orden de decodificación (o un punto de acceso aleatorio contenido en la auA), las instantáneas en la capaA que siguen a la auA en orden de decodificación (incluyendo esas instantáneas ubicadas en la auA), son correctamente decodificables sin necesidad de decodificar ninguna instantáneas en la capaA que preceden a la auA.
Las instantáneas de IRAP pueden codificarse usando intra predicción (por ejemplo, codificarse sin hacer referencia a otras instantáneas) y/o predicción inter capa, y pueden incluir, por ejemplo, instantáneas de regeneración instantánea de decodificador (IDR), instantáneas de 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. 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 la instantánea de CRA en orden de decodificación, pueden denominarse como instantánea de RASL. Otro tipo de instantánea que puede seguir a una instantánea de IRAP en orden de decodificación y preceder 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 dos flujos de bits se juntan 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 capa base instantánea (por ejemplo, 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.
Unidades de NAL de fin de flujo de bits
La Figura 4 es un diagrama de bloques que ilustra una unidad de acceso de un flujo de datos multicapa de acuerdo con una realización. Como se muestra en la Figura 4, una unidad de acceso 400 incluye una primera unidad de NAL de Capa de Codificación de Vídeo (VCL) 460 y puede incluir una o más otras unidades de NAL opcionales. Por ejemplo, la unidad de acceso 400 puede incluir una o más de cada de una de las siguientes: una unidad de NAL de delimitador de unidad de acceso 410, una unidad de NAL de VPS 420, una unidad de NAL de SPS 430, una unidad de NAL de PPS 440, una unidad de NAL de SEI de prefijo 450, unidades de NAL de instantánea codificada adicional o no VCL 470 y una unidad de NAL de EoB 480. Cada una de las unidades de NAL opcionales listadas puede incluirse dependiendo de los aspectos de la implementación y también pueden incluirse otras estructuras de sintaxis dependiendo del esquema de codificación de vídeo empleado para codificar o decodificar la unidad de acceso.
De acuerdo con el esquema de HEVC, cuando una unidad de NAL de EoB 480 está presente en la unidad de acceso 400, la siguiente unidad de acceso será una unidad de acceso de IRAP, que puede ser una unidad de acceso de IDR, unidad de acceso de BLA o una unidad de acceso de CRA para que el flujo de bits codificado se ajuste al esquema de HEVC. Por consiguiente, cuando se incluye en una unidad de acceso, la unidad de NAL de EoB 480 indica que la siguiente unidad de acceso es una unidad de acceso de IRAP.
En esquemas de codificación de capa única convencionales (por ejemplo, HEVC versión 1), cada unidad de acceso inequívocamente corresponde a una única instantánea. Ya que cada unidad de acceso contiene una única instantánea, los términos "unidad de acceso" e "instantánea" se pudieron usar indistintamente en el contexto de esquemas de codificación de capa única, por ejemplo, con respecto a la utilización de mensajes de SEI de punto de recuperación. Sin embargo, las unidades de acceso de esquemas de codificación multicapa pueden incluir una instantánea separada para cada capa del flujo de bits. En otras palabras, en un flujo de datos multicapa, una única unidad de acceso puede contener (es decir, incluir o comprender) una pluralidad de instantáneas. En algunas implementaciones de codificación multicapa, tales como MV-HEVC y SHVC, cada unidad de NAL incluye un identificador de capa que identifica la capa a la que pertenece la unidad de NAL. Por consiguiente, la capa de una unidad de NAL de EoB se define basándose en un valor del identificador de capa de la unidad de NAL de EoB. En esquemas de codificación de capa única convencionales, el identificador de capa para todas las unidades de NAL se restringen a la misma capa, en concreto la capa cero. En otras palabras, las unidades de NAL de esquemas de codificación de capa única convencionales se identifican todos como que pertenecen a la misma capa. Sin embargo, en esquemas de codificación multicapa, no existen tales restricciones al identificador de capa incluido dentro de unidades de NAL, incluyendo el identificador de capa asociado con unidades de NAL de EoB.
Debido a la naturaleza sin restricciones del identificador de capa de unidades de NAL de EoB en esquemas de codificación multicapa, puede producirse un número de errores de decodificación no deseables cuando la unidad de NAL de EoB tiene un identificador de capa con un valor distinto de cero. Como un ejemplo, un flujo de bits codificado puede incluir una capa base (BL) y una capa de mejora (EL). Cuando el ancho de banda entre el codificador y el decodificador se restringe o cae por debajo de un cierto nivel, la capa de mejora (u otras capas que tienen un identificador de capa distinto de la capa cero) puede descartarse (o procesarse incorrectamente) del flujo de bits para conservar ancho de banda. Esto puede producirse, por ejemplo, cuando el ancho de banda entre un codificador de vídeo (por ejemplo, el codificador de vídeo 20 o el codificador de vídeo 23) y un decodificador de vídeo (por ejemplo, el decodificador de vídeo 30 o el decodificador de vídeo 33) está limitado. En esta situación, si la unidad de NAL de EoB tiene un identificador de capa con un valor de uno ("1"), es decir, la unidad de NAL de EoB se contiene en la capa de mejora (EL), la unidad de NAL de EoB se descartará del flujo de bits y no se recibirá por el decodificador.
Existen un número de funcionalidades de esquemas de codificación que dependen de la información contenida dentro de la unidad de NAL de EoB. Por consiguiente, cuando la unidad de NAL de EoB se descarta del flujo de bits, estas funciones no funcionarán como se esperan. En un ejemplo, un decodificador puede decodificar un flujo de bits que incluye una unidad de acceso de acceso aleatorio limpio (CRA) de diferentes formas basándose en si está presente o no una unidad de NAL de EoB inmediatamente antes de la unidad de acceso de CRA. Por lo tanto, si la unidad de NAL de EoB se descarta de la capa de mejora, la decodificación de la siguiente unidad de acceso de CRA no funcionará como se espera. De manera similar, otras funcionalidades de decodificación dependen de la existencia de la unidad de NAL de EoB para una decodificación apropiada y, por lo tanto, cuando la unidad de NAL de EoB tiene un valor de identificador de capa que indica una capa distinta de la capa cero, la unidad de NAL de EoB puede descartarse ya que se incluye en una capa distinta de la capa base, es posible que el decodificador no sea capa de decodificar apropiadamente el flujo de bits.
Adicionalmente, las normas de codificación multicapa no definen ninguna funcionalidad adicional para permitir que una unidad de NAL de EoB tenga un identificador de capa con un valor distinto de cero. Por consiguiente, en al menos una realización de la presente divulgación, todas las unidades de NAL de EoB se establecen para tener un identificador de capa de cero. Específicamente, de acuerdo con la presente divulgación, la codificación del flujo de bits se realiza basándose en una restricción de que las unidades de NAL de EoB tienen un identificador de capa de cero. Restringiendo el identificador de capa de todas las unidades de NAL de EoB a capa cero, las unidades de NAL no se descartarán (o procesarán incorrectamente) ya que, como se ha analizado anteriormente, únicamente se descartan las unidades de NAL que tienen un identificador de capa distinto de la capa cero.
RPS
Los esquemas de codificación de vídeo pueden mantener un RPS asociado con una instantánea de la secuencia de vídeo codificada (CVS). El RPS para una instantánea dada contiene un conjunto de instantáneas de referencia que incluye todas las instantáneas de referencia anteriores a la instantánea asociada en orden de decodificación que puede usarse para inter predicción de la instantánea asociada o cualquier instantánea siguiente a la instantánea asociada en orden de decodificación. Como un ejemplo, en el esquema de HEVC, el RPS incluye cinco listas de RPS, tres de las cuales se denominan colectivamente como los RPS a corto plazo y los otros dos restantes que se denominan colectivamente como los RPS a largo plazo. Los RPS a corto plazo contiene todas las instantáneas de referencia que pueden usarse para inter predicción de la instantánea asociada y una o más instantáneas que siguen a la instantánea asociada en orden de decodificación. Los RPS a largo plazo contiene todas las instantáneas de referencia que no se usan para inter predicción de la instantánea asociada, pero pueden usarse para inter predicación de una o más instantáneas que siguen a la instantánea asociada en orden de decodificación.
La Figura 5 es un diagrama de bloques que ilustra un ejemplo de cómo se genera un RPS por un codificador o decodificador. En la siguiente descripción, la memoria intermedia de instantánea decodificada 510 se describirá
como incluida en un decodificador (por ejemplo, el decodificador de vídeo 30 o el decodificador de vídeo 33), sin embargo lo siguiente se aplica igualmente a un codificador. Como se muestra en la Figura 5, una pluralidad de instantáneas 520 a 528 se mantienen en la memoria intermedia de instantánea decodificada 510 del decodificador. Puede generarse un RPS para una instantánea y puede incluir referencias a instantáneas contenidas en la memoria intermedia de instantánea decodificada 510. La primera lista de RPS 530 incluye las instantáneas 520, 522, 526 y 528 mientras que la segunda lista de RPS 540 incluye las instantáneas 520, 524, 526 y 528. La realización de la Figura 5 es únicamente un ejemplo y las instantáneas incluidas en un RPS pueden ser cualquier instantánea del flujo de bits que se usa para referencia de acuerdo con las condiciones del esquema de codificación usado para codificar el flujo de bits. Las listas de RPS 530 y 540 pueden ser listas de RPS convencionales que incluyen instantáneas que se usan como referencias para decodificar instantáneas dentro de la misma capa o pueden ser listas de RPS inter capa usadas para decodificar instantáneas en capas diferentes.
Los esquemas de codificación de vídeo multivista, tales como las extensiones escalables y multivista al esquema de HEVC, expanden el uso de los RPS para incluir los RPS para predicción inter capa. En algunas realizaciones, se define un RPS para cada capa del flujo de bits, es decir, cada instantánea mantiene su propio RPS. Además, pueden proporcionarse RPS adicionales que incluyen listas de instantáneas usadas para predicción inter capa de la instantánea asociada. El RPS inter capa para cada instantánea puede dividirse en subconjuntos que corresponden a las capas del flujo de bits. Por ejemplo, en un flujo de bits de 2 capas, el RPS inter capa puede dividirse en un subconjunto de capas cero y un subconjunto de capa uno que se denominarán respectivamente en lo sucesivo como inter capa cero de RPS e inter capa uno de RPS.
Como se ha descrito anteriormente, pueden descartarse instantáneas (o procesarse incorrectamente) del flujo de bits para diversas razones tales como requisitos de ancho de banda o las instantáneas pueden perderse en la transmisión entre el codificador y decodificador. Cuando una instantánea de referencia inter capa candidata no está presente en el flujo de bits recibido por un decodificador, es decir, no se recibe una instantánea de referencia identificada en un subconjunto inter capa de RPS, una entrada de "sin instantánea de referencia" que indica que no existe ninguna instantánea de referencia debería insertarse en el correspondiente subconjunto inter capa de RPS. El subconjunto apropiado se determina basándose en el identificador (ID) de vista de la capa actual, el ID de vista de la capa a la que pertenece la instantánea de referencia inter capa candidata y el ID de vista de la capa base. En este punto, el ID de vista se refiere es análogo al ID de capa y puede referirse a la vista de la instantánea dentro de una norma de codificación multivista.
En las extensiones escalable y multivista actuales, la entrada de "sin instantánea de referencia" se introduce únicamente en la inter capa cero de RPS, incluso si la instantánea de referencia inter capa candidata, si se hubiera recibido por el decodificador, se hubiera añadido a la inter capa uno de RPS. Este comportamiento no es deseable, ya que la entrada de "sin instantánea de referencia" debería indicarse en la ubicación en la que debería haberse introducido la instantánea de referencia inter capa faltante. Sin la corrección, este comportamiento podría resultar en un posicionamiento relativo no deseado o incorrecto de instantáneas de referencia inter capa en los dos subconjuntos inter capa de RPS cuando falta una instantánea de referencia inter capa. Además, este comportamiento también podría resultar en que los tamaños de las listas contenidas en los subconjuntos inter capa de RPS sean incorrectos. Esto podría conducir potencialmente a referencias incorrectas de las instantáneas de referencia inter capa cuando se decodifica el flujo de bits. Por consiguiente, otro objetivo de esta divulgación es corregir este comportamiento.
En una realización, el ID de vista de la instantánea actual se usa para determinar en qué subconjunto inter capa de RPS se inserta una entrada de "sin instantánea de referencia". Por ejemplo, cuando una instantánea de referencia inter capa candidata no está presente para una instantánea, una entrada de "sin instantánea de referencia" se incluye en el correspondiente subconjunto inter capa de RPS basándose en el ID de vista de la instantánea de referencia inter capa faltante. El ID de vista de otra capa se usa también en la determinación de qué subconjunto inter capa de RPS corresponde a la instantánea de referencia inter capa faltante candidata. Por ejemplo, el ID de vista de la instantánea de referencia inter capa candidata y el ID de vista de la capa base pueden usarse en la determinación. Por lo tanto, incluyendo la entrada de "sin instantánea de referencia" en el correspondiente subconjunto inter capa de RPS, el posicionamiento relativo de instantáneas de referencia inter capa en los subconjuntos inter capa de RPS puede corregirse y también pueden corregirse los respectivos tamaños de los subconjuntos inter capa de RPS.
Otro aspecto de la presente divulgación puede abordar una inferencia incorrecta de una pérdida en la transmisión del flujo de bits. Las extensiones escalables y multivista proponen la inclusión de una bandera descargable que indica si la instantánea asociada con la bandera descargable no se usa ni para predicción inter capa ni para inter predicción por cualquier otra instantánea. En algunas realizaciones, esta bandera se incluye en el encabezamiento de corte del flujo de bits y tiene el mismo valor para todos segmentos de corte dentro de la instantánea asociada. En los esquemas de codificación multicapa convencionales, cuando una instantánea tiene una bandera descartable asociada que indica que la instantánea es descartable, no existe ningún requisito de que la instantánea descartable no esté presente en cualquier RPS temporal o inter capa. Además, los esquemas convencionales tampoco deniegan que una instantánea descartable esté presente en listas de instantáneas de referencia, siempre que ninguna PU se refiera a una PU en la instantánea descartable. Por lo tanto, una instantánea descartable puede incluirse en un RPS
o lista de instantáneas de referencia siempre que no se use para referencia.
Si se incluye una instantánea descartable en un RPS o lista de instantáneas de referencia, un decodificador puede inferir incorrectamente una pérdida y/o puede introducir ineficiencias de ancho de banda y de decodificación debido a la inclusión. Por ejemplo, cuando se está con restricciones de ancho de banda, una instantánea descartable puede eliminarse del flujo de bits para ahorrar ancho de banda ya que no se usará para referencia cuando se decodifican otras instantáneas en el flujo de bits. Cuando la instantánea descartada se incluye en un RPS, el decodificador reconocerá que la instantánea descartada puede usarse para referencia por otra instantánea que no se ha recibido en el decodificador. Ya que el decodificador reconoce que la instantánea descartada puede usarse para referencia, puede solicitar una retransmisión de la instantánea descartada del codificador. Este comportamiento reducirá los ahorros de ancho de banda que se obtuvieron inicialmente en el descarte de la instantánea descartable y conducirá a ineficiencias en el decodificador.
Por consiguiente, en al menos una realización, la instantánea que se asocian con una bandera descargable que indican que la instantánea es descartable, es decir, que tiene un valor de uno, se deniegan de incluirse en o bien los RPS inter capa o bien los RPS temporales.
En otra realización, una bandera de usada-para-referencia puede asociarse inequívocamente con una instantánea. La bandera de usada-para-referencia indica si la instantánea asociada se incluye en al menos un RPS. En esta realización, se permiten que se incluyan en un RPS únicamente instantáneas que tienen una bandera de usadapara-referencia con un valor de uno.
Diagramas de flujo de ejemplo para codificar información de vídeo
Con referencia a la Figura 6, se describirá un procedimiento de ejemplo para codificar información de vídeo basándose en una unidad de NAL de EoB que tiene un valor de identificación de capa con un valor de cero. La Figura 6 es un diagrama de flujo que ilustra un método 600 para codificar información de vídeo, de acuerdo con una realización. Las etapas ilustradas en la Figura 6 pueden realizarse por un codificador de vídeo (por ejemplo, el codificador de vídeo 20 o el codificador de vídeo 23), un decodificador de vídeo (por ejemplo, el decodificador de vídeo 30 o el decodificador de vídeo 33) o cualquier otro componente. Por conveniencia, el método 600 se describe como realizado por un codificador de vídeo (también denominado simplemente como codificador), que puede ser el codificador de vídeo 20 o 23, el decodificador de vídeo 30 o 33 u otro componente.
El método 600 comienza en el bloque 601. En el bloque 605, el codificador determina si una unidad de acceso incluida en información de vídeo incluye una unidad de NAL de EoB. En el bloque 610, el codificador establece un valor de identificación de capa para la unidad de NAL de EoB a cero de acuerdo con una restricción. La información de vídeo a codificar incluye al menos una unidad de NAL de EoB que incluye un valor de identificación de capa que identifica la capa a la que pertenece la unidad de NAL de EoB. En el bloque 615, el codificador codifica la información de vídeo basándose al menos en parte en un valor de cero para la valor de identificación de capa. El método finaliza en 620.
Con referencia a la Figura 7, se describirá un procedimiento de ejemplo para indicar que no existe ninguna instantánea de referencia en un subconjunto inter capa de RPS para decodificación de vídeo.
La Figura 7 es un diagrama de flujo que ilustra un método 700 para decodificar información de vídeo, de acuerdo con una realización. Las etapas ilustradas en la Figura 7 pueden realizarse por un codificador de vídeo (por ejemplo, el codificador de vídeo 20 o el codificador de vídeo 23), un decodificador de vídeo (por ejemplo, el decodificador de vídeo 30 o el decodificador de vídeo 33) o cualquier otro componente. Por conveniencia, el método 700 se describe como realizado por un decodificador de vídeo (también denominado simplemente como decodificador), que puede ser el codificador de vídeo 20 o 23 o el decodificador de vídeo 30 o 33 u otro componente.
El método 700 comienza en el bloque 701. En el bloque 705, el decodificador determina si una instantánea de referencia inter capa candidata está presente en la información de vídeo. Pueden descartarse instantáneas de la información de vídeo codificada en respuesta a límites de ancho de banda o pueden perderse inesperadamente durante la transmisión desde un codificador. Por lo tanto, el decodificador puede determinar si la instantánea de referencia inter capa candidata se ha descartado de la información de vídeo determinando si la instantánea de referencia inter capa candidata está presente.
El método continúa en el bloque 710, en el que el decodificador determina un subconjunto inter capa de RPS al que pertenece la instantánea de referencia inter capa candidata en respuesta a la determinación de que la instantánea de referencia inter capa candidata no está presente. Por ejemplo, esta determinación puede incluir determinar qué subconjunto habría sido incluido en la instantánea de referencia inter capa candidata si estuviera presente en la información de vídeo. Esto incluye determinar el ID de vista de la capa actual, el ID de vista de la instantánea de referencia inter capa candidata y/o el ID de vista de la capa base.
Continuando en el bloque 715, el decodificador indica que no hay presente ninguna instantánea de referencia en el
subconjunto inter capa de RPS al que pertenece la instantánea de referencia inter capa candidata. El método finaliza en 720.
Con referencia a la Figura 8, se describirá un procedimiento de ejemplo para determinar si incluir una instantánea en un RPS para codificación de vídeo. La Figura 8 es un diagrama de flujo que ilustra un método 800 para codificar información de vídeo, de acuerdo con una realización. Las etapas ilustradas en la Figura 8 pueden realizarse por un codificador (por ejemplo, el codificador de vídeo 20 del codificador de vídeo 23), un decodificador de vídeo (por ejemplo, el decodificador de vídeo 30 o el decodificador de vídeo 33) o cualquier otro componente. Por conveniencia, el método 800 se describe como realizado por un codificador de vídeo, que puede ser el codificador de vídeo 20 o 23, el decodificador de vídeo 30 o 33 u otro componente.
El método 800 comienza en el bloque 801. En el bloque 805, el codificador determina si una instantánea actual de información de vídeo es una instantánea descartable. Cada instantánea puede incluir, por ejemplo, una bandera descargable que indica si la instantánea es una instantánea descartable. En algunas realizaciones, una instantánea puede identificarse como una instantánea descartable únicamente cuando no se incluye en ningún RPS.
El método continúa en el bloque 810, en el que el codificador evita incluir la instantánea actual en un RPS basándose en la determinación de que la instantánea actual es una instantánea descartable. El método finaliza en 815.
En los métodos 600 a 800, uno o más de los bloques mostrados en las Figuras 6 a 8 pueden eliminarse (por ejemplo, no realizarse) y/o puede conmutarse el orden en el que se realizan los métodos. En algunas realizaciones, pueden añadirse bloques adicionales a los métodos 600 a 800. Las realizaciones de la presente divulgación no se limitan a o por los ejemplos mostrados en las Figuras 6 a 8.
Implementación o implementaciones de ejemplo
Algunas realizaciones se resumen y describen a continuación. Cuando ciertas porciones de la especificación HEVC se reproducen para ilustrar las adiciones y supresiones que pueden incorporarse para implementar uno o más de los métodos descritos en este documento, tales modificaciones se muestran en cursiva y respectivamente.
En algunas implementaciones de la presente divulgación, un RPS inter capa puede modificarse como se describe a continuación.
Cambios relacionados con la unidad de NAL de EoB
En algunas implementaciones de la presente divulgación, las unidades de NAL de EoB pueden modificarse como se describe a continuación.
_____________________Tabla 1 - modificaciones de semántica de unidad de NAL de EoB_____________________ 7.4.2.4.4. Orden de unidades de NAL e instantáneas codificadas y su asociación a unidades de acceso
Esta subcláusula especifica el orden de unidades de NAL e instantáneas codificadas y su asociación a unidad de acceso para los CVS que se ajustan a uno o más de los perfiles especificados en el Anexo A que se decodifican usando el proceso de decodificación especificado en las cláusulas 2 a 10.
Una unidad de acceso consiste en una instantánea codificada y cero o más unidades de NAL no de VCL. La asociación de unidades de NAL de VCL a instantáneas codificadas se describe en la subcláusula 7.4.2.4.5.
La primera unidad de acceso en el flujo de bits comienza con la primera unidad de NAL del flujo de bits.
La primera de cualquiera de las siguientes unidades de NAL después de la última unidad de NAL de VCL de una instantánea codificada especifica el inicio de una nueva unidad de acceso:
- unidad de NAL de delimitador de unidad de acceso (cuando está presente),
- unidad de NAL de VPS (cuando está presente),
- unidad de NAL de SPS (cuando está presente),
- unidad de NAL de PPS (cuando está presente),
- unidad de NAL de SEI de prefijo (cuando está presente),
- unidades de NAL con nal_unit_type en el intervalo de RSV_NVCL41..RSV_NVCL44 (cuando están presente), - unidades de NAL con nal_unit_type en el intervalo de UNSPEC48..UNSPEC55 (cuando están presente),
- primera unidad de NAL de VCL de una instantánea codificada (siempre presente).
El orden de las instantáneas codificadas y unidades de NAL no de v Cl dentro de una unidad de acceso obedecerán las siguientes restricciones:
- Cuando una unidad de NAL de delimitador de unidad de acceso está presente, será la primera unidad de NAL. Habrá como máximo una unidad de NAL de delimitador de unidad de acceso en cualquier unidad de acceso.
- Cuando cualquier unidad de NAL de SEI de prefijo está presente, no seguirán a la última unidad de NAL de VCL de la unidad de acceso.
- Unidades de NAL que tienen nal_unit_type igual a FD_NUT o SUFFIX_SEI_NUT, o en el intervalo de RSV_NVCL45..RSV_NVCL47 o UNSPEC56..UNSPEC63 no precederá a la primera unidad de NAL de VCL de la instantánea codificada.
- Cuando una unidad de NAL de fin de secuencia está presente, será la última unidad de NAL en la unidad de acceso distinta de una unidad de NAL de fin de flujo de bits (cuando está presente).
- Cuando una unidad de NAL de fin de flujo de bits está presente, será la última unidad de NAL en la unidad de acceso. El valor de nuh jaye rjd de la unidad de NAL de fin de flujo de bits será 0.
NOTA - las unidades de NAL de VPS, unidades de NAL de SPS, unidades de NAL de PPS, unidades de NAL de SEI de prefijo o unidades de NAL con nal_unit_type en el intervalo de RSV_NVCL41..RSV_NVCL44 o UNSPEC48..UNSPEC55, pueden estar presentes en una unidad de acceso, pero no pueden seguir a la última unidad de NAL de VCL de la instantánea codificada dentro de la unidad de acceso, ya que esta condición especificaría el inicio de una nueva unidad de acceso.
Cambios al proceso de decodificación de RPS inter capa
En algunas implementaciones de la presente divulgación, un RPS inter capa puede modificarse como se describe a continuación.
Tabla 2 - modificaciones de semántica de RPS inter capa
Cambios al proceso de decodificación de RPS
En algunas implementaciones (por ejemplo, SHVC, MV-HEVC, etc.), el RPS puede modificarse como se describe a continuación.
____________________________ Tabla 3 - modificaciones de semántica de RPS____________________________ 8.3.2 Proceso de decodificación para conjunto de instantáneas de referencia
Es un requisito de conformidad con flujo de bits que el RPS se restringe como se indica a continuación:
- No habrá ninguna entrada en RefPicSetStCurrBefore, RefPicSetStCurrAfter o RefPicSetLtCurr para la que uno o más de los siguientes es cierto:
- La entrada es igual a "sin instantánea de referencia".
- La entrada es una instantánea de no referencia de subcapa y tiene TemporalId igual al de la instantánea actual. - La entrada es una instantánea que tiene TemporalId mayor que el de la instantánea actual.
- No habrá ninguna entrada en RefPicSetLtCurr o RefPicSetLtFoll para la que la diferencia entre el valor de recuento de orden de instantáneas de la instantánea actual y el valor de recuento de orden de instantáneas de la entrada es mayor que o igual a 224
- Cuando la instantánea actual es una instantánea de TSA, no habrá ninguna instantánea incluida en el RPS con TemporalId mayor que o igual al Temporalld de la instantánea actual.
- Cuando la instantánea actual es una instantánea de STSA, no habrá ninguna instantánea incluida en RefPicSetStCurrBefore, RefPicSetStCurrAfter o RefPicSetLtCurr que tiene TemporalId igual al de la instantánea actual.
- Cuando la instantánea actual es una instantánea que sigue, en orden de decodificación, a una instantánea de STSA que tiene TemporalId igual al de la instantánea actual, no habrá ninguna instantánea que tiene TemporalId igual al de la instantánea actual incluida en RefPicSetStCurrBefore, RefPicSetStCurrAfter o RefPicSetLtCurr que precede a la instantánea de STSA en orden de decodificación.
- Cuando la instantánea actual es una instantánea de CRA, no habrá ninguna instantánea incluida en el RPS que precede a, en orden de decodificación, cualquier instantánea de IRAP precedente en orden de decodificación (cuando está presente).
- Cuando la instantánea actual es una instantánea posterior, no habrá ninguna instantánea en RefPicSetStCurrBefore, RefPicSetStCurrAfter o RefPicSetLtCurr que se generó por el proceso de decodificación para generar instantáneas de referencia no disponibles como se especifica en la cláusula 8.3.3.
continuación
Otras consideraciones
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, 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 divulgació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 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 DSP 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 software o hardware especializado configurado para codificar y decodificar, o incorporado 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). En esta divulgación se describen diversos componentes o unidades para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente la 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 invención.
Claims (2)
1. Un método para decodificar información de vídeo de un flujo de datos multicapa, siendo dicho flujo de bits un flujo de bits de Codificación de Vídeo de Alta Eficiencia, HEVC, multivista, comprendiendo la información de vídeo un conjunto de instantáneas de referencia inter capa, RPS, que incluye una pluralidad de subconjuntos inter capa, comprendiendo el método:
determinar (705) si una instantánea de referencia inter capa candidata está presente en el flujo de bits;
en respuesta a la determinación de que la instantánea de referencia inter capa candidata no está presente en el flujo de bits:
determinar (710) un subconjunto de RPS inter capa al que pertenece la instantánea de referencia inter capa candidata, basándose la determinación del subconjunto de RPS inter capa al que pertenece la instantánea de referencia inter capa candidata en: (i) el identificador de vista de la capa actual, (ii) el identificador de vista de la capa a la que pertenece la instantánea de referencia inter capa candidata y (iii) el identificador de vista de la capa base; indicar (715) que no hay presente ninguna instantánea de referencia en el subconjunto de RPS inter capa al que pertenece la instantánea de referencia inter capa candidata; y
decodificar la información de vídeo.
2. Un dispositivo para decodificar información de vídeo de un flujo de datos multicapa, siendo dicho flujo de bits un flujo de bits de Codificación de Vídeo de Alta Eficiencia, HEVC, multivista, comprendiendo la información de vídeo un conjunto de instantáneas de referencia inter capa, RPS, que incluye una pluralidad de subconjuntos inter capa, comprendiendo el dispositivo:
una memoria configurada para almacenar la información de vídeo; y
un procesador en comunicación con la memoria y configurado para:
determinar si una instantánea de referencia inter capa candidata está presente en el flujo de bits;
en respuesta a la determinación de que la instantánea de referencia inter capa candidata no está presente en el flujo de bits:
determinar un subconjunto de RPS inter capa al que pertenece la instantánea de referencia inter capa candidata, basándose la determinación del subconjunto de r Ps inter capa al que pertenece la instantánea de referencia inter capa candidata en: (i) el identificador de vista de la capa actual, (ii) el identificador de vista de la capa a la que pertenece la instantánea de referencia inter capa candidata y (iii) el identificador de vista de la capa base; indicar que no hay presente ninguna instantánea de referencia en el subconjunto de RPS inter capa al que pertenecen la instantánea de referencia inter capa candidata; y
decodificar la información de vídeo.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201461923607P | 2014-01-03 | 2014-01-03 | |
| US14/584,994 US9654794B2 (en) | 2014-01-03 | 2014-12-29 | Methods for coding an inter-layer reference picture set (RPS) and coding end of bitstream (EOB) network access layer (NAL) units in multi-layer coding |
| PCT/US2014/072717 WO2015103242A1 (en) | 2014-01-03 | 2014-12-30 | Methods for coding an inter-layer reference picture set (rps) and coding end of bitstream (eob) network access layer (nal) units in multi-layer coding |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2887369T3 true ES2887369T3 (es) | 2021-12-22 |
Family
ID=52278863
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES14822049T Active ES2887369T3 (es) | 2014-01-03 | 2014-12-30 | Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa |
Country Status (9)
| Country | Link |
|---|---|
| US (1) | US9654794B2 (es) |
| EP (1) | EP3090544B1 (es) |
| JP (1) | JP6312838B2 (es) |
| KR (1) | KR101864053B1 (es) |
| CN (1) | CN105830446B (es) |
| BR (1) | BR112016015552B1 (es) |
| CA (1) | CA2930336C (es) |
| ES (1) | ES2887369T3 (es) |
| WO (1) | WO2015103242A1 (es) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9998764B2 (en) * | 2012-07-09 | 2018-06-12 | Vid Scale, Inc. | Codec architecture for multiple layer video coding |
| EP3354029B1 (en) * | 2015-09-23 | 2025-01-15 | Nokia Technologies Oy | A method, an apparatus and a computer program product for coding a 360-degree panoramic video |
| CN115118970B (zh) | 2016-05-13 | 2025-09-23 | 交互数字Vc控股公司 | 用于视频编码的通用式多假设预测的系统及方法 |
| EP3744102B1 (en) | 2018-01-24 | 2026-03-04 | InterDigital VC Holdings, Inc. | Generalized bi-prediction for video coding with reduced coding complexity |
| JP7658922B2 (ja) * | 2019-07-03 | 2025-04-08 | 華為技術有限公司 | 参照ピクチャリスト内の参照ピクチャの種類 |
| US12184836B2 (en) * | 2019-12-23 | 2024-12-31 | Lg Electronics Inc. | Image or video coding based on NAL unit-associated information |
| WO2021145687A1 (ko) * | 2020-01-14 | 2021-07-22 | 엘지전자 주식회사 | 서브 픽처 및 픽처 헤더에 관한 정보를 시그널링하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법 |
| US11743503B2 (en) | 2020-05-14 | 2023-08-29 | Qualcomm Incorporated | Reference picture list constraints and signaling in video coding |
| KR20230023721A (ko) * | 2020-06-06 | 2023-02-17 | 엘지전자 주식회사 | 레이어 정보 시그널링 기반 영상 코딩 장치 및 방법 |
| EP4443874A1 (en) * | 2023-04-03 | 2024-10-09 | Axis AB | Encoding of video stream during changing camera field-of-view |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20060063613A (ko) * | 2004-12-06 | 2006-06-12 | 엘지전자 주식회사 | 영상 신호의 스케일러블 인코딩 및 디코딩 방법 |
| US7991236B2 (en) | 2006-10-16 | 2011-08-02 | Nokia Corporation | Discardable lower layer adaptations in scalable video coding |
| RU2014105292A (ru) | 2011-07-13 | 2015-08-20 | Телефонактиеболагет Л М Эрикссон (Пабл) | Кодер, декодер и способы их работы для управления опорными изображениями |
| JP5830993B2 (ja) * | 2011-07-14 | 2015-12-09 | ソニー株式会社 | 画像処理装置及び画像処理方法 |
| TR201900494T4 (tr) * | 2012-02-29 | 2019-02-21 | Lg Electronics Inc | Ara katman tahmin yöntemi ve bunun kullanıldığı cihaz. |
| US9762903B2 (en) * | 2012-06-01 | 2017-09-12 | Qualcomm Incorporated | External pictures in video coding |
| JP5820551B1 (ja) * | 2012-09-28 | 2015-11-24 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 映像シーケンスのピクチャの復号化及び符号化 |
| US20140161151A1 (en) * | 2012-12-12 | 2014-06-12 | John Proctor | Line & pipe flexible temperature sensor assembly |
| US10057588B2 (en) * | 2013-07-15 | 2018-08-21 | Kt Corporation | Scalable video signal encoding/decoding method and device |
| CN103402087A (zh) * | 2013-07-23 | 2013-11-20 | 北京大学 | 一种基于可分级位流的视频编解码方法 |
| MY178305A (en) * | 2013-10-11 | 2020-10-07 | Vid Scale Inc | High level syntax for hevc extensions |
| US20150195564A1 (en) | 2014-01-03 | 2015-07-09 | Qualcomm Incorporated | Method for coding a reference picture set (rps) in multi-layer coding |
-
2014
- 2014-12-29 US US14/584,994 patent/US9654794B2/en active Active
- 2014-12-30 EP EP14822049.4A patent/EP3090544B1/en active Active
- 2014-12-30 BR BR112016015552-1A patent/BR112016015552B1/pt active IP Right Grant
- 2014-12-30 ES ES14822049T patent/ES2887369T3/es active Active
- 2014-12-30 CA CA2930336A patent/CA2930336C/en active Active
- 2014-12-30 CN CN201480068502.6A patent/CN105830446B/zh active Active
- 2014-12-30 JP JP2016544475A patent/JP6312838B2/ja active Active
- 2014-12-30 WO PCT/US2014/072717 patent/WO2015103242A1/en not_active Ceased
- 2014-12-30 KR KR1020167020496A patent/KR101864053B1/ko active Active
Also Published As
| Publication number | Publication date |
|---|---|
| WO2015103242A1 (en) | 2015-07-09 |
| US20150195563A1 (en) | 2015-07-09 |
| KR101864053B1 (ko) | 2018-06-01 |
| CA2930336C (en) | 2019-02-26 |
| CA2930336A1 (en) | 2015-07-09 |
| JP2017507545A (ja) | 2017-03-16 |
| JP6312838B2 (ja) | 2018-04-18 |
| BR112016015552B1 (pt) | 2023-11-14 |
| CN105830446A (zh) | 2016-08-03 |
| CN105830446B (zh) | 2019-03-29 |
| KR20160105447A (ko) | 2016-09-06 |
| BR112016015552A2 (es) | 2017-08-08 |
| US9654794B2 (en) | 2017-05-16 |
| EP3090544A1 (en) | 2016-11-09 |
| EP3090544B1 (en) | 2021-08-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2895442T3 (es) | Dispositivo y método para la codificación escalable de información de video | |
| ES2889976T3 (es) | Derivación de información de anidación de ID temporal de SPS para flujos de datos multicapa | |
| ES2887369T3 (es) | Método y dispositivo para decodificar un conjunto de instantáneas de referencia inter capa (RPS) en decodificación multicapa | |
| EP3132604B1 (en) | Conformance window information in multi-layer coding | |
| ES2854274T3 (es) | Dispositivo y procedimiento para codificación escalable de información de vídeo | |
| ES2707892T3 (es) | Operaciones de almacenamiento en memoria intermedia de vídeo para acceso aleatorio en la codificación de vídeo | |
| CN105850138B (zh) | 在多层译码中译码恢复点补充增强信息(sei)消息和区刷新信息sei消息的方法 | |
| EP3158760B1 (en) | Full picture order count reset for multi-layer codecs | |
| EP3120560B1 (en) | Device and method for scalable coding of video information | |
| CA2930446C (en) | Method for coding a reference picture set (rps) in multi-layer coding |


