ES3033548T3 - Luma mapping with chroma scaling adaptation parameter set in video coding - Google Patents

Luma mapping with chroma scaling adaptation parameter set in video coding

Info

Publication number
ES3033548T3
ES3033548T3 ES20763125T ES20763125T ES3033548T3 ES 3033548 T3 ES3033548 T3 ES 3033548T3 ES 20763125 T ES20763125 T ES 20763125T ES 20763125 T ES20763125 T ES 20763125T ES 3033548 T3 ES3033548 T3 ES 3033548T3
Authority
ES
Spain
Prior art keywords
aps
lmcs
parameters
alf
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
ES20763125T
Other languages
English (en)
Inventor
Ye-Kui Wang
Fnu Hendry
Jianle Chen
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 ES3033548T3 publication Critical patent/ES3033548T3/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/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/66Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission for reducing bandwidth of signals; for improving efficiency of transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • 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/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • 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/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Error Detection And Correction (AREA)

Abstract

Se describe un mecanismo de codificación de vídeo. Este mecanismo incluye la recepción de un flujo de bits que comprende un segmento y un conjunto de parámetros de adaptación (APS) de mapeo de luminancia con escalado de croma (LMCS), que incluye parámetros LMCS. El mecanismo también incluye la determinación de que el APS LMCS esté referenciado en los datos relacionados con el segmento. El mecanismo también incluye la decodificación del segmento utilizando parámetros LMCS del APS LMCS, basándose en la referencia al APS LMCS. El mecanismo también incluye el reenvío del segmento para su visualización como parte de una secuencia de vídeo decodificada. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Mapeo de luma con parámetros de adaptación de escalado de croma establecidos en la codificación de vídeo
Campo técnico
La presente descripción está relacionada en general con la codificación de vídeo, y está relacionada específicamente con la señalización eficiente de parámetros de la herramienta de codificación usados para comprimir datos de vídeo en la codificación de vídeo.
Antecedentes
La cantidad de datos de vídeo necesarios para representar incluso un vídeo relativamente corto puede ser sustancial, lo que puede dar lugar a dificultades cuando los datos se van a transmitir o comunicar de otro modo a través de una red de comunicaciones con capacidad de ancho de banda limitada. Por lo tanto, los datos de vídeo generalmente se comprimen antes de comunicarse a través de las redes de telecomunicaciones modernas. El tamaño de un vídeo también podría ser un problema cuando el vídeo se almacena en un dispositivo de almacenamiento, debido a que los recursos de memoria pueden estar limitados. Los dispositivos de compresión de vídeo suelen usar software y/o hardware en el origen para codificar los datos de vídeo antes de su transmisión o almacenamiento, disminuyendo así la cantidad de datos necesarios para representar imágenes de vídeo digital. Luego, los datos comprimidos son recibidos en el destino por un dispositivo de descompresión de vídeo que decodifica los datos de vídeo. Con recursos de red limitados y demandas cada vez mayores de mayor calidad de vídeo, son deseables técnicas mejoradas de compresión y descompresión que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de imagen.
El documento de Y-K WANG (HUAINEI) ET AL: "AHG17: On header parameter set (HPS)", 125. REUNIÓN MPEG; 20190114- 20190118; MARRAKECH; (GRUPO DE EXPERTOS DE IMÁGENES EN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), N.° m45394, 16 de enero de 2019(16-01-2019), describe el diseño del conjunto de parámetros de adaptación (APS) para el transporte de parámetros ALF.
El documento de HENDRY ET AL: "Aps partial update APS update with one or multiple references", 100. REUNIÓN MPEG; 30-4-2012 4-5-2012; GINEBRA; (GRUPO DE EXPERTOS de IMÁGENES EN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), N° m24320, 16 de abril de 2012 (16-04-2012), describe una actualización de APS con una o múltiples referencias.
Compendio
En una realización, la descripción incluye un método implementado en un decodificador, comprendiendo el método: recibir, por un receptor del decodificador, un flujo de bits que comprende un conjunto de parámetros de adaptación (APS) de mapeo de luminancia con escala de croma (LMCS) que incluye parámetros LMCS asociados con un segmento codificado, en donde un APS es una estructura de sintaxis usada para señalizar información para segmentos, los parámetros LMCS se usan para un LMCS que es un proceso que escala valores de croma basándose en mapeos de luma; determinar, por el procesador, que el APS LMCS está referenciado en datos relacionados con el segmento codificado; decodificar, por el procesador, el segmento codificado usando parámetros LMCS del APS LMCS, en donde el flujo de bits comprende, además, un filtro de bucle adaptativo, ALF, el APS que contiene parámetros ALF, en donde los parámetros ALF se usan para un ALF que es un filtro que está controlado por parámetros incluidos en el APS ALF; en donde cada APS incluye un identificador, ID, de APS seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS; y en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID de APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS; en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS. Un APS se usa para mantener datos relacionados con múltiples segmentos en múltiples imágenes. La presente descripción describe varias mejoras relacionadas con APS. En el presente ejemplo, los parámetros LMCS se incluyen en un APS LMCS. Los parámetros LMCS/reshaper (remodelador) pueden cambiar aproximadamente una vez por segundo. Las secuencias de vídeo pueden visualizar de treinta a sesenta imágenes por segundo. Como tal, es posible que los parámetros LMCS no cambien durante treinta a sesenta fotogramas. La inclusión de parámetros LMCS en un APS LMCS en lugar de un conjunto de parámetros a nivel de imagen reduce significativamente la codificación redundante de parámetros LMCS (por ejemplo, en un factor de treinta a sesenta). Una cabecera de segmento y/o una cabecera de imagen asociada con un segmento pueden hacer referencia al APS LMCS relevante. De esta manera, los parámetros LMCS solo se codifican cuando cambian los parámetros LMCS de un segmento. En consecuencia, el empleo de un APS LMCS para codificar parámetros LMCS aumenta la eficiencia de codificación y, por lo tanto, reduce el uso de recursos de red, recursos de memoria y/o recursos de procesamiento en el codificador y el decodificador.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona, en donde el flujo de bits comprende, además, una cabecera de segmento, en donde el segmento codificado hace referencia a la cabecera de segmento, y en donde la cabecera de segmento contiene los datos relacionados con el segmento codificado y hace referencia al APS LMCS.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona, en donde el flujo de bits comprende, además, una lista de escalado APS que contiene parámetros de lista de escalado, en donde los parámetros de lista de escalado están incluidos en una lista de escalado para un proceso de transformación.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde cada APS se identifica por una combinación de un tipo de parámetro y un ID de APS.
En una realización, la descripción incluye un método implementado en un codificador, comprendiendo el método: determinar, por un procesador del codificador, parámetros LMCS para su aplicación a un segmento; codificar, por el procesador, el segmento en un flujo de bits como un segmento codificado; codificar, por el procesador, los parámetros LMCS en el flujo de bits en un APS LMCS; codificar en el flujo de bits, por el procesador, datos relacionados con el segmento codificado que hacen referencia al APS LMCS, en donde el flujo de bits comprende, además, un filtro de bucle adaptativo, ALF, el APS que contiene parámetros ALF, en donde cada APS incluye un identificador, ID, de APS seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS, en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID de APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS; en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS. Un APS se usa para mantener datos relacionados con múltiples segmentos en múltiples imágenes. La presente descripción describe varias mejoras relacionadas con APS. En el presente ejemplo, los parámetros LMCS se incluyen en un APS LMCS. Los parámetros LMCS/reshaper pueden cambiar aproximadamente una vez por segundo. Las secuencias de vídeo pueden visualizar de treinta a sesenta imágenes por segundo. Como tal, es posible que los parámetros LMCS no cambien durante treinta a sesenta fotogramas. La inclusión de parámetros LMCS en un APS LMCS en lugar de un conjunto de parámetros a nivel de imagen reduce significativamente la codificación redundante de parámetros LMCS (por ejemplo, en un factor de treinta a sesenta). Una cabecera de segmento y/o una cabecera de imagen asociada con un segmento pueden hacer referencia al APS LMCS relevante. De esta manera, los parámetros LMCS solo se codifican cuando cambian los parámetros LMCS de un segmento. En consecuencia, el empleo de un APS LMCS para codificar parámetros LMCS aumenta la eficiencia de codificación y, por lo tanto, reduce el uso de recursos de red, recursos de memoria y/o recursos de procesamiento en el codificador y el decodificador.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, que comprende, además, codificar, por el procesador, una cabecera de segmento en el flujo de bits, en donde el segmento codificado hace referencia a la cabecera de segmento y en donde la cabecera de segmento contiene los datos relacionados con el segmento codificado y hace referencia al APS LMCS.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde cada APS se identifica por una combinación de un tipo de parámetro y un ID de APS.
En una realización, la descripción incluye un dispositivo de codificación de vídeo que comprende: un procesador, un receptor acoplado al procesador, una memoria acoplada al procesador, y un transmisor acoplado al procesador, en donde el procesador, el receptor, la memoria y el transmisor configurados para realizar el método de cualquiera de los aspectos anteriores.
En una realización, la descripción incluye un medio legible por ordenador no transitorio que comprende un producto de programa informático para su uso por un dispositivo de codificación de vídeo, el producto de programa informático que comprende instrucciones ejecutables por ordenador almacenadas en el medio legible por ordenador no transitorio de manera que cuando son ejecutadas por un procesador hacen que el dispositivo de codificación de vídeo realice el método de cualquiera de los aspectos anteriores.
En una realización, la descripción incluye un decodificador que comprende: un medio de recepción para recibir un flujo de bits que comprende un<a>P<s>LMCS que incluye parámetros LMCS asociados con un segmento codificado; un medio de determinación para determinar que el APS LMCS está referenciado en datos relacionados con el segmento codificado, en donde el flujo de bits comprende, además, un filtro de bucle adaptativo, ALF, el APS que contiene parámetros ALF; en donde cada APS incluye un identificador, ID, de APS, seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS, en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID de APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS; un medio de decodificación para decodificar el segmento codificado usando parámetros LMCS del APS LMCS; en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el decodificador está configurado, además, para realizar el método de cualquiera de los aspectos anteriores.
En una realización, la descripción incluye un codificador que comprende: un medio de determinación para determinar los parámetros LMCS para su aplicación a un segmento; un medio de codificación para: codificar el segmento en un flujo de bits como un segmento codificado; codificar los parámetros LMCS en el flujo de bits en un conjunto de parámetros de adaptación (APS) LMCS; y codificar en el flujo de bits datos relacionados con el segmento codificado que hacen referencia al APS LMCS, en donde el flujo de bits comprende, además, un filtro de bucle adaptativo, ALF, el APS que contiene parámetros ALF; en donde cada APS incluye un identificador ID, de APS, seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS, en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS; en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el codificador está configurado, además, para realizar el método de cualquiera de los aspectos anteriores.
Para mayor claridad, uno cualquiera de las realizaciones anteriores puede combinarse con uno cualquiera o más de las otras realizaciones anteriores para crear una nueva realización dentro del alcance de la presente descripción.
Estas y otras características se entenderán más claramente a partir de la siguiente descripción detallada tomada junto con los dibujos adjuntos y las reivindicaciones.
Breve descripción de los dibujos
Para una comprensión más completa de esta descripción, se hace referencia ahora a la siguiente descripción breve, tomada junto con los dibujos adjuntos y la descripción detallada, en donde los números de referencia iguales representan partes iguales.
La FIG. 1 es un diagrama de flujo de un ejemplo del método para codificar una señal de vídeo.
La FIG. 2 es un diagrama esquemático de un ejemplo del sistema de codificación y decodificación (códec) para codificación de vídeo.
La FIG. 3 es un diagrama esquemático que ilustra un ejemplo del codificador de vídeo.
La FIG. 4 es un diagrama esquemático que ilustra un ejemplo del decodificador de vídeo.
La FIG. 5 es un diagrama esquemático que ilustra un ejemplo del flujo de bits que contiene múltiples tipos de conjuntos de parámetros de adaptación (APS) que incluyen diferentes tipos de parámetros de la herramienta de codificación.
La FIG. 6 es un diagrama esquemático que ilustra un ejemplo del mecanismo para asignar identificadores (ID) de APS a diferentes tipos de APS en diferentes espacios de valores.
La FIG. 7 es un diagrama esquemático de un ejemplo del dispositivo de codificación de vídeo.
La FIG. 8 es un diagrama de flujo de un ejemplo del método de codificación de una secuencia de vídeo en un flujo de bits empleando una pluralidad de tipos de APS.
La FIG. 9 es un diagrama de flujo de un ejemplo del método de decodificación de una secuencia de vídeo en un flujo de bits empleando una pluralidad de tipos de APS.
La FIG. 10 es un diagrama esquemático de un ejemplo del sistema para codificar una secuencia de vídeo de imágenes en un flujo de bits empleando una pluralidad de tipos APS.
Descripción detallada
Debe entenderse desde el principio 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 implementarse usando cualquier número de técnicas, ya sean conocidas actualmente o existentes. La descripción no debe de ninguna manera estar limitada a las implementaciones ilustrativas, dibujos, y técnicas ilustradas a continuación, incluyendo los diseños e implementaciones ejemplares ilustrados y descritos en la presente memoria, pero pueden modificarse dentro del alcance de las reivindicaciones adjuntas junto con todos sus alcances de equivalencias.
En la presente memoria se emplean los siguientes acrónimos, Filtro de Bucle Adaptativo (ALF), Conjunto de Parámetros de Adaptación (APS), Bloque de Árbol de Codificación (CTB), Unidad de Árbol de Codificación (CTU), Unidad de Codificación (CU), Secuencia de Vídeo Codificada (CVS), Transmisión Dinámica y Adaptativa de secuencias a través del Protocolo de Transferencia de Hipertexto (DASH), Punto de Acceso Intraaleatorio (IRAP), Equipo Conjunto de Expertos en Vídeo (JVET), Conjunto de Mosaicos con Restricciones de Movimiento (MCTS), Unidad de Transferencia Máxima (MTU), Capa de Abstracción de Red (NAL), Recuento de Orden de Imagen (POC), Carga Útil de Secuencia de Bytes Sin Procesar (RBSP), Desplazamiento adaptativo de la muestra (SAO), Conjunto de Parámetros de Secuencia (SPS), Codificación<de Vídeo Versátil>(<v>V<c>)<y Borrador de Trabajo>(W<d>).
Se pueden emplear muchas técnicas de compresión de vídeo para reducir el tamaño de los archivos de vídeo con una pérdida mínima de datos. Por ejemplo, las técnicas de compresión de vídeo pueden incluir la realización de predicción espacial (por ejemplo, intraimagen) y/o predicción temporal (por ejemplo, interimagen) para reducir o eliminar la redundancia de datos en secuencias de vídeo. Para la codificación de vídeo basada en bloques, un segmento de vídeo (es decir, una imagen de vídeo o una parte de una imagen de vídeo) puede particionarse en bloques de vídeo, que también pueden denominarse bloques de árbol, bloques de árbol de codificación (CTB), unidades de árbol de codificación (CTU), unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un segmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un segmento de predicción unidireccional (P) o bidireccional (B) intercodificado de una imagen pueden codificarse empleando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse fotogramas e imágenes, y las imágenes de referencia pueden denominarse fotogramas de referencia y/o imágenes de referencia. La predicción espacial o temporal da como resultado un bloque predictivo que representa un bloque de imagen. Los datos residuales representan diferencias de píxeles entre el bloque de imagen original y el bloque predictivo. En consecuencia, un bloque intercodificado se codifica según un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica según un modo de intracodificación y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar del dominio de píxeles a un dominio de transformación. Esto da como resultado coeficientes de transformación residuales que pueden cuantificarse. Los coeficientes de transformación cuantificados pueden disponerse inicialmente en una matriz bidimensional. Los coeficientes de transformación cuantificados se pueden escanear para producir un vector unidimensional de coeficientes de transformación. Se puede aplicar la codificación de entropía para lograr aún más compresión. Tales técnicas de compresión de vídeo se analizan con mayor detalle a continuación.
Para garantizar que un vídeo codificado pueda decodificarse con precisión, el vídeo se codifica y decodifica según los estándares de codificación de vídeo correspondientes. Los estándares de codificación de vídeo incluyen H.261 del Sector de Estandarización de la Unión Internacional de Telecomunicaciones (ITU) (ITU-T), (MPEG)-1 Parte 2 del Grupo de Expertos de Imágenes en Movimiento de la Organización Internacional de Estandarización/Comisión Electrotécnica Internacional (ISO/IEC) , H.262 de ITU-T o Parte 2 de MPEG-2 de ISO/IEC, H.263 de ITU-T, Partes 2 de MPEG-4 de ISO/IEC, Codificación de Vídeo Avanzada (AVC), también conocida como H.264 de ITU-T o Parte 10 de MPEG-4 de ISO/IEC, y Codificación de Vídeo de Alta Eficiencia (HEVC), también conocida como H.265 de ITU-T o Parte 2 de MPEG-H. La AVC incluye extensiones tales como Codificación de Vídeo Escalable (SVC), Codificación de Vídeo Multivista (MVC) y Codificación de Vídeo Multivista más Profundidad (MVC+D) y AVC tridimensional (3D) (3D-AVC). La HEVC incluye extensiones tales como HEVC Escalable (SHVC), HEVC Multivista (MV-HEVC) y HEVC 3D (3D-HEVC). El equipo conjunto de expertos en vídeo (JVET) del ITU-T y la ISO/IEC ha empezado a desarrollar un estándar de codificación de vídeo denominado Codificación de Vídeo Versátil (VVC). La VVC está incluida en un Borrador de T rabajo (WD), que incluye JVET-M1001-v5 y JVET-M1002-v1, que proporciona una descripción del algoritmo, una descripción<del lado del codificador del>W<d VVC, y software de referencia.>
Las secuencias de vídeo se codifican empleando varias herramientas de codificación. El codificador selecciona parámetros para las herramientas de codificación con el objetivo de aumentar la compresión con una pérdida mínima de calidad cuando se decodifica la secuencia de vídeo. Las herramientas de codificación pueden ser relevantes para diferentes partes del vídeo en diferentes ámbitos. Por ejemplo, algunas herramientas de codificación son relevantes a nivel de secuencia de vídeo, algunas herramientas de codificación son relevantes a nivel de imagen, algunas herramientas de codificación son relevantes a nivel de segmento, etc. Se puede emplear un APS para señalizar información que puede ser compartida por múltiples imágenes y/o múltiples segmentos en diferentes imágenes. Específicamente, un APS puede transportar parámetros de Filtro de Bucle Adaptativo (ALF). Es posible que la información ALF no sea adecuada para la señalización a nivel de secuencia en un Conjunto de Parámetros de Secuencia (SPS), a nivel de imagen en un Conjunto de Parámetros de Imagen (PPS) o una cabecera de imagen, o a nivel de segmento en un grupo de mosaicos/cabecera de segmento por varias razones.
Si se señaliza información ALF en el SPS, un codificador tiene que generar un nuevo SPS y una nueva imagen IRAP cada vez que cambia la información ALF. Las imágenes iRa P reducen significativamente la eficiencia de la codificación. Por lo tanto, colocar información ALF en un SPS es particularmente problemático para entornos de aplicaciones de bajo retardo que no emplean imágenes IRAP frecuentes. La inclusión de información ALF en el SPS también puede deshabilitar la transmisión fuera de banda de los SPS. La transmisión fuera de banda se refiere a transmisión de datos correspondientes en flujos de datos de transporte diferentes al flujo de bits de vídeo (por ejemplo, en una descripción de muestra o una entrada de muestra de un archivo multimedia, en un archivo de Protocolo de Descripción de Sesión (SDP), etc.). La señalización de información ALF en un PPS también puede ser problemática por razones similares. Específicamente, la inclusión de información ALF en el PPS puede deshabilitar la transmisión fuera de banda de los PPS. La señalización de información ALF en una cabecera de imagen también puede ser problemática. Es posible que en algunos casos no se empleen cabeceras de imágenes. Además, es posible que cierta información de ALF se aplique a múltiples imágenes. Por lo tanto, la señalización de información ALF en la cabecera de imagen provoca transmisión de información redundante y, por lo tanto, desperdicia ancho de banda. La señalización de información ALF en la cabecera del grupo de mosaicos/segmentos también es problemática, ya que la información ALF puede aplicarse a múltiples imágenes y, por lo tanto, a múltiples grupos de segmentos/mosaicos. En consecuencia, la señalización de información ALF en la cabecera del grupo de segmento/mosaicos provoca transmisión de información redundante y, por lo tanto, desperdicia ancho de banda.
Basándose en lo anterior, se puede emplear un APS para señalizar parámetros ALF. Sin embargo, los sistemas de codificación de vídeo pueden emplear el APS exclusivamente para señalizar parámetros ALF. Un ejemplo de sintaxis y semántica de APS es el siguiente:
adaptation_parameter_set_rbsp( ) { Descriptor
adaptation_parameter_set_id u(5)
alf_data( )
aps_extension_flag u(1)
if( aps_extension_flag)
while( more_rbsp_data( ) )
aps_extension_d ata_fl a g u(1)
rbsp_trailing_bits( )
}
El adaptation_parameter_set_id proporciona un identificador para el APS para referencia por otros elementos de sintaxis. Los APS se pueden compartir entre imágenes y pueden ser diferentes en diferentes grupos de mosaicos dentro de una imagen. El aps_extension_flag se establece igual a cero para especificar que no hay elementos de sintaxis aps_extension_data_flag presentes en la estructura de sintaxis RBSP APS. El aps_extension_flag se establece igual a uno para especificar que hay elementos de sintaxis aps_extension_data_flag presentes en la estructura de sintaxis RBSP APS. El aps_extension_data_flag puede tener cualquier valor. La presencia y el valor de aps_extension_data_flag pueden no afectar a la conformidad del decodificador con los perfiles especificados en VVC. Los decodificadores que cumplen con VVC pueden ignorar todos los elementos de sintaxis aps_extension_data_flag.
Un ejemplo de sintaxis de cabecera del grupo de mosaicos relacionada con los parámetros ALF es el siguiente:
tile_group_header( ) { Descriptor
if( sps_alf_enabled_flag ) {
tile_group_alf_enabled_flag u(1)
if( tile_group_alf_enabled_flag )
tile_group_aps_id u(5)
}
}
El tile_group_alf_enabled_flag se establece igual a uno para especificar que el filtro de bucle adaptativo está habilitado y se puede aplicar a los componentes de color luma (Y), croma azul (Cb) o croma rojo (Cr) en un grupo de mosaicos. El tile_group_alf_enabled_flag se establece igual a cero para especificar que el filtro de bucle adaptativo está deshabilitado para todos los componentes de color en un grupo de mosaicos. El tile_group_aps_id especifica el adaptation_parameter_set_id del APS al que hace referencia el grupo de mosaicos. El TemporalId de la unidad NAL a Ps con un adaptation_parameter_set_id igual a tile_group_aps_id será menor o igual que el TemporalId de la unidad NAL del grupo de mosaicos codificado. Cuando dos o más grupos de mosaicos de la misma imagen hacen referencia a múltiples APS con el mismo valor de adaptation_parameter_set_id, las múltiples APS con el mismo valor de adaptation_parameter_set_id pueden incluir el mismo contenido.
Los parámetros resharper son parámetros empleados para una herramienta de codificación de vídeo adaptativa de reshaper en bucle, que también se conoce como mapeo de luma con escalado de croma (LMCS). Un ejemplo de sintaxis y semántica de reshaper SPS es el siguiente:
seq_parameter_set_rbsp( ) { Descriptor
sps_reshaper_enabled_flag u(1)
}
El sps_reshaper_enabled_flag se establece igual a uno para especificar que el reshaper se usa en la secuencia de vídeo codificada (CVS). El sps_reshaper_enabled_flag se establece igual a cero para especificar que el reshaper no se usa en el CVS.
Un ejemplo de sintaxis y semántica de reshaper de cabecera del grupo de mosaicos/cabecera de segmento son los siguientes:
tile_group_header( ) { Descriptor
if( sps_reshaper_enabled_flag) {
tile_group_reshaper_model_present_flag u(1)
if(tile_group_reshaper_model_present_flag)
tile_group_reshaper_model ( )
tile_group_reshaper_enable_flag u(1)
if( tile group reshaper enable flag && (!( qtbtt dual tree intra flag && tile group type
== I ) ) )
tile_group_reshaper_chroma_residual_scale_flag u(1) }
}
El tile_group_reshaper_model_present_flag se establece igual a uno para especificar que tile_group_reshaper_model() está presente en la cabecera del grupo de mosaicos. El tile_group_reshaper_model_present_flag se establece igual a cero para especificar que tile_group_reshaper_model() no está presente en la cabecera del grupo de mosaicos. Cuando el tile_group_reshaper_model_present_flag no está presente, se infiere que el indicador es igual a cero. tile_group_reshaper_enabled_flag se establece igual a uno para especificar que el reshaper está habilitado para el grupo de mosaicos actual. El tile_group_reshaper_enabled_flag se establece igual a cero para especificar que el reshaper no está habilitado para el grupo de mosaicos actual. Cuando tile_group_reshaper_enable_flag no está presente, se infiere que el indicador es igual a cero. El tile_group_reshaper_chroma_residual_scale_flag se establece igual a uno para especificar que el escalado residual de croma está habilitado para el grupo de mosaicos actual. El tile_group_reshaper_chroma_residual_scale_flag se establece igual a cero para especificar que el escalado residual de croma no está habilitado para el grupo de mosaicos actual. Cuando tile_group_reshaper_chroma_residual_scale_flag no está presente, se infiere que el indicador es igual a cero.
Un ejemplo de sintaxis y semántica de reshaper de cabecera del grupo de mosaicos/cabecera de segmento es el siguiente:
tile_group _reshaper_ model () { Descriptor
reshaper_model_min_bin_idx ue(v)
reshaper_model_delta_max_bin_idx ue(v)
reshaper_model_bin_delta_abs_cw_prec_minus1 ue(v)
for ( i = reshaper_model_min_bin_idx; i <=reshaper_model_max_bin_idx; i++) {
reshape_model_bin_delta_abs_CW[ i ] u(v)
if( reshaper_model_bin_delta_abs_CW[ i ] ) > 0 )
reshaper_model_bin_delta_sign_CW_flag[ i ] u(1)
}
}
El reshape_model_min_bin_idx especifica el índice de bin (o pieza) mínimo a usar en el proceso de construcción de reshaper. El valor de reshape_model_min_bin_idx puede estar en el intervalo de cero a MaxBinIdx, inclusive. El valor de MaxBinIdx puede ser igual a quince. El reshape_model_delta_max_bin_idx especifica el índice de bin (o pieza) máximo permitido MaxBinIdx menos el índice de bin máximo a usar en el proceso de construcción de reshaper. El valor de reshape_model_max_bin_idx se establece igual a MaxBinIdx menos reshape_model_delta_max_bin_idx. El reshaper_model_bin_delta_abs_cw_prec_minus1 más uno especifica el número de bits usados para la representación de la sintaxis reshape_model_bin_delta_abs_CW[ i ]. El reshape_model_bin_delta_abs_CW[ i ] especifica el valor de la palabra de código delta absoluto para el i-ésimo bin.
El reshaper_model_bin_delta_sign_CW_flag[ i ] especifica el signo de reshape_model_bin_delta_abs_CW[ i ] de la siguiente manera. Si reshape_model_bin_delta_sign_CW_flag[ i ] es igual a cero, la variable correspondiente RspDeltaCW[ i ] es un valor positivo. De lo contrario, (por ejemplo, reshape_model_bin_delta_sign_CW flag[ i ] no es igual a cero), la variable correspondiente RspDeltaCW[ i ] es un valor negativo. Cuando reshape_model_bin_delta _sign_CW_flag[ i ] no está presente, se infiere que el indicador es igual a cero. La variable RspDeltaCW[ i ] se establece igual a (1 -2*reshape_model_bin_delta_sign_CW[ i ]) * reshape _model_bin_delta_abs_CW[ i ].
La variable RspCW[ i ] se deriva de la siguiente manera. La variable OrgCW se establece igual a (1 << BitDepthY) / (MaxBinIdx 1). Si reshaper_model_min_bin_idx < = i <= reshaper_model_max_bin_idx RspCW[ i ] = OrgCW RspDeltaCW[ i ]. De lo contrario, RspCW[ i ] = cero. El valor de RspCW [ i ] estará en el intervalo de treinta y dos a 2 * OrgCW - 1 si el valor de BitDepthY es igual a diez. Las variables InputPivot[ i ] con i en el intervalo de 0 a MaxBinIdx 1, inclusive, se derivan de la siguiente manera. InputPivot[ i ] = i * OrgCW. La variable ReshapePivot[ i ] con i en el intervalo de 0 a MaxBinIdx 1, inclusive, las variables ScaleCoef[ i ] e InvScaleCoeff[ i ] con i en el intervalo de cero a MaxBinIdx, inclusive, se derivan de la siguiente manera:
sliiftY = 14
ResliapePivot[ 0 ] = 0;
for( i = 0; i <= MaxBinIdx ; i++) {
ReshapePivotj i 1 ] = ReshapePivotj i 1 RspCWf i 1
ScaleCoeí] shiflY) (1 « (Log2(OrgCW) - 1))) » (Log2(OrgCW))
if ( RspCW
InvScalcCocff[ i ] = 0
clsc
InvScaleCoeffl i | - OrgCW * (1 « shiftY) / RspCWI i |
Las variables ChromaScaleCoef[ i ] con i en el intervalo de 0 a MaxBinIdx, inclusive, se derivan de la siguiente manera:
ChromaResidualScaleLut[64] = {16384, 16384, 16384, 16384, 16384, 16384, 16384, 8192, 8192, 8192, 8192, 5461, 5461, 5461, 5461, 4096, 4096, 4096, 4096, 3277, 3277, 3277, 3277, 2731, 2731, 2731, 2731, 2341, 2341, 2341, 2048, 2048, 2048, 1820, 1820, 1820, 1638, 1638, 1638, 1638, 1489, 1489, 1489, 1489, 1365, 1365, 1365, 1365, 1260, 1260, 1260, 1260, 1170, 1170, 1170, 1170, 1092, 1092, 1092, 1092, 1024, 1024, 1024, 1024};
shiftC = 11
if ( RspCW[ i ] == 0 )
ChromaScaleCoef [ i ] = (1 << shiftC)
De lo contrario (RspCW[ i ] != 0),
ChromaScaleCoef[ i ] = ChromaResidualScaleLut[RspCW[ i ] >> 1]
Las propiedades de los parámetros de reshaper se pueden caracterizar de la siguiente manera. El tamaño de un conjunto de parámetros de reshaper contenidos en la estructura de sintaxis tile_group_reshaper_model() suele ser de entre sesenta y cien bits. El modelo de reshaper generalmente es actualizado por el codificador aproximadamente una vez por segundo, lo que incluye muchos fotogramas. Además, es poco probable que los parámetros de un modelo de reshaper actualizado sean exactamente los mismos que los parámetros de una instancia anterior del modelo de reshaper.
Los sistemas de codificación de vídeo anteriores incluyen ciertos problemas. En primer lugar, tales sistemas solo están configurados para transportar parámetros ALF en el APS. Además, los parámetros de reshaper/LMCS pueden ser compartidos por múltiples imágenes y pueden incluir muchas variaciones.
Se describen en la presente memoria varios mecanismos para modificar el APS para soportar una mayor eficiencia de codificación. En un primer ejemplo, se describen múltiples tipos de APS. Específicamente, un APS de tipo ALF, denominado a Ps ALF, puede contener parámetros ALF. Además, un a Ps de tipo lista de escalado, denominado APS de lista de escalado, puede contener parámetros de lista de escalado. Además, un APS de tipo LMCS, denominado APS LMCS, puede contener parámetros LMCS/reshaper. Los APS ALF, los APS de lista de escalado y los APS LMCS pueden codificarse cada una como tipos NAL separados y, por lo tanto, incluirse en diferentes unidades NAL. De esta manera, un cambio en los datos de un tipo de APS (por ejemplo, parámetros ALF) no da como resultado una codificación redundante de otros tipos de datos que no cambian (por ejemplo, parámetros LMCS). En consecuencia, la provisión de múltiples tipos de APS aumenta la eficiencia de la codificación y, por lo tanto, reduce el uso de recursos de red, recursos de memoria y/o recursos de procesamiento en el codificador y el decodificador.
En un segundo ejemplo, cada APS incluye un Identificador (ID) de APS. Además, cada tipo de APS incluye un espacio de valores separado para los ID de APS correspondientes. Tales espacios de valores pueden superponerse. En consecuencia, un APS de un primer tipo (por ejemplo, un APS ALF) puede incluir el mismo ID de APS que un APS de un segundo tipo (por ejemplo, un APS LMCS). Esto se logra identificando cada APS mediante una combinación de un tipo de parámetro APS y un ID de APS. Al permitir que cada tipo de APS incluya un espacio de valores diferente, el códec no necesita comprobar entre tipos de APS los conflictos de ID. Además, al permitir que los espacios de valores se superpongan, el códec puede evitar emplear valores de ID más grandes, lo que da como resultado un ahorro de bits. Como tal, empleando espacios de valores superpuestos separados para APS de diferentes tipos aumenta la eficiencia de codificación y, por lo tanto, reduce el uso de recursos de red, recursos de memoria y/o recursos de procesamiento en el codificador y el decodificador.
En un tercer ejemplo, los parámetros LMCS se incluyen en un APS LMCS. Como se señaló anteriormente, los parámetros LMCS/reshaper pueden cambiar aproximadamente una vez por segundo. Las secuencias de vídeo pueden visualizar de treinta a sesenta imágenes por segundo. Como tal, es posible que los parámetros LMCS no cambien durante treinta a sesenta fotogramas. La inclusión de parámetros LMCS en un APS LMCS reduce significativamente la codificación redundante de parámetros LMCS. Una cabecera de segmento y/o una cabecera de imagen asociada con un segmento pueden hacer referencia al APS LMCS relevante. De esta manera, los parámetros LMCS solo se codifican cuando cambian los parámetros LMCS de un segmento. En consecuencia, el empleo de un APS LMCS para codificar parámetros LMCS aumenta la eficiencia de codificación y, por lo tanto, reduce el uso de recursos de red, recursos de memoria y/o recursos de procesamiento en el codificador y el decodificador.
La FIG. 1 es un diagrama de flujo de un ejemplo del método 100 de operación para codificar una señal de vídeo. Específicamente, una señal de vídeo se codifica en un codificador. El proceso de codificación comprime la señal de vídeo empleando varios mecanismos para reducir el tamaño del archivo de vídeo. Un tamaño de archivo más pequeño permite que el archivo de vídeo comprimido se transmita hacia un usuario, al tiempo que reduce la sobrecarga de ancho de banda asociada. Luego, el decodificador decodifica el archivo de vídeo comprimido para reconstruir la señal de vídeo original para visualizarla al usuario final. El proceso de decodificación generalmente refleja el proceso de codificación para permitir que el decodificador reconstruya consistentemente la señal de vídeo.
En la etapa 101, la señal de vídeo se introduce en el codificador. Por ejemplo, la señal de vídeo puede ser un archivo de vídeo sin comprimir almacenado en la memoria. Como otro ejemplo, el archivo de vídeo puede ser capturado por un dispositivo de captura de vídeo, tal como una cámara de vídeo, y codificado para soportar la transmisión en vivo del vídeo. El archivo de vídeo puede incluir tanto un componente de audio como un componente de vídeo. El componente de vídeo contiene una serie de fotogramas de imagen que, cuando se ven en una secuencia, dan la impresión visual de movimiento. Los fotogramas contienen píxeles que se expresan en términos de luz, denominados en la presente memoria componentes de luma (o muestras luma), y color, que se denominan componentes de croma (o muestras de color). En algunos ejemplos, los fotogramas también pueden contener valores de profundidad para soportar la visualización tridimensional.
En la etapa 103, el vídeo se particiona en bloques. La partición incluye subdividir los píxeles en cada fotograma en bloques cuadrados y/o rectangulares para su compresión. Por ejemplo, en la Codificación de Vídeo de Alta Eficiencia (HEVC) (también conocida como H.265 y MPEG-H Parte 2), el fotograma se puede dividir primero en unidades de árbol de codificación (CTU), que son bloques de un tamaño predefinido (por ejemplo, sesenta y cuatro píxeles por sesenta y cuatro píxeles). Las CTU contienen tanto muestras de luma como de croma. Se pueden emplear árboles de codificación para dividir las CTU en bloques y luego subdividir recursivamente los bloques hasta que se logren configuraciones que soporten una codificación adicional. Por ejemplo, los componentes de luma de un fotograma se pueden subdividir hasta que los bloques individuales contengan valores de iluminación relativamente homogéneos. Además, los componentes de croma de un fotograma se pueden subdividir hasta que los bloques individuales contengan valores de color relativamente homogéneos. En consecuencia, los mecanismos de partición varían dependiendo del contenido de los fotogramas de vídeo.
En la etapa 105, se emplean varios mecanismos de compresión para comprimir los bloques de imagen particionados en la etapa 103. Por ejemplo, se puede emplear la interpredicción y/o la intrapredicción. La interpredicción está diseñada para aprovechar el hecho de que los objetos de una escena común tienden a aparecer en fotogramas sucesivos. En consecuencia, un bloque que representa un objeto en un fotograma de referencia no necesita describirse repetidamente en fotogramas adyacentes. Específicamente, un objeto, tal como una tabla, puede permanecer en una posición constante sobre múltiples fotogramas. Por lo tanto, la tabla se describe una vez y los fotogramas adyacentes pueden volver a referirse al fotograma de referencia. Se pueden emplear mecanismos de coincidencia de patrones para hacer coincidir objetos sobre múltiples fotogramas. Además, los objetos en movimiento pueden representarse en múltiples fotogramas, por ejemplo, debido al movimiento del objeto o al movimiento de la cámara. Como un ejemplo particular, un vídeo puede mostrar un automóvil que se mueve en la pantalla sobre múltiples fotogramas. Se pueden emplear vectores de movimiento para describir tal movimiento. Un vector de movimiento es un vector bidimensional que proporciona un desplazamiento desde las coordenadas de un objeto en un fotograma a las coordenadas del objeto en un fotograma de referencia. Como tal, la interpredicción puede codificar un bloque de imagen en un fotograma actual como un conjunto de vectores de movimiento que indican un desplazamiento de un bloque correspondiente en un fotograma de referencia.
La intrapredicción codifica bloques en un fotograma común. La intrapredicción aprovecha el hecho de que los componentes de luma y de croma tienden a agruparse en un fotograma. Por ejemplo, una mancha de verde en una parte de un árbol tiende a colocarse adyacente a manchas de verde similares. La intrapredicción emplea múltiples modos de predicción direccional (por ejemplo, treinta y tres en HEVC), un modo planar y un modo de corriente directa (DC). Los modos direccionales indican que un bloque actual es similar/el mismo que las muestras de un bloque vecino en una dirección correspondiente. El modo planar indica que una serie de bloques a lo la largo de una fila/columna (por ejemplo, un plano) se pueden interpolar basándose en los bloques vecinos en los bordes de la fila. El modo planar, en efecto, indica una transición suave de luz/color en una fila/columna empleando una pendiente relativamente constante en los valores cambiantes. El modo DC se emplea para el suavizado de límites e indica que un bloque es similar/el mismo que un valor promedio asociado con muestras de todos los bloques vecinos asociados con las direcciones angulares de los modos de predicción direccional. En consecuencia, los bloques intrapredicción pueden representar bloques de imagen como varios valores de modo de predicción relacional en lugar de los valores reales. Además, los bloques de interpredicción pueden representar bloques de imagen como valores de vector de movimiento en lugar de los valores reales. En cualquier caso, los bloques de predicción pueden no representar exactamente los bloques de imagen en algunos casos. Cualquier diferencia se almacena en bloques residuales. Pueden aplicarse transformaciones a los bloques residuales para comprimir aún más el archivo.
En la etapa 107, pueden aplicarse varias técnicas de filtrado. En HEVC, los filtros se aplican según un esquema de filtrado en bucle. La predicción basada en bloques analizada anteriormente puede dar como resultado la creación de imágenes en bloques en el decodificador. Además, el esquema de predicción basado en bloques puede codificar un bloque y luego reconstruir el bloque codificado para su uso posterior como un bloque de referencia. El esquema de filtrado en bucle aplica iterativamente filtros de supresión de ruido, filtros de desbloqueo, filtros de bucle adaptativo y filtros de desplazamiento adaptativo de muestra (SAO) a los bloques/fotogramas. Estos filtros mitigan tales artefactos de bloqueo para que el archivo codificado pueda reconstruirse con precisión. Además, estos filtros mitigan los artefactos en los bloques de referencia reconstruidos, para que sea menos probable que los artefactos creen artefactos adicionales en los bloques posteriores que se codifican basándose en los bloques de referencia reconstruidos.
Una vez que la señal de vídeo ha sido particionada, comprimida y filtrada, los datos resultantes se codifican en un flujo de bits en la etapa 109. El flujo de bits incluye los datos analizados anteriormente, así como cualquier dato de señalización deseado para soportar la reconstrucción adecuada de la señal de vídeo en el decodificador. Por ejemplo, tales datos pueden incluir datos de partición, datos de predicción, bloques residuales y varios indicadores que proporcionan instrucciones de codificación al decodificador. El flujo de bits puede ser almacenado en memoria para su transmisión hacia un decodificador bajo demanda. El flujo de bits también puede ser difundido y/o multidifundido hacia una pluralidad de decodificadores. La creación del flujo de bits es un proceso iterativo. En consecuencia, las etapas 101, 103, 105, 107 y 109 pueden ocurrir de manera continua y/o simultánea a lo largo de muchos fotogramas y bloques. El orden que se muestra en la FIG. 1 se presenta para mayor claridad y facilidad del análisis, y no tiene la intención de limitar el proceso de codificación de vídeo a un orden particular.
El decodificador recibe el flujo de bits y comienza el proceso de decodificación en la etapa 111. Específicamente, el decodificador emplea un esquema de decodificación de entropía para convertir el flujo de bits en los datos de sintaxis y vídeo correspondientes. El decodificador emplea los datos de sintaxis del flujo de bits para determinar las particiones de los fotogramas en la etapa 111. El particionamiento debe coincidir con los resultados del particionamiento de bloques en la etapa 103. Se describe ahora la codificación/decodificación de entropía como se emplea en la etapa 111. El codificador realiza muchas decisiones durante el proceso de compresión, tal como seleccionar esquemas de particionamiento de bloques entre varias decisiones posibles basándose en el posicionamiento espacial de los valores en la(las) imagen(imágenes) de entrada. La señalización de las decisiones exactas puede emplear un gran número de bins. Como se usa en la presente memoria, un bin es un valor binario que se trata como variable (por ejemplo, un valor de bits que puede variar dependiendo del contexto). La codificación de entropía permite al codificador descartar cualquier decisión que claramente no sea viable para un caso particular, dejando un conjunto de opciones permitidas. Luego, a cada opción permitida se le asigna una palabra de código. La longitud de las palabras de código se basa en el número de opciones permitidas (por ejemplo, un bin para dos opciones, dos bins para tres o cuatro opciones, etc.). Luego, el codificador codifica la palabra de código para la opción seleccionada. Este esquema reduce el tamaño de las palabras de código, ya que estas son tan grandes como se desee para indicar de manera única una selección de un pequeño subconjunto de opciones permitidas, en lugar de indicar de manera única la selección de un conjunto potencialmente grande de todas las opciones posibles. Luego, el decodificador decodifica la selección determinando el conjunto de opciones permitidas de manera similar al codificador. Determinando el conjunto de opciones permitidas, el decodificador puede leer la palabra de código y determinar la selección realizada por el codificador.
En la etapa 113, el decodificador realiza la decodificación de bloques. Específicamente, el decodificador emplea transformaciones inversas para generar bloques residuales. Luego, el decodificador emplea los bloques residuales y los bloques de predicción correspondientes para reconstruir los bloques de imagen según el particionamiento. Los bloques de predicción pueden incluir tanto bloques de intrapredicción como bloques de interpredicción tal como se generan en el codificador en la etapa 105. Luego, los bloques de imagen reconstruidos se posicionan en fotogramas de una señal de vídeo reconstruida según los datos de particionamiento determinados en la etapa 111. La sintaxis para la etapa 113 también se puede señalizar en el flujo de bits a través de la codificación de entropía como se analizó anteriormente.
En la etapa 115, el filtrado se realiza en los fotogramas de la señal de vídeo reconstruida de una manera similar a la etapa 107 en el codificador. Por ejemplo, los filtros de supresión de ruido, filtros de desbloqueo, filtros de bucle adaptativo y filtros SAO pueden aplicarse a los fotogramas para eliminar artefactos de bloqueo. Una vez que se filtran los fotogramas, la señal de vídeo se puede enviar a un dispositivo de visualización en la etapa 117 para que la vea un usuario final.
La FIG. 2 es un diagrama esquemático de un ejemplo del sistema 200 de codificación y decodificación (códec) para codificación de vídeo. Específicamente, el sistema 200 de códec proporciona funcionalidad para soportar la implementación del método 100 de operación. El sistema 200 de códec se generaliza para representar componentes empleados tanto en un codificador como en un decodificador. El sistema 200 de códec recibe y particiona una señal de vídeo como se analiza con respecto a las etapas 101 y 103 en el método 100 de operación, lo que da como resultado una señal 201 de vídeo particionada. El sistema 200 de códec luego comprime la señal 201 de vídeo particionada en un flujo de bits codificado cuando actúa como un codificador como se analizó con respecto a las etapas 105, 107 y 109 en el método 100. Cuando actúa como un decodificador, el sistema 200 de códec genera una señal de vídeo de salida del flujo de bits como se analiza con respecto a las etapas 111, 113, 115 y 117 en el método 100 de operación. El sistema 200 de códec incluye un componente 211 de control de codificador general, un componente 213 de escalado y cuantificación de transformación, un componente 215 de estimación intraimagen, un componente 217 de predicción intraimagen, un componente 219 de compensación de movimiento, un componente 221 de estimación de movimiento, un componente 229 de escalado y transformación inversa, un componente 227 de análisis de control de filtros, un componente 225 de filtro en bucle, un componente 223 de búfer de imágenes decodificadas, y componente 231 de formateo de cabecera y de codificación aritmética binaria adaptativa de contexto (CABAC). Tales componentes se acoplan como se muestra. En la FIG. 2, las líneas negras indican el movimiento de los datos a codificar/decodificar, mientras que las líneas discontinuas indican el movimiento de los datos de control que controlan el funcionamiento de otros componentes. Todos los componentes del sistema 200 de códec pueden estar presentes en el codificador. El decodificador puede incluir un subconjunto de los componentes del sistema 200 de códec. Por ejemplo, el decodificador puede incluir el componente 217 de predicción intraimagen, el componente 219 de compensación de movimiento, el componente 229 de escalado y transformación inversa, el componente 225 de filtros en bucle y el componente 223 de búfer de imágenes decodificadas. Estos componentes se describen ahora.
La señal 201 de vídeo particionada es una secuencia de vídeo capturada que ha sido particionada en bloques de píxeles por un árbol de codificación. Un árbol de codificación emplea varios modos de división para subdividir un bloque de píxeles en bloques más pequeños de píxeles. Luego, estos bloques pueden subdividirse aún más en bloques más pequeños. Los bloques pueden denominarse nodos en el árbol de codificación. Los nodos padres más grandes se dividen en nodos hijos más pequeños. El número de veces que se subdivide un nodo se denomina profundidad del nodo/árbol de codificación. En algunos casos, los bloques divididos pueden incluirse en unidades de codificación (CU). Por ejemplo, una CU puede ser una subporción de una CTU que contiene un bloque luma, bloque(s) de croma de diferencia de rojo (Cr), y un bloque(s) de croma de diferencia de azul (Cb) junto con las correspondientes instrucciones de sintaxis para la CU. Los modos de división pueden incluir un árbol binario (BT), un árbol triple (TT) y un árbol cuádruple (QT) empleados para particionar un nodo en dos, tres o cuatro nodos hijos, respectivamente, de formas variables dependiendo de los modos de división empleados. La señal 201 de vídeo particionada se envía al componente 211 de control de codificador general, al componente 213 de escalado y cuantificación de transformada, al componente 215 de estimación intraimagen, al componente 227 de análisis de control de filtros y al componente 221 de estimación de movimiento para su compresión.
El componente 211 de control de codificador general está configurado para tomar decisiones relacionadas con la codificación de las imágenes de la secuencia de vídeo en el flujo de bits según las restricciones de la aplicación. Por ejemplo, el componente 211 de control de codificador general gestiona la optimización de la tasa de bits/tamaño de flujo de bits frente a la calidad de reconstrucción. Estas decisiones pueden tomarse basándose en la disponibilidad de espacio de almacenamiento/ancho de banda y de las solicitudes de resolución de imagen. El componente 211 de control de codificador general también gestiona la utilización del búfer a la luz de la velocidad de transmisión para mitigar los problemas de infrautilización y desbordamiento del búfer. Para gestionar estos problemas, el componente 211 de control de codificador general gestiona la partición, la predicción y el filtrado por los otros componentes. Por ejemplo, el componente 211 de control de codificador general puede aumentar dinámicamente la complejidad de compresión para aumentar la resolución y aumentar el uso del ancho de banda o disminuir la complejidad de compresión para disminuir la resolución y el uso del ancho de banda. Por lo tanto, el componente 211 de control de codificador general controla los otros componentes del sistema 200 de códec para equilibrar la calidad de reconstrucción de la señal de vídeo con las cuestiones de la tasa de bits. El componente 211 de control de codificador general crea datos de control, que controlan el funcionamiento de los otros componentes. Los datos de control también se reenvían al componente 231 de formateo de cabecera y CABAC para codificarse en el flujo de bits para señalizar parámetros de decodificación en el decodificador.
La señal 201 de vídeo particionada también se envía al componente 221 de estimación de movimiento y al componente 219 de compensación de movimiento para la interpredicción. El fotograma o segmento de la señal 201 de vídeo particionada se puede dividir en múltiples bloques de vídeo. La unidad 221 de estimación de movimiento y la unidad 219 de compensación de movimiento realizan una codificación interpredictiva del bloque de vídeo recibido en relación con uno o más bloques en uno o más fotogramas de referencia para proporcionar predicción temporal. El sistema 200 de códec puede realizar múltiples pasadas de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de vídeo.
El componente 221 de estimación de movimiento y el componente 219 de compensación de movimiento pueden estar altamente integrados, pero se ilustran por separado con fines conceptuales. La estimación de movimiento, realizada por el componente 221 de estimación de movimiento, es el proceso de generar vectores de movimiento, que estiman el movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un objeto codificado en relación con un bloque predictivo. Un bloque predictivo es un bloque que, en términos de diferencia de píxeles, se encuentra que coincide estrechamente con el bloque a codificar. Un bloque predictivo también puede denominarse bloque de referencia. Tal diferencia de píxeles puede determinarse mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia cuadrática (SSD) u otras métricas de diferencia. HEVC emplea varios objetos codificados, incluidos una CTU, bloques de árbol de codificación (CTB) y CU. Por ejemplo, una CTU se puede dividir en CTB, que a su vez se pueden dividir en CB para su inclusión en CU. Una CU se puede codificar como una unidad de predicción (PU) que contiene datos de predicción y/o una unidad de transformación (TU) que contiene datos residuales transformados para la CU. El componente 221 de estimación de movimiento genera vectores de movimiento, PU y TU usando un análisis de distorsión-tasa como parte de un proceso de optimización de distorsión de tasa. Por ejemplo, el componente 221 de estimación de movimiento puede determinar múltiples bloques de referencia, múltiples vectores de movimiento, etc. para un bloque/fotograma actual, y puede seleccionar los bloques de referencia, vectores de movimiento, etc. que tengan las mejores características de tasa-distorsión. Las mejores características de distorsión de tasa equilibran tanto la calidad de reconstrucción del vídeo (por ejemplo, la cantidad de pérdida de datos por compresión) con la eficiencia de la codificación (por ejemplo, el tamaño de la codificación final).
En algunos ejemplos, el sistema 200 de códec puede calcular valores para posiciones de píxeles de subenteros de imágenes de referencia almacenadas en el componente 223 de búfer de imágenes decodificadas. Por ejemplo, el sistema 200 de códec de vídeo puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, el componente 221 de estimación de movimiento puede realizar una búsqueda de movimiento con respecto a las posiciones de píxeles completos y posiciones de píxeles fraccionarios y generar un vector de movimiento con precisión de píxeles fraccionarios. El componente 221 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de vídeo en un segmento intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. El componente 221 de estimación de movimiento genera el vector de movimiento calculado como datos de movimiento para el componente 231 de formateo de cabecera y CABAC para la codificación y el movimiento para el componente 219 de compensación de movimiento.
La compensación de movimiento, realizada por el componente 219 de compensación de movimiento, puede implicar buscar o generar el bloque predictivo basándose en el vector de movimiento determinado por el componente 221 de estimación de movimiento. Nuevamente, el componente 221 de estimación de movimiento y el componente 219 de compensación de movimiento pueden integrarse funcionalmente, en algunos ejemplos. Al recibir el vector de movimiento para la PU del bloque de vídeo actual, el componente 219 de compensación de movimiento puede ubicar el bloque predictivo al que apunta el vector de movimiento. Luego, se forma un bloque de vídeo residual restando valores de píxel del bloque predictivo de los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel. En general, la unidad 221 de estimación de movimiento realiza estimación de movimiento en relación con componentes de luma, y la unidad 219 de compensación de movimiento usa vectores de movimiento calculados basándose en componentes de luma tanto para componentes de croma como para componentes de luma. El bloque predictivo y el bloque residual se reenvían para transformar el componente 213 de escalado y cuantificación.
La señal 201 de vídeo particionada también se envía al componente 215 de estimación intraimagen y al componente 217 de predicción intraimagen. Al igual que con el componente 221 de estimación de movimiento y el componente 219 de compensación de movimiento, el componente 215 de estimación intraimagen y el componente 217 de predicción intraimagen pueden estar altamente integrados, pero se ilustran por separado con fines conceptuales. El componente 215 de estimación intraimagen y el componente 217 de predicción intraimagen intrapredicen un bloque actual en relación con bloques en un fotograma actual, como una alternativa a la interpredicción realizada por el componente 221 de estimación de movimiento y el componente 219 de compensación de movimiento entre fotogramas, como se describió anteriormente. En particular, la unidad 215 de intrapredicción determina un modo de intrapredicción a usar para codificar un bloque actual. En algunos ejemplos, el componente 215 de estimación intraimagen selecciona un modo de intrapredicción apropiado para codificar un bloque actual entre múltiples modos de intrapredicción probados. Los modos de intrapredicción seleccionados se envían después al componente 231 de formateo de cabecera y CABAC para su codificación.
Por ejemplo, el componente 215 de estimación intraimagen calcula los valores de distorsión de tasa usando un análisis de distorsión de tasa para los varios modos de intrapredicción probados, y selecciona el modo de intrapredicción que tenga las mejores características de distorsión de tasa entre los modos probados. El análisis de distorsión de tasa generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque original sin codificar que fue codificado para producir el bloque codificado, así como una tasa de bits (por ejemplo, un número de bits) usada para producir el bloque codificado. La unidad 215 de estimación intraimagen calcula relaciones a partir de las distorsiones y tasas para los varios bloques codificados para determinar qué modo de intrapredicción presenta el mejor valor de distorsión-tasa para el bloque. Además, el componente 215 de estimación intraimagen puede configurarse para codificar bloques de profundidad de un mapa de profundidad usando un modo de modelado de profundidad (DMM) basado en la optimización de distorsión-tasa (RDO).
El componente 217 de predicción intraimagen puede generar un bloque residual a partir del bloque predictivo basándose en los modos de intrapredicción seleccionados determinados por el componente 215 de estimación intraimagen cuando se implementa en un codificador o leer el bloque residual del flujo de bits cuando se implementa en un decodificador. El bloque residual incluye la diferencia en valores entre el bloque predictivo y el bloque original, representado como una matriz. Luego, el bloque residual se reenvía para transformar el componente 213 de escalado y cuantificación. El componente 215 de estimación intraimagen y el componente 217 de predicción intraimagen pueden operar tanto en componentes tanto de luma como de croma.
El componente 213 de escalado y cuantificación de transformación está configurado para comprimir aún más el bloque residual. El componente 213 de escalado y cuantificación de transformación aplica una transformación, tal como una transformada de coseno discreta (DCT), una transformada de seno discreta (DST) o una transformación conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficiente de transformación residual. También podrían usarse transformaciones de ondícula, transformaciones de enteros, transformaciones de subbanda u otros tipos de transformaciones. La transformación puede convertir la información residual de un dominio de valor de píxel a un dominio de transformación, tal como un dominio de frecuencia. El componente 213 de cuantificación y escalado de transformación también está configurado para escalar la información residual transformada, por ejemplo basándose en la frecuencia. Este escalado implica aplicar un factor de escala a la información residual para que la información de diferente frecuencia se cuantifique en diferentes granularidades, lo que puede afectar la calidad visual final del vídeo reconstruido. El componente 213 de cuantificación y escalado de transformación también está configurado para cuantificar los coeficientes de transformación para reducir aún más 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 modificarse ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad 213 de cuantificación y escalado de transformación puede realizar luego un escaneo de la matriz que incluya los coeficientes de transformación cuantificados. Los coeficientes de transformación cuantificados se reenvían al componente 231 de formateo de cabecera y CABAC para codificarse en el flujo de bits.
El componente 229 de escalado y transformación inversa aplica una operación inversa del componente 213 de escalado y cuantificación de transformación para soportar la estimación de movimiento. El componente 229 de escalado y transformación inversa aplica escalado inverso, transformación y/o cuantificación para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para su uso posterior como un bloque de referencia que puede convertirse en un bloque predictivo para otro bloque actual. El componente 221 de estimación de movimiento y/o el componente 219 de compensación de movimiento pueden calcular un bloque de referencia añadiendo el bloque residual de nuevo a un bloque predictivo correspondiente para su uso en la estimación de movimiento de un bloque/fotograma posterior. Los filtros se aplican a los bloques de referencia reconstruidos para mitigar los artefactos creados durante el escalado, cuantificación y transformación. De lo contrario, dichos artefactos podrían causar una predicción inexacta (y crear artefactos adicionales) cuando se predicen bloques posteriores.
El componente 227 de análisis de control de filtros y el componente 225 de filtros en bucle aplican los filtros a los bloques residuales y/o a los bloques de imagen reconstruidos. Por ejemplo, el bloque residual transformado del componente 229 de escalado y transformación inversa puede combinarse con un bloque de predicción correspondiente del componente 217 de predicción intraimagen y/o el componente 219 de compensación de movimiento para reconstruir el bloque de imagen original. Luego, los filtros pueden aplicarse al bloque de imagen reconstruido. En algunos ejemplos, los filtros pueden aplicarse en cambio a los bloques residuales. Al igual que con otros componentes de la FIG. 2, el componente 227 de análisis de control de filtros y el componente 225 de filtros en bucle están altamente integrados y pueden implementarse juntos, pero se representan por separado con fines conceptuales. Los filtros aplicados a los bloques de referencia reconstruidos se aplican a regiones espaciales particulares e incluyen múltiples parámetros para ajustar cómo se aplican tales filtros. El componente 227 de análisis de control de filtros analiza los bloques de referencia reconstruidos para determinar dónde se deben aplicar tales filtros y establece los parámetros correspondientes. Tales datos se envían al componente 231 de formateo de cabecera y CABAC como datos de control de filtro para codificación. El componente 225 de filtros en bucle aplica tales filtros basándose en los datos de control de filtro. Los filtros pueden incluir un filtro de desbloqueo, un filtro de supresión de ruido, un filtro SAO y un filtro de bucle adaptativo. Dichos filtros pueden aplicarse en el dominio espacial/de píxeles (por ejemplo, en un bloque de píxeles reconstruido) o en el dominio de la frecuencia, dependiendo del ejemplo.
Cuando se opera como un codificador, el bloque de imagen reconstruido filtrado, el bloque residual y/o el bloque de predicción se almacenan en el componente 223 búfer de imágenes decodificadas para su uso posterior en la estimación de movimiento como se analizó anteriormente. Cuando opera como un decodificador, el componente 223 búfer de imágenes decodificadas almacena y envía los bloques reconstruidos y filtrados hacia un dispositivo de visualización como parte de una señal de vídeo de salida. El componente 223 búfer de imágenes decodificadas puede ser cualquier dispositivo de memoria capaz de almacenar bloques de predicción, bloques residuales y/o bloques de imagen reconstruidos.
El componente 231 de formateo de cabecera y CABAC recibe los datos de los varios componentes del sistema 200 de códec y codifica dichos datos en un flujo de bits codificado para su transmisión hacia un decodificador. Específicamente, el componente 231 de formateo de cabecera y CABAC genera varios encabezados para codificar datos de control, tal como datos de control general y datos de control de filtro. Además, los datos de predicción, incluidos los datos de intrapredicción y de movimiento, así como los datos residuales en forma de datos de coeficientes de transformación cuantificados, se codifican todos en el flujo de bits. El flujo de bits final incluye toda la información deseada por el decodificador para reconstruir la señal 201 de vídeo particionada original. Tal información también puede incluir tablas de índice de modo de intrapredicción (también denominadas tablas de mapeo de palabras de código), definiciones de contextos de codificación para varios bloques, indicaciones de los modos de intrapredicción más probables, una indicación de información de partición, etc. Tales datos pueden codificarse empleando codificación de entropía. Por ejemplo, la información puede codificarse empleando codificación de longitud variable adaptable al contexto (CAVLC), (CABAC), codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), codificación de entropía de particionamiento de intervalo de probabilidad (PIPE) u otra técnica de codificación de entropía. Después de la codificación de entropía, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, un decodificador de vídeo) o archivarse para su posterior transmisión o recuperación.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo del codificador 300 de vídeo. El codificador 300 de vídeo se puede emplear para implementar las funciones de codificación del sistema 200 de códec y/o implementar las etapas 101, 103, 105, 107 y/o 109 del método 100 de operación. El codificador 300 de vídeo particiona una señal de vídeo de entrada, lo que da como resultado una señal 301 de vídeo particionada, que es sustancialmente similar a la señal 201 de vídeo particionada. Luego, la señal 301 de vídeo particionada es comprimida y codificada en un flujo de bits por componentes del codificador 300.
Específicamente, la señal 301 de vídeo particionada se reenvía a un componente 317 de predicción intraimagen para la intrapredicción. El componente 317 de predicción intraimagen puede ser sustancialmente similar al componente 215 de estimación intraimagen y al componente 217 de predicción intraimagen. La señal 301 de vídeo particionada también se reenvía a un componente 321 de compensación de movimiento para la interpredicción basándose en bloques de referencia en un búfer 323 de imágenes decodificadas. El componente 321 de compensación de movimiento puede ser sustancialmente similar al componente 221 de estimación de movimiento y al componente 219 de compensación de movimiento. Los bloques de predicción y los bloques residuales del componente 317 de predicción intraimagen y del componente 321 de compensación de movimiento se reenvían a un componente 313 de cuantificación y transformación para la transformación y cuantificación de los bloques residuales. El componente 313 de cuantificación y transformación puede ser sustancialmente similar al componente 213 de cuantificación y escalado de transformación. Los bloques residuales transformados y cuantificados y los bloques de predicción correspondientes (junto con los datos de control asociados) se reenvían a un componente 331 de codificación de entropía para codificarlos en un flujo de bits. El componente 331 de codificación de entropía puede ser sustancialmente similar al componente 231 de formateo de cabecera y CABAC.
Los bloques residuales transformados y cuantificados y/o los bloques de predicción correspondientes también se reenvían desde el componente 313 de cuantificación y transformación a un componente 329 de cuantificación y transformada inversa para la reconstrucción en bloques de referencia para su uso por el componente 321 de compensación de movimiento. El componente 329 de cuantificación y transformación inversa puede ser sustancialmente similar al componente 229 de escalado y transformación inversa. Los filtros en bucle en el componente 325 de filtros en bucle también se aplican a los bloques residuales y/o bloques de referencia reconstruidos, dependiendo del ejemplo. El componente 325 de filtros en bucle puede ser sustancialmente similar al componente 227 de análisis de control de filtros y al componente 225 de filtros en bucle. El componente 325 de filtros en bucle puede incluir múltiples filtros como se analizó con respecto al componente 225 de filtros en bucle. Luego, los bloques filtrados se almacenan en un búfer 323 de imágenes decodificadas para su uso en bloques de referencia por el componente 321 de compensación de movimiento. El componente 323 búfer de imágenes decodificadas puede ser sustancialmente similar al componente 223 búfer de imágenes decodificadas.
La FIG. 4 es un diagrama de bloques que ilustra un ejemplo del decodificador 400 de vídeo. El decodificador 400 de vídeo puede ser empleado para implementar las funciones de decodificación del sistema 200 de códec y/o implementar las etapas 111, 113, 115 y/o 117 del método 100 de operación. El decodificador 400 recibe un flujo de bits, por ejemplo, de un codificador 300, y genera una señal de vídeo de salida reconstruida basándose en el flujo de bits para visualizarse a un usuario final.
El flujo de bits es recibido por un componente 433 de decodificación de entropía. El componente 433 de decodificación de entropía está configurado para implementar un esquema de decodificación de entropía, tal como CAVLC, CABAC, SBAC, codificación PIPE u otras técnicas de codificación de entropía. Por ejemplo, el componente 433 de decodificación de entropía puede emplear información de cabecera para proporcionar un contexto para interpretar datos adicionales codificados como palabras de código en el flujo de bits. La información decodificada incluye cualquier información deseada para decodificar la señal de vídeo, tal como datos de control general, datos de control de filtro, información de partición, datos de movimiento, datos de predicción y coeficientes de transformación cuantificados de bloques residuales. Los coeficientes de transformación cuantificados se envían a un componente 429 de cuantificación y transformación inversa para la reconstrucción en bloques residuales. El componente 429 de cuantificación y transformada inversa puede ser similar al componente 329 de cuantificación y transformación inversa.
Los bloques residuales reconstruidos y/o los bloques de predicción se reenvían al componente 417 de predicción intraimagen para la reconstrucción en bloques de imagen basándose en operaciones de intrapredicción. El componente 417 de predicción intraimagen puede ser similar al componente 215 de estimación intraimagen y al componente 217 de predicción intraimagen. Específicamente, el componente 417 de predicción intraimagen emplea modos de predicción para localizar un bloque de referencia en el fotograma y aplica un bloque residual al resultado para reconstruir bloques de imagen intrapredicha. Los bloques de imagen intrapredicha reconstruidos y/o los bloques residuales y los datos de interpredicción correspondientes se reenvían a un componente 423 de búfer de imágenes decodificadas a través del componente 425 de filtros en bucle, que puede ser sustancialmente similar al componente de búfer 223 de búfer de imágenes decodificadas y al componente 225 de filtros en bucle, respectivamente. El componente 425 de filtros en bucle filtra los bloques de imagen reconstruidos, bloques residuales y/o bloques de predicción, y tal información se almacena en el componente 423 de búfer de imágenes decodificadas. Los bloques de imagen reconstruidos del componente 423 de búfer de imágenes decodificadas se reenvían a un componente 421 de compensación de movimiento para la interpredicción. El componente 421 de compensación de movimiento puede ser sustancialmente similar al componente 221 de estimación de movimiento y al componente 219 de compensación de movimiento. Específicamente, el componente 421 de compensación de movimiento emplea vectores de movimiento de un bloque de referencia para generar un bloque de predicción y aplica un bloque residual al resultado para reconstruir un bloque de imagen. Los bloques reconstruidos resultantes también pueden reenviarse a través del componente 425 de filtros en bucle al componente 423 de búfer de imágenes decodificadas. El componente 423 de búfer de imágenes decodificadas continúa almacenando bloques de imagen reconstruidas adicionales, que pueden reconstruirse en fotogramas a través de la información de partición. Tales fotogramas también pueden colocarse en secuencia. La secuencia es enviada hacia un dispositivo de visualización como una señal de vídeo de salida reconstruida.
La FIG. 5 es un diagrama esquemático que ilustra un ejemplo del flujo de bits 500 que contiene múltiples tipos de APS que incluyen diferentes tipos de parámetros de la herramienta de codificación. Por ejemplo, el flujo de bits 500 puede ser generado por un sistema 200 de códec y/o un codificador 300 para su decodificación por un sistema 200 de códec y/o un decodificador 400. Como otro ejemplo, el flujo de bits 500 puede ser generado por un codificador en la etapa 109 del método 100 para su uso por un decodificador en la etapa 111.
El flujo de bits 500 incluye un conjunto de parámetros de secuencia (SPS) 510, una pluralidad de conjuntos de parámetros de imagen (PPS) 511, una pluralidad de APS ALF 512, una pluralidad de APS 513 de lista de escalado, una pluralidad de APS LMCS 514, una pluralidad de cabeceras 515 de segmento y datos 520 de imagen. Un SPS 510 contiene datos de secuencia comunes a todas las imágenes de la secuencia de vídeo contenida en el flujo de bits 500. Tales datos pueden incluir el tamaño de la imagen, la profundidad de bits, los parámetros de la herramienta de codificación, las restricciones de tasa de bits, etc. El PPS 511 contiene parámetros que aplican a toda una imagen. Por lo tanto, cada imagen en la secuencia de vídeo puede referirse a un PPS 511. Cabe señalar que, si bien cada imagen se refiere a un PPS 511, un solo PPS 511 puede contener datos de múltiples imágenes en algunos ejemplos. Por ejemplo, se pueden codificar múltiples imágenes similares según parámetros similares. En tal caso, un solo<p>P<s>511 puede contener datos para tales imágenes similares. El PPS 511 puede indicar las herramientas de codificación disponibles para segmentos en imágenes correspondientes, parámetros de cuantificación, desplazamientos, etc. La cabecera 515 de segmento contiene parámetros que son específicos para cada segmento en una imagen. Por lo tanto, puede haber una cabecera 515 de segmento por segmento en la secuencia de vídeo. La cabecera 515 de segmento puede contener información de tipo de segmento, recuentos de orden de imagen (POC), listas de imágenes de referencia, ponderaciones de predicción, puntos de entrada de mosaicos, parámetros de desbloqueo, etc. Cabe señalar que una cabecera 515 de segmento también puede denominarse cabecera del grupo de mosaicos en algunos contextos.
Un APS es una estructura de sintaxis que contiene elementos de sintaxis que se aplican a una o más imágenes 521 y/o segmentos 523. En el ejemplo mostrado, un APS se puede separar en múltiples tipos. Un APS ALF 512 es un APS de tipo ALF que incluye parámetros ALF. Un ALF es un filtro adaptativo basado en bloques que incluye una función de transferencia controlada por parámetros variables y emplea la retroalimentación de un bucle de retroalimentación para refinar la función de transferencia. Además, el ALF se emplea para corregir artefactos de codificación (por ejemplo, errores) que ocurren como resultado de la codificación basada en bloques. Un filtro adaptativo es un filtro lineal con un controlador de función de transferencia mediante parámetros variables que pueden controlarse mediante un algoritmo de optimización, tal como el proceso RDO que opera en el codificador. Como tal, los parámetros ALF incluidos en un APS ALF 512 pueden incluir parámetros variables seleccionados por el codificador para hacer que el filtro elimine artefactos de codificación basados en bloques durante la decodificación en el decodificador.
Un APS 513 de lista de escalado es un APS de tipo lista de escalado que incluye parámetros de lista de escalado. Como se analizó anteriormente, un bloque actual se codifica según la interpredicción o intrapredicción, lo que da como resultado un residuo. Este residuo es la diferencia entre los valores de luma y/o croma del bloque y los valores correspondientes del bloque de predicción. Luego se aplica una transformación al residuo para convertir el residuo en coeficientes de transformación (que son más pequeños que los valores residuales). La codificación de contenido de alta definición y/o ultra alta definición puede dar como resultado un aumento de datos residuales. Un proceso de transformación simple puede dar como resultado un ruido de cuantificación significativo cuando se aplica a tales datos. Como tal, los parámetros de lista de escalado incluidos en un APS 513 de lista de escalado pueden incluir parámetros de ponderación que pueden aplicarse para escalar las matrices de transformación para tener en cuenta las variaciones en las resoluciones de pantalla y/o niveles aceptables de ruido de cuantificación en una imagen de vídeo decodificada resultante.
Un APS LMCS 514 es un APS de tipo LMCS que incluye parámetros LMCS, que también se conocen como parámetros de reshaper. El sistema visual humano es menos capaz de distinguir diferencias de color (por ejemplo, crominancia) que diferencias de luz (por ejemplo, luminancia). Como tal, algunos sistemas de vídeo usan un mecanismo de submuestreo de croma para comprimir datos de vídeo reduciendo la resolución de los valores de croma sin ajustar los valores de luma correspondientes. Un problema con estos mecanismos es que la interpolación asociada puede producir valores de croma interpolados durante la decodificación que son incompatibles con los valores de luma correspondientes en algunas ubicaciones. Esto crea artefactos de color en tales ubicaciones, que deben corregirse con los filtros correspondientes. Esto se complica por los mecanismos de mapeo de luma. El mapeo de luma es el proceso de remapear los componentes de luma codificados en un intervalo dinámico de una señal de luma de entrada (por ejemplo, según una función lineal por partes). Esto comprime los componentes de luma. Los algoritmos LMCS escalan los valores de croma comprimidos basándose en los mapeos de luma para eliminar los artefactos relacionados con el submuestreo de croma. Como tal, los parámetros LMCS incluidos en un APS LMCS 514 indican el escalado de croma usado para tener en cuenta el mapeo de luma. Los parámetros LMCS están determinados por el codificador y pueden ser empleados por el decodificador para filtrar artefactos causados por el submuestreo de croma cuando se emplea el mapeo de luma.
Los datos 520 de imagen contienen datos de vídeo codificados según interpredicción y/o intrapredicción, así como datos residuales transformados y cuantificados correspondientes. Por ejemplo, una secuencia de vídeo incluye una pluralidad de imágenes 521 codificadas como datos de imagen. Una imagen 521 es un solo fotograma de una secuencia de vídeo y, por lo tanto, generalmente se visualiza como una sola unidad cuando se visualiza la secuencia de vídeo. Sin embargo, se pueden visualizar imágenes parciales para implementar ciertas tecnologías tales como realidad virtual, imagen en imagen, etc. Las imágenes 521 hacen referencia cada una a un PPS 511. Las imágenes 521 se dividen en segmentos 523. Un segmento 523 puede definirse como una sección horizontal de una imagen 521. Por ejemplo, un segmento 523 puede contener una porción de la altura de la imagen 521 y el ancho completo de la imagen 521. En otros casos, la imagen 521 puede dividirse en columnas y filas y puede incluirse un segmento 523 en una parte rectangular de la imagen 521 creada por tales columnas y filas. En algunos sistemas, los segmentos 523 se subdividen en mosaicos. En otros sistemas, los segmentos 523 se denominan grupos de mosaicos que contienen los mosaicos. Los segmentos 523 y/o grupos de mosaicos hacen referencia a una cabecera 515 de segmento. Los mosaicos 523 se dividen adicionalmente en unidades de árbol de codificación (CTU). Las CTU se dividen adicionalmente en bloques de codificación basándose en árboles de codificación. Luego, los bloques de codificación pueden codificarse/decodificarse según mecanismos de predicción.
La imagen 521 y/o el segmento 523 pueden referirse, directa o indirectamente, a un APS ALF 512, al APS 513 de lista de escalado y/o al APS LMCS 514 que contiene parámetros relevantes. Por ejemplo, un segmento 523 puede hacer referencia a una cabecera 515 de segmento. Además, una imagen 521 puede hacer referencia a una cabecera de imagen correspondiente. La cabecera 515 de segmento y/o la cabecera de imagen pueden hacer referencia al APS ALF 512, al APS 513 de lista de escalado y/o al APS LMCS 514 que contienen parámetros usados en la codificación del segmento 523 y/o la imagen 521 relevante. De esta manera, un decodificador puede obtener los parámetros de la herramienta de codificación que son relevantes para un segmento 523 y/o imagen 521 según las referencias de cabecera relacionadas con el segmento 523 y/o imagen 521 correspondiente.
El flujo de bits 500 se codifica en unidades 535 de NAL de capa de codificación de vídeo (VCL) y unidades 531 NAL no VCL. Una unidad NAL es una unidad de datos codificados dimensionada para ser colocada como carga útil de un solo paquete para su transmisión a través de una red. Una unidad 535 NAL VCL es una unidad NAL que contiene datos de vídeo codificados. Por ejemplo, cada unidad 535 NAL VCL puede contener un segmento 523 y/o un grupo de mosaicos de datos, CTU y/o bloques de codificación. Una unidad 531 NAL no VCL es una unidad NAL que contiene sintaxis de soporte, pero no contiene datos de vídeo codificados. Por ejemplo, una unidad 531 NAL no VCL puede contener el SPS 510, un PPS 511, un APS, una cabecera 515 de segmento, etc. Como tal, el decodificador recibe el flujo de bits 500 en unidades 535 NAL VCL y unidades 531 NAL no VCL discretas. Una unidad de acceso es un grupo de unidades 535 NAL VCL y/o unidades 531 NAL no VCL que incluyen datos suficientes para codificar una sola imagen 521.
En algunos ejemplos, el APS ALF 512 el APS 513 de lista de escalado y el APS LMCS 514 están asignados cada uno a un tipo de unidad 531 NAL no VCL separada. En tal caso, el APS ALF 512, el APS 513 de lista de escalado y el APS LMCS 514 se incluyen en una unidad 532 NAL APS ALF, una unidad 533 NAL APS de lista de escalado y una unidad 534 NAL a Ps LMCS, respectivamente. En consecuencia, una unidad 532 NAL APS ALF contiene parámetros ALF que permanecen vigentes hasta que se recibe otra unidad 532 NAL APS ALF. Además, una unidad 533 NAL a Ps de lista de escalado contiene parámetros de lista de escalado que permanecen vigentes hasta que se recibe otra unidad 533 NAL APS de lista de escalado. Además, una unidad 534 NAL APS LMCS contiene parámetros LMCS que permanecen vigentes hasta que se recibe otra unidad 534 NAL APS LMCS. De esta manera, no es necesario emitir un nuevo APS cada vez que cambia un parámetro APS. Por ejemplo, un cambio en los parámetros LMCS da como resultado un APS LMCS 514 adicional, pero no da como resultado un APS ALF 512 adicional ni un APS 513 de lista de escalado. En consecuencia, separando los APS en diferentes tipos de unidades NAL según el tipo de parámetro, se evita la señalización redundante de parámetros no relacionados. Como tal, separando los APS en diferentes tipos de unidades NAL aumenta la eficiencia de la codificación y, por lo tanto, disminuye el uso de recursos de procesador, memoria y/o red en el codificador y el decodificador.
Además, un segmento 523 y/o una imagen 521 pueden hacer referencia directamente o indirectamente a un APS ALF 512, una unidad 532 NAL APS ALF, un APS 513 de lista de escalado, una unidad 533 NAL APS de lista de escalado, un APS LMCS 514 y/o una unidad 534 NAL APS LMCS que contiene parámetros de la herramienta de codificación empleados para codificar el segmento 523 y/o una imagen 521. Por ejemplo, cada APS puede contener un ID 542 de APS y un tipo 541 de parámetro. El ID 542 de APS es un valor (por ejemplo, un número) que identifica el APS correspondiente. El ID 542 de APS puede contener un número predefinido de bits. Por lo tanto, el ID 542 de APS puede aumentar según una secuencia predefinida (por ejemplo, aumentar en uno) y puede restablecerse en un valor mínimo (por ejemplo, cero) una vez que la secuencia alcanza el final de un intervalo predefinido. El tipo 541 de parámetro indica el tipo de parámetros contenidos en el APS (por ejemplo, ALF, lista de escalado y/o LMCS). Por ejemplo, el tipo 541 de parámetro puede incluir un código de tipo de parámetro APS (aps_params_type) establecido en un valor predefinido que indica un tipo de parámetros incluidos en cada APS. Como tal, el tipo 541 de parámetro se puede usar para distinguir entre un APS ALF 512, un APS 513 de lista de escalado y un APS LMCS 514. En algunos ejemplos, el APS ALF 512, el APS 513 de lista de escalado y el APS LMCS 514 pueden identificarse cada uno de forma única mediante una combinación de un tipo 541 de parámetro y un ID 542 de APS. Por ejemplo, cada tipo de APS puede incluir un espacio de valores separado para los ID 542 de APS correspondientes. Por lo tanto, cada tipo de APS puede incluir un ID 542 de APS que aumenta en secuencia basándose en un APS anterior del mismo tipo. Sin embargo, es posible que el ID 542 de APS para un primer tipo de APS no esté relacionado con un ID 542 de APS para un APS anterior de un segundo tipo de APS diferente. Como tal, los ID 542 de APS para diferentes tipos de APS pueden incluir espacios de valores que se superponen. Por ejemplo, un APS de un<primer tipo (por ejemplo, un APS ALF) puede incluir el mismo ID 542 de APS que un a>P<s de un segundo tipo>(por ejemplo, un APS LMCS) en algunos casos. Al permitir que cada tipo de APS incluya un espacio de valores diferente, el códec no necesita comprobar en todos los tipos de APS los conflictos de ID 542 de APS. Además, al permitir que los espacios de valores se superpongan, el códec puede evitar emplear valores de ID 542 de APS más grandes, lo que da como resultado un ahorro de bits. Como tal, empleando espacios de valores superpuestos separados para ID 542 de APS de diferentes tipos de APS aumenta la eficiencia de codificación y, por lo tanto, reduce el uso de recursos de red, recursos de memoria y/o recursos de procesamiento en el codificador y el decodificador. Como se señaló anteriormente, el ID APS 542 puede extenderse sobre un intervalo predefinido. En algunos ejemplos, el intervalo predefinido del ID APS 542 puede variar dependiendo del tipo de APS indicado por el tipo 541 de parámetro. Esto puede permitir que se asigne un número diferente de bits a diferentes tipos de APS dependiendo de la frecuencia con la que generalmente cambian los parámetros de diferentes tipos. Por ejemplo, los ID 542 de APS del APS ALF 512 pueden tener un intervalo de cero a siete, los ID 542 de APS del APS 513 de lista de escalado pueden tener un intervalo de cero a siete, y los ID 542 de APS del APS LMCS 514 pueden tener un intervalo de cero a tres.
En otro ejemplo, los parámetros LMCS se incluyen en el APS LMCS 514. Algunos sistemas incluyen parámetros LMCS en una cabecera 515 de segmento. Sin embargo, los parámetros LMCS/reshaper pueden cambiar aproximadamente una vez por segundo. Las secuencias de vídeo pueden visualizar de treinta a sesenta imágenes 521 por segundo. Como tal, es posible que los parámetros LMCS no cambien durante treinta a sesenta fotogramas. La inclusión de parámetros LMCS en un APS LMCS 514 reduce significativamente la codificación redundante de parámetros LMCS. En algunos ejemplos, una cabecera 515 de segmento y/o una cabecera de imagen asociada con un segmento 523 y/o una imagen 521, respectivamente, pueden hacer referencia al APS LMCS 514 relevante. Luego, el segmento 523 y/o la imagen 521 hacen referencia a la cabecera 515 de segmento y/o a una cabecera de imagen. Esto permite que el decodificador obtenga los parámetros LMCS para el segmento 523 asociado y/o la imagen 521. De esta manera, los parámetros LMCS solo se codifican cuando cambian los parámetros LMCS de un segmento 523 y/o una imagen 521. En<consecuencia, empleando un APS>LMC<s 514 para codificar parámetros LMCS aumenta la eficiencia de>codificación y, por lo tanto, reduce el uso de recursos de red, recursos de memoria y/o recursos de procesamiento en el codificador y el decodificador. Como LMCS no se emplea para todos los vídeos, el SPS 510 puede incluir un indicador 543 de LMCS habilitado. El indicador 543 de LMCS habilitado se puede establecer para indicar que LMCS está habilitado para una secuencia de vídeo codificada. Como tal, el decodificador puede obtener los parámetros LMCS del APS LMCS 514 basándose en el indicador 543 LMCS habilitado cuando el indicador 543 LMCS habilitado está establecido (por ejemplo, en uno). Además, es posible que el decodificador no intente obtener parámetros LMCS cuando el indicador 543 LMCS habilitado no esté establecido (por ejemplo, en cero).
La FIG. 6 es un diagrama esquemático que ilustra un ejemplo del mecanismo 600 para asignar los ID 642 de APS a diferentes tipos de APS sobre diferentes espacios de valores. Por ejemplo, el mecanismo 600 se puede<aplicar a un flujo de bits 500 para asignar los ID 542 de APS a APS ALF 512,>A<p>S<513 de lista de escalado y/o>APS LMCS 514. Además, el mecanismo 600 se puede aplicar a un códec 200, un codificador 300 y/o un decodificador 400 cuando se codifica un vídeo según el método 100.
El mecanismo 600 asigna los ID 642 de APS a APS ALF 612, APS 613 de lista de escalado y APS LMCS 614, que pueden ser sustancialmente similares a los ID 542 de APS, APS ALF 512, APS 513 de lista de escalado y APS LMCS 514, respectivamente. Como se señaló anteriormente, el ID 642 de APS se puede asignar en secuencia sobre una pluralidad de espacios de valores diferentes, donde cada espacio de valores es específico del tipo APS. Además, cada espacio de valores puede extenderse sobre un intervalo diferente que es específico del tipo de APS. En el ejemplo mostrado, el intervalo del espacio de valores del ID 642 de APS para el APS ALF 612 es de cero a siete (por ejemplo, tres bits). Además, el intervalo del espacio de valores del ID 642 de APS para la APS 613 de lista de escalado es de cero a siete (por ejemplo, tres bits). Además, el intervalo del espacio de valores del ID 642 de APS para el APS LMCS 611 es de cero a tres (por ejemplo, dos bits). Cuando un ID 642 de APS llega al final del intervalo del espacio de valores, el ID 642 de APS del siguiente APS del tipo correspondiente regresa al inicio del intervalo (por ejemplo, cero). Cuando un nuevo APS recibe el mismo ID 642 de APS que un APS anterior del mismo tipo, el APS anterior ya no está activo y ya no se puede referenciar. Como tal, el intervalo de un espacio de valores se puede ampliar para permitir que se haga referencia activa a más APS de un tipo. Además, el intervalo de un espacio de valores se puede reducir para aumentar la eficiencia de codificación, pero tal reducción también reduce el número de APS del tipo correspondiente que pueden permanecer activos y disponibles simultáneamente para referencia.
En el ejemplo mostrado, cada APS ALF 612, APS 613 de lista de escalado y APS LMCS 614 están referenciados por una combinación de ID 642 de APS y tipo de APS. Por ejemplo, el APS ALF 612, el APS LMCS 614 y la APS 613 de lista de escalado reciben cada uno un ID 642 de APS de cero. Cuando se recibe un nuevo APS ALF 612, el ID 642 de APS se incrementa a partir del valor usado para el APS ALF 612 anterior. La misma secuencia se aplica para el APS 613 de lista de escalado y APS LMCS 614. En consecuencia, cada ID 642 de APS está relacionado con el ID 642 de APS de APS anteriores del mismo tipo. Sin embargo, el ID 642 de APS no está relacionado con un ID 642 de APS de APS anteriores de otros tipos. En este ejemplo, el ID 642 de APS del APS ALF 612 aumenta de manera incremental de cero a siete y luego vuelve a cero antes de continuar incrementándose. Además, el ID 642 de APS del APS 613 de lista de escalado aumenta de manera incremental de cero a siete y luego vuelve a cero antes de continuar incrementándose. Además, el ID 642 de APS del APS LMCS 611 aumenta de manera incremental de cero a tres y luego vuelve a cero antes de continuar incrementándose. Como se muestra, tales espacios de valores se superponen ya que diferentes APS de diferentes tipos de APS pueden compartir el mismo ID 642 de APS en el mismo punto de la secuencia de vídeo. También se debe tener en cuenta que el mecanismo 600 solo representa el APS. En un flujo de bits, el APS representado se intercalaría entre otras unidades NAL VCL y no VCL, tal como un SPS, PPS, cabecera de segmento, cabecera de imagen, segmentos, etc.
Como tal, la presente descripción incluye mejoras en el diseño del APS así como algunas mejoras para la señalización de los parámetros de reshaper/LMCS. El APS está diseñado para la señalización de información que puede ser compartida por múltiples imágenes y puede incluir muchas variaciones. Los parámetros de reshaper/LMCS se emplean para una herramienta de codificación de vídeo LMCS/reshaper en bucle adaptativo. Los mecanismos anteriores se pueden implementar de la siguiente manera. Para solucionar los problemas enumerados en la presente memoria, se incluyen varios aspectos que pueden emplearse individualmente y/o en combinación.
El APS descrito se modifica de manera tal que se puedan usar múltiples APS para transportar diferentes tipos de parámetros. Cada unidad APS NAL se usa para transportar solo un tipo de parámetros. En consecuencia, se codifican dos unidades NAL APS cuando se transportan dos tipos de información para un grupo de mosaicos/segmento en particular (por ejemplo, una para cada tipo de información). El APS puede incluir un campo de tipo de parámetros APS en la sintaxis APS. Solo los parámetros del tipo indicado por el campo de tipo de parámetros APS se pueden incluir en la unidad NAL APS.
En algunos ejemplos, diferentes tipos de parámetros APS se indican mediante diferentes tipos de unidades NAL. Por ejemplo, se usan dos tipos diferentes de unidades NAL para APS. Los dos tipos de APS pueden denominarse APS ALF y APS reshaper, respectivamente. En otro ejemplo, un tipo de parámetros de la herramienta que se transportan en una unidad NAL APS se especifica en la cabecera de unidad NAL. En VVC, una cabecera de unidad NAL tiene bits reservados (por ejemplo, siete bits denominados 7 bits nuh_reserved_zero). En algunos ejemplos, algunos de estos bits (por ejemplo, tres bits de los siete bits) pueden usarse para especificar un campo de tipo de parámetro APS. En algunos ejemplos, los APS de un tipo particular pueden compartir el mismo espacio de valores para los ID de APS. Mientras tanto, diferentes tipos de APS usan diferentes espacios de valores del ID de APS. En consecuencia, dos APS de diferentes tipos pueden coexistir y tener el mismo valor de ID de APS en el mismo instante. Además, se puede emplear la combinación de ID de APS y el tipo de parámetros de APS para identificar un APS de otros APS.
El ID de APS se puede incluir en la sintaxis de la cabecera del grupo de mosaicos cuando se habilita una herramienta de codificación correspondiente para el grupo de mosaicos. De lo contrario, es posible que el ID de APS del tipo correspondiente no se incluya en la cabecera del grupo de mosaicos. Por ejemplo, cuando ALF está habilitado para un grupo de mosaicos, el APS ID de APS ALF se incluye en la cabecera del grupo de mosaicos. Por ejemplo, esto se puede lograr estableciendo el campo de tipo de parámetros APS para indicar el tipo de ALF. En consecuencia, cuando ALF no está habilitado para el grupo de mosaicos, el ID de APS del APS ALF no se incluye en la cabecera del grupo de mosaicos. Además, cuando se habilita una herramienta de codificación de reshaper para un grupo de mosaicos, el ID de APS del APS de reshaper se incluye en la cabecera del grupo de mosaicos. Por ejemplo, esto se puede lograr estableciendo el campo de tipo de parámetros APS para indicar el tipo de reshaper. Además, cuando se habilita una herramienta de codificación de reshaper para un grupo de mosaicos, es posible que el ID de APS del APS de reshaper no se incluya en la cabecera del grupo de mosaicos.
En algunos ejemplos, la presencia de información de tipo de parámetros APS en un APS puede estar condicionada por el uso de herramientas de codificación asociadas con los parámetros. Cuando solo se habilita una herramienta de codificación relacionada con APS para un flujo de bits (por ejemplo, LMCS, ALF o lista de escalado), es posible que la información del tipo de parámetros APS no esté presente y, en su lugar, pueda ser inferida. Por ejemplo, cuando un APS puede contener parámetros para herramientas de codificación ALF y reshaper pero solo ALF está habilitado (por ejemplo, como se especifica mediante un indicador en el SPS) y el reshaper no está habilitado (por ejemplo, como se especifica mediante un indicador en el SPS), es posible que el tipo de parámetro APS no esté señalizado y puede inferirse que es igual a los parámetros ALF.
En otro ejemplo, la información del tipo de parámetro APS puede inferirse del valor de ID de APS. Por ejemplo, un intervalo de valores de ID de APS predefinido se puede asociar con un tipo de parámetro APS correspondiente. Este aspecto se puede implementar de la siguiente manera. En lugar de asignar X bits para señalizar un ID de APS e Y bits para señalizar el tipo de parámetros de APS, se pueden asignar X Y bits para señalizar el ID de APS. Luego se pueden especificar los diferentes intervalos del valor del ID de APS para indicar diferentes tipos de parámetros de APS. Por ejemplo, en lugar de usar cinco bits para señalizar un ID de APS y tres bits para señalizar un tipo de parámetros de APS, se pueden asignar ocho bits para señalizar un ID de a Ps (por ejemplo, sin aumentar los costes de bits). El intervalo de valores de ID de APS de cero a sesenta y tres indica que APS contiene parámetros para ALF, el intervalo de valores de ID de sesenta y cuatro a noventa y cinco indica que APS contiene parámetros para el reshaper, y de noventa y seis a doscientos cincuenta y cinco se puede reservar para otros tipos de parámetros, tal como la lista de escalado. En otro ejemplo, el intervalo de valores de ID de APS de cero a treinta y uno indica que APS contiene parámetros para ALF, el intervalo de valores de ID de treinta y dos a cuarenta y siete indica que APS contiene parámetros para el reshaper, y de cuarenta y ocho a doscientos cincuenta y cinco se puede reservar para otros tipos de parámetros, tal como la lista de escalado. La ventaja de este enfoque es que el intervalo de ID de APS se puede asignar dependiendo de la frecuencia de los cambios de parámetros de cada herramienta. Por ejemplo, se puede esperar que los parámetros ALF cambien con mayor frecuencia que los parámetros de reshaper. En tal caso, se puede emplear un intervalo de ID de APS más grande para indicar que un APS es un APS que contiene el parámetro ALF.
En un primer ejemplo, uno o más de los aspectos anteriores pueden implementarse de la siguiente manera. Un APS ALF puede definirse como un APS que tiene aps_params_type igual a ALF_APS. Un APS reshaper (o APS LMCS) puede definirse como un APS que tiene aps_params_type igual a MAP_APS. Un ejemplo de sintaxis y semántica de SPS es el siguiente:
seq_parameter_set_rbsp( ) { Descriptor
sps_reshaper_enabled_flag u(1)
}
El sps_reshaper_enabled_flag se establece igual a uno para especificar que el reshaper se usa en la secuencia de vídeo codificada (CVS). El sps_reshaper_enabled_flag se establece igual a cero para especificar que el reshaper no se usa en el CVS.
Un ejemplo de sintaxis y semántica de APS es el siguiente.
adaptation_parameter_set_rbsp( ) { Descriptor
adaptation_parameter_set_id u(5)
aps_params_type u(3)
if( aps_params_type == ALF_APS ) // 0
alf_data( )
else if ( aps_params type = = MAP_APS ) // 1
reshaper_data( )
aps_extension_flag u(1)
if( aps_extension_flag)
while( more rbsp_data( ) )
aps_extension_data_flag u(1)
rbsp_trailing_bits( )
}
El tipo aps_params especifica el tipo de parámetros APS transportados en el APS como se especifica en la siguiente tabla.
Tabla 1 - Códigos de tipo de parámetros APS y tipos de parámetros APS
aps_params_type Nombre de aps_params_type Tipo de parámetros APS
0 ALF_APS Parámetros ALF
1 MAP_APS Parámetros de mapeo en bucle (es decir, reshaper)
2..7 Reservado Reservado
Un ejemplo de sintaxis y semántica de cabecera del grupo de mosaicos es el siguiente. tile_group_header( ) { Descriptor
if( sps_alf_enabled_flag ) {
tile_group_alf_enabled_flag u(1)
if( tile_group_alf_enabled_flag )
tile_group_alf_aps_id u(5)
}
if( sps_reshaper_enabled_flag) {
tile_group_reshaper_enable_flag u(1)
tile_group_reshaper_aps_id u(5) if( tile group reshaper enable flag && ( ! ( qtbtt dual tree intra flag && tile group type = =
I ) ) )
tile_group_reshaper_chroma_residual_scale_flag u(1)
}
if( NumTilesInCurrTileGroup > 1 ) {
offset_len_minus1 ue(v)
for( i = 0; i < NumTilesInCurrTileGroup - 1; i++ )
entry_point_offset_minus1[ i ] u(v)
}
byte_alignment( )
}
El tile_group_alf_aps_id especifica el adaptation_parameter_set_id del APS ALF al que hace referencia el grupo de mosaicos. El TemporalId de la unidad NAL APS ALF con un adaptation_parameter_set_id igual a tile_group_alf_aps_id será menor o igual que el TemporalId de la unidad NAL del grupo de mosaicos codificado. Cuando dos o más grupos de mosaicos de la misma imagen se refieran a múltiples ALF APS con el mismo valor de adaptation_parameter_set_id, los múltiples ALF APS con el mismo valor de adaptation_parameter_set_id tendrán el mismo contenido.
El tile_group_reshaper_enabled_flag se establece igual a uno para especificar que el reshaper está habilitado para el grupo de mosaicos actual. El tile_group_reshaper_enabled_flag se establece igual a cero para especificar que el reshaper no está habilitado para el grupo de mosaicos actual. Cuando tile_group_reshaper_enable_flag no está presente, se infiere que el indicador es igual a cero. El tile_group_reshaper_aps_id especifica el adaptation_parameter_set_id del APS de reshaper al que hace referencia el grupo de mosaicos. El TemporalId de la unidad NAL APS de reshaper con un adaptation_parameter_set_id igual a tile_group_reshaper_aps_id será menor o igual que el TemporalId de la unidad NAL del grupo de mosaicos codificado. Cuando dos o más grupos de mosaicos de la misma imagen hacen referencia a múltiples APS de reshaper con el mismo valor de adaptation_parameter_set_id, las múltiples APS de reshaper con el mismo valor de adaptation_parameter_set_id tendrán el mismo contenido. El tile_group_reshaper_chroma_residual_scale_flag se establece igual a uno para especificar que el escalado residual de croma está habilitado para el grupo de mosaicos actual. El tile_group_reshaper_chroma_residual_scale_flag se establece igual a cero para especificar que el escalado residual de croma no está habilitado para el grupo de mosaicos actual. Cuando tile_group_reshaper_chroma_residual_scale_flag no está presente, se infiere que el indicador es igual a cero.
Un ejemplo de sintaxis y semántica de datos de reshaper es el siguiente.
reshaper_data( ) { Descriptor
reshaper_model_min_bin_idx ue(v)
reshaper_model_delta_max_bin_idx ue(v)
reshaper_model_bin_delta_abs_cw_prec_minus1 ue(v)
for ( i = reshaper_model_min_bin_idx; i <= reshaper_model_max_bin_idx; i++) {
reshaper_model_bin_delta_abs_CW[ i ] u(v)
if( reshaper_model_bin_delta_abs_CW[ i ] ) > 0 )
reshaper_model_bin_delta_sign_CW_flag[ i ] u(1)
}
}
El reshape_model_min_bin_idx especifica el índice de bin (o pieza) mínimo a usar en el proceso de construcción de reshaper. El valor de reshape_model_min_bin_idx estará en el intervalo de cero a MaxBinIdx, inclusive. El valor de MaxBinIdx será igual a quince. El reshaper_model_delta_max_bin_idx especifica el índice de bin (o pieza) máximo permitido MaxBinIdx menos el índice de bin máximo a usar en el proceso de construcción de reshaper. El valor de reshape_model_max_bin_idx se establece igual a MaxBinIdx -reshaper_model_delta_max_bin_idx. El reshaper_model_bin_delta_abs_cw_prec_minus1 más 1 especifica el número de bits usados para la representación del elemento de sintaxis reshape_model_bin_delta_abs_CW[ i ]. El reshaper_model_bin_delta_abs_CW[ i ] especifica el valor de la palabra de código delta absoluto para el i-ésimo bin. El elemento de sintaxis reshaper_model_bin_delta_abs_CW[ i ] está representado por reshaper_model_bin_delta_abs_cw_prec_minus1 1 bits. El reshaper_model_bin_delta_sign_CW_flag[ i ] especifica el signo de reshape_model_bin_delta_abs_CW[ i ].
En un segundo ejemplo, uno o más de los aspectos anteriores pueden implementarse de la siguiente manera. Un ejemplo de sintaxis y semántica de SPS es el siguiente:
seq_parameter_set_rbsp( ) { Descriptor
sps_alf_enabled_flag u(1)
sps_reshaper_enabled_flag u(1)
}
Las variables ALFEnabled y ReshaperEnabled se establecen de la siguiente manera. ALFEnabled = sps_alf_enabled_flag y ReshaperEnabled = sps_reshaper_enabled_flag.
Un ejemplo de sintaxis y semántica de APS es el siguiente.
adaptation_parameter_set_rbsp( ) { Descriptor
adaptation_parameter_set_id u(5)
if( ALFEnabled && ReshaperEnabled )
aps_params_type u(3)
if( aps_params_type == ALF_APS ) // 0
alf_data( )
else if ( aps_params type = = MAP_APS ) // 1
reshaper_data( )
aps_extension_flag u(1)
if( aps_extension_flag)
while( more rbsp_data( ) )
aps_extension_d ata_fl a g u(1)
rbsp_trailing_bits( )
}
El tipo aps_params especifica el tipo de parámetros APS transportados en el APS como se especifica en la siguiente tabla.
Tabla 2 - Códigos de tipo de parámetros APS y tipos de parámetros APS
aps_params_type Nombre de aps_params_type Tipo de parámetros APS
0 Parámetros ALF
1 MAP_APS Parámetros de mapeo en bucle (es decir, reshaper)
2..7 Reservado Reservado
Cuando no está presente, el valor de aps_params_type se infiere de la siguiente manera. Si ALFEnabled, aps_params_type se establece para que sea igual a cero. De lo contrario, aps_params_type se establece para que sea igual a uno.
En un segundo ejemplo, uno o más de los aspectos anteriores pueden implementarse de la siguiente manera. Un ejemplo de sintaxis y semántica de SPS es el siguiente:
adaptation_parameter_set_rbsp( ) { Descriptor
adaptation_parameter_set_id u(8)
if( ApsParamsType = = ALF_APS ) // 0
alf_data( )
else if (ApsParamsType = = MAP_APS ) // 1
reshaper_data( )
aps_extension_flag u(1)
if( aps_extension_flag)
while( more rbsp_data( ) )
aps_extension_d ata_fl a g u(1)
rbsp_trailing_bits( )
}
El adaptation_parameter_set_id proporciona un identificador para el APS para referencia por otros elementos de sintaxis. Los APS se pueden compartir entre imágenes y pueden ser diferentes en diferentes grupos de mosaicos dentro de una imagen. El valor y la descripción de la variable APSParamsType se definen en la siguiente tabla.
Tabla 3 - Códigos de tipo de parámetros APS y tipos de parámetros APS
intervalo de ID de APS ApsParamsType Tipo de parámetros APS
0 ~ 63 Parámetros ALF
64 ~ 95 1: MAP_APS Parámetros de mapeo en bucle (es decir, reshaper)
96..255 Reservado Reservado
Un ejemplo de semántica de la cabecera del grupo de mosaicos es la siguiente. El tile_group_alf_aps_id especifica el adaptation_parameter_set_id del APS ALF al que hace referencia el grupo de mosaicos. El TemporalId de la unidad NAL APS ALF con un adaptation_parameter_set_id igual a tile_group_alf_aps_id será menor o igual que el TemporalId de la unidad NAL del grupo de mosaicos codificado. El valor de tile_group_alf_aps_id estará en el intervalo de cero a sesenta y tres, inclusive.
Cuando dos o más grupos de mosaicos de la misma imagen se refieran a múltiples ALF APS con el mismo valor de adaptation_parameter_set_id, los múltiples ALF APS con el mismo valor de adaptation_parameter_set_id tendrán el mismo contenido. El tile_group_reshaper_aps_id especifica el adaptation_parameter_set_id del APS de reshaper al que hace referencia el grupo de mosaicos. El TemporalId de la unidad NAL APS de reshaper con un adaptation_parameter_set_id igual a tile_group_reshaper_aps_id será menor o igual que el TemporalId de la unidad NAL del grupo de mosaicos codificado. El valor de tile_group_reshaper_aps_id estará en el intervalo de sesenta y cuatro a noventa y cinco, inclusive. Cuando dos o más grupos de mosaicos de la misma imagen hacen referencia a múltiples APS de reshaper con el mismo valor de adaptation_parameter_set_id, las múltiples APS de reshaper con el mismo valor de adaptation_parameter_set_id tendrán el mismo contenido.
La FIG. 7 es un diagrama esquemático de un ejemplo del dispositivo 700 de codificación de vídeo. El dispositivo 700 de codificación de vídeo es adecuado para implementar los ejemplos/realizaciones descritos como se describe en la presente memoria. El dispositivo 700 de codificación de vídeo comprende puertos 720 de entrada, puertos 750 de salida y/o unidades 710 transceptoras (Tx/Rx), incluyendo transmisores y/o receptores para comunicar datos de salida y/o de entrada a través de una red. El dispositivo 700 de codificación de vídeo también incluye un procesador 730 que incluye una unidad lógica y/o una unidad de procesamiento central (CPU) para procesar los datos y una memoria 732 para almacenar los datos. El dispositivo 700 de codificación de vídeo también puede comprender componentes óptico a eléctrico (OE), componentes eléctrico a óptico (EO) y/o componentes de comunicación inalámbrica acoplados a los puertos 750 de salida y/o puertos 720 de entrada para la comunicación de datos a través de redes de comunicación eléctricas, ópticas o inalámbricas. El dispositivo 700 de codificación de vídeo también puede incluir dispositivos 760 de entrada y/o salida (E/S)<para comunicar datos hacia y desde un usuario. Los dispositivos>760<de E/S pueden incluir dispositivos de>salida, tales como un dispositivo de visualización para visualizar datos de vídeo, altavoces para emitir datos de audio, etc. Los dispositivos 760 de E/S también pueden incluir dispositivos de entrada, tales como un teclado, ratón, bola de seguimiento, etc., y/o interfaces correspondientes para interactuar con tales dispositivos de salida.
El procesador 730 está implementado por hardware y software. El procesador 730 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), matrices de puertas programable en campo (FPGA), circuitos integrados de aplicación específica (ASIC), y procesadores de señales digitales (DSP). El procesador 730 está en comunicación con los puertos 720 de entrada, Tx/Rx 710, puertos 750 de salida y memoria 732. El procesador 730 comprende un módulo 714 de codificación. El módulo 714 de codificación implementa las realizaciones descritas en la presente memoria, tales como los métodos 100, 800 y 900, que pueden emplear un flujo de bits 500 y/o mecanismo 600. El módulo 714 de codificación también puede implementar cualquier otro método/mecanismo descrito en la presente memoria. Además, el módulo 714 de codificación puede implementar un sistema 200 de códec, un codificador 300 y/o un decodificador 400. Por ejemplo, el módulo 714 de codificación puede codificar/decodificar imágenes en un flujo de bits y codificar/decodificar parámetros asociados con segmentos de las imágenes en una pluralidad de APS. En algunos ejemplos, se pueden codificar diferentes tipos de parámetros en diferentes tipos de APS. Además, se pueden incluir diferentes tipos de APS en diferentes tipos de unidades NAL. Tales tipos de APS pueden incluir APS ALF, APS de lista de escalado y/o APS LMCS. Cada APS puede incluir los<i>D de APS. Los ID de APS de diferentes tipos de APS pueden aumentar en secuencia en diferentes espacios de valores. Además, los segmentos y/o imágenes pueden hacer referencia a cabeceras de segmento y/o cabeceras de imagen correspondientes. Luego, tales cabeceras pueden hacer referencia a APS que contienen herramientas de codificación relevantes. Tales APS pueden referenciarse de forma única por ID de APS y tipo de APS. Tales ejemplos reducen la señalización redundante de los parámetros de la herramienta de codificación y/o reducen el uso de bits para los identificadores. Por lo tanto, el módulo 714 de codificación hace que el dispositivo 700 de codificación de vídeo proporcione funcionalidad adicional y/o eficiencia de codificación cuando se codifican datos de vídeo. Como tal, el módulo 714 de codificación mejora la funcionalidad del dispositivo 700 de codificación de vídeo y, además, aborda problemas que son específicos de las técnicas de codificación de vídeo. Además, el módulo 714 de codificación efectúa una transformación del dispositivo 700 de codificación de vídeo a un estado diferente. Alternativamente, el módulo 714 de codificación puede implementarse como instrucciones almacenadas en la memoria 732 y ejecutadas por el procesador 730 (por ejemplo, como un producto de programa informático almacenado en un medio no transitorio).
La memoria 732 comprende uno o más tipos de memoria tales como discos, unidades de cinta, unidades de estado sólido, memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria flash, memoria ternaria direccionable por contenido (TCAM), memoria de acceso aleatorio estática (SRAM), etc. La memoria 732 se puede usar como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando tales programas se seleccionan para su ejecución, y para almacenar instrucciones y datos que se leen durante la ejecución del programa.
La FIG. 8 es un diagrama de flujo de un ejemplo del método 800 de codificación de una secuencia de vídeo en un flujo de bits, tal como el flujo de bits 500, empleando una pluralidad de tipos de APS, tales como APS ALF 512, APS 513 de lista de escalado y/o APS LMCS 514. El método 800 puede ser empleado por un codificador, tal como un sistema 200 de códec, un codificador 300 y/o un dispositivo 700 de codificación de vídeo cuando se realiza el método 100. El método 800 también puede asignar ID de APS a APS de diferentes tipos empleando diferentes espacios de valores según el mecanismo 600.
El método 800 puede comenzar cuando un codificador recibe una secuencia de vídeo que incluye una pluralidad de imágenes y determina codificar esa secuencia de vídeo en un flujo de bits, por ejemplo basándose en la entrada del usuario. La secuencia de vídeo se particiona en imágenes/fotogramas para un posterior particionamiento antes de la codificación. En la etapa 801, el codificador determina el mapeo de luma con parámetros de escalado de croma (LMCS) para su aplicación a un segmento. Esto puede incluir el empleo de una operación RDO para codificar un segmento de la imagen. Por ejemplo, el codificador puede codificar iterativamente el segmento múltiples veces usando diferentes opciones/herramientas de codificación, decodificar el segmento codificado y filtrar el segmento decodificado para aumentar la calidad de salida del segmento. Luego, el codificador puede seleccionar las opciones de codificación que resulten en el mejor equilibrio entre compresión y calidad de salida. Una vez seleccionada la codificación, el codificador puede determinar los parámetros LMCS (y cualquier otro parámetro de filtro) que se emplearon para filtrar la codificación seleccionada. En la etapa 803, el codificador puede codificar el segmento en un flujo de bits basándose en la codificación seleccionada.
En la etapa 805, los parámetros LMCS determinados en la etapa 801 se codifican en el flujo de bits en un APS LMCS. Además, los datos relacionados con el segmento que hace referencia al APS LMCS también se pueden codificar en el flujo de bits. Por ejemplo, los datos relacionados con el segmento pueden ser una cabecera de segmento y/o una cabecera de imagen. En un ejemplo, una cabecera de segmento puede codificarse en el flujo de bits. El segmento puede hacer referencia a la cabecera de segmento. Luego, la cabecera de segmento contiene los datos relacionados con el segmento y hace referencia al APS LMCS. En otro ejemplo, una cabecera de imagen puede codificarse en el flujo de bits. La imagen que contiene el segmento puede hacer referencia a la cabecera de imagen. Luego, la cabecera de imagen contiene los datos relacionados con el segmento y hace referencia al APS LMCS. En cualquier caso, la cabecera contiene información suficiente para determinar el APS LMCS apropiado que contiene los parámetros LMCS para el segmento.
En la etapa 807, se pueden codificar otros parámetros de filtrado en otros APS. Por ejemplo, un APS ALF que contiene parámetros ALF y un APS de lista de escalado que contiene parámetros APS también se pueden codificar en el flujo de bits. Tales APS también pueden ser referenciados por una cabecera de segmento y/o una cabecera de imagen.
Como se señaló anteriormente, cada uno de los APS se puede identificar de forma única mediante una combinación de un tipo de parámetro y un ID de APS. Tal información puede ser empleada por la cabecera de segmento o la cabecera de imagen para hacer referencia al APS relevante. Por ejemplo, cada APS puede incluir un código aps_params_type establecido en un valor predefinido que indica un tipo de parámetros incluidos en el APS correspondiente. Además, cada APS puede incluir un ID de APS seleccionado de un intervalo predefinido. El intervalo predefinido puede determinarse basándose en un tipo de parámetro del APS correspondiente. Por ejemplo, los APS LMCS pueden tener un intervalo de cero a tres (dos bits) y los APS ALF y los APS de lista de escalado pueden tener intervalos de cero a siete (tres bits). Tales intervalos pueden describir diferentes espacios de valores superpuestos que son específicos del tipo de APS según lo describe el mecanismo 600. Como tal, el tipo de APS y el ID de APS pueden emplearse ambos para hacer referencia a un APS específico en las etapas 805 y 807.
En la etapa 809, el codificador codifica un SPS en el flujo de bits. El SPS puede incluir un conjunto de indicadores para indicar que LMCS está habilitado para una secuencia de vídeo codificada que incluye la imagen/segmento. Luego, el flujo de bits puede almacenarse en memoria para su comunicación hacia un decodificador en la etapa 811, por ejemplo a través de un transmisor. Incluyendo la referencia en la cabecera de parámetro de imagen/cabecera de segmento al APS LMCS, el flujo de bits incluye información suficiente para que el decodificador obtenga parámetros LMCS para decodificar el segmento codificado.
La FIG. 9 es un diagrama de flujo de un ejemplo del método 900 de decodificación de una secuencia de vídeo en un flujo de bits, tal como el flujo de bits 500, empleando una pluralidad de tipos de APS, tales como APS ALF 512, APS 513 de lista de escalado y/o APS LMCS 514. El método 900 puede ser empleado por un decodificador, tal como un sistema 200 de códec, un decodificador 400 y/o un dispositivo 700 de codificación de vídeo cuando se realiza el método 100. El método 900 también puede hacer referencia a APS basándose en ID de APS asignados según el mecanismo 600, donde APS de diferentes tipos emplean ID de APS asignados según diferentes espacios de valores.
El método 900 puede comenzar cuando un decodificador comienza a recibir un flujo de bits de datos codificados que representan una secuencia de vídeo, por ejemplo, como resultado del método 800. En la etapa 901, se recibe un flujo de bits en un decodificador. El flujo de bits incluye una imagen particionada en segmentos y un APS LMCS que incluye parámetros LMCS. En algunos ejemplos, el flujo de bits puede comprender, además, un APS ALF que contiene parámetros ALF y una lista de escalado APS que contiene parámetros APS. El flujo de bits también puede comprender una cabecera de imagen y/o una cabecera de segmento asociado con la imagen y uno de los segmentos, respectivamente. El flujo de bits también puede comprender otros conjuntos de parámetros, tal como un SPS, un PPS, etc.
En la etapa 903, el decodificador puede determinar que el APS LMCS, el APS ALF y/o el APS de lista de escalado están referenciados en datos relacionados con el segmento. Por ejemplo, la cabecera de segmento o la cabecera de imagen pueden contener los datos relacionados con el segmento/imagen y pueden hacer referencia a uno o más APS, incluidos el APS LMCS, el APS ALF y/o el APS de lista de escalado. Cada APS puede identificarse de forma única mediante una combinación de un tipo de parámetro y un ID de APS. Como tal, el tipo de parámetro y una ID de APS pueden incluirse en la cabecera de imagen y/o en la cabecera de segmento. Por ejemplo, cada APS puede incluir un código aps_params_type establecido en un valor<predefinido que indica un tipo de parámetros incluidos en cada a>P<s>.<Además, cada APS puede incluir un ID>de APS seleccionado de un intervalo predefinido. Por ejemplo, los ID de APS para los tipos de APS se pueden asignar en secuencia en una pluralidad de espacios de valores diferentes en intervalos predefinidos. Por ejemplo, el intervalo predefinido puede determinarse basándose en un tipo de parámetro del APS correspondiente. Como un ejemplo específico, los APS LMCS pueden tener un intervalo de cero a tres (dos bits) y los APS ALF y los APS de lista de escalado pueden tener intervalos de cero a siete (tres bits). Tales intervalos pueden describir diferentes espacios de valores superpuestos que son específicos del tipo de APS según lo describe el mecanismo 600. Como tal, el tipo de APS y el ID de APS ambos pueden ser usados por una cabecera de imagen y/o una cabecera de segmento para hacer referencia a un APS específico.
En la etapa 905, el decodificador puede decodificar el segmento usando parámetros LMCS del APS LMCS basándose en la referencia al APS LMCS. El decodificador también puede decodificar el segmento usando parámetros ALF y/o parámetros de lista de escalado del APS ALF y/o el APS de lista de escalado basándose en las referencias a dichos APS en la cabecera de imagen/cabecera de segmento. En algunos ejemplos, el SPS comprende un conjunto de parámetros de secuencia (SPS) que incluye un conjunto de indicadores para indicar que la herramienta de codificación LMCS está habilitada para una secuencia de vídeo codificada que incluye el segmento. En tal caso, los parámetros LMCS del APS LMCS se obtienen para soportar la decodificación en la etapa 905 basándose en el indicador. En la etapa 907, el decodificador puede reenviar el segmento para su visualización como parte de una secuencia de vídeo decodificada.
La FIG. 10 es un diagrama esquemático de un ejemplo del sistema 1000 para codificar una secuencia de vídeo de imágenes en un flujo de bits, tal como el flujo de bits 500, empleando una pluralidad de tipos de APS, tales como APS ALF 512, APS 513 de lista de escalado y/o APS LMCS 514. El sistema 1000 puede implementarse mediante un codificador y un decodificador, tal como un sistema 200 de códec, un codificador 300, un decodificador 400 y/o un dispositivo 700 de codificación de vídeo. Además, el sistema 1000 se puede emplear cuando se implementa el método 100, 800 y/o 900 y/o mecanismo 600.
El sistema 1000 incluye un codificador 1002 de vídeo. El codificador 1002 de vídeo comprende un módulo 1001 de determinación para determinar parámetros LMCS para su aplicación a un segmento. El codificador 1002 de vídeo comprende, además, un módulo 1003 de codificación para codificar el segmento en un flujo de bits. El módulo 1003 de codificación sirve, además, para codificar los parámetros LMCS en el flujo de bits en un APS LMCS. El módulo 1003 de codificación se usa, además, para codificar los datos de flujo de bits relacionados con el segmento que hace referencia al APS LMCS. El codificador 1002 de vídeo comprende, además, un módulo 1005 de almacenamiento para almacenar el flujo de bits para su comunicación hacia un decodificador. El codificador 1002 de vídeo comprende, además, un módulo 1007 de transmisión para transmitir el flujo de bits que incluye el APS LMCS para soportar la decodificación de los segmentos en un decodificador. El codificador 1002 de vídeo puede configurarse, además, para realizar cualquiera de las etapas del método 800.
El sistema 1000 también incluye un decodificador 1010 de vídeo. El decodificador 1010 de vídeo comprende<un módulo 1011 de recepción para recibir un flujo de bits que comprende un segmento y un APS>LMC<s que incluye parámetros>LMC<s>.<El decodificador 1010 de vídeo comprende, además, un módulo 1013 de>determinación para determinar que el APS LMCS está referenciado en datos relacionados con el segmento. El decodificador 1010 de vídeo comprende, además, un módulo 1015 de decodificación para decodificar el segmento usando parámetros LMCS del APS LMCS basándose en la referencia al APS LMCS. El decodificador 1010 de vídeo comprende, además, un módulo 1017 de reenvío para reenviar el segmento para su visualización como parte de una secuencia de vídeo decodificada. El decodificador 1010 de vídeo puede configurarse, además, para realizar cualquiera de las etapas del método 900.
Un primer componente se acopla directamente a un segundo componente cuando no hay componentes intermedios, excepto una línea, una traza u otro medio entre el primer componente y el segundo componente. El primer componente se acopla indirectamente al segundo componente cuando hay componentes intermedios, excepto una línea, una traza u otro medio entre el primer componente y el segundo componente. El término "acoplado" y sus variantes incluyen tanto los acoplados directamente como los acoplados indirectamente. El uso del término "aproximadamente" significa un intervalo que incluye ± 10 % del número posterior a menos que se indique lo contrario.

Claims (13)

REIVINDICACIONES
1. Un método (900) implementado en un decodificador, comprendiendo el método:
recibir (901) un flujo de bits que comprende un conjunto de parámetros de adaptación, APS, de mapeo de luma con escalado de croma, LMCS, que incluye parámetros LMCS asociados con un segmento codificado, en donde un APS es una estructura de sintaxis usada para señalizar información para segmentos, los parámetros LMCS se usan para un LMCS que es un proceso que escala valores de croma basándose en mapeos de luma, y el APS LMCS es referenciado por datos relacionados con el segmento codificado;
obtener (903) parámetros LMCS del APS LMCS asociado con el segmento codificado; y
decodificar (905) el segmento codificado usando parámetros LMCS del APS LMCS;
en donde el flujo de bits comprende, además, un APS de filtro de bucle adaptativo, ALF, que contiene parámetros ALF, en donde los parámetros ALF se usan para un ALF que es un filtro que está controlado por parámetros incluidos en el APS ALF;
en donde cada APS incluye un identificador, ID, de APS seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS; y
en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID de APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS; en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS.
2. El método (900) de la reivindicación 1, en donde el flujo de bits comprende, además, una cabecera relacionada con el segmento codificado, en donde los datos relacionados con el segmento codificado contienen un identificador, ID, de APS en la cabecera.
3. El método (900) de cualquiera de las reivindicaciones 1-2, en donde el flujo de bits comprende, además, un APS de lista de escalado que contiene parámetros de lista de escalado, en donde los parámetros de lista de escalado están incluidos en una lista de escalado para un proceso de transformación.
4. El método (900) de cualquiera de las reivindicaciones 1-3, en donde cada APS se identifica mediante una combinación de un tipo de parámetro y un ID de APS.
5. Un método (800) implementado en un codificador, comprendiendo el método:
determinar (801) parámetros de mapeo de luma con escalado de croma, LMCS, para un segmento; codificar (803) el segmento en un flujo de bits como un segmento codificado;
en codificar (805) los parámetros LMCS en un conjunto de parámetros de adaptación, APS, de LMCS, del flujo de bits, en donde un APS es una estructura de sintaxis usada para señalizar información para segmentos, los parámetros LMCS se usan para un LMCS que es un proceso que escala valores de croma basándose en mapeos de luma; y
codificar (805) en los datos de flujo de bits relacionados con el segmento codificado que hace referencia al APS LMCS;
en donde el flujo de bits comprende, además, un APS de filtro de bucle adaptativo, ALF, que contiene parámetros ALF, en donde los parámetros ALF se usan para un ALF que es un filtro que está controlado por parámetros incluidos en el APS ALF;
en donde cada APS incluye un identificador, ID, de APS seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS, en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID de APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS;
en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS.
6. El método (800) de la reivindicación 5, en donde los datos relacionados con el segmento codificado contienen un identificador, ID, de APS en una cabecera relacionada con el segmento codificado.
7. Un medio legible por ordenador no transitorio que comprende un producto de programa informático para su uso por un dispositivo de codificación de vídeo, el producto de programa informático que comprende instrucciones ejecutables por ordenador almacenadas en el medio legible por ordenador no transitorio de manera que cuando se ejecutan por un procesador hacen que el dispositivo de codificación de vídeo realice el método de cualquiera de las reivindicaciones 1-6.
8. Un decodificador (1010) que comprende:
una unidad (1011) de recepción configurada para recibir un flujo de bits que comprende un conjunto de parámetros de adaptación, APS, de un mapeo de luma con escalado de croma, LMCS, que incluye parámetros LMCS asociados con un segmento codificado, en donde un APS es una estructura de sintaxis usada para señalizar información para segmentos, los parámetros LMCS se usan para un LMCS que es un proceso que escala valores de croma basándose en mapeos de luma, en donde el APS LMCS es referenciado por datos relacionados con el segmento codificado;
una unidad (1013) de obtención, configurada para obtener parámetros LMCS del APS LMCS asociado con el segmento codificado;
una unidad (1015) de decodificación, configurada para decodificar el segmento codificado usando parámetros LMCS del APS LMCS;
en donde el flujo de bits comprende, además, un APS de filtro de bucle adaptativo, ALF, que contiene parámetros ALF, en donde los parámetros ALF se usan para un ALF que es un filtro que está controlado por parámetros incluidos en el APS ALF;
en donde cada APS incluye un identificador, ID, de APS seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS, en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID de APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS;
en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS.
9. El decodificador (1010) de la reivindicación 8, en donde el decodificador está configurado, además, para realizar el método de cualquiera de las reivindicaciones 2-4.
10. Un codificador (1002), que comprende:
una unidad (1001) de determinación, configurada para determinar parámetros de mapeo de luma con escalado de croma, LMCS, para un segmento;
una unidad (1003) de codificación, configurada para:
codificar el segmento en un flujo de bits como un segmento codificado;
codificar los parámetros LMCS en un conjunto de parámetros de adaptación, APS, de LMCS, del flujo de bits, en donde un APS es una estructura de sintaxis usada para señalizar información para segmentos, los parámetros LMCS se usan para un LMCS que es un proceso que escala valores de croma basándose en mapeos de luma; y
codificar en los datos del flujo de bits relacionados con el segmento que hace referencia al APS LMCS. en donde el flujo de bits comprende, además, un APS de filtro de bucle adaptativo, ALF, que contiene parámetros ALF, en donde los parámetros ALF se usan para un ALF que es un filtro que está controlado por parámetros incluidos en el APS ALF;
en donde cada APS incluye un identificador, ID, de APS seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS, en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID de APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS;
en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS.
11. El codificador (1002) de la reivindicación 10, en donde el codificador (1002) está configurado, además, para realizar el método de la reivindicación 6.
12. Un flujo de bits codificado, el flujo de bits que comprende un segmento codificado, un conjunto de parámetros de adaptación, APS, de mapeo de luma con escalado de croma, LMCS, que incluye parámetros LMCS asociados con un segmento codificado, en donde un APS es una estructura de sintaxis usada para señalizar información para los segmentos, los parámetros LMCS se usan para un LMCS que es un proceso que escala los valores de croma basándose en mapeos de luma, y datos relacionados con el segmento codificado que hacen referencia al APS LMCS;
en donde el flujo de bits comprende, además, un APS de filtro de bucle adaptativo, ALF, que contiene parámetros ALF, en donde los parámetros ALF se usan para un ALF que es un filtro que está controlado por parámetros incluidos en el APS ALF;
en donde cada APS incluye un identificador, ID, de APS seleccionado de un intervalo predefinido, y en donde el intervalo predefinido se determina basándose en un tipo de parámetro de cada APS, en donde los APS de un tipo de parámetro particular comparten el mismo intervalo predefinido para los ID de APS, y diferentes tipos de parámetros de APS usan diferentes intervalos predefinidos del ID de APS;
en donde cada APS incluye un tipo de parámetro APS, aps_params_type, establecido en un valor predefinido que indica el tipo de parámetro de cada APS, y el tipo de parámetro indica los parámetros ALF o los parámetros LMCS.
13. Un producto de programa informático que comprende código de programa para realizar el método según cualquiera de las reivindicaciones 1 a 6 cuando se ejecuta en un ordenador o un procesador.
ES20763125T 2019-02-27 2020-02-26 Luma mapping with chroma scaling adaptation parameter set in video coding Active ES3033548T3 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962811358P 2019-02-27 2019-02-27
US201962816753P 2019-03-11 2019-03-11
US201962850973P 2019-05-21 2019-05-21
PCT/US2020/019921 WO2020176636A1 (en) 2019-02-27 2020-02-26 Luma mapping with chroma scaling adaptation parameter set in video coding

Publications (1)

Publication Number Publication Date
ES3033548T3 true ES3033548T3 (en) 2025-08-05

Family

ID=72238683

Family Applications (3)

Application Number Title Priority Date Filing Date
ES20763133T Active ES3004733T3 (en) 2019-02-27 2020-02-26 Adaptation parameter set identifier value spaces in video coding
ES20762269T Active ES3004732T3 (en) 2019-02-27 2020-02-26 Adaptation parameter set types in video coding
ES20763125T Active ES3033548T3 (en) 2019-02-27 2020-02-26 Luma mapping with chroma scaling adaptation parameter set in video coding

Family Applications Before (2)

Application Number Title Priority Date Filing Date
ES20763133T Active ES3004733T3 (en) 2019-02-27 2020-02-26 Adaptation parameter set identifier value spaces in video coding
ES20762269T Active ES3004732T3 (en) 2019-02-27 2020-02-26 Adaptation parameter set types in video coding

Country Status (15)

Country Link
US (8) US12348739B2 (es)
EP (6) EP3931745B1 (es)
JP (7) JP7418458B2 (es)
KR (6) KR20240058982A (es)
CN (9) CN120499373A (es)
AU (1) AU2020227754B2 (es)
BR (3) BR112021016925A2 (es)
DK (2) DK3931745T3 (es)
ES (3) ES3004733T3 (es)
HU (2) HUE069870T2 (es)
MX (1) MX2021010337A (es)
PL (3) PL3931745T3 (es)
PT (2) PT3931746T (es)
SG (3) SG11202109325VA (es)
WO (3) WO2020176633A1 (es)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL3931745T3 (pl) 2019-02-27 2025-03-31 Huawei Technologies Co. Ltd. Typy zestawów parametrów adaptacyjnych w kodowaniu wideo
WO2020177702A1 (en) * 2019-03-04 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Two-level signaling of filtering information in video processing
WO2020180122A1 (ko) * 2019-03-06 2020-09-10 엘지전자 주식회사 조건적으로 파싱되는 alf 모델 및 리셰이핑 모델 기반 비디오 또는 영상 코딩
KR20250130849A (ko) * 2019-03-07 2025-09-02 엘지전자 주식회사 루마 맵핑 및 크로마 스케일링 기반 비디오 또는 영상 코딩
WO2020197207A1 (ko) * 2019-03-23 2020-10-01 엘지전자 주식회사 맵핑을 포함하는 필터링 기반 비디오 또는 영상 코딩
WO2020192612A1 (en) * 2019-03-23 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Default in-loop reshaping parameters
CN118631993B (zh) * 2019-04-03 2026-02-03 诺基亚技术有限公司 视频或图像编码方法及其装置
WO2020204413A1 (ko) * 2019-04-03 2020-10-08 엘지전자 주식회사 복원 픽처를 수정하는 비디오 또는 영상 코딩
CN113785571B (zh) * 2019-04-03 2025-01-03 Lg电子株式会社 基于自适应环路滤波器的视频或图像编译
US11368684B2 (en) * 2019-04-23 2022-06-21 Qualcomm Incorporated Adaptation parameter sets (APS) for adaptive loop filter (ALF) parameters
WO2020244568A1 (en) 2019-06-04 2020-12-10 Beijing Bytedance Network Technology Co., Ltd. Motion candidate list with geometric partition mode coding
EP3963890A4 (en) 2019-06-04 2026-01-14 Beijing Bytedance Network Technology Co., Ltd. BUILDING A LIST OF MOVEMENT CANDIDATES USING NEIGHBOR BLOCK INFORMATION
US11166033B2 (en) * 2019-06-06 2021-11-02 Qualcomm Incorporated Adaptation parameter set in access unit in video coding
CN118138754A (zh) 2019-06-14 2024-06-04 北京字节跳动网络技术有限公司 处理视频单元边界和虚拟边界
KR20200144075A (ko) * 2019-06-17 2020-12-28 한국전자통신연구원 적응적 루프내 필터링 방법 및 장치
CN118018727A (zh) * 2019-06-20 2024-05-10 Lg电子株式会社 图像解码和编码方法、数据的发送方法及存储介质
CN120583227A (zh) 2019-06-24 2025-09-02 Lg电子株式会社 图像编码/解码方法和数据发送方法
CN116567271B (zh) 2019-06-24 2025-10-28 Lg电子株式会社 图像编解码设备和数据发送设备
CN114270851A (zh) 2019-06-24 2022-04-01 Lg电子株式会社 基于亮度映射的视频或图像编码
JP7303367B2 (ja) * 2019-07-08 2023-07-04 エルジー エレクトロニクス インコーポレイティド スケーリングリストデータのシグナリングに基づくビデオまたは画像コーディング
WO2021004491A1 (en) 2019-07-09 2021-01-14 Beijing Bytedance Network Technology Co., Ltd. Sample determination for adaptive loop filtering
JP7291845B2 (ja) 2019-07-11 2023-06-15 北京字節跳動網絡技術有限公司 適応ループフィルタリングにおけるサンプルパディング
JP7318099B2 (ja) 2019-07-14 2023-07-31 北京字節跳動網絡技術有限公司 ビデオコーディングにおける変換ブロック・サイズ制約
CN114175637B (zh) 2019-07-15 2024-04-12 北京字节跳动网络技术有限公司 自适应环路滤波中的分类
WO2021032158A1 (en) 2019-08-20 2021-02-25 Beijing Bytedance Network Technology Co., Ltd. Position-based coefficients scaling
KR102799921B1 (ko) 2019-09-14 2025-04-25 바이트댄스 아이엔씨 크로마 디블로킹 필터링을 위한 양자화 파라미터
CN114424529B (zh) 2019-09-18 2025-09-19 北京字节跳动网络技术有限公司 视频编解码中自适应环路滤波器的两部分信令
JP7479456B2 (ja) 2019-09-20 2024-05-08 北京字節跳動網絡技術有限公司 ビデオ・データ処理方法及び装置並びに記憶媒体及び方法
WO2021052508A1 (en) 2019-09-22 2021-03-25 Beijing Bytedance Network Technology Co., Ltd. Padding process in adaptive loop filtering
US12225210B2 (en) * 2019-09-23 2025-02-11 Telefonaktiebolaget Lm Ericsson (Publ) Segment position signalling with subpicture slice position deriving
CN114424559A (zh) 2019-09-24 2022-04-29 华为技术有限公司 后缀sei消息的可伸缩嵌套
EP4022910A4 (en) 2019-09-27 2022-11-16 Beijing Bytedance Network Technology Co., Ltd. ADAPTIVE LOOP FILTERING BETWEEN DIFFERENT VIDEO UNITS
CN114450959B (zh) 2019-09-28 2024-08-02 北京字节跳动网络技术有限公司 视频编解码中的几何分割模式
CN114651442B (zh) 2019-10-09 2025-06-13 字节跳动有限公司 视频编解码中的跨分量适应性回路滤波
KR102762212B1 (ko) 2019-10-10 2025-02-07 두인 비전 컴퍼니 리미티드 적응적 루프 필터링에서 이용 불가능한 샘플 위치들에서의 패딩 프로세스
CN114556924B (zh) 2019-10-14 2024-01-26 字节跳动有限公司 视频处理中色度残差的联合编解码与滤波的方法、装置及介质
EP4042684A4 (en) 2019-10-29 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SIGNALING OF A CROSS-COMPONENT ADAPTIVE LOOP FILTER
WO2021104409A1 (en) 2019-11-30 2021-06-03 Beijing Bytedance Network Technology Co., Ltd. Cross-component adaptive filtering and subblock coding
JP7508558B2 (ja) 2019-12-09 2024-07-01 バイトダンス インコーポレイテッド ビデオコーディングにおける量子化グループの使用
WO2021115362A1 (en) 2019-12-11 2021-06-17 Beijing Bytedance Network Technology Co., Ltd. Sample padding for cross-component adaptive loop filtering
CN120639971A (zh) * 2019-12-23 2025-09-12 Lg电子株式会社 编码设备、解码设备和数据发送设备
CN114902657B (zh) 2019-12-31 2025-06-13 字节跳动有限公司 视频编解码中的自适应颜色变换
WO2021136555A1 (en) 2020-01-05 2021-07-08 Beijing Bytedance Network Technology Co., Ltd. Use of offsets with adaptive colour transform coding tool
JP7473656B2 (ja) * 2020-01-09 2024-04-23 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ピクチャヘッダ存在
CN115176470B (zh) 2020-01-18 2025-05-27 抖音视界有限公司 图像/视频编解码中的自适应颜色变换
US11463737B2 (en) * 2020-02-21 2022-10-04 Qualcomm Incorporated Signaling of dynamic range adjustment parameters for decoded picture buffer management and dynamic range
WO2021180020A1 (en) 2020-03-07 2021-09-16 Beijing Bytedance Network Technology Co., Ltd. Implicit multiple transform set signaling in video coding
KR20230024340A (ko) * 2020-06-10 2023-02-20 엘지전자 주식회사 Aps에 대한 식별자를 시그널링하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 컴퓨터 판독 가능한 기록 매체
KR102846913B1 (ko) 2020-06-30 2025-08-14 두인 비전 컴퍼니 리미티드 적응적 루프 필터링을 위한 경계 위치
US11750815B2 (en) 2020-09-17 2023-09-05 Lemon, Inc. Versatile video coding track coding
US20230379460A1 (en) * 2020-09-29 2023-11-23 Telefonaktiebolaget Lm Ericsson (Publ) Filter strength control for adaptive loop filtering
US11611752B2 (en) * 2020-10-07 2023-03-21 Lemon Inc. Adaptation parameter set storage in video coding
WO2022111507A1 (en) 2020-11-24 2022-06-02 Beijing Bytedance Network Technology Co., Ltd. Position dependent coefficient reordering in coded video
CN116803087A (zh) * 2021-02-02 2023-09-22 索尼集团公司 信息处理装置和信息处理方法
WO2022194197A1 (en) 2021-03-17 2022-09-22 Beijing Bytedance Network Technology Co., Ltd. Separate Tree Coding Restrictions
USD950521S1 (en) * 2021-05-11 2022-05-03 Shenzhen Jing Peng Xing Electronic Technology Co., Ltd. Headphone

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PT2882190T (pt) * 2011-04-21 2019-02-25 Hfi Innovation Inc Método e aparelho para filtragem em laço melhorada
US8891630B2 (en) * 2011-10-24 2014-11-18 Blackberry Limited Significance map encoding and decoding using partition set based context assignment
CN103096054B (zh) * 2011-11-04 2015-07-08 华为技术有限公司 一种视频图像滤波处理方法和装置
US20130114694A1 (en) 2011-11-08 2013-05-09 Qualcomm Incorporated Parameter set groups for coded video data
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
WO2013109505A2 (en) * 2012-01-19 2013-07-25 Vid Scale, Inc. Methods, apparatus and systems for signaling video coding adaptation parameters
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
WO2013174254A1 (en) * 2012-05-21 2013-11-28 Mediatek Singapore Pte. Ltd. Method and apparatus of inter-layer filtering for scalable video coding
RU2725656C2 (ru) * 2014-03-17 2020-07-03 Нокиа Текнолоджиз Ой Устройство, способ и компьютерная программа для кодирования и декодирования видеоинформации
CN116095315B (zh) 2017-06-29 2026-03-17 杜比实验室特许公司 整合的图像整形和视频编码
MY208391A (en) * 2019-02-01 2025-05-06 Beijing Bytedance Network Tech Co Ltd Interactions between in-loop reshaping and inter coding tools
CN113424528B (zh) * 2019-02-01 2025-09-19 北京字节跳动网络技术有限公司 环路整形和块差分脉冲编解码调制之间的相互作用
PL3931745T3 (pl) 2019-02-27 2025-03-31 Huawei Technologies Co. Ltd. Typy zestawów parametrów adaptacyjnych w kodowaniu wideo
WO2020197207A1 (ko) * 2019-03-23 2020-10-01 엘지전자 주식회사 맵핑을 포함하는 필터링 기반 비디오 또는 영상 코딩
US11683487B2 (en) * 2019-03-26 2023-06-20 Qualcomm Incorporated Block-based adaptive loop filter (ALF) with adaptive parameter set (APS) in video coding
CN118631993B (zh) * 2019-04-03 2026-02-03 诺基亚技术有限公司 视频或图像编码方法及其装置
CN116567271B (zh) * 2019-06-24 2025-10-28 Lg电子株式会社 图像编解码设备和数据发送设备
CN114365496A (zh) * 2019-07-08 2022-04-15 Lg电子株式会社 基于缩放列表数据的图像或视频编码

Also Published As

Publication number Publication date
EP3931747A4 (en) 2022-05-11
KR20210129183A (ko) 2021-10-27
SG11202109325VA (en) 2021-09-29
KR20250052487A (ko) 2025-04-18
KR102794434B1 (ko) 2025-04-09
JP2022523218A (ja) 2022-04-21
CN113498522A (zh) 2021-10-12
EP3931746B1 (en) 2025-04-09
EP3931747B1 (en) 2024-11-27
CN120499372A (zh) 2025-08-15
EP4498674A3 (en) 2025-04-09
US11889030B2 (en) 2024-01-30
EP3931745B1 (en) 2024-11-27
DK3931745T3 (da) 2025-01-27
JP7725799B2 (ja) 2025-08-20
JP2024014892A (ja) 2024-02-01
EP3931745A4 (en) 2022-04-27
CN120321407A (zh) 2025-07-15
US20210392323A1 (en) 2021-12-16
ES3004732T3 (en) 2025-03-13
US20260046426A1 (en) 2026-02-12
US20240195961A1 (en) 2024-06-13
WO2020176633A1 (en) 2020-09-03
JP7418458B2 (ja) 2024-01-19
CN120321408A (zh) 2025-07-15
JP2025089316A (ja) 2025-06-12
US20240195958A1 (en) 2024-06-13
KR20210126772A (ko) 2021-10-20
US20210392324A1 (en) 2021-12-16
WO2020176636A1 (en) 2020-09-03
JP2022523219A (ja) 2022-04-21
PL3931747T3 (pl) 2025-03-03
US20210392381A1 (en) 2021-12-16
CN120321409A (zh) 2025-07-15
EP3931746A1 (en) 2022-01-05
KR20210129184A (ko) 2021-10-27
JP7725800B2 (ja) 2025-08-20
EP4525441A3 (en) 2025-06-04
SG11202109287PA (en) 2021-09-29
EP3931745A1 (en) 2022-01-05
ES3004733T3 (en) 2025-03-13
HUE071122T2 (hu) 2025-08-28
US12348739B2 (en) 2025-07-01
BR112021016953A2 (pt) 2021-11-23
CN113508397A (zh) 2021-10-15
JP2024014893A (ja) 2024-02-01
PL3931746T3 (pl) 2025-06-30
JP2022521793A (ja) 2022-04-12
WO2020176635A1 (en) 2020-09-03
EP4503604A2 (en) 2025-02-05
US20250234014A1 (en) 2025-07-17
PT3931745T (pt) 2025-01-08
JP7418459B2 (ja) 2024-01-19
KR102661416B1 (ko) 2024-04-25
DK3931746T3 (da) 2025-06-16
AU2020227754A1 (en) 2021-09-30
EP4503604A3 (en) 2025-04-09
US11895294B2 (en) 2024-02-06
EP3931747A1 (en) 2022-01-05
EP3931746A4 (en) 2022-05-11
EP4525441A2 (en) 2025-03-19
MX2021010337A (es) 2021-09-28
KR102794435B1 (ko) 2025-04-09
CN120321410A (zh) 2025-07-15
PL3931745T3 (pl) 2025-03-31
BR112021016895A2 (pt) 2021-11-03
HUE069870T2 (hu) 2025-04-28
BR112021016925A2 (pt) 2021-11-03
AU2020227754B2 (en) 2025-01-30
US12464143B2 (en) 2025-11-04
US20250301157A1 (en) 2025-09-25
JP7651653B2 (ja) 2025-03-26
PT3931746T (pt) 2025-06-23
CN120499373A (zh) 2025-08-15
JP7422159B2 (ja) 2024-01-25
SG11202109285VA (en) 2021-09-29
KR20240058982A (ko) 2024-05-03
EP4498674A2 (en) 2025-01-29
JP2024020293A (ja) 2024-02-14
US12250376B2 (en) 2025-03-11
CN113508396A (zh) 2021-10-15
KR20250052488A (ko) 2025-04-18

Similar Documents

Publication Publication Date Title
ES3033548T3 (en) Luma mapping with chroma scaling adaptation parameter set in video coding
ES3024137T3 (en) Tile based addressing in video coding
ES3047086T3 (en) Header parameter set for video coding
ES3024386T3 (en) Disallowing unused layers in multi-layer video bitstreams
AU2020352913B2 (en) Signaling of DPB parameters for multi-layer video bitstreams
US12069284B2 (en) Signaling of non-picture-level syntax elements at the picture level
ES3021282T3 (en) Tile group assignment for raster scan and rectangular tile groups in video coding
ES2992052T3 (es) Señalización de grupos de mosaicos en codificación de video
ES2967911T3 (es) Codificación de vídeo entrelazado con imágenes principales
ES3010349T3 (en) Indication of one slice per subpicture in subpicture-based video coding
US11425377B2 (en) Arbitrary and wrap-around tile grouping