ES2845673T3 - Copia intrabloque a nivel de fragmento - Google Patents

Copia intrabloque a nivel de fragmento Download PDF

Info

Publication number
ES2845673T3
ES2845673T3 ES16727583T ES16727583T ES2845673T3 ES 2845673 T3 ES2845673 T3 ES 2845673T3 ES 16727583 T ES16727583 T ES 16727583T ES 16727583 T ES16727583 T ES 16727583T ES 2845673 T3 ES2845673 T3 ES 2845673T3
Authority
ES
Spain
Prior art keywords
fragment
video
ibc
syntax element
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES16727583T
Other languages
English (en)
Inventor
Vadim Seregin
Krishnakanth Rapaka
Cheng-Teh Hsieh
Rajan Joshi
Ye-Kui Wang
Chao Pang
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2845673T3 publication Critical patent/ES2845673T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

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

Abstract

Un procedimiento para descodificar datos de vídeo, el procedimiento que comprende: recibir un fragmento de una imagen actual de los datos de vídeo; analizar (162) un elemento de sintaxis de copia intrabloque (IBC) para determinar que un modo de IBC está habilitado para el fragmento; recibir un elemento de sintaxis que indica varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de datos de vídeo; en respuesta al elemento de sintaxis que indica que el número de imágenes de referencia en la lista de imágenes de referencia es igual a uno y la determinación de que el modo de IBC está habilitado para el fragmento, construir la lista de imágenes de referencia para el fragmento de los datos de vídeo sin recibir la información de modificación de la lista de imágenes de referencia añadiendo la imagen actual que comprende el fragmento como la primera entrada en la lista de imágenes de referencia.

Description

DESCRIPCIÓN
Copia intrabloque a nivel de fragmento
[0001] Esta solicitud reivindica el beneficio de la solicitud provisional de la patente estadounidense n.° 62/168.396, presentada el 29 de mayo de 2015.
CAMPO TÉCNICO
[0002] La presente divulgación se refiere a la codificación de vídeo.
ANTECEDENTES
[0003] 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 digitales personales (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 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, codificación avanzada de vídeo (AVC), el ITU-T-H.265, la norma de codificación de vídeo de alta eficacia (HEVC) y las ampliaciones 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.
[0004] Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (entre imágenes) para reducir o eliminar 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 contiguos en la misma imagen. Los bloques de vídeo en un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia de bloques contiguos 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.
[0005] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para 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 la codificación por entropía para lograr aún más compresión.
[0006] JCTVC-R0100 de Li et al., 20 de junio de 2014 describe "Non-SCCE1: Unification of intra BC and inter modes".
[0007] JCTVC-Q0132 de Xu et al., 3 de abril de 2014 describe "On unification of intra block copy and inter-picture motion compensation".
[0008] JCTVC-N1005 de Flynn et al., 7 de agosto de 2013 describe "Range Extensions Draft 4". "Overview of the H.264/AVC video coding standard" de Wiegand et al., IEEE Transactions on Circuits and Systems for Video Technology, vol 13, n.° 7, 1 de julio de 2003, páginas 560-576 describe una descripción general de la norma H.264/AVC.
BREVE EXPLICACIÓN
[0009] La presente divulgación describe técnicas que pueden mejorar las técnicas de codificación de vídeo existentes y, más específicamente, pueden mejorar las técnicas de codificación de vídeo existentes relacionadas con la copia intrabloque (IBC). Las técnicas de la presente divulgación pueden, en algunos supuestos de codificación, permitir un control más fino del uso de la IBC, por ejemplo, habilitando la IBC a nivel de fragmento.
[0010] La invención se define en las reivindicaciones independientes, a las que se dirige ahora la referencia. Los rasgos característicos preferidos se definen en las reivindicaciones dependientes.
[0011] Los detalles de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y en la descripción siguiente. 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
[0012]
La FIG. 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 la presente divulgación.
La FIG. 2 es un diagrama conceptual que ilustra un bloque predictivo de ejemplo de datos de vídeo dentro de una imagen actual para predecir un bloque actual de datos de vídeo dentro de la imagen actual de acuerdo con las técnicas de la presente divulgación.
La FIG. 3 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 FIG. 4 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 FIG. 5 es un diagrama de flujo que muestra un procedimiento de codificación de datos de vídeo según técnicas de la presente divulgación.
La FIG. 6 es un diagrama de flujo que muestra un procedimiento de descodificación de datos de vídeo según técnicas de la presente divulgación.
La FIG. 7 es un diagrama de flujo que muestra un procedimiento de descodificación de datos de vídeo según técnicas de la presente divulgación.
DESCRIPCIÓN DETALLADA
[0013] Una secuencia de vídeo en general se representa como una secuencia de imágenes. Típicamente, se utilizan técnicas de codificación basadas en bloques para codificar cada una de las imágenes individuales. Es decir, cada imagen se divide en bloques y cada uno de los bloques se codifica individualmente. Codificar un bloque de datos de vídeo en general implica formar un valor predicho para el bloque y codificar un valor residual que representa la diferencia entre el bloque original y el valor predicho. Específicamente, el bloque original de datos de vídeo incluye una matriz de valores de píxeles y el valor predicho incluye una matriz de valores de píxeles predichos. El valor residual se corresponde con las diferencias píxel por píxel entre los valores de píxel del bloque original y los valores de píxel predichos, de manera que la suma de los valores residuales a los valores predichos se aproxima a los valores originales.
[0014] Las técnicas de predicción para un bloque de datos de vídeo se clasifican en general como intrapredicción o interpredicción. La intrapredicción, o predicción espacial, en general implica predecir el bloque a partir de valores de píxeles contiguos que forman parte de bloques previamente codificados en las mismas imágenes que el bloque que se predice. La interpredicción, o predicción temporal, en general implica predecir el bloque a partir de valores de píxeles de imágenes codificadas previamente (por ejemplo, tramas o fragmentos).
[0015] Muchas aplicaciones, como puede ser 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 la vida diaria. El contenido de vídeo en estas aplicaciones normalmente es una combinación de contenido natural, texto, gráficos artificiales y otro contenido. En las zonas de texto y gráficos artificiales, a menudo existen patrones que se repiten (como caracteres, iconos, símbolos o similares).
[0016] La intrapredicción de bloques de datos de vídeo a partir de bloques predictivos de datos de vídeo dentro de la misma imagen, que puede denominarse copia intrabloque (abreviado IntraBC o IBC) y, a veces, también denominada intracompensación de movimiento (IntraMC o IMC), es una técnica que puede permitir que un codificador de vídeo elimine la redundancia y mejore la eficacia de la codificación intratrama. En la codificación de intrapredicción típica, los codificadores de vídeo (por ejemplo, codificadores de vídeo y descodificadores de vídeo) utilizan bloques de datos de vídeo previamente reconstruidos que están directamente arriba o abajo o directamente en línea horizontal con el bloque actual de datos de vídeo en la misma imagen para la predicción del bloque de vídeo actual. En otras palabras, si una imagen o trama de datos de vídeo se impone en una cuadrícula 2-D, cada bloque de datos de vídeo ocupa un intervalo único de valores x y valores y. Por consiguiente, algunos codificadores de vídeo pueden predecir un bloque actual de datos de vídeo basado en bloques de datos de vídeo previamente codificados en la misma imagen que comparten solo el mismo conjunto de valores x (es decir, verticalmente en línea con el bloque de vídeo actual) o el mismo conjunto de valores y (es decir, horizontalmente en línea con el bloque de vídeo actual).
[0017] Puede ser ventajoso para un codificador de vídeo predecir un bloque de vídeo actual a partir de un bloque de datos de vídeo previamente reconstruido que se encuentra en la misma trama o imagen, pero no necesariamente directamente arriba o a la izquierda (o directamente a la derecha o abajo) del bloque actual de datos de vídeo. Al incluir más bloques de vídeo en el conjunto predictivo, un codificador de vídeo puede lograr una predicción más exacta del bloque de vídeo actual, aumentando así la eficacia de la codificación.
[0018] En general, la presente divulgación describe técnicas para codificar datos de vídeo que incluyen un modo para la intrapredicción de bloques de datos de vídeo a partir de bloques predictivos de datos de vídeo dentro de la misma imagen, que puede denominarse modo de IBC. Las técnicas de IBC de la presente divulgación pueden incluir identificar un bloque predictivo de datos de vídeo para el bloque actual de datos de vídeo. El bloque predictivo de datos de vídeo puede, por ejemplo, corresponderse con un bloque reconstruido de datos de vídeo dentro de la misma imagen que el bloque actual de datos de vídeo. El bloque predictivo de datos de vídeo puede ser desde dentro de una zona prevista que está dentro de la imagen. La zona prevista también puede denominarse zona de predicción de la IBC. La zona prevista puede, por ejemplo, corresponderse con una zona arriba, arriba a la derecha, arriba a la izquierda y/o izquierda del bloque actual de datos de vídeo. El bloque predictivo de datos de vídeo no se limita a estar inmediatamente arriba o inmediatamente a la izquierda del bloque de vídeo actual y, por consiguiente, el vector utilizado para identificar el bloque predictivo en relación con el bloque actual no es necesariamente un vector unidimensional. En cambio, para identificar o determinar el bloque predictivo de datos de vídeo, un codificador de vídeo puede codificar uno o más elementos de sintaxis que definen un vector bidimensional que incluye un componente de desplazamiento horizontal y un componente de desplazamiento vertical en relación con el bloque actual de datos de vídeo. El vector bidimensional puede denominarse vector de bloque, vector de desplazamiento o vector de movimiento y, por ejemplo, se puede utilizar para identificar un bloque predictivo en relación con una esquina superior izquierda del bloque actual.
[0019] La presente divulgación describe técnicas que pueden mejorar las técnicas de codificación de vídeo existentes y, más específicamente, pueden mejorar las técnicas de codificación de vídeo existentes relacionadas con la IBC. Las técnicas de la presente divulgación pueden, en algunos supuestos de codificación, permitir un control más fino del uso de la IBC, por ejemplo, habilitando la IBC a nivel de fragmento. Las técnicas propuestas se pueden utilizar con cualquier profundidad de bits, formato de muestreo de croma, etc.
[0020] 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. En la presente divulgación, los términos "codificación de vídeo" o "codificación" se pueden referir genéricamente a codificación de vídeo o a descodificación de vídeo. Por tanto, a menos que se indique lo contrario, se debe suponer que las técnicas descritas en referencia a la codificación pueden realizarse mediante un codificador de vídeo o un descodificador de vídeo. En algunas partes de esta aplicación, se pueden describir ciertas técnicas en referencia a la descodificación de vídeo o al descodificador de vídeo. Sin embargo, no se debe suponer que dichas técnicas no sean aplicables a la codificación de vídeo o que puedan realizarse mediante un codificador de vídeo. Dichas técnicas pueden, por ejemplo, realizarse como parte de la determinación de cómo codificar datos de vídeo o pueden realizarse como parte de un bucle de descodificación de vídeo en un codificador de vídeo.
[0021] Como se usa en la presente divulgación, el término bloque actual se refiere a un bloque que se está codificando actualmente, a diferencia de un bloque que ya está codificado o que aún está por codificar. De manera similar, una unidad de codificación, unidad de predicción o unidad de transformada actual se refiere a una unidad de codificación, unidad de predicción o unidad de transformada que se está codificando actualmente.
[0022] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 10 de ejemplo que puede utilizar las técnicas descritas en la presente divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de vídeo codificados que un dispositivo de destino 14 va a descodificar en un momento posterior. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera entre una amplia gama de dispositivos, incluyendo ordenadores de mesa, ordenadores plegables (es decir, portátiles), tabletas electrónicas, cajas de conexión, aparato telefónico con microteléfono tales como los denominados teléfonos “ inteligentes”, los denominados paneles “inteligentes”, televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, un dispositivo de emisión de vídeo en tiempo real o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[0023] El dispositivo de destino 14 puede recibir los datos de vídeo codificados que se van a descodificar por medio de un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo que pueda mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita los datos de vídeo codificados directamente a un dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o por cable, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como Internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
[0024] De forma alternativa, los datos codificados se pueden emitir desde la interfaz de salida 22 a un dispositivo de almacenamiento 26. De forma similar, una interfaz de entrada puede acceder a los datos codificados del dispositivo de almacenamiento 26. El dispositivo de almacenamiento 26 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. En otro ejemplo, el dispositivo de almacenamiento 26 puede corresponderse con un servidor de archivos o a 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 26 a través 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 web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados en 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. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas cosas que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 26 puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0025] Las técnicas de la presente divulgación no están limitadas 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.
[0026] En el ejemplo de la FIG. 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 casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contenga un vídeo capturado previamente, una interfaz de alimentación de vídeo para recibir un vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el vídeo de origen, o una combinación de dichas fuentes. Como ejemplo, si la fuente de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar 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.
[0027] 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 26 para un acceso posterior por parte del dispositivo de destino 14 u otros dispositivos, para su descodificación y/o reproducción.
[0028] 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 casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 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 26, 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.
[0029] 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.
[0030] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de codificación de vídeo de alta eficacia (HEVC) recientemente finalizada. De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, denominada de forma alternativa MPEG-4, Parte 10, codificación avanzada de vídeo (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de la presente divulgación no se limitan a ninguna norma de codificación en particular. Otros ejemplos de normas de compresión de vídeo incluyen MPEG-2 e ITU-T H.263.
[0031] Actualmente se están desarrollando diversas ampliaciones de HEVC, tales como, ampliaciones para contenido 3D, multivista, escalable y de pantalla. Asimismo, las ampliaciones de intervalo de la HEVc , en concreto HEVC-Rext, también están siendo desarrolladas por el JCT-VC. Un borrador de trabajo (WD) reciente de las ampliaciones de intervalo, denominado RExt WD7 a continuación en el presente documento, está disponible en: http://phenix.int-evry.fr/jct/doc_end_user/documents/17_Valencia/wg11/JCTVC-Q1005-v4.zip.
[0032] En la presente divulgación, el texto de la especificación de la HEVC como en JCTVC-Q1003 a menudo se denomina HEVC versión 1. Las técnicas de la presente divulgación pueden utilizar terminología de HEVC para facilitar la explicación. Sin embargo, no se debe suponer que las técnicas de la presente divulgación se limitan a HEVC y, de hecho, se contempla explícitamente que las técnicas de la presente divulgación se pueden implementar en normas sucesoras de HEVC, incluidas las ampliaciones de HEVC así como las normas de próxima generación.
[0033] Aunque no se muestra en la FIG. 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 software, 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 pueden ajustar al protocolo de multiplexación ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0034] Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden implementar como cualquiera de una variedad de circuitos de codificador 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 por campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio adecuado no transitorio legible por ordenador y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. 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.
[0035] Como se introduce anteriormente, el equipo JCT-VC ha terminado recientemente de desarrollar la norma HEVC, ITU-T H.265. La norma HEVC habilita 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 la norma H.264 proporciona nueve modos de codificación de intrapredicción, la norma HEVC admite hasta treinta y cinco modos de codificación de intrapredicción.
[0036] En la norma HEVC y otras especificaciones 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. SCb es una matriz bidimensional de muestras de crominancia Cb. SCr 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 casos, una imagen puede ser monocromática y puede incluir solo una matriz de muestras de luma.
[0037] Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades de árbol de codificación (CTU). Cada una de las CTU puede comprender un bloque del árbol de codificación de muestras de luma, dos bloques del árbol de codificación correspondientes de muestras de croma y unas estructuras de sintaxis usadas para codificar las muestras de los bloques del árbol de codificación. En imágenes monocromáticas o imágenes que tengan tres planos de color separados, una CTU puede comprender un solo bloque del árbol de codificación y unas estructuras de sintaxis usadas para codificar las muestras del bloque del árbol de codificación. 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). Un fragmento puede incluir un número entero de CTU ordenadas consecutivamente en un orden de escaneo de barrido.
[0038] Para generar una CTU codificada, el codificador de vídeo 20 puede realizar de forma recursiva una división de árbol cuaternario en los bloques del árbol de codificación de una CTU para dividir los bloques del á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. Una CU puede comprender un bloque de codificación de muestras de luma y dos bloques de codificación correspondientes 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 imágenes monocromáticas o imágenes que tengan tres planos de color separados, una Cu puede comprender un único bloque de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de codificación.
[0039] 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 es un bloque rectangular (es decir, cuadrado o no cuadrado) de muestras en las cuales se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede comprender un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma y estructuras de sintaxis usadas para predecir los bloques de predicción. En imágenes monocromáticas o imágenes que tengan tres planos de color separados, una PU puede comprender un único bloque de predicción y estructuras de sintaxis usadas para predecir el bloque de predicción. El codificador de vídeo 20 puede generar bloques predictivos de luma, Cb y Cr para bloques de predicción de luma, Cb y Cr de cada PU de la CU.
[0040] El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador de vídeo 20 usa intrapredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a muestras descodificadas de la imagen asociada con la Pu . Si el codificador de vídeo 20 usa interpredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a muestras descodificadas de una o más imágenes distintas a la imagen asociada con la PU.
[0041] Después de que el codificador de vídeo 20 genere bloques predictivos de luma, Cb y Cr para una o más PU de una CU, el codificador de vídeo 20 puede generar un bloque residual de luma para la CU. Cada muestra del bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques predictivos de luma de la CU y una muestra correspondiente en el bloque de codificación de luma original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual de Cb para la CU. Cada muestra del bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb de uno de los bloques predictivos de Cb de la CU y una muestra correspondiente del bloque de codificación de Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual de Cr para la CU. Cada muestra del bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr en uno de los bloques predictivos de Cr de la CU y una muestra correspondiente en el bloque de codificación de Cr original de la CU.
[0042] Además, el codificador de vídeo 20 puede usar una división de árbol cuaternario para descomponer los bloques residuales de luma, Cb y Cr de una CU en uno o más bloques de transformada de luma, Cb y Cr. Un bloque de transformada es un bloque rectangular (por ejemplo, cuadrado o no cuadrado) de muestras a las 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 estar asociada con 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 asociado a 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 separados, una TU puede comprender un único bloque de transformada y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada.
[0043] El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cb de una TU para generar un bloque de coeficientes de Cb para la TU. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cr de una TU para generar un bloque de coeficientes de Cr para la TU.
[0044] Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luma, un bloque de coeficientes de Cb o un bloque de coeficientes de Cr), el codificador de vídeo 20 puede cuantificar el bloque de coeficientes. 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 de transformada, proporcionando más compresión. Después de que el codificador de vídeo 20 cuantifique un bloque de coeficientes, el codificador de vídeo 20 puede codificar por entropía elementos de sintaxis que indiquen los coeficientes de transformada cuantificados. Por ejemplo, el codificador de vídeo 20 puede realizar una codificación aritmética binaria adaptativa al contexto (CABAC) en los elementos de sintaxis que indiquen los coeficientes de transformada cuantificados.
[0045] El codificador de vídeo 20 puede emitir un flujo de bits que incluya una secuencia de bits que forme una representación de imágenes codificadas y datos asociados. El flujo de bits puede comprender una secuencia de unidades de NAL. Una unidad de NAL es una estructura de sintaxis que contiene una indicación del tipo de datos en la unidad de NAL y bytes que contienen los datos en forma de una r Bs P intercalada como sea necesario con bits de prevención de emulación. Cada una de las unidades NAL incluye una cabecera de unidad NAL y encapsula una RBSP. La cabecera de unidad NAL puede incluir un elemento de sintaxis que indique un código de tipo de unidad NAL. El código de tipo de unidad NAL especificado por la cabecera de unidad NAL de una unidad nA l indica el tipo de la unidad NAL. Una RBSP puede ser una estructura de sintaxis que contenga un número entero de bytes que esté encapsulado dentro de una unidad NAL. En algunos casos, una RBSP incluye cero bits.
[0046] Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una r Bs P para un PPS, un segundo tipo de unidad de NAL puede encapsular una RBSP para un fragmento codificado, un tercer tipo de unidad de NAL puede encapsular una RBSp para mensajes de SEI y así sucesivamente. Las unidades de NAL que encapsulan RBSP para los datos de codificación de vídeo (a diferencia de RBSP para conjuntos de parámetros y mensajes de SEI) se pueden denominar unidades de NAL de VCL.
[0047] El descodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Además, el descodificador de vídeo 30 puede analizar el flujo de bits para obtener elementos de sintaxis a partir del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo en base a, al menos en parte, los elementos de sintaxis obtenidos a partir del flujo de bits. El procedimiento para reconstruir los datos de vídeo puede ser, en general, recíproco al procedimiento realizado por el codificador de vídeo 20. Además, el descodificador de vídeo 30 puede realizar una cuantificación inversa de los bloques de coeficientes asociados con TU de una CU actual. El descodificador de vídeo 30 puede realizar transformadas inversas en los bloques de coeficientes para reconstruir los bloques de transformada asociados a las TU de la CU actual. El descodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a las muestras correspondientes de los bloques de transformada de las TU de la CU actual. Reconstruyendo los bloques de codificación para cada CU de una imagen, el descodificador de vídeo 30 puede reconstruir la imagen.
[0048] Recientemente, se ha solicitado la investigación de nuevas herramientas de codificación para material de contenido de pantalla, como texto y gráficos con movimiento, y se han propuesto tecnologías que mejoran la eficacia de la codificación para contenido de pantalla. Como existe evidencia de que se pueden obtener mejoras en la eficacia de la codificación aprovechando las características del contenido de pantalla con nuevas herramientas de codificación dedicadas, se ha emitido una convocatoria de propuestas (CfP) con el objetivo de desarrollar posibles ampliaciones futuras de la norma de codificación de vídeo de alta eficacia (HEVC), incluyendo herramientas específicas para la codificación del contenido de pantalla SCC). Los casos y los requisitos de uso de esta CfP se describen en el documento MPEG N14174. Durante la 17' Reunión JCT-VC, se estableció el modelo de prueba SCC (SCM). Un reciente borrador de trabajo (WD) de SCC está disponible en http://phenix.intevry.fr/jct/doc_end_user/documents/20_Geneva/wg11/JCTVC-T1005-v2.zip.
[0049] En la SCC actual, la señalización de IBC se unifica con la señalización interpredicción añadiendo la imagen actual a la lista de imágenes de referencia. Antes de descodificar el fragmento actual, el descodificador de vídeo 30 marca la imagen actual como una imagen de referencia a largo plazo. A continuación, la imagen actual se convierte de nuevo en una imagen de referencia a corto plazo después de que se completa la descodificación de la imagen actual. Los procedimientos de señalización y codificación, incluida la señalización de fusión/AMVP, la derivación de AMVP y la codificación de MVD, son los mismos que en el caso intermedio, con la diferencia de que los vectores de movimiento para el modo de IBC deben ser vectores de movimiento de números enteros. El bloque de IBC se puede diferenciar de los interbloques convencionales comprobando la imagen de referencia correspondiente. Si solo se utiliza la imagen actual como imagen de referencia, entonces el bloque actual es un bloque de IBC. De lo contrario, el bloque actual es un interbloque. El elemento de sintaxis de nivel SPS curr_pic_as_ref_enabled_flag puede usarse para indicar si las porciones ya codificadas de la imagen actual pueden usarse como una imagen de referencia para codificar bloques de la imagen actual. En otras palabras, el descodificador de vídeo 30 puede recibir el elemento de sintaxis curr_pic_as_ref_enabled_flag, y en respuesta a que el elemento de sintaxis curr_pic_as_ref_enabled_flag sea igual a 1, el descodificador de vídeo 30 puede descodificar algunos bloques de fragmentos asociados con el SPS usando la IBC.
[0050] La FIG. 2 es un diagrama conceptual que ilustra una técnica de ejemplo para predecir un bloque actual de datos de vídeo 102 dentro de una imagen actual 103 según un modo para la predicción interna de bloques de datos de vídeo a partir de bloques predictivos de datos de vídeo dentro de la misma imagen de acuerdo con la presente divulgación, por ejemplo, de acuerdo con un modo de IBC según las técnicas de la presente divulgación. La FIG. 2 ilustra un bloque de vídeo predictivo 104 dentro de la imagen actual 103. Un codificador de vídeo, por ejemplo, un codificador de vídeo 20 y/o un descodificador de vídeo 30, puede usar el bloque de vídeo predictivo 104 para predecir el bloque de vídeo actual 102 de acuerdo con un modo de IBC según las técnicas de la presente divulgación.
[0051] El codificador de vídeo 20 selecciona el bloque de vídeo predictivo 104 para predecir el bloque de vídeo actual 102 a partir de un conjunto de bloques de datos de vídeo previamente reconstruidos. El codificador de vídeo 20 reconstruye bloques de datos de vídeo cuantificando y transformando inversamente los datos de vídeo que también están incluidos en el flujo de bits de vídeo codificado y sumando los bloques residuales resultantes con los bloques predictivos usados para predecir los bloques reconstruidos de datos de vídeo. En el ejemplo de la FIG. 2, la zona prevista 108 dentro de la imagen 103, que también puede denominarse "área prevista" o "área de barrido", incluye el conjunto de bloques de vídeo previamente reconstruidos. El codificador de vídeo 20 puede definir la zona prevista 108 dentro de la imagen 103 en una variedad de formas, como se describe más en detalle a continuación. El codificador de vídeo 20 puede seleccionar el bloque de vídeo predictivo 104 para predecir el bloque de vídeo actual 102 de entre los bloques de vídeo en la zona prevista 108 en base a un análisis de la eficacia y exactitud relativas de predecir y codificar el bloque de vídeo actual 102 en base a diversos bloques de vídeo dentro de la zona prevista 108.
[0052] El codificador de vídeo 20 determina el vector bidimensional 106 que representa la ubicación o el desplazamiento del bloque de vídeo predictivo 104 con respecto al bloque de vídeo actual 102. El vector de bloque bidimensional 106 incluye el componente de desplazamiento horizontal 112 y el componente de desplazamiento vertical 110, que representan respectivamente el desplazamiento horizontal y vertical del bloque de vídeo predictivo 104 con respecto al bloque de vídeo actual 102. El codificador de vídeo 20 puede incluir uno o más elementos de sintaxis que identifican o definen el vector de bloques bidimensionales 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 bloques bidimensionales 106, y usar el vector determinado para identificar el bloque de vídeo predictivo 104 para el bloque de vídeo actual 102.
[0053] En algunos ejemplos, la resolución espacial del vector de bloques bidimensionales 106 puede ser una resolución de píxeles de números enteros, por ejemplo, estar limitada para tener una resolución de píxeles de números enteros. En dichos ejemplos, la resolución espacial del componente de desplazamiento horizontal 112 y el componente de desplazamiento vertical 110 puede ser una resolución de píxeles de números enteros. En dichos ejemplos, el codificador de vídeo 20 y el descodificador de vídeo 30 no necesitan interpolar los valores de píxeles del bloque de vídeo predictivo 104 para determinar el predictor del bloque de vídeo actual 102.
[0054] En otros ejemplos, la resolución de uno o ambos del componente de desplazamiento horizontal 112 y del componente de desplazamiento vertical 110 puede ser subpíxel. Por ejemplo, uno de los componentes 110 y 112 puede tener una resolución de píxeles de números enteros, mientras que el otro tiene una resolución de subpíxeles. En algunos ejemplos, la resolución tanto del componente de desplazamiento horizontal 112 como del componente de desplazamiento vertical 110 puede ser subpíxel, pero el componente de desplazamiento horizontal 112 y el componente de desplazamiento vertical 110 pueden tener diferentes resoluciones.
[0055] En algunos ejemplos, un codificador de vídeo, por ejemplo, un codificador de vídeo 20 y/o un descodificador de vídeo 30, adapta la resolución del componente de desplazamiento horizontal 112 y el componente de desplazamiento vertical 110 en base a un nivel específico, por ejemplo, nivel de bloque, nivel de fragmento o adaptación a nivel de imagen. Por ejemplo, el codificador de vídeo 20 puede señalizar un indicador a nivel de fragmento, por ejemplo, en una cabecera de fragmento, que indica si la resolución del componente de desplazamiento horizontal 112 y el componente de desplazamiento vertical 110 es una resolución de píxeles de números enteros o no es una resolución de píxeles de números enteros. Si el indicador indica que la resolución del componente de desplazamiento horizontal 112 y el componente de desplazamiento vertical 110 no es una resolución de píxeles de números enteros, el descodificador de vídeo 30 puede deducir que la resolución es una resolución de subpíxeles. En algunos ejemplos, uno o más elementos de sintaxis, que no son necesariamente un indicador, pueden transmitirse para cada fragmento u otra unidad de datos de vídeo para indicar las resoluciones colectivas o individuales de los componentes de desplazamiento horizontal 112 y/o componentes de desplazamiento vertical 110.
[0056] En otros ejemplos más, en lugar de un indicador o un elemento de sintaxis, el codificador de vídeo 20 puede establecerse basándose en, y el descodificador de vídeo 30 puede deducir la resolución del componente de desplazamiento horizontal 112 y/o el componente de desplazamiento vertical 110 a partir de la información de resolución del contexto. La información de resolución del contexto puede incluir, como ejemplos, el espacio de color (por ejemplo, YUV, RGB o similares), el formato de color específico (por ejemplo, 4:4:4, 4:2:2, 4:2:0, o similares), el tamaño de trama, la frecuencia de trama o el parámetro de cuantificación (QP) para la imagen o secuencia de imágenes que incluyen el bloque de vídeo actual 102. En al menos algunos ejemplos, un codificador de vídeo puede determinar la resolución del componente de desplazamiento horizontal 112 y/o del componente de desplazamiento vertical 110 basándose en información relacionada con tramas o imágenes codificadas previamente. De esta manera, la resolución del componente de desplazamiento horizontal 112 y la resolución del componente de desplazamiento vertical 110 pueden estar predefinidas o señalizadas, pueden deducirse de otra información lateral (por ejemplo, información de resolución del contexto) o pueden basarse en tramas ya codificadas.
[0057] Un bloque de vídeo actual 102 puede corresponderse con 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, puede dividir una CU que se predice de acuerdo con la IBC en varias PU. En dichos ejemplos, el codificador de vídeo puede determinar un vector bidimensional 106 respectivo (por ejemplo, diferente) para cada una de las PU de la CU. Por ejemplo, un codificador de vídeo puede dividir una CU 2Nx2N en dos PU 2NxN, dos PU Nx2N o cuatro PU NxN. En otros ejemplos, un codificador de vídeo puede dividir una CU 2Nx2N 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 puede predecir una CU 2Nx2N utilizando una PU 2Nx2N.
[0058] El bloque de vídeo actual 102 puede ser un bloque de vídeo de luma o un bloque de vídeo de croma correspondiente a un bloque de vídeo de luma. En algunos ejemplos, el codificador de vídeo 20 solo puede codificar uno o más elementos de sintaxis que definen vectores bidimensionales 106 para bloques de vídeo de luma en el flujo de bits de vídeo codificado. En dichos ejemplos, el descodificador de vídeo 30 puede derivar vectores bidimensionales 106 para cada uno de uno o más bloques de croma correspondientes a un bloque de luma en base al vector bidimensional señalizado para el bloque de luma.
[0059] Dependiendo del formato de color, por ejemplo, formato de muestreo de color o formato de muestreo de croma, un codificador de vídeo puede reducir la resolución de los bloques de vídeo de croma correspondientes en relación con el bloque de vídeo de luma. El formato de color 4:4:4 no incluye la reducción de la muestra, lo que significa que los bloques de croma incluyen el mismo número de muestras en las direcciones horizontal y vertical que el bloque de luma. El formato de color 4:2:2 significa que el croma se somete a un muestreo de frecuencia reducida en la dirección horizontal, de manera que hay igual número de muestras en la dirección horizontal en los bloques de croma en relación con el bloque de luma. El formato de color 4:2:0 significa que el croma se somete a un muestreo de frecuencia reducida en las direcciones horizontal y vertical, de manera que hay igual número de muestras en las direcciones horizontal y vertical en los bloques de croma en relación con el bloque de luma.
[0060] En los ejemplos en los que los codificadores de vídeo determinan los vectores 106 para los bloques de vídeo de croma basándose en los vectores 106 para los bloques de luma correspondientes, los codificadores de vídeo pueden necesitar modificar el vector de luma. Por ejemplo, si un vector de luma 106 tiene una resolución de números enteros con el componente de desplazamiento horizontal 112 y/o el componente de desplazamiento vertical 110 que es un número de píxeles impar, y el formato de color es 4:2:2 o 4:2:0, el vector de luma convertido es posible que no apunte a una ubicación de píxeles de números enteros en el bloque de croma correspondiente. En dichos ejemplos, los codificadores de vídeo pueden ajustar a escala el vector de luma para usarlo como vector de croma para predecir un bloque de croma correspondiente. En algunos ejemplos, el codificador de vídeo 20 puede definir la zona prevista 108, o ajustar a escala el vector convertido, de manera que un vector de luma convertido 106 usado para predecir un bloque de croma puede no apuntar a bloques de croma predictivos que no están reconstruidos o que están filtrados en bucle. En la presente divulgación, si no se menciona explícitamente el ajuste a escala del vector para el bloque de croma, no se debe suponer que dicho ajuste a escala no se produce. Puede producirse el ajuste a escala del vector para el bloque de croma (pero puede no ser necesario en todos los casos) incluso si no se describe explícitamente en los ejemplos descritos en la presente divulgación.
[0061] La presente divulgación describe técnicas para habilitar fragmentos I para la IBC. En el borrador actual de la especificación de texto de la ampliación SCC a HEVC, los fragmentos I no se pueden usar cuando la IBC está habilitada (por ejemplo, cuando el elemento de sintaxis curr_pic_as_ref_enabled_flag es igual a 1). Específicamente, cuando curr_pic_as_ref_enabled_flag es igual a 1, el valor del elemento de sintaxis slice_type no puede ser igual a 2, con los valores de slice_type de 0, 1 y 2 correspondientes a los fragmentos B, P e I, respectivamente. Esto proporciona algunos posibles inconvenientes. Por ejemplo, los fragmentos intracodificados convencionalmente (codificados sin usar ninguna imagen, incluida la imagen actual, como referencia) no se pueden señalizar a través del elemento de sintaxis slice_type, que puede ser útil en algunos supuestos, por ejemplo, para ahorrar sobrecarga de señalización como se describe a continuación.
[0062] La presente divulgación describe técnicas para habilitar la utilización de fragmentos I incluso cuando la IBC está habilitada. Habilitar la utilización de fragmentos I cuando la IBC está habilitada puede, en algunos ejemplos, permitir que el valor del elemento de sintaxis slice_type sea igual a 2 (lo que indica que el tipo de codificación de un fragmento determinado es un fragmento I) incluso cuando curr_pic_as_ref_enabled_flag es igual a 1 (indicando que la IBC está habilitada). En dicho caso, los fragmentos I son fragmentos intracodificados convencionalmente que se codifican sin usar ninguna imagen, incluida la imagen actual, como referencia, y se codifican usando los modos de intrapredicción normales para todos los bloques codificados. En otras palabras, no se codifica ningún bloque del fragmento I convencional utilizando la interpredicción o la IBC, y el único modo de codificación utilizado para el fragmento I convencional es el modo intra.
[0063] El codificador de vídeo 20 puede, por ejemplo, configurarse para implementar dicha funcionalidad al estar configurado para codificar un fragmento de datos de vídeo como un fragmento I y generar un elemento de sintaxis de IBC (por ejemplo, curr_pic_as_ref_enabled_flag) con un valor para indicar que un modo de IBC está habilitado para el fragmento. El codificador de vídeo 20 puede generar adicionalmente un elemento de sintaxis del tipo de fragmento (por ejemplo, slice_type) y establecer ese elemento de sintaxis en un valor que indique que un fragmento es un fragmento I. El codificador de vídeo 20 puede, por ejemplo, incluir el elemento de sintaxis de IBC en un SPS y/o incluir el elemento de sintaxis del tipo de fragmento en una cabecera de fragmento.
[0064] El descodificador de vídeo 30 puede, por ejemplo, estar configurado para implementar dicha funcionalidad al estar configurado para recibir un fragmento de datos de vídeo y analizar un elemento de sintaxis de IBC (por ejemplo, curr_pic_as_ref_enabled_flag) para determinar que un modo de IBC está habilitado para el fragmento. Por ejemplo, si el descodificador de vídeo 30 determina que el valor de curr_pic_as_ref_enabled_flag es igual a 1, entonces el descodificador de vídeo 30 puede determinar que el modo de IBC está habilitado, mientras que si curr_pic_as_ref_enabled_flag es igual a 0, el descodificador de vídeo 30 puede determinar que el modo de IBC está inhabilitado. El descodificador de vídeo 30 también puede analizar un elemento de sintaxis del tipo de fragmento asociado con el fragmento para determinar que el fragmento es un fragmento I y se va a descodificar como un fragmento I. Para descodificar el fragmento como un fragmento I, el descodificador de vídeo 30 puede descodificar bloques del fragmento utilizando únicamente intrapredicción y sin utilizar un modo de interpredicción y sin utilizar un modo de IBC.
[0065] De forma alternativa, la presente divulgación propone introducir otro tipo de fragmento. Por ejemplo, se puede usar un fragmento de IBC para indicar la utilización del modo de IBC sin tener ninguna otra imagen de referencia excepto la imagen actual. En otras palabras, para un fragmento de IBC, un codificador de vídeo puede codificar bloques del fragmento de IBC usando el modo intra o el modo de IBC, pero no usando el modo inter. En dicho ejemplo, el valor del elemento de sintaxis slice_type puede ser igual a 0, 1,2 o 3, con el nuevo valor permitido de 3 especificando un fragmento de IBC. Como se muestra en la TABLA 1 a continuación, la semántica de otros valores puede permanecer sin cambios. Cuando slice_type se establece en fragmento de IBC, puede evitarse alguna señalización para los intermodos de los fragmentos P y B. Por ejemplo, si el descodificador de vídeo 30 determina que un fragmento es un fragmento de IBC, no es necesario que información como el elemento de sintaxis cu_skip_flag, el elemento de sintaxis pred_mode_flag en la cabecera de CU, la información de gestión de la imagen de referencia en la cabecera de fragmento y otra información similar se incluya en un flujo de bits de datos de vídeo codificados.
TABLA 1
Figure imgf000011_0001
[0066] Según la técnica introducida anteriormente, el descodificador de vídeo 30 puede configurarse para recibir un fragmento de datos de vídeo y analizar un elemento de sintaxis del tipo de fragmento asociado con el fragmento de datos de vídeo. En respuesta al elemento de sintaxis del tipo de fragmento que tiene un valor que indica que el fragmento es un fragmento de IBC (por ejemplo, slice_type igual a 3), el descodificador de vídeo 30 puede descodificar el fragmento como un fragmento de IBC, lo que puede incluir la descodificación de algunos bloques del fragmento utilizando un modo de IBC y/o la descodificación de algunos bloques del fragmento usando el modo intra. El descodificador de vídeo 30 puede descodificar otros fragmentos como fragmentos I (por ejemplo, slice_type igual a 2), fragmentos P (slice_type igual a 1) o fragmentos B (slice_type igual a 0). La descodificación de los otros tipos de fragmentos puede implicar la recepción de algunos elementos de sintaxis diferentes que no se reciben para los fragmentos descodificados como fragmentos de IBC, y del mismo modo, descodificar el fragmento de IBC puede implicar la recepción de algunos elementos de sintaxis diferentes que no se reciben para los otros fragmentos.
[0067] La presente divulgación también describe técnicas para un indicador de control de IBC a nivel de fragmento. Con las técnicas existentes, si la IBC está habilitada se controla únicamente mediante (es decir, la habilitación de IBC se determina en base a) el indicador de SPS, curr_pic_as_ref_enabled_flag. Permitir un control más fino de la IBC, a nivel de fragmento, por ejemplo, puede tener varios beneficios potenciales. En un ejemplo, el control de IBC a nivel de fragmento puede especificar si los bloques dentro del fragmento actual pueden utilizar la imagen actual como referencia. El modo de IBC puede requerir un almacenamiento adicional de muestras antes del filtrado en bucle. Cuando la IBC está inhabilitada a nivel de fragmento, un descodificador inteligente puede evitar almacenar estas muestras adicionales, reduciendo así el ancho de banda promedio y la utilización de potencia promedio. En otro ejemplo, el control de IBC a nivel de fragmento permite que los fragmentos que no utilizan la IBC tengan más índices de referencia asignados a las imágenes de referencia temporal, lo que permite señalizar más ponderaciones en la predicción ponderada para potencialmente mejorar la eficacia de la codificación en ciertos supuestos.
[0068] Las técnicas para habilitar el control de IBC a nivel de fragmento se describirán a continuación con más detalle. El codificador de vídeo 20 puede señalizar un indicador de control de IBC a nivel de fragmento, por ejemplo, slice_curr_pic_as_ref_enabled_flag, en una cabecera de fragmento cuando la IBC está habilitada (por ejemplo, curr_pic_as_ref_enabled_flag es igual a 1). Además, el descodificador de vídeo 30 puede deducir (es decir, determinar sin la recepción de señalización explícita) el valor de slice_curr_pic_as_ref_enabled_flag para que sea igual a 0 si no está señalizado. Este indicador de control a nivel de fragmento se puede señalizar solo para los fragmentos P y fragmentos B y deducirse que tiene un valor de 0 para los fragmentos I. Este indicador de IBC a nivel de fragmento puede, por ejemplo, indicar si la imagen actual se usa como imagen de referencia para predecir bloques del fragmento. En otras implementaciones, el indicador de IBC a nivel de fragmento puede indicar si la imagen actual se añade a una lista de imágenes de referencia para la imagen actual como autorreferencia, en cuyo caso la imagen actual está disponible para su uso como imagen de referencia para predecir bloques del fragmento pero, para algunos fragmentos, es posible que no se utilice realmente para la predicción. Además, si el slice_curr_pic_as_ref_enabled_flag está inhabilitado (es decir, el valor se indica explícitamente como igual a 0 o se deduce que es igual a 0, entonces el descodificador de vídeo 30 no usa el modo de IBC para ese fragmento en particular, y se puede habilitar la señalización del tipo de fragmento I (como se describe anteriormente con respecto a la habilitación de fragmentos I para la IBC).
[0069] La semántica para el elemento de sintaxis slice_curr_pic_as_ref_enabled_flag puede ser la siguiente:
slice_curr_pic_as_ref_enabled_flag igual a 1 especifica que la imagen actual puede incluirse en una lista de imágenes de referencia de la imagen actual cuando se descodifica el fragmento actual. slice_curr_pic_as_ref_enabled_flag igual a 0 especifica que la imagen actual nunca se incluye en la lista de imágenes de referencia de la imagen actual cuando se descodifica el fragmento actual. Cuando no está presente, se deduce que el valor de slice_curr_pic_as_ref_enabled_flag es igual a 0.
[0070] En general, el indicador slice_curr_pic_as_ref_enabled_flag puede sustituir el curr_pic_as_ref_enabled_flag en la sintaxis de la cabecera del fragmento después del indicador slice_curr_pic_as_ref_enabled, en las estructuras de sintaxis debajo del nivel de la cabecera del fragmento, la semántica y el proceso de descodificación, por ejemplo, en la construcción de la lista de imágenes de referencia, gestión de DPB y etc. El elemento de sintaxis curr_pic_as_ref_enabled_flag se puede tratar como un indicador de puerta para la señalización de slice_curr_pic_as_ref_enabled_flag. Por ejemplo, el valor de NumPicTotalCurr puede obtenerse en base al indicador de control a nivel de fragmento slice_curr_pic_as_ref_enabled_flag.
[0071] Además, se puede aplicar la siguiente condición (cuando no se aplican las técnicas para habilitar fragmentos I como se describe anteriormente):
- Cuando la imagen actual es una imagen de BLA o CRA, el valor de NumPicTotalCurr será igual a slice_curr_pic_ref_enabled_flag.
[0072] En otra alternativa, el descodificador de vídeo 30 puede configurarse para derivar un valor de slice_curr_pic_as_ref_enabled_flag sin señalización explícita. Como parte de la derivación, el descodificador de vídeo 30 puede verificar las listas de imágenes de referencia RefPicList0 y RefPicList1 hasta el número máximo de imágenes de referencia señalizadas en la cabecera del fragmento (por ejemplo, num_ref_idx_10_active_minus1 y num_ref_idx_11_active_minus1 para RefPicList0 y RefPicList1 respectivamente), y si ninguna imagen de referencia es igual a la imagen actual, el descodificador de vídeo 30 puede derivar slice_curr_pic_as_ref_enabled_flag como 0. De lo contrario, el descodificador de vídeo 30 puede derivar slice_curr_pic_as_ref_enabled_flag para que sea igual a 1. Este indicador derivado puede usarse, por ejemplo, en lugar del indicador de IBC a nivel de fragmento señalizado en el proceso de descodificación y otros usos relacionados.
[0073] Para implementar el indicador de control de IBC a nivel de fragmento descrito anteriormente, el descodificador de vídeo 30 puede configurarse para recibir un fragmento de datos de vídeo y analizar un elemento de sintaxis a nivel de fragmento (por ejemplo, slice_curr_pic_as_ref_enabled_flag) para determinar que un modo de IBC está habilitado para el fragmento. El descodificador de vídeo 30 puede configurarse para construir una lista de imágenes de referencia para el fragmento de los datos de vídeo, y varias imágenes incluidas en la lista de imágenes de referencia puede depender de si el elemento de sintaxis a nivel de fragmento indica que la IBC está habilitada o inhabilitada. El descodificador de vídeo 30 puede analizar el elemento de sintaxis a nivel de fragmento para determinar que el modo de IBC está habilitado para que el fragmento se realice en respuesta a la determinación de que el fragmento es uno entre un fragmento P o un fragmento B. Para los fragmentos que se determina que son fragmentos I, el descodificador de vídeo 30 puede deducir un valor del elemento de sintaxis a nivel de fragmento para indicar que el modo de IBC está inhabilitado. El descodificador de vídeo 30 puede construir una lista de imágenes de referencia para el fragmento de los datos de vídeo y, en respuesta al elemento de sintaxis a nivel de fragmento que indica que el modo de IBC está habilitado, añadir la imagen que contiene el fragmento a la lista de imágenes de referencia.
[0074] La presente divulgación también describe las limitaciones potenciales sobre el uso de un indicador de control de IBC a nivel de fragmento y el tipo de fragmento. Cualquiera de las restricciones o aspectos introducidos a continuación se puede aplicar de forma independiente o en combinación con una o más de las otras restricciones en esta sección u otras secciones en la presente divulgación.
[0075] En algunos ejemplos, la conformidad del flujo de bits puede tener los siguientes requisitos:
• El valor de slice_curr_pic_as_ref_enabled_flag no será igual a 0 para los fragmentos P y B cuando solo esté disponible currPic como referencia.
• El valor de slice_curr_pic_as_ref_enabled_flag no será igual a 0 para los fragmentos P y B cuando nal_unit_type tiene un valor en el intervalo de BLA_W_LP a RSV_IRAP_VCL23, inclusive (es decir, la imagen es una imagen IRAP). RefPicList0 contendrá una o más entradas que se refieran únicamente a la imagen actual.
• De forma alternativa, slice_curr_pic_as_ref_enabled_flag no se señalizará para los fragmentos P y B cuando solo esté disponible currPic como referencia (es decir, cuando el DPB contiene solo una imagen de referencia que es la imagen actual) y se deduce que el valor es
[0076] A continuación se analizarán los cambios en el proceso de descodificación. El proceso de descodificación se puede cambiar como se muestra con el texto subrayado. Los cambios que se muestran pueden aplicarse por separado o en conjunto.
[0077] Cuando al menos un fragmento de la imagen actual tiene slice_curr_pic_as_ref_enabled_flag igual a 1, se asigna un búfer de almacenamiento de imágenes en el DPB para la imagen actual, y la imagen actual se marca como "utilizada de referencia a largo plazo".
[0078] Los procesos en las subcláusulas 8.4, 8.5, 8.6 y 8.7 especifican procesos de descodificación utilizando elementos de sintaxis en todas las capas de estructura de sintaxis. Es un requisito de conformidad del flujo de bits que los fragmentos codificados de la imagen contengan datos de segmentos de fragmentos para cada unidad del árbol de codificación de la imagen, de manera que la división de la imagen en fragmentos, la división de los fragmentos en segmentos de fragmento y la división de los segmentos de fragmento en unidades del árbol de codificación formen, cada uno, una división de la imagen. Cuando al menos un fragmento en la imagen actual tiene slice curr pic as ref enabled flag que es igual a 1, los valores de muestra descodificados de la imagen actual antes del filtrado en bucle se almacenan en el búfer de almacenamiento de imágenes asignado para la imagen actual.
NOTA 2 - Cuando al menos un fragmento en la imagen actual tiene slice curr pic as ref enabled flag es igual a 1, se necesita un búfer de almacenamiento de imágenes adicional, que no se cuenta como parte del DPB, para el almacenamiento de los valores de muestra de la imagen actual después del filtrado en bucle.
[0079] La presente divulgación también describe una restricción de imagen coubicada. En el WD actual, existe la restricción de que la imagen actual no se puede utilizar como una imagen coubicada. La razón de esta restricción es que todavía no habría ningún campo de movimiento asignado para que el bloque coubicado se usara en la predicción de movimiento si la imagen coubicada fuera la imagen actual.
[0080] Esta restricción se puede eliminar, por ejemplo, inicializando el campo de movimiento de la imagen actual antes del procesamiento de la imagen actual. Por ejemplo, la imagen actual se puede inicializar con todos los bloques como intracodificados, lo que significa que no hay información del campo de movimiento. De forma alternativa, el campo de movimiento se puede inicializar con el campo de movimiento predeterminado, donde el campo de movimiento por defecto es conocido tanto para el codificador como para el descodificador, por ejemplo, movimiento cero (vectores de movimiento cero con índices de referencia cero) en al menos una interdirección asociada con la RefPicList0 o la RefPicList1, o ambas. Además, el campo de movimiento por defecto asignado a un fragmento puede depender del tipo de fragmento. Por ejemplo, para un fragmento I, todos los bloques en ese fragmento se inicializan con el modo intra, para un fragmento P, el campo de movimiento relacionado con la RefPicList0 se establece en movimiento cero, para un fragmento B, el movimiento cero se asigna en ambas direcciones asociadas con la RefPicList0 y la RefPicList1.
[0081] Además, la restricción mencionada anteriormente (que la imagen actual no puede usarse como una imagen coubicada) se especifica en una forma de restricción de codificador o restricción del flujo de bits, que puede ser incumplida por algunos codificadores, lo que hace que el flujo de bits pueda romperse.
[0082] La presente divulgación describe técnicas para hacer esta restricción más estricta, por ejemplo, modificando la sintaxis de manera que los valores de los elementos de sintaxis que no satisfacen la restricción no puedan ser señalizados en el flujo de bits.
[0083] En primer lugar, el indicador de habilitación de TMVP señalizado en la cabecera del fragmento tiene que inhabilitarse si el fragmento tiene solo la imagen actual como imagen o imágenes de referencia, dado que la imagen actual no se puede utilizar como imagen coubicada. Puede haber más de una imagen de referencia, donde todas pueden ser la imagen actual.
[0084] De forma alternativa, la señalización del indicador de habilitación de TMVP se puede mover y colocar después de la señalización del número de imágenes de referencia utilizadas en un fragmento (por ejemplo, num_ref_idx_10_active_minus1 y num_ref_idx_l1_active_minus1), y se puede realizar una verificación para determinar si todas las imágenes de referencia son la imagen actual. Si todas las imágenes de referencia son la imagen actual, el indicador de habilitación de TMVP no se señaliza y se deriva para ser inhabilitado (es decir, igual a 0).
[0085] En otra alternativa, en lugar de derivar si todas las imágenes de referencia son la imagen actual, se puede señalizar un indicador en la cabecera del fragmento para indicar dicho caso.
[0086] Además, para la señalización del collocated_ref_idx, los índices de referencia que apuntan a la imagen actual pueden excluirse de ser referenciados por collocated_ref_idx, y el valor del collocated_ref_idx se reduce por el número de índices de referencia que apuntan a la imagen de referencia actual presente antes de la imagen coubicada deseada. De manera similar, después del análisis, el collocated_ref_idx analizado se incrementa en el número de índices de referencia que apuntan a la imagen de referencia actual antes del ref_idx coubicado señalizado.
[0087] De acuerdo con un ejemplo, suponga que RefPicList = {Pic0, Curr, Pic1, Curr, Pic2}. Para hacer que Pic0 sea una imagen coubicada, se indica collocated_ref_idx = 0.
[0088] Para hacer que Pic1 sea una imagen coubicada, se señaliza collocated_ref_idx = 1 y collocated_ref_idx se incrementa en 1, lo que hace que collocated_ref_idx sea igual a 2.
[0089] Para hacer que Pic2 sea una imagen coubicada, se señaliza collocated_ref_idx = 2 y collocated_ref_idx se incrementa en 2, lo que hace que collocated_ref_idx sea igual a 4.
[0090] Por ejemplo, la parte de codificación se puede implementar como el siguiente pseudocódigo, suponiendo que el collocated_ref_idx deseado es igual a N.
collocated_ref_idx = N;
for (i = 0; i < N; i++)
{
if (RefPicList[i] is the current picture)
collocated_ref_idx--;
}
[0091] Por ejemplo, la parte de descodificación se puede implementar como el siguiente pseudocódigo, donde collocated_ref_idx es el valor analizado que se va a actualizar.
para ( i = 0; i <= collocated_ref_idx; i++)
{
if (RefPicList[i] is the current picture)
collocated_ref_idx++;
}
[0092] En el ejemplo proporcionado, collocated_ref_idx no puede ser igual a la imagen actual (Curr) porque el valor de collocated_ref_idx será incrementado por el descodificador, haciendo imposible que la imagen actual sea una imagen coubicada.
[0093] Además, las condiciones según las cuales se señaliza collocated_ref_idx se pueden modificar para excluir los casos en los que ref_idx coubicado puede tener solo un valor. En este caso, el número de imágenes de referencia incluidas en RefPicList0 y RefPiclList1 se puede contar (indicado aquí como numCurrRef0 y numCurrRef1), y el número de imágenes de referencia (por ejemplo, num_ref_idx_l0_active_minus1 y num_ref_idx_l1_active_minus1) se puede reducir en el número de índices de referencia igual a la imagen actual para RefPicList0 y RefPicList1. Este número modificado de índices de referencia se puede utilizar en lugar del número señalizado de índices de referencia en la cabecera del fragmento en el proceso de descodificación, por ejemplo, en la señalización de collocated_ref_idx.
[0094] Por ejemplo, la implementación se puede conseguir de la siguiente manera:
numCurrRef0 = 0;
for (i = 0; i <= num_ref_idx_l0_active_minus1; i++)
{
if (RefPicList0[i] es la imagen actual)
} numCurrRef0++;
numCurrRefl = 0;
for (i = 0; i <= num_ref_idx_l1_active_minus1; i++)
{
if (RefPicList1[i] es la imagen actual)
numCurrRef1++;
}
El índice de referencia coubicado se señaliza solo cuando el número de posibles índices coubicados es superior a 1, por ejemplo
Figure imgf000015_0001
[0095] Las partes subrayadas se añaden en la parte superior del borrador de la especificación del texto actual. Ejemplo: RefPicList0 = {Curr, Pic0, Curr} num_ref_idxJ0_active_minus1 se señaliza igual a 2, y numCurrRef0 es igual a 2 (dado que hay 2 imágenes de referencia actuales en la lista de imágenes de referencia). num_ref_idx_l0_active_minus1 -numCurrRef0 es igual a 0, y collocated_ref_idx no se señaliza, pero se deduce igual a 0, sin embargo, el valor real es 1 (el índice cero apunta a la imagen actual).
[0096] Después de la deducción a 0, la modificación del índice coubicado descrita anteriormente se utiliza para (int i = 0; i <= collocated_ref_idx; i++)
{
if (RefPicList0[i] es la imagen actual)
collocated_ref_idx++;
}
lo que producirá collocated_ref_idx igual a 1, dado que se producirá un incremento debido a que la primera imagen de referencia es igual a la imagen actual en la lista de imágenes de referencia.
[0097] En este ejemplo, la señalización collocated_ref_idx se guarda en comparación con el borrador de la especificación de texto actual, donde se señaliza collocated_ref_idx pero se requiere que sea igual a 1. Cualquier técnica descrita en el presente documento relacionada con las restricciones de imagen coubicada y la señalización de índice de referencia coubicada puede usarse independientemente o en cualquier combinación.
[0098] La presente divulgación también describe técnicas para inhabilitar la modificación de la lista en base a varias imágenes de referencia activas. En el WD actual, el proceso de modificación ref_pic_list puede invocarse cuando NumPicTotalCurr > 1 y lists_modification_present_flag =1. La presente divulgación propone que cuando num_ref_idx_l0_active_minus1 = 0 (que es el índice de referencia máximo para la lista de imágenes de referencia 0 que se puede usar para descodificar el fragmento es igual a 0) y el indicador de control de IBC a nivel de fragmento descrito anteriormente con respecto a los indicadores de control de IBC a nivel de fragmento es igual a 1, la información de modificación de la lista es redundante y se puede deducir. En otras palabras, en algunas implementaciones, la imagen actual siempre se puede añadir a la lista de imágenes de referencia cuando el modo de IBC está habilitado sin requerir el proceso de modificación de la lista.
[0099] La presente divulgación describe técnicas para no señalizar la información de modificación de la lista cuando num_ref_idx_l0_active_minus1 = 0 y slice_curr_pic_as_ref_enabled_flag = 1. Se puede deducir que el proceso de modificación de la lista incluye curPic como la primera entrada en la RefPicList0. En otras palabras, en algunas implementaciones, la imagen actual siempre se puede añadir a la lista de imágenes de referencia cuando el modo de IBC está habilitado sin requerir el proceso de modificación de la lista.
[0100] Por ejemplo, si el codificador de vídeo 20 determina que IBC está habilitado para un fragmento de IBC, entonces la única imagen de referencia en una lista de imágenes de referencia para el fragmento es la imagen actual que incluye ese fragmento. Por lo tanto, en respuesta a determinar que varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de los datos de vídeo es igual a uno y en respuesta a que el modo de IBC está habilitado para el fragmento, el codificador de vídeo 20 puede configurarse para inhabilitar la modificación de la lista de imágenes de referencia y no incluye información de modificación de la lista de imágenes de referencia para el fragmento en un flujo de bits codificado. De manera similar, el descodificador de vídeo 30 puede configurarse para recibir un elemento de sintaxis (por ejemplo, num_ref_idx_l0_active_minus1) que indica varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de los datos de vídeo y, en respuesta al elemento de sintaxis que indica el número de imágenes de referencia en la lista de imágenes de referencia para el fragmento de los datos de vídeo es igual a uno (por ejemplo, num_ref_idx_l0_active_minus1 igual a 0) y en respuesta a que el modo de IBC está habilitado para el fragmento (por ejemplo, slice_curr_pic_as_ref_enabled_flag = 1 y/o curr_pic_as_ref_enabled_flag = 1), el descodificador de vídeo 30 puede inhabilitar la modificación de la lista de imágenes de referencia. El descodificador de vídeo 30 puede, por ejemplo, inhabilitar la modificación de la lista de imágenes de referencia construyendo la lista de imágenes de referencia sin recibir información de modificación de la lista de imágenes de referencia. En un ejemplo, inhabilitar la modificación de la lista de imágenes de referencia puede significar que la información (por ejemplo, elementos de sintaxis) asociada con la información de modificación de la lista de imágenes de referencia no se señaliza en un flujo de bits, mejorando así potencialmente la compresión y reduciendo la complejidad en el lado del descodificador.
[0101] Aunque los ejemplos anteriores se han descrito con respecto a RefPicList0, debe tenerse en cuenta que las técnicas anteriores son igualmente aplicables a RefPicList1 también.
Figure imgf000016_0001
[0102] En un primer ejemplo de implementación, es posible que la modificación de la lista no se señalice cuando num_ref_idxJ0_active_minus1 = 0 (es decir, el índice de referencia máximo para la lista de imágenes de referencia 0 que puede usarse para descodificar el fragmento es igual a 1) y el indicador de control de IBC a nivel de SPS como en el borrador de la especificación actual (curr_pic_as_ref_enabled_flag) es igual a 1. Se deduce que el proceso de modificación de la lista incluye curPic como la primera entrada en RefPicList0.
[0103] Lo anterior también puede ampliarse a RefPicList1.
Figure imgf000016_0002
__________________________________________________________________________________
[0104] La presente divulgación también describe técnicas para implementar el filtrado en bucle como procesamiento posterior. En otras palabras, los filtros que se aplican como filtros en bucle en algunos supuestos de codificación pueden aplicarse como filtros en bucle posteriores en otros supuestos de codificación. Cuando se utiliza el modo de IBC, las muestras de referencia de la imagen actual utilizada para la predicción de la IBC no se filtran. En otras palabras, los filtros en bucle como el filtro de desbloqueo y SAO pueden no aplicarse a las muestras de referencia de IBC. Sin embargo, el filtrado en bucle aún puede aplicarse a las muestras reconstruidas para una predicción regular. Estas técnicas pueden mejorar la eficacia global de la codificación y el rendimiento del dispositivo por múltiples razones. En un ejemplo, el filtrado puede no ser un buen predictor del contenido gráfico y, por tanto, la complejidad computacional asociada con el filtrado puede proporcionar un beneficio mínimo o nulo para ciertos tipos de contenido de vídeo. En otro ejemplo, como consecuencia de la necesidad de almacenar muestras filtradas y sin filtrar para la imagen actual (para IBC e intermodos regulares), el filtrado en bucle puede aumentar el ancho de banda para escribir y leer las muestras y aumentar la capacidad de almacenamiento requerida.
[0105] En un ejemplo, el descodificador de vídeo 30 puede aplicar filtros en bucle solo cuando la imagen se emite o se visualiza y utiliza los píxeles sin filtrar asociados con las imágenes de referencia tanto para la IBC como en intermodos regulares. Para dicho ejemplo, el descodificador de vídeo 30 puede configurarse para reconstruir un bloque de datos de vídeo usando un modo de IBC y emitir una imagen que incluye el bloque, con el bloque en la imagen emitida que está siendo filtrado usando uno o más filtros de bucle. Sin embargo, el descodificador de vídeo 30 puede almacenar, como imagen de referencia para bloques futuros, una imagen con una versión sin filtrar del bloque.
[0106] Esto puede reducir el ancho de banda, dado que solo es necesario almacenar píxeles sin filtrar y puede mejorar la predicción del contenido gráfico al conservar los detalles que pueden eliminarse mediante un filtro. Sin embargo, aún se pueden aplicar filtros en bucle a las imágenes que se emiten para su visualización.
[0107] Se puede usar un indicador de control de IBC o un nuevo indicador para derivar si los filtros en bucle deben usarse como filtros posteriores o filtros aplicados a la imagen de salida. Por ejemplo, el descodificador de vídeo 30 puede configurarse para recibir un elemento de sintaxis que indique si se va a aplicar una operación de filtro de bucle en bucle o en bucle posterior en respuesta a la determinación de que un modo de IBC está habilitado. Además, se puede señalizar un nuevo indicador cuando se utiliza un modo de iBc . Un indicador de este tipo puede, por ejemplo, derivarse para que sea igual a 0 cuando no esté presente en un flujo de bits.
[0108] En otro ejemplo, el modo de IBC puede usar muestras filtradas (por ejemplo, filtrado de desbloqueo, filtrado SAO o filtrado ALF) cuando hay imágenes filtradas disponibles. Para el filtro, algunos píxeles exteriores al bloque que se está filtrando pueden ser necesarios pero no disponibles. Cuando dichos píxeles exteriores están disponibles, es decir, ya reconstruidos, entonces los píxeles filtrados pueden usarse para la predicción en el modo de IBC. Si al menos un píxel necesario para el filtrado no está disponible, se utilizan muestras sin filtrar para la predicción de la IBC. En este caso, el ancho de banda puede reducirse dado que se reduce la cantidad de píxeles sin filtrar que se almacenarán para la predicción de la IBC. De forma alternativa, la IBC solo puede hacer referencia a muestras filtradas; en este caso, es posible que no sea necesario almacenar muestras sin filtrar (por ejemplo, muestras que requieren al menos un píxel que aún no se ha reconstruido) para la predicción de la IBC. Esta restricción puede lograrse, por ejemplo, mediante una restricción del codificador o del flujo de bits en la que un MV utilizado para derivar un bloque de predicción no incluirá dichas muestras.
[0109] En el ejemplo anterior, una verificación de píxeles filtrados o no filtrados para usar con la predicción de la IBC puede ser compleja, dado que una CU vecina puede usarse para la predicción. Para simplificar el proceso de derivación, las muestras sin filtrar de la CTU actual que contiene el bloque actual se pueden usar para la predicción de la IBC, y las muestras filtradas ubicadas fuera de la CTU actual, si están disponibles, se utilizan para la predicción de la IBC. En este caso, el ancho de banda asociado con el almacenamiento de píxeles sin filtrar puede reducirse, dado que las muestras de CTU actuales se pueden almacenar en la memoria caché y no es necesario almacenarlas en la memoria externa del codificador 20 o descodificador 30.
[0110] Se puede introducir un indicador para indicar si se aplica la selección entre muestras filtradas o no filtradas para la predicción de la IBC. Este indicador se puede señalizar cuando se utiliza el modo de IBC y se puede derivar para inhabilitarlo si no está presente en un flujo de bits.
[0111] De forma alternativa, la señalización para indicar la selección entre muestras filtradas o no filtradas para la predicción de la IBC podría ser en términos de retardo (en unidades de CTU, fragmentos, mosaicos). Por ejemplo, la predicción de la IBC de los bloques antes del valor de retardo solo puede usar muestras filtradas y después del valor de retardo puede usar muestras sin filtrar. Los aspectos descritos en los ejemplos anteriores pueden usarse de forma independiente o en cualquier combinación con otros procedimientos descritos.
[0112] La presente divulgación describe técnicas que pueden resultar en una reducción del ancho de banda. Para las implementaciones existentes del modo de IBC, un descodificador de vídeo no filtra las muestras de predicción; por lo tanto, si la IBC está habilitada, además de las muestras filtradas, también es necesario almacenar muestras extra sin filtrar, lo que hace que al menos el ancho de banda del almacenamiento se duplique si se usa el modo de IBC.
[0113] De acuerdo con técnicas de la presente divulgación, para reducir el aumento de ancho de banda provocado por las muestras sin filtrar, en lugar de almacenar las muestras sin filtrar, el descodificador de vídeo 30 puede almacenar la diferencia entre las muestras filtradas y las muestras sin filtrar. Como las operaciones de filtrado (por ejemplo, desbloqueo, SAO) solo provocan pequeños cambios de valor, es posible que la diferencia entre las muestras filtradas y las muestras sin filtrar no necesite la profundidad de bits completa para el almacenamiento, lo que puede ayudar a reducir el ancho de banda de almacenamiento necesario para almacenar tanto las muestras filtradas como las muestras no filtradas para su uso con el modo de IBC. Además, algunos esquemas de compresión, que en un ejemplo pueden ser una compresión sin pérdidas, como la predicción a partir de los vecinos y la codificación de longitud variable, se pueden aplicar para reducir aún más el ancho de banda y el espacio de almacenamiento. En una implementación de este tipo, el descodificador de vídeo 30 puede configurarse para realizar una operación de filtrado en bucle en un bloque reconstruido de datos de vídeo para generar un bloque reconstruido filtrado, almacenar valores de diferencia que indican una diferencia entre el bloque reconstruido filtrado y el bloque reconstruido, y predecir un bloque basado al menos en parte en los valores de diferencia almacenados.
[0114] La presente divulgación también describe técnicas para aplicar el filtrado a muestras de predicción. Como se ha mencionado en la sección anterior, en el diseño actual para el modo de IBC, las muestras de predicción son muestras reconstruidas sin filtrar de la imagen actual (pre-SAO o desbloqueo). Estas muestras sin filtrar deben almacenarse además de las muestras filtradas que se envían para visualizar. En esta sección, se proponen algunos procedimientos para evitar la necesidad de un almacenamiento adicional de muestras sin filtrar.
[0115] De acuerdo con una primera técnica de la presente divulgación, un codificador de vídeo (por ejemplo, un codificador de vídeo 20 o un descodificador de vídeo 30) puede aplicar SAO y desbloqueo a las muestras de predicción en lugar de las muestras reconstruidas. A continuación, se proporciona un ejemplo de implementación. La implementación de ejemplo compara el diseño actual con un ejemplo de diseño propuesto en la presente divulgación.
Diseño actual: Reconstrucción final = Filtrado (Pred Residuo)
Diseño propuesto: Reconstrucción final = Filtrado (Pred) Residuo.
donde,
Filtrado: representa uno o ambos procesos, SAO y desbloqueo
Pred: representa muestras de predicción sin filtrar.
[0116] Con respecto a la primera técnica descrita anteriormente, un codificador de vídeo puede aplicar SAO y desbloqueo a las muestras de predicción de cualquier modo (por ejemplo, inter, IBC, intra). De acuerdo con una segunda técnica, un codificador de vídeo puede aplicar las técnicas descritas anteriormente para aplicar SAO y desbloqueo a las muestras de predicción del modo de IBC. Esta técnica se puede aplicar además de las técnicas descritas en JCTVC-T0045. En T0045, el filtrado está inhabilitado para las CTU que se pueden usar para IBC como referencia. Esto puede introducir una degradación de la calidad objetiva y subjetiva. Por consiguiente, la presente divulgación introduce técnicas para aplicar filtrado a muestras de predicción para el modo de IBC únicamente.
[0117] A continuación se describirá una implementación de ejemplo. La presente divulgación describe técnicas para aplicar SAO y desbloqueo a las muestras de predicción en lugar de a las muestras reconstruidas para el modo de IBC. Además, se puede señalizar un indicador en el flujo de bits si se va a utilizar una CTU como área de referencia para la IBC, en cuyo caso el indicador desactiva el posprocesamiento en bucle (desbloqueo y SAO) para esa CTU, evitando así el almacenamiento adicional.
[0118] Diseño actual:
Reconstrucción final = Filtrado (Pred Residuo)
[0119] Diseño propuesto:
Reconstrucción final para el modo de IBC = Filtrado (Pred) Residuo.
Reconstrucción final para el modo no IBC = Filtrado (Pred Residuo) donde,
Filtrado: representa uno o ambos procesos, SAO y desbloqueo
Pred: representa muestras de predicción sin filtrar.
[0120] Como parte de la aplicación del filtrado a las muestras de predicción como se describe anteriormente, el descodificador de vídeo 30 puede configurarse para determinar un bloque de predicción para un bloque de datos de vídeo, filtrar el bloque de predicción para generar un bloque de predicción filtrado y añadir datos residuales al bloque de predicción filtrado para generar un bloque reconstruido. Para filtrar el bloque de predicción, el descodificador de vídeo 30 puede realizar uno o más de filtrado SAO, filtrado de desbloqueo o filtrado ALF. El descodificador de vídeo 30 puede filtrar el bloque de predicción para generar el bloque de predicción filtrado en respuesta al bloque de datos de vídeo que se codifica utilizando un modo de IBC. Para un segundo bloque de datos de vídeo codificados en un modo de codificación diferente al modo de IBC, el descodificador de vídeo 30 puede añadir datos residuales a un segundo bloque de predicción para que el segundo bloque genere un segundo bloque reconstruido y filtre el segundo bloque reconstruido.
[0121] La FIG. 3 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas descritas en la presente 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 eliminar la redundancia espacial de un 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 eliminar la redundancia temporal de un vídeo dentro de tramas o imágenes contiguas de una secuencia de vídeo. El intramodo (modo I) se puede referir a cualquiera de varios modos de compresión de base espacial. 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.
[0122] En el ejemplo de la FIG. 3, el codificador de vídeo 20 incluye una memoria de datos de vídeo 33, unidad de división 35, una unidad de procesamiento de predicción 41, 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 una unidad de estimación de movimiento (MEU) 42, una unidad de compensación de movimiento (MCU) 44, una unidad de procesamiento de intrapredicción 46 y una unidad de IBC 48. Aunque se muestran por separado en la FIG. 3 para facilitar la explicación, debe entenderse que la MEU 42, la MCU 44, la unidad de procesamiento de intrapredicción 46 y la unidad de IBC 48 pueden de hecho estar altamente integradas. 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, un sumador 62, una unidad de filtro 64 y un búfer de imágenes descodificadas (DPB) 66.
[0123] Como se muestra en la FIG. 3, el codificador de vídeo 20 recibe datos de vídeo y almacena los datos de vídeo recibidos en la memoria de datos de vídeo 33. La memoria de datos de vídeo 33 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 33 se pueden obtener, por ejemplo, a partir de la fuente de vídeo 18. El DPB 66 puede ser una memoria de imágenes de referencia 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 modos de intra o intercodificación. La memoria de datos de vídeo 33 y el DPB 66 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 33 y el DPB 66 pueden ser proporcionadas por el mismo dispositivo de memoria o por dispositivos de memoria independientes. En diversos ejemplos, la memoria de datos de vídeo 33 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera del chip en relación con esos componentes.
[0124] La unidad de división 35 recupera los datos de vídeo de la memoria de datos de vídeo 33 y , junto con la unidad de procesamiento de predicción 41 divide los datos de vídeo 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. Aunque se muestran por separado con fines de ejemplo, la unidad de división 35 y la unidad de procesamiento de predicción 41 pueden estar altamente integradas, y tanto la unidad de división 35 como la unidad de procesamiento de predicción 41 pueden realizar aspectos del proceso de determinar cómo dividir una imagen de vídeo. 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 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.
[0125] La unidad de procesamiento de intrapredicción 46, situada 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 contiguos 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 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.
[0126] 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 fraccionarios de las imágenes de referencia almacenadas en el DPB 66. 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 emitir un vector de movimiento con una precisión de píxel fraccionario.
[0127] 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 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 que identifica una o más imágenes de referencia almacenadas en el DPB 66. 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.
[0128] 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íxel. 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.
[0129] En algunos ejemplos, la unidad de IBC 48 puede generar vectores bidimensionales y buscar bloques predictivos de una manera similar a la descrita anteriormente con respecto a la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, pero con los bloques predictivos que están en la misma imagen o trama que el bloque actual. En otros ejemplos, la unidad de IBC 48 puede usar la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, en su totalidad o en parte, para realizar dichas funciones para la predicción de la IBC de acuerdo con las técnicas descritas en el presente documento. En cualquier caso, en la IBC, un bloque predictivo puede ser un bloque que coincida estrechamente con el bloque que se va a codificar, en términos de diferencia de píxeles, que se puede determinar por SAD, SSD u otras métricas de diferencia, y la identificación del bloque puede incluir el cálculo de valores para posiciones de píxeles fraccionarios.
[0130] Después de que la unidad de procesamiento de predicción 41 genere el bloque predictivo para el bloque de vídeo actual, por medio de intrapredicción, interpredicción, o IBC, 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.
[0131] 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 aún más la velocidad de transmisión de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos, o con 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.
[0132] 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.
[0133] 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 píxeles fraccionarios, 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 reconstruido.
[0134] La unidad de filtro 64 filtra el bloque reconstruido (por ejemplo, la salida del sumador 62) y almacena el bloque reconstruido filtrado en el DPB 66 para su uso como bloque de referencia. El bloque de referencia puede ser usado 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 subsiguiente. La unidad de filtro 64 puede aplicar uno o más filtros de desbloqueo, filtrado de desplazamiento adaptativo de muestra (SAO), filtrado en bucle adaptativo (ALF) u otros tipos de filtrado en bucle. La unidad de filtro 64 puede aplicar filtrado de desbloqueo para filtrar límites de bloque para eliminar distorsiones de efecto pixelado a partir del vídeo reconstruido y puede aplicar otros tipos de filtrado para mejorar la calidad global de la codificación. También se pueden usar filtros de bucle adicionales (en bucle o posteriores a un bucle).
[0135] El codificador de vídeo 20 representa uno, pero no el único, ejemplo de un codificador de vídeo que puede realizar las técnicas de la presente divulgación. El codificador de vídeo 20, por ejemplo, la unidad de IBC 48, puede, por ejemplo, codificar un fragmento de datos de vídeo como un fragmento I. El codificador de vídeo 20 puede, por ejemplo, realizar varias pasadas de codificación para una secuencia de vídeo codificada y determinar que la codificación del fragmento como un fragmento I proporciona características de codificación deseables, tales como un compromiso deseable entre velocidad-distorsión. Para el fragmento, el codificador de vídeo 20, por ejemplo, la unidad de IBC 48 y la unidad de codificación por entropía 56, también pueden generar un elemento de sintaxis de IBC para indicar que un modo de IBC está habilitado para el fragmento. Para el fragmento, el codificador de vídeo 20, por ejemplo, la unidad de IBC 48, puede codificar al menos un bloque del fragmento usando un modo de IBC, y el codificador de vídeo 20, por ejemplo, la unidad de procesamiento de intrapredicción 46, puede codificar al menos un bloque del fragmento usando un intramodo. El codificador de vídeo 20, por ejemplo, la unidad de codificación por entropía 56, puede incluir el elemento de sintaxis de IBC en un SPS. En respuesta a la determinación de que varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de los datos de vídeo es igual a uno y en respuesta a que el modo de IBC está habilitado para el fragmento, el codificador de vídeo 20, por ejemplo, la unidad de procesamiento de predicción 41, puede inhabilitar la modificación de la lista de imágenes de referencia. Como parte de la inhabilitación de la modificación de la lista de imágenes de referencia, el codificador de vídeo 20 puede no incluir información de modificación de la lista de imágenes de referencia para el fragmento en un flujo de bits codificado.
[0136] La FIG. 4 es un diagrama de bloques que ilustra un descodificador de vídeo 30 de ejemplo que puede implementar las técnicas descritas en la presente divulgación. En el ejemplo de la FIG. 4, el descodificador de vídeo 30 incluye una memoria de datos de vídeo 78, 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, una unidad de filtro 92 y un DPB 94. 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 y una unidad de IBC 85. 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 FIG. 3.
[0137] Durante el procedimiento 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. El descodificador de vídeo 30 almacena el flujo de bits de vídeo codificado recibido en la memoria de datos de vídeo 78. La memoria de datos de vídeo 78 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 78 se pueden obtener, por ejemplo, por medio del enlace 16, de un dispositivo de almacenamiento 26 o de una fuente de vídeo local, tal como una cámara, o accediendo a medios físicos de almacenamiento de datos. La memoria de datos de vídeo 78 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. El DPB 94 puede ser una memoria de imágenes de referencia 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 modos de intra o intercodificación. La memoria de datos de vídeo 78 y el DPB 94 pueden estar formados por cualquiera de una variedad de dispositivos de memoria, tales como DRAM, SDRAM, MRAM, RRAM u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 78 y el DPB 94 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 78 puede estar en un chip con otros componentes del descodificador de vídeo 30, o fuera del chip en relación con esos componentes.
[0138] La unidad de descodificación por entropía 80 del descodificador de vídeo 30 descodifica por entropía los datos de vídeo almacenados en la memoria de datos de vídeo 78 para generar coeficientes cuantificados, vectores de movimiento y otros elementos de sintaxis. 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.
[0139] 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. 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 producir 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 por defecto basándose en las imágenes de referencia almacenadas en el DPB 94.
[0140] La unidad de compensación de movimiento 82 y/o la unidad de IBC 85 determinan la 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, intrapredicción o interpredicción), usado para codificar los bloques de vídeo del fragmento de vídeo, 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, el estado de interpredicción para cada bloque de vídeo intercodificado del fragmento y otra información para descodificar los bloques de vídeo en el fragmento de vídeo actual.
[0141] La unidad de compensación de movimiento 82 y/o la unidad de IBC 85 también puede realizar interpolación en base a filtros de interpolación. La unidad de compensación de movimiento 82 y/o unidad de IBC 85 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 los valores interpolados para píxeles fraccionarios de los bloques de referencia. En este caso, la unidad de compensación de movimiento 82 y/o la unidad de IBC 85 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.
[0142] La unidad de cuantificación inversa 86 cuantifica inversamente, 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 inversa de números enteros o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de píxel.
[0143] Una vez que la unidad de procesamiento de predicción genera el bloque predictivo para el bloque de vídeo actual usando, por ejemplo, intrapredicción o interpredicción, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales procedentes 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. La unidad de filtro 92 filtra el bloque de vídeo reconstruido usando, por ejemplo, uno o más de filtrado de desbloqueo, filtrado de SAO, filtrado de ALF u otros tipos de filtrado. También se pueden usar otros filtros en 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 son a continuación almacenados en el DPB 94, que almacena imágenes de referencia usadas para la posterior compensación de movimiento. El DPB 94 puede formar parte de o estar separado de una memoria adicional que almacena vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.
[0144] El descodificador de vídeo 30 representa uno, pero no el único, ejemplo de un descodificador de vídeo que puede realizar las técnicas de la presente divulgación. El descodificador de vídeo 30, por ejemplo, la memoria de datos de vídeo 78 y la unidad de descodificación por entropía 80, pueden recibir un fragmento de datos de vídeo. El descodificador de vídeo 30, por ejemplo, la unidad de descodificación por entropía 80 y la unidad de procesamiento de predicción 81, pueden analizar un elemento de sintaxis de IBC para determinar que un modo de IBC está habilitado para el fragmento. El descodificador de vídeo 30, por ejemplo, la unidad de descodificación por entropía 80 y la unidad de procesamiento de predicción 81, pueden analizar un elemento de sintaxis del tipo de fragmento asociado con el fragmento para determinar que el fragmento es un fragmento I. El descodificador de vídeo 30, por ejemplo, la unidad de procesamiento de intrapredicción 84 y la unidad de IBC 85, pueden descodificar el fragmento como un fragmento I. Para descodificar el fragmento como un fragmento I, el descodificador de vídeo 30 puede descodificar los bloques del fragmento utilizando únicamente intrapredicción y sin utilizar un modo de interpredicción o un modo de IBC. El descodificador de vídeo 30, por ejemplo, la unidad de descodificación por entropía 80, puede recibir el elemento de sintaxis de IBC en un SPS. Para realizar la IBC en el al menos un bloque del fragmento, el descodificador de vídeo 30, por ejemplo, la unidad de IBC 85, puede usar una imagen actual que comprende el fragmento como imagen de referencia.
[0145] El descodificador de vídeo 30, por ejemplo, la unidad de procesamiento de predicción y el DPB 94, pueden, por ejemplo, construir una lista de imágenes de referencia para el fragmento de los datos de vídeo. Varias imágenes incluidas en la lista de imágenes de referencia pueden depender de que la IBC esté habilitada. El descodificador de vídeo 30, por ejemplo, la unidad de procesamiento de predicción 81, puede construir una lista de imágenes de referencia para el fragmento de los datos de vídeo. En respuesta a la habilitación del modo de IBC, el descodificador de vídeo 30, por ejemplo, la unidad de procesamiento de predicción y el DPB 94, pueden añadir la imagen que contiene el fragmento a la lista de imágenes de referencia.
[0146] El descodificador de vídeo 30, por ejemplo, la unidad de descodificación por entropía 80 y la unidad de procesamiento de predicción 81, pueden recibir un elemento de sintaxis que indica varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de los datos de vídeo. En respuesta al elemento de sintaxis que indica que el número de imágenes de referencia en la lista de imágenes de referencia para el fragmento de los datos de vídeo es igual a uno y en respuesta a que el modo de IBC está habilitado para el fragmento, el descodificador de vídeo 30, por ejemplo, la unidad de procesamiento de predicción y el DPB 94, pueden construir una lista de imágenes de referencia para el fragmento de los datos de vídeo que incluye una imagen actual que comprende el fragmento como primera entrada en la lista de imágenes de referencia.
[0147] El descodificador de vídeo 30, por ejemplo, la unidad de descodificación por entropía 80 y la unidad de procesamiento de predicción 81, pueden recibir un elemento de sintaxis que indica varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de los datos de vídeo. En respuesta al elemento de sintaxis que indica que el número de imágenes de referencia en la lista de imágenes de referencia para el fragmento de los datos de vídeo es igual a uno y en respuesta a que el modo de IBC está habilitado para el fragmento, el descodificador de vídeo 30, por ejemplo, la unidad de procesamiento de predicción 81, puede inhabilitar la modificación de la lista de imágenes de referencia. Como parte de la inhabilitación de la modificación de la lista de imágenes de referencia, el descodificador de vídeo 30, por ejemplo, la unidad de procesamiento de predicción 81, puede construir la lista de imágenes de referencia sin recibir información de modificación de la lista de imágenes de referencia.
[0148] La FIG. 5 es un diagrama de flujo que muestra un procedimiento de codificación de datos de vídeo según técnicas de la presente divulgación. La FIG. 5 se describirá en referencia a un codificador de vídeo genérico. En el ejemplo de la FIG. 5, el codificador de vídeo codifica un fragmento de datos de vídeo como un fragmento I (150). Para el fragmento, el codificador de vídeo también genera un elemento de sintaxis de IBC para indicar que un modo de IBC está habilitado para el fragmento (152). Para el fragmento, el codificador de vídeo puede codificar al menos un bloque del fragmento usando un modo de IBC y también puede codificar al menos un bloque del fragmento usando un intramodo. El codificador de vídeo puede generar el elemento de sintaxis de IBC para su inclusión en un SPS asociado con el fragmento. En respuesta a determinar que varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de los datos de vídeo es igual a uno y en respuesta a que el modo de IBC esté habilitado para el fragmento, el codificador de vídeo puede inhabilitar la modificación de la lista de imágenes de referencia. Como parte de la inhabilitación de la modificación de la lista de imágenes de referencia, el codificador de vídeo puede no incluir información de modificación de la lista de imágenes de referencia para el fragmento en un flujo de bits codificado.
[0149] La FIG. 6 es un diagrama de flujo que muestra un procedimiento de codificación de datos de vídeo según técnicas de la presente divulgación. La FIG. 6 se describirá en referencia a un descodificador de vídeo genérico. El descodificador de vídeo genérico puede, por ejemplo, corresponderse con el descodificador de vídeo 30, aunque las técnicas de la presente divulgación no se limitan a ningún tipo de descodificador de vídeo específico. El descodificador de vídeo recibe un fragmento de datos de vídeo (160). El descodificador de vídeo analiza un elemento de sintaxis de IBC para determinar que un modo de IBC está habilitado para el fragmento (162). El descodificador de vídeo analiza un elemento de sintaxis del tipo de fragmento asociado con el fragmento para determinar que el fragmento es un fragmento I (164). El descodificador de vídeo descodifica el fragmento como un fragmento I (166). Para descodificar el fragmento como un fragmento I, el descodificador de vídeo puede, por ejemplo, descodificar todos los bloques del fragmento utilizando modos de codificación de intrapredicción. El descodificador de vídeo puede recibir el elemento de sintaxis de IBC en un SPS. Para descodificar el fragmento como un fragmento I, el descodificador de vídeo descodifica los bloques del fragmento utilizando solo intrapredicción. En otras palabras, para descodificar el fragmento como un fragmento I, el descodificador de vídeo descodifica bloques del fragmento sin usar un modo de interpredicción y sin usar el modo de IBC.
[0150] El elemento de sintaxis de IBC puede ser, por ejemplo, el curr_pic_as_ref_enabled_flag descrito anteriormente, y para analizar el elemento de sintaxis de IBC para determinar que el modo de IBC está habilitado para el fragmento, el descodificador de vídeo puede determinar que el valor de curr_pic_as_ref_enabled_flag es igual a 1. El elemento de sintaxis del tipo de fragmento puede ser, por ejemplo, el elemento de sintaxis de slice_type descrito anteriormente, y para analizar el elemento de sintaxis del tipo de fragmento asociado con el fragmento para determinar que el fragmento es un fragmento I, el descodificador de vídeo puede determinar que el valor del elemento de sintaxis slice_type es igual a 2.
[0151] Según el ejemplo de la FIG. 6, el descodificador de vídeo también puede recibir un segundo fragmento de los datos de vídeo, recibir un elemento de sintaxis que indica varias imágenes de referencia en una lista de imágenes de referencia para el segundo fragmento de los datos de vídeo, y en respuesta al elemento de sintaxis que indica el número de imágenes de referencia en la lista de imágenes de referencia para el segundo fragmento de los datos de vídeo es igual a uno y en respuesta a que el modo de IBC está habilitado para el segundo fragmento, el descodificador de vídeo puede construir una lista de imágenes de referencia para el segundo fragmento del video datos que incluyen una imagen actual que comprende el fragmento. En otro ejemplo, el descodificador de vídeo puede recibir un segundo fragmento de los datos de vídeo, construir una lista de imágenes de referencia para el segundo fragmento de los datos de vídeo y, en respuesta a la habilitación del modo de IBC, añadir la imagen que contiene el segundo fragmento a la lista de imágenes de referencia.
[0152] La FIG. 7 es un diagrama de flujo que muestra un procedimiento de codificación de datos de vídeo según técnicas de la presente divulgación. La FIG. 7 se describirá en referencia a un descodificador de vídeo genérico. Las técnicas de la FIG. 7 se pueden utilizar junto con las técnicas de la FIG. 6 o se pueden utilizar de forma independiente. El descodificador de vídeo genérico puede, por ejemplo, corresponderse con el descodificador de vídeo 30, aunque las técnicas de la presente divulgación no se limitan a ningún tipo de descodificador de vídeo específico. El descodificador de vídeo recibe un fragmento de datos de vídeo (170). El descodificador de vídeo recibe un elemento de sintaxis que indica varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de los datos de vídeo (172). En respuesta al elemento de sintaxis que indica que el número de imágenes de referencia en la lista de imágenes de referencia para el fragmento de los datos de vídeo es igual a uno y en respuesta a que el modo de IBC está habilitado para el segundo fragmento, el descodificador de vídeo inhabilita la modificación de la lista de imágenes de referencia para la lista de imágenes de referencia para el segundo fragmento (174). Para inhabilitar la modificación de la lista de imágenes de referencia, el descodificador de vídeo puede, por ejemplo, construir la lista de imágenes de referencia sin recibir información de modificación de la lista de imágenes de referencia y añadir la imagen actual que comprende el fragmento como primera entrada en la lista de imágenes de referencia.
[0153] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en software, 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.
[0154] 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. Además, 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 deben incluir dentro del alcance de los medios legibles por ordenador.
[0155] Las instrucciones se pueden ejecutar por 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 por campo (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.
[0156] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En la presente 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 su lugar, 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 incluya uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.
[0157] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (11)

REIVINDICACIONES
1. Un procedimiento para descodificar datos de vídeo, el procedimiento que comprende:
recibir un fragmento de una imagen actual de los datos de vídeo;
analizar (162) un elemento de sintaxis de copia intrabloque (IBC) para determinar que un modo de IBC está habilitado para el fragmento;
recibir un elemento de sintaxis que indica varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de datos de vídeo;
en respuesta al elemento de sintaxis que indica que el número de imágenes de referencia en la lista de imágenes de referencia es igual a uno y la determinación de que el modo de IBC está habilitado para el fragmento, construir la lista de imágenes de referencia para el fragmento de los datos de vídeo sin recibir la información de modificación de la lista de imágenes de referencia añadiendo la imagen actual que comprende el fragmento como la primera entrada en la lista de imágenes de referencia.
2. El procedimiento de la reivindicación 1, que además comprende:
recibir el elemento de sintaxis de IBC en un conjunto de parámetros de secuencia (SPS).
3. El procedimiento de la reivindicación 1, en el que la descodificación además comprende:
recibir (160; 170) un segundo fragmento de la imagen actual de los datos de vídeo;
analizar (162) un elemento de sintaxis de copia intrabloque (IBC) para determinar que un modo de IBC está habilitado para el segundo fragmento;
analizar (164) un elemento de sintaxis del tipo de fragmento asociado con el segundo fragmento para determinar que el fragmento es un fragmento I;
descodificar (166) el segundo fragmento como un fragmento I, en el que descodificar el segundo fragmento como un fragmento I comprende descodificar todos los bloques del segundo fragmento usando al menos un modo de codificación de intrapredicción.
4. El procedimiento de la reivindicación 3, en el que la descodificación del segundo fragmento como un fragmento I comprende la descodificación de bloques del fragmento utilizando solo intrapredicción.
5. El procedimiento de la reivindicación 1 o 3, en el que el elemento de sintaxis de IBC comprende un elemento de sintaxis curr_pic_as_ref_enabled_flag, y en el que analizar el elemento de sintaxis de IBC para determinar que el modo de IBC está habilitado para el fragmento comprende determinar que el valor del elemento de sintaxis curr_pic_as_ref_enabled_flag es igual a 1.
6. El procedimiento de la reivindicación 3, en el que el elemento de sintaxis del tipo de fragmento comprende un elemento de sintaxis del tipo de fragmento, y en el que analizar el elemento de sintaxis del tipo de fragmento asociado con el fragmento para determinar que el fragmento es un fragmento I comprende determinar que el valor del elemento de sintaxis slice_type es igual a 2.
7. Un aparato para descodificar datos de vídeo, el aparato que comprende:
medios para recibir un fragmento de una imagen actual de los datos de vídeo;
medios para analizar un elemento de sintaxis de copia intrabloque (IBC) para determinar que un modo de IBC está habilitado para el fragmento;
medios para recibir un elemento de sintaxis que indica varias imágenes de referencia en una lista de imágenes de referencia para el fragmento de los datos de vídeo;
medios para construir la lista de imágenes de referencia, en respuesta a que el número de imágenes de referencia en la lista de imágenes de referencia sea un valor igual a uno y la determinación de que el modo de IBC está habilitado para el fragmento, sin recibir información de modificación de la lista de imágenes de referencia añadiendo la imagen actual que comprende el fragmento como la primera entrada en la lista de imágenes de referencia para el fragmento de los datos de vídeo.
8. El aparato de la reivindicación 7, en el que el elemento de sintaxis de IBC comprende un elemento de sintaxis curr_pic_as_ref_enabled_flag, y en el que los medios para analizar el elemento de sintaxis de IBC para determinar que el modo de IBC está habilitado para el fragmento comprenden medios para determinar que el valor del elemento de sintaxis curr_pic_as_ref_enabled_flag es igual a 1.
9. El aparato de la reivindicación 8, que además comprende:
medios para recibir un segundo fragmento de la imagen actual de los datos de vídeo;
medios para analizar un elemento de sintaxis de copia intrabloque (IBC) para determinar que un modo de IBC está habilitado para el segundo fragmento;
medios para analizar un elemento de sintaxis del tipo de fragmento asociado con el segundo fragmento para determinar que el fragmento es un fragmento I;
medios para descodificar el segundo fragmento como un fragmento I, en el que los medios para descodificar el segundo fragmento como un fragmento I comprenden medios para descodificar todos los bloques del primer fragmento usando al menos un modo de codificación de intrapredicción.
10. El aparato de la reivindicación 7, en el que el elemento de sintaxis del tipo de fragmento comprende un elemento de sintaxis del tipo de fragmento, y en el que los medios para analizar el elemento de sintaxis del tipo de fragmento asociado con el fragmento para determinar que el fragmento es un fragmento I comprende medios para determinar que el valor del elemento de sintaxis del tipo de fragmento es igual a 2.
11. Un medio de almacenamiento legible por ordenador que almacena instrucciones que cuando se ejecutan por uno o más procesadores, hacen que el uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1 a 6.
ES16727583T 2015-05-29 2016-05-20 Copia intrabloque a nivel de fragmento Active ES2845673T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562168396P 2015-05-29 2015-05-29
US15/158,741 US10638140B2 (en) 2015-05-29 2016-05-19 Slice level intra block copy and other video coding improvements
PCT/US2016/033553 WO2016196043A1 (en) 2015-05-29 2016-05-20 Slice level intra block copy and other video coding improvements

Publications (1)

Publication Number Publication Date
ES2845673T3 true ES2845673T3 (es) 2021-07-27

Family

ID=57397716

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16727583T Active ES2845673T3 (es) 2015-05-29 2016-05-20 Copia intrabloque a nivel de fragmento

Country Status (20)

Country Link
US (1) US10638140B2 (es)
EP (1) EP3304908B1 (es)
JP (1) JP6716611B2 (es)
KR (1) KR102310752B1 (es)
CN (1) CN107660341B (es)
AR (1) AR106864A1 (es)
AU (1) AU2016270043A1 (es)
BR (1) BR112017025634A2 (es)
CA (1) CA2983886A1 (es)
CL (1) CL2017002954A1 (es)
CO (1) CO2017011983A2 (es)
ES (1) ES2845673T3 (es)
MX (1) MX2017014657A (es)
PH (1) PH12017501987A1 (es)
RU (1) RU2017140987A (es)
SA (1) SA517390407B1 (es)
SG (1) SG11201708683WA (es)
TW (1) TWI705694B (es)
WO (1) WO2016196043A1 (es)
ZA (1) ZA201708069B (es)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
WO2015054811A1 (en) 2013-10-14 2015-04-23 Microsoft Corporation Features of intra block copy prediction mode for video and image coding and decoding
US10116933B2 (en) * 2013-10-14 2018-10-30 Mediatek Inc. Method of lossless mode signaling for video system with lossless and lossy coding
BR112016015080A2 (pt) 2014-01-03 2017-08-08 Microsoft Technology Licensing Llc Predição de vetor de bloco em codificação / decodificação de vídeo e imagem
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
US10785486B2 (en) 2014-06-19 2020-09-22 Microsoft Technology Licensing, Llc Unified intra block copy and inter prediction modes
CA3171803A1 (en) 2014-09-30 2016-04-07 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
CN107615763B (zh) * 2015-05-28 2020-09-11 寰发股份有限公司 一种管理解码图像缓存器的方法及装置
CN115134609A (zh) 2015-06-11 2022-09-30 杜比实验室特许公司 使用自适应去块滤波编码和解码图像的方法及其装置
US10542258B2 (en) * 2016-01-25 2020-01-21 Google Llc Tile copying for video compression
FR3068558A1 (fr) 2017-07-05 2019-01-04 Orange Procede de codage et decodage d'images,dispositif de codage et decodage et programmes d'ordinateur correspondants
FR3068557A1 (fr) * 2017-07-05 2019-01-04 Orange Procede de codage et decodage d'images,dispositif de codage et decodage et programmes d'ordinateur correspondants
FR3062010A1 (fr) 2017-07-05 2018-07-20 Orange Procedes et dispositifs de codage et de decodage d'un flux de donnees representatif d'une sequence d'images
GB2575121B (en) * 2018-06-29 2022-12-28 Imagination Tech Ltd Guaranteed data compression
US10798376B2 (en) * 2018-07-17 2020-10-06 Tencent America LLC Method and apparatus for video coding
EP4336832A3 (en) * 2018-08-17 2024-05-22 Huawei Technologies Co., Ltd. Reference picture management in video coding
CN110858986A (zh) * 2018-08-23 2020-03-03 中兴通讯股份有限公司 带宽调整方法、装置、通信设备及计算机可读存储介质
WO2020056247A1 (en) * 2018-09-14 2020-03-19 Vid Scale, Inc. Methods and apparatus for flexible grid regions
US10848782B2 (en) * 2018-09-21 2020-11-24 Tencent America LLC Method and apparatus for video coding
AU2019354653B2 (en) * 2018-10-02 2023-04-27 Interdigital Vc Holdings, Inc. Generalized bi-prediction and weighted prediction
KR20200040179A (ko) 2018-10-08 2020-04-17 에스케이텔레콤 주식회사 현재 픽처 참조 모드를 이용한 예측 방법 및 영상 복호화 장치
WO2020076034A1 (ko) * 2018-10-08 2020-04-16 에스케이텔레콤 주식회사 현재 픽처 참조 모드를 이용한 예측 방법 및 영상 복호화 장치
US11758164B2 (en) * 2018-10-23 2023-09-12 Tencent America LLC Method and apparatus for video coding
WO2020108650A1 (en) 2018-11-29 2020-06-04 Beijing Bytedance Network Technology Co., Ltd. Flag indication method in intra block copy mode
BR112021010326A2 (pt) * 2018-11-30 2021-08-24 Sharp Kabushiki Kaisha Método de decodificar dados de vídeo, método de codificar dados de vídeo e dispositivo para decodificar dados de vídeo
CN109743576B (zh) * 2018-12-28 2020-05-12 杭州海康威视数字技术股份有限公司 编码方法、解码方法及装置
US11310523B2 (en) * 2019-01-15 2022-04-19 Tencent America LLC Method and apparatus for block vector prediction with integer offsets in intra picture block compensation
US10958904B2 (en) 2019-02-01 2021-03-23 Tencent America LLC Method and apparatus for video coding
US11240516B2 (en) 2019-03-20 2022-02-01 Tencent America LLC Coding mode signaling for small blocks
WO2020197264A1 (ko) * 2019-03-25 2020-10-01 엘지전자 주식회사 비디오 신호를 처리하기 위한 방법 및 장치
US11109041B2 (en) * 2019-05-16 2021-08-31 Tencent America LLC Method and apparatus for video coding
US11134275B2 (en) * 2019-06-04 2021-09-28 Tencent America LLC Method and apparatus for performing primary transform based on filtering of blocks
US11553197B2 (en) * 2019-08-05 2023-01-10 Tencent America LLC Method and apparatus for intra picture block compensation
EP4011076A4 (en) 2019-09-09 2022-11-02 Beijing Bytedance Network Technology Co., Ltd. INTRA-BLOCK COPY ENCODING AND DECODING
CN117615155A (zh) 2019-09-19 2024-02-27 北京字节跳动网络技术有限公司 视频编解码中的参考样点位置推导
CN114503574A (zh) 2019-09-19 2022-05-13 北京字节跳动网络技术有限公司 视频编解码中的缩放窗口
BR112022006453A2 (pt) 2019-10-05 2022-09-27 Beijing Bytedance Network Tech Co Ltd Método de processamento de dados de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador e meio de gravação não transitório legível por computador
CN114556918A (zh) 2019-10-12 2022-05-27 北京字节跳动网络技术有限公司 细化视频编解码工具的使用和信令
WO2021073488A1 (en) 2019-10-13 2021-04-22 Beijing Bytedance Network Technology Co., Ltd. Interplay between reference picture resampling and video coding tools
EP4044598A4 (en) * 2019-11-05 2022-12-07 LG Electronics Inc. METHOD AND DEVICE FOR PROCESSING IMAGE INFORMATION FOR IMAGE/VIDEO CODING
KR20220113379A (ko) * 2019-12-27 2022-08-12 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 픽처 헤더의 슬라이스 유형의 시그널링
US11930208B2 (en) 2020-01-10 2024-03-12 Tencent America LLC Method and apparatus for signaling skip mode flag
US20230103405A1 (en) * 2021-10-04 2023-04-06 Tencent America LLC Method and apparatus for intra block copy prediction with sample padding

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL1724892T3 (pl) 2003-08-29 2017-01-31 Quanta Services Przeciąganie przewodu pod napięciem i sposoby łączenia przez splatanie
EP1962513A1 (en) * 2007-02-26 2008-08-27 Vestel Elektronik Sanayi ve Ticaret A.S. Methods and apparatus for processing of a digital image
US9066102B2 (en) 2010-11-17 2015-06-23 Qualcomm Incorporated Reference picture list construction for generalized P/B frames in video coding
SG10201408609SA (en) 2011-06-30 2015-02-27 Microsoft Technology Licensing Llc Reducing latency in video encoding and decoding
EP3576412B1 (en) * 2011-11-08 2021-09-01 Nokia Technologies Oy Reference picture handling
US9503715B2 (en) 2013-08-30 2016-11-22 Qualcomm Incorporated Constrained intra prediction in video coding
KR20150026927A (ko) * 2013-09-03 2015-03-11 주식회사 케이티 스케일러블 비디오 신호 인코딩/디코딩 방법 및 장치
US10785486B2 (en) * 2014-06-19 2020-09-22 Microsoft Technology Licensing, Llc Unified intra block copy and inter prediction modes
US10051277B2 (en) * 2014-11-06 2018-08-14 Mediatek Inc. Method for sub-block based palette coding
CN104539949B (zh) 2014-12-12 2018-02-06 北方工业大学 Hevc屏幕编码中基于边缘方向的快速分块的方法及装置

Also Published As

Publication number Publication date
EP3304908B1 (en) 2020-10-28
CN107660341B (zh) 2020-08-18
CN107660341A (zh) 2018-02-02
RU2017140987A (ru) 2019-07-02
TWI705694B (zh) 2020-09-21
SG11201708683WA (en) 2017-12-28
CL2017002954A1 (es) 2018-05-18
JP6716611B2 (ja) 2020-07-01
CO2017011983A2 (es) 2017-11-30
KR102310752B1 (ko) 2021-10-07
US20160353117A1 (en) 2016-12-01
CA2983886A1 (en) 2016-12-08
JP2018520581A (ja) 2018-07-26
PH12017501987A1 (en) 2018-03-26
MX2017014657A (es) 2018-01-24
AU2016270043A1 (en) 2017-11-16
EP3304908A1 (en) 2018-04-11
KR20180013918A (ko) 2018-02-07
ZA201708069B (en) 2020-01-29
SA517390407B1 (ar) 2020-09-21
US10638140B2 (en) 2020-04-28
AR106864A1 (es) 2018-02-28
BR112017025634A2 (pt) 2018-08-07
TW201711461A (zh) 2017-03-16
WO2016196043A1 (en) 2016-12-08

Similar Documents

Publication Publication Date Title
ES2845673T3 (es) Copia intrabloque a nivel de fragmento
US10652571B2 (en) Advanced motion vector prediction speedups for video coding
US10390015B2 (en) Unification of parameters derivation procedures for local illumination compensation and cross-component linear model prediction
US10812822B2 (en) Intra block copy merge mode and padding of unavailable IBC reference region
RU2742298C2 (ru) Выведение вектора движения при видеокодировании
ES2869854T3 (es) Unificar copia intrabloque e interpredicción
ES2904510T3 (es) Uso de una imagen actual como una referencia para la codificación de vídeo
ES2767103T3 (es) Determinación de valores de parámetros de cuantificación (QP) y de valores QP delta para bloques codificados por paleta en la codificación de vídeo
JP6396439B2 (ja) 残差差分パルスコード変調(dpcm)拡張ならびに変換スキップ、回転、および走査との調和
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
US20160337662A1 (en) Storage and signaling resolutions of motion vectors
US20150373334A1 (en) Block vector coding for intra block copying
BR112016000863B1 (pt) Previsão residual de componente intercor
US20170244966A1 (en) Weighted prediction for screen content coding and multi-layer coding
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
ES2754056T3 (es) Sistemas y procedimientos para la derivación de RPS entre capas basada en la dependencia de predicción de referencia de subcapa
ES2749747T3 (es) Sistemas y procedimientos para definir por separado las dependencias para la predicción entre capas basada en subcapas
EP3644608A1 (en) Decoding method and apparatus based on template matching
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo