ES2980470T3 - Procesamiento paralelo de frente de onda para mosaico, ladrillo y segmento - Google Patents

Procesamiento paralelo de frente de onda para mosaico, ladrillo y segmento Download PDF

Info

Publication number
ES2980470T3
ES2980470T3 ES20801493T ES20801493T ES2980470T3 ES 2980470 T3 ES2980470 T3 ES 2980470T3 ES 20801493 T ES20801493 T ES 20801493T ES 20801493 T ES20801493 T ES 20801493T ES 2980470 T3 ES2980470 T3 ES 2980470T3
Authority
ES
Spain
Prior art keywords
ctb
video
brick
bit
segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES20801493T
Other languages
English (en)
Inventor
Fnu Hendry
Ye-Kui Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2980470T3 publication Critical patent/ES2980470T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

Un método de decodificación incluye encontrar un bit de final de mosaico con un primer valor y bits de alineación de bytes en un flujo de bits de vídeo, que indican que un bloque de árbol de codificación (CTB) actual es un último CTB en un mosaico; encontrar un bit de fila de final de CTB con el primer valor y los bits de alineación de bytes en el flujo de bits de vídeo, que indican que el procesamiento paralelo de forma de onda (WPP) está habilitado y que el CTB actual es el último CTB en una fila de CTB pero no el último CTB en el mosaico; y reconstruir la pluralidad de CTB en el mosaico basándose en el bit de final de mosaico con el primer valor, el bit de fila de final de CTB con el primer valor y los bits de alineación de bytes. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Procesamiento paralelo de frente de onda para mosaico, ladrillo y segmento
Campo de la invención
En general, esta descripción describe técnicas que soportan procesamiento paralelo de frente de onda (WPP) en codificación de video. De manera más específica, esta descripción impide la duplicación innecesaria de bits y la alineación de bytes en WPP.
Antecedentes de la invención
La cantidad de datos de video necesarios para mostrar incluso un video relativamente corto puede ser sustancial, lo cual puede dar como resultado dificultades cuando los datos han de ser transmitidos o comunicados de otra manera a través de una red de comunicaciones con capacidad de ancho de banda limitado. Por lo tanto, los datos de video generalmente son comprimidos antes de ser comunicados a través de redes de telecomunicaciones modernas. El tamaño de un video también podría ser un problema cuando el video es almacenado en un dispositivo de almacenamiento debido a que los recursos de memoria pueden ser limitados. Los dispositivos de compresión de video con frecuencia utilizan software y/o hardware en la fuente para codificar los datos de video antes de la transmisión o almacenamiento, disminuyendo así la cantidad de datos necesarios para representar imágenes de video digitales. Los datos comprimidos son recibidos luego en el destino por un dispositivo de descompresión de video que decodifica los datos de video. Con recursos de red limitados y demandas cada vez mayores de calidad de video superior, son deseables técnicas de compresión y descompresión mejoradas que mejoren la relación de compresión con poco a ningún sacrificio en la calidad de la imagen.
BROSS B ET AL: “Versatile Video Coding (Draft 5)” ("Codificación de video versátil (Borrador 5)"), 14. REUNIÓN del JVET; 20190319 - 20190327; GINEBRA; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG. 16) (EL EQUIPO MIXTO DE EXPLORACIÓN DE VÍDEO DE ISO/CEI JTC1/SC29/WG11 Y UIT-T SG.16), n. ° JVET-N1001, describe un método general de partición en la sección 6.3.1.
IKAI T ET AL: "AHG12: Wavefront processing in a tile group” (“Procesamiento de frente de onda en un grupo de mosaicos"), 125. REUNIÓN MPEG; 20190114 - 20190118; MARRAKECH; (MOTION PICTURE EXPERT GROUP O ISO/IEC JTC1/SC29/WG11) (GRUPO DE EXPERTOS DE IMÁGENES EN MOVIMIENTO O ISO/CEI JTC1/SC29/WG11), n. ° m453243 de enero de 2019 (2019-01-03), describe un método WPP para un grupo de mosaicos para permitir el paralelismo de filas de la CTU de frente de onda.
Compendio
La presente invención es definida por el conjunto de reivindicaciones adjuntas. A continuación, las partes de la descripción y del dibujo que se refieren a realizaciones, ejemplos o implementaciones, que no están cubiertas por las reivindicaciones, no se presentan como realizaciones de la invención, sino como ejemplos ilustrativos útiles para comprender la invención.
Un primer aspecto se refiere a un método para decodificar una corriente de bits de video codificada implementada por un decodificador de video es proporcionado de acuerdo con VVC según la reivindicación 1. El método incluye recibir, mediante el decodificador de video, la corriente de bits de video codificada, en donde la corriente de bits de video codificada contiene una imagen, incluyendo la imagen uno o más segmentos que tienen solo un mosaico, y conteniendo cada mosaico una pluralidad de bloques de árbol de codificación (CTB); analizar, mediante el decodificador de video, un conjunto de parámetros para determinar si está habilitado un procesamiento paralelo de frente onda para la imagen actual y/o para el segmento actual; analizar, mediante el decodificador de video, datos de segmento del segmento actual para obtener ladrillos y CTB dentro de cada ladrillo; analizar, mediante el decodificador de video un bit del final de un mosaico con un primer valor y bits de alineación de bytes en la corriente de bits de video codificada, indicando el bit de final de mosaico con el primer valor y los bits de alineación de bytes que un CTB actual procedente de la pluralidad de CTB es un último CTB en un ladrillo; analizar, mediante el decodificador de video, un bit de final de fila de CTB con el primer valor, y los bits de alineación de bytes en la corriente de bits de video codificada, indicando el bit de final de fila de CTB con el primer valor que el procesamiento paralelo de forma de onda (WPP) está habilitado y que el CTB actual de la pluralidad de CTB es el último CTB en una fila de CTB pero no el último CTB en el ladrillo; y reconstruir, mediante del decodificador de video, la pluralidad de CTB en el ladrillo basándose en el bit de final de ladrillo con el primer valor, el bit de final de fila de CTB con el primer valor, y los bits de alineación de bytes.
El método proporciona técnicas que impiden la duplicación de señalización y alineación de bytes en WPP. Al eliminar la duplicación de señalización y alineación de bytes en WPP, se reducen el número de bits utilizados para señalizar el final de una fila/mosaico y el número de bits utilizados como relleno. Al reducir el número de bits necesarios para WPP, el codificador/decodificador (también conocido como “códec”) en codificación de video se mejora con relación a los códecs actuales. Como una cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o visualizan los videos.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el bit de final de mosaico es designado end_of_tile_one_bit.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el bit de final de fila de CTB es designado end_of_subset_bit.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el WPP es habilitado por un indicador dispuesto en un conjunto de parámetros.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el WPP es habilitado por un indicador designado como entropy_coding_sync_enabled_flag.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el primer valor es uno (1) cuando el WPP está habilitado.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto proporciona mostrar una imagen generada basándose en la pluralidad de CTB como reconstruida.
Un segundo aspecto se refiere a que se proporciona un método de codificación de una corriente de bits de video implementada por un codificador de video - según VVC según la reivindicación 8. El método incluye dividir en particiones, mediante el codificador de video, una imagen en uno o más segmentos, conteniendo cada segmento solo un ladrillo, conteniendo cada ladrillo una pluralidad de bloques de árbol de codificación (CTB); codificar, mediante el codificador de vídeo, los datos de corte del corte actual para obtener bloques y CTU dentro de cada bloque; codificar, mediante el codificador de vídeo, un bit de fin de bloque con un primer valor y bits de alineación de bytes en el flujo de bits de vídeo cuando un CTB actual de la pluralidad de CTBs es un último CTB en un ladrillo; codificar, mediante el codificador de video, un bit de final de fila de CTB con el primer valor y bits de alineación de bytes en la corriente de bits de video cuando está habilitado el procesamiento paralelo de frente de onda (WPP) y cuando el CTB actual es el último CTB en una fila de CTB pero no el último CTB en el ladrillo.
El método proporciona técnicas que impiden la duplicación de señalización y alineación de bytes en WPP. Al eliminar la duplicación de señalización y alineación de bytes en WPP, se reducen el número de bits utilizados para señalizar el final de una fila/mosaico y el número de bits utilizados como relleno. Al reducir el número de bits necesarios para WPP, el codificador/decodificador (también conocido como “códec”) en la codificación de video se mejora con relación a los códecs actuales. Como una cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o visualizan videos.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el bit de final de mosaico es designado end_of_tile_one_bit.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el bit de final de fila de CTB es designado end_of_subset_bit.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el WPP es habilitado por un indicador colocado en un conjunto de parámetros.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el WPP es habilitado por un indicador designado como entropy_coding_sync_enabled_flag.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el primer valor es uno (1) cuando el WPP está habilitado.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece la transmisión de la corriente de bits de video hacia el decodificador de video.
Un tercer aspecto se refiere a un dispositivo de decodificación que no está reivindicado.
El dispositivo de decodificación incluye un receptor configurado para recibir una corriente de bits de video codificada; una memoria acoplada al receptor, almacenando la memoria instrucciones; y un procesador acoplado a la memoria, estando el procesador configurado para ejecutar las instrucciones para hacer que el dispositivo de decodificación: recibir la corriente de bits de video codificada, en donde la corriente de bits de video codificada contiene una imagen, incluyendo la imagen uno o más segmentos que tienen solo un mosaico, conteniendo cada mosaico solo un ladrillo, y conteniendo cada ladrillo una pluralidad de bloques de árbol de codificación (CTB); analizar un conjunto de parámetros para determinar si está habilitado el procesamiento paralelo de frente de onda para la imagen actual y/o para el segmento actual; analizar datos de segmento del segmento actual para obtener ladrillos y los CTB dentro de cada ladrillo; analizar un bit de final de un mosaico con un primer valor y los bits de alineación de bytes en la corriente de bits de video codificada, indicando el bit de final de mosaico con el primer valor y los bits de alineación de bytes que un CTB actual procedente de la pluralidad de CTB es un último CTB en un ladrillo; analizar un bit de final de fila de CTB con el primer valor y los bits de alineación de bytes en la corriente de bits de video codificada, indicando el bit de final de fila de CTB con el primer valor que el procesamiento paralelo de forma de onda (WPP) está habilitado y que el CTB actual procedente de la pluralidad de CTB es el último CTB en una fila de CTB pero no el último cTb en el ladrillo; y reconstruir la pluralidad de CTB en el ladrillo basándose en el bit de final de ladrillo con el primer valor, el bit de final de fila de CTB con el primer valor, y los bits de alineación de bytes.
El dispositivo de decodificación proporciona técnicas que impiden la duplicación de señalización y alineación de bytes en WPP. Al eliminar la duplicación de señalización y alineación de bytes en WPP, se reducen el número de bits utilizados para señalizar el final de una fila/mosaico y el número de bits utilizados como relleno. Al reducir el número de bits necesarios para WPP, el codificador/decodificador (también conocido como “códec”) en la codificación de video es mejorado con relación a los códecs actuales. Como una cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o visualizan videos.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el bit de final de mosaico es designado end_of_tile_one_bit, en donde el bit de final de fila de CTB es designado end_of_subset_bit, y el primer valor es uno.
Un cuarto aspecto se refiere a un dispositivo de codificación que no está reivindicado.
El dispositivo de codificación incluye una memoria que contiene instrucciones; un procesador acoplado a la memoria, estando el procesador configurado para implementar las instrucciones para hacer que el dispositivo de codificación: divida en particiones una imagen en uno o más segmentos, conteniendo cada segmento solo un ladrillo, conteniendo cada ladrillo una pluralidad de bloques de árbol de codificación (CTB); codificar un conjunto de parámetros para determinar si está habilitado el procesamiento paralelo de frente de onda para la imagen actual y/o para el segmento actual; codificar datos de segmento del segmento actual para obtener ladrillos y las CTU dentro de cada ladrillo, codificar un bit de final de ladrillo con un primer valor y bits de alineación de bytes en la corriente de bits de video cuando un CTB actual procedente de la pluralidad de CTB es un último cTb en un ladrillo; codificar un bit de final de fila de CTB con el primer valor y bits de alineación de bytes en la corriente de bits de video cuando el procesamiento paralelo de forma de onda (WPP) está habilitado y cuando el CTB actual es el último CTB en una fila de CTB pero no el último CTB en el ladrillo. El dispositivo de decodificación proporciona técnicas que impiden la duplicación de señalización y alineación de bytes en WPP. Al eliminar la duplicación de señalización y alineación de bytes en WPP, se reducen el número de bits utilizados para señalizar el final de una fila/mosaico y el número de bits utilizados como relleno. Al reducir el número de bits necesarios para WPP, el codificador/decodificador (también conocido como “códec”) en la codificación de video es mejorado con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o visualizan videos.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto proporciona un dispositivo de codificación que además comprende un transmisor acoplado al procesador, estando el transmisor configurado para transmitir la corriente de bits de video hacia un decodificador de video.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto establece que el bit de final de mosaico es designado end_of_tile_one_bit, en donde el bit de final de fila de CTB es designado end_of_subset_bit, y el primer valor es uno.
Un quinto aspecto se refiere a un aparato de codificación que no está reivindicado.
El aparato de codificación incluye un receptor configurado para recibir una imagen para codificar o recibir una corriente de bits a decodificar; un transmisor acoplado al receptor, estando el transmisor configurado para transmitir la corriente de bits a un decodificador o transmitir una imagen decodificada a un dispositivo de visualización; una memoria acoplada al menos a uno del receptor o del transmisor, estando la memoria configurada para almacenar instrucciones; y un procesador acoplado a la memoria, estando el procesador configurado para ejecutar las instrucciones almacenadas en la memoria para realizar cualquiera de los métodos descritos en la presente memoria.
El aparato de codificación proporciona técnicas que impiden la duplicación de señalización y alineación de bytes en WPP. Al eliminar la duplicación de señalización y alineación de bytes en WPP, se reducen el número de bits utilizados para señalizar el final de una fila/mosaico y el número de bits utilizados como relleno. Al reducir el número de bits necesarios para WPP, el codificador/decodificador (también conocido como “códec”) en la codificación de video es mejorado con relación a códecs actuales. Como un asunto práctico, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o visualizan videos.
Opcionalmente, en cualquiera de los aspectos precedentes, otra implementación del aspecto proporciona un dispositivo de visualización configurado para mostrar una imagen.
Un sexto aspecto se refiere a un sistema que no está reivindicado. El sistema incluye un codificador; y un decodificador en comunicación con el codificador, en donde el codificador o el decodificador incluyen el dispositivo de decodificación, el dispositivo de codificación, o el aparato de codificación descrito en la presente memoria.
El sistema proporciona técnicas que impiden la duplicación de señalización y alineación de bytes en WPP. Al eliminar la duplicación de señalización y alineación de bytes en WPP, se reducen el número de bits utilizados para señalizar el final de una fila/mosaico y el número de bits utilizados como relleno. Al reducir el número de bits necesarios para WPP, el codificador/decodificador (también conocido como “códec”) en la codificación de video es mejorado con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o visualizan videos.
Un séptimo aspecto se refiere a un medio para codificar que no está reivindicado. Los medios para codificar incluyen medios de recepción configurados para recibir una imagen a codificar o para recibir una corriente de bits a decodificar; medios de transmisión acoplados a los medios de recepción, estando los medios de transmisión configurados para transmitir la corriente de bits a un medio de decodificación o transmitir una imagen decodificada a un medio de visualización; medios de almacenamiento acoplados al menos a uno de los medios de recepción o de los medios de transmisión, estando los medios de almacenamiento configurados para almacenar instrucciones; y medios de procesamiento acoplados a los medios de almacenamiento, estando los medios de procesamiento configurados para ejecutar las instrucciones almacenadas en los medios de almacenamiento para ejecutar cualquiera de los métodos descritos en la presente memoria.
Los medios para codificación proporcionan técnicas que evitan la duplicación de señalización y alineación de bytes en WPP. Al eliminar la duplicación de señalización y alineación de bytes en WPP, se reducen el número de bits utilizados para señalizar el final de una fila/mosaico y el número de bits utilizados como relleno. Al reducir el número de bits necesarios para WPP, el codificador/decodificador (también conocido como “códec”) en la codificación de video es mejorado con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o visualizan videos.
Breve descripción de las figuras
Para una comprensión más completa de esta descripción, a continuación se hace referencia a la siguiente breve descripción, tomada en conexión con los dibujos adjuntos y la descripción detallada, en donde números de referencia similares representan partes similares.
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación ejemplar que puede utilizar técnicas de codificación de video.
La figura 2 es un diagrama de bloques que ilustra un codificador de video ejemplar que puede implementar técnicas de codificación de video.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador de video que puede implementar técnicas de codificación de video.
La figura 4 ilustra una corriente de bits de video configurada para implementar procesamiento paralelo de frente de onda.
La figura 5 es una realización de un método para decodificar una corriente de bits de video codificada.
La figura 6 es una realización de un método para codificar una corriente de bits de video codificada.
La figura 7 es un diagrama esquemático de un dispositivo de codificación de video.
La figura 8 es un diagrama esquemático de una realización de un medio para codificación.
Descripción detallada
Debe entenderse al comienzo que aunque a continuación se proporciona una implementación ilustrativa de una o más realizaciones, los sistemas y/o métodos descritos pueden ser implementados utilizando cualquier número de técnicas, ya sea actualmente conocidas o en existencia. La descripción de ninguna manera debe quedar limitada a las implementaciones ilustrativas, dibujos y técnicas ilustradas a continuación, incluyendo los diseños ejemplares e implementaciones ilustradas y descritas en la presente memoria, pero se puede modificar dentro del alcance de las reivindicaciones adjuntas.
Los siguientes términos son definidos a continuación a menos que se utilicen en un contexto contario en la presente memoria. Específicamente, las siguientes definiciones están destinadas a proporcionar claridad adicional a la presente descripción. No obstante, se pueden describir términos de manera diferente en diferentes contextos. Por consiguiente, las siguientes definiciones deben ser consideradas como un complemento y no deben ser consideradas para limitar algunas otras definiciones de descripciones proporcionadas para dichos términos en la presente memoria.
Una corriente de bits es una secuencia de bits que incluye datos de video que son comprimidos para transmisión entre un codificador y un decodificador. Un codificador es un dispositivo que está configurado para emplear procesos de codificación para comprimir datos de video en una corriente de bits. Un decodificador es un dispositivo que está configurado para emplear procesos de decodificación para reconstruir datos de video procedentes de una corriente de bits para visualización. Una imagen es una imagen completa que está destinada para visualización completa o parcial de un usuario en un instante correspondiente en una secuencia de video. Una imagen de referencia es una imagen que contiene muestras de referencia que pueden ser utilizadas cuando se codifican otras imágenes por referencia de acuerdo con inter-predicción. Una imagen codificada es una representación de una imagen que es codificada de acuerdo con inter-predicción o intra-predicción, está contenida en una sola unidad de acceso en una corriente de bits, y contiene un conjunto completo de las unidades de árbol de codificación (CTU) de la imagen. Un segmento es una partición de una imagen que contiene un número entero de mosaicos completos o un número entero de filas de CTU completas consecutivas dentro de un mosaico de la imagen, donde el segmento y todas las sub-divisiones están exclusivamente contenidas en una sola unidad de capa de abstracción de red (NAL). Un segmento de referencia es un segmento de una imagen de referencia que contiene muestras de referencia o es utilizada cuando se codifican otros segmentos por referencia de acuerdo con inter-predicción. Una cabecera de segmento es una parte de un segmento codificado que contiene elementos de datos pertenecientes a todos los mosaicos o filas de CTU dentro de un mosaico representado en el segmento. Un punto de entrada es una ubicación de bit en una corriente de bits que contiene un primer bit de datos de video para un subconjunto correspondiente de un segmento codificado. Un desplazamiento es una distancia en bits entre una ubicación de bit conocida y un punto de entrada. Un subconjunto es una sub-división de un conjunto, tal como un mosaico, una fila de CTU, o CTU. Una CTU es un subconjunto de un segmento. Una unidad de árbol de codificación (CTU) es un grupo de muestras de un tamaño predefinido que puede ser dividido en particiones por un árbol de codificación. Las CTU son divididas para cada componente de luma/croma en bloques de árbol de codificación (CTB). Un CTB puede ser de 64*64, 32*32, o 16*16 con un tamaño de bloque de pixel más grande generalmente incrementando la eficiencia de codificación. Los CTB son entonces divididos en una o más unidades de codificación (CU), de manera que el tamaño de CTU también es el tamaño de unidad de codificación más grande.
Una fila de CTU es un grupo de CTU que se extienden horizontalmente entre un límite de segmento izquierdo y un límite de segmento derecho. Una fila de CTB es un grupo de CTB que se extienden horizontalmente entre un límite de segmento izquierdo y un límite de segmento derecho. Una columna de CTU es un grupo de CTU que se extienden verticalmente entre un límite de segmento superior y un límite de segmento inferior. Una columna de CTB es un grupo de los CTB que se extienden verticalmente entre un límite de segmento superior y un límite de segmento inferior. Un bit de final de fila de CTB es un bit al final de la fila de CTB. Los bits de alineación de bytes son bits añadidos al final de un subconjunto de datos, fila de CTU, fila de CTB, mosaico, etc., como relleno. Los bits de alineación de bytes pueden ser utilizados para tener en cuenta o compensar el retraso introducido por el WPP. El WPP es un mecanismo de codificación de filas de CTU de un segmento con un retraso para permitir que cada fila sea decodificada en paralelo por diferentes cadenas de código. Una dirección de segmento es una ubicación identificable de un segmento o sub-porción del mismo.
En la presente memoria se utilizan los siguientes acrónimos: Bloque de Árbol de Codificación (CTB), Unidad de Árbol de Codificación (CTU), Unidad de Codificación (CU), Secuencia de Video Codificado (CVS), Equipo Conjunto de Expertos de Video (JVET), Conjunto de Mosaicos de Movimiento Restringido (MCTS), Unidad de Transferencia Máxima (MTU), Capa de Abstracción de Red (NAL), Recuento de Orden de Imágenes (POC), Carga Útil de Secuencia de Bytes Sin Procesar (RBSP), Conjunto de Parámetros de Secuencia (SPS), Unidad de Sub-Imagen (SPU), Codificación de Video Versátil (VVC), y Borrador de Trabajo (WD).
La figura 1 es un diagrama de bloques que ilustra un sistema 10 de codificación ejemplar que puede utilizar técnicas de codificación de video como se describe en la presente memoria. Como se muestra en la figura 1, el sistema 10 de codificación incluye un dispositivo fuente 12 que proporciona datos de video codificados que han de ser decodificados en un momento posterior por un dispositivo destino 14. En particular, el dispositivo fuente 12 puede proporcionar los datos de video al dispositivo destino 14 a través de un medio 16 legible por ordenador. El dispositivo fuente 12 y el dispositivo destino 14 pueden comprender cualquiera de un amplio margen de dispositivos, incluyendo ordenadores de escritorio, ordenadores portátiles (por ejemplo, un portátil), ordenadores de tableta, decodificadores, equipos telefónicos tales como los denominados teléfonos “inteligentes”, los denominados teclados “inteligentes”, televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de juegos de video, dispositivo de transmisión de video, o similar. En algunos casos, el dispositivo fuente 12 y el dispositivo destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo destino 14 puede recibir los datos de video codificados que han de ser decodificados a través del medio 16 legible por ordenador. El medio 16 legible por ordenador puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de video codificados desde el dispositivo fuente 12 al dispositivo destino 14. En un ejemplo, el medio 16 legible por ordenador puede comprender un medio de comunicación para permitir que el dispositivo fuente 12 transmita datos de video codificados directamente al dispositivo destino 14 en tiempo real. Los datos de video codificados pueden ser modulados de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitidos al dispositivo destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia, o una red global tal como la Internet. El medio de comunicación puede incluir rúters, interruptores, estaciones base, o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo fuente 12 al dispositivo destino 14.
En algunos ejemplos, los datos codificados pueden ser emitidos desde la interfaz 22 de salida a un dispositivo de almacenamiento. De manera similar, se puede tener acceso a datos codificados procedentes del dispositivo de almacenamiento a través de la interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera de una variedad de medios de almacenamiento de datos a los que se tiene acceso localmente o que están distribuidos tal como un disco duro, discos Blu-ray, discos de video digital (DVD), Memorias de Solo Lectura de Disco Compacto (CD-ROM), memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital conveniente para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede almacenar el video codificado generado por el dispositivo fuente 12. El dispositivo destino 14 puede acceder a datos de video almacenados procedentes del dispositivo de almacenamiento a través de transmisión o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo destino 14. Servidores de archivos ejemplares incluyen un servidor web (por ejemplo, para un sitio web), un servidor de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento unidos a la red (NAS), o una unidad de disco local. El dispositivo destino 14 puede acceder a los datos de video codificados a través de cualquier conexión de datos estándar, incluyendo una conexión de Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión cableada (por ejemplo, línea de abonado digital (DSL), modem de cable, etc.), o una combinación de ambos que sea adecuada para acceder a datos de video codificados almacenados en un servidor de archivos. La transmisión de datos de video codificados desde el dispositivo de almacenamiento puede ser una transmisión por secuencias, una transmisión por descarga, o una combinación de las mismas.
Las técnicas de esta descripción no están limitadas necesariamente a aplicaciones o escenarios inalámbricos. Las técnicas se pueden aplicar a la codificación de video en soporte de cualquiera de una variedad de aplicaciones multimedia, tal como transmisiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión satelital, transmisiones de video por secuencias de Internet, tal como transmisión adaptable dinámica sobre HTTP (DASH), video digital que es codificado sobre un medio de almacenamiento de datos, decodificación de video digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 de codificación puede ser configurado para soportar transmisión de video de una vía o dos vías para soportar aplicaciones tales como transmisión por secuencias de video, reproducción de video, difusión de video y/o telefonía de video.
En el ejemplo de la figura 1, el dispositivo fuente 12 incluye la fuente 18 de video, el codificador 20 de video, y la interfaz 22 de salida. El dispositivo destino 14 incluye la interfaz 28 de entrada, el decodificador 30 de video, y el dispositivo 32 de visualización. De acuerdo con esta descripción, el codificador 20 de video del dispositivo fuente 12 y/o el decodificador 30 de video del dispositivo destino 14 pueden ser configurados para aplicar las técnicas para la codificación de video. En otros ejemplos, un dispositivo fuente y un dispositivo destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo fuente 12 puede recibir datos de video procedentes de una fuente de video externa, tal como una cámara externa. De modo similar, el dispositivo destino 14 se puede conectar por interfaz con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema 10 de codificación integrado de la figura 1 es simplemente un ejemplo. Las técnicas para la codificación de video pueden ser realizadas por cualquier dispositivo de codificación/decodificación de video digital. Aunque las técnicas de esta descripción generalmente son realizadas por un dispositivo de codificación de video, las técnicas también pueden ser realizadas por un codificador/decodificador de video, típicamente denominado como un “CÓDEC.” Además, las técnicas de esta descripción también pueden ser realizadas por un pre-procesador de video. El codificador y/o decodificador de video pueden ser una unidad de procesamiento de gráficos (GPU) o un dispositivo similar.
El dispositivo fuente 12 y el dispositivo destino 14 son simplemente ejemplos de dichos dispositivos de codificación en los cuales el dispositivo fuente 12 genera datos de video codificados para su transmisión al dispositivo destino 14. En algunos ejemplos, el dispositivo fuente 12 y el dispositivo destino 14 pueden operar de una manera sustancialmente simétrica de manera que cada uno de los dispositivos fuente 12 y destino 14 incluye componentes de codificación y decodificación de video. Por lo tanto, el sistema 10 de codificación puede soportar transmisión de video de una vía o dos vías entre dispositivos de video 12, 14, por ejemplo, para transmisión de video, reproducción de video, difusión de video, o telefonía de video.
La fuente 18 de video del dispositivo fuente 12 puede incluir un dispositivo de captura de video, tal como una cámara de video, un archivo de video que contiene video previamente capturado, y/o una interfaz de alimentación de video para recibir video procedente de un proveedor de contenido de video. Como una alternativa adicional, la fuente 18 de video puede generar datos basados en gráficos de ordenador tal como el video fuente, o una combinación de video en vivo, video archivado, y video generado por ordenador.
En algunos casos, cuando la fuente 18 de video es una cámara de video, el dispositivo fuente 12 y el dispositivo destino 14 pueden formar los así denominados teléfonos con cámara o teléfonos con video. Tal como se mencionó antes, no obstante, las técnicas descritas en esta descripción pueden ser aplicables a codificación de video en general, y pueden ser aplicadas a aplicaciones inalámbricas y/o cableadas. En cada caso, el video capturado, pre-capturado o generado por ordenador puede ser codificado por el codificador 20 de video. La información de video codificada puede entonces ser emitida por la interfaz 22 de salida sobre un medio 16 legible por ordenador.
El medio 16 legible por ordenador puede incluir medios transitorios, tales como una difusión inalámbrica o transmisión de red cableada, o medio de almacenamiento (es decir, medio de almacenamiento notransitorio), tal como un disco duro, unidad flash, disco compacto, disco de video digital, disco Blu-ray, u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de video codificados procedentes del dispositivo fuente 12 y proporcionar los datos de video codificados al dispositivo destino 14, por ejemplo, a través de transmisión por red. De manera similar, un dispositivo informático de una instalación de producción de medio, tal como una instalación de estampación de disco, puede recibir datos de video codificados procedentes del dispositivo fuente 12 y puede producir un disco que contiene los datos de video codificados. Por lo tanto, se puede entender que el medio 16 legible por ordenador incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
La interfaz 28 de entrada del dispositivo destino 14 recibe información procedente del medio legible 16 por ordenador. La información del medio 16 legible por ordenador puede incluir información de sintaxis definida por el codificador 20 de video, que también es utilizada por el decodificador 30 de video, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, grupo de imágenes (GOP). El dispositivo 32 de visualización muestra los datos de video decodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización tal como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED), u otro tipo de dispositivo de visualización.
El codificador 20 de video y el decodificador 30 de video pueden operar de acuerdo con una norma de codificación de video, tal como la norma de Codificación de Video de Alta Eficiencia (HEVC) actualmente bajo desarrollo, y se puede adaptar al Modelo de Prueba HEVC (HM). Alternativamente, el codificador 20 de video y el decodificador 30 de video pueden operar de acuerdo con otras normas industriales o propias, tal como la norma del Sector de Estandarización de Telecomunicaciones de la Unión de Telecomunicaciones Internacional (ITU-T) H.264, alternativamente denominado como Grupo de Expertos de Imágenes en Movimiento (MPEG)-4, Parte 10, Codificación de Video Avanzada (Av C), H.265/HEVC, o extensiones de dichas normas. Las técnicas de esta descripción, no obstante, no se limitan a ninguna norma de codificación particular. Otros ejemplos de normas de codificación de videos incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la figura 1, en algunos aspectos, el codificador 20 de video y el decodificador 30 de video pueden estar integrados con un codificador y decodificador de audio, y pueden incluir unidades de multiplexor-desmultiplexor apropiados (MUX-DEMUX), u otro hardware y software, para manejar la codificación tanto de audio como de video en una corriente de datos común o corrientes de datos separadas. Si se puede aplicar, unidades MUX-DEMUX se pueden adecuar al protocolo de multiplexor ITU H.223, u otros protocolos tal como el protocolo de datagrama de usuario (UDP).
El codificador 20 de video y el decodificador 30 de video pueden ser implementados como cualquiera de una variedad de circuitos de codificador convenientes, tal como uno o más microprocesadores, procesadores de señal digital (DSP), circuitos integrados de aplicación específica (ASIC), agrupaciones de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualesquiera combinaciones de los mismos. Cuando las técnicas son implementadas parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio, adecuado y ejecutar las instrucciones en hardware utilizando uno o más procesadores para realizar las técnicas de esta descripción. Cada uno del codificador 20 de video y del decodificador 30 de video puede ser incluido en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador (CODEC) combinado en un dispositivo respectivo. Un dispositivo que incluye el codificador 20 de video y/o el decodificador 30 de video puede comprender un circuito integrado, un microprocesador, y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de un codificador 20 de video que puede implementar técnicas de codificación de video. El codificador 20 de video puede ejecutar intra- e inter codificación de bloques de video dentro de los segmentos de video. La intra-codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en video dentro de un fotograma o imagen de video determinado. La inter-codificación se basa en predicción temporal para reducir o eliminar la redundancia temporal en video dentro de fotogramas o imágenes adyacentes de una secuencia de video. El intra-modo (modo I) se puede referir a cualquiera de los diversos modos de codificación basados espaciales. Los inter-modos, tales como predicción unidireccional (también conocida como, unipredicción) (modo P) o bipredicción (también conocida como, bi-predicción) (modo B), se pueden referir a cualquiera de varios modos de codificación basados temporales.
Como se muestra en la figura 2, el codificador 20 de video recibe un bloque de video actual dentro de un fotograma de video que se ha de codificar. En el ejemplo de la figura 2, el codificador 20 de video incluye la unidad 40 de selección de modo, la memoria 64 de fotogramas de referencia, el sumador 50, la unidad 52 de procesamiento de transformada, la unidad 54 de cuantificación, y la unidad 56 de codificación entrópica. La unidad 40 de selección de modo, a su vez, incluye la unidad 44 de compensación de movimiento, la unidad 42 de estimación de movimiento, la unidad 46 de intra-predicción (también conocida como, intra-predicción), y la unidad 48 de partición. Para reconstrucción de bloques de video, el codificador 20 de video también incluye la unidad 58 de cuantificación inversa, la unidad 60 de transformada inversa, y el sumador 62. Un filtro de desbloqueo (no mostrado en la figura 2) también se puede incluir para filtrar límites de bloque para eliminar artefactos de bloqueo procedentes del video reconstruido. Si así se desea, el filtro de desbloqueo típicamente filtraría la salida del sumador 62. También se pueden utilizar filtros adicionales (en-bucle o post bucle) además del filtro de desbloqueo. Dichos filtros no se muestran por brevedad, pero si se desea, pueden filtrar la salida del sumador 50 (como un filtro en-bucle).
Durante el proceso de codificación, el codificador 20 de video recibe un fotograma de video o segmento que ha de ser codificado. El fotograma o segmento puede ser dividido en múltiples bloques de video. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento ejecutan codificación interpredictiva del bloque de video recibido con relación a uno o más bloques en uno o más fotogramas de referencia para proporcionar predicción temporal. La unidad 46 de intra-predicción alternativamente puede realizar codificación intra-predictiva del bloque de video recibido con relación a uno o más bloques vecinos en el mismo fotograma o segmento que el bloque que ha de ser codificado para proporcionar predicción espacial. El codificador 20 de video puede realizar múltiples etapas de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de video.
Además, la unidad 48 de partición puede dividir en particiones bloques de datos de video en sub-bloques, basándose en la evaluación de esquemas de división en particiones previos en etapas de codificación previas. Por ejemplo, la unidad 48 de partición inicialmente puede dividir en particiones un fotograma o segmento en unidades de codificación más grandes (LCU), y puede dividir en particiones cada una de las LCU en unidades de sub-codificación (sub-CU) basándose en análisis de distorsión de tasa (por ejemplo, optimización de distorsión de tasa). La unidad 40 de selección de modo además puede producir una estructura de datos de árbol cuaternario indicativa de la división en particiones de una LCU en sub-CU. Las CU de nodo hoja del árbol cuaternario pueden incluir una o más unidades de predicción (PU) y una o más unidades de transformada (TU).
La presente descripción utiliza el término “bloque” para referirse a cualquiera de una CU, PU, o TU, en el contexto de HEVC, o estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y sub-bloques de los mismos en H.264/AVC). Una CU incluye un nodo de codificación, las PU, y TU asociadas con el nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y tiene forma cuadrada. El tamaño de la CU puede variar desde 8*8 pixeles hasta el tamaño del bloque de árbol con un máximo de 64*64 pixeles o más. Cada CU puede contener una o más PU y una o más TU. Datos de sintaxis asociados con una CU pueden describir, por ejemplo, la división en particiones de la CU en una o más PU. Los modos de división en particiones pueden diferir entre si la CU es omitida o es codificada en modo directo, codificada en modo de intra-predicción, o codificada en modo de inter-predicción (también conocida como, inter predicción). Las PU pueden ser divididas en particiones para no tener forma cuadrada. Datos de sintaxis asociados con una CU también pueden describir, por ejemplo, la división en particiones de la CU en una o más TU de acuerdo con un árbol cuaternario. Una TU puede ser de forma cuadrada o no cuadrada (por ejemplo, rectangular).
La unidad 40 de selección de modo puede seleccionar uno de los modos de codificación, intra- o inter-, por ejemplo, basándose en los resultados de error, y proporciona el bloque intra- o inter-codificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para uso como un fotograma de referencia. La unidad 40 de selección de modo también proporciona elementos de sintaxis, tal como vectores de movimiento, indicadores de intra-modo, información de partición, y otra información de sintaxis de este tipo, a la unidad 56 de codificación entrópica.
La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar muy integradas, pero están ilustradas por separado para propósitos conceptuales. La estimación de movimiento, realizada por la unidad 42 de estimación de movimiento, es el proceso de generar vectores de movimiento, que estiman el movimiento para los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video dentro de un fotograma o imagen de video actual con relación a un bloque predictivo dentro de un fotograma de referencia (u otra unidad codificada) con relación al bloque actual que está siendo codificado dentro del fotograma actual (u otra unidad codificada). Un bloque predictivo es un bloque que se encuentra que corresponde muy estrechamente con el bloque que ha de ser codificado, en términos de diferencia de pixel, que puede ser determinada por la suma de diferencia absoluta (SAD), suma de diferencia cuadrada (SSD), u otras métricas de diferencia. En algunos ejemplos, el codificador 20 de video puede calcular valores para posiciones de pixel de sub-entero de imágenes de referencia almacenadas en la memoria 64 de fotogramas de referencia. Por ejemplo, el codificador 20 de video puede interpolar valores de posiciones de pixel de un cuarto, posiciones de pixel de un octavo, u otras posiciones de pixel fraccionarias de la imagen de referencia. Por lo tanto, la unidad 42 de estimación de movimiento puede realizar una búsqueda de movimiento con relación a las posiciones de pixel completo y a las posiciones de pixel fraccionarias y emitir un vector de movimiento con precisión de pixel fraccionaria.
La unidad 42 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de video en un segmento inter-codificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede ser seleccionada a partir de una primera lista de imágenes de referencia (Lista 0) o de una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria 64 de fotogramas de referencia. La unidad 42 de estimación de movimiento envía el vector de movimiento calculado a la unidad 56 de codificación entrópica y a la unidad 44 de compensación de movimiento.
La compensación de movimiento, realizada por la unidad 44 de compensación de movimiento, puede implicar la extracción o generación del bloque predictivo basándose en el vector de movimiento determinado por la unidad 42 de estimación de movimiento. Una vez más, la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar funcionalmente integradas, en algunos ejemplos. Después de recibir el vector de movimiento para la PU del bloque de video actual, la unidad 44 de compensación de movimiento puede localizar el bloque predictivo al cual apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de video residual sustrayendo valores de pixel del bloque predictivo de entre los valores de pixel del bloque de video actual que está siendo codificado, formando valores de diferencia de pixel, como se analiza a continuación. En general, la unidad 42 de estimación de movimiento realiza estimación de movimiento con relación a componentes de luma, y la unidad 44 de compensación de movimiento utiliza vectores de movimiento calculados con base en los componentes de luma para ambos componentes de croma y componentes de luma. La unidad 40 de selección de modo también puede generar elementos de sintaxis asociados con los bloques de video y el segmento de video para uso por el decodificador 30 de video en la decodificación de los bloques de video del segmento de video.
La unidad 46 de intra-predicción puede intra-predecir un bloque actual, como una alternativa a la inter predicción realizada por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, como se describió antes. En particular, la unidad 46 de intra-predicción puede determinar un modo de intra-predicción a utilizar para codificar un bloque actual. En algunos ejemplos, la unidad 46 de intrapredicción puede codificar un bloque actual utilizando varios modos de intra-predicción, por ejemplo, durante etapas de codificación separadas, y la unidad 46 de intra-predicción (o unidad 40 de selección de modo, en algunos ejemplos) puede seleccionar un modo de intra-predicción apropiado a utilizar de entre los modos probados.
Por ejemplo, la unidad 46 de intra-predicción puede calcular valores de distorsión de tasa utilizando un análisis de distorsión de tasa para los diversos modos de intra-predicción probados, y seleccionar el modo de intra-predicción que tenga las mejores características de distorsión de tasa entre los modos probados. El análisis de distorsión de tasa generalmente determina una magnitud de distorsión (o error) entre un bloque codificado y un bloque no codificado, original que fue codificado para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) utilizada para producir el bloque codificado. La unidad 46 de intra-predicción puede calcular relaciones a partir de las distorsiones y tasas para los distintos bloques codificados para determinar qué modo de intra-predicción muestra el mejor valor de distorsión de tasa para el bloque.
Además, la unidad 46 de intra-predicción puede ser configurada para codificar bloques de profundidad de un mapa de profundidad utilizando un modo de modelado de profundidad (DMM). La unidad 40 de selección de modo puede determinar si un modo DMM disponible produce mejores resultados de codificación que un modo de intra-predicción y los otros modos DMM, por ejemplo, utilizando optimización de distorsión de tasa (RDO). Los datos para una imagen de textura correspondientes a un mapa de profundidad pueden ser almacenados en la memoria 64 de fotogramas de referencia. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento también se pueden configurar para inter-predecir bloques de profundidad de un mapa de profundidad.
Después de seleccionar un modo de intra-predicción para un bloque (por ejemplo, un modo de intrapredicción o uno de los modos DMM), la unidad 46 de intra-predicción puede proporcionar información indicativa del modo de intra-predicción seleccionado para el bloque a la unidad 56 de codificación entrópica. La unidad 56 de codificación entrópica puede codificar la información indicando el modo de intra-predicción seleccionado. El codificador 20 de video puede incluir, en los datos de configuración de corriente de bits transmitidos, que pueden incluir una pluralidad de tablas de índice de modo de intra-predicción y una pluralidad de tablas de índice de modo de intra-predicción modificado (también denominadas como tablas de mapeo de palabra código), definiciones de contextos de codificación para varios bloques, e indicaciones de un modo de intra-predicción más probable, una tabla de índice de modo de intra-predicción, y una tabla de índice de modo de intra-predicción modificado a utilizar para cada uno de los contextos.
El codificador 20 de video forma un bloque de video residual sustrayendo los datos de predicción desde la unidad 40 de selección de modo a partir del bloque de video original que está siendo codificado. El sumador 50 representa el componente o componentes que realizan esta operación de sustracción.
La unidad 52 de procesamiento de transformada aplica una transformada, tal como una transformada de coseno discreto (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de video que comprende valores de coeficiente de transformada residuales. La unidad 52 de procesamiento de transformada puede realizar otras transformadas que son conceptualmente similares a DCT. También se podrían utilizar transformadas de ondícula, transformadas de número entero, transformadas de sub-banda u otros tipos de transformadas.
La unidad 52 de procesamiento de transformada aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual desde un dominio de valor de pixel a un dominio de transformada, tal como un dominio de frecuencia. La unidad 52 de procesamiento de transformada puede enviar los coeficientes de transformada resultantes a la unidad 54 de cuantificación. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir adicionalmente la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bit asociada con algunos o todos los coeficientes. El grado de cuantificación puede ser modificado ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad 54 de cuantificación puede entonces realizar un escaneo de la matriz que incluye los coeficientes de transformada cuantificados. De manera alternativa, la unidad 56 de codificación entrópica puede realizar el escaneo.
Siguiendo la cuantificación, la unidad 56 de codificación entrópica codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad 56 de codificación entrópica puede realizar codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación entrópica de división en particiones de intervalo de probabilidad (PIPE) u otra técnica de codificación entrópica. En el caso de codificación entrópica basada en contexto, el contexto se puede basar en bloques contiguos. Siguiendo la codificación entrópica por la unidad 56 de codificación entrópica, la corriente de bits codificada puede ser transmitida a otro dispositivo (por ejemplo, decodificador 30 de video) o archivada para posterior transmisión o recuperación.
La unidad 58 de cuantificación inversa y la unidad 60 de transformada inversa aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de pixel, por ejemplo, para posterior uso como un bloque de referencia. La unidad 44 de compensación de movimiento puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de uno de los fotogramas de memoria 64 de fotogramas de referencia. La unidad 44 de compensación de movimiento también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de pixel de sub-entero para utilizar en estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción de movimiento compensado producido por la unidad 44 de compensación de movimiento para producir un bloque de video reconstruido para almacenamiento en la memoria 64 de fotogramas de referencia. El bloque de video reconstruido puede ser utilizado por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento como un bloque de referencia para inter-codificar un bloque en un fotograma de video subsiguiente.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de un decodificador 30 de video que puede implementar técnicas de codificación de video. En el ejemplo de la figura 3, el decodificador 30 de video incluye una unidad 70 de decodificación entrópica, una unidad 72 de compensación de movimiento, una unidad 74 de intra-predicción, una unidad 76 de cuantificación inversa, una unidad 78 de transformación inversa, una memoria 82 de fotogramas de referencia, y un sumador 80. El decodificador 30 de video, en algunos ejemplos, puede realizar una etapa de decodificación generalmente recíproca al paso de codificación descrito con respecto al codificador 20 de video (figura 2). La unidad 72 de compensación de movimiento puede generar datos de predicción basado en vectores de movimiento recibidos desde la unidad 70 de decodificación entrópica, mientras que la unidad 74 de intra-predicción puede generar datos de predicción basado en los indicadores de modo de intra-predicción recibidos procedentes de la unidad 70 de decodificación entrópica.
Durante el proceso de decodificación, el decodificador 30 de video recibe una corriente de bits de video codificada que representa bloques de video de un segmento de video codificado y elementos de sintaxis asociados del codificador 20 de video. La unidad 70 de decodificación entrópica del decodificador 30 de video decodifica por entropía la corriente de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intra-predicción, y otros elementos de sintaxis. La unidad 70 de decodificación entrópica reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad 72 de compensación de movimiento. El decodificador 30 de video puede recibir los elementos de sintaxis al nivel de segmento de video y/o al nivel de bloque de video.
Cuando el segmento de video es codificado como un segmento intra-codificado (I), la unidad 74 de intrapredicción puede generar datos de predicción para un bloque de video del segmento de video actual basándose en un modo de intra-predicción señalizado y datos procedentes de bloques previamente decodificados del fotograma o imagen actual. Cuando el fotograma de video es codificado como un segmento inter-codificado (por ejemplo, B, P, o GPB), la unidad 72 de compensación de movimiento produce bloques predictivos para un bloque de video del segmento de video actual basándose en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad 70 de decodificación entrópica. Los bloques predictivos pueden ser producidos a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador 30 de video puede construir las listas de fotogramas de referencia, Lista 0 y Lista 1, utilizando técnicas de construcción por defecto basadas en imágenes de referencia almacenadas en la memoria 82 de fotogramas de referencia.
La unidad 72 de compensación de movimiento determina información de predicción para un bloque de video del segmento de video actual analizando los vectores de movimiento y otros elementos de sintaxis, y utiliza la información de predicción para producir los bloques predictivos para el bloque de video actual que está siendo decodificado. Por ejemplo, la unidad 72 de compensación de movimiento utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra- o inter-predicción) utilizado para codificar los bloques de video del segmento de video, un tipo de segmento de inter-predicción (por ejemplo, segmento B, segmento P, o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de video inter-codificado del segmento, estatus de inter-predicción para cada bloque de video inter-codificado del segmento, y otra información para decodificar los bloques de video en el segmento de video actual.
La unidad 72 de compensación de movimiento también puede realizar interpolación basada en filtros de interpolación. La unidad 72 de compensación de movimiento puede utilizar filtros de interpolación tal como los utilizados por el codificador 20 de video durante la codificación de los bloques de video para calcular valores interpolados para pixeles de sub-entero de bloques de referencia. En este caso, la unidad 72 de compensación de movimiento puede determinar los filtros de interpolación utilizados por el codificador 20 de video de entre los elementos de sintaxis recibidos y utilizar los filtros de interpolación para producir bloques predictivos.
Datos para una imagen de textura correspondientes a un mapa de profundidad pueden ser almacenados en la memoria 82 de fotogramas de referencia. La unidad 72 de compensación de movimiento también puede ser configurada para inter-predecir bloques de profundidad de un mapa de profundidad.
En una realización, el decodificador 30 de video incluye una interfaz 84 de usuario (UI). La interfaz 84 de usuario está configurada para recibir entrada procedente de un usuario del decodificador 30 de video (por ejemplo, un administrador de red). A través de la interfaz 84 de usuario, el usuario puede gestionar o cambiar ajustes en el decodificador 30 de video. Por ejemplo, el usuario puede introducir o proporcionar de otra manera un valor para un parámetro (por ejemplo, un indicador) para controlar la configuración y/u operación del decodificador 30 de video según la preferencia del usuario. La interfaz 84 de usuario puede ser, por ejemplo, una interfaz gráfica de usuario (GUI) que permite a un usuario interactuar con el decodificador 30 de video a través de iconos gráficos, menús desplegables, cajas de comprobación, y así sucesivamente. En algunos casos, la interfaz 84 de usuario puede recibir información del usuario a través de un teclado, un ratón, u otro dispositivo periférico. En una realización, un usuario puede tener acceso a la interfaz 84 de usuario a través de un teléfono inteligente, un dispositivo de tableta, un ordenador personal ubicado lejos del decodificador 30 de video, y así sucesivamente. Tal como se utiliza en la presente memoria, la interfaz 84 de usuario puede ser denominada como una entrada externa o un medio externo.
Teniendo en mente lo anterior, técnicas de compresión de video realizan predicción espacial (intra-imagen) y/o predicción temporal (inter-imagen) para reducir o eliminar la redundancia inherente en secuencias de video. Para codificación de video basada en bloques, un segmento de video (es decir, una imagen de video o un segmento de una imagen de video) puede ser dividida en particiones en bloques de video, los cuales también pueden ser denominados como bloques de árbol, bloques de árbol de codificación (CTB), unidades de árbol de codificación (CTU), unidades de codificación (CU), y/o nodos de codificación. Los bloques de video en un segmento intra-codificado (I) de una imagen son codificados utilizando predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Bloques de video en un segmento inter-codificado (P o B) de una imagen pueden utilizar predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden ser denominadas como fotogramas, y las imágenes de referencia pueden ser denominadas como fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que ha de ser codificado. Los datos residuales representan diferencias de pixel entre el bloque original que ha de ser codificado y el bloque predictivo. Un bloque inter-codificado es codificado de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado es codificado según un modo de intra-codificación y los datos residuales. Para compresión adicional, los datos residuales pueden ser transformados desde el dominio de pixel a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que entonces pueden ser cuantificados. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden ser escaneados para producir un vector of coeficientes de transformada unidimensional, y se puede aplicar codificación entrópica para lograr incluso más compresión.
La compresión de imágenes y video ha experimentado un rápido crecimiento, conduciendo a varias normas de codificación. Dichas normas de codificación de video incluyen ITU-T H.261, Organización Internacional para Estandarización/Comisión Electrotécnica Internacional (ISO/IEC) MPEG-1 Parte 2, ITU-T H.262 o ISO/IEC MPEG-2 Parte 2, ITU-T H.263, ISO/IEC MPEG-4 Parte 2, Codificación de Video Avanzada (AVC), también conocida como ITU-T H.264 o ISO/IEC MPEG-4 Parte 10, y Codificación de Video de Alta Eficiencia (HEVC), también conocida como ITU-T H.265 o MPEG-H Parte 2. La AVC incluye extensiones tales como Codificación de Video Escalable (SVC), Codificación de Video Multivisión (MVC) y Codificación de Video Multivisión más Profundidad (Mv C+D), y 3D AVC (3D-AVC). HEVC incluye extensiones tales como HEVC Escalable (SHVC), HEVC Multivisión (MV-HEVC), y 3D HEVC (3D-HEVC).
También existe una nueva norma de codificación de video, denominada Codificación de Video Versátil (VVC), que está siendo desarrollada por el equipo conjunto de expertos de video (JVET) de ITU-T e ISO/IEC. Aunque la norma VVC tiene varios borradores de trabajo, en la presente memoria se hace referencia a un Borrador de Trabajo (WD) de VVC en particular, concretamente B. Bross, J. Chen, and S. Liu, “Versatil Video Coding” (“Codificación de Video Versátil”) (Borrador 5),” JVET-N1001-v3, 13a Reunión JVET, 27 de marzo, 2019 (Borrador VVC 5).
La descripción de las técnicas descritas en la presente memoria se basa en la norma de Codificación de Video Versátil (VVC) de codificación de video sub-desarrollada por el equipo conjunto de expertos de video (JVET) de ITU-T e ISO/IEC. Sin embargo, las técnicas también aplican a otras especificaciones de códec de video.
Se analizan esquemas de división en particiones de imagen en HEVC.
HEVC incluye cuatro esquemas de división en particiones de imagen diferentes, concretamente segmentos regulares, segmentos dependientes, mosaicos, y Procesamiento Paralelo de Frente de Onda (WPP), que se pueden aplicar para correspondencia de tamaño de Unidad de Transferencia Máxima (MTU), procesamiento paralelo y retraso de extremo-a-extremo reducido.
Segmentos regulares son similares como en H.264/AVC. Cada segmento regular es encapsulado en su propia unidad de capa de abstracción de red (NAL), y se deshabilitan la predicción en-imagen (predicción intra muestras, predicción de información de movimiento, predicción de modo de codificación) y dependencia de codificación entrópica a través de límites de segmento. Por lo tanto, un segmento regular puede ser reconstruido independientemente de otros segmentos regulares dentro de la misma imagen (aunque puede seguir habiendo interdependencias debido a operaciones de filtración de bucle).
El segmento regular es la única herramienta que puede ser utilizada para paralelismo que también está disponible, en una forma virtualmente idéntica, en H.264/AVC. El paralelismo basado en segmento regular no emplea mucha comunicación inter-procesador o inter-núcleo (excepto cuando se comparten datos de inter procesador o inter-núcleo para compensación de movimiento cuando se decodifica una imagen predictivamente codificada, que es típicamente mucho más pesado que compartir datos de inter-procesador o inter-núcleo debido a predicción en-imagen). Sin embargo, por el mismo motivo, el uso de segmentos regulares puede incurrir en una sobrecarga de codificación sustancial debido al costo de bit de la cabecera de segmento y debido a la falta de predicción a través de los límites de segmento. Además, segmentos regulares (en contraste con las otras herramientas mencionadas a continuación) también sirven como el mecanismo clave para que la división en particiones de la corriente de bits corresponda con los requerimientos de tamaño de MTU, lo cual se debe a la independencia en-imagen de segmentos regulares y debido a que cada segmento regular es encapsulado en su propia unidad NAL. En muchos casos, el objetivo del paralelismo y el objetivo de la correspondencia del tamaño de MTU plantean demandas contradictorias a la implantación de segmentos en una imagen. La realización de esta situación conduce al desarrollo de las herramientas de paralelismo mencionadas a continuación.
Segmentos dependientes tienen cabeceras de segmento cortas y permiten la división en particiones de la corriente de bits en los límites de bloque de árbol sin romper ninguna predicción en-imagen. Básicamente, segmentos dependientes proporcionan fragmentación de segmentos regulares en múltiples unidades NAL, lo que proporciona un retraso de extremo-a-extremo reducido permitiendo que una parte de un segmento regular sea enviada antes que finalice la codificación de todo el segmento regular.
En WPP, la imagen es dividida en particiones en filas sencillas de bloques de árbol de codificación (CTB). La decodificación entrópica y predicción tienen permitido utilizar datos de los CTB en otras particiones. Es posible el procesamiento paralelo a través de decodificación paralela de filas de CTB, donde el inicio de la decodificación de una fila de CTB es retrasado por dos CTB, para garantizar que datos relacionados con un CTB por encima y a la derecha del CTB sujeto estén disponibles antes que el CTB sujeto sea decodificado. Utilizando este inicio escalonado (el cual parece un frente de onda cuando se representa gráficamente), el paralelismo es posible hasta con tantos procesadores/núcleos como filas de CTB contenga la imagen. Debido a que está permitida la predicción en-imagen entre filas de bloques de árbol contiguas dentro de una imagen, la comunicación inter-procesador/inter-núcleo requerida para habilitar la predicción en-imagen puede ser sustancial. La división en particiones de WPP no da como resultado la producción de unidades NAL adicionales con comparación con el caso en que no se aplica, por lo tanto WPP no es una herramienta para correspondencia de tamaño de MTU. No obstante, cuando se emplea la correspondencia de tamaño de MTU, se pueden utilizar segmentos regulares con WPP, con cierta sobrecarga de codificación.
Los mosaicos definen límites horizontales y verticales que dividen en particiones una imagen en columnas y filas de mosaicos. El orden de escaneo de los CTB es cambiado para que sea local dentro de un mosaico (en el orden de un escaneo de trama de CTB de un mosaico), antes de la decodificación del CTB superiorizquierdo del siguiente mosaico en el orden de escaneo de trama de mosaico de una imagen. De forma similar a segmentos regulares, los mosaicos rompen las dependencias de predicción en-imagen así como las dependencias de decodificación entrópica. Sin embargo, no necesitan ser incluidas en unidades NAL individuales (igual que WPP en este sentido); por lo tanto, los mosaicos no pueden ser utilizados para correspondencia de tamaño de MTU. Cada mosaico puede ser procesado por un procesador/núcleo, y la comunicación inter-procesador/inter-núcleo requerida para predicción en-imagen entre unidades de procesamiento que decodifican mosaicos contiguos queda limitada a transportar la cabecera de segmento compartida en casos donde un segmento está abarcando más de un mosaico, y filtración de bucle relacionada con el hecho de compartir las muestras reconstruidas y metadatos. Cuando más de un mosaico o segmento WPP es incluido en un segmento, el desplazamiento de byte de punto de entrada para cada mosaico o segmento WPP distinto del primero en el segmento es señalizado en la cabecera de segmento.
Por simplicidad, se han especificado en HEVC restricciones en la aplicación de los cuatro esquemas de división en particiones de imagen diferentes. Una secuencia de video codificado determinada no puede incluir ambos, mosaicos y frentes de onda, para la mayoría de los perfiles especificados en HEVC. Para cada segmento y mosaico, se debe cumplir cualquiera o ambas de las siguientes condiciones: 1) todos los bloques de árbol codificados en un segmento pertenecen al mismo segmento; 2) todos los bloques de árbol codificados en un mosaico pertenecen al mismo segmento. Finalmente, un segmento de frente de onda contiene exactamente una fila de CTB, y cuando WPP está en uso, si un segmento comienza dentro de una fila de CTB, debe finalizar en la misma fila de CTB.
Se analizan esquemas de división en particiones de imagen en VVC.
Como se ha indicado antes, HEVC incluye cuatro esquemas de división en particiones de imagen diferentes, concretamente segmentos, mosaicos y ladrillos, y Procesamiento Paralelo de Frente de Onda (WPP), que puede ser aplicado para correspondencia de tamaño de Unidad de Transferencia Máxima (MTU), procesamiento paralelo y retraso de extremo-a-extremo reducido.
Mosaicos en VVC son similares a mosaicos en HEVC. Los mosaicos definen límites horizontales y verticales que dividen en particiones una imagen en columnas y filas de mosaico. En VVC, el concepto de mosaicos es mejorado adicionalmente permitiendo que un mosaico sea dividido en forma adicional horizontalmente para formar ladrillos. Un mosaico que no está dividido adicionalmente también es considerado un ladrillo. EL orden de escaneo de los CTB es cambiado para que sea local dentro de un ladrillo (en el orden de un escaneo de trama de CTB de un ladrillo), antes de la decodificación del CTB superior-izquierdo del siguiente ladrillo en el orden de escaneo de trama de ladrillo de una imagen
Segmentos en VVC comprenden uno o más ladrillos. Cada segmento es encapsulado en su propia unidad NAL, y se deshabilita la predicción en-imagen (predicción intra muestra, predicción de información de movimiento, predicción de modo de codificación) y la dependencia de codificación entrópica a través de límites de segmento. Por lo tanto, un segmento regular puede ser reconstruido independientemente de otras porciones regulares dentro de la misma imagen (aunque pueden seguir habiendo interdependencias debido a las operaciones de filtración de bucle). La VVC define dos tipos de segmentos, que son: segmento rectangular y segmento de escaneo de trama. El segmento rectangular comprende uno o más ladrillos que ocupan una región rectangular dentro de una imagen. El segmento de escaneo de trama comprende uno o más ladrillos que están en orden de escaneo de trama de ladrillos dentro de una imagen.
La característica WPP en VVC es similar a la característica WPP en HEVC excepto que HEVC WPP tiene un retraso de dos CTU mientras que VVC WPP tiene un retraso de una CTU. Para HEVC WPP, una nueva secuencia de decodificación puede comenzar decodificando la primera CTU en su fila de CTU asignada después que la fila de CTU previa tenga sus dos primeras CTU ya decodificadas; por otra parte, para VVC WPP, una nueva secuencia de decodificación puede comenzar a decodificar la primera CTU en su fila de CTU asignada después que la fila de CTU previa tenga su primera CTU ya decodificada.
Se analiza la señalización de segmentos rectangulares.
La estructura de segmentos rectangulares es señalizada en el conjunto de parámetros de imagen (PPS) describiendo el número de segmentos rectangulares en una imagen. Para cada segmento, un conjunto de índice de ladrillo superior izquierdo y un valor delta para derivar el índice del ladrillo inferior derecho son señalizados para describir la posición del segmento en la imagen y su tamaño (es decir, en la unidad de ladrillo). Para un segmento de escaneo de trama, su información es señalizada en la cabecera de segmento utilizando el índice del primer ladrillo en el segmento de escaneo de trama y el número de ladrillos en el segmento.
La parte de la tabla de sintaxis PPS mostrada a continuación incluye elementos de sintaxis que describen la señalización de mosaicos, ladrillos e información de segmento rectangular en el PPS.
_______________________________________________________________ single_brick_per_slice_flag igual a 1 especifica que cada segmento que se refiere a este PPS incluye un ladrillo. single_brick_per_slice_flag igual a 0 especifica que un segmento que se refiere a este PPS puede incluir más de un ladrillo. Cuando no está presente, el valor de single_brick_per_slice_flag es deducido como igual a 1.
rect_slice_flag igual a 0 especifica que ladrillos dentro de cada segmento están en orden de escaneo de trama y la información de segmento no es señalizada en PPS. rect_slice_flag igual a 1 especifica que ladrillos dentro de cada segmento cubren una región rectangular de la imagen y la información de segmento es señalizada en el PPS. Cuando single_brick_per_slice_flag es igual a 1 rect_slice_flag es deducido como igual a 1.
num_slices_in_pic_minus1 plus 1 especifica el número de segmentos en cada imagen que se refieren al PPS. El valor de num_slices_per_pic_minus1 estará en el intervalo de 0 a NumBricksInPic - 1, inclusive. Cuando no está presente y single_brick_per_slice_flag es igual a 1, el valor de num_slices_in_pic_minus1 es deducido como igual a NumBricksInPic - 1.
top_left_brick_idx[ i ] especifica el índice de ladrillo del ladrillo ubicado en la esquina superior-izquierda del iésimo segmento. El valor de top_left_brick_idx[ i ] no será igual al valor de top_left_brick_idx[ j ] para ningún i no igual a j. Cuando no está presente, el valor de top_left_brick_idx[ i ] es deducido como igual a i. La longitud del elemento de sintaxis top_left_brick_idx[ i ] es Ceil( Log2( NumBricksInPic) bits. bottom_right_brick_idx_delta[ i ] especifica la diferencia entre el índice de ladrillo del ladrillo ubicado en la esquina inferior-derecha del iésimo segmento y top_left_brickidx[ i ]. Cuando single_brick_per_slice_flag es igual a 1, el valor de bottom_right_brick_idx_delta[ i ] es deducido como igual a 0. La longitud del elemento de sintaxis bottom_right_brick_idx_delta[ i ] es Ceil( Log2( NumBricksInPic - top_left_brick_idx[ i ] ) ) bits.
Es un requerimiento de conformidad de la corriente de bits que un segmento deberá incluir, o bien un número de mosaicos completos o únicamente una secuencia consecutiva de ladrillos completos de un mosaico. La variable NumBricksInSlice[ i ] y BricksToSliceMap[ j ], que especifica el número de ladrillos en el i° segmento y el mapeo de ladrillos a segmentos, se derivan de la siguiente manera:
NumBricksInSlice[ i ] = 0
botRightBkIdx = top_left brick_idx[ i ] bottom_right_brick_idx_delta[ i ]
for( j = 0; j < NumBricksInPic; j++) {
if( BrickColBd[ j ] >= BrickColBd[ top_left_brick_idx[ i ] ] &&
BrickColBd[j] <= BrickColBd[ botRightBkIdx ] &&
BrickRowBd[ j ] >= BrickRowBd[ top_left_brick_idx[ i ] ] && (7-35) BrickRowBd[ j ] <= BrickColBd[ botRightBkIdx ]) {
NumBricksInSlice[ i ]++
BricksToSliceMap[ j ] = i
}
}
Se analiza la señalización de WPP en VVC.
El método de señalización para WPP en VVC se describe en la tabla de sintaxis y la semántica del PPS, la cabecera de segmento, y los datos de segmento.
Un indicador en el PPS denominado entropy_coding_sync_enabled_flag especifica si WPP es utilizado para codificación de imágenes que se refieren al PPS como se muestra en la porción de la tabla de sintaxis del PPS a continuación.
__________________________________________________
Cuando WPP es habilitado para codificación de una imagen, la cabecera de segmento de todos los segmentos de la imagen incluye información acerca del punto de entrada (es decir, desplazamiento desde el inicio de los datos de carga útil del segmento). El punto de entrada es utilizado para tener acceso a cada subconjunto de la fila de CTU para procesamiento según el método WPP. Esta información es señalizada como se muestra en la porción de la tabla de sintaxis de cabecera de segmento a continuación.
__________________________________________________
Cuando WPP es habilitado, cada fila de CTU es denominada como un subconjunto de datos dentro de la carga útil de datos del segmento. Al final de cada subconjunto de datos, un bit designado final de subset_one_bit es señalizado para indicar el final del subconjunto de datos. Además, para garantizar que el tamaño del subconjunto de datos es un múltiplo de un byte (es decir, 8 bits), se realiza la alineación de bytes para añadir bits de alineación de bytes al final de cada subconjunto de datos. La señalización del fina de subset_one_bit y la alineación de bytes al final de cada subconjunto se muestra en la siguiente tabla de sintaxis de datos de segmento.
________________________________________________________________
Se analizan algunos de los problemas con WPP y ladrillos.
Primero, cuando un segmento contiene múltiples ladrillos y WPP está habilitado para codificación de la imagen que contiene el segmento, cada fila de CTU de cada ladrillo dentro del segmento es un subconjunto de datos. Al final de cada subconjunto de datos, ya sea el elemento de sintaxis end_of_subset_one_bit es señalizado para indicar el final de la fila de CTU o el elemento de sintaxis end_of_brick_one_bit es señalizado para indicar el final de la CTU del ladrillo. Sin embargo, no es necesario señalizar ambos elementos de sintaxis. De modo similar, al final de cada subconjunto de datos, la alineación de bytes debe estar presente pero no hay necesidad de duplicarla.
Cuando mosaicos, ladrillos y WPP son utilizados juntos, considerar que un segmento puede contener uno o más mosaicos y cada mosaico puede contener uno o más ladrillos, la implementación de WPP puede ser más complicada.
Para resolver los problemas antes descritos, la presente descripción proporciona los siguientes aspectos (cada uno de ellos puede ser aplicado individualmente y algunos de ellos pueden ser aplicados en combinación).
La primera solución incluye un método para decodificar una corriente de bits de video. En una realización, la corriente de bits de video comprende al menos una imagen que contiene una pluralidad de segmentos, cada segmento de la pluralidad de segmentos comprende una pluralidad de ladrillos, y cada ladrillo de la pluralidad de ladrillos comprende una pluralidad de bloques de árbol de codificación (CTU). El método incluye analizar un conjunto de parámetros para determinar si está habilitado el procesamiento paralelo de frente de onda para la imagen actual y/o para el segmento actual. El método incluye analizar datos de segmento del segmento actual para obtener ladrillos y CTU dentro de cada ladrillo. El método además incluye analizar la CTU actual, la cual está dentro del ladrillo; y determinar la posición de la CTU actual. Además, el método incluye señalizar un bit para indicar el final de la fila de CTU y señalizar bits de alineación de bytes cuando se han satisfecho todas las siguientes condiciones: WPP está habilitado para la codificación del segmento actual, la CTU actual no es la última CTU del ladrillo actual; y la siguiente CTU en el orden de decodificación del ladrillo no es la primera CTU de una fila de CTU dentro del ladrillo actual. El método incluye señalizar un bit para indicar el final del ladrillo cuando la CTU actual es la última CTU en el ladrillo actual, y señalizar bits de alineación de bytes cuando el ladrillo actual es la última CTU en el ladrillo actual pero no la última CTU del segmento actual.
La segunda solución incluye un método para codificar una corriente de bits de video. La corriente de bits de video comprende al menos una imagen que contiene una pluralidad de segmentos, comprendiendo cada segmento de la pluralidad de segmentos una pluralidad de mosaicos y ladrillos, y comprendiendo cada mosaico uno o una pluralidad de ladrillos. El método comprende restringir cada segmento de la imagen actual para contener solamente un mosaico y para que cada mosaico contenga únicamente un ladrillo cuando WPP es habilitado para codificar la imagen actual.
Una segunda solución alternativa incluye un método para codificar una corriente de bits de video. La corriente de bits de video comprende al menos una imagen que contiene una pluralidad de segmentos, comprendiendo cada segmento de la pluralidad de segmentos una pluralidad de mosaicos y ladrillos, y comprendiendo cada mosaico uno o una pluralidad de ladrillos. El método comprende restringir cada mosaico de la imagen actual para contener solamente un ladrillo cuando WPP está habilitado para codificar la imagen actual. Es decir, cuando el valor de entropy_coding_sync_enabled_flag es igual a 1, el valor del brick_splitting_present_flag será igual a 0.
Una segunda solución alternativa incluye un método para codificar una corriente de bits de video. La corriente de bits de video comprende al menos una imagen que contiene una pluralidad de segmentos, comprendiendo cada segmento de la pluralidad de segmentos una pluralidad de mosaicos y ladrillos, y comprendiendo cada mosaico uno o una pluralidad de ladrillos. El método comprende restringir cada segmento de la imagen actual para contener solamente un ladrillo cuando WPP está habilitado para codificar la imagen actual. Es decir, cuando el valor de entropy_coding_sync_enabled_flag es igual a 1, el valor de la variable NumBrickInCurrSlice será igual a 1.
La figura 4 ilustra una corriente 400 de bits de video configurada para implementar WPP 450. Tal como se utiliza en la presente memoria la corriente 400 de bits de video también se puede denominar como una corriente de bits de video codificado, una corriente de bits, o variaciones de las mismas. Tal como se muestra en la figura 4, la corriente 400 de bits comprende un conjunto 402 de parámetros de secuencia (SPS), un conjunto 404 de parámetros de imagen (PPS), una cabecera 406 de segmento, y datos 408 de imagen.
El SPS 402 contiene datos que son comunes a todas las imágenes en una secuencia de imágenes (SOP). En contraste, el PPS 404 contiene datos que son comunes a la imagen completa. La cabecera 406 de segmento contiene información acerca del segmento actual tal como, por ejemplo, el tipo de segmento, cuál de las imágenes de referencia será utilizada, y así sucesivamente. El SPS 402 y el PPS 404 genéricamente se pueden denominar como un conjunto de parámetros. El SPS 402, el PPS 404, y la cabecera 406 de segmento son tipos de unidades de Capa de Abstracción de Red (NAL). Una unidad NAL es una estructura de sintaxis que contiene una indicación del tipo de datos a seguir (por ejemplo, datos de video codificads). Las unidades NAL son clasificadas en unidades de capa de codificación de video (VCL) y unidades NAL no-VCL. Las unidades NAL VCL contienen los datos que representan los valores de las muestras en las imágenes de video, y las unidades NAL no-VCL contienen cualquier información adicional asociada tal como conjuntos de parámetros (datos de cabecera importantes que pueden aplicar a un gran número de unidades NAL VCL) e información de mejora complementaria (información de temporización y otros datos complementarios que pueden mejorar la facilidad de uso de la señal de video decodificada pero que no son necesarios para decodificar los valores de las muestras en las imágenes de video). Los expertos en la técnica apreciarán que la corriente 400 de bits puede contener otros parámetros e información en aplicaciones prácticas.
Los datos 408 de imagen de la figura 4 comprenden datos asociados con las imágenes o video que está siendo codificados o decodificados. Los datos 408 de imagen pueden ser simplemente denominados como la carga útil o datos que son llevados en la corriente 400 de bits. Los datos 408 de imagen pueden ser divididos en particiones en una o más imágenes, tal como la imagen 410, la imagen 412, y la imagen 414. Aunque se muestran tres imágenes 410-414 en la figura 4, puede haber presentes una cantidad mayor o menor de imágenes en aplicaciones prácticas.
En una realización, las imágenes 410-414 son divididas en particiones en segmentos, tales como el segmento 416, el segmento 418, y el segmento 420. Aunque se muestran tres segmentos (por ejemplo, segmentos 416-420), puede haber presentes más o menos segmentos en aplicaciones prácticas. En una realización, los segmentos 416-420 son divididos en mosaicos, tal como el mosaico 422, el mosaico 424, y el mosaico 426. Aunque se muestran tres mosaicos (por ejemplo, mosaicos 422-426), puede haber presentes más o menos mosaicos en aplicaciones prácticas. En una realización, los mosaicos 422-426 están divididos en CTB, tal como el CTB 428 y el CTB 430. Aunque se muestran cuarenta CTB (por ejemplo, CTB 428-430), puede haber presentes más o menos CTB en aplicaciones prácticas.
El WPP 450 puede ser empleado para codificar y/o decodificar un segmento (por ejemplo, segmento 416 420). Debido a esto, el w Pp 450 puede ser empleado por un codificador (por ejemplo, codificador 20 de video) o un decodificador (por ejemplo, decodificador 30 de video).
En una realización, el WPP 450 es aplicado al mosaico 424, que es una partición del segmento 416, que es una partición de la imagen 410. El mosaico contiene una pluralidad de CTB, tal como el CTB 428 y el CTB 430. Cada CTB (por ejemplo, CTB 428-430) es un grupo de muestras de un tamaño predefinido que puede ser dividido en particiones en bloques de codificación por un árbol de codificación. La pluralidad de CTB 428 y la pluralidad de CTB 430 se pueden disponer en filas 460, 462, 464, 466, y 468 de CTB y columnas 470, 472, 474, 476, 478, 480, 482, y 484 de CTB. Una fila 460-468 de CTB es un grupo de CTB 428-430 que se extiende horizontalmente entre un límite izquierdo del mosaico 424 y un límite derecho del mosaico 424. Una columna 470-484 de CTB es un grupo de CTB 428-430 que se extiende verticalmente entre un límite superior del mosaico 424 y un límite inferior del mosaico 424. En una realización, el WPP 450 es aplicado a un segmento (por ejemplo, segmento 416) en lugar de un mosaico (por ejemplo, 424). Es decir, los mosaicos son opcionales en algunas realizaciones.
El WPP 450 puede emplear múltiples cadenas de código de computación que operan en paralelo a CTB 428 430 de código. En el ejemplo mostrado, los CTB 428 (sombreados) han sido codificados mientras que los CTB 430 (no sombreados) no han sido codificados todavía. Por ejemplo, una primera cadena de código puede comenzar codificando la fila 460 de CTB en un primer momento. En VVC, una vez que un CTB 428 ha sido codificado en la primera fila 460 de CTB, una segunda cadena de código puede comenzar a codificar la fila 462 de CTB. Una vez que un CTB 428 ha sido codificado en la segunda fila 462 de CTB, una tercera cadena de código puede comenzar a codificar la fila 464 de CTB. Una vez que un CTB 428 ha sido codificado en la tercera fila 464 de CTB, una cuarta cadena de código puede comenzar a codificar la fila 466 de CTB. Una vez que un CTB 428 ha sido codificado en la cuarta fila 466 de CTB, una quinta cadena de código puede comenzar a codificar una quinta fila 468 de CTB. Esto da como resultado el patrón como se muestra en la figura 4. Se pueden emplear cadenas de código adicionales según se desee. Es decir, se puede repetir el proceso de inicio de una nueva fila de CTB después que un CTB en una fila previa ha sido codificado. Este mecanismo crea un patrón con una apariencia tipo frente de onda, y por lo tanto el nombre WPP 450. Algunos mecanismos de codificación de video codifican un CTB 430 actual basándose en un CTB 428 codificado situado encima o a la izquierda del CTB 430 actual. En VVC, el WPP 450 deja un retraso de codificación de un CTB 430 entre el inicio de cada cadena de código para garantiza que dichos CTB 428 ya hayan sido codificados después de conseguir cualquier CTB 430 actual que ha de ser codificado. En HEVC, el WPP 450 deja un retraso de codificación de dos CTB 430 entre el inicio de cada cadena de código para garantizar que dichos CTB 428 ya hayan sido codificados después de conseguir cualquier CTB 430 actual que ha de ser codificado.
Los CTB 428 son codificados en una corriente de bits (por ejemplo, corriente 400 de bits) en filas 460-468 de CTB. Por consiguiente, cada fila 460-468 de CTB puede ser un subconjunto direccionable de forma independiente del mosaico 424 en la corriente 400 de bits. Por ejemplo, cada fila 460-468 de CTB puede ser direccionada en un punto 486 de entrada. Un punto 486 de entrada es una ubicación de bit en la corriente 400 de bits que contiene un primer bit de datos de video para un subconjunto correspondiente del mosaico 424 después que el mosaico 424 es codificado. Cuando se emplea el WPP 450, el punto 486 de entrada es la ubicación de bit que contiene el primer bit de la fila 460-468 correspondiente de CTB. Debido a esto, un número de puntos de entrada (NumEntryPoints) 488 es un número de los puntos 486 de entrada para la fila 460-468 de CTB.
Utilizando el mosaico 424 en la figura 4 como un ejemplo, un codificador añade un bit de final de fila de CTB al final de cada fila 460-468 de CTB en WPP. El bit de final de fila de CTB señaliza el final de la fila 460-468 de CTB al decodificador. El codificador entonces realiza la alineación de bytes para añadir bits de alineación de bytes como relleno. Además, el codificador también añade un bit de final de mosaico al final de la fila 468 de CTB en WPP. El bit de final de mosaico señaliza el final del mosaico 424 al decodificador. El codificador entonces realiza la alineación de bytes para añadir bits de alineación de bytes como relleno. Debido a que el final de la fila 468 de CTB es también el final del mosaico 424, el codificador en WPP codifica el bit de final de fila de CTB y el bit de final de mosaico después que el último CTB 430 en la fila 468 de CTB ha sido codificado y realiza la alineación de bytes dos veces. Por lo tanto, existe una duplicación de señalización y alineación de bytes en WPP.
En la presente memoria se describen técnicas que impiden la duplicación de señalización y alineación de bytes en WPP. Al eliminar la duplicación de señalización y alineación de bytes en WPP, se reducen el número de bits utilizados para señalizar el final de un mosaico y el número de bits utilizados como relleno. Al reducir el número de bits necesarios para WPP, el codificador/decodificador (también conocido como “códec”) en la codificación de video se mejora con relación a los códecs actuales. Como un asunto práctico, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o visualizan videos.
A diferencia del WPP antes descrito, la presente descripción solamente señaliza el bit de final de mosaico y realiza la alineación de bytes solamente una vez después que el último CTB 430 en la fila 468 de CTB ha sido codificado. Al hacer esto, el número de bits de señalización y el número de bits utilizados como relleno se reducen con relación a WPP.
La figura 5 es una realización de un método 500 para decodificar una corriente de bits de video codificado implementada por un decodificador de video (por ejemplo, decodificador 30 de video). El método 500 puede ser llevado a la práctica después de que la corriente de bits decodificada ha sido directa o indirectamente recibida procedente de un codificador de video (por ejemplo, codificador 20 de video). El método 500 mejora el proceso de decodificación reduciendo el número de bits de señalización y el número de bits utilizados como relleno después de la codificación del último CTB (por ejemplo, CTB 430) en la última fila de CTB (por ejemplo, fila 468 de CTB) de un mosaico (por ejemplo, mosaico 424). Por lo tanto, como una cuestión práctica, se mejora el rendimiento de un códec, lo cual conduce a una mejor experiencia de usuario.
En el bloque 502, el decodificador de video recibe la corriente de bits de video codificada (por ejemplo, corriente 400 de bits). En una realización, la corriente de bits de video codificada contiene una imagen (por ejemplo, imagen 410). En una realización, la imagen incluye una o más segmentos (por ejemplo, segmentos 416-420) que tienen uno o más mosaicos (por ejemplo, mosaicos 422-426). En una realización, cada mosaico contiene una pluralidad de bloques de árbol de codificación (por ejemplo, CTB 428-430).
En el bloque 504, el decodificador de video encuentra un bit de final de mosaico con un primer valor y bits de alineación de bytes en la corriente de bits de video codificada. En una realización, el bit de final de mosaico es designado end_of_tile_one_bit. En una realización, el primer valor es uno (1). En una realización, los bits de alineación de bytes son el resultado de un proceso de alineación de bytes realizado por un codificador (por ejemplo, el codificador 20 de video). En una realización, el bit de final de mosaico con el primer valor y los bits de alineación de bytes indican que un CTB actual (por ejemplo, CTB 430) procedente de la pluralidad de CTB (por ejemplo, CTB 428-430) es un último CTB en un mosaico (por ejemplo, mosaico 424).
En el bloque 506, el decodificador de video encuentra un bit de final de fila de CTB con el primer valor y los bits de alineación de bytes en la corriente de bits de video codificado. En una realización, el bit de final de fila de CTB es designado end_of_subset_bit. En una realización, el primer valor es uno (1). En una realización, los bits de alineación de bytes son el resultado de un proceso de alineación de bytes realizado por un codificador (por ejemplo, el codificador 20 de video). En una realización, el bit de final de fila de CTB con el primer valor y los bits de alineación de bytes indican que WPP está habilitado y que el CTB actual (por ejemplo, CTB 430) de la pluralidad de CTB (por ejemplo, CTB 428-430) es el último Ct B en una fila de Ct B (por ejemplo, filas 460-466 de CTB) pero no el último CTB en el mosaico (por ejemplo, mosaico 424).
En el bloque 508, el decodificador de video reconstruye la pluralidad de CTB en el mosaico basándose en el bit de final de mosaico con el primer valor, el bit de final de fila de CTB con el primer valor, y los bits de alineación de bytes. En una realización, una imagen es generada basándose en la pluralidad de CTB como se han reconstruido. En una realización, la imagen puede ser presentada para un usuario de un dispositivo electrónico (por ejemplo, un teléfono inteligente, tableta, un portátil, ordenador personal, etc.).
La figura 6 es una realización de un método 600 de codificación de una corriente de bits de video implementada por un codificador de video (por ejemplo, codificador 20 de video). El método 600 puede ser realizado cuando una imagen (por ejemplo, procedente de un video) ha de ser codificada en una corriente de bits de video y después transmitida a un decodificador de video (por ejemplo, decodificador 30 de video). El método 600 mejora el proceso de codificación reduciendo el número de bits de señalización y el número de bits utilizados como relleno después de la codificación del último CTB (por ejemplo, CTB 430) en la última fila de CTB (por ejemplo, fila 468 de CTB) de un mosaico (por ejemplo, mosaico 424). Por lo tanto, como una cuestión práctica, se mejora el rendimiento de un códec, lo cual conduce a una mejor experiencia de usuario.
En el bloque 602, el codificador de video divide en particiones una imagen (por ejemplo, imagen 410) en uno o más segmentos (por ejemplo, segmentos 416-420). En una realización, cada segmento contiene uno o más mosaicos (por ejemplo, mosaicos 422-426). En una realización, cada mosaico contiene una pluralidad de bloques de árbol de codificación (por ejemplo, CTB 428-430).
En el bloque 604, el codificador de video codifica un bit de final de mosaico con un primer valor y bits de alineación de bytes en la corriente de bits de video cuando un CTB actual procedente de la pluralidad de CTB es un último CTB en un mosaico. En una realización, el bit de final de mosaico es designado end_of_tile_one_bit. En una realización, el primer valor es uno (1). En una realización, los bits de alineación de bytes son el resultado de un proceso de alineación de bit ejecutado por el codificador (por ejemplo, el codificador 20 de video). En una realización, el bit de final de mosaico con el primer valor y los bits de alineación de bytes indican que un CTB actual (por ejemplo, CTB 430) de la pluralidad de CTB (por ejemplo, CTB 428-430) es un último CTB en un mosaico (por ejemplo, mosaico 424).
En el bloque 606, el codificador de video codifica un bit de final de fila de CTB con el primer valor y bits de alineación de bytes en la corriente de bits de video cuando WPP está habilitado y cuando el CTB actual es el último CTB en una fila de CTB pero no el último CTB en el mosaico. En una realización, el bit de final de fila de CTB es designado end_of_subset_bit. En una realización, el primer valor es uno (1). En una realización, los bits de alineación de bytes son el resultado de un proceso de alineación de bits realizado por el codificador (por ejemplo, el codificador 20 de video). En una realización, el bit de final de fila de CTB con el primer valor y los bits de alineación de bytes indican que WPP está habilitado y que el CTB actual (por ejemplo, CTB 430) de la pluralidad de CTB (por ejemplo, CTB 428-430) es el último Ct B en una fila de Ct B (por ejemplo, filas 460-466 de CTB) pero no el último CTB en el mosaico (por ejemplo, mosaico 424).
En el bloque 608, el codificador de video almacena la corriente de bits de video para transmisión hacia el decodificador de video. En una realización, el codificador de video transmite la corriente de bits de video hacia el decodificador de video.
Las siguientes sintaxis y semántica pueden ser empleadas para implementar las realizaciones descritas en la presente memoria. La siguiente descripción está relacionada con el texto base, el cual es la última especificación del borrador de VVC. En otras palabras, solo se describe delta, mientras que los textos en el texto base que no son mencionados a continuación se aplican tal cual son. El texto añadido con relación al texto base se muestra en negritas, y el texto eliminado se muestra en itálicas.
La figura 7 es un diagrama esquemático de un dispositivo 700 de codificación de video (por ejemplo, un codificador 20 de video o un decodificador 30 de video) según una realización de la descripción. El dispositivo 700 de codificación de video es adecuado para implementar las realizaciones expuestas como se ha descrito en la presente memoria. El dispositivo 700 de codificación de video comprende puertos 710 de entrada y unidades receptoras (Rx) 720 para recibir datos; un procesador, unidad lógica, o unidad de procesamiento central (CPU) 730 para procesar los datos; unidades transmisoras (Tx) 740 y puertos 750 de salida para transmitir los datos; y una memoria 760 para almacenar los datos. El dispositivo 700 de codificación de video también puede comprender componentes óptico-a-eléctrico (OE) y componentes eléctrico-a-óptico (EO) acoplados a los puertos 710 de entrada, las unidades receptoras 720, las unidades transmisoras 740, y los puertos 750 de salida para salida o entrada de señales ópticas o eléctricas.
El procesador 730 es implementado por hardware y software. El procesador 730 puede ser implementado como uno o más chips CPU, núcleos (por ejemplo, como un procesador multi-núcleo), agrupaciones de puertas programable en campo (FPGA), circuitos integrados de aplicación específica (ASIC), y procesadores de señal digital (DSP). El procesador 730 está en comunicación con los puertos 710 de entrada, unidades receptoras 720, unidades transmisoras 740, puertos 750 de salida, y memoria 760. El procesador 730 comprende un módulo 770 de codificación. El módulo 770 de codificación implementa las realizaciones expuestas antes descritas. Por ejemplo, el módulo 770 de codificación implementa, procesa, prepara, o proporciona las diversas funciones de códec. La inclusión del módulo 770 de codificación proporciona por tanto una mejora sustancial a la funcionalidad del dispositivo 700 de codificación de video y efectúa una transformación del dispositivo 700 de codificación de video a un estado diferente. Alternativamente, el módulo 770 de codificación es implementado como instrucciones almacenadas en la memoria 760 y es ejecutado por el procesador 730.
El dispositivo 700 de codificación de video también puede incluir dispositivos 780 de entrada y/o salida (I/O) para comunicar datos hacia y desde un usuario. Los dispositivos 780 de I/O pueden incluir dispositivos de salida tales como un dispositivo de visualización para mostrar datos de video, altavoces para emitir datos de audio, etc. Los dispositivos 780 de I/O también pueden incluir dispositivos de entrada, tales como un teclado, ratón, rueda de seguimiento, etc., y/o interfaces correspondientes para interactuar con dichos dispositivos de salida.
La memoria 760 comprende uno o más discos, unidades de cinta, y unidades de estado sólido y se puede utilizar como un dispositivo de almacenamiento de datos de exceso de flujo, para almacenar programas cuando dichos programas son seleccionados para ejecución, y para almacenar instrucciones y datos que son leídos durante la ejecución del programa. La memoria 760 puede ser volátil y/o no volátil y puede ser memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria ternaria de contenido direccionable (TCAM), y/o memoria de acceso aleatorio estática (SRAM).
La figura 8 es un diagrama esquemático de una realización de un medio 800 para codificación. En una realización, el medio 800 para codificación es implementado en un dispositivo 802 de codificación de video (por ejemplo, un codificador 20 de video o un decodificador 30 de video). El dispositivo 802 de codificación de video incluye medios 801 de recepción. El medio 801 de recepción está configurado para recibir una imagen a codificar o para recibir una corriente de bits a decodificar. El dispositivo 802 de codificación de video incluye medios 807 de transmisión acoplados al medio 801 de recepción. El medio 807 de transmisión está configurado para transmitir la corriente de bits a un decodificador o para transmitir una imagen decodificada a un medio de visualización (por ejemplo, uno de los dispositivos 780 de I/O).
El dispositivo 802 de codificación de video incluye un medio 803 de almacenamiento. El medio 803 de almacenamiento está acoplado al menos a uno de los medios 801 de recepción o a los medios 807 de transmisión. El medio 803 de almacenamiento está configurado para almacenar instrucciones. El dispositivo 802 de codificación de video también incluye medios 805 de procesamiento. El medio 805 de procesamiento está acoplado al medio 803 de almacenamiento. El medios 805 de procesamiento está configurado para ejecutar las instrucciones almacenadas en el medio 803 de almacenamiento para ejecutar los métodos descritos en la presente memoria.
Debe entenderse que las etapas de los métodos ejemplares establecidos en la presente memoria no necesariamente requieren ser realizados en el orden descrito, y el orden de las etapas de dichos métodos debe entenderse como simplemente ejemplar. De modo similar, se pueden incluir etapas adicionales en dichos métodos, y algunas etapas se pueden omitir o combinar, en métodos consistentes con diversas realizaciones de la presente descripción.

Claims (19)

REIVINDICACIONES
1. Un método de decodificación implementado por un decodificador de video según VVC, que comprende: recibir, mediante el decodificador de video, una corriente de bits de video codificada, en donde la corriente de bits de video codificada contiene datos codificados que representan una imagen, incluyendo la imagen uno o más segmentos que tienen un mosaico, conteniendo cada mosaico solo un ladrillo, y conteniendo cada ladrillo una pluralidad de bloques de árbol de codificación (CTB);
analizar, mediante el decodificador de video, un conjunto de parámetros para determinar si está habilitado el procesamiento paralelo de frente de onda para la imagen actual y/o para el segmento actual;
analizar, mediante el decodificador de vídeo, los datos de segmento del segmento actual para obtener ladrillos y CTB dentro de cada ladrillo;
analizar, mediante el decodificador de video, un bit de final de ladrillo con un primer valor y bits de alineación de bytes en la corriente de bits de video codificada, indicando el bit de final de ladrillo con el primer valor que un CTB actual procedente de la pluralidad de CTB es un último CTB en un ladrillo;
analizar, mediante el decodificador de video, un bit de final de fila de CTB con el primer valor y los bits de alineación de bytes en la corriente de bits de video codificada, indicando el bit de final de fila de CTB con el primer valor que el procesamiento paralelo de forma de onda (WPP) está habilitado y que el CTB actual procedente de la pluralidad de CTB es el último CTB en una fila de CTB pero no el último CTB en el ladrillo; y reconstruir, mediante el decodificador de video, la pluralidad de CTB en el ladrillo basándose en el bit de final de ladrillo con el primer valor, el bit de final de fila de CTB con el primer valor, y los bits de alineación de bytes.
2. El método según la reivindicación 1, en donde el bit de final de ladrillo es designado end_of_brick_one_bit.
3. El método de según cualquiera de las reivindicaciones 1 a 2, en donde el bit de final de fila de CTB es designado end_of_subset_bit.
4. El método según cualquiera de las reivindicaciones 1 a 3, en donde el WPP es habilitado por un indicador situado en un conjunto de parámetros.
5. El método según la reivindicación 4, en donde el WPP es habilitado por un indicador designado como entropy_coding_sync_enabled_flag.
6. El método según la reivindicación 4, en donde el primer valor es uno (1) cuando el WPP está habilitado.
7. El método según cualquiera de las reivindicaciones 1 a 6, que además comprende presentar una imagen generada basándose en la pluralidad de CTB tal como han sido reconstruidos.
8. Un método de codificación implementado por un codificador de video, según VVC, comprendiendo el método:
dividir en particiones, mediante el codificador de video, una imagen en uno o más segmentos, conteniendo cada segmento un solo mosaico, conteniendo cada mosaico un solo ladrillo, y conteniendo cada ladrillo una pluralidad de bloques de árbol de codificación CTB;
codificar, mediante el codificador de vídeo, un conjunto de parámetros para determinar si el procesamiento paralelo de frente de onda está habilitado para la imagen actual y/o para el segmento actual;
codificar, mediante el codificador de vídeo, datos de segmento del segmento actual para obtener ladrillos y CTU dentro de cada ladrillo;
codificar, mediante el codificador de video, un bit de final de ladrillo con un primer valor y bits de alineación de bytes en la corriente de bits de video cuando un CTB actual procedente de la pluralidad de CTB es un último CTB en un ladrillo;
codificar, mediante el codificador de video, un bit de final de fila de CTB con el primer valor y bits de alineación de bytes en la corriente de bits de video cuando el procesamiento paralelo de forma de onda (WPP) está habilitado y cuando el CTB actual es el último CTB en una fila de CTB pero no el último CTB en el ladrillo.
9. El método según la reivindicación 8, en donde el bit de final de ladrillo es designado end_of_brick_one_bit.
10. El método según cualquiera de las reivindicaciones 8 a 9, en donde el bit de final de fila de CTB es designado end_of_subset_bit.
11. El método según cualquiera de las reivindicaciones 8 a 10, en donde el WPP es habilitado por un indicador situado en un conjunto de parámetros.
12. El método según la reivindicación 11, en donde el WPP es habilitado por un indicador designado como entropy_coding_sync_enabled_flag.
13. El método según la reivindicación 11, en donde el primer valor es uno (1) cuando el WPP está habilitado.
14. El método según la reivindicación 8, que además comprende transmitir la corriente de bits de video hacia el decodificador de video.
15. Un decodificador (30) que comprende circuitos de procesamiento para realizar el método según cualquiera de las reivindicaciones 1 a 7.
16. Un codificador (20) que comprende circuitos de procesamiento para realizar el método según cualquiera de las reivindicaciones 8 a 14;
17. Un producto de programa informático que comprende un código de programa para realizar el método según cualquiera de las reivindicaciones 1 a 7 o cualquiera de las reivindicaciones 8 a 14 cuando se ejecuta en un ordenador o un procesador.
18. Un medio legible por ordenador no transitorio que lleva un código de programa que, cuando es ejecutado por un dispositivo informático, hace que el dispositivo informático realice el método según cualquiera de las reivindicaciones 1 a 7 o cualquiera de las reivindicaciones 8 a 14.
19. Un medio de almacenamiento no transitorio que incluye una corriente de bits codificada según VVC, siendo generada la corriente de bits dividiendo un fotograma de una señal de video o de una señal de imagen en una pluralidad de segmentos, y que comprende:
datos codificados que representan una imagen, incluyendo la imagen uno o más segmentos que tienen un solo mosaico, conteniendo cada mosaico solo un ladrillo, y conteniendo cada ladrillo una pluralidad de bloques de árbol de codificación CTB;
datos de segmento del segmento actual para obtener ladrillos y CTU dentro de cada ladrillo;
un bit de final de ladrillo con un primer valor y bits de alineación de bytes en la corriente de bits de video codificada, indicando el bit de final de ladrillo con el primer valor que un CTB actual procedente de la pluralidad de CTB es un último CTB en un ladrillo; y
un bit de final de fila de CTB con el primer valor y los bits de alineación de bytes en la corriente de bits de video codificada, indicando el bit de final de fila de CTB con el primer valor que el procesamiento paralelo de forma de onda (WPP) está habilitado y que el CTB actual procedente de la pluralidad de CTB es el último CTB en una fila de CTB pero no el último CTB en el ladrillo.
ES20801493T 2019-05-03 2020-04-27 Procesamiento paralelo de frente de onda para mosaico, ladrillo y segmento Active ES2980470T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962843047P 2019-05-03 2019-05-03
US201962864966P 2019-06-21 2019-06-21
PCT/US2020/030104 WO2020226930A1 (en) 2019-05-03 2020-04-27 Wavefront parallel processing for tile, brick, and slice

Publications (1)

Publication Number Publication Date
ES2980470T3 true ES2980470T3 (es) 2024-10-01

Family

ID=73051715

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20801493T Active ES2980470T3 (es) 2019-05-03 2020-04-27 Procesamiento paralelo de frente de onda para mosaico, ladrillo y segmento

Country Status (11)

Country Link
US (3) US11889095B2 (es)
EP (2) EP4373093A1 (es)
JP (2) JP7753101B2 (es)
KR (2) KR20250038830A (es)
CN (3) CN113853786A (es)
ES (1) ES2980470T3 (es)
HU (1) HUE066635T2 (es)
MX (2) MX2021013468A (es)
PL (1) PL3957071T3 (es)
PT (1) PT3957071T (es)
WO (1) WO2020226930A1 (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6982253B2 (ja) * 2018-10-31 2021-12-17 日本電信電話株式会社 復号装置、符号化装置、復号方法、符号化方法、及びプログラム
US20230140628A1 (en) * 2021-11-04 2023-05-04 Meta Platforms, Inc. Novel buffer format for a two-stage video encoding process

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1656793B1 (en) * 2003-09-07 2019-11-27 Microsoft Technology Licensing, LLC Slice layer in video codec
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US10244239B2 (en) * 2010-12-28 2019-03-26 Dolby Laboratories Licensing Corporation Parameter set for picture segmentation
KR102158629B1 (ko) * 2011-12-29 2020-09-22 엘지전자 주식회사 비디오 인코딩 및 디코딩 방법과 이를 이용하는 장치
US9749661B2 (en) * 2012-01-18 2017-08-29 Qualcomm Incorporated Sub-streams for wavefront parallel processing in video coding
KR102489001B1 (ko) * 2012-03-22 2023-01-18 엘지전자 주식회사 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
JP6290924B2 (ja) * 2013-01-07 2018-03-07 ノキア テクノロジーズ オサケユイチア ビデオ・コーディングおよびデコーディングのための方法と装置
US9336558B2 (en) * 2013-09-27 2016-05-10 Apple Inc. Wavefront encoding with parallel bit stream encoding
US10097839B2 (en) * 2014-12-19 2018-10-09 Qualcomm Incorporated Palette mode for subsampling format
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation

Also Published As

Publication number Publication date
KR102780676B1 (ko) 2025-03-11
WO2020226930A1 (en) 2020-11-12
CN115174921B (zh) 2023-04-04
US20220060726A1 (en) 2022-02-24
EP3957071B1 (en) 2024-04-03
PT3957071T (pt) 2024-06-07
JP7753101B2 (ja) 2025-10-14
JP2024103513A (ja) 2024-08-01
HUE066635T2 (hu) 2024-08-28
KR20250038830A (ko) 2025-03-19
US12432366B2 (en) 2025-09-30
US20240129504A1 (en) 2024-04-18
PL3957071T3 (pl) 2024-07-08
EP4373093A1 (en) 2024-05-22
MX2021013468A (es) 2022-02-11
MX2024001982A (es) 2024-03-04
CA3136342A1 (en) 2020-11-12
KR20220003078A (ko) 2022-01-07
EP3957071A1 (en) 2022-02-23
CN115174921A (zh) 2022-10-11
EP3957071A4 (en) 2022-06-15
US20260067483A1 (en) 2026-03-05
CN117857797A (zh) 2024-04-09
CN113853786A (zh) 2021-12-28
JP2022531416A (ja) 2022-07-06
US11889095B2 (en) 2024-01-30

Similar Documents

Publication Publication Date Title
US12058383B2 (en) Slicing and tiling for sub-image signaling in video coding
ES2981234T3 (es) Candidato de señalización para estructuras de listas de imágenes de referencia
ES2872899T3 (es) Procedimiento y aparato para señalizar selectivamente diferentes números de estructuras de sintaxis de información de señales de vídeo en un conjunto de parámetros
ES2977132T3 (es) Métodos y sistemas de restricción de bipredicción en codificación de vídeo
US10645404B2 (en) Generic use of HEVC SEI messages for multi-layer codecs
ES2877048T3 (es) Diseño de valor de Poc para codificación de vídeo multicapa
ES2947509T3 (es) Manejo de herramienta de codificación de flujo óptico bidireccional (BIO) para remuestreo de imagen de referencia en codificación de video
US20150382018A1 (en) Recovery point sei message in multi-layer video codecs
ES3031245T3 (en) Sub-picture based random access
ES2992052T3 (es) Señalización de grupos de mosaicos en codificación de video
US20260067483A1 (en) Wavefront parallel processing for tile, brick, and slice
CN113170098B (zh) 视频译码的约束预测模式
ES2966494T3 (es) Señalización de modo intra luma
BR112021012649A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
CA3136342C (en) An encoder, a decoder and corresponding methods
BR112016021476B1 (pt) Método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112016029356B1 (pt) Método para decodificar e codificar e dispositivo para decodificar dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc)