ES2869854T3 - Unificar copia intrabloque e interpredicción - Google Patents
Unificar copia intrabloque e interpredicción Download PDFInfo
- Publication number
- ES2869854T3 ES2869854T3 ES15763683T ES15763683T ES2869854T3 ES 2869854 T3 ES2869854 T3 ES 2869854T3 ES 15763683 T ES15763683 T ES 15763683T ES 15763683 T ES15763683 T ES 15763683T ES 2869854 T3 ES2869854 T3 ES 2869854T3
- Authority
- ES
- Spain
- Prior art keywords
- block
- image
- current
- list
- motion vector
- 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
- 230000033001 locomotion Effects 0.000 claims abstract description 270
- 239000013598 vector Substances 0.000 claims abstract description 252
- 238000000034 method Methods 0.000 claims abstract description 171
- 230000002123 temporal effect Effects 0.000 claims abstract description 102
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 claims abstract description 15
- 238000001914 filtration Methods 0.000 claims abstract description 12
- 230000007774 longterm Effects 0.000 claims abstract description 12
- 239000012634 fragment Substances 0.000 claims description 96
- 230000008569 process Effects 0.000 claims description 43
- 239000000523 sample Substances 0.000 claims description 37
- 238000003860 storage Methods 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 17
- 239000013074 reference sample Substances 0.000 claims description 10
- 230000001052 transient effect Effects 0.000 claims description 6
- 238000003491 array Methods 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 38
- 238000013139 quantization Methods 0.000 description 23
- 241000023320 Luma <angiosperm> Species 0.000 description 20
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 20
- 230000004927 fusion Effects 0.000 description 14
- 230000006835 compression Effects 0.000 description 10
- 238000007906 compression Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 238000010276 construction Methods 0.000 description 9
- 238000002156 mixing Methods 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 6
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/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/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/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- 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/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Television Signal Processing For Recording (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
Un procedimiento de descodificación de datos de vídeo usando modo de copia intrabloque, comprendiendo el procedimiento: incluir (200) una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual, en el que incluir la imagen actual y la imagen de referencia en la lista de imágenes de referencia comprende incluir, en la lista de imágenes de referencia, la imagen actual antes de las imágenes de largo plazo en la lista de imágenes de referencia; determinar (202) un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual; derivar (204) un predictor de vector de movimiento temporal a partir del bloque colocalizado; determinar (206) si el predictor de vector de movimiento temporal tiene una precisión de subpíxeles; desplazar a la derecha (208) el predictor de vector de movimiento temporal que se ha determinado que tiene precisión de subpíxeles; determinar (210), en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y formar (212) un bloque de vídeo descodificado sumando muestras de un bloque residual y muestras correspondientes del bloque predictivo.
Description
DESCRIPCIÓN
Unificar copia intrabloque e interpredicción
SOLICITUDES RELACIONADAS CAMPO TÉCNICO
Esta divulgación se refiere a la codificación y descodificación de vídeo.
ANTECEDENTES
Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, incluyendo televisiones digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes personales digitales (PDA), ordenadores portátiles o de escritorio, tabletas electrónicas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por el MPEG-2, MPEG-4, UIT-T H.263, UIT-T H.264/MPEG-4, parte 10, Codificación avanzada de vídeo (AVC), la norma de Codificación de vídeo de alta eficacia (HEVC) actualmente en desarrollo y las extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o retirar la redundancia intrínseca a las secuencias de vídeo. En la codificación de vídeo basada en bloques, un fragmento de vídeo (es decir, una trama de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo, que también se pueden denominar bloques en árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un fragmento (P o B) intercodificado de una imagen pueden usar predicción espacial con respecto a muestras de referencia de 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 se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia.
La predicción espacial o temporal da como resultado el uso de un bloque predictivo para codificar un bloque actual. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Por ejemplo, cada muestra respectiva de un bloque de datos residuales puede ser igual a una diferencia entre una muestra respectiva del bloque original y una muestra respectiva correspondiente del 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. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio de píxel a un dominio de transformada, dando como resultado coeficientes de transformada residuales que, a continuación, se pueden cuantificar. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden explorar para producir un vector unidimensional de coeficientes de transformada, y se puede aplicar codificación por entropía para lograr aún más compresión. El documento "Non-SCCE1: Unification of intra BC and inter modes" de Bin Li et al. propone unificar la tabla de sintaxis, la semántica y el proceso de descodificación del modo intraBC e intermodo. Con la unificación, las herramientas de codificación diseñadas para intermodo, tales como el modo de salto, el modo de fusión y AMVP, también se podrían aplicar al modo intra BC. Cuando el modo intra BC está habilitado, la imagen actual se añade a la última posición de la lista 0.
SUMARIO
El alcance de la protección se define por las reivindicaciones independientes, a las que se deberá hacer referencia a continuación. Los rasgos característicos opcionales se exponen en las reivindicaciones dependientes.
En general, esta divulgación describe técnicas para la predicción de copia intrabloque. En particular, esta divulgación describe diversas técnicas para implementar un esquema de copia intrabloque e interpredicción unificadas. Por ejemplo, un codificador de vídeo puede descodificar o codificar un bloque actual de datos de vídeo de una imagen actual determinando un bloque colocalizado de una imagen de referencia estando colocalizado el bloque colocalizado con el bloque actual de la imagen actual. El codificador de vídeo puede derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado y puede determinar que el predictor de vector de movimiento temporal tiene precisión de subpíxeles. Al determinar que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles, el codificador de vídeo puede desplazar a la derecha el predictor de
vector de movimiento temporal. Desplazar a la derecha el predictor del vector de movimiento temporal puede retirar el/los bit(s) menos significativos que representan la exactitud de subpíxeles del vector de movimiento temporal, convirtiendo eficazmente el vector de movimiento temporal de tener un nivel de precisión de subpíxeles a tener un nivel de precisión de píxeles enteros. Dado que el modo de copia intrabloque usa precisión de píxeles de nivel entero, la conversión del predictor de vector de movimiento temporal puede incrementar la eficacia de la codificación porque el codificador de vídeo puede usar un vector de movimiento temporal que, de otro modo, podría ser inutilizable o ineficaz para el modo de copia intrabloque debido a la precisión de subpíxeles. Después de desplazar a la derecha el predictor de vector de movimiento temporal, el codificador de vídeo puede determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual.
De acuerdo con un aspecto de la invención reivindicada, se proporciona un procedimiento para descodificar datos de vídeo usando modo de copia intrabloque. El procedimiento comprende incluir una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual; determinar un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual; derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado; determinar que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles; desplazar a la derecha el predictor de vector de movimiento temporal que se determina que tiene precisión de subpíxeles; determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y formar un bloque de vídeo descodificado sumando muestras de un bloque residual y muestras correspondientes del bloque predictivo.
De acuerdo con otro aspecto de la invención reivindicada, se proporciona un procedimiento para codificar datos de vídeo usando modo de copia intrabloque. El procedimiento comprende incluir una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual; determinar un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual; derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado; determinar que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles; desplazar a la derecha el predictor de vector de movimiento temporal que se determina que tiene precisión de subpíxeles; determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y generar datos residuales que representan diferencias entre el bloque predictivo que se determinó en base al predictor de vector de movimiento temporal desplazado a la derecha y el bloque actual.
De acuerdo con otro aspecto de la invención reivindicada, se proporciona un dispositivo para descodificar datos de vídeo usando modo de copia intrabloque. El dispositivo comprende: una memoria configurada para almacenar datos de vídeo de una imagen de referencia; y uno o más procesadores configurados para: incluir una imagen actual y la imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual; determinar un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual; derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado; determinar que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles; desplazar a la derecha el predictor de vector de movimiento temporal que se determina que tiene precisión de subpíxeles; determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y formar un bloque de vídeo descodificado sumando muestras de un bloque residual y muestras correspondientes del bloque predictivo.
En otro ejemplo, esta divulgación describe un dispositivo para codificar datos de vídeo usando modo de copia intrabloque, comprendiendo el dispositivo: una memoria configurada para almacenar datos de vídeo de una imagen de referencia; y uno o más procesadores configurados para: incluir una imagen actual y la imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual; determinar un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual; derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado; determinar que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles; desplazar a la derecha el predictor de vector de movimiento temporal que se determina que tiene precisión de subpíxeles; determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y generar datos residuales que representan diferencias entre el bloque predictivo que se determinó en base al predictor de vector de movimiento temporal desplazado a la derecha y el bloque actual.
De acuerdo con otro aspecto de la invención reivindicada, se proporciona un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que
uno o más procesadores de un dispositivo informático configurado para: incluir una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual; determinar un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual; derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado; determinar que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles; desplazar a la derecha el predictor de vector de movimiento temporal que se ha determinado que tiene una precisión de subpíxeles; y determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle.
Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y la siguiente descripción.
Otros rasgos característicos, objetivos y ventajas resultarán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La Figura 2 es un diagrama conceptual que ilustra los candidatos de vector de movimiento para los modos de fusión y predicción de vector de movimiento avanzada (AMVP).
La Figura 3 es un diagrama conceptual que ilustra una técnica de ejemplo para predecir un bloque actual de datos de vídeo dentro de una imagen actual de acuerdo con un modo intra BC.
La Figura 4 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en la presente divulgación.
La Figura 5 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas descritas en la presente divulgación.
La Figura 6 es un diagrama de flujo que ilustra un proceso de ejemplo para descodificar datos de vídeo consecuente con las técnicas de esta divulgación.
La Figura 7 es un diagrama de flujo que ilustra un proceso de ejemplo para la codificación de datos de vídeo consecuente con las técnicas de esta divulgación.
DESCRIPCIÓN DETALLADA
Los aspectos de esta divulgación se dirigen a técnicas para la codificación de vídeo y la descodificación de vídeo. Por ejemplo, un codificador de vídeo puede derivar un predictor de vector de movimiento temporal mientras realiza una predicción de vector de movimiento avanzada (AVMP). A su vez, un codificador de vídeo puede desplazar a la derecha el predictor de vector de movimiento temporal para retirar cualquier exactitud de subpíxeles. Dado que el modo de copia intrabloque usa precisión de píxeles enteros, la conversión del predictor de vector de movimiento temporal puede incrementar la eficacia de la codificación porque el codificador de vídeo puede usar un predictor de vector de movimiento temporal que, de otro modo, podría ser inutilizable o ineficaz para el modo de copia intrabloque debido a la precisión de subpíxeles. Los aspectos de esta divulgación pueden estar dirigidos a técnicas para mejorar la codificación de vector de bloques para la copia intrabloque (BC). Los aspectos de esta divulgación pueden estar dirigidos a técnicas para realizar intra BC como parte de un proceso de interpredicción unificado para la codificación y descodificación de vídeo. Las técnicas descritas en el presente documento se pueden aplicar para la codificación de contenido de pantalla (SCC) u otro contenido donde una o más herramientas de codificación tradicionales son ineficaces.
La interpredicción es una técnica de predicción de elementos de datos basada en elementos de datos de imágenes distintas de la imagen actual. Por ejemplo, un codificador de vídeo puede usar la interpredicción para determinar un bloque predictivo para una unidad de predicción (PU) de una imagen actual. El bloque predictivo es un bloque de muestras basado en muestras en una imagen de referencia (es decir, una imagen distinta de la imagen actual). Un vector de movimiento para la PU puede indicar un desplazamiento espacial entre un bloque de predicción de la PU y el bloque predictivo. En este ejemplo, el codificador de vídeo puede generar datos residuales (es decir, un error de predicción) que indican una diferencia entre el bloque predictivo y un bloque de predicción de la PU. El codificador de vídeo puede incluir datos representativos de datos residuales en un flujo de bits que contiene una representación codificada de los datos de vídeo. Un descodificador de vídeo puede usar el vector de movimiento para determinar el bloque predictivo. Posteriormente, el descodificador de vídeo puede sumar las muestras correspondientes de los datos residuales y el bloque predictivo para reconstruir el bloque de predicción.
En otro ejemplo de interpredicción, un codificador de vídeo puede determinar un vector de movimiento de una PU actual de una imagen actual en base a un predictor de vector de movimiento temporal (TMVP) en una imagen de referencia. En muchos ejemplos, el TMVP es un vector de movimiento de una PU que tiene un bloque de predicción que está colocalizado al menos parcialmente con el bloque de predicción de la PU. Por ejemplo, el codificador de vídeo puede adoptar el TMVP como un vector de movimiento de la PU actual o determinar un vector de movimiento de la Pu en base al vector de movimiento del TMVP. El codificador de vídeo puede a continuación usar el vector
de movimiento de la PU actual para determinar un bloque predictivo.
La intrapredicción es una técnica de predicción de elementos de datos en base a elementos de datos, tales como valores de muestra, del mismo fragmento descodificado. La copia intrabloque (es decir, intra BC) es una forma recientemente desarrollada de intrapredicción usada para codificar bloques de vídeo, tales como unidades de codificación (CU) o PU. Para codificar un bloque de vídeo actual de una imagen actual usando intra BC, un codificador de vídeo busca una región de búsqueda dentro del mismo fragmento de la imagen actual que el bloque de vídeo actual para un bloque predictivo. En algunos ejemplos, el bloque predictivo puede ser un bloque que comprende una matriz de muestras que se asemeja más a una matriz de muestras del bloque de vídeo actual. El codificador de vídeo genera un vector de bloque que indica un desplazamiento entre el bloque de vídeo actual y el bloque predictivo. De manera muy similar a la interpredicción, el codificador de vídeo puede usar el bloque predictivo para generar datos residuales. Un descodificador de vídeo puede usar el vector de bloque del bloque de vídeo actual para determinar el bloque predictivo en la imagen actual. El descodificador de vídeo puede sumar las muestras correspondientes de los datos residuales y el bloque predictivo para reconstruir el bloque de predicción del bloque de vídeo actual.
En general, los vectores de movimiento usados para la interpredicción tienen una exactitud de subpíxeles. Por ejemplo, un vector de movimiento usado para la interpredicción puede tener una exactitud de medio píxel o cuarto de píxel. Por tanto, un vector de movimiento usado para la interpredicción puede indicar una localización entre dos píxeles reales de una imagen. Los píxeles reales de una imagen se pueden denominar píxeles enteros porque a los píxeles reales se les asignan coordenadas de enteros en una matriz de píxeles de la imagen. En los casos en que un vector de movimiento indica una localización entre dos píxeles enteros, un codificador de vídeo (es decir, un codificador de vídeo o un descodificador de vídeo) puede interpolar los valores de muestras. Por el contrario, los vectores de bloque usados para intra BC están limitados a la exactitud de enteros (es decir, precisión de enteros, precisión de píxeles enteros). Por tanto, los vectores de bloque usados para intra BC no indican localizaciones entre píxeles enteros.
Debido a las similitudes entre interpredicción e intra BC, han existido propuestas que intentan unificar interpredicción e intra BC. En algunos de dichos intentos, un codificador de vídeo genera una lista de imágenes de referencia. Convencionalmente, la lista de imágenes de referencia es una lista de imágenes disponibles para ser usadas por una imagen actual para la interpredicción. Varias propuestas para unificar interpredicción e intra BC sugieren incluir la imagen actual en la lista de imágenes de referencia para que la imagen actual se pueda usar de la misma manera que otras imágenes de referencia.
Sin embargo, surgen varios problemas en dichas propuestas. Por ejemplo, un codificador de vídeo puede determinar que el uso de intra BC da como resultado la mejor métrica de distorsión de velocidad para un bloque actual cuando un TMVP, que puede ser un vector de movimiento o un vector de bloque, se usa como el vector de bloque del bloque actual. Por tanto, en este ejemplo, el codificador de vídeo puede señalizar un índice candidato que identifica al TMVP y puede señalizar un índice de referencia que indica una posición de la imagen actual en una lista de imágenes de referencia. El codificador de vídeo también puede señalizar una diferencia de vector de movimiento (MVD) que indica una diferencia, si existe, entre el vector de bloque del bloque actual y el TMVP (es decir, un vector de movimiento o vector de bloque del bloque colocalizado). Sin embargo, si el TMVP resulta ser un vector de movimiento de exactitud de subpíxeles, el vector de movimiento se puede no usar para intra BC o es ineficaz para el uso de intra BC porque intra BC tiene vectores de bloques de precisión de enteros. La diferencia en exactitud (es decir, precisión de subpíxeles frente a precisión de píxeles enteros) entre la interpredicción e intra BC también significa que estos dos modos de predicción funcionan de manera diferente porque la interpredicción funciona usando precisión de subpíxeles y la intra BC funciona usando precisión de píxeles enteros. El resultado es una incompatibilidad que socava el fundamento para unificar interpredicción e intra BC.
Las técnicas particulares de esta divulgación proporcionan soluciones a dichos problemas. Por ejemplo, un codificador de vídeo puede incluir una imagen actual y una imagen de referencia en una lista de imágenes de referencia. Además, el codificador de vídeo puede determinar un bloque colocalizado de la imagen de referencia. El bloque colocalizado está colocalizado con un bloque actual de la imagen actual. Un bloque puede estar colocalizado con otro bloque si los bloques corresponden a posiciones que se solapan al menos parcialmente dentro de los respectivos bloques de los bloques. Adicionalmente, en este ejemplo, el codificador de vídeo puede derivar un TMVP del bloque colocalizado. El codificador de vídeo puede a continuación determinar si el TMVP tiene una precisión de subpíxeles. En respuesta a determinar que el TMVP tiene una precisión de subpíxeles, el codificador de vídeo puede desplazar a la derecha el TMVP. En otras palabras, el codificador de vídeo puede desplazar a la derecha los valores que indican el TMVP de modo que se eliminen cualesquiera bits (por ejemplo, los dos bits menos significativos) que representan las partes fraccionarias del TMVP, lo que da como resultado un TMVP que tiene una precisión de nivel de enteros. Por ejemplo, si se retiraran dos bits menos significativos, eso equivaldría a un desplazamiento a la derecha en dos. Como otro ejemplo, desplazar a la derecha un TMVP que tiene una exactitud de un cuarto de píxel en HEVC en dos convertiría el TMVP de tener una exactitud de subpíxeles (o precisión de un cuarto de píxel en este ejemplo) a tener una exactitud de píxeles enteros). De esta manera, el codificador de vídeo puede convertir eficazmente el TMVP de exactitud de subpíxeles a exactitud de píxeles enteros. Además, en este ejemplo, el codificador de vídeo puede determinar, en base al predictor de vector de
movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual y formar un bloque de vídeo descodificado sumando muestras de un bloque residual y muestras correspondientes del bloque predictivo. Por tanto, convirtiendo el TMVP de precisión de subpíxeles a precisión de enteros, el codificador de vídeo puede usar el TMVP como un vector de bloque para su uso en intra BC. De esta manera, esta técnica de la divulgación puede facilitar la unificación de interpredicción e intra BC.
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo ejemplar 10 que puede utilizar una o más técnicas de esta divulgación. Como se usa en el presente documento, el término "codificador de vídeo" se refiere genéricamente tanto a codificadores de vídeo como a descodificadores de vídeo. De forma similar, en esta divulgación, los términos "codificación de vídeo" o "codificación" se refieren genéricamente a la codificación de vídeo o la descodificación de vídeo. Como se establece a lo largo de esta divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 del sistema de codificación de vídeo 10 representan diversos ejemplos de codificadores y descodificadores que se pueden configurar para realizar una o más técnicas de esta divulgación.
Como se muestra en el ejemplo de la Figura 1, el sistema de codificación de vídeo 10 incluye un dispositivo de origen 12 y un dispositivo de destino 14. El dispositivo de origen 12 genera datos de vídeo codificados. Por consiguiente, el dispositivo de origen 12 se puede denominar dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo de destino 14 puede descodificar los datos de vídeo codificados generados por el dispositivo de origen 12. Por consiguiente, el dispositivo de destino 14 se puede denominar dispositivo de descodificación de vídeo o aparato de descodificación de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 pueden ser ejemplos de dispositivos de codificación de vídeo o aparatos de codificación de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tableta, descodificadores, dispositivos de comunicación inalámbrica, microteléfonos, tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión continua de vídeo o similares. En algunos ejemplos, el dispositivo de origen 12 y el dispositivo de destino 14 están equipados para la comunicación inalámbrica.
El dispositivo de destino 14 puede recibir datos de vídeo codificados desde el dispositivo de origen 12 por medio de un enlace 16. El enlace 16 puede comprender uno o más medios o dispositivos capaces de mover los datos de vídeo codificados desde el dispositivo de origen 12 hasta el dispositivo de destino 14. En un ejemplo, el enlace 16 comprender uno o más medios de comunicación que permiten al dispositivo de origen 12 transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. En este ejemplo, el dispositivo de origen 12 modula o comunica los datos de vídeo codificados de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmite los datos de vídeo modulados (o sin modular) al dispositivo de destino 14. Los uno o más medios de comunicación pueden incluir medios de comunicación inalámbrica y/o alámbrica, tales como un espectro de radiofrecuencia (Rf ) o una o más líneas físicas de transmisión. Los uno o más medios de comunicación pueden formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global (por ejemplo, Internet). Los uno o más medios de comunicación pueden incluir encaminadores, conmutadores, estaciones base u otros equipos que facilitan la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
En algunos ejemplos, se pueden emitir datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento 33. En dichos ejemplos, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 33 mediante la interfaz de entrada 28. El dispositivo de almacenamiento 33 puede incluir cualquiera de una variedad de medios de almacenamiento de datos de acceso local o distribuidos, tales como una unidad de disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados.
El dispositivo de almacenamiento 33 puede comprender un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados en el dispositivo de almacenamiento 33 por medio de transmisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor que pueda almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen un servidor de red (por ejemplo, para un sitio web), un servidor de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento adjuntos a la red (NAS) o una unidad de disco local.
El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Ejemplos de tipos de conexiones de datos pueden incluir un canal inalámbrico (por ejemplo, conexión Wi-Fi), una conexión alámbrica (por ejemplo, DSL, módem por cable, etc.) o combinaciones de ambos que sean adecuadas para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 33 puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación para copia intrabloque e interpredicción unificados no se limitan necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo en apoyo de cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo, por ejemplo, por medio de Internet, codificación de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede estar configurado para admitir una transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o videotelefonía.
El sistema de codificación de vídeo 10 ilustrado en la Figura 1 es simplemente un ejemplo y las técnicas de la presente divulgación se pueden aplicar a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no incluyan necesariamente ninguna comunicación de datos entre los dispositivos de codificación y descodificación. En otros ejemplos, los datos se recuperan de una memoria local, se emiten en continuo por una red, o similares. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en una memoria, y/o un dispositivo de descodificación de vídeo puede recuperar y descodificar datos de una memoria. En muchos ejemplos, la codificación y la descodificación se realizan mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en una memoria y/o recuperan y descodifican datos de una memoria.
En el ejemplo de la Figura 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos ejemplos, la interfaz de salida 22 incluye un modulador/demodulador (módem) y/o un transmisor. La fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contenga vídeo previamente capturado, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos de ordenador para generar datos de gráficos de ordenador como vídeo de origen, o una combinación de dichas fuentes. En un ejemplo donde la fuente de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 forman los denominados teléfonos con cámara o videoteléfonos. Sin embargo, las técnicas descritas en la presente divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o por cable.
El codificador de vídeo 20 puede codificar el vídeo captado, precaptado o generado por ordenador. Los datos de vídeo codificados se pueden transmitir directamente al dispositivo de destino 14 por medio de la interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados se pueden almacenar también (o de forma alternativa) en el dispositivo de almacenamiento 33 para un acceso posterior por parte del dispositivo de destino 14 u otros dispositivos, para su descodificación y/o reproducción.
El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En algunos ejemplos, la interfaz de entrada 28 incluye un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de vídeo codificados a través del enlace 16. Los datos de vídeo codificados comunicados a través del enlace 16, o proporcionados en el dispositivo de almacenamiento 33, pueden incluir una variedad de elementos de sintaxis generados por el codificador de vídeo 20 para su uso por un descodificador de vídeo, tal como el descodificador de vídeo 30, en la descodificación de los datos de vídeo. Dichos elementos de sintaxis se pueden incluir con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenarse en un medio de almacenamiento o almacenarse en un servidor de archivos.
El dispositivo de visualización 32 puede estar integrado en, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo descodificados ante un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden implementar como cualquiera de una variedad de circuitos adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en programa informático, un dispositivo puede almacenar instrucciones para el programa informático en un medio de almacenamiento legible por ordenador no transitorio adecuado, y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Cualquiera de lo anterior (incluyendo hardware, programa informático, una combinación de hardware y programa informático, etc.) se puede considerar como uno o más procesadores. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden incluir en uno o más codificadores o descodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de codificación de vídeo, tal como la recientemente finalizada codificación de vídeo de alta eficacia (HEVC), así como la norma de extensión de rango HEVC, desarrollado por el equipo colaborativo conjunto sobre codificación de vídeo (JCT-VC). De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas propietarias o industriales, tales como la norma ITU-T H.264, denominada de forma alternativa MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de esta divulgación no se limitan a ninguna norma de codificación particular. Otros ejemplos de normas de codificación de vídeo incluyen MPEG-2 e ITU-T H.263.
Un borrador reciente de la norma HEVC, denominado "HEVC Working Draft 10" o "WD10", se describe en el documento JCTVC-L1003v34, de Bross et al., titulado "High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last Call)", Equipo de Colaboración Conjunta sobre Codificación de Vídeo (j Ct -VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12a conferencia: Ginebra, Suiza, del 14 al 23 de enero de 2013, que, a partir del viernes, 30 de agosto de 2013, se puede descargar desde: http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip. Otro borrador de la norma HEVC, se menciona en el presente documento como "revisiones de WD10", se describe en Bross et al., "Correcciones propuestas de los editores para la HEVC, versión 1", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de UIT-T SG16 WP3 e ISO/IEC JTC 1/SC29/WG11, 13a Conferencia, Incheon, KR, abril de 2013, que, al 30 de agosto de 2013, está disponible en: http://phenix.int-evry.fr/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC-M0432-v3.zip.
Otro borrador de especificación de texto HEVC reciente se describe en el borrador de especificación HEVC, y a continuación en el presente documento denominado HEVC WD, está disponible en http://phenix.int-evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC-O1003-v2.zip. Wang et al., "High Efficiency Video Coding (HEVC) Defect Report 4", Equipo colaborativo conjunto sobre codificación de vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 17a reunión, Valencia, ES, 27 de marzo-4 de abril de 2014, documento: JCTVC-Q1003 (en adelante, "JCTVC-Q1003") también describe la norma HEVC.
El codificador de vídeo y el descodificador de vídeo 30 representa cada uno un ejemplo de un codificador de vídeo configurado para realizar cualquier combinación de las técnicas descritas en esta divulgación. En algunos ejemplos, una o más técnicas descritas en el presente documento están configuradas para su uso con una o más normas de codificación de vídeo. Normas de codificación de vídeo de ejemplo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus ampliaciones de codificación de vídeo escalable (SVC) y de codificación de vídeo multivista (MVC). La Codificación de Vídeo de Alta eficacia (HEVC) es una nueva norma de codificación de vídeo desarrollada por el Equipo Conjunto de Colaboración en Codificación de vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo del UIT-T (VCEG) y el Grupo de Expertos en Imagen en Movimiento ISO/IEC (MPEG). Los trabajos de normalización de HEVC se basan/basaron en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba de HEVC (HM). E1HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo en relación con los dispositivos existentes de acuerdo con, por ejemplo, ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intrapredicción, el HM puede proporcionar hasta treinta y tres modos de codificación de intrapredicción.
Aunque no se muestra en la Figura 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 se pueden integrar cada uno con un codificador y un descodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y programa informático, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, en algunos ejemplos, las unidades MUX-DEMUX se ajustan al protocolo de multiplexación ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
La presente divulgación se puede referir, en general, al codificador de vídeo 20 que "señaliza" o "transmite" determinada información a otro dispositivo, tal como el descodificador de vídeo 30. El término "señalizar" o "transmitir" se puede referir en general a la comunicación de elementos sintácticos y/u otros datos usados para descodificar los datos de vídeo comprimidos. Dicha comunicación se puede producir en tiempo real o casi real. De forma alternativa, dicha comunicación se puede producir durante un período de tiempo, tal como se podría producir cuando se almacenan elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que, a continuación, se pueden recuperar por un dispositivo de descodificación en cualquier momento después de almacenarse en este medio.
Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Un grupo de imágenes (GOP) comprende, en general, una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos de sintaxis en una cabecera del GOP, una cabecera de una o más de las imágenes, u otras localizaciones, que describen un número de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos de sintaxis de fragmento que describen un modo de codificación para el fragmento respectivo. El codificador de vídeo
20 funciona típicamente en bloques de vídeo dentro de fragmentos de vídeo individuales para codificar los datos de vídeo.
En la HEVC y otras normas de codificación de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también se pueden denominar "tramas". Una imagen puede incluir tres matrices de muestras, indicadas como Sl, Sob y Sor. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luma. Sob es una matriz bidimensional de muestras de crominancia Cb. Sor es una matriz bidimensional de muestras de crominancia Cr. Las muestras de crominancia también se pueden denominar en el presente documento muestras de "croma". En otros ejemplos, una imagen puede ser monocromática y puede incluir solo una matriz de muestras de luma.
Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades del árbol de codificación (CTU). Cada una de las respectivas CTU puede ser un bloque de árbol de codificación de muestras de luma, dos bloques de árbol de codificación correspondientes de muestras de croma y estructuras de sintaxis usadas para codificar las muestras de los bloques de árbol de codificación. En una imagen monocromática o en una imagen que tenga tres planos de color separados, una CTU puede comprender un solo bloque de árbol de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de árbol de codificación. Un bloque del árbol de codificación puede ser un bloque de muestras NxN. Un bloque del árbol de codificación puede ser un bloque de muestras NxN. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación de máximo tamaño" (LCU). Las CTU de la HEVC pueden ser análogas en términos generales a los macrobloques de otras normas, tales como H.264/AVC. Sin embargo, una CTU no está necesariamente limitada a un tamaño en particular y puede incluir una o más unidades de codificación (CU). Los datos de sintaxis dentro de un flujo de bits pueden definir un tamaño para las CTU.
En la HEVC, la unidad de codificación más grande en un fragmento se denomina bloque arbolado de codificación (CTB). Un CTB contiene un árbol cuaternario cuyos nodos son unidades de codificación. El tamaño de un CTB puede variar desde 16x16 a 64x64 en el perfil principal de HEVC (aunque, técnicamente, se pueden admitir tamaños de CTB de 8x8). Cada CU está codificada con un modo.
Una trama o imagen de vídeo se puede dividir en uno o más fragmentos. Un fragmento puede incluir un número entero de CTU ordenadas consecutivamente por orden de codificación, tal como un orden de escaneo ráster.
Cada CTU se puede dividir en una o más unidades de codificación (CU) de acuerdo con un árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, con un nodo raíz correspondiente a la CTU. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hijo, cada uno de los cuales corresponde a una de las sub-CU. Una unidad de codificación (CU) podría ser del mismo tamaño que un CTB y puede ser tan pequeña como 8x8.
Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar datos de sintaxis para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida en sub-CU. Los elementos de sintaxis para una CU se pueden definir de forma recursiva y pueden depender de si la CU está dividida en diversas sub-CU. Si una CU no se divide adicionalmente, se denomina CU hoja.
El codificador de vídeo 20 puede realizar de forma recursiva una división de árbol cuaternario en los bloques de árbol de codificación de una CTU para dividir los bloques de árbol de codificación en bloques de codificación, de ahí el nombre "unidades del árbol de codificación". Un bloque de codificación puede ser un bloque de muestras NxN. En algunos ejemplos, una CU comprende un bloque de codificación de muestras de luma y dos correspondientes bloques de codificación de muestras de croma de una imagen que tiene una matriz de muestras de luma, una matriz de muestras Cb y una matriz de muestras Cr, y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. En una imagen monocromática o en una imagen que tenga tres planos de color separados, una CU puede comprender un solo bloque de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de codificación.
Una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto en que una CU no tiene una distinción de tamaño. Un tamaño de la CU correspondiente puede ser de forma cuadrada o rectangular. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol, con un máximo de 64x64 píxeles o más. Por ejemplo, un bloque de árbol se puede dividir en cuatro nodos hijo (también denominados sub-CU) y cada nodo hijo puede ser, a su vez, un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no separado, denominado nodo hoja del árbol cuaternario, comprende un nodo de codificación, también denominado CU hoja. Los datos de sintaxis asociados a un flujo de bits codificado pueden definir el número máximo de veces en que se puede dividir un bloque de árbol, lo que se denomina profundidad máxima de CU, y también pueden definir un tamaño mínimo de los nodos de codificación. En consecuencia, un flujo de bits también puede definir la unidad de codificación más pequeña (SCU). Esta divulgación usa el término "bloque" para referirse a cualquiera de una CU, que puede además incluir una o más unidades de predicción (PU), o unidades de transformada (TU), en el contexto de HEVC, o a estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y
subbloques de las mismas en H.264/AVC).
Una CU incluye una o más unidades de predicción (PU) y/o una o más unidades de transformada (TU). Los datos de sintaxis asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir entre si la CU está codificada en modo directo o de salto, codificada en modo de intrapredicción o codificada en modo de interpredicción. Una CU se puede dividir de modo que las PU de la CU no tengan forma cuadrada. Los datos de sintaxis asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuaternario.
Cuando una CU está intercodificada, la CU se puede dividir adicionalmente en dos o cuatro unidades de predicción (PU) o convertirse en una única PU cuando no se aplican divisiones adicionales. Cuando dos PU están presentes en una CU, las PU pueden ser rectángulos de la mitad del tamaño o dos rectángulos, uno con un cuarto del tamaño de la CU y el otro con tres cuartos del tamaño de la CU. En HEVC, los tamaños de PU más pequeños son 8x4 y 4x8. Cuando la CU está intercodificada, está presente un conjunto de información de movimiento para cada PU de la CU. Además, cada PU se puede codificar con un modo único de interpredicción para obtener el conjunto de información de movimiento.
El codificador de vídeo 20 puede dividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción puede ser un bloque rectangular (es decir, cuadrado o no cuadrado) de muestras en las que se aplica la misma predicción. Una PU de una CU puede comprender un bloque de predicción de muestras de luminancia, dos correspondientes bloques de predicción de muestras de crominancia de una imagen y estructuras de sintaxis usadas para predecir las muestras de bloques de predicción. En una imagen monocromática o una imagen que tenga tres planos de color independientes, una PU puede comprender un único bloque de predicción y estructuras de sintaxis usadas para predecir el bloque predictivo.
En general, una PU representa un área espacial correspondiente a la totalidad, o a una parte, de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. En algunos ejemplos, una PU se codifica usando intramodo o intermodo. Como otro ejemplo, cuando la PU está codificada mediante intermodo, la PU puede incluir datos que definen uno o más vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, lista 0, lista 1 o lista C) para el vector de movimiento.
En un ejemplo, la HEVC admite la predicción en diversos tamaños de PU. Si se supone que el tamaño de una CU particular es 2Nx2N, la HEVC admite la intrapredicción en tamaños de PU de 2Nx2N o NxN, así como la interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. La HEVC también admite la división asimétrica para la interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la división asimétrica, una dirección de una Cu no está dividida, mientras que la otra dirección está dividida en un 25 % y un 75 %. La parte de la CU correspondiente a la división de un 25 % se indica mediante una "n" seguida de una indicación de "arriba", "abajo", "izquierda" o "derecha". Por tanto, por ejemplo, "2NxnU" se refiere a una CU de 2Nx2N que está dividida horizontalmente, con una PU de 2Nx0,5N encima y una PU de 2Nx1,5N debajo.
En esta divulgación, "NxN" y "N por N" se puede usar de manera intercambiable para hacer referencia a las dimensiones de píxel de un bloque de vídeo en lo que respecta a dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tiene 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque de NxN tiene, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles de un bloque se pueden disponer en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N. Un bloque de transformada puede ser un bloque rectangular de muestras en el que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede comprender un bloque de transformada de muestras de luma, dos bloques correspondientes de transformada de muestras de croma y estructuras de sintaxis usadas para transformar las muestras de bloques de transformada. Por tanto, cada TU de una CU puede tener un bloque de transformada de luma, un bloque de transformada de Cb y un bloque de transformada de Cr. El bloque de transformada de luma de la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada de Cb puede ser un subbloque del bloque residual de Cb de la CU. El bloque de transformada de Cr puede ser un subbloque del bloque residual de Cr de la CU. En imágenes monocromáticas o imágenes que tengan tres planos de color independientes, una PU puede comprender un único bloque de transformada y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada. Una TU puede tener una conformación cuadrada o no cuadrada (por ejemplo, rectangular). En otras palabras, un bloque de transformada correspondiente a una TU puede tener forma cuadrada o no cuadrada.
La norma HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para CU diferentes.
El tamaño de las TU se basa típicamente en el tamaño de las PU dentro de una CU dada definida para una LCU dividida, aunque puede que este no sea siempre el caso. Las TU son típicamente del mismo tamaño o más pequeñas que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU se subdividen en unidades más pequeñas usando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). Los nodos hoja del RQT se pueden denominar TU. Los valores de diferencias de píxeles asociados a las TU se pueden transformar para producir coeficientes de transformada, que se pueden cuantificar.
Las unidades de transformada se pueden especificar usando una RQT (también denominado estructura de árbol cuaternario de TU), como se analiza anteriormente. Por ejemplo, un indicador de división puede indicar si una CU hoja está dividida en cuatro TU. A continuación, cada TU se puede dividir adicionalmente en sub-TU adicionales. Cuando una TU no se divide adicionalmente, se puede denominar TU hoja. En general, en la intracodificación, todas las TU hoja que pertenecen a una CU hoja comparten el mismo modo de intrapredicción. Es decir, el mismo modo de intrapredicción se aplica, en general, para calcular valores predichos para todas las TU de una CU hoja. En lo que respecta a la intracodificación, un codificador de vídeo 20 puede calcular un valor residual para cada TU hoja usando el modo de intrapredicción, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no se limita necesariamente al tamaño de una PU. Por tanto, las TU pueden ser más grandes o más pequeñas que una PU. En la intracodificación, una PU puede estar ubicada junto con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU hoja corresponde al tamaño de la CU hoja correspondiente.
Además, las TU de las CU hoja también se pueden asociar a estructuras de datos de árbol cuaternario respectivas, denominadas RQT. Es decir, una CU hoja puede incluir un árbol cuaternario que indica cómo se divide la CU hoja en las TU. El nodo raíz de un árbol cuaternario de TU corresponde en general a una CU hoja, mientras que el nodo raíz de un árbol cuaternario de CU corresponde en general a un bloque de árbol. En general, esta divulgación usa los términos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a menos que se indique de otro modo.
Tanto las PU como las TU pueden contener (es decir, corresponder a) uno o más bloques de muestras correspondientes a cada uno de los canales del espacio de color asociado con ese bloque. Los bloques de las PU pueden incluir muestras de un bloque predictivo, y los bloques de las TU pueden incluir bloques que incluyen muestras residuales correspondientes a la diferencia entre el bloque original y el bloque predictivo. Para los bloques asociados con un espacio de color YCbCr, los bloques de muestras de luma pueden corresponder al canal "Y", y dos canales diferentes de bloques de croma pueden corresponder a los canales Cb y Cr, respectivamente. Después de la codificación intrapredictiva o interpredictiva usando las PU de una CU, el codificador de vídeo 20 o el descodificador de vídeo 30 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de sintaxis que describen un procedimiento o modo de generación de datos de píxeles predictivos en el dominio espacial (también denominado dominio de píxel) y las TU pueden comprender coeficientes en el dominio de transformada, después de la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de enteros, una transformada de ondícula o una transformada conceptualmente similar, a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El codificador de vídeo 20 o el descodificador de vídeo 30 puede formar las TU, incluyendo los datos residuales para la CU, y, a continuación, transformar las TU para producir coeficientes de transformada para la CU. Por ejemplo, el codificador de vídeo 20 puede aplicar una transformada a un bloque de transformada para que una TU genere un bloque de coeficientes de transformada para la TU. El descodificador de vídeo 30 puede aplicar una transformada inversa al bloque de coeficiente de transformada para que la TU reconstruya el bloque de transformada para la TU.
Después de la aplicación de transformadas (si existen) para producir coeficientes de transformada, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformada. En otras palabras, el codificador de vídeo 20 puede cuantificar los coeficientes de transformada de un bloque de coeficiente de transformada. La cuantificación se refiere, en general, a un proceso en el que coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando una compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o la totalidad, de los coeficientes. Por ejemplo, un valor de n bits se puede redondear a la baja a un valor de m bits durante la cuantificación, donde n es mayor que m. La cuantificación inversa (es decir, descuantificación) puede incrementar las profundidades de bits de algunos o todos los coeficientes.
Después de la cuantificación, el codificador de vídeo 20 puede explorar los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. La exploración se puede diseñar para colocar los coeficientes de mayor energía (y, por lo tanto, de menor frecuencia) en la parte delantera de la matriz y para colocar los coeficientes de menor energía (y, por lo tanto, de mayor frecuencia) en la parte trasera de la matriz. En algunos ejemplos, el codificador de vídeo 20 utiliza un orden de recorrido predefinido para explorar los coeficientes de transformada cuantificados, para producir un vector en serie que se pueda someter a codificación por entropía. En otros ejemplos, el codificador de vídeo 20 realiza un recorrido adaptativo. Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede codificar por entropía el vector
unidimensional, por ejemplo, de acuerdo con la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) o con otra metodología de codificación por entropía. El codificador de vídeo 20 también puede codificar por entropía los elementos de sintaxis asociados a los datos de vídeo codificados para su uso por el descodificador de vídeo 30 en la descodificación de los datos de vídeo.
Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto, dentro de un modelo de contexto, a un símbolo que se va a transmitir. El contexto se puede referir, por ejemplo, a si los valores vecinos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo que se va a transmitir. Las palabras de código en la codificación de longitud variable (VLC) se pueden construir de modo que los códigos relativamente más cortos correspondan a los símbolos más probables, mientras que los códigos más largos correspondan a los símbolos menos probables. De esta manera, el uso de la VLC puede conseguir un ahorro en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
Además, el codificador de vídeo 20 puede enviar además datos de sintaxis, tales como datos de sintaxis basados en bloques, datos de sintaxis basados en tramas y datos de sintaxis basados en GOP, al descodificador de vídeo 30, por ejemplo, en una cabecera de trama, una cabecera de bloque, una cabecera de fragmento o una cabecera de GOP. Los datos de sintaxis de GOP pueden describir un número de tramas en el GOP respectivo, y los datos de sintaxis de trama pueden indicar un modo de codificación/predicción usado para codificar la trama correspondiente.
De acuerdo con la norma HEVC, cuando se usa interpredicción o intrapredicción, la información de movimiento puede estar disponible para el codificador de vídeo 20 o el descodificador de vídeo 30. Para cada bloque, un conjunto de información de movimiento puede estar disponible. Un conjunto de información de movimiento puede contener información de movimiento para las direcciones de predicción hacia adelante y hacia atrás. Los términos direcciones de predicción hacia adelante y hacia atrás están destinados a indicar dos direcciones de predicción asociadas con un modo de predicción bidireccional. Los términos "hacia adelante" y "hacia atrás" no necesariamente tienen un significado geométrico. Más bien "adelante" y "atrás" corresponden a la lista de imágenes de referencia 0 (RefPicListO) y la lista de imágenes de referencia 1 (RefPicList1) de una imagen actual. Cuando solo está disponible una lista de imágenes de referencia para una imagen o un fragmento, solo está disponible la RefPicList0 y la información de movimiento de cada bloque de un fragmento siempre es hacia adelante.
Para cada dirección de predicción, la información de movimiento debe contener un índice de referencia y un vector de movimiento. El índice de referencias es un índice a una imagen particular en la lista de imágenes de referencia. En algunos ejemplos, por simplicidad, un codificador de vídeo asume que un movimiento tiene un índice de referencia asociado. Se usa un índice de referencia para identificar una imagen de referencia en la lista de imágenes de referencia actuales (RefPicList0 o RefPicList1). Un vector de movimiento tiene un componente horizontal y otro vertical. Cuando una CU está intercodificada, está presente un conjunto de información de movimiento para cada PU. Un codificador de vídeo usa el modo de interpredicción asociado con la PU para derivar el conjunto de información de movimiento para esa PU.
El recuento de orden de imágenes (POC) se usa ampliamente en las normas de codificación de vídeo para identificar el orden de visualización de una imagen. Cuando están presentes múltiples secuencias de vídeo codificado en un flujo de bits, las imágenes con un mismo valor de POC pueden estar más cercanas entre sí en términos de orden de descodificación. Los valores de POC de las imágenes se usan típicamente para la construcción de la lista de imágenes de referencia, la obtención de un conjunto de imágenes de referencia como en HEVC y el ajuste a escala del vector de movimiento.
En la norma HEVC, existen dos modos de interpredicción, de fusión (que incluye el modo de salto, un caso especial de modo de fusión) y de predicción de vector de movimiento avanzada (AMVP) respectivamente para una unidad de predicción (PU). Tanto en el modo AMVP como de fusión, un codificador de vídeo mantiene una lista de candidatos de vectores de movimiento (MV) para múltiples predictores de vectores de movimiento. En algunos ejemplos, la lista de candidatos de MV contiene hasta 5 candidatos para el modo de fusión y solo dos candidatos para el modo AMVP. Un codificador de vídeo genera vector(es) de movimiento, así como índices de referencia que se van a usar al codificar una PU usando el modo de fusión seleccionando un candidato de la lista de candidatos de MV.
Cuando, por ejemplo, el codificador de vídeo 20 señaliza la información de movimiento de una PU actual usando el modo de fusión, el codificador de vídeo 20 puede generar una lista de candidatos que incluye uno o más candidatos de fusión. Cada uno de los candidatos de fusión especifica la información de movimiento de un predictor de vector de movimiento espacial o un predictor de vector de movimiento temporal (es decir, un TMVP). Un predictor de vector de movimiento espacial puede ser una PU en la imagen actual (es decir, la imagen que incluye
la PU actual). Un TMVP puede ser una PU en una imagen de referencia temporal (es decir, una imagen que se produce en una instancia de tiempo diferente de la imagen actual). Un candidato de fusión que especifica la información de movimiento de un TMVP se puede denominar "candidato de fusión temporal".
Después de generar la lista de candidatos de fusión, el codificador de vídeo 20 puede seleccionar uno de los candidatos de fusión e incluir, en un flujo de bits, un elemento de sintaxis que indica la posición, dentro de la lista de candidatos de fusión, del candidato de fusión seleccionado. Cuando el descodificador de vídeo 30 descodifica la PU actual, el descodificador de vídeo 30 genera la misma lista de candidatos de fusión. Además, el descodificador de vídeo 30 puede obtener el elemento de sintaxis del flujo de bits y puede usar el elemento de sintaxis para determinar el candidato de fusión seleccionado en la lista de candidatos de fusión. El descodificador de vídeo 30 puede usar a continuación la información de movimiento indicado por el candidato de fusión seleccionado como la información de movimiento de la PU actual. Un candidato de fusión puede contener un conjunto de información de movimiento, por ejemplo, vectores de movimiento correspondientes a ambas listas de imágenes de referencia (lista 0 y lista 1) y los índices de referencia correspondientes. Si un codificador de vídeo identifica un candidato de fusión mediante un índice de fusión, el codificador de vídeo usa las imágenes de referencia identificadas para la predicción de los bloques actuales. El codificador de vídeo también determina los vectores de movimiento asociados para los bloques actuales.
El modo AMVP es similar al modo de fusión en cuanto a que el codificador de vídeo 20 genera una lista de candidatos y selecciona un candidato de la lista de candidatos. Los candidatos en una lista de candidatos de AMVP se pueden denominar candidatos de predictor de vector de movimiento (MVP). Los candidatos en la lista de candidatos de AMVP pueden incluir candidatos que indiquen vectores de movimiento de predictores de vector de movimiento espacial y/o un predictor de vector de movimiento temporal. Sin embargo, cuando el codificador de vídeo 20 señaliza la información de movimiento de una PU actual usando el modo AMVP, el codificador de vídeo 20 puede señalizar una diferencia de vector de movimiento (MVD) para la PU actual y un índice de referencia, además de señalizar una posición del candidato MVP seleccionado en la lista de candidatos. Una MVD para la PU actual puede indicar una diferencia entre un vector de movimiento de la PU actual y un vector de movimiento del candidato seleccionado de la lista de candidatos AMVP. En la unipredicción, el codificador de vídeo 20 puede señalizar una MVD y un índice de referencia para la PU actual. En la bipredicción, el codificador de vídeo 20 puede señalizar dos MVD y dos índices de referencia para la PU actual. Por tanto, al codificar un bloque usando AMVP, para cada dirección de predicción potencial de la lista 0 o la lista 1, un codificador de vídeo señaliza explícitamente cada índice de referencia junto con un índice MVP de acuerdo con algunos ejemplos. El índice MVP es un índice de la lista de candidatos de MV, ya que el candidato AMVP contiene solo un vector de movimiento. En el modo AMVP, un codificador de vídeo puede refinar aún más los vectores de movimiento predichos.
Además, cuando la información de movimiento de una PU actual se señaliza usando el modo AMVP, el descodificador de vídeo 30 puede obtener, a partir del flujo de bits, una MVD para una PU actual y un índice de lista de candidatos. El descodificador de vídeo 30 puede generar la misma lista de candidatos AMVP y puede determinar, en base a la indicación de la posición del candidato MVP seleccionado en la lista de candidatos AMVP, el candidato seleccionado. El descodificador de vídeo 30 puede recuperar un vector de movimiento de la PU actual añadiendo una MVD al vector de movimiento indicado por el candidato MVP seleccionado. Es decir, el descodificador de vídeo 30 puede determinar, en base al menos en parte a un vector de movimiento indicado por el candidato MVP seleccionado y la MVD, un vector de movimiento de la PU actual. El descodificador de vídeo 30 puede a continuación usar los vector o vectores de movimiento recuperados de la PU actual para generar bloques predictivos para la PU actual.
Por tanto, como se describió anteriormente, un codificador de vídeo deriva candidatos de manera similar para los modos AMVP y de fusión en base a los mismos bloques vecinos espaciales y temporales. Sin embargo los modos de fusión y AMVP difieren en que un candidato de fusión corresponde a un conjunto completo de información de movimiento, mientras que un candidato AMVP contiene solo un vector de movimiento para una dirección de predicción e índice de referencia específicos. Los candidatos para ambos modos se obtienen de forma similar a partir de los mismos bloques vecinos espaciales y temporales. La Figura 2 es un diagrama conceptual que ilustra los candidatos de vector de movimiento espacial para los modos de fusión y AMVP. Es decir, la Figura 2 ilustra los candidatos MV espaciales para los modos de fusión y AMVP.
Los candidatos MV espaciales se derivan de los bloques vecinos que se muestran en la Figura 2, para una PU específica (PU0 ), aunque los procedimientos para generar los candidatos a partir de los bloques difieren para los modos de fusión y AMVP. Por ejemplo, en el modo de fusión, existen cinco posibles posiciones de candidato MV espacial: {a 0 , a 1 , b 0 , b 1 , b 2}, como se ilustra en la Figura 2. El codificador de vídeo determina para cada posición de candidato MV, si el candidato MV en esa posición está disponible. Es posible que los candidatos no estén disponibles si un bloque en esa localización aún no se ha descodificado, por ejemplo. El codificador de vídeo puede verificar el candidato MV disponible en el siguiente orden: {a1 , b1 , bü, a0 , b2}.
En el modo AMVP, un codificador de vídeo divide los bloques vecinos en dos grupos: un grupo izquierdo consiste en los bloques a0 y a1 , y un grupo vecino superior que consiste en los bloques ba b1 y b2 , como se muestra en la Figura 2. Para el grupo vecino a la izquierda, el codificador de vídeo verifica la disponibilidad de los bloques de
acuerdo con el siguiente orden en algunos ejemplos: {ao, ai}. Para el grupo vecino superior, el codificador de vídeo verifica la disponibilidad de los bloques vecinos superiores de acuerdo con el siguiente orden en algunos ejemplos: {bo, bi, b2}. Para cada grupo, el candidato potencial en un bloque vecino, que se refiere a la misma imagen de referencia que la indicada por el índice de referencia señalizado, tiene la prioridad más alta para ser elegido para formar un candidato final del grupo. Es posible que ninguno de los bloques vecinos contengan un vector de movimiento que apunte a la misma imagen de referencia. En este caso, si el codificador de vídeo no puede encontrar un vector de movimiento que apunte a la misma imagen de referencia que la indicada por el índice señalizado, el codificador de vídeo selecciona el primer candidato disponible. El codificador de vídeo ajusta a escala el primer candidato disponible para formar un candidato final. Ajustar a escala el vector de movimiento candidato compensa las diferencias de distancia temporal en este caso.
Como se describió anteriormente, una PU o CU puede tener un bloque de luma de muestras, así como múltiples bloques de croma correspondientes de muestras. En algunos ejemplos, pueden existir múltiples muestras de luma que correspondan a cada muestra de croma (lo que se denomina submuestreo de croma). En algunos ejemplos, el vector de movimiento se deriva para el componente de luma de una PU/CU actual. En dichos ejemplos, antes de que se use el vector de movimiento para la compensación de movimiento de croma, el vector de movimiento se ajusta a escala, en base al formato de muestreo de croma. Por tanto, al determinar un vector de movimiento, un codificador de vídeo deriva primero un componente de vector de movimiento de luma para una PU o CU. El codificador de vídeo puede ajustar a escala el vector de movimiento de luma para determinar el vector de movimiento de croma en base al formato de submuestreo de croma. Por ejemplo, el vector de movimiento se puede ajustar a escala de manera diferente dependiendo de si la imagen actual está codificada usando un formato 4:4:4, 4:2:2 o 4:2:0.
Además, en HEVC, un codificador de vídeo puede dividir una LCU en regiones de estimación de movimiento paralelas (MER). Cuando una LCU es parte de una MER, un codificador de vídeo permite que solo las PU vecinas que pertenecen a diferentes MER de la PU actual se incluyan en el proceso de construcción de la lista MVP de fusión/salto. El codificador de vídeo señaliza un tamaño de la MER en un parámetro de imagen establecido como un elemento de sintaxis (por ejemplo, "log2_parallel_merge_level_minus2").
En algunos ejemplos, como cuando un tamaño de MER es mayor que NxN muestras, y cuando un tamaño de CU más pequeño posible se establece en 2Nx2N muestras, una MER puede tener efectos sobre la disponibilidad de un bloque vecino espacialmente con respecto a la estimación de movimiento. Por ejemplo, en el caso mencionado anteriormente, si un bloque vecino espacialmente está dentro de la misma MER que una PU actual, un codificador de vídeo considera que el bloque vecino espacialmente no está disponible.
Las propuestas relacionadas con las técnicas de copia intrabloque (BC) se adoptaron recientemente para su inclusión en la norma de extensiones de rango (HEVC). D. Flynn, et al., "High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 7", Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) de ITU-T SG 16 WP3 e ISO/IEC JTC 1/SC29/WG 11 17,a reunión: Valencia, ES, 27 de marzo-4 de abril de 2014, documento: JCTVC-Q1005_v4 (a continuación en el presente documento, "JCTVC-Q1005_v4"), disponible en http://phenix.int-evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1005-v4.zip, es un borrador del Extensiones de rango de HEVC. Las extensiones de rango a HEVC también se están desarrollando por el JCT-VC.
En este documento, el texto de especificación de HEVC como en JCTVC-Q1003 se puede denominar "HEVC versión 1". La especificación de la extensión de rango se puede convertir en la versión 2 de HEVC. Sin embargo, en gran medida, en lo que respecta a las técnicas propuestas, por ejemplo, la predicción de vector de movimiento, HEVC versión 1 y la especificación de extensión de rango son técnicamente similares. Por lo tanto, la referencia a los cambios en la versión 1 de HEVC significa que los mismos cambios se pueden aplicar a la especificación de extensión de rango.
Recientemente se ha comenzado una investigación de nuevas herramientas de codificación para material de contenido de pantalla, tal como texto y gráficos con movimiento, y los investigadores han propuesto tecnologías que mejoran la eficacia de codificación para contenido de pantalla. Debido a que existe evidencia de que se pueden obtener mejoras significativas en la eficacia de la codificación explotando las características del contenido de pantalla con novedosas herramientas de codificación dedicadas, se emitió una convocatoria de propuestas (CfP). Los casos y los requisitos de uso de esta CfP se describen en el documento MPEG N14174. Durante la 17areunión JCT-VC, los investigadores establecieron un modelo de prueba SCC (SCM). Joshi et al., "High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 1", Equipo colaborativo conjunto sobre codificación de vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC 1/SC29/WG 11, 18a reunión, Sapporo, JP, 30 de junio-9 de julio de 2014 , documento JCTVC-R1005 (a continuación en el presente documento, "JCTVC-R1005"), que está disponible en: http://phenix.int-evry.fr/jct/doc_end_user/documents/18_Sapporo/wg11/JCTVC-R1005-v1.zip, es un borrador de trabajo (WD) reciente de SCC.
Muchas aplicaciones, tal como un escritorio remoto, juegos remotos, pantallas inalámbricas, información y entretenimiento automotriz, computación en la nube y otras, se están volviendo rutinarias en el uso diario. El
contenido de vídeo en estas aplicaciones puede consistir en combinaciones de contenido natural, texto, gráficos artificiales, etc. En las regiones de texto y gráficos artificiales, a menudo existen patrones repetidos (tales como caracteres, íconos, símbolos, etc.). Intra BC es una técnica que permite retirar la redundancia en la codificación de texto y gráficos artificiales, y mejora la eficacia de la codificación intratrama, como se describe en C. Pang, et al., "Non-RCE3 Intra Motion Compensation with 2-D MVs,", Equipo colaborativo conjunto sobre codificación de vídeo (JCT-VC) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC29/WG 11, 14a reunión: Viena, AT, 25 de julio-2 de agosto de 2013 , documento JCTVC-N0256 (a continuación en el presente documento, "JCTVC-N0256").
Intra BC es una técnica que permite retirar determinado tipo de redundancia espacial y mejorar la eficacia de codificación intratrama. Se pueden encontrar más detalles sobre las técnicas intra BC en JCTVC-N0256. El modo de intrapredicción de copia intrabloque (BC) se ha incluido en la codificación de contenido de pantalla actual (SCC). Un ejemplo de intra BC se muestra como en la Figura 3, en la que el bloque actual (por ejemplo, la CU o PU actual) se predice a partir de un bloque ya descodificado de la imagen o fragmento actual. La señal de predicción se puede reconstruir sin filtrado en bucle, incluyendo la eliminación de bloques y el desplazamiento adaptativo de muestra (SAO). Para el componente de luma o los componentes de croma que están codificados con intra BC, la compensación de bloque se realiza con compensación de bloque entero de acuerdo con algunos ejemplos; por lo tanto, no se necesita interpolación.
La Figura 3 es un diagrama conceptual que ilustra una técnica de copia intrabloque. En el ejemplo de la Figura 3, una imagen actual 103 incluye un bloque actual 102. En algunos ejemplos, el bloque actual 102 es una CU. En otros ejemplos, el bloque actual 102 es una PU. Además, la Figura 3 ilustra un bloque predictivo 104 (es decir, una señal de predicción) dentro de la imagen actual 103. Un codificador de vídeo puede usar el bloque predictivo 104 para predecir el bloque de vídeo actual 102 de acuerdo con un modo intra BC.
El codificador de vídeo 20 determina el bloque predictivo 104 de entre un conjunto de bloques de datos de vídeo previamente reconstruidos. En el ejemplo de la Figura 3, la región de búsqueda 108 dentro de la imagen 103 incluye un conjunto de bloques de vídeo previamente reconstruidos. El codificador de vídeo 20 puede determinar el bloque de vídeo predictivo 104 para predecir el bloque actual 102 de entre los bloques de vídeo en la región de búsqueda 108 en base a un análisis de la eficacia y exactitud relativas de predecir y codificar el bloque actual 102 en base a diversos bloques de vídeo dentro de la región de búsqueda 108.
El codificador de vídeo 20 determina el vector de desplazamiento bidimensional 106 que representa la localización o el desplazamiento del bloque de vídeo predictivo 104 con respecto al bloque de vídeo actual 102. Esta divulgación también se puede referir a los vectores usados en la copia intrabloque como "vectores de bloque". El vector de desplazamiento 106 incluye un componente de desplazamiento horizontal 112 y un componente de desplazamiento vertical 110, que representan respectivamente el desplazamiento horizontal y el desplazamiento vertical del bloque predictivo 104 con respecto al bloque actual 102. El codificador de vídeo 20 puede incluir uno o más elementos de sintaxis que identifican o definen el vector de desplazamiento bidimensional 106, por ejemplo, que definen el componente de desplazamiento horizontal 112 y el componente de desplazamiento vertical 110, en el flujo de bits de vídeo codificado. El descodificador de vídeo 30 puede descodificar los uno o más elementos de sintaxis para determinar el vector de desplazamiento 106, y puede usar el vector determinado para identificar el bloque predictivo 104.
El bloque actual 102 se puede ser una CU, o una PU de una CU. En algunos ejemplos, un codificador de vídeo, (por ejemplo, un codificador de vídeo 20 y/o un descodificador de vídeo 30), divide una CU que se predice de acuerdo con intra BC en un número de PU. En dichos ejemplos, el codificador de vídeo puede determinar un vector de desplazamiento bidimensional 106 respectivo para cada una de las PU de la CU. Por ejemplo, un codificador de vídeo puede dividir una CU2Nx2N en dos PU2NxN, dos PU Nx2N o cuatro PU NxN. En otros ejemplos, un codificador de vídeo puede dividir una CU2Nx2N en ((N/2)xN+(3N/2)xN) PU, ((3N/2)xN+(N/2)xN) PU, (Nx(N/2)+Nx(3N/2)) PU, (Nx(3N/2)+Nx(N/2)) PU, cuatro ((N/2)x2N PU o cuatro 2Nx(N/2) PU. En algunos ejemplos, el codificador de vídeo predice una CU 2Nx2N usando una PU 2Nx2N.
Cuando se codifica un bloque usando el modo intra BC, un codificador de vídeo determina que el vector de desplazamiento 106 tiene una precisión de píxeles enteros para los componentes de luma y de croma. Usando la precisión de píxeles enteros para el vector de movimiento evita la interpolación del bloque de referencia para generar un bloque predictivo. Un vector de bloque se predice y señaliza con precisión de píxeles enteros. De acuerdo con JCTVC-R1005, un codificador de vídeo establece inicialmente un predictor de vector de bloque en (-w, 0) al comienzo de cada CTB, donde "w" es el ancho de la CU. Usando el predictor de vector de bloque, un codificador de vídeo intenta predecir el vector de bloque para el bloque actual 102 en base a un valor de una CU o PU codificada previamente usando el modo intra BC.
El codificador de vídeo actualiza el predictor de vector de bloque después de codificar cada CU o PU intra BC. Si una CU o PU no se codifica usando intra BC, el codificador de vídeo no cambia el predictor de vector de bloque. Después de determinar el predictor de vector de bloque para una CU o PU, el codificador de vídeo 20 determina la diferencia entre el predictor y el vector de bloque real para determinar una diferencia de vector de bloque. El codificador de vídeo 20 puede codificar la diferencia de vector de bloque usando el procedimiento de codificación
de diferencia de vector de movimiento de HEVC.
En algunos ejemplos, intra BC está habilitada tanto a nivel de CU como de PU. Para el modo intra BC a nivel de PU, los tamaños de división PU 2NxN y Nx2N son admitidos para todos los tamaños de CU. Cuando la CU más pequeña posible tiene un tamaño de NxN muestras, se admite la división de PU.
Un codificador de vídeo puede a continuación tratar intraBC como intermodo. Además, Bin Li et al., "Non-SCCEl: Unification of intra BC and inter modes," Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC29/WG 11, 19a reunión: Sapporo, JP, 30 de junio-9 de julio de 2014 , el documento JCTVC-R0100 (a continuación en el presente documento, "JCTVC-R0100") propuso una técnica para la unificación de modo intra BC e intermodo. De acuerdo con la técnica de JCTVC-R0100, un codificador de vídeo añade una imagen actual a una lista de imágenes de referencia. Debido a que la imagen actual está en la lista de imágenes de referencia, el codificador de vídeo puede usar la imagen actual para intra BC como imagen de referencia de la misma manera que el codificador de vídeo usaría una imagen de referencia temporal (es decir, una imagen de referencia que tiene un valor POC diferente de un valor POC de la imagen actual). De acuerdo con la técnica de JCTVC-R0100, el codificador de vídeo marca la imagen actual como una imagen de referencia de largo plazo antes de descodificar la imagen actual, y marca la imagen actual como una imagen de referencia de corto plazo después de la descodificación de la imagen actual. Además, de acuerdo con la técnica de JCTVC-R0100, cuando el modo intra BC está habilitado, el codificador de vídeo sigue el proceso de análisis sintáctico y el proceso de descodificación de un fragmento P para un fragmento I. Como se define en JCTVC-Q1003, un fragmento I es un fragmento que se descodifica usando solo la intrapredicción. Además, como se define en JCTVC-Q1003, la intrapredicción es una predicción derivada de elemento de solo datos (por ejemplo, valores de muestra) del mismo fragmento descodificado. Como se define en JCTVC-Q1003, un fragmento P es un fragmento que se puede descodificar usando intrapredicción o interpredicción usando como máximo un vector de movimiento e índice de referencia para predecir los valores de muestra de cada bloque. Un fragmento B es un fragmento que se puede descodificar usando intrapredicción o interpredicción usando como máximo dos vectores de movimiento e índices de referencia para predecir los valores de muestra de cada bloque.
Cuando el modo intra BC se trata como un modo de interpredicción, pueden existir algunos problemas en la derivación de la predicción del vector de movimiento temporal para AMVP o fusión, la interacción con la intrapredicción restringida, la construcción de la lista de referencia, etc. Las técnicas de esta divulgación mejoran la unificación de intra BC e interpredicción en el caso de que el codificador de vídeo trate el modo intra BC como un modo de interpredicción. En este caso, el codificador de vídeo añade la imagen actual a la lista de referencia 0 (es decir, la lista de imágenes de referencia 0). Aunque el modo intra BC es similar al modo de interpredicción, un codificador de vídeo puede determinar si un bloque está codificado en intra BC o en intermodo comprobando si la imagen de referencia asociada con el bloque actual es la imagen actual (es decir, tiene el mismo valor de POC que la imagen actual). Si la imagen de referencia del bloque es la imagen actual, el bloque es del modo intra BC. De otro modo, el bloque actual se codifica usando el modo de interpredicción convencional. En el presente documento se describen diversos ejemplos de acuerdo con las técnicas de esta divulgación. Cada uno de los siguientes ejemplos se puede aplicar por separado o conjuntamente con uno o más de los otros.
En algunos ejemplos, cuando el codificador de vídeo (por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30) añade la imagen actual a la lista de referencia 0, el codificador de vídeo marca la imagen de referencia actual como un largo plazo antes de la descodificación de la imagen actual. En este caso, el codificador de vídeo puede codificar el vector de bloque para el modo intra BC usando precisión de píxeles enteros o precisión de subpíxeles, tal como precisión de un cuarto de píxel como se describe en la norma HEVC. Cuando el codificador de vídeo usa la predicción de vector de movimiento temporal para un bloque y el codificador de vídeo codifica un vector de movimiento para intra BC con precisión de píxeles enteros, el codificador de vídeo puede usar un predictor de vector de movimiento temporal (TMVP) para el modo intra BC, modo AMVP, o modo de fusión, con precisión de píxeles enteros. El codificador de vídeo puede usar un TMVP con precisión de píxeles enteros cuando el bloque colocalizado es un bloque intra BC o con precisión de subpíxeles cuando el bloque colocalizado es un interbloque convencional.
En algunos ejemplos, un codificador de vídeo puede determinar que el TMVP tiene una precisión de subpíxeles. En este caso, el codificador de vídeo puede desplazar a la derecha primero el vector de movimiento y a continuación usar el vector de movimiento desplazado a la derecha resultante como TMVP. Por ejemplo, el codificador de vídeo puede desplazar a la derecha los valores binarios del TMVP de modo que se eliminen cualesquiera bits (por ejemplo, los dos bits menos significativos) que representan las partes fraccionarias del TMVP, lo que da como resultado un TMVP que tiene una precisión de nivel de enteros. En otras palabras, el codificador de vídeo puede determinar que el TMVP tiene una precisión de subpíxeles y desplazar a la derecha el TMVP que se ha determinado que tiene una precisión de subpíxeles. En este ejemplo, el desplazamiento a la derecha del TMVP convierte el TMVP de la predicción de subpíxeles a la precisión de píxeles enteros, de este modo haciendo que el TMVP sea utilizable o eficaz para la codificación en modo intra BC del bloque actual. En otro ejemplo, el codificador de vídeo puede usar el vector de movimiento TMVP sin desplazar a la derecha el vector de movimiento, independientemente de si la precisión del vector de movimiento es precisión de enteros o precisión de subpíxeles. Usando el vector de movimiento TMVP sin realizar ningún desplazamiento a la derecha, el
codificador de vídeo interpreta el vector de movimiento de exactitud de subpíxeles como un vector de movimiento que tiene una exactitud de píxeles enteros.
Por tanto, en los ejemplos de esta divulgación en los que el codificador de vídeo realiza un proceso de codificación que implica desplazar a la derecha el TMVP, el codificador de vídeo determina un bloque colocalizado de datos de vídeo de una imagen de referencia diferente de la imagen actual. Además, en dichos ejemplos, el codificador de vídeo puede derivar un TMVP del bloque colocalizado de datos de vídeo. El codificador de vídeo puede desplazar a la derecha el TMVP. El codificador de vídeo puede codificar un bloque actual de datos de vídeo de la imagen actual usando modo de copia intrabloque y el predictor de vector de movimiento temporal desplazado a la derecha. Como parte de este proceso de codificación, el codificador de vídeo puede determinar si el bloque colocalizado de datos de vídeo está codificado en modo intra BC o codificado en modo interpredicción. Debido a que los bloques de vídeo codificados usando el modo intra BC tienen vectores de movimiento de precisión de píxeles enteros y los bloques de vídeo codificados usando interpredicción tienen vectores de movimiento de precisión de subpíxeles, el codificador de vídeo puede determinar, en base a si un bloque de vídeo está codificado usando modo intra BC o interpredicción, si el TMVP tiene precisión de subpíxeles o precisión de píxeles enteros. Por tanto, el codificador de vídeo se puede configurar para desplazar a la derecha el TMVP solo en respuesta a la determinación de que el bloque colocalizado de datos de vídeo está codificado en modo de interpredicción.
En algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar si el predictor de vector de movimiento temporal tiene precisión de píxeles enteros o precisión de subpíxeles. La precisión de subpíxeles también se puede denominar precisión de píxeles fraccionarios o precisión de píxeles no enteros. El codificador de vídeo 20 y/o el descodificador de vídeo 30 se pueden configurar para desplazar a la derecha el predictor de vector de movimiento temporal solo en respuesta a la determinación de que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles.
Como se indicó anteriormente, un codificador de vídeo puede desplazar a la derecha el TMVP para convertir el TMVP de tener una precisión de subpíxeles a tener una precisión de píxeles enteros. Por ejemplo, el codificador de vídeo puede desplazar a la derecha el TMVP para retirar la exactitud de subpíxeles, de este modo convirtiendo la exactitud de píxeles del TMVP de precisión de subpíxeles a precisión de píxeles enteros. Por ejemplo, el TMVP puede tener inicialmente valores (3,25, -3,5) para los componentes horizontales y verticales, lo que significa que el vector de movimiento indica una localización de 3,25 píxeles a la derecha y 3,5 píxeles por encima del bloque actual. En este ejemplo, el desplazamiento a la derecha para retirar la exactitud de subpíxeles da como resultado que el TMVP tenga los valores de (3, -3) para los componentes horizontales y verticales, lo que significa que el vector de movimiento indica una localización de 3 píxeles a la derecha y 3 píxeles por encima del bloque actual. Al convertir un predictor de vector de movimiento temporal que tiene una precisión de nivel de enteros, se puede evitar la interpolación del bloque de referencia para generar un bloque predictivo.
Como otro ejemplo, el descodificador de vídeo 30 se puede configurar para recibir un bloque de datos de vídeo codificado en modo de copia intrabloque de una imagen actual. El descodificador de vídeo 30 puede determinar un bloque colocalizado de datos de vídeo de una imagen de referencia que es diferente de la imagen actual. El descodificador de vídeo 30 puede derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado de datos de vídeo. El descodificador de vídeo 30 puede desplazar a la derecha el TMVP. El descodificador de vídeo 30 puede determinar un bloque predictivo en la imagen actual en base al TMVP desplazado a la derecha. El descodificador de vídeo 30 puede descodificar el bloque de datos de vídeo de la imagen actual usando el predictor de vector de movimiento temporal desplazado a la derecha.
Como otro ejemplo, el descodificador de vídeo 30 se puede configurar para incluir una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual. Además, en este ejemplo, el descodificador de vídeo 30 determina un bloque colocalizado de la imagen de referencia. El bloque colocalizado está colocalizado con un bloque actual de la imagen actual. El descodificador de vídeo 30 puede derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado. Por ejemplo, el descodificador de vídeo 30 puede determinar que el TMVP es igual a (-5,25, 4,00), cuyos valores se identifican mediante una representación binaria con los valores de exactitud de subpíxeles correspondientes, por ejemplo, a los dos bits menos significativos de la representación binaria. El descodificador de vídeo 30 se puede configurar para determinar que el TMVP tiene una precisión de subpíxeles. En algunos ejemplos, el descodificador de vídeo 30 determina que el TMVP tiene una precisión de subpíxeles determinando si el bloque colocalizado de datos de vídeo está codificado en modo de copia intrabloque o codificado en modo interpredicción. Una determinación de que el bloque colocalizado de datos de vídeo está codificado en modo interpredicción puede significar que el bloque colocalizado de datos de vídeo tiene una precisión de subpíxeles (por ejemplo, precisión de no enteros o precisión fraccionaria).
En este ejemplo, en respuesta a determinar que el TMVP tiene una precisión de subpíxeles, el descodificador de vídeo 30 desplaza a la derecha el TMVP. En algunos ejemplos, el descodificador de vídeo 30 solo desplaza a la derecha el TMVP al determinar que el bloque colocalizado está codificado en modo interpredicción. El descodificador de vídeo 30 se puede configurar para determinar, en base al TMVP desplazado a la derecha, un bloque predictivo dentro de la imagen actual. Por ejemplo, en el ejemplo de la Figura 3, el descodificador de vídeo
30 puede usar el TMVP desplazado a la derecha para determinar la señal de predicción 104. El descodificador de vídeo 30 puede generar datos residuales en base al bloque predictivo que se determinó en base al predictor de vector de movimiento temporal desplazado a la derecha.
Como otro ejemplo, el codificador de vídeo 20 se puede configurar para incluir una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual. El codificador de vídeo 20 se puede configurar para determinar un bloque colocalizado de una imagen de referencia de los datos de vídeo, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual, siendo la imagen de referencia diferente de la imagen actual. El codificador de vídeo 20 se puede configurar para derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado. El codificador de vídeo 20 se puede configurar para determinar que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles. Por ejemplo, el codificador de vídeo 20 se puede configurar para determinar que el predictor de vector de movimiento temporal tiene precisión de subpíxeles al estar configurado para determinar si el bloque colocalizado de datos de vídeo está codificado en modo de copia intrabloque o codificado en modo interpredicción. Una determinación de que el bloque colocalizado de datos de vídeo está codificado en modo interpredicción puede significar que el bloque colocalizado de datos de vídeo tiene una precisión de subpíxeles (por ejemplo, precisión de no enteros o precisión fraccionaria).
El codificador de vídeo 20 se puede configurar para desplazar a la derecha el predictor de vector de movimiento temporal que se determina que tiene una precisión de subpíxeles. En algunos ejemplos, el codificador de vídeo 20 se puede configurar para desplazar a la derecha el predictor de vector de movimiento temporal solo tras la determinación de que el bloque colocalizado está codificado en modo interpredicción. El codificador de vídeo 20 se puede configurar para determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual. El codificador de vídeo 20 se puede configurar para generar datos residuales en base al bloque predictivo.
Además, en algunos ejemplos de esta divulgación, para fragmentos I, un codificador de vídeo deriva el valor initType. El valor initType indica un tipo de contexto, que el codificador de vídeo usa para determinar cómo un elemento de sintaxis está codificado en CABAC. El valor initType puede depender del valor de initType puede depender además del elemento de sintaxis cabac_init_flag. Como se define en JCTVC-Q1003, el elemento de sintaxis cabac_init_flag especifica un procedimiento para determinar una tabla de inicialización usada en un proceso de inicialización para variables de contexto. El codificador de vídeo puede usar el valor initType para determinar el valor del valor ctxIdx, que puede indicar un contexto CABAC. En un ejemplo de acuerdo con las técnicas de esta divulgación, la derivación de initType se modifica de la siguiente manera en el siguiente pseudocódigo:
if( slice_type = = I && Untra block copy enabled flag )
initType = 0
else if (slice tvpe = = I && intra block copy enabled flag )
initType = cabac init flag ? 2 : 1
else if( slice type = = P )
initType = cabac_init_flag ? 2 : 1
else
initType = cabac_init_flag ? 1 : 2
Sección de código 1: derivación de initType
El código precedente de la sección 1 modifica la sección 9.3.2,2 de JCTVC-Q1003. El texto subrayado indica texto añadido a JCTVC-Q1003. Como se define en JCTVC-Q1003, el elemento de sintaxis slice_type indica un tipo de codificación para un fragmento. Por ejemplo, el elemento de sintaxis slice_type indica si un fragmento es un fragmento I, un fragmento P o un fragmento B. Además, como se define en JCTVC-R1005, intra_block_copy_enabled_flag es un elemento de sintaxis en un conjunto de parámetros de secuencia. Intra_block_copy_enabled_flag indica si intra BC está habilitada para fragmentos en secuencias de vídeo codificadas para las que el conjunto de parámetros de secuencia está activo. Por tanto, en el ejemplo de la sección de código 1, la variable initType tiene valores diferentes al codificar un fragmento I, dependiendo de si está habilitada intra BC para el fragmento I.
En otro ejemplo, un codificador de vídeo determina el valor initType usado para codificar en CABAC elementos de sintaxis que no están presentes en el flujo de bits para un fragmento I y que no usan intra BC, de acuerdo con la sección de código 1. En otras palabras, solo para los elementos de sintaxis que no existen para el fragmento I
convencional, es decir, sin intra BC, la variable initType correspondiente se deriva como en la sección de código 1. Para otros elementos de sintaxis, el codificador de vídeo puede establecer el valor de initType igual a 0.
En otro ejemplo, cuando se habilita intra BC para una CU o PU, un codificador de vídeo puede permitir modos de intrapredicción e interpredicción en un fragmento I. Por tanto, el descodificador de vídeo 30 puede descodificar un primer bloque de un fragmento I de una imagen usando intrapredicción y puede descodificar un segundo bloque del fragmento I usando un modo intra BC. De forma similar, el codificador de vídeo 20 puede codificar un primer bloque de un fragmento I de una imagen usando intrapredicción y puede codificar un segundo bloque del fragmento I usando un modo intra BC. El siguiente ejemplo de pseudocódigo ilustra esta posibilidad: Cuando pred_mode_flag no está presente, el codificador de vídeo deriva la variable CuPredMode[x][y] como sigue para x = x0...x0 nCbS - 1 e y = y0,.y0+nCbS-1:
-Si slice_type es igual a I e intra block copy enabled flag es igual a 0, se infiere que CuPredMode[x][y] es igual a MODE_INTRA.
Sección del código 2: Modificación de CUPredMode
El pseudocódigo precedente modifica la sección 7.4.9,5 de JCTVC-Q1003. El texto subrayado indica texto añadido a JCTVC-Q1003. Como se define en JCTVC-Q1003, pred_mode_flag es un elemento de sintaxis que indica un modo de predicción (por ejemplo, interpredicción (MODE_INTER) o intrapredicción (MODE_INTRA)) para una CU. Debido a que los modos de predicción de las CU se pueden inferir en algunas circunstancias, un codificador de vídeo carga los modos de predicción en una variable de matriz CuPredMode indexada en base a las localizaciones de los píxeles, en lugar de simplemente basarse en los valores de pred_mode_flag. Por tanto, en la sección de código 2, CuPredMode[x][y] indica un modo de predicción de una CU en la localización (x, y) en una imagen. nCbs indica un tamaño de un bloque de codificación de la CU. Por lo tanto, en el ejemplo de la sección de código 2, un codificador de vídeo puede inferir que el valor de CuPredMode[x][y] (es decir, el modo de predicción de la CU en la localización (x, y)) es MODE_iNt RA cuando la CU es en un fragmento I y está habilitada intra BC para el fragmento I. Por lo tanto, no es necesario que el codificador de vídeo 20 señalice un elemento de sintaxis pred_mode_flag para la CU. Esto puede reducir la tasa de bits de los datos de vídeo codificados.
Como otro ejemplo en el que un codificador de vídeo trata intra BC como interpredicción usando las técnicas unificadas de esta divulgación, un bloque codificado en intra BC puede compartir la misma lista de candidatos para modos AMVP o de fusión con un bloque intercodificado. En este ejemplo, la lista de candidatos puede incluir tanto bloques codificados intra BC como bloques intercodificados. Por tanto, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden generar una lista de candidatos de vector de movimiento que incluye al menos un vector de movimiento candidato para un bloque codificado en modo de copia intrabloque y al menos un candidato para un bloque codificado en modo de interpredicción. En algunos ejemplos, un bloque intra BC puede tener una lista de candidatos separada para AMVP o fusión de un bloque intercodificado. Aunque los modos de predicción son los mismos, un codificador de vídeo puede diferenciar un bloque codificado en intra BC de un interbloque convencional comprobando si la imagen de referencia para el bloque actual es la imagen actual.
Además, las técnicas particulares de esta divulgación también pueden potenciar intra BC e intermodo unificados modificando el proceso de construcción de lista de referencia. El siguiente lenguaje y pseudocódigo modifica el proceso de descodificación para la construcción de listas de imágenes de referencia en la sección 8.3.4 de JCTVC-Q1003 con texto subrayado que indica texto añadido a JCTVC-Q1003: Este proceso se invoca al comienzo del proceso de descodificación para cada fragmento P o B o para el fragmento I cuando intra block copy enabled flag es igual a 1 Las imágenes de referencia se direccionan mediante índices de referencia como se especifica en la cláusula 8.5.3,3.2 (Proceso de selección de imágenes de referencia). Un índice de referencia es un índice en una lista de imágenes de referencia. Al descodificar un fragmento P, existe una única lista de imágenes de referencia RefPicList0. Al descodificar un fragmento B, existe una segunda lista de imágenes de referencia independiente RefPicList1 además de RefPicList0.
Por tanto, el lenguaje precedente sirve para permitir la modificación del proceso de la imagen de referencia cuando el modo intra BC está habilitado para un fragmento I. Por tanto, en este ejemplo, el codificador de vídeo 20 puede construir una lista de imágenes de referencia para un fragmento I de una imagen cuando se habilita BC intra para el fragmento I, incluyendo la lista de imágenes de referencia la imagen. En un ejemplo similar, el descodificador de vídeo 30 puede obtener, a partir de un flujo de bits, un elemento de sintaxis (por ejemplo, intra_block_copy_enabled_flag) que indica si intra BC está habilitada para una imagen. En este ejemplo, en respuesta a la determinación en base al elemento de sintaxis que intra BC está habilitada para la imagen, el descodificador de vídeo 30 puede construir una lista de imágenes de referencia que incluye la imagen.
En un ejemplo, cuando se descodifica un fragmento I con intra_block_copy_enabled_flag igual a 1, el descodificador de vídeo 30 puede usar solo una lista de imágenes de referencia. En otro ejemplo, cuando se descodifica un fragmento I con intra_block_copy_enabled_flag igual a 1, puede existir una segunda lista de imágenes de referencia independiente RefPicList1 además de RefPicList0.
En algunos ejemplos, al comienzo del proceso de descodificación para cada fragmento, las listas de imágenes de referencia RefPicList0 y, para los fragmentos B, RefPicList1, se derivan de acuerdo con el siguiente pseudocódigo con texto subrayado que indica texto añadido a JCTVC-Q1003:
incrementRef = (intra block copy enabled flag)? 1 : 0
The variable NumRpsCurrTempListO is set equal to Max(
n u m re fid x lO a c tiv e m in u s l 1, NumPocTotalCurr) incrementRef
and the list RefPicListTempO is constructed as foliows:
rldx = 0
while( rldx < NumRpsCurrTempListO ) {
for( i = 0; i < NumPocStCurrBefore && rldx <
NumRpsCurrTempListO; rldx++, i++ )
RefPicListTempO[ rldx ] = RefPicSetStCurrBefore[ i ]
for( ¡ 0; i <NumPocStCurrAftcr && rldx <
NumRpsCurrTempListO; rldx++, i l-i- ) (8 8)
RefPicListTempO[ rldx ] = RefPicSetStCurrAfterf i ]
for( i = 0; i < NumPocLtCurr && rldx <
NumRpsCurrTempListO; rldx++, i++)
RefPicListTempO [ rldx ] = RefPicSetLtCurr[ i ]
if (incrementRef)
RefPicListTempO[ rldx ] = currPic (8-8)
}
Sección del código 3: Modificación de RefPicList0
Por tanto, el pseudocódigo precedente modifica la variable RefPicListTemp0 de modo que RefPicListTemp0[rIdx] es igual a la imagen actual, donde rIdx es el índice máximo en el último índice de la matriz RefPicListTemp0. En algunos ejemplos, el codificador de vídeo añade la imagen actual al comienzo de RefPicListTemp0 o antes de las imágenes de referencia de largo plazo. En algunos ejemplos, el codificador de vídeo añade la imagen actual a RefPicListTemp0 en base al parámetro slice_type. Por tanto, en estos ejemplos, un codificador de vídeo puede incluir, en una lista de imágenes de referencia, una imagen actual antes de imágenes de largo plazo en la segunda lista de imágenes de referencia; o incluir, en la lista de imágenes de referencia, la imagen actual en una localización en la lista de imágenes de referencia en base a si un fragmento es un fragmento I, un fragmento P o un fragmento B. Debido a que los índices de referencia de valores más pequeños se pueden representar usando menos bits, es deseable que las imágenes de referencia usadas con más frecuencia tengan índices de referencia de valores más pequeños. Por tanto, incluir la imagen actual en una localización anterior en la lista de imágenes de referencia en relación con otras imágenes de referencia en la lista de imágenes de referencia refleja la suposición de que la imagen actual se usará en intra BC con más frecuencia que las otras imágenes de referencia.
Como otro ejemplo, por ejemplo, para un fragmento I, el codificador de vídeo añade la imagen actual en RefPicListTemp0 al comienzo de RefPicListTemp0, y para un fragmento P o B al final de las imágenes de referencia de largo plazo. El siguiente pseudocódigo ilustra este ejemplo con texto subrayado que indica texto añadido a JCTVC-Q1003:
whilci rldx < NumRpsCurrTempListO ) (
if (incrementRef && Slice tvnc==l Slice)
RefPicListTempO[ rldx ] = currPic
for( i - 0 ; i < NumPocStCurrBefore && rldx<
NumRpsCurrTempListO; rldx++, i++ )
RcfPicListTcmpO[ rldx ] — RcfPicSctStCurrBcforc[ i ]
for( i = 0; i < NumPocStCurrAfter && rldx <
NumRpsCurrTempListO; rldx++, i+T ) (8-8)
RcfPicListTcmpOI rldx ] = RefPicSetStCurrAfterf i ]
for( i = 0; i < NumPocLtCurr && rldx <
NumRpsCurrTempListO; rldx-l—I-, i++ )
RefPicListTempO[ rldx ] = RefPicSetLtCurr[ i ]
if (incrementRef && (slice tvnc P Slice II
slice typg^B Slice))
RefPicListTempOl rldx 1 = currPic
Sección del código 4: Modificación de la construcción de la lista de imágenes de referencia
Como otro ejemplo, para un fragmento I, el codificador de vídeo añade la imagen actual a RefPicListTemp0 al principio, y para un fragmento P o B añade la imagen actual antes de las imágenes de referencia de largo plazo. Como otro ejemplo, la localización de añadir la imagen actual a RefPicListTemp0 se basa en el slice_type de la imagen actual.
En algunos ejemplos, un codificador de vídeo construye RefPicList0 basado en RefPicListTemp0 de acuerdo con el siguiente pseudocódigo con texto subrayado que indica texto añadido a JCTVC-Q1003: La lista RefPicList0 se construye como sigue:
for(rIdx = 0; rIdx <= num ref idx 10 active minus1; rIdx++)
RefPicListQfrIdxl = ref pic list modification flag 10 ?
RefPicListTempQNist entry 10[rIdxll : RefPicListTempQfrIdxl (8-9)
Cuando el fragmento es un fragmento B, la variable NumRpsCurrTempList1 se establece igual a Max(num_ref_idx_l1_active_minus1 1, NumPocTotalCurr) incrementRef y la lista RefPicListTemp1 se construye como sigue:
rldx = O
while( rldx < NumRpsCurrTempListl ) {
for( i = 0; i < NumPocStCurrAfter && rldx <
NumRpsCurrTempListl; rldx++, i+ )
ReíPicListTempl[ rldx ] = RefPicSetStCurrAfter[ i ]
for( i = 0; i < NumPocStCurrBefore && rldx <
NumRpsCurrTempListl; rldx++, i++ ) (8-10)
RefPicListTempl [ rTdx ] - RcfPicSctStCurrBcforc[ i ]
for( i = 0; i < NumPocLtCurr && rldx <
NumRpsCurrTempListl; rldx++, i++ )
RefPicListTempl[ rldx ] = RefPicSetLtCurr[ i ] (8-10)
if (incrementRef)
RefPicListTempl \ rldx 1 = currPic
}
En algunos ejemplos, similar al proceso anterior para RefPicListTempl, un codificador de vídeo puede añadir la imagen actual a RefPicListTemp1 en base al slice_type de la imagen actual de acuerdo con el siguiente pseudocódigo y lenguaje de normas de JCTVC-Q1003, Sección 8.3.4 con texto subrayado que indica texto añadido a JCTVC-Q1003:
Cuando el fragmento es un fragmento B, la lista RefPicList1 se construye como sigue:
fore(rIdx = 0; rIdx <= num_ref_idx_l1_active_minus1; rIdx++) (8-11)
RefPicList1 [rIdx] = ref_pic_list_modification_flag_l1 ? (8-11)
RefPicListTemp1[list_entry_l1[rIdx]] : RefPicListTemp1[rIdx]
donde currPic es la imagen descodificada actual como en 8.5.3.3.2 y tendrá el mismo ID temporal de la imagen actual.
En algunos ejemplos, el proceso de selección de imágenes de referencia para determinar los índices de imágenes de referencia de la Sección 8.5.3.3.2 de JCTVC-Q1003 se puede modificar como sigue con texto subrayado que indica texto añadido a JCTVC-Q1003:
La entrada a este proceso es un índice de referencia idxrefLX.
El resultado de este proceso es una imagen de referencia que consiste en una formación bidimensional de muestras de luma imgRefLXL y dos formaciones bidimensionales de muestras de croma imgRefLXob y imgRefLXor. La imagen de referencia de salida ListaImgRefX[idxrefLX] consiste en una matriz pic_height_in_luma_samples de muestras de luma refPicLXL y dos matrices PicWidthInSamplesC por PicHeightInSamplesC de muestras de croma refPicLXob y refPicLXor.
Las matrices de muestras de imágenes de referencia refPicLXL, refPicLXob y refPicLXor corresponden a matrices de muestras descodificadas Sl, Sob y Sor derivadas en la cláusula 8.7 o como en la cláusula 8.7 sin filtro en bucle (eliminación de bloques y SAO) para una imagen descodificada previamente o imagen descodificada actual. Cuando se habilita tanto intra BC como la intrapredicción restringida, la predicción para intrabloques o bloques intra BC solo puede ser a partir de intrabloques o del interbloque con cualesquiera imágenes de referencia siendo la imagen actual. En la intrapredicción restringida, la intrapredicción solo usa datos residuales y muestras descodificadas de bloques de codificación vecinos codificados usando modos de intrapredicción. Como se describe en JCTVC-Q1003, un elemento de sintaxis (por ejemplo, constrained_intra_pred_flag) se señaliza en un conjunto de parámetros de imagen para indicar si se usa intrapredicción restringida en la descodificación de imágenes para las que el conjunto de parámetros de imagen está activo. Por tanto, en este ejemplo, cuando tanto intra BC como la intrapredicción restringida están habilitadas para un fragmento, un codificador de vídeo puede usar la interpredicción para determinar un vector de bloque de un bloque del fragmento en base a un vector de bloque o vector de movimiento de un bloque en una imagen diferente.
JCTVC-Q1003 define un elemento de sintaxis cu_skip_flag. De acuerdo con un ejemplo de esta divulgación, la semántica de cu_skip_flag definida en JCTVC-Q1003 se cambia de la siguiente manera: cu_skip_flag[x0][y0] igual a 1 especifica que para la unidad de codificación actual, al descodificar un fragmento P o B o I con intra block copy enabled flag igual a 1, no se analizan más elementos de sintaxis excepto el índice de candidatos de fusión merge_idx[x0][y0] después de cu_skip_flag[x0][y0]. Por tanto, en este ejemplo, cuando cu_skip_flag es 1 para una CU actual en un fragmento I en el que intra BC está habilitada, el codificador de vídeo 20 señaliza un elemento de sintaxis de indicador de fusión, elementos de sintaxis MVD, elementos de sintaxis de indicador de predicción de vector de movimiento o elementos de sintaxis de dirección de interpredicción. Adicionalmente, cuando cu_skip_flag es 1 para una CU actual en un fragmento I en el que está habilitada intra BC, el codificador de vídeo 20 no señaliza un árbol de transformada para la CU actual. Más bien, el codificador de vídeo toma un bloque predictivo indicado por la información de movimiento del candidato de fusión indicado por el índice de candidatos de fusión como el bloque de codificación reconstruido de la CU actual.
QCTVC-Q1003 define un slice_temporal_mvp_enabled_flag en una cabecera de segmento de fragmento. El indicador slice_temporal_mvp_enabled especifica si los predictores de vector de movimiento temporal se pueden usar para la interpredicción. Cuando slice_temporal_mvp_enabled_flag es igual a 0 en un fragmento I cuando intra_block_copy_enabled_flag es igual a 0, no tiene impacto en el proceso de descodificación normativo de la imagen, sino que simplemente expresa una restricción de flujo de bits.
Si bien las técnicas de esta divulgación relacionadas con las técnicas de copia intrabloque e interpredicción unificadas se describen con respecto a HEVC, las técnicas de esta divulgación no se limitan a HEVC, y pueden ser aplicables en cualquier sistema de codificación de vídeo en el que se usen interpredicción e intra Bc , o sus análogos.
La Figura 4 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar las técnicas de intra BC e interpredicción unificadas descritas en esta divulgación. El codificador de vídeo 20 puede realizar la intracodificación y la intercodificación de bloques de vídeo dentro de fragmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o retirar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o retirar la redundancia temporal de un vídeo dentro de tramas o imágenes contiguas de una secuencia de vídeo. Intramodo (modo I) se puede referir a cualquiera de varios modos de compresión de base espacial. Como se analiza anteriormente, el codificador de vídeo 20 se puede configurar para codificar datos de vídeo en uno o más de una pluralidad de intramodos, incluyendo un modo intra DC, un modo intraangular, un modo intraplanar y un modo intra BC. Los intermodos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), se pueden referir a cualquiera de varios modos de compresión de base temporal.
En el ejemplo de la Figura 4, el codificador de vídeo 20 incluye una memoria de datos de vídeo 40, una unidad de procesamiento de predicción 41, una memoria intermedia de imágenes descodificadas 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. La unidad de procesamiento de predicción 41 incluye la unidad de división 35, la unidad de estimación de movimiento 42, la unidad de compensación de movimiento 44 y la unidad de procesamiento de intrapredicción 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también una unidad de cuantificación inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62. También se puede incluir un filtro de eliminación de bloques (no mostrado en la Figura 4) para filtrar los límites de bloque, para retirar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtra la salida del sumador 62. También se pueden usar filtros de bucle adicionales (en bucle o tras un bucle), además del filtro de eliminación de bloques.
La memoria de datos de vídeo 40 puede almacenar datos de vídeo que se van a codificar mediante los componentes del codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 40 se pueden obtener, por ejemplo, a partir de la fuente de vídeo 18. La memoria intermedia de imágenes descodificadas (DPB) 64 es una memoria intermedia que almacena datos de vídeo de referencia para su uso en la codificación de datos de vídeo por el codificador de vídeo 20 (por ejemplo, en los modos de intracodificación o intercodificación, también denominados modos de codificación de intrapredicción o interpredicción). La memoria de datos de vídeo 40 y el DPB64 pueden estar formadas por cualquiera de entre varios dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAM), RAM magnetoresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 40 y el DPB64 pueden ser proporcionados por el mismo dispositivo de memoria o por dispositivos de memoria independientes. En diversos ejemplos, la memoria de datos de vídeo 40 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera del chip en relación con esos componentes.
Como se muestra en la Figura 4, el codificador de vídeo 20 recibe datos de vídeo, y la unidad de división 35 divide los datos en bloques de vídeo. Esta división también puede incluir la división en fragmentos, mosaicos u otras unidades mayores, así como la división en bloques de vídeo, por ejemplo, de acuerdo con una estructura en árbol cuaternario de LCU y CU. El codificador de vídeo 20 ilustra, en general, los componentes que codifican los bloques
de vídeo dentro de un fragmento de vídeo que se va a codificar. El fragmento se puede dividir en múltiples bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados mosaicos). La unidad de procesamiento de predicción 41 puede seleccionar uno de una pluralidad de posibles modos de codificación, tal como uno de una pluralidad de modos de intracodificación, o uno de una pluralidad de modos de intercodificación, para el bloque de vídeo actual en base a resultados de error (por ejemplo, la tasa de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 41 se puede configurar para implementar las técnicas de esta divulgación descritas en el presente documento para realizar intra BC e interpredicción unificadas. La unidad de procesamiento de predicción 41 puede proporcionar el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia.
La unidad de procesamiento de intrapredicción 46, dentro de la unidad de procesamiento de predicción 41, puede realizar una codificación intrapredictiva del bloque de vídeo actual con respecto a uno o más bloques vecinos en la misma trama o fragmento que el bloque actual que se va a codificar, para proporcionar compresión espacial. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 dentro de la unidad de procesamiento de predicción 41 realizan la codificación interpredictiva del bloque de vídeo actual en relación con uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar compresión temporal.
La unidad de estimación de movimiento 42 se puede configurar para determinar el modo de interpredicción para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo en la secuencia como fragmentos P, fragmentos B o en algunos ejemplos fragmentos GPB. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que 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 o imagen de vídeo actual relativa a un bloque predictivo dentro de una imagen de referencia.
Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxel, que se puede determinar mediante una suma de diferencia absoluta (SAD), una suma de diferencia al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxeles subenteros de las imágenes de referencia almacenadas en la memoria intermedia de imágenes descodificadas 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionario de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxel completo y a las posiciones de píxel fraccionario, y proporcionar un vector de movimiento con una precisión de píxel fraccionario.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento 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 se puede seleccionar 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 intermedia de imágenes descodificadas 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar extraer o generar el bloque predictivo en base al vector de movimiento determinado mediante la estimación de movimiento, realizando posiblemente interpolaciones con una precisión de subpíxeles. Tras 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 que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se esté codificando, formando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luma como de croma. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de compensación de movimiento 44 también puede generar elementos de sintaxis asociados con los bloques de vídeo y el fragmento de vídeo para su uso por el descodificador de vídeo 30 en la descodificación de los bloques de vídeo del fragmento de vídeo.
La unidad de procesamiento de intrapredicción 46 puede intrapredecir un bloque actual, como una alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se describe anteriormente. En particular, la unidad de procesamiento de intrapredicción 46 puede determinar un modo de intrapredicción, incluyendo el modo intra BC, para su uso en la codificación de un bloque actual. En algunos ejemplos, la unidad de procesamiento de intrapredicción 46 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pasadas de codificación separadas, y la unidad de procesamiento de intrapredicción 46 (o la unidad de selección de modo, en algunos ejemplos) puede
seleccionar un modo de intrapredicción apropiado para usar a partir de los modos sometidos a prueba.
Por ejemplo, la unidad de procesamiento de intrapredicción 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción sometidos a prueba, y seleccionar el modo de intrapredicción que tenga las mejores características de velocidad-distorsión entre los modos sometidos a prueba. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original, no codificado, que se codificó para producir el bloque codificado, así como una velocidad de transmisión de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de procesamiento de intrapredicción 46 puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados para determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
De acuerdo con las técnicas de esta divulgación, como se describió anteriormente, el codificador de vídeo 20, se puede configurar para determinar un vector de movimiento para un bloque codificado en copia intrabloque (intra BC), codificado usando predicción de vector de movimiento temporal (TMVP), determinar un bloque colocalizado en base al vector TMVP; en respuesta a la determinación de que el bloque colocalizado está codificado en intra BC, usando el vector TMVP con precisión de píxeles enteros para determinar un bloque de referencia; y en respuesta a la determinación de que el bloque colocalizado está intercodificado, usar el vector TMVP con precisión de subpíxeles para determinar el bloque de referencia.
De acuerdo con las técnicas de esta divulgación, el descodificador de vídeo se puede configurar para realizar un proceso en general recíproco para cualquier proceso descrito en el presente documento con respecto a un codificador de vídeo. Asimismo, el codificador de vídeo se puede configurar para realizar un proceso en general recíproco para cualquier proceso descrito en el presente documento con respecto a un descodificador de vídeo.
En cualquier caso, tras seleccionar un modo de intrapredicción para un bloque, la unidad de procesamiento de intrapredicción 46 puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indique el modo de intrapredicción seleccionado de acuerdo con las técnicas de la presente divulgación. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices del modo de intrapredicción y una pluralidad de tablas de índices del modo de intrapredicción modificadas (también denominadas tablas de correlación de palabras de código), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índices del modo de intrapredicción y una tabla de índices del modo de intrapredicción modificada para su uso para cada uno de los contextos.
Después de que la unidad de procesamiento de predicción 41 genere el bloque predictivo para el bloque de vídeo actual, ya sea mediante interpredicción o intrapredicción, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo al bloque de vídeo actual. Los datos de vídeo residuales del bloque residual se pueden incluir en una o más TU y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de vídeo residuales en coeficientes de transformada residuales usando una transformada, tal como una transformada discreta del coseno (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformada 52 puede convertir los datos de vídeo residuales de un dominio de píxel a un dominio de transformada, tal como un dominio de la frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir además la velocidad de transferencia de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o la totalidad, de los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar, a continuación, una exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
Después de la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar una codificación de longitud variable adaptativa al contexto (CAVLC), una codificación aritmética binaria adaptativa al contexto (CABAC), una codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), una codificación por entropía por división de intervalos de probabilidad (PIPE) u otra metodología o técnica de codificación por entropía. Después de la codificación por entropía por la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir al descodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación por el descodificador de vídeo 30. La unidad de codificación por entropía 56 también puede codificar por entropía los vectores de movimiento y los otros elementos de sintaxis para el fragmento de vídeo actual que se esté codificando.
La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantificación inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el
dominio de píxel para su uso posterior como bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. 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 precisión de subpíxeles, para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento, producido por la unidad de compensación de movimiento 44, para producir un bloque de referencia para su almacenamiento en la memoria intermedia de imágenes descodificadas 64. El bloque de referencia se puede usar por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como bloque de referencia para realizar una interpredicción de un bloque en una trama o imagen de vídeo posterior.
De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 se puede configurar para realizar cualquier combinación de las técnicas descritas en esta divulgación.
La Figura 5 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo 30 que puede implementar las técnicas para intra BC e interpredicción unificadas descritas en esta divulgación. En el ejemplo de la Figura 5, el descodificador de vídeo 30 incluye una memoria de datos de vídeo 79, una unidad de descodificación por entropía 80, una unidad de procesamiento de predicción 81, una unidad de cuantificación inversa 86, una unidad de procesamiento de transformada inversa 88, un sumador 90 y una memoria intermedia de imágenes descodificadas 92. La unidad de procesamiento de predicción 81 incluye una unidad de compensación de movimiento 82 y una unidad de procesamiento de intrapredicción 84. En algunos ejemplos, el descodificador de vídeo 30 puede realizar una pasada de descodificación en general recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 de la Figura 4.
La memoria de datos de vídeo 79 puede almacenar los datos de vídeo, tales como un flujo de bits de vídeo codificado, que se van a descodificar por los componentes del descodificador de vídeo 30. Los datos de vídeo almacenados en la memoria de datos de vídeo 79 se pueden obtener, por ejemplo, a partir de un dispositivo de almacenamiento 34, a partir de una fuente de vídeo local, tal como una cámara, mediante comunicación de red cableada o inalámbrica de datos de vídeo o accediendo a medios físicos de almacenamiento de datos. La memoria de datos de vídeo 79 puede formar un búfer de imágenes codificadas (CPB) que almacena datos de vídeo codificados a partir de un flujo de bits de vídeo codificado. La memoria intermedia de imágenes de descodificadas 92 es un ejemplo de una memoria intermedia de imágenes de descodificación (DPB), que almacena datos de vídeo de referencia para su uso en la descodificación de datos de vídeo por el descodificador de vídeo 30 (por ejemplo, en los modos de intracodificación o intercodificación, también denominados modos de codificación de intrapredicción o interpredicción). La memoria de datos de vídeo 79 y el DPB92 pueden estar formadas por cualquiera de entre varios dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAM), RAM magnetoresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 79 y el DPB92 pueden ser proporcionados por el mismo dispositivo de memoria o por dispositivos de memoria independientes. En diversos ejemplos, la memoria de datos de vídeo 79 puede estar en un chip con otros componentes del descodificador de vídeo 30, o fuera del chip en relación con esos componentes.
Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un fragmento de vídeo codificado y elementos de sintaxis asociados desde el codificador de vídeo 20. La unidad de descodificación por entropía 80 del descodificador de vídeo 30 descodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. La unidad de descodificación por entropía 80 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de procesamiento de predicción 81. El descodificador de vídeo 30 puede recibir los elementos de sintaxis a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo.
Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad de procesamiento de intrapredicción 84 de la unidad de procesamiento de predicción 81 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual en base a un modo de intrapredicción señalizado y datos de bloques previamente descodificados de la trama o imagen actual. La unidad de procesamiento de predicción 81 se puede configurar para implementar las técnicas de esta divulgación para realizar intra BC e interpredicción unificadas. Cuando la trama de vídeo se codifica como un fragmento intercodificado (es decir, B o P), la unidad de compensación de movimiento 82 de la unidad de procesamiento de predicción 81 produce bloques predictivos para un bloque de vídeo del fragmento de vídeo actual en base a los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de descodificación por entropía 80. Los bloques predictivos se pueden generar a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción predeterminadas en base a las imágenes de referencia almacenadas en la memoria intermedia de imágenes descodificadas 92.
La unidad de compensación de movimiento 82 determina información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando sintácticamente los vectores de movimiento y otros elementos de sintaxis, y
usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se esté descodificando. Por ejemplo, la unidad de compensación de movimiento 82 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, de intrapredicción o interpredicción) usado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de interpredicción (por ejemplo, un fragmento B, un fragmento P o un fragmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo intercodificado del fragmento, un estado de interpredicción para cada bloque de vídeo intercodificado del fragmento y otra información para descodificar los bloques de vídeo del fragmento de vídeo actual.
La unidad de compensación de movimiento 82 también puede realizar interpolación en base a filtros de interpolación. La unidad de compensación de movimiento 82 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles subenteros de bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 86 cuantifica de forma inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo del fragmento de vídeo para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa que se debería aplicar. La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de enteros inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para generar bloques residuales en el dominio de píxel.
Después de que la unidad de compensación de movimiento 82 genere el bloque predictivo para el bloque de vídeo actual en base a los vectores de movimiento y a otros elementos de sintaxis, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de procesamiento de transformada inversa 88 a los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 82. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de bloques para filtrar los bloques descodificados para retirar distorsiones de pixelado. También se pueden usar otros filtros de bucle (bien en el bucle de codificación o bien después del bucle de codificación) para suavizar las transiciones entre píxeles o mejorar de otro modo la calidad de vídeo. Los bloques de vídeo descodificados en una trama o imagen dada se almacenan a continuación en la memoria intermedia de imágenes descodificadas 92, que almacena imágenes de referencia usadas para una compensación de movimiento posterior. La memoria intermedia de imágenes descodificadas 92 almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la Figura 1.
De acuerdo con aspectos de esta divulgación, el descodificador de vídeo 30 se puede configurar para realizar cualquier combinación de las técnicas descritas en esta divulgación.
La Figura 6 es un diagrama de flujo que ilustra un proceso de ejemplo para descodificar datos de vídeo consecuente con las técnicas de esta divulgación. El proceso de la Figura 6 se describe en general como que se realiza por un codificador de vídeo 30 con propósitos ilustrativos, aunque una variedad de otros procesadores también pueden llevar a cabo el proceso que se muestra en la Figura 6.
En el ejemplo de la Figura 6, el descodificador de vídeo 30 puede incluir (200) una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual. El descodificador de vídeo 30 puede determinar (202) un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual. El descodificador de vídeo 30 puede derivar (204) un predictor de vector de movimiento temporal a partir del bloque colocalizado. El descodificador de vídeo 30 puede determinar (206) que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles. El descodificador de vídeo 30 puede desplazar a la derecha (208) el predictor de vector de movimiento temporal que se determina que tiene precisión de subpíxeles. El descodificador de vídeo 30 puede determinar (210), en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual. El descodificador de vídeo 30 puede formar (212) un bloque de vídeo descodificado sumando muestras de un bloque residual y muestras correspondientes del bloque predictivo.
La Figura 7 es un diagrama de flujo que ilustra un proceso de ejemplo para la codificación de datos de vídeo consecuente con las técnicas de esta divulgación. El proceso de la Figura 7 se describe en general como que se realiza por un codificador de vídeo 20 con propósitos ilustrativos, aunque una variedad de otros procesadores también pueden llevar a cabo el proceso que se muestra en la Figura 7.
En el ejemplo de la Figura 7, el codificador de vídeo 20 puede incluir (220) una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual. El
codificador de vídeo 20 puede determinar (222) un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual. El codificador de vídeo 20 puede derivar (224) un predictor de vector de movimiento temporal a partir del bloque colocalizado. El codificador de vídeo 20 puede determinar (226) que el predictor de vector de movimiento temporal tiene una precisión de subpíxeles. El codificador de vídeo 20 puede desplazar a la derecha (228) el predictor de vector de movimiento temporal que se determina que tiene una precisión de subpíxeles. El codificador de vídeo 20 puede determinar (230), en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual. El codificador de vídeo 20 puede generar (232) datos residuales que representan diferencias entre el bloque predictivo que se determinó en base al predictor de vector de movimiento temporal desplazado a la derecha y el bloque actual.
En el presente documento se describen ahora ejemplos de acuerdo con las técnicas de esta divulgación. Se debería entender que un codificador de vídeo, tal como el codificador de vídeo 20 o el descodificador de vídeo 30, puede realizar el procedimiento de los siguientes ejemplos.
Ejemplo 1. Un procedimiento de codificación o descodificación de datos de vídeo, comprendiendo el procedimiento: determinar un vector de movimiento para un bloque codificado en copia intrabloque (intra BC) codificado usando predicción de vector de movimiento temporal (TMVP); determinar un bloque colocalizado en base al vector TMVP; en respuesta a la determinación de que el bloque colocalizado está codificado en intra BC, usando el vector TMVP con precisión de píxeles enteros para determinar un bloque de referencia; y en respuesta a la determinación de que el bloque colocalizado está intercodificado, usando el vector TMVP con precisión de píxeles subenteros para determinar el bloque de referencia.
Ejemplo 2. El procedimiento del ejemplo 1, que comprende además: codificar el bloque codificado en copia intrabloque en base al bloque de referencia o descodificar el bloque codificado en copia intrabloque en base al bloque referenciado.
Ejemplo 3. El procedimiento del ejemplo 1, que comprende además: cuando el vector TMVP tiene una precisión de píxeles subenteros, desplazar a la derecha el vector de movimiento TMVP.
Ejemplo 4. El procedimiento del ejemplo 1, que comprende además: en respuesta a la determinación de que el bloque colocalizado está codificado en intra BC, usando el vector TMVP con precisión de píxeles subenteros. Ejemplo 5. Un procedimiento para codificar o descodificar datos de vídeo, comprendiendo el procedimiento: codificar un fragmento I de datos de vídeo; y derivar un valor de un initType para un elemento de sintaxis del fragmento I en base a si el modo de copia intrabloque está habilitado para un bloque del fragmento I; y usar la variable initType para determinar un valor ctxldx para la codificación CABAC del elemento de sintaxis.
Ejemplo 6. El procedimiento del ejemplo 5, que comprende además: determinar si el elemento de sintaxis está asociado solo con el modo intra BC; y en respuesta a la determinación de que el elemento de sintaxis está asociado solo con el modo intra BC, establecer initType igual a 0.
Ejemplo 7. El procedimiento del ejemplo 5, que comprende además la codificación CABAC del elemento de sintaxis.
Ejemplo 8. El procedimiento del ejemplo 5, que comprende además la descodificación CABAC del elemento de sintaxis.
Ejemplo 9. El procedimiento del ejemplo 5, que comprende además: permitir modos de intrapredicción e interpredicción para el fragmento I cuando el modo intra BC está habilitado para el fragmento I.
Ejemplo 10. Un procedimiento para codificar o descodificar datos de video, comprendiendo el procedimiento: codificar un fragmento de una imagen, en respuesta a determinar que el modo de copia intrabloque (intra BC) está habilitado y el fragmento es un fragmento I o en respuesta a la determinación de que el fragmento es un fragmento P o B: modificar una construcción de lista de imágenes de referencia cuando el modo intra BC está habilitado para el fragmento.
Ejemplo 11. El procedimiento del ejemplo 10, que comprende además: usar solo una lista de imágenes de referencia cuando el fragmento es un fragmento I y cuando el modo intra BC está habilitado para el fragmento. Ejemplo 12. El procedimiento del ejemplo 10, que además comprende: usar una segunda lista de imágenes de referencia independiente cuando el fragmento es un fragmento I y cuando el modo intra BC está habilitado para el fragmento.
Ejemplo 13. El procedimiento del ejemplo 10, que comprende además: insertar una imagen actual del fragmento al final de la lista de imágenes de referencia.
Ejemplo 14. El procedimiento del ejemplo 10, que comprende además: añadir una imagen actual del fragmento al principio o antes de imágenes de referencia de largo plazo de la lista de imágenes de referencia.
Ejemplo 15. El procedimiento del ejemplo 14, en el que el fragmento es un fragmento P o un fragmento B.
Ejemplo 16. El procedimiento del ejemplo 10, que comprende además: añadir una imagen actual en una localización de la lista de imágenes de referencia en base a un tipo de fragmento del fragmento.
Ejemplo 17. El procedimiento del ejemplo 10, que comprende además: añadir una imagen actual en una localización de la lista de imágenes de referencia en base a un tipo de predicción de la imagen actual.
Ejemplo 18. El procedimiento del ejemplo 10, que comprende además: determinar una imagen de referencia a partir de la lista de imágenes de referencia; y sin filtrado en bucle, la eliminación de bloques y desplazamiento adaptativo de muestra para la imagen de referencia cuando la imagen de referencia es una imagen descodificada previamente o la imagen.
Ejemplo 19. El procedimiento del ejemplo 10, que comprende además: determinar para una unidad de codificación
de la imagen que un modo intra BC está habilitado para la unidad de codificación y el modo de salto está habilitado para la unidad de codificación; en respuesta a la determinación de que el modo de salto está habilitado para la unidad de codificación, analizar solo elementos de sintaxis de candidatos de fusión durante la construcción de la lista de imágenes de referencia.
Ejemplo 20. El procedimiento del ejemplo 10, que comprende además: determinar que el modo intra BC está habilitado para el fragmento; y en respuesta a determinar que el modo intra BC está habilitado para el fragmento, determinar que no se altera un proceso de descodificación para la imagen.
Ejemplo 21. El procedimiento del ejemplo 10, que comprende además: codificar la lista de imágenes de referencia. Ejemplo 22. El procedimiento del ejemplo 10, que comprende además: descodificar la lista de imágenes de referencia. En un ejemplo de la divulgación, el modo de intrapredicción comprende uno o más del modo intra BC, un modo intra Angular, un modo intra Planar o un modo intra DC, y el bloque actual de datos de vídeo está en cualquiera de un fragmento I, un fragmento P o un fragmento B.
Ejemplo 23. Cualquier combinación de cualquiera de los ejemplos descritos en esta divulgación.
En otro ejemplo de la divulgación, el codificador de vídeo 20 se puede configurar además para determinar un bloque de referencia particular de los uno o más bloques de referencia que se van a usar como un bloque predictivo para el bloque actual de datos de vídeo, en el que codificar el bloque actual de datos de vídeo usando el modo intra BC comprende predecir el bloque actual de datos de vídeo a partir del bloque predictivo.
Se debe reconocer que, dependiendo del ejemplo, determinadas acciones o eventos de cualquiera de las técnicas descritas en el presente documento se pueden realizar en una secuencia distinta, se pueden añadir, fusionar o excluir por completo (por ejemplo, no todas las acciones o eventos descritos son necesarios para la puesta en práctica de las técnicas). Además, en determinados ejemplos, las acciones o eventos se pueden realizar simultáneamente, por ejemplo, a través de procesamientos de múltiples hilos, procesamientos por interrupciones o mediante múltiples procesadores, en lugar de secuencialmente. Además, aunque con propósitos de claridad se describe que un único módulo o unidad realiza determinados aspectos de la presente divulgación, se debería entender que una combinación de unidades o módulos asociados a un codificador de vídeo pueden realizar las técnicas de la presente divulgación.
De acuerdo con esta divulgación, el término "o" se puede interrumpir como "y/o" donde el contexto no dicte de otro modo. Además, aunque frases como "uno o más" o "al menos uno" o similares pueden haber sido usadas para algunos rasgos característicos divulgados en el presente documento pero no para otros; los rasgos característicos para los cuales no se ha usado dicho lenguaje se pueden interpretar como que tienen un significado implícito donde el contexto no dicte de otro modo.
Determinados aspectos de esta divulgación se han descrito con respecto a una o más normas de codificación de vídeo (por ejemplo, la norma HEVC) con propósitos ilustrativos. Sin embargo, las técnicas descritas en la presente divulgación pueden ser útiles para otros procesos de codificación de vídeo, incluyendo otros procesos de codificación de vídeo, normativos o registrados, aún no desarrollados o en desarrollo.
El codificador de vídeo 20 (FIGS. 1 y 4) y/o el descodificador de vídeo 30 (FIGS. 1 y 5), los cuales se pueden denominar en general un codificador de vídeo, pueden realizar las técnicas descritas en el presente documento. Asimismo, la codificación de vídeo se puede referir a una codificación de vídeo o a una descodificación de vídeo, según corresponda.
Aunque se han descrito anteriormente combinaciones particulares de diversos aspectos de las técnicas, estas combinaciones se proporcionan simplemente para ilustrar ejemplos de las técnicas descritas en la presente divulgación. En consecuencia, las técnicas de la presente divulgación no se deben limitar a estos ejemplos de combinaciones, sino que pueden abarcar cualquier combinación concebible de los diversos aspectos de las técnicas descritas en la presente divulgación. Las técnicas descritas en esta divulgación se pueden usar juntas en cualquier combinación.
En uno o más ejemplos, las funciones descritas en esta divulgación se pueden implementar en hardware, programa informático, firmware o cualquier combinación de los mismos. Si se implementan en programa informático, las funciones se pueden almacenar en o transmitir a través de un medio legible por ordenador como una o más instrucciones o código, y ejecutarse por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador que correspondan a un medio tangible, tales como medios de almacenamiento de datos, o medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) medios de almacenamiento tangibles legibles por ordenador que sean no transitorios o a (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. Asimismo, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en cambio, se refieren a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, donde unos discos reproducen normalmente los datos magnéticamente, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior también se pueden incluir dentro del alcance de los medios legibles por ordenador.
Las instrucciones se pueden ejecutar mediante uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables in situ (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. Por consiguiente, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o de programa informático dedicados configurados para la codificación y la descodificación, o incorporarse en un códec combinado. Además, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar mediante un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores descritos anteriormente, junto con programa informático y/o firmware adecuados.
Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.
Claims (11)
1. Un procedimiento de descodificación de datos de vídeo usando modo de copia intrabloque, comprendiendo el procedimiento:
incluir (200) una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual, en el que incluir la imagen actual y la imagen de referencia en la lista de imágenes de referencia comprende
incluir, en la lista de imágenes de referencia, la imagen actual antes de las imágenes de largo plazo en la lista de imágenes de referencia;
determinar (202) un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual;
derivar (204) un predictor de vector de movimiento temporal a partir del bloque colocalizado;
determinar (206) si el predictor de vector de movimiento temporal tiene una precisión de subpíxeles;
desplazar a la derecha (208) el predictor de vector de movimiento temporal que se ha determinado que tiene precisión de subpíxeles;
determinar (210), en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y
formar (212) un bloque de vídeo descodificado sumando muestras de un bloque residual y muestras correspondientes del bloque predictivo.
2. El procedimiento de la reivindicación 1, en el que:
la lista de imágenes de referencia es una primera lista de imágenes de referencia, y el procedimiento comprende además construir una segunda lista de imágenes de referencia que incluye la imagen actual para un fragmento B de la imagen actual en base a la habilitación del modo de copia intrabloque para el fragmento B, o
la imagen actual es una primera imagen y la lista de imágenes de referencia es una primera lista de imágenes de referencia, y el procedimiento comprende además obtener, a partir de un flujo de bits, un elemento de sintaxis que indica si la copia intrabloque está habilitada para una segunda imagen; y como parte de un proceso de descodificación para un fragmento I de la segunda imagen, construir, en respuesta a una determinación en base al elemento de sintaxis de que la copia intrabloque está habilitada para el fragmento I, una segunda lista de imágenes de referencia, incluyendo la segunda lista de imágenes de referencia la segunda imagen, o
el procedimiento comprende además generar una lista de candidatos de vector de movimiento que incluye al menos un vector de movimiento candidato para un bloque codificado en modo de copia intrabloque y al menos un candidato para un bloque codificado en modo de interpredicción.
3. Un procedimiento para codificar datos de vídeo usando modo de copia intrabloque, comprendiendo el procedimiento:
incluir (220) una imagen actual y una imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual, en el que la inclusión de la imagen actual y la imagen de referencia en la lista de imágenes de referencia comprende:
incluir, en la lista de imágenes de referencia, la imagen actual antes de las imágenes de largo plazo en la lista de imágenes de referencia;
determinar (222) un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual;
derivar (224) un predictor de vector de movimiento temporal a partir del bloque colocalizado;
determinar (226) si el predictor de vector de movimiento temporal tiene precisión de subpíxeles;
desplazar a la derecha (228) el predictor de vector de movimiento temporal que se ha determinado que tiene precisión de subpíxeles;
determinar (230), en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y
generar (232) datos residuales que representan diferencias entre el bloque predictivo que se determinó en base al predictor de vector de movimiento temporal desplazado a la derecha y el bloque actual.
4. El procedimiento de la reivindicación 3, en el que:
la lista de imágenes de referencia es una primera lista de imágenes de referencia, y el procedimiento comprende además construir una segunda lista de imágenes de referencia que incluye la imagen actual para un fragmento B de la imagen actual en base a la habilitación del modo de copia intrabloque para el fragmento B, o
la imagen actual es una primera imagen, la lista de imágenes de referencia es una primera lista de imágenes de referencia, y el procedimiento comprende además construir una segunda lista de imágenes de referencia para un fragmento I de una segunda imagen cuando la copia intrabloque está habilitada para el fragmento I, incluyendo la segunda lista de imágenes de referencia, la segunda imagen, o
el procedimiento comprende además generar una lista de candidatos de vector de movimiento que incluye al menos un vector de movimiento candidato para un bloque codificado en modo de copia intrabloque y al menos un candidato para un bloque codificado en modo de interpredicción.
5. Un dispositivo (14, 30) para descodificar datos de vídeo usando modo de copia intrabloque, comprendiendo el dispositivo:
una memoria (79) configurada para almacenar datos de vídeo de una imagen de referencia; y
uno o más procesadores (80, 81, 82, 84, 86, 88) configurados para:
incluir una imagen actual y la imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual, en el que incluir la imagen actual y la imagen de referencia en la lista de imágenes de referencia comprende:
incluir, en la lista de imágenes de referencia, la imagen actual antes de las imágenes de largo plazo en la lista de imágenes de referencia;
determinar un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual;
derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado; determinar si el predictor de vector de movimiento temporal tiene precisión de subpíxeles;
desplazar a la derecha el predictor de vector de movimiento temporal que se ha determinado que tiene precisión de subpíxeles;
determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y
formar un bloque de vídeo descodificado sumando muestras de un bloque residual y muestras correspondientes del bloque predictivo.
6. El dispositivo (14, 30) de la reivindicación 5, en el que:
la lista de imágenes de referencia es una primera lista de imágenes de referencia, y los uno o más procesadores (80, 81, 82, 84, 86, 88) se configuran además para construir una segunda lista de imágenes de referencia que incluye la imagen actual para un fragmento B de la imagen actual en base a la habilitación del modo de copia intrabloque para el fragmento B, o
la imagen actual es una primera imagen, la lista de imágenes de referencia es una primera lista de imágenes de referencia, y los uno o más procesadores (80, 81, 82, 84, 86, 88) se configuran además para obtener, a partir de un flujo de bits, un elemento de sintaxis que indica si la copia intrabloque está habilitada para una segunda imagen; y como parte de un proceso de descodificación para un fragmento I de la segunda imagen, construir, en respuesta a una determinación en base al elemento de sintaxis de que la copia intrabloque está habilitada para el fragmento I, una segunda lista de imágenes de referencia, incluyendo la segunda lista de imágenes de referencia la segunda imagen, o
los uno o más procesadores (80, 81, 82, 84, 86, 88) están configurados además para generar una lista de candidatos de vector de movimiento que incluye al menos un vector de movimiento candidato para un bloque codificado en modo de copia intrabloque y al menos un candidato para un bloque codificado en modo de interpredicción.
7. El dispositivo (14, 30) de la reivindicación 5, en el que:
el dispositivo comprende al menos uno de un circuito integrado; un microprocesador; o un dispositivo de comunicación inalámbrica que comprende una o ambas de una pantalla de visualización (32) configurada para mostrar la imagen actual o una cámara configurada para capturar la imagen actual, o
el dispositivo comprende además una pantalla de visualización (32) configurada para mostrar datos de vídeo descodificados, o
los uno o más procesadores (80, 81, 82, 84, 86, 88) están configurados además para codificar los datos de vídeo, comprendiendo el dispositivo además una cámara configurada para capturar los datos de vídeo.
8. Un dispositivo (12, 20) para codificar datos de vídeo usando modo de copia intrabloque, comprendiendo el dispositivo:
una memoria (40) configurada para almacenar datos de vídeo de una imagen de referencia; y
uno o más procesadores (35, 41, 42, 44, 46, 52, 54, 56, 58, 60) configurados para:
incluir una imagen actual y la imagen de referencia en una lista de imágenes de referencia, siendo la imagen de referencia diferente de la imagen actual, en el que incluir la imagen actual y la imagen de referencia en la lista de imágenes de referencia comprende:
incluir, en la lista de imágenes de referencia, la imagen actual antes de las imágenes de largo plazo en la lista de imágenes de referencia;
determinar un bloque colocalizado de la imagen de referencia, estando colocalizado el bloque colocalizado con un bloque actual de la imagen actual;
derivar un predictor de vector de movimiento temporal a partir del bloque colocalizado;
determinar si el predictor de vector de movimiento temporal tiene precisión de subpíxeles;
desplazar a la derecha el predictor de vector de movimiento temporal que se ha determinado que tiene precisión de subpíxeles;
determinar, en base al predictor de vector de movimiento temporal desplazado a la derecha, un bloque predictivo dentro de la imagen actual, formándose el bloque predictivo usando matrices de muestras de referencia descodificadas para la imagen actual sin filtrado de muestras en bucle; y
generar datos residuales que representan diferencias entre el bloque predictivo que se determinó en base al predictor de vector de movimiento temporal desplazado a la derecha y el bloque actual.
9. El dispositivo (12, 20) de la reivindicación 8, en el que:
la lista de imágenes de referencia es una primera lista de imágenes de referencia, y los uno o más procesadores (35, 41, 42, 44, 46, 52, 54, 56, 58, 60) se configuran además para construir una segunda lista de imágenes de referencia que incluye la imagen actual para un fragmento B de la imagen actual en base a la habilitación del modo de copia intrabloque para el fragmento B, o
la imagen actual es una primera imagen, la lista de imágenes de referencia es una primera lista de imágenes de referencia, y los uno o más procesadores (35, 41, 42, 44, 46, 52, 54, 56, 58, 60) están configurados además para construir una segunda lista de imágenes de referencia para un fragmento I de una segunda imagen cuando la copia intrabloque está habilitada para el fragmento I, incluyendo la segunda lista de imágenes de referencia, la segunda imagen, o
los uno o más procesadores (35, 41, 42, 44, 46, 52, 54, 56, 58, 60) están configurados además para generar una lista de candidatos de vector de movimiento que incluye al menos un vector de movimiento candidato para un bloque codificado en modo de copia intrabloque y al menos un candidato para un bloque codificado en modo de interpredicción.
10. El dispositivo (12, 20) de la reivindicación 9, en el que:
el dispositivo comprende al menos uno de un circuito integrado; un microprocesador; o un dispositivo de comunicación inalámbrica que comprende una o ambas de una pantalla de visualización configurada para mostrar la imagen actual o una cámara configurada para capturar la imagen actual, o
el dispositivo comprende además una pantalla de visualización configurada para mostrar datos de vídeo descodificados, o
los uno o más procesadores están configurados además para descodificar datos de vídeo.
11. Un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o más procesadores de un dispositivo informático configurado para codificar datos de vídeo emprendan el procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 4.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201462040985P | 2014-08-22 | 2014-08-22 | |
| US14/831,644 US10412387B2 (en) | 2014-08-22 | 2015-08-20 | Unified intra-block copy and inter-prediction |
| PCT/US2015/046351 WO2016029144A1 (en) | 2014-08-22 | 2015-08-21 | Unify intra block copy and inter prediction |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2869854T3 true ES2869854T3 (es) | 2021-10-26 |
Family
ID=55349420
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES15763683T Active ES2869854T3 (es) | 2014-08-22 | 2015-08-21 | Unificar copia intrabloque e interpredicción |
Country Status (25)
| Country | Link |
|---|---|
| US (1) | US10412387B2 (es) |
| EP (1) | EP3183880B1 (es) |
| JP (1) | JP6594954B2 (es) |
| KR (1) | KR102447297B1 (es) |
| CN (1) | CN106576171B (es) |
| AU (1) | AU2015305312B2 (es) |
| BR (1) | BR112017003073B1 (es) |
| CA (1) | CA2956082C (es) |
| CL (1) | CL2017000386A1 (es) |
| CO (1) | CO2017001556A2 (es) |
| DK (1) | DK3183880T3 (es) |
| ES (1) | ES2869854T3 (es) |
| HU (1) | HUE054144T2 (es) |
| MX (1) | MX368490B (es) |
| MY (1) | MY183928A (es) |
| NZ (1) | NZ728527A (es) |
| PH (1) | PH12017500141B1 (es) |
| PL (1) | PL3183880T3 (es) |
| PT (1) | PT3183880T (es) |
| RU (1) | RU2697744C2 (es) |
| SA (1) | SA517380915B1 (es) |
| SG (1) | SG11201700195UA (es) |
| SI (1) | SI3183880T1 (es) |
| WO (1) | WO2016029144A1 (es) |
| ZA (1) | ZA201701288B (es) |
Families Citing this family (114)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10506254B2 (en) | 2013-10-14 | 2019-12-10 | Microsoft Technology Licensing, Llc | Features of base color index map mode for video and image coding and decoding |
| JP6359101B2 (ja) | 2013-10-14 | 2018-07-18 | マイクロソフト テクノロジー ライセンシング,エルエルシー | ビデオ及び画像の符号化及び復号のためのイントラブロックコピー予測モードの特徴 |
| CN105659602B (zh) | 2013-10-14 | 2019-10-08 | 微软技术许可有限责任公司 | 用于视频和图像编码的帧内块复制预测模式的编码器侧选项 |
| CN105917650B (zh) | 2014-01-03 | 2019-12-24 | 微软技术许可有限责任公司 | 视频和图像编/解码的方法、计算设备及计算机可读介质 |
| US11284103B2 (en) | 2014-01-17 | 2022-03-22 | Microsoft Technology Licensing, Llc | Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning |
| US10542274B2 (en) | 2014-02-21 | 2020-01-21 | Microsoft Technology Licensing, Llc | Dictionary encoding and decoding of screen content |
| CN105493505B (zh) | 2014-06-19 | 2019-08-06 | 微软技术许可有限责任公司 | 统一的帧内块复制和帧间预测模式 |
| EP3180917B1 (en) * | 2014-09-01 | 2022-04-20 | HFI Innovation Inc. | Method of intra picture block copy for screen content and video coding |
| CA2959682C (en) * | 2014-09-30 | 2022-12-06 | Microsoft Technology Licensing, Llc | Rules for intra-picture prediction modes when wavefront parallel processing is enabled |
| CA2961681C (en) | 2014-09-30 | 2022-08-09 | Hfi Innovation Inc. | Method of adaptive motion vetor resolution for video coding |
| GB2531003A (en) * | 2014-10-06 | 2016-04-13 | Canon Kk | Method and apparatus for vector encoding in video coding and decoding |
| US9918105B2 (en) | 2014-10-07 | 2018-03-13 | Qualcomm Incorporated | Intra BC and inter unification |
| US9854237B2 (en) | 2014-10-14 | 2017-12-26 | Qualcomm Incorporated | AMVP and merge candidate list derivation for intra BC and inter prediction unification |
| WO2016085229A1 (ko) * | 2014-11-27 | 2016-06-02 | 주식회사 케이티 | 비디오 신호 처리 방법 및 장치 |
| US10200711B2 (en) | 2015-03-27 | 2019-02-05 | Qualcomm Incorporated | Motion vector derivation in video coding |
| EP4040791A1 (en) * | 2015-06-08 | 2022-08-10 | Vid Scale, Inc. | Intra block copy mode for screen content coding |
| EP3308540B1 (en) | 2015-06-09 | 2020-04-15 | Microsoft Technology Licensing, LLC | Robust encoding/decoding of escape-coded pixels in palette mode |
| KR20180085714A (ko) * | 2015-12-17 | 2018-07-27 | 삼성전자주식회사 | 머지 후보 리스트를 이용한 비디오 복호화 방법 및 비디오 복호화 장치 |
| JP6992005B2 (ja) * | 2016-01-18 | 2022-01-13 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | コンピューティングシステムにおけるアンチエイリアシング動作の実行 |
| JP6891895B2 (ja) * | 2016-09-16 | 2021-06-18 | ソニーグループ株式会社 | 画像処理装置および画像処理方法 |
| US10812791B2 (en) | 2016-09-16 | 2020-10-20 | Qualcomm Incorporated | Offset vector identification of temporal motion vector predictor |
| MX2019007219A (es) * | 2016-12-22 | 2019-09-05 | Kt Corp | Metodo y aparato para procesar señales de video. |
| US10681370B2 (en) * | 2016-12-29 | 2020-06-09 | Qualcomm Incorporated | Motion vector generation for affine motion model for video coding |
| US12063387B2 (en) * | 2017-01-05 | 2024-08-13 | Hfi Innovation Inc. | Decoder-side motion vector restoration for video coding |
| US10701366B2 (en) * | 2017-02-21 | 2020-06-30 | Qualcomm Incorporated | Deriving motion vector information at a video decoder |
| US10701391B2 (en) * | 2017-03-23 | 2020-06-30 | Qualcomm Incorporated | Motion vector difference (MVD) prediction |
| US10531085B2 (en) * | 2017-05-09 | 2020-01-07 | Futurewei Technologies, Inc. | Coding chroma samples in video compression |
| CN110800302A (zh) * | 2017-06-07 | 2020-02-14 | 联发科技股份有限公司 | 用于视频编解码的帧内-帧间预测的方法及装置 |
| ES2982369T3 (es) * | 2017-06-30 | 2024-10-15 | Huawei Tech Co Ltd | Resiliencia de errores y procesamiento en paralelo para derivación de vector de movimiento de lado de decodificador |
| CN109428942A (zh) * | 2017-09-05 | 2019-03-05 | 南京南瑞继保电气有限公司 | 一种多现场文件服务系统及文件服务器跨现场同步方法 |
| US11012715B2 (en) | 2018-02-08 | 2021-05-18 | Qualcomm Incorporated | Intra block copy for video coding |
| US10764605B2 (en) * | 2018-02-14 | 2020-09-01 | Qualcomm Incorporated | Intra prediction for 360-degree video |
| KR102814907B1 (ko) * | 2018-03-21 | 2025-06-04 | 주식회사 엘엑스세미콘 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
| US10462483B1 (en) * | 2018-04-26 | 2019-10-29 | Tencent America LLC | Method and apparatus for video coding |
| US10448025B1 (en) * | 2018-05-11 | 2019-10-15 | Tencent America LLC | Method and apparatus for video coding |
| WO2019234598A1 (en) | 2018-06-05 | 2019-12-12 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between ibc and stmvp |
| CN110620932B (zh) * | 2018-06-19 | 2022-11-08 | 北京字节跳动网络技术有限公司 | 依赖模式的运动矢量差精度集 |
| EP3788782A1 (en) | 2018-06-21 | 2021-03-10 | Beijing Bytedance Network Technology Co. Ltd. | Sub-block mv inheritance between color components |
| CN110636298B (zh) | 2018-06-21 | 2022-09-13 | 北京字节跳动网络技术有限公司 | 对于Merge仿射模式和非Merge仿射模式的统一约束 |
| WO2020001578A1 (en) * | 2018-06-28 | 2020-01-02 | Huawei Technologies Co., Ltd. | Motion vector refinement search with integer pixel resolution |
| US10448026B1 (en) * | 2018-07-09 | 2019-10-15 | Tencent America LLC | Method and apparatus for block vector signaling and derivation in intra picture block compensation |
| US11838514B2 (en) * | 2018-08-06 | 2023-12-05 | Electronics And Telecommunications Research Institute | Image encoding/decoding method and device, and recording medium storing bitstream |
| KR102610092B1 (ko) | 2018-08-17 | 2023-12-04 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 비디오 코딩의 참조 픽처 관리 |
| CN116761000B (zh) * | 2018-08-29 | 2023-12-19 | 北京达佳互联信息技术有限公司 | 视频解码的方法、计算设备和存储介质 |
| JP7052075B2 (ja) | 2018-09-02 | 2022-04-11 | エルジー エレクトロニクス インコーポレイティド | 映像信号を処理するための方法および装置 |
| KR102698614B1 (ko) | 2018-09-07 | 2024-08-23 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 비디오 코딩에서 인트라 예측 및 인터 예측을 위한 보간 필터링 방법 및 장치 |
| WO2020058896A1 (en) | 2018-09-19 | 2020-03-26 | Beijing Bytedance Network Technology Co., Ltd. | Intra mode coding based on history information |
| US10848782B2 (en) * | 2018-09-21 | 2020-11-24 | Tencent America LLC | Method and apparatus for video coding |
| WO2020065517A1 (en) | 2018-09-24 | 2020-04-02 | Beijing Bytedance Network Technology Co., Ltd. | Simplified history based motion vector prediction |
| CN111083484B (zh) | 2018-10-22 | 2024-06-28 | 北京字节跳动网络技术有限公司 | 基于子块的预测 |
| US11758164B2 (en) * | 2018-10-23 | 2023-09-12 | Tencent America LLC | Method and apparatus for video coding |
| WO2020084553A1 (en) | 2018-10-24 | 2020-04-30 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidate derivation based on multiple information in sub-block motion vector prediction |
| CN112997495B (zh) | 2018-11-10 | 2024-02-20 | 北京字节跳动网络技术有限公司 | 当前图片参考中的取整 |
| CN111436227B (zh) | 2018-11-12 | 2024-03-29 | 北京字节跳动网络技术有限公司 | 在视频处理中使用组合帧间-帧内预测 |
| CN113228635B (zh) | 2018-11-13 | 2024-01-05 | 北京字节跳动网络技术有限公司 | 用于帧内块复制的运动候选列表构建方法 |
| WO2020103877A1 (en) | 2018-11-20 | 2020-05-28 | Beijing Bytedance Network Technology Co., Ltd. | Coding and decoding of video coding modes |
| EP3857896A4 (en) | 2018-11-22 | 2021-12-01 | Beijing Bytedance Network Technology Co. Ltd. | COORDINATION PROCESS FOR INTER-PREDICTION BASED ON SUB-BLOCKS |
| CN117528076A (zh) * | 2018-11-22 | 2024-02-06 | 北京字节跳动网络技术有限公司 | 用于具有几何分割的帧间预测的构建方法 |
| WO2020125798A1 (en) | 2018-12-22 | 2020-06-25 | Beijing Bytedance Network Technology Co., Ltd. | Intra block copy mode with dual tree partition |
| US11122288B2 (en) * | 2018-12-06 | 2021-09-14 | Qualcomm Incorporated | Spatio-temporal motion vector prediction patterns for video coding |
| KR20250058116A (ko) | 2018-12-07 | 2025-04-29 | 삼성전자주식회사 | 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치 |
| CN118741098A (zh) * | 2018-12-12 | 2024-10-01 | 数码士有限公司 | 使用当前图片参考的视频信号处理方法和设备 |
| CN109874011B (zh) * | 2018-12-28 | 2020-06-09 | 杭州海康威视数字技术股份有限公司 | 编码方法、解码方法及装置 |
| WO2020135465A1 (en) | 2018-12-28 | 2020-07-02 | Beijing Bytedance Network Technology Co., Ltd. | Modified history based motion prediction |
| CN118433377B (zh) * | 2018-12-31 | 2025-06-10 | 北京达佳互联信息技术有限公司 | 用于在视频编解码中信令发送运动合并模式的系统和方法 |
| CN111010577B (zh) * | 2018-12-31 | 2022-03-01 | 北京达佳互联信息技术有限公司 | 一种视频编码中帧内帧间联合预测的方法和设备及介质 |
| US11659166B2 (en) | 2019-01-02 | 2023-05-23 | Lg Electronics Inc. | Method and apparatus for coding image by using MMVD based on CPR |
| US11800089B2 (en) | 2019-01-02 | 2023-10-24 | Lg Electronics Inc. | SbTMVP-based inter prediction method and apparatus |
| US11949851B2 (en) | 2019-01-04 | 2024-04-02 | Lg Electronics Inc. | Inter prediction method and apparatus using CPR-based MMVD |
| WO2020142762A1 (en) * | 2019-01-06 | 2020-07-09 | Beijing Dajia Internet Information Technology Co., Ltd. | Bit-width control for bi-directional optical flow |
| EP3766249A4 (en) * | 2019-01-08 | 2022-01-26 | Tencent America Llc | Method and apparatus for memory bandwidth reduction for small inter blocks |
| US11095915B2 (en) * | 2019-01-31 | 2021-08-17 | Qualcomm Incorporated | Shared motion vector predictor list for intra block copy mode in video coding |
| SG11202107959WA (en) | 2019-02-02 | 2021-08-30 | Beijing Bytedance Network Technology Co Ltd | Buffer management for intra block copy in video coding |
| WO2020156549A1 (en) | 2019-02-02 | 2020-08-06 | Beijing Bytedance Network Technology Co., Ltd. | Buffer access methods for intra block copy in video coding |
| US11190800B2 (en) * | 2019-02-07 | 2021-11-30 | Qualcomm Incorporated | Motion vector predictor list generation for intra block copy mode in video coding |
| WO2020164630A1 (en) * | 2019-02-17 | 2020-08-20 | Beijing Bytedance Network Technology Co., Ltd. | Signaling of intra block copy merge candidates |
| KR102874728B1 (ko) | 2019-02-19 | 2025-10-22 | (주)휴맥스 | 인트라 예측 기반 비디오 신호 처리 방법 및 장치 |
| EP4679827A3 (en) * | 2019-02-20 | 2026-01-28 | Beijing Dajia Internet Information Technology Co., Ltd. | Constrained motion vector derivation for long-term reference pictures in video coding |
| EP3915265A4 (en) | 2019-03-01 | 2022-06-22 | Beijing Bytedance Network Technology Co., Ltd. | DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING |
| CN113545068B (zh) | 2019-03-01 | 2023-09-15 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的基于顺序的更新 |
| KR20240132530A (ko) | 2019-03-04 | 2024-09-03 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 복사의 구현 형태 |
| CN113709475B (zh) * | 2019-03-11 | 2022-11-01 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
| KR20260006075A (ko) * | 2019-03-11 | 2026-01-12 | 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. | 프로파일 및 레벨 의존적 코딩 옵션을 가지는 인코더 및 디코더, 인코딩 방법 및 디코딩 방법 |
| WO2020185043A1 (ko) * | 2019-03-13 | 2020-09-17 | 엘지전자 주식회사 | Ibc 예측을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법 |
| US11240516B2 (en) * | 2019-03-20 | 2022-02-01 | Tencent America LLC | Coding mode signaling for small blocks |
| CN113647108B (zh) | 2019-03-27 | 2024-11-19 | 北京字节跳动网络技术有限公司 | 基于历史的运动矢量预测 |
| AU2020250609B2 (en) * | 2019-04-01 | 2023-09-07 | Beijing Bytedance Network Technology Co., Ltd. | Using interpolation filters for history based motion vector prediction |
| CN114026850B (zh) * | 2019-06-28 | 2025-07-08 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的块矢量的有效性检查 |
| CN117294841A (zh) | 2019-07-06 | 2023-12-26 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的虚拟预测缓冲 |
| KR102635519B1 (ko) | 2019-07-10 | 2024-02-07 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 카피를 위한 샘플 식별 |
| KR102695788B1 (ko) | 2019-07-11 | 2024-08-14 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 복사를 위한 비트스트림 적합 제약 |
| CN114208186B (zh) | 2019-07-25 | 2023-12-22 | 北京字节跳动网络技术有限公司 | 帧内块复制虚拟缓冲区的尺寸限制 |
| BR112022001305A2 (pt) | 2019-07-25 | 2022-03-22 | Beijing Bytedance Network Tech Co Ltd | Método para processamento de vídeo, aparelho de processamento de vídeo, e, meio legível por computador |
| WO2021027862A1 (en) | 2019-08-13 | 2021-02-18 | Beijing Bytedance Network Technology Co., Ltd. | Motion precision in sub-block based inter prediction |
| KR102808776B1 (ko) * | 2019-08-13 | 2025-05-15 | 두인 비전 컴퍼니 리미티드 | 서브 블록 기반 인터 예측의 모션 정밀도 |
| JP7359942B2 (ja) | 2019-08-20 | 2023-10-11 | 北京字節跳動網絡技術有限公司 | 映像処理における代替の補間フィルタの選択的使用 |
| CN114342410B (zh) | 2019-09-05 | 2025-03-21 | 北京字节跳动网络技术有限公司 | 帧内块复制模式下块矢量的范围约束 |
| WO2021047540A1 (en) | 2019-09-09 | 2021-03-18 | Beijing Bytedance Network Technology Co., Ltd. | Coefficient scaling for high precision image and video coding |
| CN114402591B (zh) | 2019-09-13 | 2024-08-02 | 北京字节跳动网络技术有限公司 | 并置运动矢量的推导 |
| CN120956917A (zh) | 2019-09-20 | 2025-11-14 | 北京字节跳动网络技术有限公司 | 用于屏幕内容的自适应分辨率变化和可缩放编解码 |
| CN114731392B (zh) | 2019-09-21 | 2025-01-03 | 北京字节跳动网络技术有限公司 | 用于图像和视频编解码的高精度变换和量化 |
| WO2021052507A1 (en) | 2019-09-22 | 2021-03-25 | Beijing Bytedance Network Technology Co., Ltd. | Sub-picture coding and decoding of video |
| KR102735189B1 (ko) | 2019-09-23 | 2024-11-28 | 두인 비전 컴퍼니 리미티드 | 가상 파이프라인 데이터 유닛에 기초한 인트라 블록 복사 가상 버퍼의 설정 |
| US11076151B2 (en) | 2019-09-30 | 2021-07-27 | Ati Technologies Ulc | Hierarchical histogram calculation with application to palette table derivation |
| CN119544989A (zh) * | 2019-10-28 | 2025-02-28 | Lg电子株式会社 | 图像编码/解码设备以及传输图像的数据的设备 |
| US11589037B2 (en) | 2019-12-20 | 2023-02-21 | Qualcomm Incorporated | Motion compensation using size of reference picture |
| US20230055497A1 (en) * | 2020-01-06 | 2023-02-23 | Hyundai Motor Company | Image encoding and decoding based on reference picture having different resolution |
| US11915337B2 (en) | 2020-03-13 | 2024-02-27 | Advanced Micro Devices, Inc. | Single pass downsampler |
| WO2021185306A1 (en) | 2020-03-18 | 2021-09-23 | Beijing Bytedance Network Technology Co., Ltd. | Intra block copy buffer and palette predictor update |
| CN113709458B (zh) * | 2020-05-22 | 2023-08-29 | 腾讯科技(深圳)有限公司 | 视频编解码中的位移矢量预测方法、装置及设备 |
| EP3972278A1 (en) | 2020-09-17 | 2022-03-23 | Lemon Inc. | Subpicture tracks in coded video |
| WO2024017004A1 (en) * | 2022-07-22 | 2024-01-25 | Mediatek Inc. | Reference list reordering in video coding |
| US12608753B2 (en) | 2023-09-29 | 2026-04-21 | Advanced Micro Devices, Inc. | Smart access streaming |
| WO2025121534A1 (ko) * | 2023-12-06 | 2025-06-12 | 광운대학교 산학협력단 | 화면 내 블록 복사의 효과적인 움직임 벡터 예측 방법, 장치 및 기록매체 |
Family Cites Families (34)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2003063359A1 (en) * | 2002-01-23 | 2003-07-31 | Koninklijke Philips Electronics N.V. | Data compression and expansion of a digital information signal |
| JP2005167852A (ja) | 2003-12-04 | 2005-06-23 | Matsushita Electric Ind Co Ltd | 動きベクトル検出方法、及び動きベクトル検出装置 |
| US8054886B2 (en) | 2007-02-21 | 2011-11-08 | Microsoft Corporation | Signaling and use of chroma sample positioning information |
| US8275041B2 (en) | 2007-04-09 | 2012-09-25 | Nokia Corporation | High accuracy motion vectors for video coding with low encoder and decoder complexity |
| US9078007B2 (en) | 2008-10-03 | 2015-07-07 | Qualcomm Incorporated | Digital video coding with interpolation filters and offsets |
| US8929443B2 (en) | 2009-01-09 | 2015-01-06 | Microsoft Corporation | Recovering from dropped frames in real-time transmission of video over IP networks |
| KR101457894B1 (ko) | 2009-10-28 | 2014-11-05 | 삼성전자주식회사 | 영상 부호화 방법 및 장치, 복호화 방법 및 장치 |
| US20120051431A1 (en) * | 2010-08-25 | 2012-03-01 | Qualcomm Incorporated | Motion direction based adaptive motion vector resolution signaling for video coding |
| US9066102B2 (en) | 2010-11-17 | 2015-06-23 | Qualcomm Incorporated | Reference picture list construction for generalized P/B frames in video coding |
| CN103081475B (zh) | 2010-11-23 | 2016-04-27 | Lg电子株式会社 | 编码和解码图像的方法及使用该方法的设备 |
| US9008181B2 (en) | 2011-01-24 | 2015-04-14 | Qualcomm Incorporated | Single reference picture list utilization for interprediction video coding |
| US20120230407A1 (en) * | 2011-03-11 | 2012-09-13 | General Instrument Corporation | Interpolation Filter Selection Using Prediction Index |
| ES2621231T3 (es) * | 2011-04-12 | 2017-07-03 | Sun Patent Trust | Método de codificación de video de movimiento, aparato de codificación de video de movimiento, método de decodificación de video de movimiento, aparato de decodificación de video de movimiento y aparato de codificación/decodificación de video de movimiento |
| US10075733B2 (en) | 2011-09-29 | 2018-09-11 | Sharp Kabushiki Kaisha | Image decoding device, image decoding method, and image encoding device |
| US20140241434A1 (en) * | 2011-10-11 | 2014-08-28 | Mediatek Inc | Method and apparatus of motion and disparity vector derivation for 3d video coding and hevc |
| US20140321551A1 (en) * | 2011-10-21 | 2014-10-30 | Dolby Laboratories Licensing Corporation | Weighted predictions based on motion information |
| WO2013109460A1 (en) * | 2012-01-19 | 2013-07-25 | Vid Scale, Inc. | Method and apparatus for signaling and construction of video coding reference picture lists |
| US9549182B2 (en) | 2012-07-11 | 2017-01-17 | Qualcomm Incorporated | Repositioning of prediction residual blocks in video coding |
| JPWO2014103529A1 (ja) | 2012-12-28 | 2017-01-12 | シャープ株式会社 | 画像復号装置、およびデータ構造 |
| US9674542B2 (en) | 2013-01-02 | 2017-06-06 | Qualcomm Incorporated | Motion vector prediction for video coding |
| EP3021590A4 (en) | 2013-07-12 | 2017-03-29 | Sony Corporation | Image coding device and method |
| US20150098504A1 (en) | 2013-10-09 | 2015-04-09 | Qualcomm Incorporated | Block vector coding for intra block copying |
| GB2519514A (en) | 2013-10-11 | 2015-04-29 | Canon Kk | Method and apparatus for displacement vector component prediction in video coding and decoding |
| US9883197B2 (en) | 2014-01-09 | 2018-01-30 | Qualcomm Incorporated | Intra prediction of chroma blocks using the same vector |
| US20150271515A1 (en) | 2014-01-10 | 2015-09-24 | Qualcomm Incorporated | Block vector coding for intra block copy in video coding |
| CN110572643B (zh) * | 2014-01-29 | 2021-11-16 | 联发科技股份有限公司 | 利用自适应运动向量精度的方法和装置 |
| WO2015124110A1 (en) | 2014-02-21 | 2015-08-27 | Mediatek Singapore Pte. Ltd. | Method of video coding using prediction based on intra picture block copy |
| US9756354B2 (en) | 2014-03-17 | 2017-09-05 | Qualcomm Incorporated | Block vector predictor for intra block copying |
| US10432928B2 (en) | 2014-03-21 | 2019-10-01 | Qualcomm Incorporated | Using a current picture as a reference for video coding |
| KR102402622B1 (ko) * | 2014-06-19 | 2022-05-27 | 브이아이디 스케일, 인크. | 블록 벡터 도출을 이용하여 인트라 블록 복사 코딩을 위한 방법 및 시스템 |
| CN105493505B (zh) * | 2014-06-19 | 2019-08-06 | 微软技术许可有限责任公司 | 统一的帧内块复制和帧间预测模式 |
| US20150373362A1 (en) | 2014-06-19 | 2015-12-24 | Qualcomm Incorporated | Deblocking filter design for intra block copy |
| US9930341B2 (en) | 2014-06-20 | 2018-03-27 | Qualcomm Incorporated | Block vector coding for intra block copying |
| US9918105B2 (en) | 2014-10-07 | 2018-03-13 | Qualcomm Incorporated | Intra BC and inter unification |
-
2015
- 2015-08-20 US US14/831,644 patent/US10412387B2/en active Active
- 2015-08-21 PT PT157636838T patent/PT3183880T/pt unknown
- 2015-08-21 RU RU2017104967A patent/RU2697744C2/ru active
- 2015-08-21 CA CA2956082A patent/CA2956082C/en active Active
- 2015-08-21 AU AU2015305312A patent/AU2015305312B2/en active Active
- 2015-08-21 EP EP15763683.8A patent/EP3183880B1/en active Active
- 2015-08-21 JP JP2017510356A patent/JP6594954B2/ja active Active
- 2015-08-21 KR KR1020177004474A patent/KR102447297B1/ko active Active
- 2015-08-21 DK DK15763683.8T patent/DK3183880T3/da active
- 2015-08-21 NZ NZ728527A patent/NZ728527A/en unknown
- 2015-08-21 CN CN201580044237.2A patent/CN106576171B/zh active Active
- 2015-08-21 WO PCT/US2015/046351 patent/WO2016029144A1/en not_active Ceased
- 2015-08-21 ES ES15763683T patent/ES2869854T3/es active Active
- 2015-08-21 SG SG11201700195UA patent/SG11201700195UA/en unknown
- 2015-08-21 MX MX2017002258A patent/MX368490B/es active IP Right Grant
- 2015-08-21 PL PL15763683T patent/PL3183880T3/pl unknown
- 2015-08-21 BR BR112017003073-0A patent/BR112017003073B1/pt active IP Right Grant
- 2015-08-21 SI SI201531577T patent/SI3183880T1/sl unknown
- 2015-08-21 MY MYPI2017700110A patent/MY183928A/en unknown
- 2015-08-21 HU HUE15763683A patent/HUE054144T2/hu unknown
-
2017
- 2017-01-23 PH PH12017500141A patent/PH12017500141B1/en unknown
- 2017-02-15 CL CL2017000386A patent/CL2017000386A1/es unknown
- 2017-02-16 SA SA517380915A patent/SA517380915B1/ar unknown
- 2017-02-17 CO CONC2017/0001556A patent/CO2017001556A2/es unknown
- 2017-02-21 ZA ZA201701288A patent/ZA201701288B/en unknown
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2869854T3 (es) | Unificar copia intrabloque e interpredicción | |
| ES2755573T3 (es) | Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción | |
| ES2975180T3 (es) | Modificación de las profundidades de bits en la codificación de transformación de espacio de color | |
| ES2977203T3 (es) | Restricción de unidades de predicción en segmentos B a interpredicción unidireccional | |
| KR102033206B1 (ko) | 3d 비디오에 대한 진보된 병합/스킵 모드 및 진보된 모션 벡터 예측 (amvp) 모드 | |
| ES2669399T3 (es) | Vector de movimiento predicho entre visualizaciones para vídeo 3D | |
| ES2904510T3 (es) | Uso de una imagen actual como una referencia para la codificación de vídeo | |
| JP6336987B2 (ja) | 3d映像に関するインタービュー動き予測 | |
| CN107690809B (zh) | 使用空间及/或时间运动信息的子预测单元运动向量预测 | |
| US9699450B2 (en) | Inter-view predicted motion vector for 3D video | |
| ES2841986T3 (es) | Identificación de bloques usando vector de disparidad en la codificación de vídeo | |
| KR102180859B1 (ko) | 3d 비디오 코딩에서 디스패리티 벡터 도출 및 모션 벡터 예측에 대한 단순화 | |
| ES2892479T3 (es) | Modo de predicción ponderada para codificación de video escalable | |
| WO2019147826A1 (en) | Advanced motion vector prediction speedups for video coding | |
| US20160337662A1 (en) | Storage and signaling resolutions of motion vectors | |
| ES2842082T3 (es) | Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa | |
| ES2780686T3 (es) | Tipo de dependencia entre vistas en MV-HEVC | |
| KR20150139953A (ko) | 백워드 뷰 합성 예측 | |
| BR112015016011B1 (pt) | Método de decodificação de vídeo inter-vista ou intercamada, método de codificação de vídeo inter-vista ou inter-camada, dispositivo e memória legível por computador | |
| BR112014006185B1 (pt) | Método e aparelho para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo, e memória legível por computador | |
| ES2769837T3 (es) | Escalamiento del vector de movimiento espacial para codificación escalable de vídeo |