ES2947509T3 - Manejo de herramienta de codificación de flujo óptico bidireccional (BIO) para remuestreo de imagen de referencia en codificación de video - Google Patents
Manejo de herramienta de codificación de flujo óptico bidireccional (BIO) para remuestreo de imagen de referencia en codificación de video Download PDFInfo
- Publication number
- ES2947509T3 ES2947509T3 ES20805381T ES20805381T ES2947509T3 ES 2947509 T3 ES2947509 T3 ES 2947509T3 ES 20805381 T ES20805381 T ES 20805381T ES 20805381 T ES20805381 T ES 20805381T ES 2947509 T3 ES2947509 T3 ES 2947509T3
- Authority
- ES
- Spain
- Prior art keywords
- video
- image
- bdof
- current
- resolution
- 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
- 230000002457 bidirectional effect Effects 0.000 title claims abstract description 43
- 230000003287 optical effect Effects 0.000 title claims abstract description 31
- 238000012952 Resampling Methods 0.000 title claims description 26
- 238000000034 method Methods 0.000 claims abstract description 132
- 238000003860 storage Methods 0.000 claims description 19
- 230000003213 activating effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims 1
- 230000033001 locomotion Effects 0.000 description 113
- 239000013598 vector Substances 0.000 description 56
- 108091000069 Cystinyl Aminopeptidase Proteins 0.000 description 40
- 102100020872 Leucyl-cystinyl aminopeptidase Human genes 0.000 description 40
- 230000009466 transformation Effects 0.000 description 32
- 230000008569 process Effects 0.000 description 31
- 239000010410 layer Substances 0.000 description 22
- 230000002123 temporal effect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 238000013139 quantization Methods 0.000 description 12
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000003491 array Methods 0.000 description 8
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 241001482237 Pica Species 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000009795 derivation Methods 0.000 description 5
- 239000002356 single layer Substances 0.000 description 5
- 238000000844 transformation Methods 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 239000011229 interlayer Substances 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000007670 refining Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000006837 decompression Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 229940048662 kwai Drugs 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer 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/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/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/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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Optical Communication System (AREA)
Abstract
Un método de decodificación implementado por un decodificador de video que incluye determinar, mediante el decodificador de video, si la resolución de una imagen actual que se está decodificando es la misma que la resolución de las imágenes de referencia identificadas por una lista de imágenes de referencia asociada con la imagen actual; habilitar, mediante el decodificador de vídeo, el flujo óptico bidireccional (BDOF) para un bloque actual de la imagen actual cuando se determina que la resolución de la imagen actual es la misma que la resolución de cada una de las imágenes de referencia; desactivar, mediante el decodificador de vídeo, la BDOF para el bloque actual de la imagen actual cuando se determina que la resolución de la imagen actual es diferente de la resolución de cualquiera de las imágenes de referencia; y refinar, por el decodificador de video, (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Manejo de herramienta de codificación de flujo óptico bidireccional (BIO) para remuestreo de imagen de referencia en codificación de video
Referencias cruzadas a las solicitudes relacionadas
Esta solicitud de patente reivindica el beneficio de la solicitud de patente provisional de los Estados Unidos núm.
62/848,409 presentada el 15 de mayo de 2019, por Jianle Chen y otros y titulada "Handling of Bi-Directional Optical Flow (BIO) Coding Tool for Reference Picture Resampling in Video Coding," la cual se incorpora en la presente descripción como referencia.
Campo técnico
En general, esta divulgación describe técnicas para soportar flujo óptico bidireccional (BDOF) en codificación de vídeo. Más específicamente, esta divulgación permite el BDOF para remuestreo de imágenes de referencia, pero permite que BDOF sea desactivado para un bloque o muestras cuando la resolución espacial de las imágenes actuales y de referencia difiere.
Antecedentes
La cantidad de datos de vídeo necesarios para representar incluso un vídeo relativamente corto puede ser sustancial, lo cual puede tener como resultado dificultades cuando los datos van a transmitirse o de otra manera comunicarse a través de una red de comunicaciones con capacidad limitada de ancho de banda. De esta manera, los datos de vídeo generalmente se comprimen antes de ser comunicados a través de redes de telecomunicaciones modernas. El tamaño de un vídeo también podría ser un problema cuando el vídeo se almacena en un dispositivo de almacenamiento debido a que los recursos de memoria pueden ser limitados. Los dispositivos de compresión de vídeo con frecuencia utilizan software y/o hardware en la fuente para codificar los datos de vídeo antes de la transmisión o almacenamiento, disminuyendo de esta manera la cantidad de datos necesarios para representar imágenes de vídeo digitales. Los datos comprimidos entonces se reciben en el destino por un dispositivo de descompresión de vídeo que decodifica los datos de vídeo. Con recursos de red limitados y demandas cada vez mayores de calidad de vídeo superior, sería deseable tener técnicas de compresión y descompresión mejoradas que mejoren la relación de compresión con poco a ningún sacrificio en la calidad de la imagen. El documento "Algorithm description of Joint Exploration Test Model 5 (JEM5)", 117. MPEG MEETING; 20170116 - 20170120; GENEVA; (Grupo de Expertos de Imágenes en Movimiento o ISO/IEC JTC1/SC29/WG11), no. n16698 13 de febrero de 2017 (2017-02-13), XP030023366 divulga la aplicación del flujo óptico bidireccional.
El documento SULLIVAN (MICROSOFT) G J Y OTROS: "Meeting Report of the 13th JVET Meeting (Marrakech, 9 18 de enero de 2019)", 125. MPEG MEETING; 20190114 - 20190118; MARRAKECH; (Grupo de Expertos de Imágenes en Movimiento o ISO/IEC JTC1/SC29/WG11), n° m46626 18 de marzo de 2019 (2019-03-18), XP030215558 divulga las diversas contribuciones relacionadas con la aplicación de BDOF.
El documento XIU (KWAI) X Y OTROS: "CE9: Summary report on decoder side motion vector derivation", 125. MPEG MEETING; 20190114 -20190118; MARRAKECH; (Grupo de Expertos de Imágenes en Movimiento o ISO/IEC JTC1/SC29/WG11), no. m46021 10 de enero de 2019 (2019-01-10), XP030214483 divulga la aplicación de BDOF. Resumen
Las modalidades de la presente invención se definen en las reivindicaciones independientes. Las características adicionales de las modalidades de la invención se presentan en las reivindicaciones dependientes. En lo sucesivo, las partes de la descripción y los dibujos que se refieren a modalidades anteriores que no comprenden necesariamente todas las características para implementar las modalidades de la invención reivindicada no se representan como modalidades de la invención, sino como ejemplos útiles para comprender las modalidades de la invención. Un primer aspecto se refiere a un método para decodificar un flujo de bits de vídeo codificado implementado por un decodificador de vídeo. El método incluye determinar, a través del decodificador de vídeo, si una resolución de una imagen actual que está siendo decodificada es la misma que la resolución de imágenes de referencia identificada por una lista de imágenes de referencia asociada con la imagen actual; activar, a través del decodificador de vídeo, el flujo óptico bidireccional (BDOF) para un bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es la misma que la resolución de cada una de las imágenes de referencia; desactivar, a través del decodificador de vídeo, el BDOF para el bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es diferente de la resolución de cualquiera de las imágenes de referencia; y refinar, a través del decodificador de vídeo, vectores de movimiento correspondientes al bloque actual mediante el uso del BDOF cuando el BDOF se activa para el bloque actual.
El método proporciona técnicas que permiten que BDOF se desactive selectivamente cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que
desactivar el BDOF para toda la CVS cuando el remuestreo de imágenes de referencia (RPR) se activa. Al tener la capacidad para desactivar selectivamente el BDOF en esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, el uso del procesador, la memoria y/o los recursos de red se puede reducir en el codificador y el decodificador. Por lo tanto, el codificador/decodificador (también conocido como “códec”) en la codificación de vídeo se mejora con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de vídeo mejorado ofrece al usuario una mejor experiencia de usuario cuando los vídeos son enviados, recibidos y/o vistos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto establece que la activación del BDOF comprende establecer un indicador de BDOF a un primer valor, y en donde la desactivación del BDOF comprende establecer el indicador de BDOF a un segundo valor.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto permite la generación de las imágenes de referencia para la imagen actual con base en las listas de imágenes de referencia de acuerdo con un modo de interpredicción bidireccional.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto prevé activar y desactivar selectivamente el BDOF para bloques en una pluralidad de imágenes dependiendo de si la resolución de cada imagen es diferente de o la misma que la resolución de imágenes de referencia asociada con las imágenes.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto prevé la activación del remuestreo de imágenes de referencia (RPR) para una secuencia de vídeo codificada (CVS) completa que contiene la imagen actual cuando el BDOF está desactivado.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto establece que la resolución de la imagen actual esté dispuesta en un conjunto de parámetros del flujo de bits de vídeo codificado, y en donde el bloque actual se obtiene de una porción de la imagen actual.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona la visualización, en una pantalla de un dispositivo electrónico, de una imagen generada mediante el uso del bloque actual.
Un segundo aspecto se refiere a un método para codificar un flujo de bits de vídeo implementado por un codificador de vídeo. El método incluye determinar, a través del codificador de vídeo, si una resolución de la imagen actual que está siendo codificada es la misma que la resolución de imágenes de referencia identificada en una lista de imágenes de referencia asociadas con la imagen actual; activar, a través del codificador de vídeo, el flujo óptico bidireccional (BDOF) para un bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es la misma que la resolución de cada una de las imágenes de referencia; desactivar, a través del codificador de vídeo, el BDOF para el bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es diferente de la resolución de cualquiera de las imágenes de referencia; y refinar, a través del codificador de vídeo, los vectores de movimiento correspondientes al bloque actual mediante el uso del BDOF cuando el BDOF se activa para el bloque actual.
El método proporciona técnicas que permiten que el BDOF se desactive selectivamente cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que desactivar el BDOF para la CVS completa cuando el remuestreo de imágenes de referencia (RPR) se activa. Al tener la capacidad para desactivar selectivamente el BDOF de esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, el uso del procesador, la memoria y/o los recursos de red se pueden reducir en el codificador y el decodificador. Por lo tanto, el codificador/decodificador (también conocido como “códec”) en la codificación de vídeo se mejora con relación a códecs actuales. Como un asunto práctico, el proceso de codificación de vídeo mejorado ofrece al usuario una mejor experiencia de usuario cuando los vídeos son enviados, recibidos y/o vistos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto permite la determinación, a través del codificador de vídeo, de los vectores de movimiento para la imagen actual con base en las imágenes de referencia; codificar, a través del codificador de vídeo, la imagen actual con base en los vectores de movimiento; y decodificar, a través del codificador de vídeo, la imagen actual mediante el uso del decodificador de referencia hipotético.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto prevé la activación del BDOF que comprende establecer un indicador de BDOF a un primer valor, y en donde la desactivación del BDOF comprende establecer el indicador de BDOF a un segundo valor.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto prevé generar las imágenes de referencia para la imagen actual con base en listas de imágenes de referencia de acuerdo con un modo de interpredicción bidireccional.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto prevé activar y desactivar selectivamente el BDOF para bloques en una pluralidad de imágenes dependiendo de si la resolución de cada imagen es diferente de o la misma que la resolución de imágenes de referencia asociada con las imágenes.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto prevé la activación del remuestreo de imágenes de referencia (RPR) para una secuencia de vídeo codificado (CVS) completa que contiene la imagen actual incluso cuando el BDOF está desactivado.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto prevé transmitir el flujo de bits de vídeo que contiene el bloque actual a un decodificador de vídeo.
Un tercer aspecto se relaciona con un dispositivo de decodificación. El dispositivo de decodificación incluye un receptor configurado para recibir un flujo de bits de vídeo codificado; una memoria acoplada al receptor, la memoria que almacena instrucciones; y un procesador acoplado a la memoria, el procesador configurado para ejecutar las instrucciones para hacer que el dispositivo de decodificación ejecute lo siguiente: determinar si una resolución de una imagen actual que está siendo decodificada es la misma que la resolución de imágenes de referencia identificada por una lista de imágenes de referencia asociada con el bloque actual; activar el flujo óptico bidireccional (BDOF) para un bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es la misma que la resolución de cada una de las imágenes de referencia; desactivar el BDOF para el bloque actual de la imagen actual cuando la resolución de la imagen actual es determinado como diferente de la resolución de cualquiera de las imágenes de referencia; y refinar vectores de movimiento correspondientes al bloque actual mediante el uso del BDOF cuando el BDOF se activa para el bloque actual.
El dispositivo de decodificación proporciona técnicas que permiten al BDOF ser selectivamente desactivado cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que desactivar el BDOF para toda la CVS cuando el remuestreo de imágenes de referencia (RPR) se activa. Al tener la capacidad para desactivar selectivamente el BDOF de esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, el uso del procesador, la memoria y/o los recursos de red se puede reducir en ambos el codificador y el decodificador. Por lo tanto, el codificador/decodificador (también conocido como “códec”) en la codificación de vídeo se mejora con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de vídeo mejorado ofrece al usuario una mejor experiencia de usuario cuando los vídeos son enviados, recibidos y/o vistos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto permite que el remuestreo de imágenes de referencia (RPR) esté activado para una secuencia de vídeo codificada (CVS) completa que contiene la imagen actual cuando el BDOF está desactivado.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto permite un visualizador configurada para visualizar una imagen tal como se genera con base en el bloque actual.
Un cuarto aspecto se relaciona con un dispositivo de codificación. El dispositivo de codificación incluye una memoria que contiene instrucciones; un procesador acoplado a la memoria, el procesador configurado para implementar las instrucciones para hacer que el dispositivo de codificación ejecute lo siguiente: determinar si una resolución de la imagen actual que está siendo codificada es la misma que la resolución de imágenes de referencia identificada en una lista de imágenes de referencia asociada con la imagen actual; activar el flujo óptico bidireccional (BDOF) para un bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es la misma que la resolución de cada una de las imágenes de referencia; desactivar el BDOF para el bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es diferente de la resolución de cualquiera de las imágenes de referencia; y refinar vectores de movimiento correspondientes al bloque actual mediante el uso del BDOF cuando el BDOF se activa para el bloque actual; y un transmisor acoplado al procesador, el transmisor configurado para transmitir un flujo de bits de vídeo que contiene el bloque actual a un decodificador de vídeo.
El dispositivo de codificación proporciona técnicas que permiten que el BDOF se desactive selectivamente cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que desactivar el BDOF durante la CVS completa cuando el remuestreo de imágenes de referencia (RPR) se activa. Al tener la capacidad para desactivar selectivamente el BDOF de esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, el uso del procesador, la memoria y/o los recursos de red se puede reducir en el codificador y el decodificador. Por lo tanto, el codificador/decodificador (también conocido como “códec”) en la codificación de vídeo se mejora con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de vídeo mejorado ofrece al usuario una mejor experiencia de usuario cuando los vídeos son enviados, recibidos y/o vistos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto permite que el remuestreo de imágenes de referencia (RPR) esté activado para una secuencia de vídeo codificada (CVS) completa que contiene la imagen actual incluso cuando el BDOF está desactivado.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto establece que la memoria almacene el flujo de bits de vídeo antes que el transmisor transmita el flujo de bits al decodificador de vídeo.
Un quinto aspecto se refiere a un aparato de codificación. El aparato de codificación incluye un receptor configurado para recibir una imagen a codificar o recibir un flujo de bits a decodificar; un transmisor acoplado al receptor, el transmisor configurado para transmitir el flujo de bits a un decodificador o transmitir una imagen decodificada a una pantalla; una memoria acoplada al menos a uno del receptor o el transmisor, la memoria configurada para almacenar instrucciones; y un procesador acoplado a la memoria, el procesador configurado para ejecutar las instrucciones almacenadas en la memoria para ejecutar cualquiera de los métodos divulgados en la presente descripción.
El aparato de codificación proporciona técnicas que permiten que el BDOF se desactive selectivamente cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que desactivar el BDOF para la CVS completa cuando remuestreo de imágenes de referencia (RPR) se activa. Al tener la capacidad para desactivar selectivamente el BDOF de esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, el uso del procesador, la memoria y/o los recursos de red se puede reducir en ambos, el codificador y el decodificador. Por lo tanto, el codificador/decodificador (también conocido como “códec”) en la codificación de vídeo se mejora con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de vídeo mejorado ofrece al usuario una mejor experiencia de usuario cuando los vídeos son enviados, recibidos y/o vistos.
Un sexto aspecto se refiere a un sistema. El sistema incluye un codificador; y un decodificador en comunicación con el codificador, en donde el codificador o el decodificador incluyen el dispositivo de decodificación, el dispositivo de codificación, o el aparato de codificación divulgados en la presente descripción.
El sistema proporciona técnicas que permiten que el BDOF se desactive selectivamente cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que desactivar el BDOF para la CVS completa cuando el remuestreo de imágenes de referencia (RPR) se activa. Al tener la capacidad para desactivar selectivamente el BDOF de esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, el uso del procesador, la memoria y/o los recursos de red se puede reducir en ambos, el codificador y el decodificador. Por lo tanto, el codificador/decodificador (también conocido como “códec”) en la codificación de vídeo se mejora con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de vídeo mejorado ofrece al usuario una mejor experiencia de usuario cuando los vídeos son enviados, recibidos y/o vistos.
Breve descripción de las figuras
Para un entendimiento más completo de esta divulgación, ahora se hace referencia a la siguiente breve descripción, tomada en relación con los dibujos acompañantes y la descripción detallada, en donde números de referencia similares representan partes similares.
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación de ejemplo que puede utilizar técnicas de codificación de vídeo.
La Figura 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar técnicas de codificación de vídeo.
La Figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar técnicas de codificación de vídeo.
La Figura 4 es una representación de una relación entre una imagen IRAP con relación a imágenes principales e imágenes finales en un orden de decodificación y un orden de presentación.
La Figura 5 ilustra un ejemplo de codificación multicapa para escalabilidad espacial.
La Figura 6 es un diagrama esquemático que ilustra un ejemplo de interpredicción unidireccional.
La Figura 7 es un diagrama esquemático que ilustra un ejemplo de interpredicción bidireccional.
La Figura 8 ilustra un flujo de bits de vídeo.
La Figura 9 ilustra una técnica de particionado para una imagen.
La Figura 10 es una modalidad de un método para decodificar un flujo de bits de vídeo codificado.
La Figura 11 es una modalidad de un método para codificar un flujo de bits de vídeo codificado.
La Figura 12 es un diagrama esquemático de un dispositivo de codificación de vídeo.
La Figura 13 es un diagrama esquemático de una modalidad de un medio para codificar.
Descripción detallada
Se debe entender en el inicio que, aunque a continuación se proporciona una implementación ilustrativa de una o más modalidades, los sistemas y/o métodos divulgados pueden ser implementados utilizando cualquier número de técnicas, ya sea actualmente conocidas o en existencia. La divulgación de ninguna manera debe quedar limitada a las implementaciones ilustrativas, los dibujos y las técnicas ilustradas a continuación, incluyendo los diseños de ejemplo e implementaciones ilustradas y descritas en la presente descripción, pero se puede modificar dentro del
alcance de las reivindicaciones anexas junto con su alcance completo de equivalentes
Como se usa en la presente descripción, la resolución describe el número de píxeles en un archivo de vídeo. Es decir, la resolución es el ancho y la altura de la imagen proyectada, medida en píxeles. Por ejemplo, un vídeo pudiera tener una resolución de 1280 (píxeles horizontales) * 720 (píxeles verticales). Esto generalmente se escribe como simplemente 1280*720, o abreviado a 720p. El BDOF es un proceso, algoritmo, o herramienta de codificación utilizada para refinar movimiento o vectores de movimiento para un bloque predicho. El BDOF permite que vectores de movimiento sean encontrados para unidades de subcodificación con base en el gradiente de la diferencia entre las dos imágenes de referencia. La característica RPR es la capacidad para cambiar la resolución espacial de imágenes codificadas en la parte media de un flujo de bits sin la necesidad de intracodificar la imagen en la ubicación de cambio de resolución.
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación de ejemplo 10 que puede utilizar técnicas de codificación de vídeo como se describe en la presente descripción. Como se muestra en la Figura 1, el sistema de codificación 10 incluye un dispositivo fuente 12 que proporciona datos de vídeo codificados a decodificar en un tiempo posterior por un dispositivo destino 14. En particular, el dispositivo fuente 12 puede proporcionar los datos de vídeo al dispositivo destino 14 a través de un medio legible por ordenador 16. El dispositivo fuente 12 y el dispositivo destino 14 pueden comprender cualquiera de un amplio rango de dispositivos, incluyendo ordenadores de escritorio, notebook (por ejemplo, dispositivo portátil), ordenadores de tableta, descodificadores, equipos telefónicos tales como los denominados teléfonos “inteligentes”, los denominados teclados “inteligentes”, televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de juegos de vídeo, dispositivo de transmisión de vídeo, o similar. En algunos casos, el dispositivo fuente 12 y el dispositivo destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo destino 14 puede recibir los datos de vídeo codificados a decodificar a través del medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo con la capacidad para mover los datos de vídeo codificados desde el dispositivo fuente 12 al dispositivo destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicación para permitir al dispositivo fuente 12 transmitir datos de vídeo codificados directamente al dispositivo destino 14 en tiempo real. Los datos de vídeo codificados pueden ser modulados de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo destino 14. El medio de comunicación puede comprender cualquier medio de comunicación cableado o inalámbrico, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquete, tal como una red de área local, una red de área amplia, o una red global tal como la Internet. El medio de comunicación puede incluir enrutadores, interruptores, estaciones base, o cualquier otro equipo que puede ser útil para facilitar la comunicación desde el dispositivo fuente 12 al dispositivo destino 14.
En algunos ejemplos, los datos codificados pueden emitirse desde la interfaz de salida 22 a un dispositivo de almacenamiento. De manera similar, se puede tener acceso a datos codificados desde el dispositivo de almacenamiento a través de la interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera de una variedad de medios de almacenamiento de datos a los que se tiene acceso localmente o que están distribuidos tal como un disco duro, discos Blu-ray, discos de vídeo digital (DVD), Memorias de Solo Lectura de Disco Compacto (CD-ROM), memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital conveniente para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede almacenar el vídeo codificado generado por el dispositivo fuente 12. El dispositivo destino 14 puede tener acceso a datos de vídeo almacenados desde el dispositivo de almacenamiento a través de transmisión o descarga. El servidor de archivos puede ser cualquier tipo de servidor con la capacidad para almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo destino 14. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento unidos a la red (NAS), o una unidad de disco local. El dispositivo destino 14 puede tener acceso 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 Wi-Fi), una conexión cableada (por ejemplo, línea de abonado digital (DSL), modem de cable, etc.), o una combinación de ambos que sea adecuada para tener acceso 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 puede ser una transmisión por secuencias, una transmisión por descarga, o una combinación de las mismas.
Las técnicas de esta divulgación no necesariamente se limitan a aplicaciones o escenarios inalámbricos. Las técnicas se pueden aplicar a la codificación de vídeo en apoyo de cualquiera de una variedad de aplicaciones multimedia, tal como transmisiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión satelital, transmisiones de vídeo por secuencias de Internet, tal como transmisión adaptable dinámica sobre HTTP (DASH), vídeo digital que se codifica sobre 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 10 puede ser configurado para soportar transmisión de vídeo de una vía o dos vías para soportar aplicaciones tales como transmisión por secuencias 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 1, el dispositivo fuente 12 incluye la fuente de vídeo 18, el codificador de vídeo 20, y la interfaz de salida 22. El dispositivo destino 14 incluye la interfaz de entrada 28, el decodificador de vídeo 30, y el dispositivo de visualización 32. De acuerdo con esta divulgación, el codificador de vídeo 20 del dispositivo fuente 12 y/o el decodificador de vídeo 30 del dispositivo destino 14 pueden ser configurados para aplicar las técnicas para la codificación de vídeo. En otros ejemplos, un dispositivo fuente y un dispositivo destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo fuente 12 puede recibir datos de vídeo desde una fuente de vídeo externa, tal como una cámara externa. De igual forma, el dispositivo destino 14 se puede conectar en interfaz con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado. El sistema de codificación integrado 10 de la Figura 1 es simplemente un ejemplo. Las técnicas para la codificación de vídeo pueden ejecutarse por cualquier dispositivo de codificación/decodificación de vídeo digital. Aunque las técnicas de esta divulgación generalmente son ejecutadas por un dispositivo de codificación de vídeo, las técnicas también pueden ejecutarse por un codificador/decodificador de vídeo, típicamente denominado como un “CODEC.” Además, las técnicas de esta divulgación también pueden ejecutarse por un preprocesador de vídeo. El codificador y/o decodificador de vídeo pueden ser una unidad de procesamiento de gráficos (GPU) o un dispositivo similar. El dispositivo fuente 12 y el dispositivo destino 14 son simplemente ejemplos de dichos dispositivos de codificación en los cuales el dispositivo fuente 12 genera datos de vídeo codificados para transmisión al dispositivo destino 14. En algunos ejemplos, el dispositivo fuente 12 y el dispositivo destino 14 pueden operar en una manera sustancialmente simétrica de manera que cada uno del dispositivo fuente y destino 12, 14 incluye componentes de codificación y decodificación de vídeo. Por lo tanto, el sistema de codificación 10 puede soportar transmisión de vídeo de una vía o dos vías entre dispositivos de vídeo 12, 14, por ejemplo, para transmisión de vídeo, reproducción de vídeo, difusión de vídeo, o telefonía de vídeo.
La fuente de vídeo 18 del dispositivo fuente 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo previamente capturado, y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo. Como una alternativa adicional, la fuente de vídeo 18 puede generar datos basados en gráficos de ordenador como el vídeo fuente, o una combinación de vídeo en vivo, vídeo archivado, y vídeo generado por ordenador.
En algunos casos, cuando la fuente de vídeo 18 es una cámara de vídeo, el dispositivo fuente 12 y el dispositivo destino 14 pueden formar los denominados teléfonos con cámara o teléfonos de vídeo. Tal como se mencionó antes, no obstante, las técnicas descritas en esta divulgación pueden ser aplicables a codificación de vídeo en general, y pueden ser aplicadas a aplicaciones inalámbricas y/o cableadas. En cada caso, el vídeo capturado, precapturado o generado por ordenador puede ser codificado por el codificador de vídeo 20. La información de vídeo codificada puede entonces ser emitida por la interfaz de salida 22 sobre un medio legible por ordenador 16.
El medio legible por ordenador 16 puede incluir medios transitorios, tal como una difusión inalámbrica o transmisión de red cableada, o medio de almacenamiento (es decir, medio de almacenamiento no transitorio), tal como un disco duro, unidad flash, disco compacto, disco de vídeo digital, disco Blu-ray, u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (que no se muestra) puede recibir datos de vídeo codificados desde el dispositivo fuente 12 y puede proporcionar los datos de vídeo codificados al dispositivo destino 14, por ejemplo, a través de la transmisión de red. De manera similar, un dispositivo informático de una instalación de producción de medio, tal como una instalación de estampado de disco, puede recibir datos de vídeo codificados desde el dispositivo fuente 12 y puede producir un disco que contiene los datos de vídeo codificados. Por lo tanto, se puede entender que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
La interfaz de entrada 28 del dispositivo destino 14 recibe información desde el medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información de sintaxis definida por el codificador de vídeo 20, el cual también se utiliza por el decodificador de vídeo 30, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, grupo de imágenes (GOP). El dispositivo de visualización 32 visualiza los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización tal como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánico (OLED), u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con una norma de codificación de vídeo, tal como la norma de Codificación de Video de Alta Eficiencia (HEVC) actualmente bajo desarrollo, y se puede adaptar al Modelo de Prueba HEVC (HM). Alternativamente, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con otras normas industriales o propias, tal como la norma del Sector de Estandarización de Telecomunicaciones de la Unión de Telecomunicaciones Internacional (ITU-T) H.264, alternativamente denominado como Grupo de Expertos de Imágenes en Movimiento (MPEG)-4, Parte 10, Codificación de Video Avanzada (AVC), H.265/HEVC, o extensiones de dichas normas. Las técnicas de esta
divulgación, no obstante, no se limitan a ninguna norma de codificación particular. Otros ejemplos de la norma de codificación de vídeos incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la Figura 1, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar integrados con un codificador y decodificador de audio, y pueden incluir unidades de multiplexor-demultiplexor apropiados (MUX-DEMUX), u otro hardware y software, para manejar la codificación de audio y vídeo en un flujo de datos común o flujos de datos separados. Si aplica, unidades MUX-DEMUX se pueden adecuar al protocolo de multiplexor ITU H.223, u otros protocolos tal como el protocolo de datagrama de usuario (UDP).
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden ser implementados como cualquiera de una variedad de circuitos de codificador convenientes, tal como uno o más microprocesadores, procesadores de señal digital (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, microprograma o cualesquiera combinaciones de los mismos. Cuando las técnicas son implementadas parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio, conveniente y puede ejecutar las instrucciones en hardware utilizando uno o más procesadores para ejecutar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y el decodificador de vídeo 30 puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador (CODEC) combinado en un dispositivo respectivo. Un dispositivo que incluye el codificador de vídeo 20 y/o el decodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador, y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
La Figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo 20 que puede implementar técnicas de codificación de vídeo. El codificador de vídeo 20 puede ejecutar intra e intercodificación de bloques de vídeo dentro de los segmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o remover la redundancia espacial en vídeo dentro de una trama de vídeo o imagen determinada. La intercodificación se basa en predicción temporal para reducir o remover la redundancia temporal en vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. El intramodo (modo I) se puede referir a cualquiera de los diversos modos de codificación basados en espacio. Los intermodos, tales como predicción unidireccional (también conocida como, unipredicción) (modo P) o bipredicción (también conocida como, bipredicción) (modo B), se pueden referir a cualquiera de varios modos de codificación basados en tiempo.
Como se muestra en la Figura 2, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama de vídeo que se va a codificar. En el ejemplo de la Figura 2, el codificador de vídeo 20 incluye la unidad de selección de modo 40, la memoria de tramas de referencia 64, el sumador 50, la unidad de procesamiento de transformación 52, la unidad de cuantificación 54, y unidad de codificación de entropía 56. La unidad de selección de modo 40, a su vez, incluye la unidad de compensación de movimiento 44, unidad de estimación de movimiento 42, unidad de intrapredicción (también conocida como, intrapredicción) 46, y la unidad de partición 48. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye la unidad de cuantificación inversa 58, la unidad de transformación inversa 60, y el sumador 62. Un filtro de desbloqueo (que no se muestra en la Figura 2) también se puede incluir para filtrar límites de bloque para remover los artefactos de bloqueo del vídeo reconstruido. Si así se desea, el filtro de desbloqueo típicamente filtraría la salida del sumador 62. También se pueden utilizar filtros adicionales (en-bucle o post-bucle) además del filtro de desbloqueo. Dichos filtros no se muestran por brevedad, pero si se desea, pueden filtrar la salida del sumador 50 (como un filtro en-bucle).
Durante el proceso de codificación, el codificador de vídeo 20 recibe trama o segmento de vídeo a codificar. La trama o segmento puede ser dividido en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 ejecutan codificación interpredictiva del bloque de vídeo recibido con relación a uno o más bloques en una o más tramas de referencia para proporcionar predicción temporal. La unidad de intrapredicción 46 alternativamente puede ejecutar codificación intrapredictiva del bloque de vídeo recibido con relación a uno o más bloques vecinos en la misma trama o segmento que el bloque a codificar para proporcionar predicción espacial. El codificador de vídeo 20 puede ejecutar múltiples pasos de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de vídeo.
Además, la unidad de partición 48 puede particionar bloques de datos de vídeo en subbloques, con base en la evaluación de esquemas de particionado previos en pasos de codificación previos. Por ejemplo, la unidad de partición 48 inicialmente puede particionar una trama o segmento en unidades de codificación más grandes (LCU), y puede particionar cada una de las LCU en unidades de subcodificación (subCU) con base en análisis de distorsión de tasa (por ejemplo, optimización de distorsión de tasa). La unidad de selección de modo 40 además puede producir una estructura de datos de árbol cuaternario indicativa del particionado de una LCU en subCU. Las CU de nodo hoja del árbol cuaternario pueden incluir una o más unidades de predicción (PU) y una o más unidades de transformación (TLT).
La presente divulgación utiliza el término “bloque” para hacer referencia a cualquiera de una CU, PU, o TU, en el contexto de HEVC, o estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de los mismos en H.264/AVC). Una CU incluye un nodo de codificación, PU, y TU asociadas con el nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y tiene forma cuadrada. El
tamaño de la CU puede variar de 8*8 píxeles hasta el tamaño del bloque de árbol con un máximo de 64*64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos de sintaxis asociados con una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de particionado pueden diferir entre si la CU es omitida o es codificada en modo directo, codificada en modo de intrapredicción, o codificada en modo de interpredicción (también conocida como, interpredicción). Las PU pueden particionarse para no tener forma cuadrada. Los datos de sintaxis asociados con una CU también pueden describir, por ejemplo, el particionado de la CU en una o más TU de acuerdo con un árbol cuaternario. Una TU puede ser de forma cuadrada o no cuadrada (por ejemplo, rectangular).
La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, con base en los resultados de error, y proporciona el bloque intra o intercodificado resultante al sumador 5o para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para uso como una trama de referencia. La unidad de selección de modo 40 también proporciona elementos de sintaxis, tal como vectores de movimiento, indicadores de intramodo, información de división, y otra información de sintaxis de este tipo, a la unidad de codificación de entropía 56.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero son ilustradas por separado para propósitos conceptuales. La estimación de movimiento, ejecutada por la unidad de estimación de movimiento 42, es el proceso de generar vectores de movimiento, los cuales estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de una trama de vídeo o imagen actual con relación a un bloque predictivo dentro de una trama de referencia (u otra unidad codificada) con relación al bloque actual que está siendo codificado dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se empareja muy estrechamente con el bloque a codificar, en términos de diferencia de píxel, lo cual puede determinarse por la suma de diferencia absoluta (SAD), suma de diferencia cuadrada (SSD), u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxel de subentero de imágenes de referencia almacenadas en la memoria de tramas de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de píxel de un cuarto, posiciones de píxel de un octavo, u otras posiciones de píxel fraccionales de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede ejecutar una búsqueda de movimiento con relación a las posiciones de píxel completo y posiciones de píxel fraccional y puede emitir un vector de movimiento con precisión de píxel fraccional.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un segmento intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede ser seleccionada de entre una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de tramas de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación de entropía 56 y la unidad de compensación de movimiento 44.
La compensación de movimiento, ejecutada por la unidad de compensación de movimiento 44, puede involucrar la extracción o generación del bloque predictivo con base en el vector de movimiento determinado por la unidad de estimación de movimiento 42. Una vez más, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar funcionalmente integradas, en algunos ejemplos. Al momento de recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar el bloque predictivo al cual apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual sustrayendo valores de píxel del bloque predictivo de entre los valores de píxel del bloque de vídeo actual que está siendo codificado, formando valores de diferencia de píxel, como se analiza a continuación. En general, la unidad de estimación de movimiento 42 ejecuta estimación de movimiento con relación a componentes de luminancia, y la unidad de compensación de movimiento 44 utiliza vectores de movimiento calculados con base en los componentes de luminancia para ambos, componentes de crominancia y componentes de luminancia. La unidad de selección de modo 40 también puede generar elementos de sintaxis asociados con los bloques de vídeo y el segmento de vídeo para uso por el decodificador de vídeo 30 en la decodificación de los bloques de vídeo del segmento de vídeo.
La unidad de intrapredicción 46 puede intrapredecir un bloque actual, como una alternativa a la interpredicción ejecutada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se describió antes. En particular, la unidad de intrapredicción 46 puede determinar un modo de intrapredicción a utilizar para codificar un bloque actual. En algunos ejemplos, la unidad de intrapredicción 46 puede codificar un bloque actual utilizando varios modos de intrapredicción, por ejemplo, durante pasos de codificación separados, y la unidad de intrapredicción 46 (o unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado a utilizar de entre los modos probados.
Por ejemplo, la unidad de intrapredicción 46 puede calcular valores de distorsión de tasa utilizando un análisis de distorsión de tasa para los diversos modos de intrapredicción probados, y puede seleccionar el modo de intrapredicción que tenga las mejores características de distorsión de tasa entre los modos probados. El análisis de
distorsión de tasa generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque no codificado original que fue codificado para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) utilizada para producir el bloque codificado. La unidad de intrapredicción 46 puede calcular relaciones de las distorsiones y tasas para los diversos bloques codificados para determinar cuál modo de intrapredicción muestra el mejor valor de distorsión de tasa para el bloque.
Además, la unidad de intrapredicción 46 puede configurarse para codificar bloques de profundidad de un mapa de profundidad utilizando un modo de modelado de profundidad (DMM). La unidad de selección de modo 40 puede determinar si un modo DMM disponible produce mejores resultados de codificación que un modo de intrapredicción y los otros modos DMM, por ejemplo, utilizando optimización de distorsión de tasa (r Do ). Los datos para una imagen de textura correspondientes a un mapa de profundidad pueden ser almacenados en la memoria de tramas de referencia 64. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 también se pueden configurar para interpredecir bloques de profundidad de un mapa de profundidad.
Después de seleccionar un modo de intrapredicción para un bloque (por ejemplo, un modo de intrapredicción o uno de los modos DMM), la unidad de intrapredicción 46 puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación de entropía 56. La unidad de codificación de entropía 56 puede codificar la información indicando el modo de intrapredicción seleccionado. El codificador de vídeo 20 puede incluir, en los datos de configuración de flujo de bits transmitidos, los cuales pueden incluir una pluralidad de tablas de índice de modo de intrapredicción y una pluralidad de tablas de índice de modo de intrapredicción modificado (también denominadas como tablas de mapeo de palabra código), definiciones de contextos de codificación para varios bloques, e indicaciones de un modo de intrapredicción más probable, una tabla de índice de modo de intrapredicción, y una tabla de índice de modo de intrapredicción modificado a utilizar para cada uno de los contextos.
El codificador de vídeo 20 forma un bloque de vídeo residual sustrayendo los datos de predicción de la unidad de selección de modo 40 a partir del bloque de vídeo original que está siendo codificado. El sumador 50 representa el componente o componentes que ejecutan esta operación de sustracción.
La unidad de procesamiento de transformación 52 aplica una transformación, tal como una transformación de coseno discreto (DCT) o una transformación conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficiente de transformación residuales. La unidad de procesamiento de transformación 52 puede ejecutar otras transformaciones que son conceptualmente similares a DCT. También se podrían utilizar transformaciones de ondícula, transformaciones de entero, transformaciones de subbanda u otros tipos de transformaciones.
La unidad de procesamiento de transformación 52 aplica la transformación al bloque residual, produciendo un bloque de los coeficientes de transformación residuales. La transformación puede convertir la información residual de un dominio de valor de píxel a un dominio de transformación, tal como un dominio de frecuencia. La unidad de procesamiento de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformación para reducir adicionalmente la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bit asociada con algunos o todos los coeficientes. El grado de cuantificación puede ser modificado ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 entonces puede ejecutar un escaneo de la matriz incluyendo los coeficientes de transformación cuantificados. De manera alternativa, la unidad de codificación de entropía 56 puede ejecutar el escaneo.
Siguiendo la cuantificación, la unidad de codificación de entropía 56 codifica por entropía los coeficientes de transformación cuantificados. Por ejemplo, la unidad de codificación de entropía 56 puede ejecutar codificación de longitud variable adaptable al contexto (CAVLC), codificación aritmética binaria adaptable al contexto (CABAC), codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), codificación de entropía de particionado de intervalo de probabilidad (PIPE) u otra técnica de codificación de entropía. En el caso de codificación de entropía basada en contexto, el contexto se puede basar en bloques vecinos. Siguiendo la codificación de entropía por la unidad de codificación de entropía 56, el flujo de bits codificado puede ser transmitido a otro dispositivo (por ejemplo, decodificador de vídeo 30) o archivado para posterior transmisión o recuperación.
La unidad de cuantificación inversa 58 y la unidad de transformación inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, por ejemplo, para posterior uso como un bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia agregando el bloque residual a un bloque predictivo de una de las tramas de memoria de tramas de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxel de subentero para uso en estimación de movimiento. El sumador 62 agrega el bloque residual reconstruido al bloque de predicción de movimiento compensado producido por la unidad de compensación de movimiento 44 para producir un bloque de vídeo reconstruido para almacenamiento en memoria de tramas de referencia 64. El bloque de vídeo reconstruido puede utilizarse por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un
bloque de referencia para intercodificar un bloque en una trama de vídeo posterior.
La Figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo 30 que puede implementar técnicas de codificación de vídeo. En el ejemplo de la Figura 3, el decodificador de vídeo 30 incluye una unidad de decodificación de entropía 70, una unidad de compensación de movimiento 72, una unidad de intrapredicción 74, una unidad de cuantificación inversa 76, una unidad de transformación inversa 78, una memoria de tramas de referencia 82, y un sumador 80. El decodificador de vídeo 30, en algunos ejemplos, puede ejecutar un paso de decodificación generalmente recíproco al paso de codificación descrito con respecto al codificador de vídeo 20 (figura 2). La unidad de compensación de movimiento 72 puede generar datos de predicción basado en vectores de movimiento recibidos desde la unidad de decodificación de entropía 70, mientras que la unidad de intrapredicción 74 puede generar datos de predicción basado en los indicadores de modo de intrapredicción recibidos desde la unidad de decodificación de entropía 70.
Durante el proceso de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un segmento de vídeo codificado y elementos de sintaxis asociados del codificador de vídeo 20. La unidad de decodificación de entropía 70 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intrapredicción, y otros elementos de sintaxis. La unidad de decodificación de entropía 70 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de compensación de movimiento 72. El decodificador de vídeo 30 puede recibir los elementos de sintaxis al nivel de segmento de vídeo y/o al nivel de bloque de vídeo.
Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), la unidad de intrapredicción 74 puede generar datos de predicción para un bloque de vídeo del segmento de vídeo actual con base en un modo de intrapredicción señalizado y datos de bloques previamente decodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un segmento intercodificado (por ejemplo, B, P, o GPB), la unidad de compensación de movimiento 72 produce bloques predictivos para un bloque de vídeo del segmento de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de decodificación de entropía 70. Los bloques predictivos pueden ser producidos desde una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de tramas de referencia, Lista 0 y Lista 1, utilizando técnicas de construcción por omisión con base en imágenes de referencia almacenadas en la memoria de tramas de referencia 82.
La unidad de compensación de movimiento 72 determina información de predicción para un bloque de vídeo del segmento de vídeo actual analizando los vectores de movimiento y otros elementos de sintaxis, y utiliza la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que está siendo decodificado. Por ejemplo, la unidad de compensación de movimiento 72 utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) utilizado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P, o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, estatus de interpredicción para cada bloque de vídeo intercodificado del segmento, y otra información para decodificar los bloques de vídeo en el segmento de vídeo actual.
La unidad de compensación de movimiento 72 también puede realizar la interpolación con base en filtros de interpolación. La unidad de compensación de movimiento 72 puede utilizar filtros de interpolación tal como son utilizados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles de subentero de bloques de referencia. En este caso, la unidad de compensación de movimiento 72 puede determinar los filtros de interpolación utilizados por el codificador de vídeo 20 de entre los elementos de sintaxis recibidos y puede utilizar los filtros de interpolación para producir bloques predictivos.
Los datos para una imagen de textura correspondientes a un mapa de profundidad pueden ser almacenados en la memoria de tramas de referencia 82. La unidad de compensación de movimiento 72 también puede configurarse para interpredecir bloques de profundidad de un mapa de profundidad.
En una modalidad, el decodificador de vídeo 30 incluye una interfaz de usuario (UI) 84. La interfaz de usuario 84 está configurada para recibir entrada desde un usuario del decodificador de vídeo 30 (por ejemplo, un administrador de red). A través de la interfaz de usuario 84, el usuario puede gestionar o cambiar ajustes en el decodificador de vídeo 30. Por ejemplo, el usuario puede introducir o de otra manera proporcionar un valor para un parámetro (por ejemplo, un indicador) a fin de controlar la configuración y/u operación del decodificador de vídeo 30 de acuerdo con la preferencia del usuario. La interfaz de usuario 84 puede ser, por ejemplo, una interfaz gráfica de usuario (GUI) que permite a un usuario interactuar con el decodificador de vídeo 30 a través de iconos gráficos, menús desplegables, cajas para marcar, y así sucesivamente. En algunos casos, la interfaz de usuario 84 puede recibir información del usuario a través de un teclado, un ratón, u otro dispositivo periférico. En una modalidad, un usuario puede tener acceso a la interfaz de usuario 84 a través de un teléfono inteligente, un dispositivo de tableta, un ordenador personal ubicada lejos del decodificador de vídeo 30, y así sucesivamente. Como se usa en la presente descripción, la interfaz de usuario 84 puede denominarse como una entrada externa o un medio externo.
Teniendo en mente lo anterior, técnicas de compresión de vídeo ejecutan predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o remover la redundancia inherente en secuencias de vídeo. Para codificación de vídeo basada en bloque, un segmento de vídeo (es decir, una imagen de vídeo o una porción de una imagen de vídeo) puede particionarse en bloques de vídeo, los cuales también pueden denominarse como bloques de árbol, bloques de árbol de codificación (CTB), unidades de árbol de codificación (CTU), unidades de codificación (CU), y/o nodos de codificación. Los bloques de vídeo en un segmento intracodificado (I) de una imagen son codificados utilizando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Bloques de vídeo en un segmento intercodificado (P o B) de una imagen pueden utilizar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden ser denominadas como tramas, y las imágenes de referencia pueden ser denominadas como tramas de referencia.
La predicción espacial o temporal tiene como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxel entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indicando la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para compresión adicional, los datos residuales pueden ser transformados del dominio de píxel a un dominio de transformación, teniendo como resultado coeficientes de transformación residuales, los cuales entonces pueden ser cuantificados. Los coeficientes de transformación cuantificados, inicialmente acomodados en un arreglo bidimensional, pueden ser escaneados para producir un vector de coeficientes de transformación unidimensional, y se puede aplicar codificación de entropía para lograr incluso más compresión.
La compresión de imágenes y vídeo ha experimentado un rápido crecimiento, conduciendo a varias normas de codificación. Dichas normas de codificación de vídeo incluyen ITU-T H.261, Organización Internacional para Estandarización/Comisión Electrotécnica Internacional (ISO/IeC) MPEG-1 Parte 2, ITU-T H.262 o ISO/IEC Mp Eg -2 Parte 2, ITU-T H.263, ISO/IEC MPEG-4 Parte 2, Codificación de Video Avanzada (AVC), también conocida como ITU-T H.264 o ISO/IEC MPEG-4 Parte 10, y Codificación de Video de Alta Eficiencia (HEVC), también conocida como ITU-T H.265 o MPEG-H Parte 2. AVC incluye extensiones tales como Codificación de Video Escalable (SVC), Codificación de Video Multivista (MVC) y Codificación de Video Multivista Más Profundidad (MVC+D), y 3D AVC (3D-AVC). HEVC incluye extensiones tales como HEVC Escalable (SHVC), HEVC Multivista (MV-HEVC), y 3D HEVC (3D-HEVC).
También existe una nueva norma de codificación de vídeo, nombrada Codificación de Video Versátil (VVC), que está siendo desarrollada por el equipo de expertos de vídeo conjunto (JVET) de ITU-T y ISO/IEC. Aunque la norma VVC tiene varios borradores de trabajo, un Borrador de Trabajo (WD) de VVC en particular, concretamente B. Bross, J. Chen, and S. Liu, “Versatile Video Coding (Draft 5) ,” jVeT-N1001-v3, 13ava Reunión JVET, 27 de marzo, 2019 (Borrador WC 5) es incorporado por referencia aquí en su totalidad.
La descripción de las técnicas divulgadas en la presente descripción se basa en la norma de codificación de vídeo subdesarrollada Codificación de Video Versátil (WC) por el equipo de expertos de vídeo conjunto (JVET) de ITU-T e ISO/IEC. Sin embargo, las técnicas también aplican a otras especificaciones de códec de vídeo.
La Figura 4 es una representación 400 de una relación entre una imagen 402 de imagen de acceso intra aleatorio (IRAP) con relación a imágenes principales 404 e imágenes finales 406 en un orden de decodificación 408 y un orden de presentación 410. En una modalidad, la imagen IRAP 402 es referida como una imagen de acceso aleatorio limpio (CRA) o como una imagen de refrescar decodificador instantáneo (IDR) con imagen decodificable de acceso aleatorio (RADL). En HEVC, imágenes IDR, imágenes CRA, e imágenes de Acceso de Enlace Roto (BLA) son todas consideradas imágenes IRAP 402. Para WC, durante la 12ava reunión JVET en octubre 2018, se acordó tener ambas imágenes IDR y CRA como imágenes IRAP. En una modalidad, imágenes de Acceso de Enlace Roto (BLA) y Refrescar Decodificador Gradual (GDR) también pueden ser consideradas imágenes IRAP. El proceso de decodificación para una secuencia de vídeo codificado siempre inicia en una IRAP.
Tal como se muestra en la Figura 4, las imágenes principales 404 (por ejemplo, imágenes 2 y 3) siguen a la imagen IRAP 402 en el orden de decodificación 408, pero preceden la imagen IRAP 402 en el orden de presentación 410. La imagen final 406 sigue a la imagen IRAP 402 en ambos el orden de decodificación 408 y en el orden de presentación 410. Aunque en la Figura 4 se muestran dos imágenes principales 404 y una imagen final 406, los expertos en la técnica apreciarán que una cantidad mayor o menor de imágenes principales 404 y/o imágenes finales 406 pueden estar presentes en el orden de decodificación 408 y el orden de presentación 410 en aplicaciones prácticas.
Las imágenes principales 404 en la Figura 4 han sido divididas en dos tipos, concretamente principales omitidas de acceso aleatorio (RASL) y RADL. Cuando la decodificación inicia con la imagen IRAP 402 (por ejemplo, imagen 1), la imagen RADL (por ejemplo, imagen 3) puede ser decodificada de manera apropiada; sin embargo, la imagen RASL (por ejemplo, imagen 2) no puede ser decodificada de manera apropiada. Por lo tanto, la imagen RASL es desechada. En virtud de la distinción entre imágenes RADL y RASL, el tipo de imagen principal 404 asociado con la
imagen IRAP 402 debe ser identificado ya sea como RADL o RASL para codificación eficiente y apropiada. En HEVC, cuando imágenes RASL y RADL están presentes, se tiene la restricción de que para imágenes RASL y RADL que están asociadas con la misma imagen IRAP 402, las imágenes RASL deben preceder a las imágenes RADL en orden de presentación 410.
Una imagen IRAP 402 proporciona las siguientes dos funcionalidades/beneficios importantes. Primero, la presencia de una imagen IRAP 402 indica que el proceso de decodificación puede iniciar a partir de esa imagen. Esta funcionalidad permite una característica de acceso aleatorio en la cual el proceso de decodificación inicia en esa posición en el flujo de bits, no necesariamente el inicio del flujo de bits, siempre y cuando una imagen IRAP 402 esté presente en esa posición. En segundo lugar, la presencia de una imagen IRAP 402 refresca el proceso de decodificación de manera que una imagen codificada que inicia en la imagen IRAP 402, que excluye las imágenes RASL, es codificada sin ninguna referencia a imágenes previas. Teniendo una imagen IRAP 402 presente en el flujo de bits en consecuencia detendría cualquier error que pudiera ocurrir durante la decodificación de imágenes codificadas antes que la imagen IRAP 402 se propague a la imagen IRAP 402 y esas imágenes que siguen a la imagen IRAP 402 en el orden de decodificación 408.
Aunque las imágenes IRAP 402 proporcionan funcionalidades importantes, estas pueden venir con la penalidad para la eficiencia de compresión. La presencia de una imagen IRAP 402 provoca una subida en la tasa de bits. Esta penalidad a la eficiencia de la compresión se debe a dos motivos. Primero, debido a que una imagen IRAP 402 es una imagen intrapredicha, la imagen misma requeriría relativamente más bits para representar cuando se compara con otras imágenes (por ejemplo, imágenes principales 404, imágenes finales 406) que son imágenes interpredichas. Segundo, debido a que la presencia de una imagen IRAP 402 rompe la predicción temporal (es decir, debido a que el decodificador refrescaría el proceso de decodificación, en el cual una de las acciones del proceso de decodificación para esto es remover imágenes de referencia previas en la memoria tampón de imágenes decodificadas (DPB)), la imagen IRAP 402 provoca que la codificación de imágenes que sigue a la imagen IRAP 402 en el orden de decodificación 408 sea menos eficiente (es decir, necesita más bits para representar) debido a que tienen menos imágenes de referencia para su codificación de interpredicción.
Entre los tipos de imagen que son considerados imágenes IRAP 402, la imagen IDR en HEVC tiene diferente señalización y derivación cuando se compara con otros tipos de imágenes. Algunas de las diferencias son las siguientes.
Para señalización y derivación de un valor de conteo de orden de imagen (POC) de una imagen IDR, la parte de bit más significativo (MSB) del POC no se deriva de la imagen clave previa sino que simplemente se establece como igual a 0.
Para señalizar información necesaria para gestión de imágenes de referencia, la cabecera de porción de una imagen IDR no contiene información que necesite ser señalizada para ayudar en la gestión de imagen de referencia. Para otros tipos de imagen (es decir, CRA, Rezago, acceso de subcapa temporal (TSA), etc.), información tal como el conjunto de imágenes de referencia (RPS) descrito a continuación u otras formas de información similar (por ejemplo, listas de imágenes de referencia) son necesarias para el proceso de marcación de imágenes de referencia (es decir, el proceso para determinar el estatus de imágenes de referencia en la memoria tampón de imágenes decodificadas (DPB), ya sea utilizadas para referencia y no utilizadas para referencia). Sin embargo, para la imagen IDR, dicha información no necesita ser señalizada debido a que la presencia de IDR indica que el proceso de decodificación debe simplemente marcar todas las imágenes de referencia en la DPB como no utilizadas para referencia.
En HEVC y WC, imágenes IRAP 402 e imágenes principales 404 pueden cada una contenerse dentro de una sola unidad de capa de abstracción de red (NAL). Un conjunto de las unidades NAL puede denominarse como una unidad de acceso. Imágenes IRAP 402 e imágenes principales 404 reciben diferentes tipos de unidad NAL de manera que fácilmente pueden ser identificadas por aplicaciones a nivel de sistema. Por ejemplo, un divisor de vídeo necesita entender los tipos de imágenes codificadas sin tener que entender demasiado detalle del elemento de sintaxis en el flujo de bits codificado, particularmente para identificar imágenes IRAP 402 de imágenes no-IRAP e identificar imágenes principales 404, incluyendo la determinación de imágenes RASL y RADL, de imágenes finales 406. Imágenes finales 406 son aquellas imágenes que están asociadas con una imagen IRAP 402 y siguen a la imagen IRAP 402 en el orden de presentación 410. Una imagen puede seguir a la imagen IRAP particular 402 en el orden de decodificación 408 y preceder a cualquier otra imagen IRAP 402 en el orden de decodificación 408. Para esto, el hecho de proporcionar a las imágenes IRAP 402 y a las imágenes principales 404 su propio tipo de unidad NAL ayuda a dichas aplicaciones.
Para HEVC, los tipos de unidad NAL para imágenes IRAP incluyen lo siguiente:
BLA con imagen principal (BLA_W_LP): unidad NAL de una imagen de Acceso de Enlace Roto (BLA) que puede ser seguida por una o más imágenes principales en el orden de decodificación.
BLA con RADL (BLA_W_RADL): unidad NAL de una imagen BLA que puede ser seguida por una o más imágenes RADL pero no imágenes RASL en el orden de decodificación.
BLA sin imagen principal (BLA_N_LP): unidad NAL de una imagen BLA que no es seguida por la imagen principal en el orden de decodificación.
IDR con RADL (IDR_W_RADL): unidad NAL de una imagen IDR que puede ser seguida por una o más imágenes RADL pero no una imagen RASL en el orden de decodificación.
IDR sin imagen principal (IDR_N_LP): unidad NAL de una imagen IDR que no es seguida por una imagen principal en el orden de decodificación.
CRA: unidad NAL de una imagen de acceso aleatorio limpio (CRA) que puede ser seguida por imágenes principales (es decir, ya sea imágenes RASL o imágenes RADL o ambas).
RAd L: unidad NAL de una imagen RADL.
RASL: unidad NAL de una imagen RASL.
Para WC, el tipo de unidad NAL para imágenes IRAP 402 e imágenes principales 404 son de la siguiente manera: IDR con RADL (IDR_W_RADL): unidad NAL de una imagen IDR que puede ser seguida por una o más imágenes RADL pero no imagen RASL en el orden de decodificación.
IDR sin imagen principal (IDR_N_LP): unidad NAL de una imagen IDR que no es seguida por la imagen principal en el orden de decodificación.
CRA: unidad NAL de una imagen de acceso aleatorio limpio (CRA) que puede ser seguida por imágenes principales (es decir, ya sea imágenes RASL o imágenes RADL o ambas).
RADL unidad NAL de una imagen RADL.
RASL: unidad NAL de una imagen RASL.
La característica de remuestreo de imágenes de referencia (RPR) es la capacidad para cambiar la resolución espacial de imágenes codificadas en la parte media de un flujo de bits sin la necesidad de intracodificar la imagen en la ubicación de cambio de resolución. Para permitir esto, una imagen necesita poder hacer referencia a, para propósito de interpredicción, una o más imágenes de referencia para las cuales la resolución espacial es diferente de aquella de la imagen actual. En consecuencia, el remuestreo de dicha imagen de referencia, o parte de la misma, es necesario para codificar y decodificar la imagen actual. De ahí el nombre RPR. Esta característica también puede denominarse como cambio de resolución adaptable (ARC) u otros nombres. Hay casos de uso o escenarios de aplicación que se beneficiarían de la característica RPR, incluyendo lo siguiente.
La adaptación de tasa en videotelefonía y conferencia. Esto es para adaptar el vídeo codificado a las condiciones de red cambiantes. Cuando las condiciones de red empeoran de manera que el ancho de banda disponible disminuye, el codificador puede adaptarlo codificando imágenes de resolución inferior.
Cambio de altavoz activo en videoconferencia de múltiples partes. Para videoconferencia de múltiples partes, es común que el tamaño del vídeo para el altavoz activo sea más grande o largo que el tamaño de vídeo para el resto de los participantes de la conferencia. Cuando el altavoz activo cambia, la resolución de imagen para cada participante también puede requerir ajuste. La necesidad de tener características ARC se vuelve más importante cuando frecuentemente ocurre un cambio en el altavoz activo.
Inicio rápido en transmisión por secuencias. Para una solicitud de transmisión por secuencias, es común que la aplicación almacenará hasta una cierta longitud de imágenes decodificadas antes de iniciar la visualización de las imágenes. Iniciar el flujo de bits con una resolución más pequeña permitiría a la aplicación tener suficientes imágenes en la memoria tampón para iniciar la visualización más rápido.
Conmutación de flujo adaptable en transmisión por secuencias. La especificación de Transmisión por Secuencias Adaptable Dinámica sobre HTTP (DASH) incluye una característica denominada @mediaStreamStructureId. Esta característica permite la conmutación entre diferentes representaciones en puntos de acceso aleatorio GOP-abierto con imágenes principales no decodificables, por ejemplo, imágenes CRA con imágenes RASL asociadas en HEVC. Cuando dos representaciones diferentes del mismo vídeo tienen diferentes tasas de bit pero la misma resolución espacial mientras tienen el mismo valor de @mediaStreamStructureId, la conmutación entre las dos representaciones en una imagen CRA con imágenes RASL asociadas puede ejecutarse, y las imágenes RASL asociadas con la conmutación -en las imágenes CRA pueden ser decodificadas con calidad aceptable permitiendo así una conmutación continua. Con ARC, la característica @mediaStreamStructureId sería útil para conmutar entre representaciones DASH con diferentes resoluciones espaciales.
Varios métodos facilitan las técnicas básicas para soportar RPR / ARC tal como señalización de listas de resoluciones de imagen, algunas restricciones de remuestreo de imágenes de referencia en la DPB, etc. Además, durante la 14ava reunión JVET en Ginebra, hubo varias contribuciones sugiriendo restricciones que deben ser aplicadas a VVC para soportar RPR. Las restricciones sugeridas incluyen lo siguiente.
Algunas herramientas deben ser desactivadas para codificar bloques en la imagen actual cuando se refiere a imágenes de referencia que tienen una resolución diferente de la imagen actual. Las herramientas incluyen lo siguiente.
Predicción de vector de movimiento temporal (TMVP) y TMVP avanzada (ATMVP). Esto fue sugerido por JVET-N0118.
Refinamiento de vector de movimiento del lado del decodificador (DMVR). Esto fue sugerido por JVET-N0279. Flujo óptico bidireccional (BIO). Esto fue sugerido por JVET-N0279
La bipredicción de un bloque de una imagen de referencia con una resolución diferente a la imagen actual no está permitida. Esto fue sugerido por JVET-N0118.
Para compensación de movimiento, la filtración de muestras debe ser aplicada solamente una vez, es decir, si se requiere el remuestreo y la interpolación para obtener resolución pel más fina (por ejemplo, resolución de cuarto-pel), los dos filtros necesitan ser combinados y aplicados solo una vez. Esto fue sugerido por JVET-N0118.
La escalabilidad en la codificación de vídeo usualmente es soportada utilizando técnicas de codificación multicapa. Un flujo de bits multicapa comprende una capa base (BL) y una o más capas de mejoramiento (EL). Ejemplos de escalabilidades incluyen escalabilidad espacial, escalabilidad de calidad/señal-a-ruido (SNR), escalabilidad multivista, etc. Cuando se utiliza una técnica de codificación multicapa, una imagen o una parte de la misma puede ser codificada (1) sin utilizar una imagen de referencia, es decir, utilizando intrapredicción; (2) por referencia a imágenes de referencia que están en la misma capa, es decir, utilizando interpredicción; o (3) por referencia a imágenes de referencia que están en otras capas, es decir, utilizando predicción entre capas. Una imagen de referencia utilizada para predicción entre capas de la imagen actual es referida como una imagen de referencia entre capas (ILRP).
La Figura 5 ilustra un ejemplo de codificación multicapa para escalabilidad espacial 500. Las imágenes 502 en la Capa N tienen una resolución diferente (por ejemplo, una resolución inferior) a las imágenes 504 en la Capa N+1. En una modalidad, la Capa N es considerada como la capa base y la Capa N+1 es considerada como una capa de mejoramiento como se describió antes. Las imágenes 502 en la Capa N y las imágenes 504 en la Capa N+1 pueden ser codificadas utilizando interpredicción (como se muestra a través de la flecha sólida). Las imágenes 502 también pueden ser codificadas utilizando predicción entre capas (como se muestra a través de la flecha con guiones). En el contexto de RPR, una imagen de referencia puede ser remuestrada ya sea seleccionando una imagen de referencia de una capa inferior o utilizando predicción entre capas para generar una imagen de referencia de capa superior con base en una imagen de referencia de capa inferior.
Familias de codificación de vídeo H.26x previas han proporcionado apoyo para la escalabilidad en perfiles separados de los perfiles para codificación de capa sencilla. La codificación de vídeo escalable (SVC) es la extensión escalable del AVC/H.264 que proporciona soporte para escalabilidades espaciales, temporales y de calidad. Para SVC, un indicador es señalizado en cada macrobloque (MB) en imágenes EL para indicar si el EL MB es predicho mediante el uso del bloque colocado de una capa inferior. La predicción del bloque colocado puede incluir textura, vectores de movimiento, y/o modos de codificación. Implementaciones de SVC no pueden reutilizar directamente implementaciones H.264/AVC sin modificar en su diseño. El proceso de sintaxis de macrobloque y decodificación SVC EL difiere del proceso de sintaxis y decodificación H.264/AVC.
HEVC escalable (SHVC) es la extensión de la norma HEVC/H.265 que proporciona soporte para escalabilidades espacial y temporal, HEVC multivista (MV-HEVC) es la extensión de la norma HEVC/H.265 que proporciona soporte para escalabilidad multivista, y 3D HEVC (3D-HEVC) es la extensión de la norma HEVC/H.264 que proporciona soporte para codificación de vídeo tridimensional (3D) que es más avanzada y más eficiente que MVHEVC. Observar que la escalabilidad temporal es incluida como una parte integral del códec HEVC de capa sencilla. El diseño de la extensión multicapa de HEVC emplea la idea donde las imágenes decodificadas utilizadas para predicción entre capas surgen solamente de la misma unidad de acceso (AU) y son tratadas como imágenes de referencia de largo plazo (LTRP), y tienen asignados índices de referencia en las listas de imagen de referencia junto con otras imágenes de referencia temporales en la capa actual. La predicción entre capas (ILP) se logra al nivel de unidad de predicción (PU) estableciendo el valor del índice de referencia para hacer referencia a las imágenes de referencia entre capas en las listas de imagen de referencia.
Notablemente, ambas características de remuestreo de imágenes de referencia y escalabilidad espacial requieren el remuestreo de una imagen de referencia o parte de la misma. El remuestreo de imágenes de referencia se puede obtener ya sea al nivel de imagen o al nivel de bloque de codificación. Sin embargo, cuando RPR es denominado como una característica de codificación, esta es una característica para codificación de capa sencilla. Aun así, es posible o incluso preferible desde el punto de vista de un diseño de códec utilizar el mismo filtro de remuestreo para la característica RPR de la codificación de capa sencilla y la característica de escalabilidad espacial para codificación multicapa.
JVET-N0279 sugirió desactivar BIO para RPR. De manera más precisa, sugirió desactivar el uso de BIO (también conocido como BDOF) para toda la secuencia de vídeo codificado (CVS) cuando RPR se activa. Se observa que
incluso cuando la característica RPR está activada, la imagen actual no se refiere a una imagen de referencia con una resolución diferente en muchos casos. Por lo tanto, desactivar BIO durante toda la CVS restringe innecesariamente y puede dañar la eficiencia de la codificación.
En la presente descripción se divulgan técnicas que permiten que BDOF se desactive selectivamente cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que desactivar el BDOF durante toda la CVS cuando RPR se activa. Al tener la capacidad para desactivar selectivamente el BDOF de esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, el uso del procesador, la memoria, y/o recursos de red se puede reducir en el codificador y el decodificador. Por lo tanto, el codificador/decodificador (también conocido como, “códec”) en la codificación de vídeo se mejora con relación a códecs actuales. Como un asunto práctico, el proceso de codificación de vídeo mejorado ofrece al usuario una mejor experiencia de usuario cuando los vídeos son enviados, recibidos y/o vistos.
La Figura 6 es un diagrama esquemático que ilustra un ejemplo de interpredicción unidireccional 600. La interpredicción unidireccional 600 puede ser empleada para determinar vectores de movimiento para bloques codificados y/o decodificados creados cuando se particiona una imagen.
La interpredicción unidireccional 600 emplea una trama de referencia 630 con un bloque de referencia 631 para predecir un bloque actual 611 en una trama actual 610. La trama de referencia 630 puede ser temporalmente colocada después de la trama actual 610 como se muestra (por ejemplo, como una trama de referencia posterior), pero también puede ser temporalmente colocada antes que la trama actual 610 (por ejemplo, como una trama de referencia anterior) en algunos ejemplos. La trama actual 610 es un ejemplo de trama/imagen que está siendo codificada/decodificada en un tiempo particular. La trama actual 610 contiene un objeto en el bloque actual 611 que empata un objeto en el bloque de referencia 631 de la trama de referencia 630. La trama de referencia 630 es una trama que es empleado como una referencia para codificar una trama actual 610, y un bloque de referencia 631 es un bloque en la trama de referencia 630 que contiene un objeto también contenido en el bloque actual 611 de la trama actual 610.
El bloque actual 611 es cualquier unidad de codificación que esté siendo codificada/decodificada en un punto especificado en el proceso de codificación. El bloque actual 611 puede ser un bloque particionado completo, o puede ser un subbloque cuando se emplea modo de interpredicción afín. La trama actual 610 está separada de la trama de referencia 630 por cierta distancia temporal (TD) 633. La TD 633 indica una cantidad de tiempo entre la trama actual 610 y la trama de referencia 630 en una secuencia de vídeo, y puede ser medida en unidades de tramas. La información de predicción para el bloque actual 611 puede hacer referencia a la trama de referencia 630 y/o bloque de referencia 631 por un índice de referencia que indica la dirección y distancia temporal entre las tramas. Durante el periodo representado por la TD 633, el objeto en el bloque actual 611 se mueve desde una posición en la trama actual 610 a otra posición en la trama de referencia 630 (por ejemplo, la posición del bloque de referencia 631). Por ejemplo, el objeto se puede mover a lo largo de una trayectoria de movimiento 613, la cual es una dirección de movimiento de un objeto con el paso del tiempo. Un vector de movimiento 635 describe la dirección y magnitud del movimiento del objeto a lo largo de la trayectoria de movimiento 613 durante la TD 633. Por consiguiente, un vector de movimiento codificado 635, un bloque de referencia 631, y un residual incluyendo la diferencia entre el bloque actual 611 y el bloque de referencia 631 proporcionan suficiente información para reconstruir un bloque actual 611 y colocar el bloque actual 611 en la trama actual 610.
La Figura 7 es un diagrama esquemático que ilustra un ejemplo de interpredicción bidireccional 700. La interpredicción bidireccional 700 puede emplearse para determinar vectores de movimiento para bloques codificados y/o decodificados creados cuando se particiona una imagen.
La interpredicción bidireccional 700 es similar a la interpredicción unidireccional 600, pero emplea un par de tramas de referencia para predecir un bloque actual 711 en una trama actual 710. Por lo tanto, la trama actual 710 y el bloque actual 711 son sustancialmente similares a la trama actual 610 y el bloque actual 611, respectivamente. La trama actual 710 está temporalmente colocada entre una trama de referencia anterior 720, lo cual ocurre antes que la trama actual 710 en la secuencia de vídeo, y una trama de referencia posterior 730, lo cual ocurre después de la trama actual 710 en la secuencia de vídeo. La trama de referencia anterior 720 y la trama de referencia posterior 730 de otra manera son sustancialmente similares a la trama de referencia 630.
El bloque actual 711 es emparejado con un bloque de referencia anterior 721 en la trama de referencia anterior 720 y con un bloque de referencia posterior 731 en la trama de referencia posterior 730. Dicho emparejamiento indica que, en el transcurso de la secuencia de vídeo, un objeto se mueve desde una posición en el bloque de referencia anterior 721 a una posición en el bloque de referencia posterior 731 a lo largo de una trayectoria de movimiento 713 y a través del bloque actual 711. La trama actual 710 está separada de la trama de referencia anterior 720 por cierta distancia temporal anterior (TD0) 723 y está separada de la trama de referencia posterior 730 por cierta distancia temporal posterior (TD1) 733. La TD0723 indica una cantidad de tiempo entre la trama de referencia anterior 720 y la trama actual 710 en la secuencia de vídeo en unidades de tramas. La TD1 733 indica una cantidad de tiempo entre la trama actual 710 y la trama de referencia posterior 730 en la secuencia de vídeo en unidades de trama. Por lo tanto, el objeto se mueve del bloque de referencia anterior 721 al bloque actual 711 a lo largo de la trayectoria de
movimiento 713 durante un periodo indicado por TD0723. El objeto también se mueve desde el bloque actual 711 al bloque de referencia posterior 731 a lo largo de la trayectoria de movimiento 713 durante un periodo de tiempo indicado por TD1 733. La información de predicción para el bloque actual 711 puede hacer referencia a la trama de referencia anterior 720 y/o bloque de referencia anterior 721 y la trama de referencia posterior 730 y/o bloque de referencia posterior 731 por un par de índices de referencia indicando la dirección y distancia temporal entre las tramas.
Un vector de movimiento anterior (MV0) 725 describe la dirección y magnitud del movimiento del objeto a lo largo de la trayectoria de movimiento 713 sobre la TD0723 (por ejemplo, entre la trama de referencia anterior 720 y la trama actual 710). Un vector de movimiento posterior (MV1) 735 describe la dirección y magnitud del movimiento del objeto a lo largo de la trayectoria de movimiento 713 sobre la TD1 733 (por ejemplo, entre la trama actual 710 y la trama de referencia posterior 730). Como tal, en interpredicción bidireccional 700, el bloque actual 711 puede ser codificado y reconstruido empleando el bloque de referencia anterior 721 y/o el bloque de referencia posterior 731, MV0 725, y MV1 735.
En una modalidad, la interpredicción y/o interpredicción bidireccional puede ser llevada a cabo sobre una base muestra por muestra (por ejemplo, píxel por píxel) en lugar de una base bloque por bloque. Es decir, un vector de movimiento que apunta a cada muestra en el bloque de referencia anterior 721 y/o el bloque de referencia posterior 731 puede determinarse para cada muestra en el bloque actual 711. En dichas modalidades, el vector de movimiento 725 y el vector de movimiento 735 mostrados en la Figura 7 representan una pluralidad de vectores de movimiento correspondientes a la pluralidad de muestras en el bloque actual 711, el bloque de referencia anterior 711, y el bloque de referencia posterior 731.
En ambos, el modo de fusión y el modo de predicción de vector de movimiento avanzado (AMVP), una lista de candidatos se genera agregando vectores de movimiento candidatos a una lista de candidatos en un orden definido por un patrón de determinación de lista de candidatos. Dichos vectores de movimiento candidatos pueden incluir vectores de movimiento de acuerdo con interpredicción unidireccional 600, interpredicción bidireccional 700, o combinaciones de los mismos. De manera específica, vectores de movimiento se generan para bloques vecinos cuando dichos bloques son codificados. Dichos vectores de movimiento son agregados a una lista de candidatos para el bloque actual, y el vector de movimiento para el bloque actual es seleccionado de la lista de candidatos. El vector de movimiento entonces puede ser señalizado como el índice del vector de movimiento seleccionado en la lista de candidatos. El decodificador puede construir la lista de candidatos mediante el uso del mismo proceso que el codificador, y puede determinar el vector de movimiento seleccionado de la lista de candidatos con base en el índice señalizado. Por lo tanto, los vectores de movimiento candidatos incluyen vectores de movimiento generados de acuerdo con interpredicción unidireccional 600 y/o interpredicción bidireccional 700, dependiendo de cuál enfoque se utiliza cuando dichos bloques vecinos son codificados.
La Figura 8 ilustra un flujo de bits de vídeo 800. Como se usa en la presente descripción, el flujo de bits de vídeo 800 también puede denominarse como un flujo de bits de vídeo codificado, un flujo de bits o variaciones de los mismos. Tal como se muestra en la Figura 8, el flujo de bits 800 comprende un conjunto de parámetros de secuencia (SPS) 802, un conjunto de parámetros de imagen (PPS) 804, una cabecera de porción 806, y datos de imagen 808.
El SPS 802 contiene datos que son comunes a todas las imágenes en una secuencia de imágenes (SOP). Por el contrario, el PPS 804 contiene datos que son comunes a la imagen completa. La cabecera de porción 806 contiene información referente a la porción actual tal como, por ejemplo, el tipo de porción, cuál de las imágenes de referencia será utilizada, y así sucesivamente. El SPS 802 y el PPS 804 de manera genérica pueden denominarse como un conjunto de parámetros. El SPS 802, el PPS 804, y la cabecera de porción 806 son tipos de unidades de Capa de Abstracción de Red (NAL). Una unidad NAL es una estructura de sintaxis que contiene una indicación del tipo de datos a seguir (por ejemplo, datos de vídeo codificados). Las unidades NAL son clasificadas en unidades de capa de codificación de vídeo (VCL) y NAL no-VCL. Las unidades NAL VCL contienen los datos que representan los valores de las muestras en las imágenes de vídeo, y las unidades NAL no-VCL contienen cualquier información adicional asociada tal como conjuntos de parámetros (datos de cabecera importantes pueden aplicar a un número grande de unidades NAL VCL) e información de mejora complementaria (información de temporización y otros datos complementarios que pueden mejorar la capacidad de uso de la señal de vídeo decodificada pero que no son necesarios para decodificar los valores de las muestras en las imágenes de vídeo). Los expertos en la técnica apreciarán que el flujo de bits 550 puede contener otros parámetros e información en aplicaciones prácticas.
Los datos de imagen 808 de la Figura 8 comprenden datos asociados con las imágenes o vídeo que está siendo codificado o decodificado. Los datos de imagen 808 simplemente pueden denominarse como la carga útil o datos que están siendo llevados en el flujo de bits 800. En una modalidad, los datos de imagen 808 comprenden la CVS 814 (o CLVS) conteniendo una pluralidad de imágenes 810. La CVS 814 es una secuencia de vídeo codificado para cada secuencia de vídeo de capa codificada (CLVS) en el flujo de bits de vídeo 800. Notablemente, la CVS y la CLVS son las mismas cuando el flujo de bits de vídeo 800 incluye una sola capa. La CVS y la CLVS son solamente diferentes cuando el flujo de bits de vídeo 800 incluye múltiples capas.
Tal como se muestra en la Figura 8, una porción de cada imagen 810 puede estar contenida dentro de su propia
unidad NAL VCL 812. El conjunto de unidades NAL VCL 812 en la CVS 814 puede denominarse como una unidad de acceso.
La Figura 9 ilustra una técnica de particionado 900 para una imagen 910. La imagen 910 puede ser similar a cualquiera de las imágenes 810 en la Figura 8. Como se muestra, la imagen 910 puede particionarse en una pluralidad de porciones 912. Una porción es una región espacialmente distinta de una trama (por ejemplo, una imagen) que es codificada por separado de cualquier otra región en la misma trama. Aunque en la Figura 9 se muestran tres porciones 912, se puede utilizar una cantidad mayor o menor de porciones en aplicaciones prácticas. Cada porción 912 puede ser particionarse en una pluralidad de bloques 914. Los bloques 914 en la Figura 9 pueden ser similares al bloque actual 711, el bloque de referencia anterior 711, y el bloque de referencia posterior 731 en la Figura 7. El bloque 914 puede representar una CU. Aunque en la Figura 9 se muestran cuatro bloques 914, se puede utilizar una cantidad mayor o menor de bloques en aplicaciones prácticas.
Cada bloque 914 puede particionarse en una pluralidad de muestras 916 (por ejemplo, píxeles). En una modalidad, el tamaño de cada bloque 914 es medido en muestras de luminancia. Aunque en la Figura 9 se muestran dieciséis muestras 916, se puede utilizar una cantidad mayor o menor de bloques en aplicaciones prácticas.
La Figura 10 es una modalidad de un método 1000 de decodificación de un flujo de bits de vídeo codificado implementado por un decodificador de vídeo (por ejemplo, decodificador de vídeo 30). El método 1000 puede ser realizarse después que el flujo de bits decodificado ha sido directamente o indirectamente recibido desde un codificador de vídeo (por ejemplo, codificador de vídeo 20). El método 1000 mejora el proceso de decodificación permitiendo que el BDOF se desactive selectivamente cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que desactivar el BDOF durante toda la CVS cuando RPR se activa. Al tener la capacidad para desactivar selectivamente el BDOF de esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, como un asunto práctico, el rendimiento de un códec se mejora, lo cual conduce a una mejor experiencia de usuario.
En el bloque 1002, el decodificador de vídeo determina si una resolución de una imagen actual que está siendo decodificada es la misma que la resolución de imágenes de referencia identificada por una lista de imágenes de referencia. En una modalidad, el decodificador de vídeo recibe un flujo de bits de vídeo codificado (por ejemplo, el flujo de bits 800). El flujo de bits de vídeo codificado contiene listas de imágenes de referencia, indica una resolución de una imagen actual, e indica un modo de interpredicción bidireccional. En una modalidad, una estructura de lista de imágenes de referencia contiene las listas de imágenes de referencia. En una modalidad, las listas de imágenes de referencia son utilizadas para interpredicción bidireccional. En una modalidad, la resolución de la imagen actual está colocada en un conjunto de parámetros del flujo de bits de vídeo codificado. En una modalidad, la resolución de las imágenes de referencia se deriva con base en la imagen actual, inferida con base en la resolución de la imagen actual, analizada a partir del flujo de bits, o de otra manera obtenida. En una modalidad, las imágenes de referencia para la imagen actual son generadas con base en las listas de imágenes de referencia de acuerdo con un modo de interpredicción bidireccional.
En el bloque 1004, el decodificador de vídeo activa BDOF para un bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es la misma que la resolución de cada una de las imágenes de referencia. En una modalidad, el decodificador de vídeo activa el BDOF estableciendo un indicador de BDOF a un primer valor (por ejemplo, verdadero, uno, etc.). En una modalidad, BDOF es un proceso opcional incluso cuando BDOF se activa. Es decir, BDOF no necesita ejecutarse incluso cuando BDOF se activa.
En el bloque 1006, el decodificador de vídeo desactiva el BDOF para el bloque actual de la imagen actual cuando la resolución de la imagen actual es diferente de la resolución de cualquiera de las imágenes de referencia. En una modalidad, el decodificador de vídeo desactiva el BDOF estableciendo el indicador de BDOF a un segundo valor (por ejemplo, falso, cero).
En el bloque 1008, el decodificador de vídeo refina vectores de movimiento correspondientes al bloque actual cuando el indicador de BDOF se establece al primer valor. En una modalidad, el método 1000 además comprende activar e desactivar selectivamente el BDOF para otros bloques en la imagen actual dependiendo de si la resolución de la imagen actual es diferente de o la misma que la resolución de las imágenes de referencia.
En una modalidad, el método además comprende activar el remuestreo de imágenes de referencia (RPR) para toda una secuencia de vídeo codificada (CVS) que contiene la imagen actual incluso cuando el BDOF está desactivado. En una modalidad, el bloque actual se obtiene de una porción de la imagen actual. En una modalidad, la imagen actual comprende una pluralidad de porciones, y en donde el bloque actual se obtiene de una porción de la pluralidad de porciones.
En una modalidad, una imagen generada con base en la imagen actual se visualiza para un usuario de un dispositivo electrónico (por ejemplo, un teléfono inteligente, tableta, dispositivo portátil, ordenador personal, etc.).
La Figura 11 es una modalidad de un método 1100 de codificación de un flujo de bits de vídeo implementado por un codificador de vídeo (por ejemplo, codificador de vídeo 20). El método 900 puede ejecutarse cuando una imagen (por ejemplo, de un vídeo) va a ser codificada en un flujo de bits de vídeo y después transmitida a un decodificador de vídeo (por ejemplo, decodificador de vídeo 30). El método 1100 mejora el proceso de codificación permitiendo que BDOF se desactive selectivamente cuando la resolución espacial de una imagen actual es diferente de la resolución espacial de imágenes de referencia en lugar de tener que desactivar el BDOF durante toda la CVS cuando RPR se activa. Al tener la capacidad para desactivar selectivamente el BDOF de esta manera, se puede mejorar la eficiencia de la codificación. Por lo tanto, como un asunto práctico, el rendimiento de un códec se mejora, lo cual conduce a una mejor experiencia de usuario.
En el bloque 1102, el codificador de vídeo determina si una resolución de una imagen actual que está siendo codificada es la misma que la resolución de imágenes de referencia identificada por una lista de imágenes de referencia. En una modalidad, una estructura de lista de imágenes de referencia contiene las listas de imágenes de referencia. En una modalidad, las listas de imágenes de referencia son utilizadas para interpredicción bidireccional. En una modalidad, la resolución de la imagen actual es codificada en un conjunto de parámetros de un flujo de bits de vídeo. En una modalidad, las imágenes de referencia para la imagen actual son generadas con base en las listas de imágenes de referencia de acuerdo con un modo de interpredicción bidireccional.
En el bloque 1104, el codificador de vídeo activa BDOF para un bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es la misma que la resolución de cada una de las imágenes de referencia. En una modalidad, el codificador de vídeo activa el BDOF estableciendo un indicador de BDOF a un primer valor (por ejemplo, verdadero, uno, etc.). En una modalidad, BDOF es un proceso opcional incluso cuando BDOF se activa. Es decir, BDOF no necesita ejecutarse incluso cuando BDOF se activa.
En una modalidad, el método incluye determinar vectores de movimiento para la imagen actual con base en las imágenes de referencia, codificar la imagen actual con base en los vectores de movimiento, y decodificar la imagen actual utilizando un decodificador de referencia hipotético (HRD).
En el bloque 1106, el codificador de vídeo desactiva el BDOF para el bloque actual de la imagen actual cuando la resolución de la imagen actual es diferente de la resolución de cualquiera de las imágenes de referencia. En una modalidad, el codificador de vídeo desactiva el BDOF estableciendo el indicador de BDOF a un segundo valor (por ejemplo, falso, cero).
En el bloque 1108, el codificador de vídeo refina vectores de movimiento correspondientes al bloque actual cuando el indicador de BDOF se establece al primer valor. En una modalidad, el método 1100 además comprende activar e desactivar selectivamente el BDOF para otros bloques en la imagen actual dependiendo de si la resolución de la imagen actual es diferente de o la misma que la resolución de las imágenes de referencia.
En una modalidad, el método además comprende activar el remuestreo de imágenes de referencia (RPR) para toda la secuencia de vídeo codificada (CVS) que contiene la imagen actual incluso cuando el BDOF está desactivado. En una modalidad, el bloque actual se obtiene de una porción de la imagen actual. En una modalidad, la imagen actual comprende una pluralidad de porciones, y en donde el bloque actual se obtiene de una porción de la pluralidad de porciones.
En una modalidad, el codificador de vídeo genera un flujo de bits de vídeo que contiene el bloque actual y transmite el flujo de bits de vídeo hacia un decodificador de vídeo. En una modalidad, el codificador de vídeo almacena el flujo de bits de vídeo para transmisión al decodificador de vídeo.
En una modalidad, se divulga un método para decodificar un flujo de bits de vídeo. El flujo de bits de vídeo comprende al menos una imagen. Cada imagen comprende una pluralidad de porciones. Cada porción de la pluralidad de porciones comprende una pluralidad de bloques de codificación y una pluralidad de listas de imágenes de referencia. Cada lista de imágenes de referencia de la pluralidad de listas de imágenes de referencia comprende una pluralidad de imágenes de referencia que pueden utilizarse para interpredicción de los bloques de codificación en la porción.
El método incluye analizar un conjunto de parámetros para obtener la información de resolución de una imagen actual; obtener dos listas de imágenes de referencia de la porción actual en la imagen actual; determinar una imagen de referencia para decodificar el bloque de codificación actual en la porción actual; determinar la resolución de la imagen de referencia; decidir si el flujo óptico bidireccional (BIO) se utiliza o activado para decodificar el bloque de codificación actual con base en las resoluciones de la imagen actual y la imagen de referencia; y decodificar el bloque de codificación actual.
En una modalidad, el método incluye que el BIO no sea utilizado o está desactivado para decodificar el bloque de codificación actual cuando las resoluciones de la imagen actual y la imagen de referencia son diferentes.
En una modalidad, se divulga un método para decodificar un flujo de bits de vídeo. El flujo de bits de vídeo comprende al menos una imagen. Cada imagen comprende una pluralidad de porciones. Cada porción de la pluralidad de porciones está asociada con una cabecera que contiene una pluralidad de elementos de sintaxis. Cada porción de la pluralidad de porciones comprende una pluralidad de bloques de codificación y una pluralidad de listas de imágenes de referencia. Cada lista de imágenes de referencia de la pluralidad de listas de imágenes de referencia comprende una pluralidad de imágenes de referencia que puede utilizarse para interpredicción de los bloques de codificación en la porción actual.
El método incluye analizar un conjunto de parámetros para obtener un indicador que especifique si la herramienta/técnica de codificación de flujo óptico bidireccional (BIO) puede utilizarse para decodificar imágenes en la secuencia de vídeo codificado actual; obtener la porción actual en la imagen actual; cuando el valor del indicador que especifica si la herramienta/técnica de codificación de flujo óptico bidireccional (BIO) puede utilizarse para decodificar imágenes en la secuencia de vídeo codificado actual especifica que BIO puede utilizarse, analizar la cabecera de porción asociada con la porción actual para obtener un indicador que especifica si la herramienta de codificación BIO puede utilizarse para decodificar bloques de codificación en la porción actual.
En una modalidad, la herramienta de codificación BIO no es utilizada o está desactivado para decodificar el bloque de codificación actual cuando el valor del indicador que especifica si la herramienta de codificación BIO puede utilizarse para decodificar bloques de codificación en la porción actual especifica que la herramienta de codificación no puede utilizarse para la decodificación de la porción actual.
En una modalidad, cuando no está presente, el valor del indicador que especifica si la herramienta de codificación BIO puede utilizarse para decodificar bloques de codificación en la porción actual es inferido que es el mismo que el valor del indicador que especifica si la herramienta/técnica de codificación de flujo óptico bidireccional (BIO) puede utilizarse para decodificar imágenes en la secuencia de vídeo codificado actual.
En una modalidad, se divulga un método para codificar un flujo de bits de vídeo. El flujo de bits de vídeo comprende al menos una imagen. Cada imagen comprende una pluralidad de porciones. Cada porción de la pluralidad de porciones está asociada con una cabecera que contiene una pluralidad de elementos de sintaxis. Cada porción de la pluralidad de porciones comprende una pluralidad de bloques de codificación y una pluralidad de listas de imágenes de referencia. Cada lista de imágenes de referencia de la pluralidad de listas de imágenes de referencia comprende una pluralidad de imágenes de referencia que puede utilizarse para inferir la predicción de los bloques de codificación en la porción actual.
El método incluye determinar si una herramienta/técnica de codificación de flujo óptico bidireccional (BIO) puede utilizarse para codificar imágenes en la secuencia de vídeo codificado actual; analizar un conjunto de parámetros para obtener la información de resolución de cada flujo de bits de imagen; obtener dos listas de imágenes de referencia de la porción actual en la imagen actual; analizar las listas de imágenes de referencia de la porción actual para obtener imágenes de referencia activas que pueden utilizarse para decodificar bloques de codificación de la porción actual; restringir que la herramienta de codificación BIO no puede utilizarse para codificar bloques de codificación en la porción actual si se satisface al menos una de las siguientes condiciones: la herramienta de codificación BIO no puede utilizarse para codificar imágenes en la secuencia de vídeo codificado actual, y resoluciones de la imagen actual y al menos una de la imagen de referencia son diferentes.
En una modalidad, se divulga un método para decodificar un flujo de bits de vídeo. El flujo de bits comprende al menos una imagen. Cada imagen comprende una pluralidad de porciones. Cada porción de la pluralidad de porciones está asociada con una cabecera que contiene una pluralidad de elementos de sintaxis. Cada porción de la pluralidad de porciones comprende una pluralidad de bloques de codificación y una pluralidad de listas de imágenes de referencia. Cada lista de imágenes de referencia de la pluralidad de listas de imágenes de referencia comprende una pluralidad de imágenes de referencia que puede utilizarse para interpredicción de los bloques de codificación en la porción actual.
El método incluye analizar un conjunto de parámetros para obtener un indicador que especifica si la herramienta/técnica de codificación de flujo óptico bidireccional (BIO) puede utilizarse para decodificar imágenes en la secuencia de vídeo codificado actual; y analizar un conjunto de parámetros para obtener un indicador que especifica si la herramienta/técnica de codificación de flujo óptico bidireccional (BIO) puede utilizarse para decodificar imágenes que se refieren al conjunto de parámetros en donde el conjunto de parámetros es el Conjunto de Parámetros de Imagen (PPS).
En una modalidad, la herramienta de codificación BIO no es utilizada o está desactivada para decodificar el bloque de codificación actual cuando el valor del indicador que especifica si la herramienta de codificación BIO puede utilizarse para decodificar imágenes que se refieren al PPS especifica que la herramienta de codificación no puede utilizarse.
En una modalidad, se divulga un método para codificar un flujo de bits de vídeo. El flujo de bits de vídeo comprende al menos una imagen. Cada imagen comprende una pluralidad de porciones. Cada porción de la pluralidad de
porciones está asociada con una cabecera que contiene una pluralidad de elementos de sintaxis. Cada porción de la pluralidad de porciones comprende una pluralidad de bloques de codificación y una pluralidad de listas de imágenes de referencia. Cada lista de imágenes de referencia de la pluralidad de listas de imágenes de referencia comprende una pluralidad de imágenes de referencia que puede utilizarse para interpredicción de los bloques de codificación en la porción actual.
En una modalidad, el método incluye determinar si la herramienta/técnica de codificación de flujo óptico bidireccional (BIO) puede utilizarse para codificar imágenes en la secuencia de vídeo codificado actual; determinar si la herramienta/técnica de codificación de flujo óptico bidireccional (BIO) puede utilizarse para codificar imágenes en referencia al PPS actual; y restringir que la herramienta de codificación BIO no pueda utilizarse para codificar imágenes en referencia al PPS actual cuando la herramienta de codificación BIO no puede utilizarse para codificar imágenes en la secuencia codificada actual.
Se puede emplear la siguiente sintaxis y semántica para implementar las modalidades divulgadas en la presente descripción. La siguiente descripción es con relación al texto base, la cual es la última especificación del borrador VVC. En otras palabras, solamente se describe delta, mientras que el texto en el texto base que no se menciona a continuación aplica como está. Texto añadido con relación al texto base se muestra en negrita, y texto eliminado se muestra en itálicas.
Actualizar la el proceso de construcción de la lista de imágenes de referencia de la siguiente manera.
Las listas de imágenes de referencia RefPicList[ 0 ] y RefPicList[ 1 ] se construyen de la siguiente manera:
for(i = 0; i < 2; i++ ) {
for(j = 0, k = 0, pocBase = PicOrderCntVal; j < num_ref_entries[ i ][ RμlsIdx[ i ] ]; j++) {
if(st_ref_pic_flag[ i ][ RμlsIdx[ i ] ][ j ] ) {
RefPicPocList[ i ][ j ] = pocBase - DeltaPocSt[ i ][ RμlsIdx[ i ] ][j ]
if(hay una imagen de referencia picA en la d Pb con PicOrderCntVal igual a RefPicPocList[ i ][j ] ) RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "no hay imagen de referencia" (8-5)
pocBase = RefPicPocList[ i ][ j ]
} else {
if(!delta_poc_msb_cycle_lt[ i ][ k ]) {
if(hay una picA de referencia en la DPB con PicOrderCntVal & (MaxPicOrderCntLsb - 1 )
igual a PocLsbLt[ i ][ k ] )
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "no hay imagen de referencia"
} else{
if(hay una picA de referencia en la DPB con PicOrderCntVal igual a
FullPocLt[ i ][ RμlsIdx[ i ] ][ k] )
RefPicList[ i ][ j ] = picA
else
RefPicList[ i ][ j ] = "no hay imagen de referencia"
}
k++
}
if(los valores de PicWidthInSamplesY de RefPicList[ i ][ j ] y la imagen actual son los mismos
Y
los valores de PicHeightInSamplesY de RefPicList[ i ][ j ] y la imagen actual son los mismos) RefPicSameSizeFlag[ i ][ j ] = 1
else
RefPicSameSizeFlag[ i ][ j ] = 0
}
}
Derivación del indicador que determina si BIO se utiliza o no.
Asumir que predSamplesL0i_, predSamplesL1i_ y predSamplesIntraL sean arreglos (cbWidth)x(cbHeight) de valores de muestra de luminancia predichos y, predSamplesL0o b , predSamplesL1o b , predSamplesL0o r y predSamplesL1o r, predSamplesIntraob, y predSamplesIntrao r sean arreglos (cbWidth / 2)x(cbHeight / 2) de valores de muestra de crominancia predichos.
- La variable currPic especifica la imagen actual y la variable bdofFlag se deriva de la siguiente manera:
- Si todas las siguientes condiciones son verdaderas, bdofFlag se establece igual a VERDADERO.
- sps_bdof_enabled_flag es igual a 1.
- predFlagL0[ xSbIdx ][ ySbIdx ] y predFlagL1[ xSbIdx ][ ySbIdx ] son ambos iguales a 1.
- DiffPicOrderCnt(currPic, RefPicList[ 0 ][ refldxLO ] ) * DiffPicOrderCnt(currPic, RefPicList[ 1 ][ refldxLI ] ) es menor que 0.
- MotionModelIdc[ xCb ][ yCb ] es igual a 0.
- merge_subblock_flag[ xCb ][ yCb ] es igual a 0.
- BcwIdx[ xCb ][ yCb ] es igual a 0.
- luma_weight_10 _flag[ refIdxL0 ] y luma_weight_11 _flag[ refIdxL1 ] son ambos iguales a 0.
- cbHeight es mayor que o igual a 8
- cIdx es igual a 0.
- RefPicSameSizeFlag[ 0 ][ refIdxL0 ] es igual a 1
- RefPicSameSizeFlag[ 1 ][ refIdxL1 ] es igual a 1.
- De otra manera, bdofFlag se establece igual a FALSO.
Sintaxis y semántica de Conjunto de Parámetros de Secuencia.
____________________________
sps_bdof_enabled_flag igual a 0 especifica que la interpredicción de flujo óptico bidireccional está desactivada. sps_bdof_enabled_flag igual a 1 especifica que la interpredicción de flujo óptico bidireccional está activada.
Sintaxis y semántica de cabecera de porción.
____________________________
slice_bdof_enabled flag igual a 0 especifica que la interpredicción de flujo óptico bidireccional está desactivada para la porción actual. slice_bdof_enabled flag igual a 1 especifica que la interpredicción de flujo óptico bidireccional está activada para la porción actual. Cuando no está presente, el valor de slice_bdof_enabled flag es inferido como igual a sps_bdof_enabled_flag.
Derivación del indicador que determina si BIO se utiliza o no.
Asumir que predSamplesL0L, predSamplesL1L y predSamplesIntraL son arreglos (cbWidth)x(cbHeight) de valores de muestra de luminancia predichos y, predSamplesL0Cb, predSamplesL1Cb, predSamplesL0Cr y predSamplesL1Cr, predSamplesIntraCb, y predSamplesIntraCr son arreglos (cbWidth / 2)x(cbHeight / 2) de valores de muestra de crominancia predichos.
- La variable currPic especifica la imagen actual y la variable bdofFlag se deriva de la siguiente manera:
- Si todas las siguientes condiciones son verdaderas, bdofFlag se establece igual a VERDADERO.
- sps_bdof_enabled_flag es igual a 1.
- slice_bdof_enabled flag es igual a 1.
- predFlagL0[ xSbIdx ][ ySbIdx ] y predFlagL1[ xSbIdx ][ ySbIdx ] son ambos iguales a 1.
- DiffPicOrderCnt(currPic, RefPicList[ 0 ][ refIdxL0 ] ) * DiffPicOrderCnt(currPic, RefPicList[ 1 ][ refIdxL1 ] ) es menor que 0.
- MotionModelIdc[ xCb ][ yCb ] es igual a 0.
- merge_subblock_flag[ xCb ][ yCb ] es igual a 0.
- BcwIdx[ xCb ][ yCb ] es igual a 0.
- luma_weight_10 _flag[ refIdxL0 ] y luma_weight_11 _flag[ refIdxL1 ] son ambos iguales a 0.
- cbHeight es mayor que o igual a 8
- cIdx es igual a 0.
- De otra manera, bdofFlag se establece igual a FALSO.
- Sintaxis y semántica de Conjunto de Parámetros de Secuencia.
_____________________________
sps_bdof_enabled_flag igual a 0 especifica que la interpredicción de flujo óptico bidireccional está desactivado. sps_bdof_enabled_flag igual a 1 especifica que la interpredicción de flujo óptico bidireccional se activa.
Sintaxis y semántica de Conjunto de Parámetros de Imagen.
_______________________________
pps_bdof_enabled_flag igual a 0 especifica que la interpredicción de flujo óptico bidireccional está desactivada para imágenes que se refieren al PPS. pps_bdof_enabled_flag igual a 1 especifica que la interpredicción de flujo óptico bidireccional está activada para las imágenes que se refieren al PPS.
Un requerimiento de la conformación de flujo de bits es que el valor de pps_bdof_enabled_flag debe ser igual a 0 cuando el valor de sps_bdof_enabled_flag es igual a 0.
Derivación del indicador que determina si BIO se utiliza o no.
Asumir que predSamplesL0i_, predSamplesL1L y predSamplesIntraL son arreglos (cbWidth)x(cbHeight) de valores de muestra de luminancia predichos y, predSamplesL0o b , predSamplesL1o b , predSamplesL0o r y predSamplesL1o r, predSamplesIntraob, y predSamplesIntrao r son arreglos (cbWidth / 2)x(cbHeight / 2) de valores de muestra de crominancia predichos.
- La variable currPic especifica la imagen actual y la variable bdofFlag se deriva de la siguiente manera:
- Si todas las siguientes condiciones son verdaderas, bdofFlag se establece igual a VERDADERO.
- sps_bdof_enabled_flag es igual a 1.
- pps_bdof_enabled_flag es igual a 1.
- predFlagL0[ xSbIdx ][ ySbIdx ] y predFlagL1[ xSbIdx ][ ySbIdx ] son ambos iguales a 1.
- DiffPicOrderCnt(currPic, RefPicList[ 0 ][ refIdxL0 ] ) * DiffPicOrderCnt(currPic, RefPicList[ 1 ][ refIdxL1 ] ) es menor que 0.
- MotionModelIdc[ xCb ][ yCb ] es igual a 0.
- merge_subblock_flag[ xCb ][ yCb ] es igual a 0.
- BcwIdx[ xCb ][ yCb ] es igual a 0.
- luma_weight_10 _flag[ refIdxL0 ] y luma_weight_11 _flag[ refIdxL1 ] son ambos iguales a 0.
- cbHeight es mayor que o igual a 8
- cIdx es igual a 0.
- De otra manera, bdofFlag se establece igual a FALSO.
La Figura 12 es un diagrama esquemático de un dispositivo de codificación de vídeo 1200 (por ejemplo, un codificador de vídeo 20 o un decodificador de vídeo 30) de acuerdo con una modalidad de la divulgación. El dispositivo de codificación de vídeo 1200 es adecuado para implementar las modalidades divulgadas como se describe en la presente descripción. El dispositivo de codificación de vídeo 1200 comprende puertos de entrada 1210 y unidades receptoras (Rx) 1220 para recibir datos; un procesador, unidad lógica, o unidad de procesamiento central (CPU) 1230 para procesar los datos; unidades transmisoras (Tx) 1240 y puertos de salida 1250 para transmitir los datos; y una memoria 1260 para almacenar los datos. El dispositivo de codificación de vídeo 1200 también puede comprender componentes óptico-a-eléctrico (OE) y componentes eléctrico-a-óptico (EO) acoplados a los puertos de entrada 1210, las unidades receptoras 1220, las unidades transmisoras 1240, y los puertos de salida 1250 para salida o entrada de señales ópticas o eléctricas.
El procesador 1230 es implementado por hardware y software. El procesador 1230 puede ser implementado como uno o más chips CPU, núcleos (por ejemplo, como un procesador multinúcleo), matrices de puertas programables en campo (FPGA), circuitos integrados de aplicación específica (ASIC), y procesadores de señal digital (DSP). El procesador 1230 está en comunicación con los puertos de entrada 1210, unidades receptoras 1220, unidades transmisoras 1240, puertos de salida 1250, y memoria 1260. El procesador 1230 comprende un módulo de codificación 1270. El módulo de codificación 1270 implementa las modalidades divulgadas antes descritas. Por ejemplo, el módulo de codificación 1270 implementa, procesa, prepara, o proporciona las diversas funciones de códec. La inclusión del módulo de codificación 1270 entonces proporciona una mejora sustancial a la funcionalidad
del dispositivo de codificación de vídeo 1200 y efectúa una transformación del dispositivo de codificación de vídeo 1200 a un estado diferente. Alternativamente, el módulo de codificación 1270 es implementado como instrucciones almacenadas en la memoria 1260 y es ejecutado por el procesador 1230.
El dispositivo de codificación de vídeo 1200 también puede incluir dispositivos de entrada y/o salida (E/S) 1280 para comunicar datos hacia y desde un usuario. Los dispositivos E/S 1280 pueden incluir dispositivos de salida tales como un visualizador para visualizar datos de vídeo, altavoces para emitir datos de audio, etc. Los dispositivos E/S 1280 también pueden incluir dispositivos de entrada, tales como un teclado, ratón, rueda de desplazamiento, etc., y/o interfaces correspondientes para interactuar con dichos dispositivos de salida.
La memoria 1260 comprende uno o más discos, unidades de cinta, y unidades de estado sólido y se puede utilizar como un dispositivo de almacenamiento de datos de sobre flujo, para almacenar programas cuando dichos programas son seleccionados para su ejecución, y para almacenar instrucciones y datos que son leídos durante la ejecución del programa. La memoria 1260 puede ser volátil y/o no volátil y puede ser memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria de contenido direccionable ternario (TCAM), y/o memoria de acceso aleatorio estática (SRAM).
La Figura 13 es un diagrama esquemático de una modalidad de un medio para codificar 1300. En una modalidad, el medio para codificar 1300 es implementado en un dispositivo de codificación de vídeo 1302 (por ejemplo, un codificador de vídeo 20 o un decodificador de vídeo 30). El dispositivo de codificación de vídeo 1302 incluye medios de recepción 1301. Los medios de recepción 1301 están configurados para recibir una imagen a codificar o para recibir un flujo de bits a decodificar. El dispositivo de codificación de vídeo 1302 incluye medios de transmisión 1307 acoplados a los medios de recepción 1301. Los medios de transmisión 1307 están configurados para transmitir el flujo de bits a un decodificador o para transmitir una imagen decodificada a un medio de visualización (por ejemplo, uno de los dispositivos E/S 1280).
El dispositivo de codificación de vídeo 1302 incluye los medios de almacenamiento 1303. Los medios de almacenamiento 1303 están acoplados al menos a uno de los medios de recepción 1301 o los medios de transmisión 1307. Los medios de almacenamiento 1303 están configurados para almacenar instrucciones. El dispositivo de codificación de vídeo 1302 también incluye medios de procesamiento 1305. Los medios de procesamiento 1305 están acoplados a los medios de almacenamiento 1303. Los medios de procesamiento 1305 están configurados para ejecutar las instrucciones almacenadas en los medios de almacenamiento 1303 para ejecutar los métodos divulgados en la presente descripción.
Se debe entender que los pasos de los métodos de ejemplo aquí establecidos no necesariamente requieren ejecutarse en el orden descrito, y el orden de los pasos de dichos métodos debe entenderse como simplemente de ejemplo. De igual manera, se pueden incluir pasos adicionales en dichos métodos, y algunos pasos se pueden omitir o combinar, en métodos consistentes con las diversas modalidades de la presente divulgación.
Aunque en la presente divulgación se han proporcionado varias modalidades, se debe entender que los sistemas y métodos divulgados pueden ser incorporados en muchas otras formas específicas sin apartarse del alcance de la presente divulgación. Los presentes ejemplos van a ser considerados como ilustrativos y no restrictivos, y la intención es no quedar limitado a los detalles aquí proporcionados. Por ejemplo, los diversos elementos o componentes se pueden combinar o integrar en otro sistema o algunas características se pueden omitir, o no implementar.
Además, técnicas, sistemas, subsistemas y métodos descritos e ilustrados en las diversas modalidades como discretos o separados se pueden combinar o integrar con otros sistemas, módulos, técnicas o métodos sin apartarse del alcance de la presente divulgación. Otros elementos mostrados o analizados como acoplados o directamente acoplados o comunicándose entre sí pueden estar indirectamente acoplados o comunicándose a través de alguna interfaz, dispositivo o componente intermedio ya sea eléctricamente, mecánicamente, o de otra manera. Otros ejemplos de cambios, sustituciones y alteraciones pueden determinarse por un experto en la técnica y podrían realizarse sin apartarse del alcance divulgados en la presente descripción.
Claims (11)
1. Un método de decodificación implementado por un decodificador de vídeo, en donde el método comprende: determinar (1002), a través del decodificador de vídeo, si una resolución de una imagen actual que está siendo decodificada es la misma que la resolución de imágenes de referencia identificada por una lista de imágenes de referencia asociada con la imagen actual;
activar (1004), a través del decodificador de vídeo, el flujo óptico bidireccional (BDOF) para un bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es la misma que la resolución de cada una de las imágenes de referencia;
desactivar (1006), a través del decodificador de vídeo, el BDOF para el bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es diferente de la resolución de cualquiera de las imágenes de referencia; y
decodificar, a través del decodificador de vídeo, el bloque actual.
2. El método de conformidad con la reivindicación 1, en donde la activación del BDOF comprende ajustar un indicador de BDOF a un primer valor, y en donde la desactivación del BDOF comprende ajustar el indicador de BDOF a un segundo valor.
3. El método de conformidad con cualquiera de las reivindicaciones 1 a 2, en donde el método comprende además generar las imágenes de referencia para la imagen actual con base en las listas de imágenes de referencia de acuerdo con un modo de interpredicción bidireccional.
4. El método de conformidad con cualquiera de las reivindicaciones 1 a 3, en donde el método comprende además activar el remuestreo de imágenes de referencia (RPR) para una secuencia de vídeo codificada (CVS) completa que contiene la imagen actual cuando el BDOF está desactivado.
5. El método de conformidad con cualquiera de las reivindicaciones 1 a 5, en donde la resolución de la imagen actual está colocada en un conjunto de parámetros del flujo de bits de vídeo codificado, y en donde el bloque actual se obtiene de una porción de la imagen actual.
6. El método de conformidad con cualquiera de las reivindicaciones 1 a 5, en donde el método comprende además visualizar en un visualizador de un dispositivo electrónico una imagen generada mediante el uso del bloque actual.
7. Un dispositivo de decodificación (1200), en donde el dispositivo de decodificación comprende:
un receptor (1220) configurado para rec ib ir un flu jo de bits de vídeo codif icado;
una memoria (1260) acoplada al receptor (1220), la memoria (1260) que almacena instrucciones; y un procesador (1230) acoplado a la memoria (1260), el procesador (1230) configurado para ejecutar las instrucciones para hacer que el dispositivo de decodificación (1200):
determine si una resolución de una imagen actual que está siendo decodificada es la misma que la resolución de imágenes de referencia identificada por una lista de imágenes de referencia asociada con la imagen actual;
active el flujo óptico bidireccional (BDOF) para un bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es la misma que la resolución de cada una de las imágenes de referencia;
desactive el BDOF para el bloque actual de la imagen actual cuando la resolución de la imagen actual se determina que es diferente de la resolución de cualquiera de las imágenes de referencia; y decodifique, a través del decodificar de vídeo, el bloque actual.
8. El dispositivo de decodificación de conformidad con la reivindicación 7, en donde el remuestreo de imágenes de referencia (RPR) se activa para una secuencia de vídeo codificada (CVS) completa que contiene la imagen actual cuando el BDOF está desactivado.
9. El dispositivo de decodificación de conformidad con la reivindicación 7 u 8, en donde el dispositivo de decodificación comprende además un visualizador configurado para visualizar una imagen tal como se genera con base en el bloque actual.
10. El dispositivo de decodificación de conformidad con cualquiera de las reivindicaciones 7 a 9, en donde activar el BDOF comprende establecer un indicador BDOF a un primer valor, y en donde desactivar el BDOF comprende establecer el indicador BDOF a un segundo valor.
11. Un medio de almacenamiento legible por ordenador, en donde el medio de almacenamiento legible por ordenador almacena un programa informático que puede ejecutarse por un procesador, y cuando el programa
informático se ejecuta por el procesador, el procesador realiza el método de conformidad con cualquiera de las reivindicaciones 1 a 6.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962848409P | 2019-05-15 | 2019-05-15 | |
PCT/US2020/032922 WO2020232264A1 (en) | 2019-05-15 | 2020-05-14 | Handling of bi-directional optical flow (bio) coding tool for reference picture resampling in video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2947509T3 true ES2947509T3 (es) | 2023-08-10 |
Family
ID=73289314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES20805381T Active ES2947509T3 (es) | 2019-05-15 | 2020-05-14 | Manejo de herramienta de codificación de flujo óptico bidireccional (BIO) para remuestreo de imagen de referencia en codificación de video |
Country Status (11)
Country | Link |
---|---|
US (1) | US20220014735A1 (es) |
EP (3) | EP4407992A2 (es) |
JP (2) | JP7384929B2 (es) |
KR (2) | KR102628896B1 (es) |
CN (2) | CN113826381A (es) |
ES (1) | ES2947509T3 (es) |
HU (1) | HUE061979T2 (es) |
MX (1) | MX2021013977A (es) |
PL (1) | PL3970363T3 (es) |
PT (1) | PT3970363T (es) |
WO (1) | WO2020232264A1 (es) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113906759A (zh) | 2019-05-21 | 2022-01-07 | 北京字节跳动网络技术有限公司 | 子块Merge模式中基于语法的运动候选推导 |
WO2020262901A1 (ko) * | 2019-06-24 | 2020-12-30 | 엘지전자 주식회사 | 영상 디코딩 방법 및 그 장치 |
KR20240104203A (ko) * | 2019-08-22 | 2024-07-04 | 엘지전자 주식회사 | 가중 예측을 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법 |
EP4032290A4 (en) | 2019-10-18 | 2022-11-30 | Beijing Bytedance Network Technology Co., Ltd. | SYNTAX CONSTRAINTS IN REPORTING SUBPICTURE PARAMETER SETS |
EP4351133A1 (en) * | 2022-10-07 | 2024-04-10 | Beijing Xiaomi Mobile Software Co., Ltd. | Encoding/decoding video picture data |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7876821B2 (en) * | 2002-09-05 | 2011-01-25 | Agency For Science, Technology And Research | Method and an apparatus for controlling the rate of a video sequence; a video encoding device |
EP2140687A2 (en) * | 2007-04-03 | 2010-01-06 | Gary Demos | Flowfield motion compensation for video compression |
US20170171563A1 (en) * | 2014-02-24 | 2017-06-15 | Sharp Kabushiki Kaisha | Restrictions on signaling |
US10375413B2 (en) | 2015-09-28 | 2019-08-06 | Qualcomm Incorporated | Bi-directional optical flow for video coding |
CN113056916B (zh) * | 2018-11-22 | 2024-06-11 | 北京字节跳动网络技术有限公司 | 基于子块的运动候选的选择和信令 |
EP3907998A4 (en) * | 2019-02-14 | 2022-03-16 | LG Electronics Inc. | METHOD AND DEVICE FOR INTER-PREDICTION BASED ON A DMVR |
CN113475076B (zh) * | 2019-03-11 | 2024-03-12 | 阿里巴巴集团控股有限公司 | 用于对视频数据进行编码的帧间预测方法 |
US11039150B2 (en) * | 2019-04-19 | 2021-06-15 | Tencent America LLC | Method and apparatus for video coding |
WO2020228660A1 (en) | 2019-05-11 | 2020-11-19 | Beijing Bytedance Network Technology Co., Ltd. | Selective use of coding tools in video processing |
CN115037945B (zh) * | 2019-07-08 | 2023-04-04 | 华为技术有限公司 | 用于视频译码中的参考图像重采样的多个图像大小和符合性窗口的处理 |
WO2021073488A1 (en) | 2019-10-13 | 2021-04-22 | Beijing Bytedance Network Technology Co., Ltd. | Interplay between reference picture resampling and video coding tools |
-
2020
- 2020-05-14 HU HUE20805381A patent/HUE061979T2/hu unknown
- 2020-05-14 EP EP24175877.0A patent/EP4407992A2/en active Pending
- 2020-05-14 PL PL20805381.9T patent/PL3970363T3/pl unknown
- 2020-05-14 KR KR1020217041181A patent/KR102628896B1/ko active IP Right Grant
- 2020-05-14 PT PT208053819T patent/PT3970363T/pt unknown
- 2020-05-14 KR KR1020247002255A patent/KR20240013895A/ko not_active Application Discontinuation
- 2020-05-14 CN CN202080035926.8A patent/CN113826381A/zh active Pending
- 2020-05-14 EP EP23167225.4A patent/EP4221225B1/en active Active
- 2020-05-14 MX MX2021013977A patent/MX2021013977A/es unknown
- 2020-05-14 WO PCT/US2020/032922 patent/WO2020232264A1/en unknown
- 2020-05-14 ES ES20805381T patent/ES2947509T3/es active Active
- 2020-05-14 JP JP2021568304A patent/JP7384929B2/ja active Active
- 2020-05-14 CN CN202410218755.2A patent/CN118101931A/zh active Pending
- 2020-05-14 EP EP20805381.9A patent/EP3970363B1/en active Active
-
2021
- 2021-09-24 US US17/484,796 patent/US20220014735A1/en active Pending
-
2023
- 2023-11-09 JP JP2023191422A patent/JP2024012555A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
PL3970363T3 (pl) | 2023-07-17 |
EP3970363A4 (en) | 2022-07-27 |
KR20220008342A (ko) | 2022-01-20 |
EP4221225A1 (en) | 2023-08-02 |
KR20240013895A (ko) | 2024-01-30 |
CN113826381A (zh) | 2021-12-21 |
EP4221225B1 (en) | 2024-05-29 |
WO2020232264A1 (en) | 2020-11-19 |
JP2022532400A (ja) | 2022-07-14 |
EP3970363B1 (en) | 2023-05-17 |
US20220014735A1 (en) | 2022-01-13 |
JP7384929B2 (ja) | 2023-11-21 |
HUE061979T2 (hu) | 2023-09-28 |
EP4407992A2 (en) | 2024-07-31 |
MX2021013977A (es) | 2022-04-01 |
CN118101931A (zh) | 2024-05-28 |
EP3970363A1 (en) | 2022-03-23 |
PT3970363T (pt) | 2023-06-15 |
JP2024012555A (ja) | 2024-01-30 |
KR102628896B1 (ko) | 2024-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2947509T3 (es) | Manejo de herramienta de codificación de flujo óptico bidireccional (BIO) para remuestreo de imagen de referencia en codificación de video | |
ES2780688T3 (es) | Señalización para operaciones DPB basadas en un búfer de imágenes subdescodificadas (sub-DPB) en la codificación de vídeo | |
ES2972701T3 (es) | Imágenes con tipos de unidad NAL mezclados | |
ES2946163T3 (es) | Manejo de la herramienta de codificación del refinamiento del vector de movimiento del lado del decodificador (DMVR) para el remuestreo de imágenes de referencia en la codificación de vídeo | |
ES2974627T3 (es) | Manejo de múltiples tamaños de imagen y ventanas de conformidad para el remuestreo de imágenes de referencia en la codificación de video | |
KR20210134774A (ko) | 인코더, 디코더 및 대응 방법 | |
US20150382018A1 (en) | Recovery point sei message in multi-layer video codecs | |
ES2968830T3 (es) | Intercodificación en codificación de vídeo con soporte de múltiples capas | |
ES2966494T3 (es) | Señalización de modo intra luma | |
RU2820215C2 (ru) | Обработка инструмента кодирования двунаправленного оптического потока (bio) для передискретизации опорного изображения при кодировании видео | |
RU2817618C2 (ru) | Обработка множества размеров изображения и окон соответствия для передискретизации опорного изображения при кодировании видео |