ES2902652T3 - Modulación de código intrapulso (IPCM) y desbloqueo del modo de codificación sin pérdidas para codificación de vídeo - Google Patents
Modulación de código intrapulso (IPCM) y desbloqueo del modo de codificación sin pérdidas para codificación de vídeo Download PDFInfo
- Publication number
- ES2902652T3 ES2902652T3 ES15187686T ES15187686T ES2902652T3 ES 2902652 T3 ES2902652 T3 ES 2902652T3 ES 15187686 T ES15187686 T ES 15187686T ES 15187686 T ES15187686 T ES 15187686T ES 2902652 T3 ES2902652 T3 ES 2902652T3
- Authority
- ES
- Spain
- Prior art keywords
- block
- value
- blocks
- video
- video data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un procedimiento de codificación de datos de vídeo de Codificación de Vídeo de Alta Eficiencia, HEVC, comprendiendo el procedimiento realizado por un dispositivo de codificación (12): codificar (900) una pluralidad de bloques (800, 802) de datos de vídeo, en el que al menos un bloque (812, 822) de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación sin pérdidas, en el que codificar el al menos un bloque mediante el uso del modo de codificación sin pérdidas comprende: i) predecir el al menos un bloque para generar un bloque previsto para el modo de codificación sin pérdidas, ii) codificar el al menos un bloque en base al bloque previsto y un residuo no cuantificado, y iii) señalizar datos de vídeo residuales no cuantificados de al menos un bloque en un flujo de bits; asignar (902) un valor de parámetro de cuantificación distinto de cero, QP, para el al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas en base a un valor de QP previsto para el al menos un bloque; determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques, en el que determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques comprende: i) determinar si se debe realizar el filtrado de desbloqueo en un bloque adyacente (804, 806, 808, 810, 814, 816, 818, 820) ubicado adyacente a al menos un bloque y codificado mediante el uso de un modo de codificación con pérdidas, en base al valor de QP distinto de cero asignado para el al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas, y ii) determinar para evitar realizar el filtrado de desbloqueo en al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas; y realizar (904) el filtrado de desbloqueo para cada uno de la pluralidad de bloques en base a las determinaciones respectivas.
Description
DESCRIPCIÓN
Modulación de código intrapulso (IPCM) y desbloqueo del modo de codificación sin pérdidas para codificación de vídeo
Campo técnico
Esta divulgación se refiere a la codificación de vídeo, y, de manera más particular, a la codificación de los bloques de datos de vídeo generados por los procedimientos de codificación de vídeo.
Antecedentes
Las capacidades de vídeo digital se pueden incorporar en una amplia gama de dispositivos, que incluye televisores digitales, sistemas de difusión digital directa, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, tabletas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, celular o teléfonos por radio satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión de vídeo en directo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), el estándar de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo y las extensiones de tales estándares. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital más eficientemente al implementar tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicciones espaciales (intraimagen) y/o predicciones temporales (interimagen) para reducir o eliminar la redundancia inherente a las secuencias de vídeo. Para la codificación de vídeo en base a bloques, un segmento de vídeo (es decir, una trama de vídeo o una porción de una trama de vídeo) se puede dividir en bloques de vídeo, que también se pueden denominar bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un segmento intracodificado (I) de una imagen se codifican mediante el uso de la predicción espacial con respecto a las muestras de referencia de los bloques vecinos de la misma imagen. Los bloques de vídeo en un segmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a las muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a las muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar fotogramas y las imágenes de referencia se pueden denominar fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan las diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forma el bloque predictivo y los datos residuales 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 compresión adicional, los datos residuales se pueden transformar del dominio de píxeles a un dominio de transformación, dando como resultado coeficientes de transformación residuales, que luego se pueden cuantificar. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden escanear con el fin de producir un vector unidimensional de coeficientes de transformación. La codificación por entropía se puede aplicar luego para lograr una compresión aún mayor.
"Intra lossless coding and QP range selection" de S. Sun (ISO/IEC JTC1/SC29/WG11 y ITU-T Q.6/SG16 Documento del equipo de vídeo conjunto JVT-C023, mayo de 2002), es un documento de entrada para JVT en el desarrollo del formato de codificación H.264/AVC y proporciona los resultados de un esquema propuesto de codificación sin pérdidas.
"WD4: Working Draft 4 of High-Efficiency Video Coding" de Bross y otros (JCT-VC de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29 WG11, sexta reunión, Torino, 14-22 de julio de 2011, Documento número JCTVC-F803_d0) es un borrador de trabajo de la memoria descriptiva HEVC que incorpora un modo PCM.
"Proposal of enhanced PCM coding in HEVC" de Chono y otros (JCT-VC de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29 WG11, quinta reunión, Ginebra, 16-23 de marzo de 2011, Documento número JCTVC-E192-r2) describe dos problemas de codificación PCM en HEVC. Uno se relaciona con la profundidad de la muestra PCM. El otro se relaciona con los procedimientos de filtro en bucle en píxeles de bloques intra PCM. El documento propone un elemento de sintaxis para deshabilitar el desbloqueo y los procedimientos de filtro de bucle adaptativo en píxeles de bloques intra PCM.
Sumario
En general, esta divulgación describe técnicas para la realización del filtrado de desbloqueo en relación con los bloques de datos de vídeo codificados mediante el uso de la codificación de modulación de código intrapulso (IPCM)
y/o los modos de codificación sin pérdidas. En particular, las técnicas de esta divulgación pueden incluir realizar el filtrado de desbloqueo en uno o más bloques de datos de vídeo que incluyen uno o más bloques codificados por IPCM bloques codificados sin pérdidas y bloques codificados mediante el uso de técnicas o "modos", de codificación con pérdidas. Las técnicas descritas en la presente memoria pueden mejorar la calidad visual de uno o más de los bloques de datos de vídeo cuando los bloques se codifican, en comparación con otras técnicas.
De manera específica, las técnicas descritas pueden mejorar la calidad visual de uno o más de los bloques codificados por IPCM que incluyen los datos de vídeo reconstruidos al habilitar el filtrado de desbloqueo para los bloques y realizan el filtrado de desbloqueo de una manera particular. Adicionalmente, las técnicas pueden mejorar la calidad visual de uno o más de los bloques codificados sin pérdidas que incluyen los datos de vídeo originales al deshabilitar el filtrado de desbloqueo para los bloques. Además, las técnicas también pueden mejorar la calidad visual de uno o más de los bloques codificados mediante el uso de los modos de codificación con pérdidas, por ejemplo, los bloques ubicados adyacentes a uno o más de los bloques codificados por IPCM y sin pérdidas, realizando el filtrado de desbloqueo en los bloques de una manera particular. Como un resultado, puede haber una mejora relativa en la calidad visual de uno o más bloques de datos de vídeo que incluyen los bloques codificados mediante el uso de modos de codificación IPCM, sin pérdidas y con pérdidas, cuando se utilizan las técnicas de esta divulgación.
La invención se define por las reivindicaciones independientes con características de realizaciones preferentes establecidas en las reivindicaciones dependientes.
Los detalles de uno o más ejemplos se establecen en los dibujos adjuntos y la descripción a continuación. Otras características, objetivos y ventajas serán evidentes a partir de la descripción y los dibujos y a partir de las reivindicaciones.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y decodificación de vídeo que puede realizar las técnicas para la modulación de código intrapulso (IPCM) y el desbloqueo del modo de codificación sin pérdidas, consistente con las técnicas de esta divulgación.
La Figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede realizar las técnicas para el desbloqueo del modo de codificación de IPCM y sin pérdidas, consistente con las técnicas de esta divulgación.
La Figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede realizar las técnicas para el desbloqueo del modo de codificación de IPCM y sin pérdidas, consistente con las técnicas de esta divulgación.
La Figura 4 es un diagrama conceptual que ilustra un ejemplo de filtrado de desbloqueo realizado en un límite de dos bloques adyacentes de datos de vídeo, consistente con las técnicas de esta divulgación.
La Figura 5 es un diagrama conceptual que ilustra un ejemplo de señalización de un valor delta QP para cada uno de uno o más bloques de datos de vídeo, consistente con las técnicas de esta divulgación.
La Figura 6 es un diagrama de flujo que ilustra un procedimiento de ejemplo de calcular un valor de fuerza del límite para un filtro de desbloqueo, consistente con las técnicas de esta divulgación.
Las Figuras 7A-7B son diagramas conceptuales que ilustran ejemplos de desbloqueo del modo de codificación de IPCM, consistentes con las técnicas de esta divulgación.
Las Figuras 8A-8B son diagramas conceptuales que ilustran ejemplos de desbloqueo del modo de codificación sin pérdida, consistentes con las técnicas de esta divulgación.
Las Figuras 9-11 son diagramas de flujo que ilustran ejemplos de procedimientos de desbloqueo del modo de codificación sin pérdida e IPCM, consistentes con las técnicas de esta divulgación.
Descripción detallada
En general, esta divulgación describe técnicas para la realización del filtrado de desbloqueo en relación con los bloques de datos de vídeo codificados mediante el uso de la codificación de modulación de código intrapulso (IPCM) y/o los modos de codificación sin pérdidas. En particular, las técnicas de esta divulgación pueden incluir realizar el filtrado de desbloqueo en uno o más bloques de datos de vídeo que incluyen uno o más bloques codificados por IPCM, bloques codificados sin pérdidas y bloques codificados mediante el uso de las llamadas técnicas de codificación "con pérdidas", o "modos". Las técnicas descritas en la presente memoria pueden mejorar la calidad visual de uno o más de los bloques de datos de vídeo cuando los bloques se codifican, en comparación con otras técnicas.
Como un ejemplo, las técnicas descritas pueden mejorar la calidad visual de uno o más bloques codificados por IPCM que incluyen los datos de vídeo reconstruidos al permitir el filtrado de desbloqueo para los bloques y realizar el filtrado de desbloqueo de una manera particular. Por ejemplo, las técnicas incluyen la asignación de un valor de parámetro de cuantificación (QP) distinto de cero para un bloque codificado por IPCM en base a uno o más de un valor de QP señalado que indica el valor de QP distinto de cero asignado, un valor de QP previsto y un valor de QP delta ("dQP") que representa una diferencia entre el valor de QP distinto de cero asignado y el valor de QP previsto,
para el bloque codificado por IPCM. Las técnicas incluyen además realizar un filtrado de desbloqueo en el bloque codificado por IPCM en base al valor de QP distinto de cero asignado para el bloque codificado por IPCM.
Como otro ejemplo, las técnicas descritas pueden mejorar la calidad visual de uno o más bloques codificados sin pérdidas que incluyen los datos de vídeo originales desactivando el filtrado de desbloqueo para los bloques. Por ejemplo, las técnicas incluyen señalizar uno o más elementos de sintaxis (por ejemplo, códigos de 1 bit o "indicadores") que indican que el filtrado de desbloqueo se deshabilita para uno o más bloques codificados sin pérdidas. En algunos ejemplos, el uno o más elementos de sintaxis pueden indicar que el filtrado de desbloqueo se deshabilita para todos los límites del uno o más bloques codificados sin pérdidas que se comparten con otros bloques adyacentes de datos de vídeo.
Como otro ejemplo más, las técnicas descritas también pueden mejorar la calidad visual de uno o más bloques de datos de vídeo que se ubican adyacentes a un bloque codificado IPCm o un bloque codificado sin pérdidas y que se codifican mediante el uso de los modos de codificación con pérdidas, realizando un filtrado de desbloqueo en los bloques con pérdidas de una manera particular. Por ejemplo, las técnicas incluyen realizar el filtrado de desbloqueo en uno o más bloques con pérdidas en base a un valor de QP distinto de cero asignado para el bloque adyacente codificado por IPCM o sin pérdidas.
De esta manera, puede haber una mejora relativa en la calidad visual de uno o más bloques de datos de vídeo que incluyen los bloques codificados mediante el uso de los modos de codificación IPCM, sin pérdidas y con pérdidas, cuando se utilizan las técnicas de esta divulgación.
La Figura 1 es un diagrama de bloques que ilustra un ejemplo de un sistema de codificación y decodificación de vídeo que puede realizar técnicas para el desbloqueo del modo de codificación de IPCM y sin pérdidas, de acuerdo con las técnicas de esta divulgación. Como se muestra en la Figura 1, el sistema 10 incluye un dispositivo fuente 12 que genera los datos de vídeo codificados a decodificarse en un momento posterior por un dispositivo de destino 14. El dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, que incluye ordenadores de escritorio, ordenadores portátiles (es decir, portátil), tabletas, módulos de conexión, teléfonos móviles tales como los denominados teléfonos "inteligentes", las denominadas almohadillas "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo en directo o similares. En algunos casos, el dispositivo fuente 12 y el dispositivo de destino 14 se pueden equipar para la comunicación inalámbrica.
El dispositivo de destino 14 puede recibir los datos de vídeo codificados a decodificar a través de un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de vídeo codificados desde el dispositivo fuente 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir al dispositivo fuente 12 transmitir los datos de vídeo codificados de manera directa al dispositivo de destino 14 en directo. Los datos de vídeo codificados se pueden modular de acuerdo con un estándar 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 alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red en base a 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 enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo fuente 12 al dispositivo de destino 14.
Alternativamente, los datos codificados se pueden enviar desde la interfaz de salida 22 a un dispositivo de almacenamiento 24. De manera similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 24 mediante la interfaz de entrada 26. El dispositivo de almacenamiento 24 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o de acceso local, tal como un 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 los datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento 24 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo fuente 12. El dispositivo de destino 14 puede acceder a los datos de vídeo almacenados desde el dispositivo de almacenamiento 24 a través de la transmisión en directo o de la descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar los 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 a la red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, que incluye una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión alámbrica (por ejemplo, DSL, módem por cable, etc.) o una combinación de ambos que sea adecuada para acceder a los 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 24 puede ser una transmisión en directo, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no se limitan necesariamente a las aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo en soporte de cualquiera de una variedad de aplicaciones multimedia, tal como difusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en directo, por ejemplo, a través de Internet, codificación de vídeo digital para almacenamiento en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para soportar la transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tal como el vídeo en directo, la reproducción de vídeo, la difusión de vídeo, y/o la telefonía de vídeo.
En el ejemplo de la Figura 1, el dispositivo fuente 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/demodulador (módem) y/o un transmisor. En el dispositivo fuente 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente, una interfaz de alimentación de vídeo para recibir el vídeo de un proveedor de contenido de vídeo, y/o un sistema de gráficos por ordenador para generar los datos de gráficos por ordenador como fuente de vídeo o una combinación de tales fuentes. Como un ejemplo, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo fuente 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 esta divulgación pueden ser aplicables a la codificación de vídeo en general y se pueden aplicar a aplicaciones inalámbricas y/o alámbricas.
El vídeo capturado, precapturado o generado por ordenador puede ser codificado por el codificador de vídeo 20. Los datos de vídeo codificados se pueden transmitir de manera directa al dispositivo de destino 14 a través de la interfaz de salida 22 del dispositivo fuente 12. Los datos de vídeo codificados también (o alternativamente) se pueden almacenar en el dispositivo de almacenamiento 24 para un acceso posterior por el dispositivo de destino 14 u otros dispositivos, para la decodificación y/o reproducción.
El dispositivo de destino 14 incluye una interfaz de entrada 26, un decodificador de vídeo 30 y un dispositivo de visualización 28. En algunos casos, la interfaz de entrada 26 puede incluir un receptor y/o un módem. La interfaz de entrada 26 del dispositivo de destino 14 recibe los datos de vídeo codificados a través del enlace 16 o desde el dispositivo de almacenamiento 24. Los datos de vídeo codificados comunicados a través del enlace 16 o proporcionados en el dispositivo de almacenamiento 24, pueden incluir una variedad de elementos de sintaxis generados por el codificador de vídeo 20 para su uso por un decodificador de vídeo, tal como el decodificador de vídeo 30, en la decodificación de los datos de vídeo. Tales elementos de sintaxis se pueden incluir con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos.
El dispositivo de visualización 28 puede estar integrado con o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también se configura para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 28 muestra los datos de vídeo decodificados a un usuario y puede comprender cualquiera de una variedad de dispositivos de visualización tal como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánica (OLED), u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo con un estándar de compresión de vídeo, como el estándar de Codificación de Vídeo de Alta Eficiencia (HEVC), actualmente en desarrollo por el Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) del ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de la ISO/IEC y puede cumplir con el Modelo de Prueba HEVC (HM). Alternativamente, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con otros estándares de propiedad o de la industria, tal como el estándar ITU-T H.264, también conocido como MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC) o con las extensiones de tales estándares. Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación particular. Otros ejemplos de estándares de compresión de vídeo incluyen MPEG-2 e ITU-T H.263. Un borrador reciente del estándar HEVc , denominado como "Borrador de Trabajo 8 de1HEVC" o "WD8", se describe en el documento JCTVC-J1003_d7, Bross y otros, "High efficiency vídeo coding (HEVC) text specification draft 8", Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JcT-VC) de ITU-T SG16 Wp3 y de ISO/IEC JTC1/SC29/WG11, 10ma reunión: Estocolmo, Suecia, 11-20 de julio de 2012, que, a partir del 2 de octubre de 2012, se puede descargar desde http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.
Otro borrador del estándar HEVC, denominado en esta divulgación como "Borrador de Trabajo 4 de1HEVC" o "WD4", se describe en el documento JCTVC-F803_d2, Bross y otros, "WD4: Working Draft 4 of High-Efficiency Video Coding", Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 y de ISO/IEC JTC1/SC29/WG11, 6ta reunión: Torino, IT, 14-22 de julio de 2011, que, a partir del 2 de octubre de 2012, se puede descargar desde http://phenix.int-evry.fr/jct/doc_end_user/documents/6_Torino/wg11/JCTVC-F803-v8.zip. Otro borrador del estándar h Ev C, denominado en esta divulgación como "Borrador de Trabajo 6 de1HEVC" o
"WD6", se describe en el documento JCTVC-H1003, Bross y otros, "High efficiency video coding (HEVC) text specification draft 6", Equipo Colaborativo Conjunto sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 y de iSo /IEC JTC1/SC29/w G11, 8va reunión: San José, California, Estados Unidos, febrero de 2012, que, a partir del 1 de junio de 2012, se puede descargar desde http://phenix.intevry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip.
Aunque no se muestra en la Figura 1, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 se pueden integrar cada uno con un codificador y decodificador de audio y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para manejar la codificación de audio y de vídeo en un flujo de datos común o en flujos de datos separados. Si corresponde, en algunos ejemplos, las unidades MUX-DEMUX se pueden ajustar al protocolo multiplexor ITU H.223 o a otros protocolos tales como el protocolo de datagramas de usuario (UDP).
El codificador de vídeo 20 y el decodificador de vídeo 30 se pueden implementar cada uno como cualquiera de una variedad de circuitos codificadores o decodificadores adecuados, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas lógicas programable en campo (FPGA), lógica discreta, software, hardware, firmware o cualquiera de sus combinaciones. Cuando las técnicas se implementan de manera parcial en el software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio adecuado y ejecutar las instrucciones en el hardware mediante el uso de uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno de los codificadores de vídeo 20 y decodificadores de vídeo 30 se puede incluir en uno o más codificadores o decodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/decodificador combinado ("CODEC") en un dispositivo respectivo.
Los esfuerzos de la estandarización de HEVC se basan en un modelo evolutivo de un dispositivo de codificación de vídeo denominado como el Modelo de Prueba HEVC (HM). El HM presupone diversas capacidades adicionales de los dispositivos de codificación de vídeo con relación a los dispositivos existentes de acuerdo con, por ejemplo, ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intrapredicción, e1HM puede proporcionar hasta treinta y cinco modos de codificación de intrapredicción.
En general, el modelo de trabajo del HM describe que una trama o imagen de vídeo se puede dividir en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU) que incluyen tanto las muestras de luma como de croma. Un bloque de árbol tiene un propósito similar al de un macrobloque del estándar H.264. Un segmento incluye una serie de bloques de árbol consecutivos en el orden de codificación. Una trama o una imagen de vídeo se pueden dividir en una o más secciones. Cada bloque de árbol se puede dividir en unidades de codificación (CU) de acuerdo con un árbol cuádruple. Por ejemplo, un bloque de árbol, como un nodo raíz del árbol cuádruple, se puede dividir en cuatro nodos hijo y cada nodo hijo puede ser a su vez un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo no dividido final, como un nodo hoja del árbol cuádruple, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos de sintaxis asociados con un flujo de bits codificado pueden definir un número máximo de veces que un bloque de árbol se puede dividir y también pueden definir un tamaño mínimo de los nodos de codificación.
Una CU incluye un nodo de codificación y las unidades de predicción (PU) y las unidades de transformación (TU) asociadas con el nodo de codificación. Un tamaño de la CU corresponde al tamaño del nodo de codificación y debe ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol con un máximo de 64x64 píxeles o superior. Cada CU puede contener una o más PU y una o más TU. Los datos de sintaxis asociados con una CU pueden describir, por ejemplo, la partición de la CU en una o más PU. Los modos de particionamiento pueden diferir entre si la CU es codificada en modo directo o en modo de salto, codificada en modo de intrapredicción o codificada en modo de interpredicción. Las PU se pueden dividir para que sean de forma no cuadrada. Los datos de sintaxis asociados con una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuádruple. Una TU puede ser de forma cuadrada o no cuadrada.
El estándar HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU se basa usualmente en el tamaño de las PU dentro de una CU determinada definida para una LCU particionada, aunque esto puede no ser siempre así. Las TU usualmente son del mismo tamaño o más pequeñas que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU se pueden subdividir en unidades más pequeñas mediante el uso de una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos hoja del RQT se pueden denominar como TU. Los valores de diferencia de píxeles asociados con las TU se pueden transformar para producir coeficientes de transformación, que se pueden cuantificar.
En general, una PU incluye los datos relacionados con el procedimiento de predicción. Por ejemplo, cuando la PU se codifica dentro de modos, la PU puede incluir los datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU se codifica entre modos, la PU puede incluir los datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de
píxel), una imagen de referencia a la que apunta el vector de movimiento, y/o una lista de imágenes de referencia (por ejemplo, Lista 0, Lista 1 o Lista C) para el vector de movimiento.
En general, una TU se utiliza para los procedimientos de transformación y cuantificación. Una CU determinada que tiene una o más PU también puede incluir una o más TU. Después de la predicción, el codificador de vídeo 20 puede calcular los valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencia de píxeles que se pueden transformar en los coeficientes de transformación, cuantificar y explorar mediante el uso de las TU para producir los coeficientes de transformación serializados para la codificación por entropía. Esta divulgación usualmente utiliza el término "bloque de vídeo" o de manera simple "bloque" para referirse a un nodo de codificación de una CU. En algunos casos específicos, esta divulgación también puede utilizar el término "bloque de vídeo" para referirse a un bloque de árbol, es decir, LCU o CU, que incluye un nodo de codificación y las PU y las TU.
Una secuencia de vídeo usualmente incluye una serie de cuadros o imágenes de vídeo. Un grupo de imágenes (GOP) de manera general comprende una serie de una o más de las imágenes de vídeo. Un GOP puede incluir los datos de sintaxis en un encabezado del GOP, un encabezado de una o más de las imágenes o en cualquier otro lugar, que describa una serie de imágenes incluidas en el GOP. Cada segmento de una imagen puede incluir los datos de sintaxis del segmento que describen un modo de codificación para el segmento respectivo. El codificador de vídeo 20 usualmente opera en los bloques de vídeo dentro de los segmentos de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con un estándar de codificación específico.
Como un ejemplo, el HM soporta la predicción en diversos tamaños de PU. Asumiendo que el tamaño de una CU particular es 2Nx2N, el HM soporta la intrapredicción en los tamaños de PU de 2Nx2N o NxN y la interpredicción en los tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también soporta particiones asimétricas para la interpredicción en los tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la partición asimétrica, una dirección de una CU no se particiona, mientras que la otra dirección se particiona en 25 % y 75 %. La parte de la CU correspondiente a la partición del 25 % se indica mediante una "n" seguida de una indicación de "Arriba", "Abajo", "Izquierda" o "Derecha". Por tanto, por ejemplo, "2NxnU" se refiere a una CU de 2Nx2N que se particiona de manera horizontal con una PU de 2Nx0,5N en la parte superior y una PU de 2Nx1,5N en la parte inferior.
En esta divulgación, "NxN" y "N por N" se pueden utilizar indistintamente para referirse a las dimensiones de los píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Del mismo modo, un bloque NxN de manera general tiene N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles de un bloque se pueden organizar en filas y columnas. Además, los bloques no necesitan tener necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
Después de la codificación intrapredictiva o interpredictiva mediante el uso de las PU de una CU, el codificador de vídeo 20 puede calcular los datos residuales para las TU de la CU. Las PU pueden comprender los datos de píxeles en el dominio espacial (también denominado dominio de píxeles) y las TU pueden comprender los coeficientes en el dominio de transformación después la aplicación de una transformación, por ejemplo, una transformación de coseno discreta (DCT), una transformación entera, una transformación de ondícula o una transformación conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a las diferencias de píxeles entre los píxeles de la imagen no codificada y los valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU que incluyen los datos residuales para la CU y luego transformar las TU para producir los coeficientes de transformación para la CU.
Después de cualquier transformación para producir los coeficientes de transformación, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformación. La cuantificación de manera general se refiere a un procedimiento en el que los coeficientes de transformación se cuantifican para de manera posible reducir la cantidad de datos utilizados para representar los coeficientes, proporcionando compresión adicional. El procedimiento de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. Por ejemplo, un valor de bits n se puede redondear a un valor de bits m durante la cuantificación, donde n es mayor que m.
En algunos ejemplos, el codificador de vídeo 20 puede utilizar un escaneo predefinido o un orden de "escaneo" para escanear los coeficientes de transformación cuantificados para producir un vector serializado que se puede codificar por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un escaneo adaptativo. Después de escanear los coeficientes de transformación cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la codificación por Entropía de
Particionamiento del Intervalo de Probabilidad (PIPE) o con otra metodología de codificación por entropía. El codificador de vídeo 20 también puede codificar por entropía los elementos de sintaxis asociados con los datos de vídeo codificados para su uso por el decodificador de vídeo 30 al decodificar los datos de vídeo.
Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo de contexto a un símbolo a transmitir. El contexto se puede relacionar a, por ejemplo, si los valores vecinos del símbolo son o no de valor cero. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para transmita un símbolo a transmitir. Las palabras código en VLC se pueden construir de modo que los códigos relativamente más cortos correspondan a los símbolos más probables, mientras que los códigos relativamente más largos correspondan a los símbolos menos probables. De esta manera, el uso de VLC puede lograr un ahorro de bits con respecto a, por ejemplo, mediante el uso de palabras de código de igual longitud para cada símbolo a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
Lo siguiente se analiza con referencia al codificador de vídeo 20 y al decodificador de vídeo 30 y diversos componentes de los mismos, como se representa en las Figuras 2 y 3, y como se describe con mayor detalle a continuación. De acuerdo con algunas técnicas de codificación de vídeo, en los casos donde el codificador de vídeo 20 (por ejemplo, mediante el uso de la unidad de selección de modo 40 de la Figura 2) selecciona el modo de codificación de IPCM para codificar un bloque "actual" particular de datos de vídeo en base a los resultados de error, el codificador de vídeo 20 (por ejemplo, mediante el uso de la unidad de codificación del IPCM 48A de la Figura 2) puede codificar los datos o "muestras", del bloque actual como datos sin procesar o muestras de manera directa en un flujo de bits. De manera más específica, en algunas versiones del Borrador de Trabajo HEVC ("WD") (por ejemplo, la versión 4 o "WD4"), el modo de intracodificación IPCM permite que el codificador de vídeo 20 represente muestras de luma y croma de un bloque de datos de vídeo de manera directa en un flujo de bits como datos brutos (es decir, las muestras de luma y de croma o los valores, se codifican sin modificar o "tal cual"). El codificador de vídeo 20 puede, por lo tanto, codificar el bloque actual como un bloque codificado por IPCM sin comprimir los datos en el bloque.
En un ejemplo, el codificador de vídeo 20 puede seleccionar el modo de intracodificación IPCM cuando un número de bits necesarios para representar una versión comprimida del bloque actual (por ejemplo, una versión del bloque actual codificado con intrapredicción o interpredicción) excede un número de bits necesarios para enviar una versión sin comprimir de los datos en el bloque. En este caso, el codificador de vídeo 20 (por ejemplo, mediante el uso de la unidad de codificación del IPCM 48A) puede codificar datos originales sin comprimir o muestras, del bloque actual como muestras de IPCM. En algunos casos, los datos sin comprimir originales se pueden filtrar mediante un filtro de desbloqueo (por ejemplo, el filtro de desbloqueo 64 de la Figura 2) antes de que se codifiquen como muestras de IPCM por el codificador de vídeo 20.
En otro ejemplo, el codificador de vídeo 20 puede utilizar intrapredicción o interpredicción para generar una versión comprimida del bloque actual a codificar por entropía (por ejemplo, mediante el uso de la unidad de codificación por entropía 56 de la Figura 2) y generar un bloque reconstruido a partir del bloque reconstruido desde la versión comprimida del bloque actual para su uso como una imagen de referencia. Si el codificador de vídeo 20 determina que es probable que haya una pérdida en el conducto del codificador en una unidad de codificación por entropía (por ejemplo, la unidad de codificación por entropía 56), el codificador de vídeo 20 puede codificar muestras reconstruidas del bloque reconstruido como muestras de IPCM. En el ejemplo de la Figura 2 que se describe a continuación, el bloque reconstruido se filtra mediante un filtro de desbloqueo, es decir, el filtro de desbloqueo 64, antes de que se codifique como muestras de IPCM por una unidad de codificación del IPCM, es decir, la unidad de codificación del IPCM 48A. En otros ejemplos, el bloque reconstruido se puede codificar por la unidad de codificación del IPCM sin que se filtre.
Cuando el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de datos de vídeo del codificador de vídeo 20 que incluyen muestras de IPCM como los datos de vídeo sin procesar, el decodificador de vídeo 30 (por ejemplo, mediante el uso de la unidad de decodificación del IPCM 98B de la Figura 3) puede decodificar el flujo de bits para generar un bloque de datos de vídeo de manera directa desde las muestras de IPCM. Como se describió anteriormente, en algunas versiones preliminares de HEVC (por ejemplo, WD4), el modo de intracodificación IPCM permite que el codificador de vídeo 20 represente las muestras de luma y de croma de un bloque de datos de vídeo de manera directa en un flujo de bits como datos brutos. El decodificador de vídeo 30 (por ejemplo, mediante el uso de la unidad de decodificación del IPCM 98A) puede, por lo tanto, decodificar el bloque actual como un bloque codificado por IPCM sin descomprimir los datos codificados del bloque.
En un ejemplo, las muestras de IPCM en el flujo de bits para el bloque actual pueden ser muestras originales sin comprimir, de modo que el bloque decodificado sea idéntico al bloque original. En este caso, el bloque original generado por el decodificador de vídeo 30 (por ejemplo, mediante el uso de la unidad de decodificación del IPCM 98A) se puede emitir de manera directa como vídeo decodificado. En algunos casos, el bloque original generado por el decodificador de vídeo 30 se puede filtrar mediante un filtro de desbloqueo (por ejemplo, el filtro de desbloqueo 94 de la Figura 3) antes de que se utilice como imagen de referencia y salga como vídeo decodificado.
En otro ejemplo, las muestras de IPCM en el flujo de bits para el bloque actual pueden ser muestras reconstruidas de una versión reconstruida del bloque actual. En este caso, el bloque decodificado puede ser idéntico a la versión reconstruida del bloque original, que puede incluir algunas distorsiones en comparación con el bloque original. En el ejemplo de la Figura 3 descrito a continuación, el bloque reconstruido generado por el decodificador de vídeo 30, es decir, mediante el uso de la unidad de decodificación del IPCM 98A, se puede filtrar mediante un filtro de desbloqueo, es decir, el filtro de desbloqueo 94, antes de que se utilice como imagen de referencia y salga como vídeo decodificado. En otros ejemplos, el bloque reconstruido se puede emitir de manera directa desde el decodificador de vídeo 30 (por ejemplo, mediante el uso de la unidad de decodificación del IPCM 98A) como vídeo decodificado sin filtrar.
Como tal, algunas versiones preliminares de HEVC (por ejemplo, WD4) soportan el modo de intracodificación IPCM descrito anteriormente, que permite que un codificador (por ejemplo, el codificador de vídeo 20) represente las muestras de CU de luma y de croma de un bloque actual de datos de vídeo de manera directa en un flujo de bits como datos sin procesar. Como se explicó anteriormente, existen diversos usos posibles para tales técnicas de intracodificación del IPCM. Como un ejemplo, la intracodificación del IPCM se puede utilizar como un medio para que el codificador garantice que el tamaño en bits de una representación codificada de un bloque de datos de vídeo no exceda un número de bits requeridos para enviar los datos sin comprimir del bloque. En tales casos, el codificador puede codificar las muestras originales de los datos en el bloque actual como muestras de IPCM. Como otro ejemplo, la intracodificación de IPCM se puede utilizar para evitar pérdidas en el conducto del codificador. En tales casos, el codificador puede codificar las muestras no originales, por ejemplo, las muestras reconstruidas, de datos en una versión reconstruida del bloque actual como muestras de IPCM.
Además, algunas versiones preliminares de HEVC (por ejemplo, WD4) también soportan la señalización de un elemento de sintaxis "pcmjoop_filter_disable_flag" en un conjunto de parámetros de secuencia (SPS) asociado con uno o más bloques de datos de vídeo para indicar si los procedimientos de filtro de bucle se habilitan para los bloques codificados por IPCM. Los procedimientos de filtro de bucle pueden incluir el filtrado de desbloqueo, el filtrado de bucle adaptativo (ALF) y el desplazamiento adaptativo de muestra (SAO). Si el valor del pcm_loop_filter_disable_flag es igual a verdadero o "1", tanto los procedimientos de desbloqueo como el de filtro de bucle adaptativo para las muestras de los bloques codificados por IPCM se desactivan. De otro modo, cuando el valor del pcm_loop_filter_disable_flag es igual a falso o "0", se habilitan los procedimientos de filtro de bucle adaptativo y de desbloqueo para las muestras de los bloques codificados por IPCM.
Cuando las muestras originales sin comprimir de un bloque actual se codifican como muestras de IPCM, las muestras están libres de distorsión. Por lo tanto, el filtrado en bucle, tal como el filtrado de desbloqueo, ALF y el SAO, es innecesario y se puede omitir. Por otro lado, cuando las muestras reconstruidas de una versión reconstruida del bloque actual se codifican como muestras de IPCM, un decodificador de vídeo (por ejemplo, decodificador de vídeo 30) puede necesitar realizar un filtrado en bucle, que incluye el filtrado de desbloqueo, a lo largo de los bordes del bloque de IPCM.
Un filtro de desbloqueo (por ejemplo, el filtro de desbloqueo 64 del codificador de vídeo 20 de la Figura 2 o el filtro de desbloqueo 94 del decodificador de vídeo 30 de la Figura 3) en algunas versiones preliminares de HEVC puede filtrar ciertos bordes de TU y de PU de un bloque de datos de vídeo en base a un resultado de un cálculo de la fuerza del límite, que se describe con mayor detalle a continuación con referencia a la Figura 6 y las decisiones de desbloqueo. Por ejemplo, las decisiones de desbloqueo pueden incluir si el filtro de desbloqueo se enciende o se apaga, si el filtro de desbloqueo es débil o fuerte y la fuerza de un filtro débil para un bloque determinado de datos de vídeo. El cálculo de la fuerza del límite y las decisiones de desbloqueo dependen de los valores de umbral "tc" y "p". Los valores de umbral se pueden almacenar en una tabla a la que se puede acceder en base a un valor de q P de un bloque en particular. Por ejemplo, el filtro de desbloqueo puede obtener el valor de QP de un bloque que contiene el borde actual a desbloquear (es decir, un "QP de luma" para un borde de luma y un "QP de croma" para un borde de croma). En algunas versiones preliminares de HEVC (por ejemplo, WD6), el filtrado de desbloqueo, cuando se aplica, filtra los bordes (por ejemplo, los bordes de ciertas TU y/o PU) entre dos bloques (por ejemplo, los llamados "bordes comunes"). De acuerdo con estas versiones preliminares de HEVC, los bordes se filtran en base a un valor de QP promedio (por ejemplo, "QPprom") de los valores de QP de ambos bloques.
Como otro ejemplo, un modo de codificación sin pérdidas se ha adoptado en algunas versiones preliminares de HEVC (por ejemplo, WD6). En el modo de codificación sin pérdidas, en un ejemplo, los datos originales o "sin procesar" de un bloque de datos de vídeo se pueden codificar sin realizar las etapas de predicción, suma, transformación, cuantificación y codificación por entropía descritas anteriormente. En otro ejemplo, los datos residuales de un bloque de datos de vídeo no se cuantifican por un codificador (por ejemplo, el codificador de vídeo 20). Por tanto, en este ejemplo, cuando un decodificador (por ejemplo, un decodificador de vídeo 30) añade los datos residuales no cuantificados a los datos de predicción, los datos de vídeo resultantes pueden ser una reproducción sin pérdidas de los datos de vídeo originales codificados por el codificador. En cualquier caso, el modo de codificación sin pérdidas se puede utilizar, por ejemplo, por el codificador cuando codifica los datos de vídeo y por el decodificador cuando decodifica los datos de vídeo.
En un flujo de bits codificado, la configuración del elemento de sintaxis "qpprime_y_zero_transquant_bypass_flag" o, en algunos ejemplos, el elemento de sintaxis "cu_transquant_bypass_flag" en un SPS asociado con uno o más bloques de datos de vídeo en un valor de "1" puede especificar que, si un valor de QP de luma o "QP"y , "el valor de un bloque actual de datos de vídeo es igual a "0 ", se aplicará un procedimiento de codificación sin pérdidas para codificar el bloque. En el modo de codificación sin pérdidas, los procedimientos de escalado y transformación y los procedimientos de filtrado en bucle descritos anteriormente se pueden omitir.
En algunas versiones preliminares de HEVC (por ejemplo, WD6), el parámetro de cuantificación de luma QP'y se define como sigue:
QPV = QPy + QpBdOffsety Ee. 1 donde "QpBdOffsety = 6 * bit_depth_luma_minus8".
En este ejemplo, si la profundidad de bits es de 8 bits, entonces QpBdOffsetY es igual a "0", o, si la profundidad de bits es de 10 bits, entonces QpBdOffsety es igual a "12". El rango de QPy es de "-QpBdOffsety ' a "51" y el rango de QP'y es de "0" a "(51 QpBdOffsety)".
De acuerdo con algunas versiones preliminares de HEVC (por ejemplo, WD6), el filtro de desbloqueo en bucle puede omitir el procesamiento de una CU actual o el bloque de datos de vídeo, que tiene "QP'y = 0" si qpprime_y_zero_transquant_bypass_flag para el bloque es igual a "1". Sin embargo, si la CU actual o el bloque, se rodeado por CU o bloques que no se codifican sin pérdidas (por ejemplo, para los que "QP"y >0"), el filtro de desbloqueo puede omitir el procesamiento de los bordes izquierdo y superior de la CU actual, mientras que los bordes derecho e inferior de la CU actual se pueden filtrar por desbloqueo, como se ilustra en la Figura 8A, que se describe con mayor detalle a continuación. Un problema potencial asociado con este enfoque es que el filtro de desbloqueo modifica las muestras sin pérdidas a lo largo de los bordes derecho e inferior del bloque actual, como se muestra en las partes discontinuas de la CU sin pérdidas (es decir, el bloque 812) que se muestra en la Figura 8A. En este ejemplo, los parámetros de filtro de desbloqueo p y tc se pueden determinar en base a un parámetro "QPl", que es un promedio de los valores de QPy de los bloques en ambos lados del borde actual que se desbloquea. En los casos donde un lado del borde se codifica sin pérdidas, el valor de QPl se puede calcular mediante el uso de la siguiente expresión:
QPl= (-QpBdOffsety QPy 1 ) » 1 t c . 1
Los diversos enfoques descritos anteriormente, relacionados con la realización del filtrado de desbloqueo para los bloques de datos de vídeo codificados por IPCM y sin pérdidas, tienen diversos inconvenientes.
Como un ejemplo, en el caso de un bloque codificado por IPCM, algunas versiones preliminares de HEVC (por ejemplo, WD4) especifican que un valor de QP para el bloque es siempre igual a "0". Establecer un valor de QP en "0" para cada bloque de IPCM deshabilita de manera eficaz el filtrado de desbloqueo en los bordes izquierdo y superior del bloque, independientemente del valor del pcm_loop_filter_disable_flag asociado con el bloque. En algunos casos, sin embargo (por ejemplo, cuando un bloque de IPCM incluye las muestras reconstruidas), se puede desear realizar un filtrado de desbloqueo en los bordes izquierdo y superior de un bloque codificado por IPCM. Adicionalmente, en algunos casos, el borde derecho e inferior del bloque de IPCM se pueden filtrar, en función del tipo y el valor de QP de un bloque vecino de datos de vídeo. Además, como se describió anteriormente, algunas versiones preliminares de HEVC (por ejemplo, WD6) especifican calcular un promedio de los valores de QP de los bloques para realizar el filtrado de desbloqueo en el "borde común" entre los bloques. Como tal, en los casos donde un bloque es un bloque de IPCM, el cálculo promedio puede resultar en dividir a la mitad el valor de QP del otro bloque (es decir, dado que el valor de QP del bloque de IPCM es igual a "0"). Esto puede resultar en un filtrado de desbloqueo demasiado débil del borde común, independientemente del valor del pcm_loop_filter_disable_flag. Como otro ejemplo, la manera en la que los procedimientos de filtrado de desbloqueo en bucle descritos anteriormente desbloquean el filtro o desbloquean, los bordes límite de las CU sin pérdidas o los bloques de datos de vídeo, de acuerdo con algunas versiones preliminares de HEVC (por ejemplo, WD 6) se puede mejorar mediante el uso de las técnicas descritas en esta divulgación. Como un ejemplo, realizar un filtrado de desbloqueo en los bordes derecho e inferior de una CU sin pérdidas o bloque, que puede modificar las muestras sin pérdidas del bloque, puede ser indeseable. Como otro ejemplo, un valor de QPl derivado mediante el uso de las técnicas descritas anteriormente (es decir, la ecuación 2) puede ser inadecuado en los casos donde las muestras con pérdidas adyacentes a la CU codificada sin pérdidas o al bloque, se modifican, como se muestra en la Figura 8B, que es análogo al desbloqueo del borde de IPCM en un caso donde el pcm_loop_filter_disable_flag es igual a verdadero.
Esta divulgación describe diversas técnicas que pueden, en algunos casos, reducir o eliminar algunos de los inconvenientes descritos anteriormente. En particular, las técnicas de esta divulgación pueden proporcionar soporte para realizar el filtrado de desbloqueo para bloques codificados por IPCM, los bloques codificados sin pérdidas, así como los bloques codificados denominados "con pérdidas" que se ubican adyacentes a uno o más bloques codificados por IPCM o sin pérdidas.
Como ejemplo, las técnicas divulgadas incluyen la asignación de un valor de QP distinto de cero para un bloque de IPCM, cuando el filtrado de desbloqueo se habilita en base a un valor de QP previsto. Por ejemplo, el valor de QP previsto puede ser un valor de QP para un grupo de cuantificación que incluye el bloque de IPCM o un valor de QP para un bloque vecino de datos de vídeo ubicado adyacente o cerca del bloque de IPCM. En algunos casos, las técnicas divulgadas solo se pueden aplicar a los bloques de IPCM que consisten en muestras reconstruidas, ya que las muestras originales están libres de distorsión y normalmente no requieren filtrado de desbloqueo. En otros casos, las técnicas se pueden aplicar a los bloques de IPCM que consisten en las muestras reconstruidas o las muestras originales.
Como otro ejemplo, el decodificador de vídeo 30 puede asignar de manera implícita el valor de QP distinto de cero al bloque de IPCM en base a un valor de QP previsto conocido. El valor de QP previsto puede ser un valor de QP para un grupo de cuantificación que incluye el bloque de IPCM o para un bloque vecino del bloque de IPCM. Por ejemplo, cuando el bloque de IPCM tiene un tamaño que es más pequeño que el tamaño mínimo del grupo de cuantificación de la CU, el decodificador de vídeo 30 puede establecer el valor de QP distinto de cero asignado para el bloque de IPCM igual a un valor de QP para un grupo de cuantificación que incluye el bloque de IPCm . El grupo de cuantificación puede incluir uno o más bloques de datos de vídeo o CU, que son más pequeños que el tamaño mínimo del grupo de cuantificación de la CU y que todos tienen el mismo valor de QP. Cuando el bloque de IPCM tiene un tamaño que es mayor o igual al tamaño mínimo del grupo de cuantificación de la CU, el decodificador de vídeo 30 puede establecer el valor de QP distinto de cero asignado para el bloque de IPCM igual a un valor de QP para un bloque vecino del bloque de IPCM. El bloque vecino puede ser un bloque de datos de vídeo ubicado a la izquierda del bloque de IPCM o un bloque anterior más cercano del bloque de IPCm en un orden de codificación.
Como otro ejemplo más, el codificador de vídeo 20 puede asignar el valor de QP distinto de cero al bloque de IPCM en base al valor de QP previsto y señalar de manera explícita el valor de QP, distinto de cero, asignado al decodificador de vídeo 30. Por ejemplo, el codificador de vídeo 20 puede señalar un valor de QP para el bloque de IPCM que representa una diferencia entre el valor de QP distinto de cero asignado y el valor de QP previsto. En este caso, el decodificador de vídeo 30 puede asignar el valor de QP distinto de cero al bloque de IPCM en base al valor de QP recibido para el bloque de IPCM y el valor de QP previsto. El decodificador de vídeo 30 puede entonces aplicar un filtro de desbloqueo a las muestras del bloque de IPCM en base al valor de QP distinto de cero asignado para el bloque de IPCM. En otros ejemplos, el codificador de vídeo 20 puede señalar el valor de QP, distinto de cero, asignado al decodificador 30 de vídeo directamente.
Como otro ejemplo más, de acuerdo con las técnicas de esta divulgación, como se ilustra en la Figura 8B, un filtro de desbloqueo se puede desactivar para todos los bordes límite (es decir, los bordes de contorno superior, inferior, izquierdo y derecho) de una CU codificada sin pérdidas o bloque de datos de vídeo, con QP'y =0, si el qpprime_y_zero__transquant_bypass_flag para el bloque es igual a "1". Por ejemplo, los valores de QP'y en ambos lados de un borde actual a desbloquear (es decir, los valores de QP'Y para el bloque codificado sin pérdidas y un bloque adyacente que comparten el borde actual a desbloquear) se pueden verificar y, si al menos uno de esos valores es igual a "0", se puede omitir el desbloqueo. Alternativamente, los valores de q Py en ambos lados del borde actual se pueden verificar y, si al menos uno de esos valores es igual a "-QpBdOffsetyy ', se puede omitir el desbloqueo. Para evitar la prueba de los valores de QP para los bordes internos (por ejemplo, los bordes de "TU") del bloque o CU codificada sin pérdidas, el filtro de desbloqueo puede deshabilitar el procesamiento de estos bordes. Por ejemplo, el parámetro "bInternalEdge" se puede establecer en falso para toda la CU o el bloque, en algunos ejemplos.
Como otro ejemplo, de acuerdo con las técnicas de esta divulgación, como se ilustra en la Figura 8B, un filtro de desbloqueo puede modificar las muestras de bloques con pérdidas que se ubican adyacentes a un bloque o CU codificada sin pérdidas, mientras deja sin modificar las muestras de CU sin pérdidas. Este enfoque es similar al caso del desbloqueo de los bordes de los límites de una CU de IPCM o un bloque con pcm_loop_filter_disable_flag igual a verdadero. En consonancia con las técnicas divulgadas, la manera en la que el valor de QPl utilizado para determinar los parámetros del filtro de desbloqueo p y tc se calcula de acuerdo con algunas versiones preliminares de HEVC que se pueden cambiar o redefinir, ya que el valor de QPl calculado mediante el uso de tales técnicas (ver, por ejemplo, la ecuación 2 anterior) puede ser inadecuado para proporcionar una integración visualmente agradable de los bloques o CU codificadas sin pérdidas en una región circundante codificada con pérdidas. Una posible solución propuesta por esta divulgación es utilizar un máximo de los dos valores de QPy ,p /q para desbloquear un borde actual compartido por un bloque codificado sin pérdidas y un bloque con pérdidas adyacente, como se muestra en la siguiente expresión:
QPl - max( Q l’y.r ■ QPy,q ) Ec. 3
donde P y Q representan los bloques (es decir, los bloques codificados sin pérdidas y con pérdidas) en ambos lados del borde actual (por ejemplo, los bloques izquierdo y derecho o superior e inferior). Esto es equivalente a utilizar un valor de QPy de una CU o bloque que se ubican en un lado codificado con pérdidas de un borde entre los bloques P y Q, como se ilustra en la Tabla 1 a continuación.
Tabla 1: QPl para el filtrado de desbloqueo un borde entre los bloques P y Q como una función de un modo de codificación sin pérdidas de ambos bloques.
El siguiente pseudocódigo se puede usar para obtener la "derivación modificada QPl propuesta, sin la necesidad de determinar las condiciones especiales (por ejemplo, la determinación del modo sin pérdidas puede estar ya disponible):
si(CU_Q- > isLosslessCoded(PartQIdx))
{QP_Q = 0;
QP_P <<= 1;
}
si (CU_P->isLosslessCoded(PartPIdx))
{
QP_P = 0;
QP_Q <<= 1;
} QP_L = (QP_P QP_Q 1) >> 1;
Las técnicas propuestas en esta divulgación pueden, en algunos casos, suavizar las discontinuidades de los bordes entre las regiones codificadas con pérdidas y las regiones codificadas sin pérdidas mediante la derivación propuesta del QPl para determinar la fuerza de desbloqueo. Mediante el uso de otras técnicas, las discontinuidades límite entre las regiones codificadas sin pérdidas y las regiones codificadas con pérdidas pueden dar como resultado unos límites claramente visibles. Las técnicas propuestas en esta divulgación, que incluyen determinar un QP apropiadoL para un filtrado de desbloqueo, puede, en algunos casos, ayudar a reducir las discontinuidades límite.
Para habilitar el comportamiento de desbloqueo descrito anteriormente en consonancia con las técnicas de esta divulgación, un código de un solo bit o "indicador" se puede señalar en el SPS, un conjunto de parámetros de imagen (PPS), un conjunto de parámetros de adaptación (APS) o en el encabezado de sector. Por ejemplo, un elemento de sintaxis "lossless_loop_filter_enable_flag" igual a "1" se puede utilizar para habilitar el filtrado de desbloqueo de las muestras codificadas con pérdidas adyacentes a la CU sin pérdidas o borde de bloque, como se muestra en la Figura 8B, mientras que el indicador igual a "0" se puede utilizar para inhabilitar el desbloqueo de todos los límites de la CU sin pérdidas. Alternativamente, la definición del pcm_loop_filter_disable_flag descrita anteriormente con referencia a los bloques codificados por IPCM se puede ampliar para cubrir también el caso de bloques o CU codificadas sin pérdidas. Por ejemplo, en los casos donde el pcm_loop_filter_disable_flag es igual a verdadero (por ejemplo, igual a "1"), el comportamiento de desbloqueo representado en la Figura 8B se puede aplicar tanto a los bordes límite de la CU de IPCM como a los de sin pérdidas. Si pcm_loop_filter_disable_flag es igual a falso (por ejemplo, igual a "0"), el desbloqueo de los límites de la CU sin pérdidas se puede deshabilitar completamente, mientras que el desbloqueo de IPCM puede se puede habilitar en ambos lados de los límites de IPCM.
En otro ejemplo, si el pcm_loop_filter_disable_flag es igual a falso, entonces el desbloqueo de la CU sin pérdidas o límites de bloque se puede habilitar en ambos lados de los límites, como es el caso de los límites de IPCM. En otro ejemplo más, si el pcm_loop_filter_disable_flag es igual a falso, entonces el desbloqueo de la CU sin pérdidas o los límites de bloque y de los límites de IPCM se puede desactivar en ambos lados de los límites y si el pcm_loop_filter_disable_flag es igual a verdadero, el desbloqueo de los límites de CU sin pérdidas y los límites de IPCM se puede habilitar en un solo lado, como se describe en la Figura 8B. El pcm_loop_filter_disable_flag se puede renombrar al elemento de sintaxis "pcm_transquant_loopfilter_disable_flag" para reflejar su aplicabilidad y utilización dentro tanto del modo de codificación de IPCM como el modo de codificación sin pérdidas.
En consecuencia, los dos valores para el pcm_loop_filter_disable_flag pueden corresponder a (1) habilitar el desbloqueo para ambos lados y deshabilitar el desbloqueo para ambos lados, (2) habilitar el desbloqueo para ambos lados y mezclar o (3) deshabilitar el desbloqueo para ambos lados y mezclar. "Ambos lados" en este contexto se refiere a los dos lados de un límite entre una CU o bloque codificado con pérdidas y una CU o bloque codificado sin pérdidas (es decir, un borde de límite interno a la CU codificada sin pérdidas y un borde límite interno a la CU codificada con pérdidas, como se muestra en las Figuras 8Ay 8B). "Mezclar" en este contexto de manera general se
refiere a las técnicas descritas en la presente memoria donde se realiza el filtrado de desbloqueo para el borde límite interno de una CU codificada con pérdidas, pero el filtrado de desbloqueo se deshabilita para el borde del límite interno de una CU codificada sin pérdidas.
Como otro ejemplo más, de acuerdo con las técnicas de esta divulgación, un valor de QP o un valor de elemento de sintaxis "delta_QP" para el bloque actual se puede señalizar, por ejemplo, desde el codificador de vídeo 20 al decodificador de vídeo 30, junto con los datos de la CU sin pérdidas para el bloque, para controlar el filtrado de desbloqueo a lo largo de los bordes límite del bloque actual y uno o más bloques. De acuerdo con otra técnica más de esta divulgación, un valor de QP para el bloque actual utilizado para controlar el filtrado de desbloqueo a lo largo de uno o más bordes límite de una Cu o bloque codificado sin pérdidas se puede predecir a partir de un QPy o un valor delta_QP de bloques o CU codificadas con pérdidas. De acuerdo con otras técnicas de esta divulgación, se puede asignar un valor de QP constante (por ejemplo, "0" u otro valor) a una CU sin pérdidas para controlar el desbloqueo a lo largo de los bordes límite.
En consecuencia, en algunos ejemplos consistentes con las técnicas de esta divulgación, el codificador de vídeo 20 del dispositivo fuente 12 se puede configurar para codificar ciertos bloques de datos de vídeo (por ejemplo, una o más PU o TU de una CU). En estos ejemplos, el decodificador de vídeo 30 del dispositivo de destino 14 se puede configurar para recibir los datos de vídeo codificados desde el codificador de vídeo 20 y decodificar los datos de vídeo. Como un ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 se pueden configurar para codificar una pluralidad de bloques de datos de vídeo, en el que al menos un bloque de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación que es uno de un modo de codificación de IPCM y un modo de codificación sin pérdidas. En algunos ejemplos, el modo de codificación sin pérdidas puede corresponder al modo de codificación sin pérdidas que utiliza la predicción. En estos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar al menos las etapas de predicción y suma descritas anteriormente para generar los datos residuales de un bloque de datos de vídeo. Además, en estos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden evitar la cuantificación de los datos residuales. En otros ejemplos, sin embargo, el modo de codificación sin pérdidas puede corresponder a un modo de codificación sin pérdidas en el que no se utiliza ninguna predicción (por ejemplo, cuando los datos de los bloques de dato de vídeo originales o "sin procesar" se codifican sin realizar la predicción, suma, transformación, cuantificación y las etapas de codificación por entropía descritas anteriormente). En cualquier caso, en este ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 se pueden configurar además para asignar un valor de QP distinto de cero para el al menos un bloque codificado mediante el uso del modo de codificación. También en este ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 se pueden configurar aún más para realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado para el al menos un bloque.
De esta manera, las técnicas de esta divulgación pueden permitir que el codificador de vídeo 20 y/o el decodificador de vídeo 30 mejoren la calidad visual de uno o más bloques de datos de vídeo cuando se codifica el uno o más bloques, en comparación con otras técnicas. En particular, las técnicas descritas pueden mejorar la calidad visual de uno o más bloques codificados por IPCM que consisten en los datos de vídeo reconstruidos al permitir el filtrado de desbloqueo para los bloques y realizar el filtrado de desbloqueo de una manera particular. Adicionalmente, las técnicas pueden mejorar la calidad visual de uno o más bloques codificados sin pérdidas que incluyen los datos de vídeo originales (por ejemplo, si se codifican como originales o como datos de vídeo "sin procesar" o como datos de vídeo residuales no cuantificados) al deshabilitar el filtrado de desbloqueo para los bloques. Además, las técnicas también pueden mejorar la calidad visual de uno o más bloques codificados mediante el uso de los modos de codificación con pérdidas, por ejemplo, los bloques ubicados adyacentes a uno o más bloques codificados por IPCM o sin pérdidas, realizando el filtrado de desbloqueo en los bloques de una manera particular. Como un resultado, puede haber una mejora relativa en la calidad visual de uno o más bloques de datos de vídeo que incluyen los bloques codificados mediante el uso de modos de codificación IPCM, sin pérdidas y con pérdidas, cuando se utilizan las técnicas de esta divulgación.
El codificador de vídeo 20 y el decodificador de vídeo 30 se pueden implementar cada uno como cualquiera de una variedad de circuitos de codificadores o decodificadores adecuados, según corresponda, tal como uno o más microprocesadores, DSP, ASIC, FPGA, circuitos de lógica discreta, software, hardware, firmware o cualquier de los mismos. Cada uno del codificador de vídeo 20 y decodificador de vídeo 30 se puede incluir en uno o más codificadores o decodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/decodificador combinado (CODEC). Un aparato que incluye un codificador de vídeo 20 y/o un decodificador de vídeo 30 puede comprender un circuito integrado (IC), un microprocesador, y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
La Figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede realizar las técnicas para el desbloqueo del modo de codificación de IPCM y sin pérdidas, consistente con las técnicas de esta divulgación. El codificador de vídeo 20 puede realizar la intracodificación y la intercodificación de los bloques de vídeo dentro de los segmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo determinado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro
de fotogramas o imágenes adyacentes de una secuencia de vídeo. El intramodo (modo I) se puede referir a cualquiera de diversos modos de compresión basados en el espacio. Los intermodos, tal como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), se pueden referir a cualquiera de diversos modos de compresión basados en el tiempo.
En el ejemplo de la Figura 2, el codificador de vídeo 20 incluye la unidad de selección de modo 40, la unidad de estimación de movimiento 42, la unidad de compensación de movimiento 44, el módulo de intrapredicción 46, la unidad de codificación de IPCM 48A, la unidad de codificación sin pérdidas 48B, la memoria de imágenes de referencia 66, el sumador 50, el módulo de transformación 52, la unidad de cuantificación 54 y la unidad de codificación por entropía 56. Para la reconstrucción de los bloques de vídeo, el codificador de vídeo 20 también incluye la unidad de cuantificación inversa 58, el módulo de transformación inversa 60 y el sumador 62. Un filtro de desbloqueo 64 se incluye también para filtrar los límites de bloque para eliminar los artefactos de bloqueo del vídeo reconstruido.
Como se muestra en la Figura 2, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de un segmento de vídeo a codificar. El segmento se puede dividir en múltiples bloques de vídeo. La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intrapredicción, interpredicción, IPCM o sin pérdidas, para el bloque de vídeo actual en base a los resultados del error. Si se seleccionan los modos intrapredicción o interpredicción, la unidad de selección de modo 40 proporciona el bloque intracodificado o intercodificado resultante al sumador 50 para generar los datos de bloques residuales y al sumador 62 para reconstruir el bloque codificado para su uso como una imagen de referencia. El módulo de intrapredicción 46 realiza la codificación intrapredictiva del bloque de vídeo actual en relación a uno o más bloques vecinos en la misma trama o segmento como el bloque actual a codificar para proporcionar la compresión espacial. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan una codificación interpredictiva del bloque de vídeo actual en relación con uno o más bloques de predicción en una o más imágenes de referencia para proporcionar la compresión temporal.
En el caso de la intercodificación, la unidad de estimación de movimiento 42 se puede configurar para determinar el modo de interpredicción para un segmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar cortes de vídeo en la secuencia como cortes P, cortes B o cortes GPB. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar muy integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el procedimiento de generar los 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 imagen o trama de vídeo actual con relación a un bloque predictivo dentro de una imagen de referencia.
Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con la PU del bloque de vídeo a codificar en términos de diferencia de píxeles, que se puede determinar mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia cuadrada (SSD) o mediante otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular los valores para las posiciones de píxeles subenteros de imágenes de referencia almacenadas en la memoria de imágenes de referencia 66. Por ejemplo, el codificador de vídeo 20 puede calcular los valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel, u otras posiciones de píxeles fraccionarios de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento con relación a las posiciones de píxeles completos y a las posiciones de píxeles fraccionarios y generar un vector de movimiento con precisión de píxeles fraccionarios.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un segmento intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia se puede seleccionar de una primera lista de imágenes de referencia (List 0) o de una segunda lista de imágenes de referencia (List 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de imágenes de referencia 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.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar buscar o generar el bloque predictivo en base al vector de movimiento determinado en base al vector de movimiento determinado mediante la estimación de movimiento. Al 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íxeles del bloque predictivo de los valores de píxeles del bloque de vídeo actual que se codifica, formando valores de diferencia de píxeles. Los valores de diferencia de píxeles forman los datos residuales para el bloque y pueden incluir componentes de diferencia de luma y croma. El sumador 50 representa el componente o componentes que realizan esta operación de sustracción. La unidad de compensación de movimiento 44 también puede generar los elementos de sintaxis asociados con los bloques de vídeo y el
segmento de vídeo para su uso por el decodificador de vídeo 30 al decodificar los bloques de vídeo del segmento de vídeo.
Después de que la unidad de compensación de movimiento 44 genera el bloque predictivo para el bloque de vídeo actual, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo del bloque de vídeo actual. Los datos de vídeo residuales en el bloque residual se pueden incluir en una o más TU y aplicar al módulo de transformación 52. El módulo de transformación 52 transforma los datos de vídeo residuales en coeficientes de transformación residual mediante el uso de una transformación, tal como una transformación de coseno discreta (DCT) o una transformación conceptualmente similar. El módulo de transformación 52 puede convertir los datos de vídeo residuales de un dominio de píxeles a un dominio de transformación, tal como un dominio de frecuencia.
El módulo de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformación para reducir además la tasa de bits. El procedimiento de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un QP. En algunos ejemplos, la unidad de cuantificación 54 puede entonces realizar una exploración de la matriz que incluye los coeficientes de transformación cuantificados. Alternativamente, la unidad de codificación de entropía 56 puede realizar la exploración.
Después de la cuantificación, la entropía de la unidad de codificación de entropía 56 codifica los coeficientes de transformación cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar CAVLC, CABAC, u otra técnica de codificación por entropía. Después de la codificación por entropía mediante la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir al decodificador de vídeo 30 o archivar para su posterior transmisión o recuperación mediante el decodificador 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 segmento de vídeo actual que se codifica.
La unidad de cuantificación inversa 58 y el módulo de transformación inversa 60 aplican la cuantificación inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles 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 subenteros 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 el movimiento producido por la unidad de compensación de movimiento 44 para almacenar en la memoria de imágenes de referencia 66. El bloque de referencia se puede utilizar por la unidad de estimación de movimiento 42 y por la unidad de compensación de movimiento 44 como un bloque de referencia para interpredecir un bloque en una trama o imagen de vídeo subsecuente.
Como se describió anteriormente con referencia a la Figura 1, el codificador de vídeo 20 también incluye la unidad de codificación de IPCM 48A y la unidad de codificación sin pérdidas 48B que pueden permitir que el codificador de vídeo 20 realice las técnicas de codificación de IPCM y sin pérdidas atribuidas al codificador de vídeo 20 en la divulgación.
Como un ejemplo, el codificador de vídeo 20 se puede configurar para codificar uno o más bloques de datos de vídeo durante un procedimiento de codificación de vídeo. Por ejemplo, el codificador de vídeo 20 se puede configurar para codificar una pluralidad de bloques de datos de vídeo, en el que el codificador de vídeo 20 codifica al menos un bloque de la pluralidad de bloques de datos de vídeo mediante el uso de un modo de codificación que es uno de un modo de codificación de IPCM y un modo de codificación sin pérdidas. Como se explicó anteriormente, en algunos ejemplos, el modo de codificación sin pérdidas puede incluir realizar la predicción para el al menos un bloque para codificar el bloque (por ejemplo, junto con la suma para generar los datos residuales del al menos un bloque). En otros ejemplos, sin embargo, el modo de codificación sin pérdidas se puede utilizar para codificar el al menos un bloque sin realizar la predicción (por ejemplo, como los datos de vídeo originales o "sin procesar").
Por ejemplo, como se describió anteriormente, el al menos un bloque de la pluralidad de bloques de datos de vídeo codificados mediante el uso del modo de codificación de IPCM puede corresponder a al menos un bloque que incluye los datos de vídeo reconstruidos. Por ejemplo, los datos de vídeo reconstruidos se pueden generar por el codificador de vídeo 20 realizando las etapas de predicción, suma, transformación y cuantificación descritas anteriormente con referencia al codificador de vídeo 20 de la Figura 1 mediante el uso de un bloque de datos de vídeo originales. Realizando las etapas descritas anteriormente, el codificador de vídeo 20 puede generar un bloque de coeficientes residuales cuantificados y transformados. Subsecuentemente, el codificador de vídeo 20 se puede configurar para realizar cuantificación inversa, transformación inversa, predicción y suma de los coeficientes residuales cuantificados y transformados, como también se describió anteriormente, para generar el bloque de datos de vídeo reconstruidos. Alternativamente, como también se describió previamente, el al menos un bloque codificado mediante el uso del modo de codificación sin pérdidas puede corresponder a al menos un bloque que incluye los datos de vídeo originales o los datos de vídeo residuales no cuantificados.
En cualquier caso, el codificador de vídeo 20 se puede configurar además para asignar un valor de QP distinto de cero para el al menos un bloque codificado mediante el uso del modo de codificación. Como se describió anteriormente, el codificador de vídeo 20 se puede configurar para asignar el valor de QP distinto de cero para el al menos un bloque mediante el uso de, por ejemplo, un valor de QP previsto para el al menos un bloque, que se puede determinar mediante el uso de un valor de QP de cada uno de los uno o más bloques vecinos de datos de vídeo. El codificador de vídeo 20 también se puede configurar para realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado por el codificador de vídeo 20 para codificar el al menos un bloque y el valor de QP distinto de cero asignado para el al menos un bloque.
En algunos ejemplos, para realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado, se puede configurar el codificador de vídeo 20 para realizar las siguientes etapas. Por ejemplo, si el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, el codificador de vídeo 20 se puede configurar para realizar el filtrado de desbloqueo en el al menos un bloque en base al valor de QP distinto de cero asignado. Además, si el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, el codificador de vídeo 20 se puede configurar para realizar el filtrado de desbloqueo en un bloque adyacente de la pluralidad de bloques de datos de vídeo en base al valor de QP distinto de cero asignado. En este ejemplo, el bloque adyacente se puede ubicar junto a al menos un bloque y codificar mediante el uso de un modo de codificación con pérdidas.
En algunos ejemplos, para realizar el filtrado de desbloqueo en cada uno del al menos un bloque y del bloque adyacente en base al valor de QP distinto de cero asignado, el codificador de vídeo 20 se puede configurar para seleccionar un filtro para el filtrado de desbloqueo en base al valor de QP distinto de cero asignado. Por ejemplo, el codificador de vídeo 20 se puede configurar para seleccionar el filtro, mediante el uso del valor de QP distinto de cero asignado, de modo que el filtro incluye uno o más parámetros o propiedades de filtrado que definan la manera en la que el filtrado de desbloqueo, mediante el uso del filtro, se realizado. En otros ejemplos, para realizar el filtrado de desbloqueo en cada uno del al menos un bloque y del bloque adyacente en base al valor de QP distinto de cero asignado, el codificador de vídeo 20 se puede configurar para determinar una fuerza de filtro para el filtrado de desbloqueo en base al valor de QP distinto de cero asignado, como se describió anteriormente con referencia a las decisiones de desbloqueo.
En algunos ejemplos, el codificador de vídeo 20 se puede configurar para, antes de realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado, habilitar el filtrado de desbloqueo para uno o más de la pluralidad de bloques de datos de vídeo. En otros ejemplos, el modo de codificación puede ser el modo de codificación sin pérdidas. En estos ejemplos, el codificador de vídeo 20 se puede configurar además para inhabilitar el filtrado de desbloqueo para el al menos un bloque. En estos ejemplos, deshabilitar el filtrado de desbloqueo para el al menos un bloque puede incluir no realizar el filtrado de desbloqueo para los bordes límite internos del al menos un bloque.
En algunos ejemplos, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 se puede configurar para determinar el valor de QP distinto de cero asignado en base a uno o más de lo siguiente: (1) un valor de QP señalado para el al menos un bloque (por ejemplo, en el que el valor de QP señalado indica el valor de QP distinto de cero asignado); (2) un valor de Qp previsto para el al menos un bloque (por ejemplo, determinado mediante el uso de un valor de QP de cada uno de uno o más bloques vecinos de datos de vídeo); y (3) un valor de dQP señalado para el al menos un bloque (por ejemplo, en el que el valor de dQP representa una diferencia entre el valor de Qp distinto de cero asignado y el valor de QP previsto). Como un ejemplo, cada uno de los valores de QP y de dQP señalizados, cuando sea aplicable, se puede determinar mediante el codificador de vídeo 20 y señalizar al decodificador de vídeo 30 en un flujo de bits. Como otro ejemplo, el valor de QP previsto se puede determinar mediante el codificador de vídeo 20.
En otros ejemplos, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 se puede configurar para realizar las siguientes etapas. Por ejemplo, cuando el tamaño del al menos un bloque es más pequeño que el tamaño mínimo del grupo de cuantificación de la CU, el codificador de vídeo 20 se puede configurar para establecer al menos un valor de QP de grupo para un grupo de cuantificación que incluye al menos un bloque como el valor de QP distinto de cero asignado. En estos ejemplos, el grupo de cuantificación también puede incluir uno o más bloques de datos de vídeo codificados mediante el uso de un modo de codificación con pérdidas.
Como se describió anteriormente, en algunos ejemplos, cada uno de los bloques de datos de vídeo incluidos dentro del grupo de cuantificación puede tener un mismo valor de QP de grupo. En estos ejemplos, el codificador de vídeo 20 se puede configurar para establecer este valor de QP de grupo común como el valor de QP distinto de cero asignado. En otros ejemplos, sin embargo, solo algunos bloques del grupo de cuantificación (por ejemplo, los bloques que comienzan desde un primer bloque del grupo de cuantificación para el que se señala el valor de QP, por ejemplo, como un valor de dQP) pueden tener un mismo valor de QP de grupo. En estos ejemplos, el codificador
de vídeo 20 se puede configurar para establecer este valor de QP de grupo particular que es común solo a un subconjunto de los bloques del grupo de cuantificación como el valor de QP distinto de cero asignado.
Además, cuando el tamaño del al menos un bloque es mayor o igual que el tamaño mínimo del grupo de cuantificación de la CU, el codificador de vídeo 20 se puede configurar para establecer un valor de QP para un bloque vecino de la pluralidad de bloques de datos de vídeo como el valor de QP distinto de cero asignado. Por ejemplo, el bloque vecino puede ser uno o más de un bloque ubicado adyacente a al menos un bloque y de un bloque previamente codificado.
En otros ejemplos más, en los casos en los que el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 se puede configurar para establecer un valor de QP para un bloque vecino de la pluralidad de bloques de datos de vídeo como el valor de QP distinto de cero asignado cuando el tamaño del al menos un bloque es más pequeño que el tamaño mínimo del grupo de cuantificación de la CU. En estos ejemplos, el bloque vecino puede ser uno o más de un bloque ubicado adyacente a al menos un bloque y de un bloque previamente codificado. Por ejemplo, en los casos donde el al menos un bloque es un denominado bloque "borde" (es decir, un bloque de datos de vídeo ubicado adyacente a un límite de una trama de datos de vídeo que incluye el bloque), el bloque ubicado adyacente a al menos un bloque puede no existir. En tales casos, el bloque vecino puede ser el bloque previamente codificado, es decir, un bloque de datos de vídeo que ocurre antes del al menos un bloque en un orden de codificación asociado con una trama de datos de vídeo que incluye el al menos un bloque y el bloque previamente codificado.
En algunos ejemplos, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 se puede configurar para establecer uno de un valor de QP y un valor de dQP para un bloque con pérdidas de la pluralidad de bloques de datos de vídeo como el valor de QP distinto de cero asignado. En estos ejemplos, el valor de dQP puede representar una diferencia entre el valor de QP y un valor de QP previsto para el bloque con pérdidas. También en estos ejemplos, el bloque con pérdidas puede ser un bloque codificado mediante el uso de un modo de codificación con pérdidas, por ejemplo, un modo de codificación que incluye realizar las etapas de predicción, suma, transformación y cuantificación descritas anteriormente o las etapas similares. En otros ejemplos, en los casos en los que el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 se puede configurar para establecer un valor constante como el valor de QP distinto de cero asignado.
En algunos ejemplos, la codificación puede ser codificación. En estos ejemplos, para codificar el al menos un bloque, el codificador de vídeo 20 se puede configurar para señalizar uno de los datos de vídeo residuales no cuantificados y los datos de vídeo reconstruidos del al menos un bloque en un flujo de bits. También en estos ejemplos, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 se puede configurar para realizar una señalización del valor de QP distinto de cero asignado en el flujo de bits y señalizar un valor de dQP para el valor para el al menos un bloque en el flujo de bits. Por ejemplo, el valor de dQP puede representar una diferencia entre el valor de QP distinto de cero asignado y un valor de QP previsto para el al menos un bloque. En estos ejemplos, el codificador de vídeo 20 se puede configurar además para señalar uno o más elementos de sintaxis en el flujo de bits. Por ejemplo, el uno o más elementos de sintaxis pueden indicar que el filtrado de desbloqueo se habilita para uno o más de la pluralidad de bloques de datos de vídeo.
En los ejemplos descritos anteriormente, de manera particular en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, el uno o más elementos de sintaxis se pueden denominar como "el primer" o más elementos de sintaxis. En estos ejemplos, el codificador de vídeo 20 se puede configurar además para señalar un segundo o más elementos de sintaxis en el flujo de bits. Por ejemplo, el segundo o más elementos de sintaxis pueden indicar que el filtrado de desbloqueo se deshabilita para el al menos un bloque.
En consecuencia, como se explicó anteriormente, las técnicas de esta divulgación pueden permitir al codificador de vídeo 20 mejorar la calidad visual de uno o más bloques de datos de vídeo cuando se codifican el uno o más bloques, en comparación con otras técnicas. En particular, las técnicas descritas pueden mejorar la calidad visual de uno o más bloques codificados por IPCM que consisten en los datos de vídeo reconstruidos al permitir el filtrado de desbloqueo para los bloques y realizar el filtrado de desbloqueo de una manera particular. Adicionalmente, las técnicas pueden mejorar la calidad visual de uno o más bloques codificados sin pérdidas que incluyen los datos de vídeo originales al deshabilitar el filtrado de desbloqueo para los bloques. Además, las técnicas también pueden mejorar la calidad visual de uno o más bloques codificados mediante el uso de modos de codificación con pérdidas, por ejemplo, uno o más bloques ubicados adyacentes a uno o más bloques codificados por IPCM o sin pérdidas, mediante la realización del filtrado de desbloqueo en los bloques codificados con pérdidas de una manera particular. Como un resultado, puede haber una mejora relativa en la calidad visual de uno o más bloques de datos de vídeo,
que incluye los bloques codificados por IPCM, sin pérdidas y con pérdidas, cuando se utilizan las técnicas de esta divulgación.
De esta manera, el codificador de vídeo 20 representa un ejemplo de un codificador de vídeo configurado para codificar una pluralidad de bloques de datos de vídeo, en el que el codificador de vídeo se configura para codificar al menos un bloque de la pluralidad de bloques de datos de vídeo mediante el uso de un modo de codificación que es uno de un modo de codificación de IPCM y de un modo de codificación sin pérdidas que utiliza predicción. También en este ejemplo, el codificador de vídeo se configura además para asignar un valor de QP distinto de cero para el al menos un bloque codificado mediante el uso del modo de codificación y realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado para el al menos un bloque.
La Figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede realizar las técnicas para el desbloqueo del modo de codificación de IPCM y sin pérdidas, consistente con las técnicas de esta divulgación. En el ejemplo de la Figura 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 80, una unidad de decodificación de IPCM 98A, una unidad de decodificación sin pérdidas 98B, un módulo de predicción 82, una unidad de cuantificación inversa 88, un módulo de transformación inversa 90, un sumador 92, un filtro de desbloqueo 94 y una memoria de imágenes de referencia 96. El módulo de predicción 82 incluye la unidad de compensación de movimiento 84 y el módulo de intrapredicción 86. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar un pase de decodificación generalmente recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 de la Figura 2.
Durante el procedimiento de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa los bloques de vídeo de un segmento de vídeo codificado y los elementos de sintaxis asociados del codificador de vídeo 20. Cuando los bloques de vídeo representados en el flujo de bits incluyen los datos de vídeo comprimidos, la unidad de decodificación por entropía 80 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar los coeficientes cuantificados, los vectores de movimiento y otros elementos de sintaxis. La unidad de decodificación por entropía 80 envía los vectores de movimiento y los otros elementos de sintaxis al módulo de predicción 82. El decodificador de vídeo 30 puede recibir los elementos de sintaxis a nivel de segmento de vídeo y/o a nivel de bloque de vídeo.
Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), el módulo de intrapredicción 86 del módulo de predicción 82 puede generar los datos de predicción para un bloque de vídeo del segmento de vídeo actual en base a un modo de intrapredicción señalado y a los datos de bloques de la trama o imagen actual previamente decodificados. Cuando la trama de vídeo se codifica como un segmento intercodificado (por ejemplo, segmento B o segmento P), la unidad de compensación de movimiento 84 de la unidad de procesamiento de predicción 82 produce bloques predictivos para un bloque de vídeo del segmento de vídeo actual en base a los vectores de movimiento y a otros elementos de sintaxis recibidos desde la unidad de decodificació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 decodificador de vídeo 30 puede construir las listas de tramas de referencia, List 0 y List 1, mediante el uso de las técnicas de construcción predefinidas en base a las imágenes de referencia almacenadas en la memoria de imágenes de referencia 96.
La unidad de compensación de movimiento 84 determina la información de predicción para un bloque de vídeo del segmento de vídeo actual analizando los vectores de movimiento y otros elementos de sintaxis y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se decodifica. Por ejemplo, la unidad de compensación de movimiento 84 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) utilizado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B o segmento P o segmento GPB), la información de construcción para una o más de las listas de imágenes de referencia para el segmento, los vectores de movimiento para cada bloque de vídeo intercodificado del segmento, el estado de interpredicción para cada bloque de vídeo intercodificado del segmento y otra información para decodificar los bloques de vídeo en el segmento de vídeo actual.
La unidad de compensación de movimiento 84 también puede realizar una interpolación en base a los filtros de interpolación. La unidad de compensación de movimiento 84 puede utilizar filtros de interpolación como los usa el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular los valores interpolados para píxeles subenteros de bloques de referencia. La unidad de compensación de movimiento 84 puede determinar los filtros de interpolación utilizados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y utilizar los filtros de interpolación para producir los bloques predictivos.
La unidad de cuantificación inversa 88 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformación cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 80. El procedimiento 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 en el segmento de vídeo para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa que se debe aplicar. El módulo de
transformación inversa 90 aplica una transformación inversa, por ejemplo, una DCT inversa, una transformación entera inversa o un procedimiento de transformación inversa conceptualmente similar, a los coeficientes de transformación con el fin de producir los bloques residuales en el dominio de píxeles.
Después de que la unidad de compensación de movimiento 84 genera el bloque predictivo para el bloque de vídeo actual en base a los vectores de movimiento y a otros elementos de sintaxis, el decodificador de vídeo 30 forma un bloque de vídeo decodificado sumando los bloques residuales del módulo de transformación inversa 90 con los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 84. El sumador 92 representa el componente o los componentes que realizan esta operación de suma. Un filtro de desbloqueo 94 se aplica para filtrar los bloques decodificados con el fin de eliminar los artefactos de bloqueo. Los bloques de vídeo decodificados en una trama o imagen determinada se almacenan luego en la memoria de imágenes de referencia 96, que almacena imágenes de referencia utilizadas para la compensación de movimiento subsecuente. La memoria de imágenes de referencia 96 también almacena el vídeo decodificado para una presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 28 de la Figura 1.
Como ya se describió anteriormente con referencia a la Figura 1, el decodificador de vídeo 30 también incluye la unidad de decodificación de IPCM 98A y la unidad de decodificación sin pérdidas 98B que pueden permitir que el decodificador de vídeo 30 realice las técnicas de codificación de IPCM y sin pérdidas atribuidas al decodificador de vídeo 30 en la divulgación.
Como un ejemplo, el decodificador de vídeo 30 se puede configurar para decodificar uno o más bloques de datos de vídeo durante un procedimiento de codificación de vídeo. Por ejemplo, el decodificador de vídeo 30 se puede configurar para decodificar una pluralidad de bloques de datos de vídeo, en el que al menos un bloque de la pluralidad de bloques de datos de vídeo se puede codificar, es decir, mediante el codificador de vídeo 20, mediante el uso de un modo de codificación que es uno de un modo de codificación de IPCM y un modo de codificación sin pérdidas. Como se explicó anteriormente con referencia a las Figuras 1 y 2, en algunos ejemplos, el modo de codificación sin pérdidas puede incluir realizar la predicción para el al menos un bloque para codificar el bloque (por ejemplo, junto con la suma para generar los datos residuales del al menos un bloque). En otros ejemplos, sin embargo, el modo de codificación sin pérdidas se puede utilizar para codificar el al menos un bloque sin realizar la predicción (por ejemplo, como los datos de vídeo originales o "sin procesar").
Como un ejemplo, como se describió previamente, el al menos un bloque de la pluralidad de bloques de datos de vídeo codificados mediante el uso del modo de codificación de IPCM puede corresponder a al menos un bloque que incluye los datos de vídeo reconstruidos. Por ejemplo, los datos de vídeo reconstruidos se pueden generar por, por ejemplo, el codificador de vídeo 20, realizando las etapas de predicción, suma, transformación y cuantificación descritas anteriormente con referencia al codificador de vídeo 20 de las Figuras 1 y 2 mediante el uso de un bloque de datos de vídeo originales. Realizando las etapas descritas anteriormente, el codificador de vídeo 20 puede generar un bloque de coeficientes residuales cuantificados y transformados. Subsecuentemente, el codificador de vídeo 20 se puede configurar para realizar cuantificación inversa, transformación inversa, predicción y suma de los coeficientes residuales cuantificados y transformados, como también se describió anteriormente, para generar el bloque de datos de vídeo reconstruidos. Alternativamente, como también se describió previamente, el al menos un bloque codificado mediante el uso del modo de codificación sin pérdidas puede corresponder a al menos un bloque que incluye los datos de vídeo originales o los datos de vídeo residuales no cuantificados.
En cualquier caso, el decodificador de vídeo 30 se puede configurar además para asignar un valor de QP distinto de cero para el al menos un bloque codificado mediante el uso del modo de codificación. Como se describió anteriormente, el decodificador de vídeo 30 se puede configurar para asignar el valor de QP distinto de cero para el al menos un bloque mediante el uso de, por ejemplo, un valor de QP previsto para el al menos un bloque, que se puede determinar mediante el uso de un valor de QP de cada uno de uno o más bloques vecinos de datos de vídeo. El decodificador de vídeo 30 también se puede configurar para realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado para el al menos un bloque.
En algunos ejemplos, para realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado, se puede configurar el decodificador de vídeo 30 para realizar las siguientes etapas. Por ejemplo, si el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, el decodificador de vídeo 30 se puede configurar para realizar el filtrado de desbloqueo en al menos un bloque en base al valor de QP distinto de cero asignado. Además, si el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, el decodificador de vídeo 30 se puede configurar para realizar el filtrado de desbloqueo en un bloque adyacente de la pluralidad de bloques de datos de vídeo en base al valor de QP distinto de cero asignado. En este ejemplo, el bloque adyacente se puede ubicar junto a al menos un bloque y codificar mediante el uso de un modo de codificación con pérdidas.
En algunos ejemplos, para realizar el filtrado de desbloqueo en cada uno del al menos un bloque y del bloque adyacente en base al valor de QP distinto de cero asignado, el decodificador de vídeo 30 se puede configurar para
seleccionar un filtro para el filtrado de desbloqueo en base al valor de QP distinto de cero asignado el no asignado. Por ejemplo, el decodificador de vídeo 30 se puede configurar para seleccionar el filtro, mediante el uso del valor de QP distinto de cero asignado, de modo que el filtro incluya uno o más parámetros o propiedades de filtrado que definan la manera en la que se realiza, mediante el uso del filtro, el filtrado de desbloqueo. En otros ejemplos, para realizar el filtrado de desbloqueo en cada uno del al menos un bloque y del bloque adyacente en base al valor de QP distinto de cero asignado, el decodificador de vídeo 30 se puede configurar para determinar una intensidad de filtro para el filtrado de desbloqueo en base al valor de QP distinto de cero asignado, como se describió anteriormente con referencia a las decisiones de desbloqueo.
En algunos ejemplos, el decodificador de vídeo 30 se puede configurar para, antes de realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado, habilitar el filtrado de desbloqueo para uno o más de la pluralidad de bloques de datos de vídeo. En otros ejemplos, el modo de codificación puede ser el modo de codificación sin pérdidas. En estos ejemplos, el decodificador de vídeo 30 se puede configurar además para inhabilitar el filtrado de desbloqueo para el al menos un bloque. En estos ejemplos, deshabilitar el filtrado de desbloqueo para el al menos un bloque puede incluir no realizar el filtrado de desbloqueo para los bordes límite internos del al menos un bloque.
En algunos ejemplos, para asignar el valor de QP distinto de cero para el al menos un bloque, el decodificador de vídeo 30 se puede configurar para determinar el valor de QP distinto de cero asignado en base a uno o más de lo siguiente: (1) un valor de QP señalado para el al menos un bloque (por ejemplo, en el que el valor de QP señalado indica el valor de QP distinto de cero asignado); (2) un valor de Qp previsto para el al menos un bloque (por ejemplo, determinado mediante el uso de un valor de QP de cada uno de uno o más bloques vecinos de datos de vídeo); y (3) un valor de dQP señalado para el al menos un bloque (por ejemplo, en el que el valor de dQP representa una diferencia entre el valor de Qp distinto de cero asignado y el valor de QP previsto). Como un ejemplo, cada uno de los valores de QP y de dQP señalizados, cuando sea aplicable, puede ser recibido por el decodificador de vídeo 30 desde el codificador de vídeo 20 en un flujo de bits. Como otro ejemplo, el valor de Qp previsto se puede determinar mediante el decodificador de vídeo 30.
En otros ejemplos, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, para asignar el valor de QP distinto de cero para el al menos un bloque, el decodificador de vídeo 30 se puede configurar para realizar las siguientes etapas. Por ejemplo, cuando el tamaño del al menos un bloque es más pequeño que el tamaño mínimo del grupo de cuantificación de la CU, el decodificador de vídeo 30 puede establecer un valor de QP de grupo, por ejemplo, al menos un valor de QP de grupo, para un grupo de cuantificación que incluye al menos un bloque como el valor de QP distinto de cero asignado. En estos ejemplos, el grupo de cuantificación también puede incluir uno o más bloques de datos de vídeo codificados mediante el uso de un modo de codificación con pérdidas. Como se describió anteriormente, en algunos ejemplos, cada uno de los bloques de datos de vídeo incluidos dentro del grupo de cuantificación puede tener un mismo valor de QP de grupo. En estos ejemplos, el decodificador de vídeo 30 se puede configurar para establecer este valor de QP de grupo común como el valor de QP distinto de cero asignado. En otros ejemplos, sin embargo, solo algunos bloques del grupo de cuantificación (por ejemplo, los bloques que comienzan desde un primer bloque del grupo de cuantificación para el que se señala el valor de QP, por ejemplo, como un valor de dQP) pueden tener un mismo valor de QP de grupo. En estos ejemplos, el decodificador de vídeo 30 se puede configurar para establecer este valor de QP de grupo particular que es común a solo a un subconjunto de los bloques del grupo de cuantificación como el valor de QP distinto de cero asignado. Además, cuando el tamaño del al menos un bloque es mayor o igual que el tamaño mínimo del grupo de cuantificación de la CU, el decodificador de vídeo 30 se puede configurar para establecer un valor de QP para un bloque vecino de la pluralidad de bloques de datos de vídeo como el asignado. valor de QP distinto de cero. Por ejemplo, el bloque vecino puede ser uno o más de un bloque ubicado adyacente a al menos un bloque y de un bloque previamente codificado.
En otros ejemplos más, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, para asignar el valor de QP distinto de cero para el al menos un bloque, el decodificador de vídeo 30 se puede configurar para establecer un valor de QP para un bloque vecino de la pluralidad de bloques de datos de vídeo como el valor de QP distinto de cero asignado cuando el tamaño del al menos un bloque es más pequeño que un tamaño mínimo del grupo de cuantificación de la CU. En estos ejemplos, el bloque vecino puede ser uno o más de un bloque ubicado adyacente a al menos un bloque y de un bloque previamente codificado. Por ejemplo, en los casos donde el al menos un bloque es un denominado bloque "borde" (es decir, un bloque de datos de vídeo ubicado adyacente a un límite de una trama de datos de vídeo que incluye el bloque), el bloque ubicado adyacente a al menos un bloque puede no existir. En tales casos, el bloque vecino puede ser el bloque previamente codificado, es decir, un bloque de datos de vídeo que ocurre antes del al menos un bloque en un orden de codificación asociado con una trama de datos de vídeo que incluye el al menos un bloque y el bloque previamente codificado.
En algunos ejemplos, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, para asignar el valor de QP distinto de cero para el al menos un bloque, el decodificador de vídeo 30 se puede configurar para establecer uno de un valor de QP y de un valor de dQP para un
bloque con pérdidas de la pluralidad de bloques de datos de vídeo como el valor de QP distinto de cero asignado. De manera similar a la descrita previamente, en estos ejemplos, el valor de dQP puede representar una diferencia entre el valor de QP y un valor de QP previsto para el bloque con pérdidas. También en estos ejemplos, el bloque con pérdidas puede ser un bloque codificado mediante el uso de un modo de codificación con pérdidas, por ejemplo, un modo de codificación que incluye realizar las etapas de predicción, suma, transformación y cuantificación descritas anteriormente o las etapas similares.
En otros ejemplos, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, para asignar el valor de QP distinto de cero para el al menos un bloque, el decodificador de vídeo 30 se puede configurar para establecer un valor constante. como el valor de QP distinto de cero asignado.
En algunos ejemplos, la codificación puede ser decodificación. En estos ejemplos, para decodificar el al menos un bloque, el decodificador de vídeo 30 se puede configurar para recibir uno de los datos de vídeo residuales no cuantificados y los datos de vídeo reconstruidos del al menos un bloque en un flujo de bits recibido. También en estos ejemplos, para asignar el valor de QP distinto de cero para el al menos un bloque, el decodificador de vídeo 30 se puede configurar para realizar uno de: recibir el valor de Qp distinto de cero asignado en el flujo de bits recibido y recibir un valor de dQP para el al menos un bloque en el flujo de bits recibido. Por ejemplo, el valor de dQP puede representar una diferencia entre el valor de QP distinto de cero asignado y un valor de QP previsto para el al menos un bloque. En los ejemplos donde el decodificador de vídeo 30 se configura para recibir el valor de dQP para el al menos un bloque, el decodificador de vídeo 30 se puede configurar además para determinar el valor de QP distinto de cero asignado en base al valor de dQP y al valor de QP previsto. El decodificador de vídeo 30 se puede configurar aún más para recibir uno o más elementos de sintaxis en el flujo de bits recibido. Por ejemplo, el uno o más elementos de sintaxis pueden indicar que el filtrado de desbloqueo se habilita para uno o más de la pluralidad de bloques de datos de vídeo.
En los ejemplos descritos anteriormente, de manera particular en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, el uno o más elementos de sintaxis se pueden denominar como "el primer" o más elementos de sintaxis. En estos ejemplos, el decodificador de vídeo 30 se puede configurar además para recibir "el segundo" uno o más elementos de sintaxis en el flujo de bits recibido. Por ejemplo, el segundo o más elementos de sintaxis pueden indicar que el filtrado de desbloqueo se deshabilita para el al menos un bloque.
En consecuencia, como se explicó anteriormente, las técnicas de esta divulgación pueden permitir al decodificador de vídeo 30 mejorar la calidad visual de uno o más bloques de datos de vídeo cuando se codifica el uno o más bloques, en comparación con otras técnicas. En particular, las técnicas descritas pueden mejorar la calidad visual de uno o más bloques codificados por IPCM que consisten en los datos de vídeo reconstruidos al permitir el filtrado de desbloqueo para los bloques y realizar el filtrado de desbloqueo de una manera particular. Adicionalmente, las técnicas pueden mejorar la calidad visual de uno o más bloques codificados sin pérdidas que incluyen los datos de vídeo originales al deshabilitar el filtrado de desbloqueo para los bloques. Además, las técnicas también pueden mejorar la calidad visual de uno o más bloques codificados mediante el uso de modos de codificación con pérdidas, por ejemplo, uno o más bloques ubicados adyacentes a uno o más bloques codificados por IPCM o sin pérdidas, mediante la realización del filtrado de desbloqueo en los bloques codificados con pérdidas de una manera particular. Como un resultado, puede haber una mejora relativa en la calidad visual de uno o más bloques de datos de vídeo, que incluye los bloques codificados por IPCM, sin pérdidas y con pérdidas, cuando se utilizan las técnicas de esta divulgación.
De esta manera, el decodificador de vídeo 30 representa un ejemplo de un codificador de vídeo configurado para codificar una pluralidad de bloques de datos de vídeo, en el que el codificador de vídeo se configura para codificar al menos un bloque de la pluralidad de bloques de datos de vídeo mediante el uso de un modo de codificación que es uno de un modo de codificación de IPCM y de un modo de codificación sin pérdidas que utiliza la predicción. También en este ejemplo, el codificador de vídeo se configura además para asignar un valor de QP distinto de cero para el al menos un bloque codificado mediante el uso del modo de codificación y realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de Qp distinto de cero asignado para el al menos un bloque.
La Figura 4 es un diagrama conceptual que ilustra un ejemplo de filtrado de desbloqueo realizado en un límite de dos bloques adyacentes de datos de vídeo, consistente con las técnicas de esta divulgación. En el ejemplo de la Figura 4, el bloque 404 puede ser un bloque de datos de vídeo actualmente codificado o "actual", que incluye un borde izquierdo que se debe desbloquear, filtrar o, "desbloqueado", junto con un borde derecho correspondiente del bloque 402. En este ejemplo, el bloque 402 es un bloque adyacente de datos de vídeo que se ubica adyacente a (en este ejemplo, a la izquierda de) el bloque 404. Por ejemplo, el bloque 402 puede ser un bloque de datos de vídeo previamente codificado que se codifica antes de codificar el bloque 404. En otros ejemplos, un borde superior (no mostrado) del bloque 404 se puede desbloquear junto con un borde inferior correspondiente de un bloque adyacente de datos de vídeo (también sin mostrar) que se ubica en la parte superior del bloque 404.
En algunas versiones del Modelo de Prueba HEVC (por ejemplo, la versión 4 o "HM4"), un borde de ocho muestras se puede desbloquear mediante un filtro de desbloqueo particular. Como se ilustra en la Figura 4, un área de borde de desbloqueo de los bloques 402 y 404 incluye cuatro líneas de valores de píxeles q0i - q3i paralelas al borde 400 en el bloque 404 y cuatro líneas de valores de píxeles p0i - p3i paralelas al borde 400 en el bloque 402, donde "i" indica la línea de píxeles perpendicular al borde 400. Cada una de las líneas paralelas de valores de píxeles incluye ocho valores de píxeles, por ejemplo, q0o - q07. En el caso de un borde horizontal (no mostrado), por ejemplo, un borde superior del bloque actual, el nombre y la numeración pueden ser idénticos a los del borde vertical (es decir, el borde 400) ilustrado en la Figura 4. Adicionalmente, los valores de píxel p o q pueden ser valores filtrados previamente desbloqueados (es decir, valores de píxeles reconstruidos) o valores filtrados de desbloqueo.
En algunas versiones de HM, (por ejemplo, HM4), el filtro de desbloqueo, por ejemplo, el filtro de desbloqueo 64 del codificador de vídeo 20 o el filtro de desbloqueo 94 del decodificador de vídeo 30, pueden filtrar ciertos bordes de TU y de PU de un bloque en base a un resultado del cálculo de la fuerza del límite y las decisiones de desbloqueo. Las decisiones de desbloqueo pueden incluir si el filtro de desbloqueo se enciende o se apaga, si el filtro de desbloqueo es débil o fuerte y la fuerza del filtro débil para un bloque determinado. El cálculo de la fuerza del límite, que se describe con mayor detalle a continuación con referencia a la Figura 6 y las decisiones de desbloqueo dependen de los valores de umbral tc y p.
En algunas versiones de HM, los valores de umbral tc y p del filtro de desbloqueo puede depender de un parámetro Q, que se deriva de un valor de QP y de una fuerza del límite ("Bs") para un bloque actual de datos de vídeo mediante el uso de las siguientes expresiones:
Si Bs> 2, entonces TcOffset = 2
Si Bs < 2, entonces TcOffset = 0
Para tc: Q = Clip3(0, MAX_QP 4, QP TcOffset); MAX_QP = 51
Para p: Q = Clip3 (0, MAX, QP, QP)
Clip3 (th1, th2, valor) = min (th1, max (th2, valor))
Los valores de umbral tc y p se pueden almacenar en una tabla que es accesible en base al parámetro Q derivado del valor de QP del bloque actual, como se describió anteriormente.
Una primera decisión de desbloqueo es si el filtrado de desbloqueo se enciende o se apaga para el borde 400 del bloque 404. Para tomar esta decisión de "encendido/apagado", un dispositivo de codificación de vídeo, por ejemplo, un codificador de vídeo 20 y/o un decodificador de vídeo 30, calcula un nivel de actividad, di, a través del borde 400 para los valores de píxeles en una tercera línea (i = 2) perpendicular al borde 400, es decir, la línea 406. El dispositivo de codificación de vídeo también calcula un nivel de actividad, d2, a través del borde 400 para valores de píxeles en una sexta línea (i = 5) perpendicular al borde 400, es decir, la línea 408. Estas dos mediciones de actividad proporcionan una indicación de la actividad en las vecindades del borde 400.
Las mediciones de actividad se suman y se comparan con el valor de umbral p. Si las medidas de actividad sumadas son menores que el valor de umbral p, el filtro de desbloqueo se enciende y se aplica al área del borde de desbloqueo de ocho muestras. De esta manera, si la actividad a través del borde 400 es alta, el filtro de desbloqueo no es necesario, porque la discontinuidad a través del borde 400 no será visible. Si la actividad a través del borde 400 es baja, sin embargo, se debe aplicar el filtro de desbloqueo para suavizar la discontinuidad entre los bloques 402 y 404 en el borde 400. Los cálculos se pueden realizar de acuerdo con las siguientes expresiones:
dy = \p22 - 2 • p l 2 p 02| \q22 - 2 - q \ 2 q02\
d2 =\p25 - 2 - p \ 5+pQ5\ \q25 - 2 - q \ s +g05|
d = dx d2 < fd
Una segunda decisión de desbloqueo incluye la determinación de si el filtro de desbloqueo es un filtro fuerte o un filtro débil. La decisión de si el filtro de desbloqueo es fuerte o débil puede incluir tres determinaciones distintas, que incluye una determinación de la textura/actividad, una determinación de gradiente y una determinación de la discontinuidad a través del borde 400. En algunas versiones de HM (por ejemplo, HM4), cada una de las tres determinaciones se debe realizar para cada línea (i = 0, ..., 7) de valores de píxeles perpendiculares al borde 400. Las tres determinaciones se pueden realizar de acuerdo con las siguientes expresiones:
y
|p0/-?0/|<((5-íc+ l) » l)
Una tercera decisión de desbloqueo puede incluir, cuando el filtro de desbloqueo es un filtro débil, decidir la fuerza del filtro débil. En algunas versiones de HM (por ejemplo, HM4), un filtro débil aplicado al borde 400 del bloque 404 puede corregir una o buen dos muestras en cada lado del borde 400. En algunos casos, el filtro débil se puede aplicar asimétricamente para corregir solo una muestra en un lado del borde 400 y corregir dos muestras en el otro lado del borde 400.
En algunas versiones de HM (por ejemplo, HM4), el filtro débil corrige todas las muestras p0 y q0 a la derecha e izquierda del borde 400 en base a un cálculo de la fuerza del filtro débil de acuerdo con las siguientes ecuaciones.
A = (9*(q0-p0) - 3*(ql-pl) 8) /16
A = Clip(-tc, tc, A);
tc es un valor de umbral que depende del valor de QP
p0’ = pO A
q0’ = qO - A
El filtro débil corrige opcionalmente todas las muestras p1 en la segunda línea paralela al borde 400 en el bloque adyacente 104 de acuerdo con las siguientes ecuaciones.
Ap = Clip(-tc/2, tc/2, (((p2 pO 1) / 2) - pl A) / 2)
pl ’ = pl Ap;
el desbloqueo de p1 depende de las condiciones de decisión
De manera similar, el filtro débil opcionalmente corrige todas las muestras q1 en la segunda línea paralela al borde 400 en el bloque actual 404 de acuerdo con las siguientes ecuaciones.
Aq = Clip(-tc/2, tc/2, (((q2 qO 1) / 2) - ql - A) / 2)
q i ’ = q i Aq;
el desbloqueo de q1 depende de las condiciones de decisión
Los valores de píxel p o q pueden ser valores filtrados de desbloqueo previo (es decir, valores de píxel reconstruidos) o valores filtrados de desbloqueo. Los valores de píxel p' y q' representan los valores de píxel resultantes después de realizar el filtrado de desbloqueo en los valores de píxel p y q, respectivamente. De manera más específica, los valores q0 y q1 indican los valores de píxeles en las primeras y segundas líneas paralelas al borde en el bloque actual 404. Los valores p0 y p1 indican los valores de píxeles en las primeras y segundas líneas paralelas al borde en el bloque adyacente 402. Las ecuaciones q0—p0 y ql —pl indican las discontinuidades etapas entre los valores de los píxeles a lo largo del borde 400.
La Figura 5 es un diagrama conceptual que ilustra un ejemplo de señalización de un valor de dQP para cada uno de uno o más bloques de datos de vídeo, consistente con las técnicas de esta divulgación. Algunas versiones preliminares de HeVC (por ejemplo, WD6) soportan las técnicas de dQP a nivel LCU y a nivel subLCU. Por ejemplo, algunos procedimientos dQP de nivel subLCU permiten la señalización dQP para los bloques de datos de vídeo, es decir, las CU, que son más pequeños que un tamaño de LCU. El propósito de esto es permitir una tasa de granularidad más fina y un control de calidad visual. De acuerdo con algunas técnicas, un parámetro "dQpMinCuSize" se puede definir como un tamaño mínimo de grupo de cuantificación de la CU que puede señalar un dQP. Para los bloques que son más pequeños que el tamaño mínimo del grupo de cuantificación de la CU, todas las CU de hoja, es decir, los bloques de datos de vídeo, dentro de un grupo de cuantificación del tamaño mínimo de CU pueden compartir un mismo valor de dQP. Alternativamente, de acuerdo con otras técnicas, para los bloques que son más pequeños que el tamaño mínimo del grupo de cuantificación de la CU, solo algunas de las CU de hoja o los bloques de datos de vídeo dentro de un grupo de cuantificación del tamaño mínimo de CU pueden compartir un mismo valor de dQP. Por ejemplo, solo las CU de hoja o los bloques de datos de vídeo que comienzan con una
primera CU de hoja o el bloque de datos de vídeo para los que se señala primero un valor de dQP para el grupo de cuantificación pueden compartir este valor de dQP. En cualquier caso, para los bloques que son mayores o iguales que el tamaño mínimo del grupo de cuantificación de la CU, se puede señalar un valor de dQP para la CU de hoja, es decir, el bloque de datos de vídeo, del árbol cuádruple de lCu . Un valor de dQP se puede señalar solo cuando existe al menos un coeficiente distinto de cero en el bloque, es decir, el indicador de bloque codificado ("CBF") del elemento de sintaxis para el bloque es igual a verdadero o "1". El decodificador de vídeo 30 puede sumar el valor de dQP señalado para el bloque a un valor de QP previsto de un bloque vecino de datos de vídeo para producir el valor de QP para el bloque actual. El bloque vecino puede ser un bloque vecino de datos de vídeo ubicado a la izquierda del bloque actual o el bloque de datos de vídeo previo más cercano al bloque actual en un orden de codificación.
Como se muestra en la Figura 5, la "LCU 0" 500 incluye un único bloque de datos de vídeo, es decir, "bloque 0", con un tamaño que es mayor que un tamaño mínimo de grupo de cuantificación de la CU 502, que se puede indicar mediante el uso del elemento de sintaxis "QpMinCuSize". Como también se muestra en la Figura 5, la LCU 0500 no se divide en cualquier CU de hoja, de modo que un grupo de cuantificación "Q0" asociado con la LCU 0500 incluye solo el bloque 0. En el ejemplo de la Figura 5, el bloque 0 incluye al menos un coeficiente distinto de cero. En este ejemplo, el bloque 0 se puede señalar como un flujo de bits 504 para LCU 0500. También en este ejemplo, el flujo de bits 504 incluye el modo de codificación ("M0"), el valor de dQP ("D0") y los componentes de coeficientes ("C0") para el bloque 0.
Como se ilustra además en la Figura 5, la "LCU 1" 506 se divide en múltiples bloques de datos de vídeo o CU, de acuerdo con un árbol cuádruple de LCU. Por ejemplo, el "bloque 1" y el "bloque 10" de la LCU 1506 tienen cada uno un tamaño que es igual al tamaño mínimo 502 del grupo de cuantificación de la CU. Los "bloques 2—9", por otro lado, tiene cada uno un tamaño que es más pequeño que el tamaño mínimo del grupo de cuantificación de la CU 502. Generalmente, todas las CU de hoja, es decir, los bloques de datos de vídeo, dentro de un tamaño mínimo de grupo de cuantificación de la CU pueden compartir los mismos valores de QP y de dQP. Por ejemplo, como se muestra en la Figura 5, el grupo de cuantificación "Q1" incluye solo el bloque 1 y el grupo de cuantificación "Q4" incluye solo el bloque 10. El grupo de cuantificación "Q3", sin embargo, incluye los bloques 2-5, y, como un resultado, cada uno de los bloques 2-5 puede tener el mismo valor de QP. De manera similar, el grupo de cuantificación "Q3" incluye los bloques 6-9, y, como un resultado, cada uno de los bloques 6-9 puede tener el mismo valor de QP.
Como también se muestra en la Figura 5, el bloque 1 incluye al menos un coeficiente distinto de cero y se puede señalar como una parte de un flujo de bits 508 para la LCU 1506 que corresponde al Q1 y que incluye el modo de codificación ("M1"), el valor de dQP ("D1") y los componentes de coeficientes ("C1") para el bloque 1. En el ejemplo de la Figura 5, el bloque 10 está en el "modo de omisión" o incluye todos los coeficientes de valor cero y se puede señalar como una parte del flujo de bits 508 para la LCU 1 506 que corresponde al Q4 y que incluye solo un componente de modo de codificación ("M10") para el bloque 10. En el mismo ejemplo, cada uno de los bloques 2-5 en el grupo de cuantificación Q2 está en el modo de omisión o incluye todos los coeficientes de valor cero y se puede señalar como una porción del flujo de bits 508 para la LCU 1506 que corresponde al Q2 y que incluye solo componentes de modo de codificación ("M2-M5") para los bloques 2-5. En este ejemplo, cada uno de los bloques 6 y 9 del grupo de cuantificación Q3 está en el modo de omisión o incluye todos los coeficientes de valor cero y cada uno de los bloques 7 y 8 del grupo de cuantificación Q3 incluye al menos un coeficiente distinto de cero. Los bloques 6-9 se pueden señalar como una porción del flujo de bits 508 para la LCU 1506 que corresponde al Q3 y que incluye solo los componentes del modo de codificación ("M6 y M9") para los bloques 6 y 9, e incluye el modo de codificación ("M7 y M8"), el valor de dQP ("D3") y los componentes de coeficientes ("C7 y C8") para los bloques 7 y 8.
La Figura 6 es un diagrama de flujo que ilustra un procedimiento de ejemplo de calcular un valor de fuerza del límite para un filtro de desbloqueo, consistente con las técnicas de esta divulgación. Como se ilustra en la Figura 6, un cálculo de la fuerza del límite 600 se puede basar en un modo de codificación (por ejemplo, un modo de codificación de "intrapredicción" o "interpredicción") de un bloque actual de datos de vídeo (por ejemplo, el bloque 404 de la Figura 4) y un bloque adyacente de datos de vídeo (por ejemplo, el bloque 402 de la Figura 4) y si los valores de los píxeles en un área de borde de desbloqueo (es decir, un área de los bloques a lo largo de un borde compartido que se filtra por desbloqueo o "desbloqueado", por ejemplo, borde 400 de la Figura 4) incluye los coeficientes distintos de cero.
De manera más específica, realizar el cálculo de la fuerza del límite puede incluir determinar si uno del bloque actual con el borde a desbloquear y del bloque adyacente se intracodifica (602). Cuando uno del bloque actual y del bloque adyacente se intracodifica (602; "SÍ"), se puede realizar una operación de verificación de borde de CU para determinar si el borde a desbloquear es un límite de CU externo o un borde de CU interno (604). Si el borde a desbloquear es un límite de CU externo (604; "SÍ"), el valor de la fuerza del límite ("Bs") se puede establecer para que sea igual a "4" (610) y si el borde es un CU interno borde (604; "NO"), el valor de Bs se puede establecer para que sea igual a "3" (612). En cualquier caso, el valor de Bs puede ser mayor que "2", de modo que un elemento de sintaxis "TcOffset" igual a "2" se puede aplicar a un valor de QP correspondiente (es decir, el valor de QP para el bloque actual) al identificar un valor de umbral "tc" para el filtro de desbloqueo.
Cuando el bloque actual y el bloque adyacente se intercodifican (602; "NO"), se puede realizar una verificación de coeficiente distinto de cero para determinar si las muestras en el área del borde de desbloqueo alrededor del borde a desbloquear incluyen los coeficientes distintos de cero (606). En el caso de que las muestras incluyan los coeficientes distintos de cero (606; "SÍ"), el valor de Bs se puede establecer igual a "2" (614). En el caso de que las muestras no incluyan coeficientes distintos de cero (606; "NO"), sin embargo, se pueden realizar comprobaciones adicionales para determinar cualquier diferencia entre las muestras en el bloque actual y el bloque adyacente (608). Si las muestras en el bloque actual y el bloque adyacente tienen algunas diferencias (608; "SÍ"), el valor de Bs se puede establecer igual a "1"(616). Sin embargo, si las muestras en el bloque actual y el bloque adyacente tienen poca o ninguna diferencia (608; "NO"), el valor de Bs se puede establecer igual a "0" (618). Cuando el valor de Bs es igual a "0", el filtro de desbloqueo se puede apagar y no aplicar al borde a desbloquear del bloque actual.
Las Figuras 7A-7B son diagramas conceptuales que ilustran ejemplos de desbloqueo del modo de codificación de IPCM, consistentes con las técnicas de esta divulgación. La Figura 7A ilustra el filtrado de desbloqueo que se realiza en un bloque actual de datos de vídeo 712 codificados mediante el uso del modo de codificación de IPCM (es decir, para el cual "QP = 0"), como se explicó anteriormente con referencia a la Figura 1. Como se muestra en la Figura 7A, el bloque 712 se desbloquea en los bordes derecho e inferior compartidos con los bloques con pérdidas (es decir, para los que "QP > 0") 706 y 708, respectivamente. Como también se muestra en la Figura 7A, el bloque 712 no se desbloquea en los bordes izquierdo y superior compartidos con los bloques con pérdidas (es decir, para los que "QP > 0") 710 y 704, respectivamente. Como se explicó anteriormente, el bloque 712 se desbloquea de la manera descrita anteriormente porque un valor de QP de valor cero se asocia con el bloque 712, consistente con diversas versiones preliminares de HEVC para bloques codificados por IPCM.
La Figura 7B, a su vez, ilustra una técnica de herencia de QP ilustrativa utilizada para asignar un valor de QP distinto de cero para un bloque de IPCM para implementar las técnicas de desbloqueo del modo de intracodificación IPCM de esta divulgación. La técnica de herencia de QP descrita en la presente memoria puede funcionar de una manera algo similar al procedimiento de dQP descrito anteriormente con referencia a la Figura 5.
De acuerdo con las técnicas divulgadas, cuando pcm_loop_filter_disable_flag es igual a falso o "0", los procedimientos de filtrado de bucle se habilitan y se deben aplicar a un bloque de IPCM actual. Con el fin de aplicar el filtro de desbloqueo, las técnicas divulgadas incluyen asignar un valor de QP distinto de cero al bloque de IPCM en base a un valor de QP previsto. El decodificador de vídeo 30, por ejemplo, puede aplicar entonces un filtro de desbloqueo a muestras del bloque de IPCM actual en base al valor de Qp distinto de cero asignado para el bloque de IPCM.
Como un ejemplo, el decodificador de vídeo 30 puede asignar implícitamente el valor de QP distinto de cero al bloque de IpCM en base a un valor de QP previsto conocido. El valor de QP previsto puede ser un valor de QP para un grupo de cuantificación que incluye el bloque de IPCM o para un bloque vecino de datos de vídeo ubicado cerca del bloque de IPCM. En el ejemplo de la Figura 7B, cuando un bloque de IPCM actual 716 tiene un tamaño que es mayor o igual que un tamaño mínimo de grupo de cuantificación de la CU (por ejemplo, un tamaño del grupo de cuantificación 720 también mostrado en la Figura 7B), el decodificador de vídeo 30 puede establecer el valor de QP distinto de cero asignado ("QP1") para el bloque de IPCM 716 igual a un valor de QP previsto ("QP0") desde un bloque vecino 714, como se muestra mediante la flecha en la Figura 7B. En otras palabras, el bloque de IPCM o la CU1 716 pueden "heredar" el QP0 del bloque vecino o la CU0714 como el QP1 del bloque IPCM o la CU1 716. Como se ilustra en la Figura 7B, el bloque vecino 714 puede ser un bloque de datos de vídeo ubicado a la izquierda del bloque de IPCM 716. Como también se muestra, el bloque vecino 714 puede ser una CU ("CUo") con el QPo, como se describió previamente y con un CBF igual a verdadero o "1", lo que indica que el bloque vecino 714 incluye coeficientes distintos de cero. En otro ejemplo, el bloque vecino 714 puede ser el bloque anterior más cercano al bloque de IPCM 716 en un orden de codificación. En otro ejemplo más, un QP promedio se puede calcular en base a múltiples bloques vecinos de datos de vídeo, tal como los bloques de la izquierda (por ejemplo, el bloque vecino 714, u otro bloque) y en la parte superior (no mostrado) del bloque de IPCM 716 y se utiliza como valor de QP previsto para asignar el valor de QP distinto de cero para el bloque de IPCM 716.
También en el ejemplo de la Figura 7B, alternativamente, cuando un bloque de IPCM actual 726 tiene un tamaño que es más pequeño que un tamaño mínimo de grupo de cuantificación de la CU (por ejemplo, de nuevo, un tamaño del grupo de cuantificación 720), el decodificador de vídeo 30 puede establecer el valor de QP distinto de cero asignado ("QP5") para el bloque de IPCM 726 igual a un valor de QP ("QPq g ") para el grupo de cuantificación 720 que incluye el bloque de IPCM 726. Como se ilustra en la Figura 7B, el grupo de cuantificación 720 incluye cuatro bloques, es decir, los bloques 722, 724, 726 y 728 o las CU3-6, respectivamente, que son cada uno más pequeño que el tamaño mínimo del grupo de cuantificación de la CU y que todos tienen el mismo valor de QP (es decir, QP3= Qp4= QP5= QP6= QPq g ). En otras palabras, el bloque de IpCm o la CU5726 pueden "heredar" el QPq g del grupo de cuantificación 720, que incluye los bloques 722, 724, 726 y 728 o las CU3-6, como el QP5 del bloque de IPCM o la CU5726. Como se describió previamente, en otros ejemplos, solo un subconjunto de CU3-6 puede compartir un QP comúnQG. En estos ejemplos, la CU5726 puede heredar este QPq g de un subconjunto del grupo de cuantificación 720 (es decir, de solo algunos de los bloques 722, 724, 726 y 728 o las CU3-6), como el QP5 del bloque de IPCM o la CU5726.
Como otro ejemplo, el codificador de vídeo 20 puede asignar el valor de QP distinto de cero al bloque de IPCM en base al valor de QP previsto y señalar explícitamente el valor de QP al decodificador de vídeo 30. El codificador de vídeo 20 puede, por ejemplo, señalar un valor de dQP para el bloque de IPCM que representa una diferencia entre el valor de QP distinto de cero asignado y el valor de QP previsto. En este ejemplo, el decodificador de vídeo 30 puede asignar el valor de QP distinto de cero al bloque de IPCM en base al valor de dQP recibido para el bloque de IPCM. De esta manera, el codificador de vídeo 20 puede señalar un valor de QP exacto que se usó para codificar las muestras del bloque de IPCM. Por ejemplo, de acuerdo con las técnicas descritas en la presente memoria, el codificador de vídeo 20 puede señalar un elemento de sintaxis "cu qp_delta" para indicar el valor de dQP para el bloque de IPCM con las muestras de IPCM en la sintaxis de PU para el bloque de IPCM, como se ilustra en la Tabla 2. La Tabla 3, a su vez, ilustra el caso de operación en modo ráfaga de IPCm en base a WD6, donde se señalizan consecutivamente los múltiples valores de cu_qp_delta, uno para cada bloque de IPCM.
Tabla 2: Adiciones de sintaxis de PU a la señal "cu_qp_delta" para IPCM (en base a WD4)
Tabla 3: Adiciones de sintaxis de PU a la señal "cu_qp_delta" para la operación en modo ráfaga de IPCM (en base a WD6
De acuerdo con la sintaxis de PU ilustrada en la Tabla 2, si un bloque actual de datos de vídeo se indica como un bloque de IPCM (es decir, "pcm flag = verdadero"), el decodificador de vídeo 30 puede determinar si se ha señalado un valor dQP para el bloque de IPCM. En este ejemplo, si los procedimientos de filtro de bucle se habilitan (es decir, "pcm_loop_filter_disable_flag = 0"), el procedimiento de dQP se habilita (es decir, "cu_qp_delta_enabled_flag = 1") y
el valor de dQP se codifica para el bloque (es decir, "IsCuQPDeltaCoded flag = 0"), el decodificador de vídeo 30 puede recibir el elemento de sintaxis cu qp_delta para indicar el valor de dQP para el bloque de IPCM.
En el primer ejemplo descrito anteriormente, cuando el bloque de IPCM 716 tiene un tamaño que es mayor o igual que el tamaño mínimo del grupo de cuantificación de la CU, el codificador de vídeo 20 puede señalar un valor de dQP para el bloque de IPCM 716 igual a "0". De esta manera, el decodificador de vídeo 30 puede determinar el valor de QP ("QP1") para el bloque de IPCM 716 añadiendo el valor de dQP señalado de "0" al valor de QP previsto ("QP0") del bloque vecino 714 (es decir, "QP1= QP0"). En otro ejemplo, el codificador de vídeo 20 puede señalar un valor de dQP para el bloque de IPCM 716 que es diferente de "0" y el decodificador de vídeo 30 puede determinar el valor de QP ("QP1") para el bloque de IPCM 716 añadiendo el valor de dQP señalado al valor de QP previsto ("QP0") del bloque vecino 714 (es decir, "QPi= QPo+dQP").
En el segundo ejemplo descrito anteriormente, cuando el bloque de IPCM 726 tiene un tamaño que es más pequeño que el tamaño mínimo del grupo de cuantificación de la CU, el codificador de vídeo 20 puede señalar un valor de dQP para el bloque de IPCM 726 que es igual al valor de dQP para el grupo de cuantificación 720 que incluye el bloque de IPCM 726. De esta manera, el decodificador de vídeo 30 puede determinar el valor de QP ("QP5") para el bloque de IPCM 726 añadiendo el valor de dQP señalado a un valor de QP previsto ("QP2") de un bloque vecino 718 (es decir, "QP5= QP2 + dQP"). Debido a que el valor de dQP para el bloque de IPCM 726 es el mismo que el valor de dQP para todos los bloques en el grupo de cuantificación 720, el decodificador de vídeo 30 puede determinar el valor de QP ("QP5") para el bloque de IPCM 726 de modo que el valor de QP sea igual a un valor de QP para el grupo de cuantificación (es decir, QP3= QP4= QP5= QP6= QPqg).
En algunos casos, el codificador de vídeo 20 puede señalar solo el valor de dQP para uno de los bloques (por ejemplo, uno de los bloques 722, 724, 726, 728) en un grupo de cuantificación (por ejemplo, el grupo de cuantificación 720). El valor de dQP señalado puede ser el primer valor de dQP codificado para un bloque que no es un bloque de IPCM y que incluye al menos un coeficiente distinto de cero (es decir, para el que "CBF = 1"). Como un ejemplo, el elemento de sintaxis o el indicador "IsCuQPDeltaCoded" se puede incluir en la sintaxis de PU para asegurar que solo el primer valor de dQP codificado para un bloque en un grupo de cuantificación se señalice al decodificador de vídeo 30. El decodificador de vídeo 30 puede establecer entonces los valores de dQP para los otros bloques en el mismo grupo de cuantificación iguales al primer valor de dQP codificado.
Como se describió anteriormente, algunas versiones preliminares de HEVC (por ejemplo, WD6) soportan la señalización de un pcm_loop_filter_disable_flag en un SPS para indicar si los procedimientos de filtro de bucle se habilitan para los bloques de IPCM. En algunos casos, puede ser conveniente indicar si los procedimientos de filtro de bucle se habilitan para bloques de IPCM con una granularidad más fina. Como tal, las técnicas de esta divulgación soportan además la señalización del pcm_loop_filter_disable_flag en cualquiera de un PPS, un APS, un encabezado de segmento, una sintaxis de CU y una sintaxis de PU.
En un ejemplo, el codificador de vídeo 20 puede determinar si se deben aplicar los procedimientos de filtro de bucle, tal como el filtrado de desbloqueo, el a Lf y el SAO, en base a si el bloque de IPCM actual incluye muestras originales o muestras reconstruidas. Como se discutió anteriormente, las muestras originales están libres de distorsión y no requieren filtrado en bucle, mientras que las muestras reconstruidas pueden incluir algo de distorsión y se pueden beneficiar del filtrado en bucle. En otros ejemplos, el codificador de vídeo 20 puede determinar aplicar los procedimientos de filtro de bucle a bloques de IPCM en base a otras consideraciones. De acuerdo con las técnicas descritas en la presente memoria, el codificador de vídeo 20 puede señalar el pcm_loop_filter_disable_flag en la sintaxis de PU, como se ilustra en la Tabla 4 a continuación. En particular, la Tabla 4 ilustra la granularidad más fina a la que se puede señalar el procesamiento del filtro de bucle.
Tabla 4: Adiciones de sintaxis de PU para incrustar el "pcm_loop_filter_disable_flag"
Como otro ejemplo, como se explicó anteriormente, algunas versiones preliminares de HEVC (por ejemplo, WD6) también soportan un modo de codificación sin pérdidas para CU o bloques de datos de vídeo. En algunos ejemplos, el qpprime_y_zero_transquant_bypass_flag señalado en el SPS e igual a "1" puede especificar que si el parámetro "QP'V'(por ejemplo, donde QP'y = QPy + QpBdOffsetY , con QpBdOffset = 6*bit_depth_luma_minus8) es igual a "0" para una CU, se aplicará un procedimiento de codificación sin pérdidas. Como se describió previamente, en la codificación sin pérdidas, se omiten los procedimientos de escala y transformación y los procedimientos de filtro en bucle. El modo de codificación sin pérdidas es similar al caso de un bloque de IPCM que contiene muestras originales, como se describió anteriormente, con la diferencia de que no se aplica ningún procedimiento de predicción para la codificación sin pérdidas al bloque de IPCM. Si se señala un valor de QP o cu_qp_delta para un bloque de IPCM, como se describió anteriormente, el valor de QP'y resultante puede ser igual a "0", como es el caso del modo de codificación sin pérdidas. Si el valor de QP'y es igual a "0" para un bloque de IPCM, los filtros de bucle (por ejemplo, desbloqueo, SAO, ALF) también se pueden desactivar en las muestras de IPCM, como es el caso del modo de codificación sin pérdidas. Esto es equivalente a señalar el pcm_loop_filter_disable_flag igual a verdadero o "1". Por lo tanto, la señalización de pcm_loop_filter_disable_flag puede omitirse si el valor de QP del bloque IPCM se usa para controlar el comportamiento del filtro de bucle: QP'y igual a "0" es equivalente a que el pcm_loop_filter_disable_flag sea igual a verdadero o "1", mientras que QP'y mayor que "0" es equivalente al pcm_loop_filter_disable_flag igual a falso o "0". El filtro de desbloqueo puede calcular un promedio o un máximo de los valores de QP de los bloques, con al menos un bloque codificado sin pérdidas o un bloque de IPCM.
Las Figuras 8A-8B son diagramas conceptuales que ilustran ejemplos de desbloqueo del modo de codificación sin pérdida, consistentes con las técnicas de esta divulgación. Como se muestra en la Figura 8A, incluida dentro de una pluralidad de CU (o bloques de datos de vídeo) 800, una CU "actual" 812 que se codifica sin pérdidas (es decir, para la cual "QP'y = 0") se pueden rodear por las CU 804—810 que no se codifican sin pérdidas (es decir, para cada una de las cuales "QP'y > 0"). Como se explicó anteriormente con referencia a la Figura 1, en tales casos, un filtro de desbloqueo puede omitir el procesamiento de los bordes izquierdo y superior de la CU 812 actual (por ejemplo, porque "QP'y = 0" para la CU 812), mientras se realiza el filtrado de desbloqueo en los bordes derecho e inferior de la CU 812 actual (por ejemplo, en virtud de realizar el filtrado de desbloqueo para las CU 806 y 808, cuando las respectivas CU se codifican), como se ilustra en la Figura 8A. Como ya se explicó, un problema potencial asociado con el enfoque descrito anteriormente es que el filtro de desbloqueo puede modificar las muestras sin pérdidas de la CU 812 actual a lo largo de los bordes derecho e inferior, como se muestra mediante las porciones "discontinuas" de la CU 812 sin pérdidas alrededor de estos bordes en la Figura 8A.
Como también se explicó anteriormente con referencia a la Figura 1, las técnicas de esta divulgación pueden incluir inhabilitar el filtrado de desbloqueo para las CU codificadas sin pérdidas, de modo que las CU no se filtran desbloqueadas a lo largo de ninguno de los bordes de las CU, mientras se permite que las CU adyacentes codificadas con "pérdidas" se filtren desbloqueadas. Por ejemplo, como se muestra en la Figura 8B, incluida dentro de otra pluralidad de CU 802 (o bloques de datos de vídeo), otra CU "actual" 822 que se codifica sin pérdidas (es decir, para la cual "QP'y = 0") se pueden rodear por CU 814-820 que no se codifican sin pérdidas (es decir, para cada una de las cuales "QP'y > 0"). En tales casos, un filtro de desbloqueo puede omitir el procesamiento de cada uno de los bordes izquierdo, superior, derecho e inferior de la CU actual 822, mientras que permite el filtrado de desbloqueo de los bordes correspondientes de las CU 814-820, como se muestra en la Figura 8B. Adicionalmente, como también se explicó anteriormente con referencia a la Figura 1, las técnicas divulgadas pueden incluir además la asignación de un valor de QP distinto de cero a la CU 822 con el propósito de realizar el filtrado de desbloqueo de los bordes correspondientes de las CU 814—820.
Las Figuras 9—11 son diagramas de flujo que ilustran los procedimientos de ejemplo de desbloqueo del modo de codificación sin pérdidas de IPCM y sin pérdidas, consistentes con las técnicas de esta divulgación. Las técnicas de la Figuras 9-11 se puede realizar generalmente por cualquier unidad de procesamiento o procesador, ya sea implementado en hardware, software, firmware o una combinación de los mismos y cuando se implementa en software o firmware, se puede proporcionar el hardware correspondiente para ejecutar las instrucciones para el software o para el firmware. Con el propósito de ejemplo, las técnicas de las Figuras. 9—11 se describen con respecto al codificador de vídeo 20 (Figuras 1 y 2) y/o al decodificador de vídeo 30 (Figuras 1 y 3), aunque se debe entender que otros dispositivos se pueden configurar para realizar técnicas similares. Además, las etapas ilustradas en las Figuras 9—11 se pueden realizar en un orden diferente o en paralelo y se pueden agregar etapas adicionales y omitir ciertas etapas, sin apartarse de las técnicas de esta divulgación.
Específicamente, la Figura 9 ilustra un procedimiento de ejemplo del modo de codificación de IPCM y del desbloqueo del modo de codificación sin pérdidas o "filtrado de desbloqueo", en el contexto de codificación (es decir, codificación y/o decodificación), de manera general. Adicionalmente, las Figuras 10 y 11 ilustran procedimientos de ejemplo del modo de codificación de IPCM y del desbloqueo del modo de codificación sin pérdidas en el contexto de decodificación y codificación, respectivamente.
Como ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar (es decir, codificar y/o decodificar) uno o más bloques de datos de vídeo durante un procedimiento de codificación de vídeo, como se describió previamente. Por ejemplo, el uno o más bloques pueden ser uno o más PU, TU o CU, como también se describió previamente. En este ejemplo, inicialmente, el codificador de vídeo 20 y/o el decodificador de vídeo 30
pueden codificar una pluralidad de bloques de datos de vídeo, en el que al menos un bloque de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación que es uno de un modo de codificación de IPCM y un modo de codificación sin pérdidas (900). Como se describió previamente, el al menos un bloque codificado mediante el uso del modo de codificación de IPCM puede corresponder a un bloque de datos de vídeo reconstruidos. Por ejemplo, el bloque de datos de vídeo reconstruidos se puede generar, por ejemplo, mediante el codificador de vídeo 20, realizando las etapas de predicción, suma, transformación y cuantificación descritas anteriormente con referencia a las Figuras 1 y 2 mediante el uso de un bloque de datos de vídeo originales. Realizando las etapas descritas anteriormente mediante el uso del bloque de datos de vídeo originales, el codificador de vídeo 20 puede generar un bloque de coeficientes residuales transformados y cuantificados. Subsecuentemente, el codificador de vídeo 20 puede realizar cuantificación inversa, transformación inversa, predicción y suma mediante el uso del bloque de coeficientes residuales transformados y cuantificados, como también se describió anteriormente, para generar el bloque de datos de vídeo reconstruidos. Alternativamente, como también se describió previamente, el al menos un bloque codificado mediante el uso del modo de codificación sin pérdidas puede corresponder a un bloque de datos de vídeo no cuantificados residuales (por ejemplo, generado mediante el uso de predicción) o a datos de vídeo originales.
El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden asignar además un valor de QP distinto de cero para el al menos un bloque codificado mediante el uso del modo de codificación (902). Por ejemplo, como se describirá con mayor detalle a continuación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden asignar el valor de QP distinto de cero para el al menos un bloque mediante el uso de cualquiera de una variedad de procedimientos. Dichos procedimientos pueden incluir la determinación del valor de QP distinto de cero asignado en base a uno o más de (1) un valor de QP señalado para el al menos un bloque (por ejemplo, que indica el valor de QP distinto de cero asignado directamente), (2) un valor de QP previsto para el al menos un bloque (por ejemplo, un valor de QP de cada uno de uno o más bloques vecinos del al menos un bloque) y (3) un valor de dQP señalado para el al menos un bloque (por ejemplo, que representa una diferencia entre el valor de QP distinto de cero asignado y el valor de QP previsto).
El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar además un filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado para el al menos un bloque (904). Por ejemplo, como también se describirá con mayor detalle a continuación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en el al menos un bloque en sí mismo o en uno o más bloques adyacentes de la pluralidad de bloques de datos de vídeo que se ubican adyacentes a al menos un bloque. En este ejemplo, el uno o más bloques adyacentes se pueden codificar mediante el uso de un modo de codificación con pérdidas.
En particular, en algunos ejemplos, para realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar las siguientes etapas. Como un ejemplo, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en el al menos un bloque en base al valor de QP distinto de cero asignado. Como se describirá con mayor detalle a continuación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 también pueden realizar el filtrado de desbloqueo en uno o más bloques de la pluralidad de bloques de datos de vídeo en base al valor de QP distinto de cero asignado. Como otro ejemplo, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en uno o más bloques adyacentes de la pluralidad de bloques de datos de vídeo en base al valor de QP distinto de cero asignado, evitando al mismo tiempo realizar el filtrado de desbloqueo en al menos un bloque en sí mismo. En este ejemplo, cada uno de los uno o más bloques adyacentes se puede ubicar junto a al menos un bloque y codificar mediante el uso de un modo de codificación con pérdidas. Por ejemplo, cada uno del uno o más bloques adyacentes puede ser un bloque de coeficientes residuales cuantificados y transformados generados realizando las etapas de predicción, suma, transformación y cuantificación descritas anteriormente con referencia a las Figuras 1 y 2 mediante el uso de un bloque de datos de vídeo originales.
En los ejemplos descritos anteriormente, para realizar el filtrado de desbloqueo en cada uno del al menos un bloque y el bloque adyacente en base al valor de QP distinto de cero asignado, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden seleccionar un filtro para el filtrado de desbloqueo en base al valor de QP distinto de cero asignado. Por ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 se pueden configurar para seleccionar el filtro, mediante el uso del valor de QP distinto de cero asignado, de modo que el filtro incluya uno o más parámetros o propiedades de filtrado que definan la manera en que el filtrado de desbloqueo, mediante el uso del filtro, se realiza. En otros ejemplos, para realizar el filtrado de desbloqueo en cada uno del al menos un bloque y el bloque adyacente en base al valor de QP distinto de cero asignado, el codificador de vídeo 20 y/o el decodificador de vídeo 30 se pueden configurar para determinar una fuerza de filtro para el filtrado de desbloqueo en base al valor de QP distinto de cero asignado, como se describe anteriormente con referencia a las decisiones de desbloqueo.
Como un ejemplo, en los casos donde el al menos un bloque se codifica mediante el uso del modo de codificación de IPCM, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en al menos un bloque, así como en uno o más bloques adyacentes de la pluralidad de bloques de datos de vídeo. En este ejemplo, cada uno de los bloques adyacentes se puede ubicar junto a al menos un bloque y codificar mediante el uso de un modo de codificación con pérdidas. Por ejemplo, cada uno de los bloques adyacentes puede ser un bloque de coeficientes residuales cuantificados y transformados generados realizando las etapas de predicción, suma, transformación y cuantificación descritas anteriormente con referencia a las Figuras 1 y 2 mediante el uso de un bloque de datos de vídeo originales.
En este ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en uno o más de los límites compartidos por el al menos un bloque y los bloques adyacentes. En particular, para realizar el filtrado de desbloqueo en un límite determinado compartido por el al menos un bloque y uno en particular de los bloques adyacentes, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar la fuerza del filtro mediante el uso de un promedio del valor de QP distinto de cero asignado para el al menos un bloque y de un valor de QP para el bloque adyacente. Como tal, de acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 se pueden configurar para determinar la fuerza del filtro mediante el uso de, al menos en parte, el valor de QP distinto de cero asignado, en lugar del valor predeterminado valor de QP "valor cero" para el al menos un bloque descrito previamente. Subsecuentemente, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en el límite en base a la fuerza del filtro determinada. En este ejemplo, para realizar el filtrado de desbloqueo en el límite, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden filtrar los bordes límite internos tanto del al menos un bloque como del bloque adyacente (por ejemplo, uno o más coeficientes dentro de cada bloque que se ubican próximos al límite compartido por los dos bloques). De esta manera, la asignación del valor de QP distinto de cero para el al menos un bloque y la determinación de la fuerza del filtro utilizado para realizar el filtrado de desbloqueo en base, al menos en parte, al valor de QP distinto de cero asignado, puede, en algunos casos, mejorar la calidad visual del al menos un bloque y de los bloques adyacentes, en comparación con otras técnicas.
Como otro ejemplo, como se describió previamente, en los casos donde el al menos un bloque se codifica mediante el uso del modo de codificación sin pérdidas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en uno o más bloques adyacentes de la pluralidad de bloques de datos de vídeo, mientras se evita realizar el filtrado de desbloqueo en al menos un bloque en sí mismo. De una manera similar a la descrita anteriormente, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en uno o más de los límites compartidos por el al menos un bloque y los bloques adyacentes. Por ejemplo, para realizar el filtrado de desbloqueo en un límite determinado compartido por el al menos un bloque y uno en particular de los bloques adyacentes, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar una vez más la fuerza del filtro mediante el uso de un promedio del valor de QP distinto de cero asignado para al menos un bloque y de un valor de QP para el bloque adyacente. De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar una vez más la fuerza del filtro mediante el uso de, al menos en parte, el valor de QP distinto de cero asignado. Subsecuentemente, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar el filtrado de desbloqueo en el límite en base a la fuerza del filtro determinada.
En contraste con el ejemplo descrito anteriormente donde el al menos un bloque se codifica mediante el uso del modo de codificación de IPCM, sin embargo, en este ejemplo, para realizar el filtrado de desbloqueo en el límite, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden filtrar los bordes límite internos del bloque adyacente solamente (por ejemplo, uno o más coeficientes dentro del bloque adyacente que se ubican cerca del límite compartido por los dos bloques). En otras palabras, en este ejemplo, los bordes límite internos del al menos un bloque en sí mismos no se afectarán por el filtrado de desbloqueo. De esta manera, asignar el valor de QP distinto de cero para el al menos un bloque y determinar los coeficientes de filtro para realizar el filtrado de desbloqueo en base, al menos en parte, al valor de QP distinto de cero asignado, puede, en algunos casos, mejorar la calidad visual de los bloques adyacentes en comparación con otras técnicas.
En algunos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden, además, antes de realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado, habilitar el filtrado de desbloqueo para el uno o más de la pluralidad de bloques de datos de vídeo. Como un ejemplo, el codificador de vídeo 20 puede señalar uno o más elementos de sintaxis (por ejemplo, códigos de 1 bit o "indicadores") en un flujo de bits, por ejemplo, para que se reciba por el decodificador de vídeo 30 o para que se almacene dentro del dispositivo de almacenamiento 24. Como otro ejemplo, el decodificador de vídeo 30 puede recibir el uno o más elementos de sintaxis en un flujo de bits, por ejemplo, señalado por el codificador de vídeo 20 o el dispositivo de almacenamiento 24. En cualquiera de estos ejemplos, el uno o más elementos de sintaxis pueden indicar que el filtrado de desbloqueo se habilita para uno o más de la pluralidad de bloques de datos de vídeo.
En otros ejemplos, particularmente en los casos donde el modo de codificación es el modo de codificación sin pérdidas, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden inhabilitar el filtrado de desbloqueo para al menos un bloque. En estos ejemplos, para inhabilitar el filtrado de desbloqueo, el codificador de vídeo 20 y/o el
decodificador de vídeo 30 pueden evitar realizar el filtrado de desbloqueo para los bordes límite internos del al menos un bloque. Por ejemplo, de una manera similar a la descrita anteriormente con referencia al uno o más elementos de sintaxis que indican que el filtrado de desbloqueo se habilita para uno o más de la pluralidad de bloques de datos de vídeo, el codificador de vídeo 20 puede señalizar y/o el decodificador de vídeo 30 puede recibir uno o más elementos de sintaxis (por ejemplo, códigos de 1 bit o en directos) en un flujo de bits. En este ejemplo, sin embargo, el uno o más elementos de sintaxis pueden indicar que el filtrado de desbloqueo se deshabilita para el al menos un bloque.
En algunos ejemplos, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden determinar el valor de QP distinto de cero asignado en base a uno o más de lo siguiente: (1) un valor de QP señalado para el al menos un bloque, en el que el valor de QP señalado indica el valor de QP distinto de cero asignado; (2) un valor de QP previsto para el al menos un bloque; y (3) un valor de dQP señalado para el al menos un bloque, en el que el valor de dQP representa una diferencia entre el valor de QP distinto de cero asignado y el valor de Qp previsto.
Como ejemplo, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar las siguientes etapas. Como un ejemplo, cuando el tamaño del al menos un bloque es más pequeño que el tamaño mínimo del grupo de cuantificación de la unidad de codificación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden establecer un valor de QP de grupo, por ejemplo, al menos un valor de QP de grupo, para un grupo de cuantificación que incluye el al menos un bloque como el valor de QP distinto de cero asignado. En este ejemplo, el grupo de cuantificación también puede incluir uno o más bloques de datos de vídeo codificados mediante el uso de un modo de codificación con pérdidas.
Como se describió anteriormente, en algunos ejemplos, cada uno de los bloques de datos de vídeo incluidos dentro del grupo de cuantificación puede tener un mismo valor de QP de grupo. En estos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden establecer este valor de QP de grupo común como el valor de QP distinto de cero asignado. En otros ejemplos, sin embargo, solo algunos bloques del grupo de cuantificación (por ejemplo, los bloques que comienzan desde un primer bloque del grupo de cuantificación para el que se señala el valor de QP, por ejemplo, como un valor de dQP) pueden tener un mismo valor de QP de grupo. En estos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden establecer este valor de QP de grupo particular que es común sólo a un subconjunto de los bloques del grupo de cuantificación como el valor de QP distinto de cero asignado. De esta manera, cuando el tamaño del al menos un bloque es más pequeño que el tamaño mínimo del grupo de cuantificación de la unidad de codificación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden establecer al menos un valor de QP de grupo para el grupo de cuantificación que incluye al menos un bloque como el valor de QP distinto de cero asignado.
Como otro ejemplo, cuando el tamaño del al menos un bloque es mayor o igual que el tamaño mínimo del grupo de cuantificación de la unidad de codificación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden establecer un valor de QP para un bloque vecino de la pluralidad de bloques de datos de vídeo como el valor de QP distinto de cero asignado. En este ejemplo, el bloque vecino puede ser uno o más de un bloque ubicado adyacente a al menos un bloque y de un bloque previamente codificado.
En otro ejemplo, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación de IPCM, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden realizar las siguientes etapas. Por ejemplo, cuando el tamaño del al menos un bloque es más pequeño que el tamaño mínimo del grupo de cuantificación de la unidad de codificación, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden establecer un valor de QP para un bloque vecino de la pluralidad de bloques de datos de vídeo, como el valor de QP distinto de cero asignado. En este ejemplo, el bloque vecino una vez más puede ser uno o más de un bloque ubicado adyacente a al menos un bloque y de un bloque previamente codificado.
En otros ejemplos, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden establecer uno de un valor de QP y un valor de dQP para un bloque con pérdidas de la pluralidad de bloques de datos de vídeo como el valor de QP distinto de cero asignado. En este ejemplo, el valor de dQP puede representar una diferencia entre el valor de QP y un valor de QP previsto para el bloque con pérdidas. También en este ejemplo, el bloque con pérdidas puede ser un bloque codificado mediante el uso de un modo de codificación con pérdidas.
En otros ejemplos más, en los casos donde el modo de codificación utilizado para codificar el al menos un bloque es el modo de codificación sin pérdidas, en lugar de determinar el valor de QP distinto de cero asignado mediante el uso de las técnicas descritas anteriormente, para asignar el valor de QP distinto de cero para el al menos un bloque, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden establecer un valor constante como el valor de QP distinto de cero asignado.
De esta manera, en algunos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar una pluralidad de bloques de datos de vídeo, en el que al menos un bloque de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación de IPCM, asignar un valor de QP distinto de cero para el al menos un bloque y realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al valor de QP distinto de cero asignado para el al menos un bloque.
Alternativamente, en otros ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden codificar una pluralidad de bloques de datos de vídeo, en la que al menos un bloque de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación sin pérdidas que usa predicción, asignar un valor de QP distinto de cero para el al menos un bloque y realizar un filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo, distintos del al menos un bloque, en base al valor de QP distinto de cero asignado para el en menos una bloque. En estos ejemplos, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden evitar además realizar un filtrado de desbloqueo en al menos un bloque.
Como otro ejemplo, el decodificador de vídeo 30 puede recibir uno de los datos de vídeo residuales no cuantificados y de los datos de vídeo reconstruidos de un bloque de una pluralidad de bloques de datos de vídeo en un flujo de bits recibido. En este ejemplo, el bloque se puede codificar mediante el uso de un modo de codificación que es uno de un modo de codificación de IPCM y de un modo de codificación sin pérdidas (1000). También en este ejemplo, el modo de codificación sin pérdidas puede corresponder a un modo de codificación sin pérdidas que utiliza predicción, como se describió previamente. El decodificador de vídeo 30 puede recibir además uno de un valor de Qp distinto de cero asignado y un valor de dQP para el bloque en el flujo de bits recibido. Por ejemplo, el valor de dQP puede representar una diferencia entre el valor de QP distinto de cero asignado y un valor de QP previsto para el bloque (1002).
En algunos ejemplos, particularmente en los casos donde el decodificador de vídeo 30 recibe un valor de dQP, el decodificador de vídeo 30 puede determinar aún más el valor de QP previsto (1004) y determinar el valor de QP distinto de cero asignado en base al valor de dQP y al valor de QP previsto (1006). El decodificador de vídeo 30 también puede realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el bloque y el valor de QP distinto de cero asignado (1008). En el ejemplo descrito anteriormente, el decodificador de vídeo 30 puede recibir además un primer o más elementos de sintaxis (por ejemplo, uno o más códigos de un solo bit, que se pueden denominar "indicadores") en el flujo de bits recibido, que indica que el filtrado de desbloqueo se habilita para uno o más de la pluralidad de bloques de datos de vídeo (1010). También en este ejemplo, el decodificador de vídeo 30 puede recibir aún más un segundo o más elementos de sintaxis (por ejemplo, de nuevo, uno o más "indicadores") en el flujo de bits recibido que indican que el filtrado de desbloqueo se deshabilita para el bloque (1012).
Como otro ejemplo más, el codificador de vídeo 20 puede determinar un valor de QP distinto de cero asignado para un bloque de una pluralidad de bloques de datos de vídeo. En este ejemplo, el bloque se puede codificar mediante el uso de un modo de codificación que es uno de un modo de codificación de IPCM y de un modo de codificación sin pérdidas (1100). También en este ejemplo, el modo de codificación sin pérdidas una vez más puede corresponder a un modo de codificación sin pérdidas que utiliza predicción. El codificador de vídeo 20 puede realizar además un filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el bloque y el valor de QP distinto de cero asignado (1102). El codificador de vídeo 20 puede señalizar aún más uno de los datos de vídeo residuales no cuantificados y los datos de vídeo reconstruidos del bloque en un flujo de bits (1104). En algunos ejemplos, el codificador de vídeo 20 también puede determinar un valor de Qp previsto para el bloque (1106).
El codificador de vídeo 20 también puede señalar uno del valor de QP distinto de cero asignado y un valor de dQP para el bloque en el flujo de bits. En este ejemplo, el valor de dQP puede representar una diferencia entre el valor de QP distinto de cero asignado y el valor de Qp previsto (1108) descrito anteriormente con referencia al paso (1106). En el ejemplo descrito anteriormente, el codificador de vídeo 20 puede señalar además un primer o más elementos de sintaxis (por ejemplo, uno o más "indicadores") en el flujo de bits, que indica que el filtrado de desbloqueo se habilita para uno o más de la pluralidad de bloques de datos de vídeo (1110). También en este ejemplo, el codificador de vídeo 20 puede señalar además un segundo o más elementos de sintaxis (por ejemplo, de nuevo, uno o más "indicadores") en un flujo de bits que indica que el filtrado de desbloqueo se deshabilita para el bloque (1112). De esta manera, el procedimiento de cada una de las Figuras 9—11 representa un ejemplo de un procedimiento de codificación de datos de vídeo que comprende codificar una pluralidad de bloques de datos de vídeo, en el que al menos un bloque de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación que es uno del modo de codificación de IPCM y de un modo de codificación sin pérdidas que usa predicción, asignando un valor de QP distinto de cero para el al menos un bloque codificado mediante el uso del modo de codificación y realizando un filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al modo de codificación utilizado para codificar el al menos un bloque y el valor de QP distinto de cero asignado para el al menos un bloque.
En uno o más ejemplos, las funciones descritas en la presente memoria se pueden implementar en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse o transmitirse, como una o más instrucciones o código, en un medio legible por ordenador y ejecutadas por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a medios tangibles o no transitorios, tal como los medios de almacenamiento de datos o los medios de comunicación que incluye 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 de manera general pueden corresponder a (1) los medios de almacenamiento legibles por ordenador tangibles que no son 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 mediante uno o más ordenadores o uno o más procesadores para recuperar las instrucciones, códigos y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa de ordenador puede incluir un medio legible por ordenador.
A modo de ejemplo y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender rAm , ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se puede usar para almacenar el código del programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. También, cualquier conexión apropiadamente se califica un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor, u otra fuente remota mediante el uso de un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de suscriptor digital (DSL) o las tecnologías inalámbricas 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 se incluyen en la definición de medio. Se debe entender, sin embargo, que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen las conexiones, ondas portadoras, señales, u otros medios transitorios, sino que se dirigen a medios de almacenamiento tangibles no transitorios o no temporales. Disco y disco, como se usa en la presente memoria, incluye el disco compacto (CD), el disco de láser, el disco óptico, el disco digital versátil (DVD), el disquete y el disco Blu-ray donde existen discos que usualmente reproducen los datos de manera magnética, mientras que otros discos reproducen los datos de manera óptica con láseres. Las combinaciones de los anteriores también deben incluirse dentro del ámbito de los medios legibles por ordenador.
Las instrucciones se pueden ejecutar por uno o más procesadores, tal como uno o más microprocesadores de propósito general señales digitales, DSP, ASIC, FPGA, u otros circuitos lógicos discretos o integrados equivalentes. En consecuencia, el término "procesador", como se usa en la presente memoria, 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 esta divulgación. Además, en algunos aspectos, la funcionalidad descrita en la presente memoria puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar o incorporarse en un códec combinado. Asimismo, las técnicas se podrían implementar completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluye un terminal inalámbrico, un IC o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes componentes, módulos o unidades de hardware. En lugar de, como se describió anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o firmware adecuados.
Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del ámbito de las reivindicaciones.
Claims (15)
1. Un procedimiento de codificación de datos de vídeo de Codificación de Vídeo de Alta Eficiencia, HEVC, comprendiendo el procedimiento realizado por un dispositivo de codificación (12):
codificar (900) una pluralidad de bloques (800, 802) de datos de vídeo, en el que al menos un bloque (812, 822) de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación sin pérdidas, en el que codificar el al menos un bloque mediante el uso del modo de codificación sin pérdidas comprende:
i) predecir el al menos un bloque para generar un bloque previsto para el modo de codificación sin pérdidas, ii) codificar el al menos un bloque en base al bloque previsto y un residuo no cuantificado, y
iii) señalizar datos de vídeo residuales no cuantificados de al menos un bloque en un flujo de bits;
asignar (902) un valor de parámetro de cuantificación distinto de cero, QP, para el al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas en base a un valor de QP previsto para el al menos un bloque;
determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques, en el que determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques comprende:
i) determinar si se debe realizar el filtrado de desbloqueo en un bloque adyacente (804, 806, 808, 810, 814, 816, 818, 820) ubicado adyacente a al menos un bloque y codificado mediante el uso de un modo de codificación con pérdidas, en base al valor de QP distinto de cero asignado para el al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas, y
ii) determinar para evitar realizar el filtrado de desbloqueo en al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas; y
realizar (904) el filtrado de desbloqueo para cada uno de la pluralidad de bloques en base a las determinaciones respectivas.
2. El procedimiento de la reivindicación 1, en el que:
asignar el valor de QP distinto de cero para el al menos un bloque comprende señalizar (1108) un valor QP delta para el al menos un bloque en el flujo de bits, el valor de QP delta que representa una diferencia entre el valor de QP distinto de cero asignado y el valor de QP previsto para el al menos un bloque, y
el procedimiento comprende además señalizar (1110) uno o más elementos de sintaxis en el flujo de bits, el uno o más elementos de sintaxis que indican que el filtrado de desbloqueo se habilita para la pluralidad de bloques de datos de vídeo.
3. El procedimiento de la reivindicación 2, en el que uno o más elementos de sintaxis comprenden un primer o más elementos de sintaxis, el procedimiento que comprende además señalizar (1112) uno o más elementos de sintaxis en el flujo de bits, el segundo o más elementos de sintaxis que indica que el filtrado de desbloqueo se deshabilita para el al menos un bloque.
4. Un procedimiento de decodificación de datos de vídeo de Codificación de vídeo de alta eficiencia, HEVC, el procedimiento realizado por un dispositivo de decodificación (14) y que comprende:
decodificar (900) una pluralidad de bloques (800, 802) de datos de vídeo, en el que al menos un bloque (812, 822) de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación sin pérdidas, en el que decodificar el al menos un bloque mediante el uso del modo de codificación sin pérdidas comprende: i) predecir el al menos un bloque para generar un bloque previsto para el modo de codificación sin pérdidas, ii) recibir datos de vídeo residuales no cuantificados de al menos un bloque en un flujo de bits recibido, y iii) decodificar el al menos un bloque en base al bloque previsto y los datos de vídeo residuales no cuantificados del al menos un bloque;
asignar (902) un valor de parámetro de cuantificación distinto de cero, QP, para el al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas en base a un valor de QP previsto para el al menos un bloque;
recibir (1010) uno o más elementos de sintaxis en el flujo de bits recibido, el uno o más elementos de sintaxis que indican que el filtrado de desbloqueo se habilita para la pluralidad de bloques de datos de vídeo;
determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques, en el que determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques comprende:
i) determinar si se debe realizar el filtrado de desbloqueo en un bloque adyacente (804, 806, 808, 810, 814, 816, 818, 820) ubicado adyacente a al menos un bloque y codificado mediante el uso de un modo de codificación con
pérdidas, en base al valor de QP distinto de cero asignado para el al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas, y
ii) determinar para evitar realizar el filtrado de desbloqueo en al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas; y
realizar (904) el filtrado de desbloqueo para cada uno de la pluralidad de bloques en base a las determinaciones respectivas.
5. El procedimiento de la reivindicación 4, en el que:
asignar el valor de QP distinto de cero para el al menos un bloque comprende recibir (1002) un valor de QP delta para el al menos un bloque en el flujo de bits recibido, el valor de QP delta que representa una diferencia entre el valor de QP distinto de cero asignado y un valor de QP previsto para el al menos un bloque, y determinar (1004) el valor de QP distinto de cero asignado en base al valor de QP delta y al valor de QP previsto, y
el procedimiento comprende además recibir (1010) uno o más elementos de sintaxis en el flujo de bits recibido, el uno o más elementos de sintaxis que indican que el filtrado de desbloqueo se habilita para la pluralidad de bloques de datos de vídeo.
6. El procedimiento de la reivindicación 5, en el que uno o más elementos de sintaxis comprenden un primer o más elementos de sintaxis, el procedimiento que comprende además recibir (1012) uno segundo o más elementos de sintaxis en el flujo de bits recibido, indicando el segundo o más elementos de sintaxis que el filtrado de desbloqueo se deshabilita para al menos un bloque.
7. El procedimiento de cualquiera de las reivindicaciones 1 a 6, en el que la realización del filtrado de desbloqueo en cada uno del al menos un bloque y el bloque adyacente en base al valor QP distinto de cero asignado comprende la selección de un filtro para el filtrado de desbloqueo en base al valor QP distinto de cero asignado.
8. El procedimiento de cualquiera de las reivindicaciones 1 a 7, que comprende además, antes de realizar el filtrado de desbloqueo en uno o más de la pluralidad de bloques de datos de vídeo en base al valor QP asignado distinto de cero, habilitar el filtrado de desbloqueo para uno o más de la pluralidad de bloques de datos de vídeo.
9. El procedimiento de cualquiera de las reivindicaciones 1 a 8, en el que evitar realizar el filtrado de desbloqueo en al menos un bloque (822) incluye no realizar el filtrado de desbloqueo para los bordes de los límites internos del al menos un bloque (822).
10. El procedimiento de cualquiera de las reivindicaciones 1 a 9, en el que asignar el valor de QP distinto de cero para el al menos un bloque comprende determinar el valor de QP distinto de cero asignado en base a un valor de QP delta señalado para el al menos un bloque, en el que el valor de QP delta representa una diferencia entre el valor de QP distinto de cero asignado y el valor de QP previsto.
11. El procedimiento de cualquiera de las reivindicaciones 1 a 9, en el que asignar el valor QP distinto de cero para el al menos un bloque comprende establecer uno de un valor QP y un valor de QP delta para un bloque con pérdidas de la pluralidad de bloques de datos de vídeo como el valor de QP distinto de cero asignado, en el que el valor de QP delta representa una diferencia entre el valor de QP y un valor de QP previsto para el bloque con pérdidas, comprendiendo el bloque con pérdidas un bloque codificado mediante el uso de un modo de codificación con pérdidas.
12. Un dispositivo (12) para codificar datos de vídeo de Codificación de vídeo de alta eficiencia, HEVC, comprendiendo el dispositivo:
medios para codificar una pluralidad de bloques de datos de vídeo, en el que al menos un bloque de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación sin pérdidas, en el que codificar el al menos un bloque mediante el uso del modo de codificación sin pérdidas comprende:
i) predecir el al menos un bloque para generar un bloque previsto para el modo de codificación sin pérdidas, ii) codificar el al menos un bloque en base al bloque previsto y un residuo no cuantificado, y
iii) señalizar datos de vídeo residuales no cuantificados de al menos un bloque en un flujo de bits;
medios para asignar un valor de parámetro de cuantificación, QP, distinto de cero para el al menos un bloque en base a un valor de QP previsto para el al menos un bloque;
medios para determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques, en el que determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques comprende: i) determinar si se debe realizar el filtrado de desbloqueo en un bloque adyacente (804, 806, 808, 810, 814, 816, 818, 820) ubicado adyacente a al menos un bloque y codificado mediante el uso de un modo de codificación con
pérdidas, en base al valor de QP distinto de cero asignado para el al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas, y
ii) determinar para evitar realizar el filtrado de desbloqueo en al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas; y
medios para realizar el filtrado de desbloqueo para cada uno de la pluralidad de bloques en base a las determinaciones respectivas.
13. Un dispositivo (14) para decodificar datos de vídeo de Codificación de vídeo de alta eficiencia, HEVC, comprendiendo el dispositivo:
medios para decodificar una pluralidad de bloques de datos de vídeo, en el que al menos un bloque de la pluralidad de bloques de datos de vídeo se codifica mediante el uso de un modo de codificación sin pérdidas, en el que decodificar el al menos un bloque mediante el uso del modo de codificación sin pérdidas comprende:
i) predecir el al menos un bloque para generar un bloque previsto para el modo de codificación sin pérdidas, ii) recibir datos de vídeo residuales no cuantificados de al menos un bloque en un flujo de bits recibido, y iii) decodificar el al menos un bloque en base al bloque previsto y los datos de vídeo residuales no cuantificados del al menos un bloque;
medios para asignar un valor de parámetro de cuantificación, QP, distinto de cero para el al menos un bloque en base a un valor de QP previsto para el al menos un bloque;
medios para determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques, en el que determinar si se debe realizar el filtrado de desbloqueo de cada uno de la pluralidad de bloques comprende: i) determinar si se debe realizar el filtrado de desbloqueo en un bloque adyacente (804, 806, 808, 810, 814, 816, 818, 820) ubicado adyacente a al menos un bloque y codificado mediante el uso de un modo de codificación con pérdidas, en base al valor de QP distinto de cero asignado para el al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas, y
ii) determinar para evitar realizar el filtrado de desbloqueo en al menos un bloque que se codifica mediante el uso de un modo de codificación sin pérdidas; y
medios para realizar el filtrado de desbloqueo para cada uno de la pluralidad de bloques en base a las determinaciones respectivas.
14. El dispositivo de la reivindicación 13, en el que asignar el valor de QP distinto de cero para el al menos un bloque comprende determinar el valor de QP distinto de cero asignado en base a un valor de Qp delta señalizado para el al menos un bloque, en el que el valor de QP delta representa una diferencia entre el valor de QP distinto de cero asignado y el valor de QP previsto.
15. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando son ejecutadas por un dispositivo de codificación, hacen que el dispositivo de codificación lleve a cabo un procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 3 y, cuando se ejecutan por un dispositivo de decodificación, hacen que el dispositivo de decodificación lleve a cabo un procedimiento de acuerdo con cualquiera de las reivindicaciones 4 a 11.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161549597P | 2011-10-20 | 2011-10-20 | |
US201261605705P | 2012-03-01 | 2012-03-01 | |
US201261606277P | 2012-03-02 | 2012-03-02 | |
US201261624901P | 2012-04-16 | 2012-04-16 | |
US201261641775P | 2012-05-02 | 2012-05-02 | |
US13/655,009 US9510020B2 (en) | 2011-10-20 | 2012-10-18 | Intra pulse code modulation (IPCM) and lossless coding mode deblocking for video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2902652T3 true ES2902652T3 (es) | 2022-03-29 |
Family
ID=48135969
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES15187686T Active ES2902652T3 (es) | 2011-10-20 | 2012-10-19 | Modulación de código intrapulso (IPCM) y desbloqueo del modo de codificación sin pérdidas para codificación de vídeo |
ES12783758T Active ES2866699T3 (es) | 2011-10-20 | 2012-10-19 | Desbloqueo de vídeo para el modo de codificación intra PCM (IPCM) |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES12783758T Active ES2866699T3 (es) | 2011-10-20 | 2012-10-19 | Desbloqueo de vídeo para el modo de codificación intra PCM (IPCM) |
Country Status (22)
Country | Link |
---|---|
US (2) | US9510020B2 (es) |
EP (2) | EP2988504B1 (es) |
JP (3) | JP5996663B2 (es) |
KR (1) | KR101592801B1 (es) |
CN (1) | CN103959778B (es) |
AU (2) | AU2012325950B2 (es) |
BR (1) | BR112014009416B1 (es) |
CA (1) | CA2851806C (es) |
DK (2) | DK2769547T3 (es) |
ES (2) | ES2902652T3 (es) |
HU (2) | HUE054438T2 (es) |
IL (1) | IL231775A (es) |
IN (1) | IN2014CN02628A (es) |
MY (1) | MY169391A (es) |
PL (2) | PL2769547T3 (es) |
PT (2) | PT2988504T (es) |
RU (1) | RU2587465C2 (es) |
SG (1) | SG11201401072TA (es) |
SI (2) | SI2988504T1 (es) |
TW (1) | TWI543629B (es) |
UA (1) | UA114494C2 (es) |
WO (1) | WO2013059628A1 (es) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI547152B (zh) | 2011-02-22 | 2016-08-21 | 太格文 Ii有限責任公司 | 影像解碼方法及影像解碼裝置 |
AU2012221588B2 (en) | 2011-02-22 | 2015-12-17 | Sun Patent Trust | Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus |
US9008180B2 (en) * | 2011-04-21 | 2015-04-14 | Intellectual Discovery Co., Ltd. | Method and apparatus for encoding/decoding images using a prediction method adopting in-loop filtering |
LT3661201T (lt) | 2011-07-19 | 2021-04-12 | Tagivan Ii Llc | Filtravimo būdas, vaizdo dekodavimo būdas, vaizdo kodavimo būdas, vaizdo dekodavimo aparatas, vaizdo kodavimo aparatas ir vaizdo kodavimo/dekodavimo aparatas |
US9510020B2 (en) | 2011-10-20 | 2016-11-29 | Qualcomm Incorporated | Intra pulse code modulation (IPCM) and lossless coding mode deblocking for video coding |
US9756327B2 (en) * | 2012-04-03 | 2017-09-05 | Qualcomm Incorporated | Quantization matrix and deblocking filter adjustments for video coding |
JP2013219607A (ja) * | 2012-04-10 | 2013-10-24 | Canon Inc | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム |
JP2013223036A (ja) * | 2012-04-13 | 2013-10-28 | Canon Inc | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム |
JP2013223096A (ja) * | 2012-04-16 | 2013-10-28 | Jvc Kenwood Corp | 画像符号化装置、画像符号化方法及び画像符号化プログラム |
JP2013223097A (ja) * | 2012-04-16 | 2013-10-28 | Jvc Kenwood Corp | 画像復号装置、画像復号方法及び画像復号プログラム |
US9706200B2 (en) | 2012-06-18 | 2017-07-11 | Qualcomm Incorporated | Unification of signaling lossless coding mode and pulse code modulation (PCM) mode in video coding |
US9591302B2 (en) * | 2012-07-02 | 2017-03-07 | Microsoft Technology Licensing, Llc | Use of chroma quantization parameter offsets in deblocking |
US9414054B2 (en) | 2012-07-02 | 2016-08-09 | Microsoft Technology Licensing, Llc | Control and use of chroma quantization parameter values |
US9973784B2 (en) * | 2012-09-20 | 2018-05-15 | Sony Corporation | Image processing device and method |
US20140192898A1 (en) * | 2013-01-04 | 2014-07-10 | Intel Corporation | Coding unit bit number limitation |
US20150036738A1 (en) | 2013-07-30 | 2015-02-05 | Texas Instruments Incorporated | Method and apparatus for real-time sao parameter estimation |
US9510002B2 (en) * | 2013-09-09 | 2016-11-29 | Apple Inc. | Chroma quantization in video coding |
WO2015057438A1 (en) * | 2013-10-14 | 2015-04-23 | Mediatek Singapore Pte. Ltd. | Method of residue differential pulse-code modulation for hevc range extension |
EP3761641A1 (en) * | 2013-11-15 | 2021-01-06 | MediaTek Inc. | Method of block-based adaptive loop filtering |
EP3078194B1 (en) * | 2014-01-02 | 2019-09-11 | HFI Innovation Inc. | Method and apparatus for intra prediction coding with boundary filtering control |
US9924175B2 (en) * | 2014-06-11 | 2018-03-20 | Qualcomm Incorporated | Determining application of deblocking filtering to palette coded blocks in video coding |
US10158866B2 (en) * | 2014-09-26 | 2018-12-18 | Qualcomm Incorporated | Parsing dependency reduction for palette index coding |
US9832467B2 (en) * | 2014-10-07 | 2017-11-28 | Qualcomm Incorporated | Deblock filtering for intra block copying |
US10136133B2 (en) * | 2014-11-11 | 2018-11-20 | Dolby Laboratories Licensing Corporation | Rate control adaptation for high-dynamic range images |
EP3298783B1 (en) | 2016-04-15 | 2020-11-18 | Magic Pony Technology Limited | Motion compensation using temporal picture interpolation |
WO2017178827A1 (en) * | 2016-04-15 | 2017-10-19 | Magic Pony Technology Limited | In-loop post filtering for video encoding and decoding |
US10567808B2 (en) * | 2016-05-25 | 2020-02-18 | Arris Enterprises Llc | Binary ternary quad tree partitioning for JVET |
WO2018018486A1 (en) | 2016-07-28 | 2018-02-01 | Mediatek Inc. | Methods of reference quantization parameter derivation for signaling of quantization parameter in quad-tree plus binary tree structure |
KR20180021942A (ko) * | 2016-08-22 | 2018-03-06 | 광운대학교 산학협력단 | 보안 카메라용 영상 코덱에서 블록 분할 정보 전송 방법 및 장치 |
RU2721160C1 (ru) * | 2016-10-11 | 2020-05-18 | ЭлДжи ЭЛЕКТРОНИКС ИНК. | Способ и устройство декодирования изображения на основе интрапредсказания в системе кодирования изображения |
US10999602B2 (en) | 2016-12-23 | 2021-05-04 | Apple Inc. | Sphere projected motion estimation/compensation and mode decision |
CA3237826A1 (en) * | 2017-01-03 | 2018-07-12 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Image processing method and apparatus therefor |
US11259046B2 (en) | 2017-02-15 | 2022-02-22 | Apple Inc. | Processing of equirectangular object data to compensate for distortion by spherical projections |
US10924747B2 (en) | 2017-02-27 | 2021-02-16 | Apple Inc. | Video coding techniques for multi-view video |
US11093752B2 (en) | 2017-06-02 | 2021-08-17 | Apple Inc. | Object tracking in multi-view video |
CN110692103A (zh) | 2017-06-08 | 2020-01-14 | 沟口智 | 系统的登录方法 |
US10754242B2 (en) | 2017-06-30 | 2020-08-25 | Apple Inc. | Adaptive resolution and projection format in multi-direction video |
US20190005709A1 (en) * | 2017-06-30 | 2019-01-03 | Apple Inc. | Techniques for Correction of Visual Artifacts in Multi-View Images |
SG11202006004PA (en) * | 2018-01-02 | 2020-07-29 | Samsung Electronics Co Ltd | Encoding method and apparatus therefor, and decoding method and apparatus therefor |
US11297351B2 (en) * | 2018-03-29 | 2022-04-05 | Arris Enterprises Llc | System and method for deblocking HDR content |
JP7278719B2 (ja) | 2018-06-27 | 2023-05-22 | キヤノン株式会社 | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム |
US12034977B2 (en) * | 2018-06-28 | 2024-07-09 | Electronics And Telecommunications Research Institute | Video encoding/decoding method and device, and recording medium for storing bitstream |
FR3086487A1 (fr) * | 2018-09-21 | 2020-03-27 | Orange | Procedes et dispositifs de codage et de decodage d'un flux de donnees representatif d'au moins une image. |
US11616962B2 (en) * | 2019-07-15 | 2023-03-28 | Tencent America LLC | Method and apparatus for video coding |
KR20220058534A (ko) | 2019-09-14 | 2022-05-09 | 바이트댄스 아이엔씨 | 크로마 디블로킹 필터링을 위한 양자화 파라미터 |
WO2021055138A1 (en) * | 2019-09-20 | 2021-03-25 | Alibaba Group Holding Limited | Quantization parameter signaling in video processing |
CN114651442A (zh) | 2019-10-09 | 2022-06-21 | 字节跳动有限公司 | 视频编解码中的跨分量适应性回路滤波 |
EP4029264A4 (en) * | 2019-10-14 | 2022-11-23 | ByteDance Inc. | JOINT CODING OF CHROMINANCE RESIDUE AND FILTERING IN VIDEO PROCESSING |
US11368723B2 (en) | 2019-10-22 | 2022-06-21 | Tencent America LLC | Signaling of coding tools for encoding a video component as monochrome video |
EP4066506A4 (en) * | 2019-11-27 | 2023-12-06 | Beijing Dajia Internet Information Technology Co., Ltd. | DEBLOCKING FILTER FOR VIDEO CODING |
EP4055827A4 (en) | 2019-12-09 | 2023-01-18 | ByteDance Inc. | USING QUANTIFICATION GROUPS IN VIDEO CODING |
WO2021138293A1 (en) | 2019-12-31 | 2021-07-08 | Bytedance Inc. | Adaptive color transform in video coding |
US11516514B2 (en) * | 2020-03-27 | 2022-11-29 | Tencent America LLC | High level control for deblocking operations |
US20210306653A1 (en) * | 2020-03-31 | 2021-09-30 | Alibaba Group Holding Limited | Methods for signaling residual coding method of transform skip blocks |
US11979572B2 (en) * | 2020-06-22 | 2024-05-07 | Apple Inc. | Adaptive quantizer design for video coding |
US11967118B1 (en) * | 2020-11-30 | 2024-04-23 | Amazon Technologies, Inc. | Hybrid codec |
US11995871B1 (en) | 2020-11-30 | 2024-05-28 | Amazon Technologies, Inc. | Lossy block repair |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4359273B2 (ja) * | 1995-12-20 | 2009-11-04 | 三洋電機株式会社 | 符号化モード選択方法 |
US7460596B2 (en) | 2004-04-29 | 2008-12-02 | Mediatek Incorporation | Adaptive de-blocking filtering apparatus and method for MPEG video decoder |
JP4828925B2 (ja) | 2005-11-30 | 2011-11-30 | パナソニック株式会社 | 符号化装置 |
WO2007116551A1 (ja) | 2006-03-30 | 2007-10-18 | Kabushiki Kaisha Toshiba | 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法 |
JP2008022383A (ja) | 2006-07-13 | 2008-01-31 | Matsushita Electric Ind Co Ltd | 画像符号化装置 |
JP4747975B2 (ja) | 2006-07-14 | 2011-08-17 | ソニー株式会社 | 画像処理装置および方法、プログラム、並びに、記録媒体 |
KR101356207B1 (ko) | 2006-10-13 | 2014-02-03 | 삼성전자주식회사 | 데이터 인코딩/디코딩 방법 및 장치 |
US7991236B2 (en) | 2006-10-16 | 2011-08-02 | Nokia Corporation | Discardable lower layer adaptations in scalable video coding |
US9277243B2 (en) | 2006-11-08 | 2016-03-01 | Thomson Licensing | Methods and apparatus for in-loop de-artifact filtering |
US20080170793A1 (en) | 2007-01-12 | 2008-07-17 | Mitsubishi Electric Corporation | Image encoding device and image encoding method |
US8767834B2 (en) | 2007-03-09 | 2014-07-01 | Sharp Laboratories Of America, Inc. | Methods and systems for scalable-to-non-scalable bit-stream rewriting |
US8477847B2 (en) | 2007-12-17 | 2013-07-02 | Vixs Systems, Inc. | Motion compensation module with fast intra pulse code modulation mode decisions and methods for use therewith |
US9225996B2 (en) * | 2007-12-19 | 2015-12-29 | Vixs Systems, Inc. | Motion refinement engine with flexible direction processing and methods for use therewith |
US8542730B2 (en) | 2008-02-22 | 2013-09-24 | Qualcomm, Incorporated | Fast macroblock delta QP decision |
JP5007259B2 (ja) * | 2008-03-27 | 2012-08-22 | ルネサスエレクトロニクス株式会社 | 画像符号化装置 |
KR101680915B1 (ko) | 2008-11-25 | 2016-11-29 | 톰슨 라이센싱 | 비디오 인코딩 및 디코딩을 위한 희소성-기반 아티팩트 제거 필터링 방법 및 장치 |
EP2357825A4 (en) | 2008-12-08 | 2012-06-20 | Panasonic Corp | APPARATUS AND METHOD FOR IMAGE DECODING |
US20110080957A1 (en) | 2009-10-07 | 2011-04-07 | Vixs Systems, Inc. | Encoding adaptive deblocking filter methods for use therewith |
US8712173B2 (en) | 2010-03-12 | 2014-04-29 | Mediatek Singapore Pte. Ltd. | Methods for processing 2Nx2N block with N being positive integer greater than four under intra-prediction mode and related processing circuits thereof |
CA2810897C (en) | 2010-10-05 | 2015-11-24 | General Instrument Corporation | Method and apparatus for feature based video coding |
AU2012221588B2 (en) | 2011-02-22 | 2015-12-17 | Sun Patent Trust | Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus |
LT3661201T (lt) | 2011-07-19 | 2021-04-12 | Tagivan Ii Llc | Filtravimo būdas, vaizdo dekodavimo būdas, vaizdo kodavimo būdas, vaizdo dekodavimo aparatas, vaizdo kodavimo aparatas ir vaizdo kodavimo/dekodavimo aparatas |
US9510020B2 (en) | 2011-10-20 | 2016-11-29 | Qualcomm Incorporated | Intra pulse code modulation (IPCM) and lossless coding mode deblocking for video coding |
JP2013219680A (ja) * | 2012-04-11 | 2013-10-24 | Jvc Kenwood Corp | 動画像復号装置、動画像復号方法及び動画像復号プログラム |
-
2012
- 2012-10-18 US US13/655,009 patent/US9510020B2/en active Active
- 2012-10-19 PL PL12783758T patent/PL2769547T3/pl unknown
- 2012-10-19 PL PL15187686T patent/PL2988504T3/pl unknown
- 2012-10-19 ES ES15187686T patent/ES2902652T3/es active Active
- 2012-10-19 SI SI201231971T patent/SI2988504T1/sl unknown
- 2012-10-19 RU RU2014120170/07A patent/RU2587465C2/ru active
- 2012-10-19 PT PT151876869T patent/PT2988504T/pt unknown
- 2012-10-19 EP EP15187686.9A patent/EP2988504B1/en active Active
- 2012-10-19 MY MYPI2014000954A patent/MY169391A/en unknown
- 2012-10-19 BR BR112014009416-0A patent/BR112014009416B1/pt active IP Right Grant
- 2012-10-19 JP JP2014537299A patent/JP5996663B2/ja active Active
- 2012-10-19 ES ES12783758T patent/ES2866699T3/es active Active
- 2012-10-19 IN IN2628CHN2014 patent/IN2014CN02628A/en unknown
- 2012-10-19 PT PT127837581T patent/PT2769547T/pt unknown
- 2012-10-19 KR KR1020147013443A patent/KR101592801B1/ko active IP Right Grant
- 2012-10-19 TW TW101138809A patent/TWI543629B/zh active
- 2012-10-19 EP EP12783758.1A patent/EP2769547B1/en active Active
- 2012-10-19 AU AU2012325950A patent/AU2012325950B2/en active Active
- 2012-10-19 CA CA2851806A patent/CA2851806C/en active Active
- 2012-10-19 HU HUE12783758A patent/HUE054438T2/hu unknown
- 2012-10-19 DK DK12783758.1T patent/DK2769547T3/da active
- 2012-10-19 UA UAA201405353A patent/UA114494C2/uk unknown
- 2012-10-19 SG SG11201401072TA patent/SG11201401072TA/en unknown
- 2012-10-19 CN CN201280051650.8A patent/CN103959778B/zh active Active
- 2012-10-19 WO PCT/US2012/061072 patent/WO2013059628A1/en active Application Filing
- 2012-10-19 SI SI201231912T patent/SI2769547T1/sl unknown
- 2012-10-19 DK DK15187686.9T patent/DK2988504T3/da active
- 2012-10-19 HU HUE15187686A patent/HUE057724T2/hu unknown
-
2014
- 2014-03-27 IL IL231775A patent/IL231775A/en active IP Right Grant
-
2015
- 2015-10-29 US US14/927,150 patent/US9560383B2/en active Active
- 2015-11-24 JP JP2015228806A patent/JP6224056B2/ja active Active
-
2016
- 2016-05-19 JP JP2016100514A patent/JP6174196B2/ja active Active
- 2016-07-20 AU AU2016206306A patent/AU2016206306C1/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2902652T3 (es) | Modulación de código intrapulso (IPCM) y desbloqueo del modo de codificación sin pérdidas para codificación de vídeo | |
ES2864623T3 (es) | Codificación de parámetros de cuantificación (QP) en codificación de video | |
KR101788370B1 (ko) | 비디오 코딩에서 블록화제거 필터 파라미터들의 시그널링 | |
EP3311571B1 (en) | Intra prediction and intra mode coding | |
KR101607788B1 (ko) | 비디오 코딩에서 슬라이스 경계들 또는 타일 경계들 주위의 루프 필터링 | |
EP2751999B1 (en) | Intra prediction mode coding with directional partitions | |
KR102452744B1 (ko) | 큰 코딩 트리 유닛들을 위한 콘텍스트들 | |
KR101773240B1 (ko) | 코딩된 블록 플래그 코딩 | |
KR101622058B1 (ko) | 비디오 코딩을 위한 모션 벡터 예측자 후보 클리핑 제거 | |
EP2622577B1 (en) | Video coding using intra-prediction | |
KR101807913B1 (ko) | 비디오 코딩에서 코드북을 사용한 루프 필터 파라미터들의 코딩 | |
KR101719930B1 (ko) | 비디오 코딩을 위한 장기 레퍼런스 픽처들의 시그널링 | |
KR20180019565A (ko) | 인트라 예측 및 인트라 모드 코딩 | |
KR20170117062A (ko) | 코딩 트리 유닛 (ctu) 레벨 적응적 루프 필터 (alf) | |
KR20180018570A (ko) | 인트라 예측 및 인트라 모드 코딩 | |
BR112014011063B1 (pt) | Redução de contexto para codificação aritmética binária adaptativa de contexto | |
KR20150036169A (ko) | 타일들 및 파면 병렬 프로세싱 | |
KR20150008412A (ko) | 비디오 코딩에서 양자화 매트릭스를 위한 균일한 입도 | |
BR112014024749B1 (pt) | Método e aparelho para processar dados de vídeo e mídia de armazenamento não transitória legível por computador |