ES2877048T3 - Diseño de valor de Poc para codificación de vídeo multicapa - Google Patents

Diseño de valor de Poc para codificación de vídeo multicapa Download PDF

Info

Publication number
ES2877048T3
ES2877048T3 ES15712776T ES15712776T ES2877048T3 ES 2877048 T3 ES2877048 T3 ES 2877048T3 ES 15712776 T ES15712776 T ES 15712776T ES 15712776 T ES15712776 T ES 15712776T ES 2877048 T3 ES2877048 T3 ES 2877048T3
Authority
ES
Spain
Prior art keywords
poc
image
value
video
lsb
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
ES15712776T
Other languages
English (en)
Inventor
Fnu Hendry
Adarsh Krishnan Ramasubramonian
Ye-Kui Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2877048T3 publication Critical patent/ES2877048T3/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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/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/172Methods 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 picture, frame or field
    • 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/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • H04N19/68Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving the insertion of resynchronisation markers into the bitstream

Landscapes

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

Abstract

Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento: codificar al menos una parte de una imagen de una capa no base descodificable independientemente de un flujo de bits multicapa; codificar, en una cabecera de sector de la imagen, un valor de bit menos significativo, LSB, de número de orden de imagen, POC, que indica el valor de los bits menos significativos del POC de la imagen; codificar, en una cabecera de sector, un elemento de sintaxis que indica un índice de restablecimiento de valor de POC, que indica un restablecimiento de valor de número de orden de imagen, POC, para el valor de bits menos significativos, LSB, de POC, de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen igual a cero; y codificar, cuando la imagen tiene un valor de LSB de POC que no es igual a cero, el elemento de sintaxis de índice de restablecimiento de valor de POC en un valor distinto de 2, en el que el valor 2 especifica que tanto los bits más significativos, MSB, como los LSB del valor de POC para la imagen actual se pueden restablecer.

Description

DESCRIPCIÓN
Diseño de valor de Poc para codificación de vídeo multicapa
La presente solicitud reivindica el beneficio de la solicitud provisional de EE. UU, n.° 61/954.551, presentada el 17 de marzo de 2014, y la solicitud provisional de EE. UU., n.° 61/973.104, presentada el 31 de marzo de 2014.
CAMPO TÉCNICO
La presente divulgación se refiere a la codificación de vídeo.
ANTECEDENTES
Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, que incluye televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos de radio celulares o por satélite, los denominados "teléfonos inteligentes", dispositivos de teleconferencia por vídeo, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de codificación de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de vídeo avanzada (AVC) e ITU-T H.265, Codificación de vídeo de alta eficacia (HEVC) y ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de codificación de vídeo.
Las técnicas de codificación de vídeo incluyen predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o eliminar la redundancia inherente a las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un sector de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo, que también se pueden denominar bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo de un sector intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a unas muestras de referencia de bloques vecinos en la misma imagen. Los bloques de vídeo de un sector intercodificado (P o B) de una imagen pueden usar la predicción espacial con respecto a unas muestras de referencia de bloques vecinos en la misma imagen o predicción temporal con respecto a unas muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia. Una imagen se puede referir a una imagen descodificada o una imagen codificada.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y con los datos residuales. Para una compresión adicional, los datos residuales se pueden transformar desde el dominio del píxel a un dominio de la transformada, dando como resultado unos coeficientes de transformada residuales, que a continuación se pueden cuantificar. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, se pueden explorar para generar un vector unidimensional de coeficientes de transformada, y se puede aplicar codificación entrópica para conseguir todavía más compresión.
El siguiente documento se considera estado de la técnica pertinente:
CHEN J ET AL.: "High efficiency video coding (HEVC) scalable extension Draft 5", 16.a REUNIÓN JCT-VC; 9-1-2014 - 17-1-2014; SAN JOSE; (EQUIPO CONJUNTO COLABORATIVO SOBRE CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL: HTTP://WFTP3. ITU.INT/AV-ARCH/JCTVC-SITE/, n.° JCTVC-P1008-v4, 22 de enero de 2014 (22-1-2014).
SUMARIO
La presente divulgación describe técnicas para facilitar la extracción de una capa de datos de vídeo de un flujo de bits multicapa. Por ejemplo, las técnicas de la presente divulgación se pueden usar para controlar el restablecimiento de un valor de número de orden de imagen (POC) para imágenes de una capa no base independiente de un flujo de bits multicapa. En algunos ejemplos, restringir el codificador de vídeo usando las técnicas de la presente divulgación puede permitir extraer una capa de datos de vídeo de un flujo de bits multicapa sin cambiar datos en las cabeceras de sector de la capa. Además, controlar las ubicaciones en las que se produce el restablecimiento del valor de POC puede ayudar a asegurar que el codificador de vídeo pueda identificar apropiadamente imágenes de referencia a largo plazo en un búfer de imágenes descodificadas (DPB).
En un ejemplo, un procedimiento de codificación de datos de vídeo incluye codificar, mediante un codificador de vídeo, al menos una parte de una imagen de una capa no base descodificable independientemente de un flujo de bits multicapa, y codificar datos que indican un valor de POC restablecido para un valor de bits menos significativos (LSB) de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
En otro ejemplo, un dispositivo para codificar datos de vídeo incluye una memoria configurada para almacenar una capa descodificable independientemente de datos de vídeo de un flujo de bits multicapa. El dispositivo también incluye un codificador de vídeo configurado para codificar al menos una parte de una imagen de capa no base descodificable independientemente del flujo de bits multicapa, y codificar datos de que indican un valor de número de orden de imagen (POC) restablecido para un valor de bits menos significativos (LSB) de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
En otro ejemplo, un dispositivo para codificar datos de vídeo incluye medios para codificar al menos una parte de una imagen de una capa no base descodificable independientemente de un flujo de bits multicapa, y medios para codificar datos que indican un valor de número de orden de imagen (POC) restablecido para un valor de bits menos significativos (LSB) de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
En otro ejemplo, un medio de almacenamiento no transitorio legible por ordenador tiene almacenadas instrucciones que, cuando se ejecutan, hacen que un procesador de un dispositivo para codificar datos de vídeo codifique al menos una parte de una imagen de una capa no base descodificable independientemente de un flujo de bits multicapa, y codifique datos que indican un valor de número de orden de imagen (POC) restablecido para un valor de bits menos significativos (LSB) de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la descripción siguiente. Otras características, objetivos y ventajas resultarán evidentes a partir de la descripción y los dibujos y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y descodificación de vídeo que puede utilizar técnicas para codificar información de valor de POC de acuerdo con las técnicas de la presente divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar técnicas para codificar información de valor de POC de acuerdo con las técnicas de la presente divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo que puede implementar técnicas para codificar información de valor de POC de acuerdo con las técnicas de la presente divulgación.
La FIG. 4 es un diagrama conceptual que ilustra un restablecimiento de un valor de POC para una capa no base independiente de un flujo de bits multicapa.
La FIG. 5 es otro diagrama conceptual que ilustra el restablecimiento de un valor de POC para una capa no base independiente de un flujo de bits multicapa.
La FIG. 6 es un diagrama de flujo que ilustra un ejemplo de procedimiento para codificar datos de vídeo de un flujo de bits multicapa de acuerdo con las técnicas de la presente divulgación.
La FIG. 7 es un diagrama de flujo que ilustra un ejemplo de procedimiento para descodificar datos de vídeo de un flujo de bits multicapa de acuerdo con las técnicas de la presente divulgación.
DESCRIPCIÓN DETALLADA
Los aspectos de la presente divulgación se pueden referir a diversas técnicas de codificación de una capa no base independiente para flujos de bits multicapa. En algunos casos, las técnicas se pueden realizar con ampliaciones multicapa a una norma de codificación de vídeo de alta eficacia (HEVC), tal como una ampliación de codificación de vídeo multivista a HEVC (MV-HEVC) o una ampliación de codificación de vídeo escalable (SVC) a HEVC (SHVC), como se indica a continuación. Las técnicas de la presente divulgación, sin embargo, no están limitadas a ninguna norma de codificación de vídeo particular, y de forma adicional o alternativa se pueden usar con otras ampliaciones a HEVC, otras normas de codificación multivista y/u otras normas de vídeo multicapa. Además, las técnicas de la presente divulgación, como se describen a continuación, se pueden aplicar independientemente o en combinación.
Una "capa" de datos de vídeo se puede referir en general a una secuencia de imágenes que tienen al menos una característica común, tal como una vista, una frecuencia de trama, un formato o resolución espacial, una relación señal-ruido o similares. Por ejemplo, una capa puede incluir datos de vídeo asociados con una vista particular (por ejemplo, perspectiva) de datos de vídeo multivista. Como otro ejemplo, una capa puede incluir datos de vídeo asociados con una capa particular de datos de vídeo escalable. Por tanto, la presente divulgación se puede referir de manera intercambiable a una capa y una vista de datos de vídeo. Es decir, una vista de datos de vídeo se puede denominar capa de datos de vídeo, y viceversa. Además, un códec multicapa (también denominado codificador de vídeo multicapa o codificador-descodificador multicapa) se puede referir a un códec multivista o un códec escalable (por ejemplo, un códec configurado para codificar y/o descodificar datos de vídeo usando MV-HEVC, SHVC u otra técnica de codificación multicapa).
Un flujo de bits multicapa puede incluir una capa base y una o más capas no base. La capa base puede tener típicamente un identificador de capa que es igual a cero. Una capa no base puede tener un identificador de capa que es mayor que cero y puede proporcionar datos de vídeo adicionales que no están incluidos en la capa base. Por ejemplo, una capa no base de datos de vídeo multivista puede incluir una vista adicional de datos de vídeo. Una capa no base de datos de vídeo escalable puede incluir una capa adicional de datos de vídeo escalable que tienen una resolución incrementada o disminuida en relación con la capa base. Una capa no base se puede denominar de manera intercambiable capa de mejora.
Se puede decir que una capa es "independiente" cuando la capa no tiene una capa de referencia directa. Es decir, una capa independiente se puede codificar (codificar o descodificar) sin referirse a los datos de vídeo de otra capa. Una capa no base independiente puede cumplir con un perfil de codificación particular de una norma particular, que no tiene por qué ser el mismo que otras capas de un flujo de bits multicapa al que pertenece la capa independiente. En un ejemplo no limitado con propósitos ilustrativos, un flujo de bits multicapa puede cumplir con las normas de MV-HEVC o SHVC. Una capa no base independiente del flujo de bits multicapa se puede codificar independientemente (por ejemplo, sin usar técnicas de predicción entre capas) y puede cumplir con la norma de HEVC. En consecuencia, como se describe con más detalle a continuación, la capa no base independiente se puede extraer y descodificar usando la norma de HEVC y sin descodificar las otras capas del flujo de bits multicapa. En algunos casos, un elemento de red sensible a los medios (MANE), una unidad de empalme u otro dispositivo puede extraer capas independientes de un flujo de bits multicapa. En dichos casos, el MANE puede transmitir solo la capa independiente extraída a un descodificador de vídeo para su descodificación. En otros casos, otro dispositivo informático se puede encargar de la extracción de un subflujo de bits.
Las técnicas de la presente divulgación son aplicables al establecimiento de valores de número de orden de imagen (POC) para la codificación de vídeo y se pueden usar para facilitar la extracción de una capa no base independiente de un flujo de bits multicapa. Por ejemplo, un codificador de vídeo puede codificar un flujo de bits multicapa de acuerdo con una norma de codificación de vídeo multicapa particular, por ejemplo, de SHVC o de MV-HEVC. Un descodificador de vídeo, un elemento de red sensible a los medios (MANE), una unidad de empalme u otro dispositivo pueden extraer capas no base independientes de dicho flujo de bits multicapa. Como se describe con más detalle a continuación, las técnicas de la presente divulgación pueden, en algunos ejemplos, permitir que se extraiga una capa de un flujo de bits multicapa tal como un flujo de bits que cumple con la norma de SHVC o de MV-HEVC, y que esta se descodifique apropiadamente mediante un descodificador de vídeo configurado para descodificar usando la norma de HEVC sin alterar las cabeceras de sector u otra sintaxis de la capa no base independiente.
Los valores de POC pueden indicar un orden de visualización de imágenes y en general se pueden usar para identificar la imagen. Por ejemplo, una imagen que tiene un valor de POC de 0 se visualiza antes de una imagen que tiene un valor de POC de 1. Cuando un bloque de una imagen actual se interpredice en relación con una imagen de referencia, la imagen de referencia se puede identificar usando un valor de POC para la imagen de referencia. Más en particular, los valores de POC para las imágenes de referencia que se van a incluir en una lista de imágenes de referencia se pueden indicar en un conjunto de parámetros, tal como un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de imagen (PPS) y/o una cabecera de sector correspondiente al bloque. De esta manera, un codificador de vídeo puede identificar una imagen de referencia señalizando un índice en la lista de imágenes de referencia correspondiente a la posición de la imagen de referencia en la lista de imágenes de referencia, y un descodificador de vídeo puede identificar la imagen de referencia creando la lista de imágenes de referencia. (en base a los valores de POC) y usando el índice de referencia para identificar la posición de una imagen de referencia en la lista de imágenes de referencia.
Los valores de POC pueden estar compuestos por bits menos significativos (LSB) y bits más significativos (MSB). En general, el valor de LSB de POC se puede indicar en el flujo de bits. Por ejemplo, el valor de LSB de POC puede estar incluido en una cabecera de sector de unos sectores de una imagen. Un codificador de vídeo (codificador de vídeo o descodificador de vídeo) puede determinar un valor de MSB de POC para una imagen en base a un valor de POC de una imagen codificada previamente del flujo de bits.
Los valores de POC se pueden usar en la codificación de vídeo multicapa para asegurar que los datos de vídeo de múltiples capas se faciliten apropiadamente. Por ejemplo, en la codificación de vídeo multicapa (por ejemplo, codificación de vídeo multivista, codificación de vídeo escalable o similares), un componente de vista puede comprender una imagen codificada para una capa o vista particular en un momento particular (en términos de orden de visualización u orden de salida). Una unidad de acceso es, en general, una unidad de datos que incluye todos los componentes de vista (por ejemplo, todas las unidades de capa de abstracción de red (NAL)) para una instancia temporal común. Los componentes de vista de una unidad de acceso están destinados típicamente a facilitarse juntos (es decir, facilitarse de forma sustancialmente simultánea), donde facilitar una imagen en general implica transferir imágenes desde el DPB (por ejemplo, almacenar imágenes desde el DPB a una memoria externa, enviar las imágenes desde el DPB a una pantalla, eliminar imágenes del DPB o similares).
Un codificador de vídeo puede restablecer periódicamente un valor de POC. Por ejemplo, el codificador de vídeo puede restablecer típicamente un valor de pOc para una imagen de actualización instantánea de descodificador (IDR) (por ejemplo, una imagen que contiene solo sectores intrapredichos). Además de restablecer el valor de POC, el codificador de vídeo puede disminuir un valor de POC de las imágenes que se han procesado y almacenado en un DPB antes de la imagen actual asociada con el restablecimiento de POC. Los valores de POC de las imágenes de referencia que se han disminuido pueden tener un valor negativo para mantener el orden de salida apropiado de dichas imágenes.
En algunos casos, un codificador de vídeo puede restablecer el valor de POC de una imagen en una unidad de acceso de un flujo de bits multicapa para mantener la alineación entre capas con otras imágenes de la unidad de acceso. En un flujo de bits de una sola capa (por ejemplo, de HEVC), cada unidad de acceso incluye un conjunto de unidades de NAL que están asociadas entre sí de acuerdo con una regla de clasificación especificada y que son consecutivas en el orden de descodificación, y cada unidad de acceso contiene exactamente una imagen (también denominada como imagen codificada). En un flujo de bits multicapa (por ejemplo, un flujo de bits de SHVC o de MV-HEVC con más de una capa), las unidades de acceso (también conocidas como unidades de acceso multicapa) pueden incluir una o más imágenes codificadas. Si hay una o más imágenes codificadas incluidas en una unidad de acceso multicapa, cada imagen codificada se dispone dentro de un subflujo de bits. A modo de ejemplo, una unidad de acceso multicapa puede tener una imagen codificada en una capa base y una imagen codificada en una capa de mejora. Por consiguiente, una unidad de acceso multicapa comprende todas las imágenes codificadas de todas las capas con el mismo tiempo de salida, incluyendo todas las unidades de NAL de capa de codificación de vídeo (VCL) y no VCL asociadas. Las imágenes codificadas de una unidad de acceso pueden estar asociadas con el mismo valor de POC para la identificación y para asegurar que las imágenes de la unidad de acceso se faciliten al mismo, o sustancialmente al mismo, tiempo.
Con respecto al restablecimiento del valor de POC para mantener la alineación entre capas, en un ejemplo con propósitos ilustrativos, una unidad de acceso puede incluir una imagen de IDR de capa base que hace que se realice el restablecimiento del valor de POC, y una imagen de capa no base que no es una imagen de IDR. Para asegurar que el valor de POC de la imagen de capa no base de la unidad de acceso coincida con el de la imagen de la capa base, el codificador de vídeo puede restablecer el valor de POC de la imagen de capa no base.
Como se indica anteriormente, una capa no base independiente puede cumplir con un perfil de codificación particular asociado con una norma particular para permitir que la capa no base se extraiga de un flujo de bits multicapa. Sin embargo, disponer que la capa no base de un flujo de bits multicapa se codifique independientemente puede presentar varias dificultades. Por ejemplo, como se describe con más detalle con respecto a la FIG. 4 a continuación, restablecer un valor de LSB de POC de una imagen de una capa no base independiente puede causar un problema con la identificación apropiada de imágenes de referencia a largo plazo (LTRP) de un conjunto de imágenes de referencia (RPS). Como otro ejemplo, restablecer un valor de LSB de POC de una imagen de la capa no base independiente puede hacer que una unidad de acceso contenga imágenes que no están alineadas entre capas.
Las técnicas de la presente divulgación pueden, en algunos casos, hacer frente a las dificultades indicadas anteriormente. Por ejemplo, las técnicas de la presente divulgación se pueden usar para permitir que una capa no base de un flujo de bits multicapa se extraiga y descodifique con cambios mínimos en la capa no base (por ejemplo, sin alterar las cabeceras de sectores u otra sintaxis de la capa no base). Las técnicas de la presente divulgación se pueden usar para determinar una ubicación de imágenes de punto de acceso aleatorio intra (IRAP) en una capa no base independiente. De esta manera, las técnicas de la presente divulgación se pueden usar para controlar el restablecimiento del valor de POC para imágenes de una capa no base independiente.
De acuerdo con unos aspectos de la presente divulgación, un codificador de vídeo (un codificador de vídeo o un descodificador de vídeo) puede codificar una imagen de una capa descodificable independientemente de un flujo de bits multicapa. El codificador de vídeo también puede codificar datos que indican un restablecimiento del valor de POC para un valor de LSB de POC de la imagen solo cuando el valor de LSB de POC para la imagen es igual a cero. En algunos ejemplos, el codificador de vídeo solo puede codificar datos que indican un restablecimiento del valor de POC para una capa de mejora cuando la imagen de la capa no base independiente que se está codificando es una imagen de IDR o cuando la imagen que se está codificando tiene un valor de LSB de POC igual a cero antes de realizar el restablecimiento del valor de POC. Como se describe con más detalle a continuación, controlar las ubicaciones en las que se produce un restablecimiento del valor de POC puede ayudar a asegurar que el codificador de vídeo pueda identificar apropiadamente imágenes de referencia a largo plazo en un DPB y a mantener el cumplimiento del flujo de bits con una norma de codificación de vídeo particular, por ejemplo, tal como una norma identificada en el presente documento.
En un ejemplo no limitante con propósitos ilustrativos, las técnicas de la presente divulgación pueden permitir que se extraiga una capa no base independiente de un flujo de bits multicapa escalable. Por ejemplo, un flujo de bits de SHVC puede incluir una capa base que tiene una resolución de 540 p y una capa de mejora de 1080 p. Por convención, en la capa base, se puede incluir una imagen de IDR a razón de hasta una vez por cada 32 imágenes. En la capa de mejora, se puede incluir una IDR en un intervalo diferente, por ejemplo, cada 96 imágenes.
Las técnicas de la presente divulgación se pueden usar para restringir la manera en que se forma dicho flujo de bits escalable, de modo que la capa de mejora mantenga el cumplimiento con la norma de HEVC básica. Por ejemplo, como se describe en el presente documento, las técnicas de la presente divulgación se pueden usar para controlar la manera en que se realiza el restablecimiento del valor de POC para el flujo de bits de SHVC, de modo que la capa de mejora se pueda extraer del flujo de bits de SHVC y descodificar mediante un descodificador que cumple con la norma de HEVC básica. En consecuencia, un dispositivo informático móvil que tiene la capacidad de descodificar un flujo de bits de HEVC (pero no un flujo de bits de HEVC) puede recibir y descodificar la capa de mejora sin alterar las cabeceras de sector (que contienen información de valor de POC, como se describe en el presente documento) de la capa de mejora.
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y descodificación de vídeo 10 que puede utilizar técnicas para gestionar valores de p Oc de acuerdo con las técnicas de la presente divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificado que un dispositivo de destino 14 va a descodificar en un momento posterior. En particular, el dispositivo de origen 12 proporciona los datos de vídeo al dispositivo de destino 14 por medio de un medio legible por ordenador 16.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualesquiera de entre una amplia gama de dispositivos, incluyendo ordenadores de escritorio, cuadernos digitales (es decir, ordenadores portátiles), ordenadores de tableta, descodificadores multimedia, aparatos de teléfono tales como los denominados teléfonos "inteligentes", los denominados teclados "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo que puede desplazar los datos de vídeo codificado desde el dispositivo de origen 12 hasta el dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita datos de vídeo codificado directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificado se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global como Internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
En algunos ejemplos, el medio 16 legible por ordenador puede incluir un dispositivo de almacenamiento. Por ejemplo, el dispositivo de almacenamiento puede incluir cualquiera de una variedad de medios de almacenamiento de datos de acceso distribuido o local, tales como un disco duro, unos discos Blu-ray, unos DVD, unos CD-ROM, una memoria flash, una memoria volátil o no volátil u otros medios de almacenamiento digital cualesquiera adecuados para almacenar datos de vídeo codificado. En otro ejemplo, el dispositivo de almacenamiento puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que pueda almacenar vídeo codificado generado por el dispositivo de origen 12 y al que el dispositivo de destino pueda acceder. Los ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para un sitio web), un servidor de FTP, unos dispositivos de almacenamiento conectados a la red (NAS) o una unidad de disco local.
En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde una fuente de vídeo externa, tal como una cámara externa. Del mismo modo, el dispositivo de destino 14 se puede interconectar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado. Por consiguiente, el sistema ilustrado 10 de la FIG. 1 es simplemente un ejemplo. Cualquier dispositivo de codificación y/o descodificación de vídeo digital puede realizar las técnicas para gestionar los valores de POC de acuerdo con las técnicas de la presente divulgación.
Aunque, en general, un dispositivo de codificación de vídeo realiza las técnicas de la presente divulgación, un codificador/descodificador de vídeo, típicamente denominado "CÓDEC", también puede realizar las técnicas. Además, un preprocesador de vídeo también puede realizar las técnicas de la presente divulgación. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de dichos dispositivos de codificación, en los que el dispositivo de origen 12 genera datos de vídeo codificado para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de una manera sustancialmente simétrica, de modo que cada uno de los dispositivos 12, 14 incluye componentes de codificación y descodificación de vídeo. Por consiguiente, el sistema 10 puede admitir la transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo o videotelefonía.
La fuente de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captación de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo captado previamente y/o una interfaz de transmisión de vídeo para recibir vídeo desde un proveedor de contenido de vídeo. Como otra alternativa, la fuente de vídeo 18 puede generar datos basados en gráficos de ordenador como vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se menciona anteriormente, las técnicas descritas en la presente divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o alámbricas. En cada caso, el codificador de vídeo 20 puede codificar el vídeo captado, precaptado o generado por ordenador. La interfaz de salida 22 puede facilitar a continuación la información de vídeo codificado a un medio legible por ordenador 16.
Como se indica anteriormente, el medio legible por ordenador 16 puede incluir medios transitorios, tales como una radiodifusión inalámbrica o una transmisión de red alámbrica, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad flash, un disco compacto, un disco de vídeo digital, un disco Blu-ray u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificado desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificado al dispositivo de destino 14, por ejemplo, por medio de una transmisión de red. De forma similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de estampado de discos, puede recibir datos de vídeo codificado desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificado. Por lo tanto, se puede entender que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
La interfaz de entrada 28 del dispositivo de destino 14 puede recibir, o acceder a, información desde un medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información de sintaxis definida por el codificador de vídeo 20, que el descodificador de vídeo 30 también usa, que incluye elementos de sintaxis que describen características y/o el procesamiento de bloques y otras unidades codificadas, por ejemplo, unos grupos de imágenes (GOP). El dispositivo de visualización 32 visualiza los datos de vídeo descodificado ante un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
El dispositivo de destino 14 puede acceder a los datos de vídeo codificado a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión de wifi), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.), o una combinación de ambos que sea adecuada para acceder a los datos de vídeo codificado almacenados en un servidor de archivos. La transmisión de datos de vídeo codificado desde el dispositivo de almacenamiento puede ser una transmisión continua, una transmisión de descarga o una combinación de las mismas. Las técnicas de la presente divulgación no están necesariamente limitadas a las aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo en apoyo de cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo por Internet, tales como la transmisión continua dinámica adaptativa a través de HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede estar configurado para admitir la transmisión de vídeo unidireccional o bidireccional, para admitir aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
El codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar implementados cada uno como cualquiera de una variedad de circuitos codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o combinaciones cualesquiera de los mismos. Cuando las técnicas están parcialmente implementadas en software, un dispositivo puede almacenar instrucciones para el software en un medio no transitorio legible por ordenador adecuado y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Cada uno de entre el codificador de vídeo 20 y el descodificador de vídeo 30 puede estar incluido en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un CÓDEC combinado en un dispositivo respectivo. Un dispositivo que incluye un codificador de vídeo 20 y/o un descodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono móvil.
Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar integrados cada uno con un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si corresponde, las unidades MUX-DEMUX pueden cumplir con el protocolo multiplexor de ITU H.223 u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
La presente divulgación se puede referir en general al codificador de vídeo 20 que "señaliza" determinada información a otro dispositivo, tal como el descodificador de vídeo 30. Se debe entender, sin embargo, que el codificador de vídeo 20 puede señalizar información asociando determinados elementos de sintaxis con diversas partes codificadas de datos de vídeo. Es decir, el codificador de vídeo 20 puede "señalizar" datos almacenando determinados elementos de sintaxis en cabeceras de diversas partes codificadas de datos de vídeo. En algunos casos, dichos elementos de sintaxis se pueden codificar y almacenar antes de que el descodificador de vídeo 30 los reciba y descodifique. Por tanto, el término "señalización" se puede referir en general a la comunicación de sintaxis u otros datos para descodificar datos de vídeo comprimido, tanto si dicha comunicación se produce en tiempo real o casi real o durante un lapso de tiempo, como se podría producir al almacenar, en un medio en el momento de la codificación, elementos de sintaxis que a continuación un dispositivo de descodificación puede recuperar en cualquier momento después de su almacenamiento en este medio.
El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de codificación de vídeo. Recientemente, el Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC han finalizado el diseño de una nueva norma de codificación de vídeo, denominada codificación de vídeo de alta eficacia (HEVC). El JCT-3V también está elaborando la ampliación multivista de HEVC, a saber, MV-HEVC. Un borrador de trabajo (WD) reciente de MV-HEVC, denominado m V-HEVC WD7. El JCT-VC también está elaborando la ampliación escalable de HEVC, denominada SHVC. Un borrador de trabajo (WD) reciente de SHVC y denominado SHVC WD5. Las técnicas de la presente divulgación, sin embargo, no están limitadas a ninguna norma de codificación particular.
En HEVC y otras normas de codificación de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también se pueden denominar "tramas". Una imagen puede incluir tres matrices de muestras, denotadas por Sl, Sob y Sor. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luma. Sob es una matriz bidimensional de muestras de crominancia Cb. SCr es una matriz bidimensional de muestras de crominancia Cr. Las muestras de crominancia también se pueden denominar en el presente documento muestras de "croma". En otros casos, una imagen puede ser monocromática y puede incluir solo una matriz de muestras de luma.
Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades de árbol de codificación (CTU). Cada una de las CTU puede ser un bloque de árbol de codificación de muestras de luma, dos bloques de árbol de codificación correspondientes de muestras de croma y estructuras de sintaxis usadas para codificar las muestras de los bloques de árbol de codificación. Un bloque de árbol de codificación puede ser un bloque NxN de muestras. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación más grande" (LCU). Las CTU de HEVC pueden ser ampliamente análogas a los macrobloques de otras normas, tales como H.264/AVC. Sin embargo, una CTU no está necesariamente limitada a un tamaño particular y puede incluir una o más unidades de codificación (CU).
Un sector puede incluir un número entero de CTU ordenadas consecutivamente en el orden de barrido. Un sector puede comprender una cabecera de sector y datos de sector. La cabecera de sector de un sector puede ser una estructura de sintaxis que incluye elementos de sintaxis que proporcionan información sobre el sector. Los datos del sector pueden incluir unas CTU codificadas del sector.
En la presente divulgación se puede usar el término "unidad de vídeo" o "bloque de vídeo" o "bloque" para referirse a uno o más bloques de muestras y estructuras de sintaxis usadas para codificar muestras del uno o más bloques de muestras. Los ejemplos de tipos de unidades o bloques de vídeo pueden incluir unas CTU, unas CU, unas PU, unas unidades de transformada (TU), unos macrobloques, unas divisiones de macrobloque, etc. En algunos contextos, el análisis de las PU se puede intercambiar por el análisis de los macrobloques de unas divisiones de macrobloques.
Para generar una CTU codificada, el codificador de vídeo 20 puede realizar de forma recursiva una división de árbol cuaternario en los bloques de árbol de codificación de una CTU para dividir los bloques de árbol de codificación en bloques de codificación, de ahí el nombre "unidades de árbol de codificación". Un bloque de codificación es un bloque NxN de muestras. Una CU puede ser un bloque de codificación de muestras de luma y dos bloques de codificación de muestras de croma correspondientes de una imagen que tiene una matriz de muestras de luma, una matriz de muestras de Cb y una matriz de muestras de Cr y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. El codificador de vídeo 20 puede dividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción puede ser un bloque rectangular de muestras (es decir, cuadrado o no cuadrado) en el que se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede ser un bloque de predicción de muestras de luma, dos bloques de predicción de muestras de croma correspondientes y estructuras de sintaxis usadas para predecir las muestras de los bloques de predicción. El codificador de vídeo 20 puede generar bloques predictivos de luma, Cb y Cr para los bloques de predicción luma, Cb y Cr de cada PU de la CU.
El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador de vídeo 20 usa intrapredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a unas muestras descodificadas de la imagen asociada con la PU.
Si el codificador de vídeo 20 usa la interpredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a unas muestras descodificadas de una o más imágenes distintas de la imagen asociada con la PU. El codificador de vídeo 20 puede usar unipredicción o bipredicción para generar los bloques predictivos de una PU. Cuando el codificador de vídeo 20 usa unipredicción para generar los bloques predictivos para una PU, la PU puede tener un solo vector de movimiento (MV). Cuando el codificador de vídeo 20 usa la bipredicción para generar los bloques predictivos para una PU, la PU puede tener dos vectores de movimiento (MV).
Después de que el codificador de vídeo 20 genere bloques predictivos de luma, Cb y Cr para una o más PU de una CU, el codificador de vídeo 20 puede generar un bloque residual de luma para la CU. Cada muestra del bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques de luma predictivos de la CU y una muestra correspondiente del bloque de codificación de luma original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual de Cb para la CU. Cada muestra del bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb de uno de los bloques de Cb predictivos de la CU y una muestra correspondiente del bloque de codificación de Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual de Cr para la CU. Cada muestra del bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr de uno de los bloques de Cr predictivos de la CU y una muestra correspondiente del bloque de codificación de Cr original de la CU.
Además, el codificador de vídeo 20 puede usar una división de árbol cuaternario para descomponer los bloques residuales de luma, Cb y Cr de una CU en uno o más bloques de transformada de luma, Cb y Cr. Un bloque de transformada puede ser un bloque rectangular de muestras en el que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede ser un bloque de transformada de muestras de luma, dos bloques de transformada correspondientes de muestras de croma y unas estructuras de sintaxis usadas para transformar las muestras de bloque de transformada. Por lo tanto, cada TU de una CU puede estar asociada a un bloque de transformada de luma, un bloque de transformada de Cb y un bloque de transformada de Cr. El bloque de transformada de luma asociado con la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada de Cb puede ser un subbloque del bloque residual de Cb de la CU. El bloque de transformada de Cr puede ser un subbloque del bloque residual de Cr de la CU.
El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cb de una TU para generar un bloque de coeficientes de Cb para la TU. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cr de una TU para generar un bloque de coeficientes de Cr para la TU.
Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luma, un bloque de coeficientes de Cb o un bloque de coeficientes de Cr), el codificador de vídeo 20 puede cuantificar el bloque de coeficientes. La cuantificación en general se refiere a un proceso en el que unos coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes de transformada, proporcionando una compresión adicional. Después de que el codificador de vídeo 20 cuantifique un bloque de coeficientes, el codificador de vídeo 20 puede codificar entrópicamente elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por ejemplo, el codificador de vídeo 20 puede realizar una codificación aritmética binaria adaptativa al contexto (CABAC) en los elementos de sintaxis que indican los coeficientes de transformada cuantificados. El codificador de vídeo 20 puede facilitar los elementos de sintaxis codificados entrópicamente en un flujo de bits.
El codificador de vídeo 20 puede facilitar un flujo de bits de capa única o multicapa. Cada capa tiene un flujo de bits asociado que incluye los elementos de sintaxis codificados entrópicamente. El flujo de bits puede incluir una secuencia de bits que forma una representación de imágenes codificadas y datos asociados. El flujo de bits puede comprender una secuencia de unidades de capa de abstracción de red (NAL). Cada una de las unidades de NAL incluye una cabecera de unidad de NAL y encapsula una carga útil de secuencia de bytes sin procesar (RBSP). La cabecera de unidad de NAL puede incluir un elemento de sintaxis que indica un código de tipo de unidad de NAL. El código de tipo de unidad de NAL especificado por la cabecera de unidad de NAL de una unidad de NAL indica el tipo de unidad de NAL. Una RBSP puede ser una estructura de sintaxis que contiene un número entero de bytes que está encapsulado dentro de una unidad de NAL. En algunos casos, una RBSP incluye bits cero.
Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para un sector codificado, un tercer tipo de unidad de NAL puede encapsular una RBSP para información de mejora complementaria (SEI), y así sucesivamente. Las unidades de NAL que encapsulan RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes de SEI) se pueden denominar unidades de NAL de VCL.
El descodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Además, el descodificador de vídeo 30 puede analizar el flujo de bits para descodificar elementos de sintaxis del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo en base al menos en parte a los elementos de sintaxis descodificados del flujo de bits. El proceso para reconstruir los datos de vídeo puede ser en general recíproco al proceso realizado por el codificador de vídeo 20.
Por ejemplo, el descodificador de vídeo 30 puede usar vectores de movimiento (MV) de unas PU para determinar bloques de muestras predictivos para las Pu de una CU actual. Además, el descodificador de vídeo 30 puede cuantificar inversamente bloques de coeficientes de transformada asociados con las TU de la CU actual. El descodificador de vídeo 30 puede realizar transformadas inversas en los bloques de coeficientes de transformada para reconstruir bloques de transformada asociados con las TU de la CU actual. El descodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques de muestras predictivos para las PU de la CU actual a las muestras correspondientes de los bloques de transformada de las TU de la CU actual. Reconstruyendo los bloques de codificación para cada CU de una imagen, el descodificador de vídeo 30 puede reconstruir la imagen.
El codificador de vídeo 20 y el descodificador de vídeo 30 pueden asignar a cada imagen de una secuencia de vídeo un valor de POC para la identificación de la imagen. El codificador de vídeo 20 puede codificar (y el descodificador de vídeo 30 puede descodificar) datos representativos de imágenes de referencia que se van a incluir en la lista de imágenes de referencia, por ejemplo, señalizando datos representativos de valores de POC para las imágenes de referencia de una cabecera de sector y/o de un conjunto de parámetros, tal como un PPS o un SPS. Un valor de POC, representado por el elemento de sintaxis PicOrderCntVal, para una imagen codificada particular denota el orden relativo de la imagen en el proceso de salida de la imagen con respecto a otras imágenes de la misma secuencia de vídeo codificada. Los valores de POC de las imágenes de referencia que se han disminuido pueden tener un valor negativo para mantener el orden de salida apropiado de dichas imágenes.
Un valor de POC incluye un valor de LSB de POC y un valor de MSB de POC. El valor de LSB de POC se puede incrementar para cada imagen y especificar un orden de salida desde un valor inicial de cero hasta un valor máximo (por ejemplo, un valor máximo especificado usando de 4 a 16 bits). En el ejemplo de valor de LSB de POC de ocho bits, con propósitos ilustrativos, después de un valor de LSB de POC de 255, el valor de LSB de POC se puede reiniciar de 255 a cero y el valor de LSB de POC se puede continuar incrementando desde cero. El valor de LSB de POC se puede señalizar en la cabecera de sector, mientras que el descodificador de vídeo 30 puede calcular el valor de MSB de POC en base al tipo de unidad de NAL de la imagen actual y el MSB y el LSB de la imagen anterior en el orden de descodificación, denominadas imágenes de anclaje de POC. Para SHVC y/o MV-HEVC, se puede señalizar información adicional para ayudar a calcular un MSB de POC. En dichos ejemplos, cuando la información adicional está presente, el cálculo de MSB de POC no depende de la imagen previa en el orden de descodificación.
Una unidad de acceso de un flujo de bits multicapa puede incluir una imagen de IRAP así como una o más de otras imágenes que no son imágenes de TRAP (es decir, imágenes de no TRAP). Una imagen de TRAP contiene solo sectores intracodificados (1) y puede ser una imagen de acceso de enlace roto (BLA), una imagen de acceso aleatorio limpio (CRA) o una imagen de IDR. Para cada capa, la primera imagen del flujo de bits para una secuencia de vídeo codificado es una imagen de IRAP. Las imágenes de IRAP también se proporcionan en diversos puntos de cada capa de un flujo de bits multicapa. Una unidad de acceso multicapa puede incluir imágenes de IRAP e imágenes de no IRAP, porque las imágenes de IRAP pueden no estar separadas a intervalos iguales dentro de cada capa. Debido a que las imágenes de TRAP requieren típicamente una carga útil de bits mayor que las imágenes de no IRAP intercodificadas, el codificador de vídeo 20 puede separar las imágenes de IRAP en una capa de mejora con un intervalo mayor en comparación con una capa base.
Por ejemplo, para un GOP de ocho, el codificador de vídeo 20 puede separar las imágenes de IRAP disponiéndolas cada 32 imágenes de una capa base y espaciar imágenes de IRAP disponiéndolas cada 96 imágenes de una capa de mejora. Cuando en un punto del flujo de bits multicapa una capa (tal como una capa base) tiene una imagen de IRAP y otra capa no tiene una imagen de IRAP, se puede decir que una unidad de acceso multicapa es una unidad de acceso no alineada. Las posteriores unidades de acceso multicapa continúan estando no alineadas hasta que se restablece un POC. Como se expone con más detalle a continuación, la provisión de una imagen de IRAP en todas las capas de una unidad de acceso multicapa puede restablecer la alineación.
En algunos casos, los valores de POC se pueden establecer para imágenes de una unidad de acceso multicapa para mantener la alineación de POC de las imágenes en la unidad de acceso multicapa. A modo de ejemplo, un descodificador de HEVC conforme a la norma puede estar configurado para extraer y descodificar una capa no base (también conocida como capa de mejora) de un flujo de bits multicapa sin actualizar la información del conjunto de imágenes de referencia (RPS) de las cabeceras de sector de las imágenes de la capa extraída. La capa de mejora puede ser, por ejemplo, una vista alternativa de un flujo de bits MV-HEVC o un vídeo escalado de un flujo de bits de SHVC. Se puede especificar un período de restablecimiento de POC específico de capa en base a un identificador de período de restablecimiento de POC señalizado en las cabeceras de segmento de sector. Es decir, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar, respectivamente, datos representativos del identificador de período de restablecimiento de POC en cabeceras de segmento de sector.
Cada imagen de no IRAP (incluyendo imágenes de un tipo de imagen de IDR) que pertenece a una unidad de acceso que contiene al menos una imagen de IRAP puede ser el comienzo de un período de restablecimiento de POC que puede comenzar en la capa que contiene la imagen de no IRAP. Es decir, el codificador de vídeo 20 puede establecer un tipo de restablecimiento de POC para una imagen de no IRAP de una unidad de acceso que contiene al menos una imagen de IRAP para indicar que la imagen de no IRAP es el comienzo de un nuevo período de restablecimiento de POC. En dicha unidad de acceso, cada imagen sería entonces el comienzo de un período de restablecimiento de POC en cada una de las capas.
El codificador de vídeo 20 puede señalizar un valor de LSB de POC en una cabecera de segmento de sector que el descodificador de vídeo 30 puede usar para obtener valores de POC de imágenes de una capa que incluye el sector que tiene la cabecera de segmento de sector. El valor de LSB de POC señalizado en la cabecera de segmento de sector se puede usar para obtener un valor de delta de POC, que se puede usar para actualizar los valores de POC de las imágenes de la misma capa en el DPB, y también para obtener el MSB de POC del valor de POC de la imagen actual.
Cuando se realiza el restablecimiento de POC durante un período de restablecimiento de POC, el codificador de vídeo 20 puede señalizar el tipo de restablecimiento de POC en la cabecera de segmento de sector. El tipo de restablecimiento de POC se puede indicar usando un índice de restablecimiento de valor de POC (poc_reset_idc), que puede indicar si los valores de POC se van a restablecer total o parcialmente. Por ejemplo, en MV-HEVC o SHVC, el tipo de restablecimiento de POC se puede indicar usando un elemento de sintaxis poc_reset_idc. En dicho ejemplo, una sintaxis poc_reset_idc que es igual a () especifica que ni los MSB ni los LSB del valor de POC para la imagen actual se restablecen. Un elemento de sintaxis poc_reset_idc que es igual a 1 especifica que solo se pueden restablecer los MSB del valor de POC para la imagen actual. Un elemento de sintaxis poc_reset_idc que es igual a 2 especifica que tanto los MSB como los LSB del valor de POC para la imagen actual se pueden restablecer. Un elemento de sintaxis poc_reset_idc que es igual a 3 especifica que solo los MSB o tanto los MSB como los LSB del valor de POC para la imagen actual se pueden restablecer y se señaliza información de POC adicional.
Para que una capa no base independiente sea descodificable independientemente, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden aplicar determinadas restricciones al formar y descodificar el flujo de bits. En un ejemplo no limitante con propósitos ilustrativos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar un flujo de bits multicapa usando MV-HEVC o SHVC. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden aplicar una o más restricciones al codificar una capa no base independiente para permitir que se extraiga y descodifique la capa no base usando un descodificador conforme con HEVC. Por ejemplo, para que el descodificador conforme con HEVc descodifique con éxito la capa no base independiente, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden usar la sintaxis para la capa no base independiente que cumple con la HEVC. Por ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar cabeceras de sector y otra sintaxis de la capa no base independiente para cumplir con la norma de HEVC. De esta manera, un descodificador de vídeo conforme con HEVC puede descodificar la capa no base independiente sin modificar datos de las cabeceras de sector o realizar otras operaciones de transcodificación.
En algunos casos, restablecer un valor de LSB de POC de una imagen de la capa no base independiente puede causar un problema al intentar identificar una imagen de referencia a largo plazo (LTRP) en un RPS. Por ejemplo, como se indica anteriormente, el codificador de vídeo 20 puede codificar (y el descodificador de vídeo 30 puede descodificar) datos representativos de imágenes de referencia que se van a incluir en la lista de imágenes de referencia, por ejemplo, señalizando datos representativos de valores de POC para las imágenes de referencia en una cabecera de sector y/o en un conjunto de parámetros, tal como un PPS o un SPS. Además, antes de incluir los datos representativos de las imágenes de referencia que se van a incluir en la lista de imágenes de referencia, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden disminuir los valores de POC de imágenes que se han procesado y almacenado en un DPB antes de la imagen actual asociada con el restablecimiento de POC.
Las LTRP se pueden identificar en base a un valor de LSB de POC de las respectivas LTRP. Como se indica anteriormente, el codificador de vídeo 20 típicamente puede ajustar (por ejemplo, disminuir) los valores de LSB de POC de las LTRP al realizar el restablecimiento del valor de POC para tener en cuenta el restablecimiento del valor de POC. En consecuencia, el codificador de vídeo 20 puede incluir típicamente los valores de LSB de POC disminuidos de las LTRP en las cabeceras de sector (y/o en un PPS o SPS). Para las LTRP que tienen un valor negativo (por ejemplo, después de un restablecimiento de valor de POC), el codificador de vídeo 20 o el descodificador de vídeo 30 pueden convertir el valor de LSB de POC negativo en un valor de LSB de POC positivo usando un algoritmo de conversión.
Sin embargo, puede que algunos descodificadores de vídeo no estén configurados para descodificar la sintaxis asociada con el restablecimiento del valor de POC. En un ejemplo no limitante con propósitos ilustrativos, un descodificador de vídeo conforme con HEVC puede recibir una capa no base independiente que se ha extraído de un flujo de bits multicapa. El descodificador de vídeo conforme con HEVC puede no interpretar correctamente la sintaxis de restablecimiento del valor de POC. En dichos casos, el descodificador de vídeo conforme con HEVC puede no realizar el restablecimiento del valor de POC. Por ejemplo, el descodificador de vídeo conforme con HEVc puede descartar la información de restablecimiento de valor de POC y puede no disminuir los valores de POC de las imágenes almacenadas en el DPB del descodificador de vídeo conforme con HEVC.
En el ejemplo descrito anteriormente, el descodificador de vídeo conforme con HEVC puede no identificar apropiadamente las LTRP en base a los valores de LSB de POC de las LTRP señalizadas en la cabecera de sector, porque el descodificador de vídeo conforme con HEVC puede no estar configurado para realizar el restablecimiento del valor de POC o para disminuir los valores de POC de las imágenes almacenadas en el DPB. Es decir, el descodificador de vídeo conforme con HEVC puede recibir valores de POC de las LTRP que el codificador de vídeo 20 ha disminuido en las cabeceras de sector de las imágenes (debido al restablecimiento del valor de POC). Sin embargo, los valores POC de las LTRP señalizadas en la cabecera de sector pueden no alinearse apropiadamente con las imágenes de referencia del DPB, porque el descodificador de vídeo conforme con HEVC no ha disminuido los valores de POC de las imágenes del DPB. En consecuencia, el descodificador de vídeo conforme con HEVC puede no identificar correctamente las LTRP del DPB en base a los valores de POC recibidos.
En un ejemplo con propósitos ilustrativos, el codificador de vídeo 20 puede codificar una imagen de una capa no base independiente de un flujo de bits multicapa usando unas LTRP que tienen valores de LSB de POC de 10 y 20. El codificador de vídeo 20 puede realizar un restablecimiento de valor de POC de una imagen que tiene un valor de LSB de POC de 60. En consecuencia, el codificador de vídeo 20 puede disminuir en 60 los valores de POC de las imágenes almacenadas en el DPB y señalizar las LTRP usando los valores de LSB de POC disminuidos (por ejemplo, -50 y -40).
Sin embargo, en los casos en los que un descodificador de vídeo está configurado para descodificar el flujo de bits sin realizar un restablecimiento de valor de POC (tal como el descodificador de vídeo conforme con HEVC indicado anteriormente), el descodificador de vídeo puede no disminuir los valores de LSB de POC de las imágenes almacenadas en el DPB. Por ejemplo, al extraer la capa no base independiente del flujo de bits multicapa, el descodificador de vídeo puede descodificar indicaciones de valores de LSB de POC de LTRP de -50 y -40 de una cabecera de sector. Sin embargo, las imágenes correspondientes almacenadas en el DPB aún pueden tener los valores de 10 y 20, porque el descodificador de vídeo 30 no ha realizado el restablecimiento del valor de POC. En consecuencia, el descodificador de vídeo puede no identificar correctamente las LTRP del DPB en base a los valores de LSB de POC señalizados.
De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden controlar la manera en que se realiza el restablecimiento del valor de POC. Las técnicas pueden, en algunos casos, permitir que los valores de POC de las LTRP señalizados en una cabecera de sector mantengan la coherencia con los valores de POC de las imágenes de referencia almacenadas en un DPB del descodificador de vídeo cuando se descodifica una capa no base independiente.
En un ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar (codificar o descodificar) una imagen de una capa descodificable independientemente de un flujo de bits multicapa. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden codificar datos que indican un restablecimiento de valor de POC para un valor de LSB de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero. En dichos casos, realizar el restablecimiento del valor de POC no requiere que el codificador de vídeo 20 o el descodificador de vídeo 30 disminuyan valores de POC de imágenes almacenadas en un DPB, porque el valor de LSB de POC ya es igual a cero.
Siguiendo con el ejemplo descrito anteriormente con propósitos ilustrativos, si el codificador de vídeo 20 y el descodificador de vídeo 30 realizan un restablecimiento de valor de POC en una imagen que tiene un valor de LSB de POC de cero (por ejemplo, en lugar del valor de LSB de POC de 60 indicado anteriormente), el codificador de vídeo 20 y el descodificador de vídeo 30 no disminuyen los valores de LSB de POC de las imágenes almacenadas en el DPB, porque la diferencia entre el valor de LSB de POC y cero es cero. En consecuencia, los valores de LSB de POC de las LTRP señalizadas en una cabecera de sector son consecuentes con los valores de LSB de POC de imágenes almacenadas en un DPB en el descodificador de vídeo 30 .
En algunos ejemplos, de acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden aplicar restricciones de modo que el restablecimiento del valor de POC solo se realice para imágenes que tienen un valor de LSB de POC que es igual a cero. En un ejemplo, para que una capa no base independiente (layerA) se pueda extraer y mantener el cumplimiento con una norma en particular (por ejemplo, mantener el cumplimiento con un perfil de HEVC) sin cambiar la cabecera de sector de una unidad NAL de VCL de las imágenes en layerA, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden aplicar las siguientes restricciones: (1) para cada cabecera de segmento de sector de las imágenes de IDR en layerA, no deberá estar presente un elemento de sintaxis slice_pic_order_cut_lsb; y (2) cada imagen de la capa no deberá tener una imagen de referencia a largo plazo que preceda a una imagen de restablecimiento de POC que restablece los valores de MSB y LSB del valor de pOc .
En otro ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden aplicar las siguientes restricciones: (1) para cada cabecera de segmento de sector de una imagen de IDR en layerA, el elemento de sintaxis slice_pic_order_cnt_lsb no deberá estar presente; y (2) no deberá haber ninguna imagen de restablecimiento de POC que restablezca los valores de MSB y LSB de un valor de POC en layerA, a menos que dicha imagen de restablecimiento de POC tenga un LSB de POC igual a 0 (antes del restablecimiento).
En otro ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden aplicar las siguientes restricciones: (1) para cada cabecera de segmento de sector de una imagen de IDR en layerA, el elemento de sintaxis slice_pic_order_cnt_lsb no deberá estar presente; (2) no deberá haber ninguna imagen de restablecimiento de POC que restablezca los valores de MSB y LSB de un valor de POC en layerA, a menos que dicha imagen de restablecimiento de POC sea también una imagen de IDR; y (3) no deberá haber ninguna imagen de restablecimiento de POC con un elemento de sintaxis poc_reset_idc que sea igual a 3 que indique los valores de restablecimiento de MSB y LSB de un valor de POC en layerA, a menos que las imágenes de restablecimiento sean también una imagen de IDR.
En otro ejemplo más, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden condicionar la presencia de una base_layer_parameter_set_compatibility_flag[i] en un valor de poc_lsb_not_present_flag[i], como se describe con más detalle a continuación. En otro ejemplo más, el codificador de vídeo 20 puede señalizar (y el descodificador de vídeo 30 puede descodificar) una bandera para cada capa no base independiente para indicar si la capa mantiene la compatibilidad con una norma particular (por ejemplo, HEVC) después de la extracción.
Las técnicas de la presente divulgación también se refieren al mantenimiento de la alineación del valor de POC de las imágenes de una unidad de acceso multicapa (por ejemplo, haciendo que todas las imágenes de la unidad de acceso tengan el mismo valor de POC). Por ejemplo, mientras que el restablecimiento del valor de POC se realiza típicamente para imágenes de TDR, en algunos casos de codificación multicapa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden no restablecer el valor de POC de una imagen de IDR. En un ejemplo con propósitos ilustrativos, una unidad de acceso puede incluir una imagen de capa base que no es una imagen de IDR o una imagen de capa no base que es una imagen de TDR. Aunque el codificador de vídeo 20 y el descodificador de vídeo 30 pueden realizar típicamente un restablecimiento de valor de POC para la imagen de IDR de la capa no base, para mantener la alineación del valor de POC en la unidad de acceso, el codificador de vídeo 20 puede en su lugar señalizar (y el descodificador de vídeo 30 puede descodificar ) el valor de LSB de POC de la capa base para la imagen de capa no base. Por ejemplo, el codificador de vídeo 20 puede incluir una indicación del valor de LSB de POC de la capa base (que no es igual a cero) en las cabeceras de sector de la imagen de capa no base.
Sin embargo, el ejemplo descrito anteriormente puede presentar dificultades al codificar una capa no base independiente. En un ejemplo no limitante con propósitos ilustrativos, un descodificador de vídeo conforme con HEVC puede restablecer un valor de LSB de POC de una imagen de IDR para que sea igual a cero. En dicho ejemplo, el descodificador de vídeo conforme con HEVC puede no estar configurado para descodificar una indicación del valor de LSB de POC de las cabeceras de sector de los sectores de la imagen de IDR, porque el valor de LSB de POC es cero. Por consiguiente, el descodificador de vídeo conforme con HEVC puede funcionar mal cuando se señaliza un valor de LSB de POC en las cabeceras de sector de una imagen de IDR, porque el descodificador de vídeo conforme con HEVC puede no estar configurado para descodificar el valor de LSB de POC de las cabeceras de sector de las imágenes de IDR. El descodificador puede saltar, pues, a la siguiente imagen de TRAP de la secuencia, lo que puede degradar la continuidad en una experiencia de usuario.
Las normas de MV-HEVC y SHVC indicadas anteriormente pueden indicar si un subflujo de bits es descodificable independientemente usando uno o más elementos de sintaxis, que incluyen una poc_lsb_not_present_flag. En algunos casos, una poc_lsb_not_present_flag que es igual a 1 puede indicar que la capa asociada con la poc_lsb_not_present_flag es descodificable independientemente, por ejemplo, por un descodificador de vídeo conforme con HEVC. Por el contrario, una poc_lsb_not_present_flag que es igual a 0 puede indicar que puede ser necesario modificar una sintaxis determinada, tal como la sintaxis incluida en las cabeceras de sector, para que la capa se descodifique independientemente.
En general, la poc_lsb_not_present_flag puede indicar si un valor de LSB de POC está incluido en una cabecera de sector de una imagen de IDR. De acuerdo con SHVC y MV-HEVC, la poc_lsb_not_present_flag igual a uno especifica que el valor de LSB de POC no está presente en las cabeceras de sector de imágenes de iDr . La poc_lsb_not_present_flag igual a cero especifica que el valor de LSB de POC puede estar presente o no en las cabeceras de sector de las imágenes de IDR. La poc_lsb_not_present_flag puede permitir una extracción y descodificación de una capa no base relativamente más fácil, porque proporciona una indicación de que un valor de LSB de POC puede estar incluido en una cabecera de sector.
Con respecto a las normas de MV-HEVC y SHVC indicadas anteriormente, la única restricción explícita al establecer la poc_lsb_not_present_flag igual a uno (por ejemplo, lo que indica que el valor de LSB de POC no está incluido en la cabecera de sector) es que la capa que se está codificando es una capa independiente. Sin embargo, indicar que el valor de LSB de POC no está incluido en la cabecera de sector puede crear un problema para las imágenes de una capa independiente que no tienen un valor de LSB de POC de cero, como se describe con más detalle con respecto al ejemplo de la FIG. 5 a continuación.
De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar datos que indican un restablecimiento valor de POC para un valor de LSB de POC de una imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero. Por ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 aplican una restricción de modo que el valor de poc_lsb_not_present_flag[i] no deberá ser igual a uno (por ejemplo, lo que indica que el valor de LSB de POC no está incluido en la cabecera de sector) a menos que se pueda deducir que el valor de LSB de POC de una imagen de IDR en la capa es igual a cero. Se puede deducir que el valor de LSB de POC de una imagen de capa no base independiente es igual a cero cuando el valor de LSB de POC de una imagen de capa base en la misma unidad de acceso es una imagen de IDR, o cuando el valor de LSB de POC de la imagen de capa no base tiene un valor cero (por ejemplo, que sigue una progresión normal de valores de LSB de POC desde 0 hasta un valor máximo de LSB de POC).
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo del codificador de vídeo 20 que puede implementar unas técnicas para gestionar valores de pOc de acuerdo con las técnicas de la presente divulgación. En particular, el codificador de vídeo 20 puede estar configurado para gestionar valores de POC de imágenes de un flujo de bits multicapa de acuerdo con las técnicas de la presente divulgación. Como se indica anteriormente, el codificador de vídeo 20 puede estar adaptado para realizar una codificación de vídeo multivista y/o escalable. Por ejemplo, el codificador de vídeo 20 puede estar configurado para codificar un flujo de bits que cumple con una o más ampliaciones de norma de codificación de vídeo, tales como la SHVC o la MV-HEVC. Sin embargo, aunque se hace referencia a unas normas de codificación específicas, se debe entender que las técnicas no son específicas de ninguna norma de codificación y que se pueden implementar con normas futuras y/o aún no creadas.
El codificador de vídeo 20 puede realizar intra- e intercodificación de bloques de vídeo dentro de sectores de vídeo. La intracodificación está basada en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dada. La intercodificación está basada en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes contiguas de una secuencia de vídeo. El modo intra (modo I) se puede referir a cualquiera de varios modos de codificación basada en el espacio. Los modos inter, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), se pueden referir a cualquiera de varios modos de codificación basada en el tiempo.
Como se muestra en la FIG. 2, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama de vídeo que se va a codificar. En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una memoria de datos de vídeo 38, una unidad de selección de modo 40, una memoria de imágenes de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación entrópica 56. La unidad de selección de modo 40, a su vez, incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una unidad de intrapredicción 46 y una unidad de división 48. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye una unidad de cuantificación inversa 58, una unidad de transformada inversa 60 y un sumador 62. También se puede incluir un filtro de eliminación de bloques (no mostrado en la FIG. 2) para filtrar límites de bloques para eliminar las distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques podría filtrar típicamente la salida del sumador 62. También se pueden usar filtros adicionales (en bucle o posbucle) además del filtro de eliminación de bloques. Dichos filtros no se muestran para abreviar, pero, si se desea, pueden filtrar la salida del sumador 50 (como un filtro en bucle).
Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o sector de vídeo que se ha de codificar. La trama o el sector se puede dividir en múltiples bloques de vídeo. La memoria de datos de vídeo 38 puede almacenar datos de vídeo que los componentes del codificador de vídeo 20 van a codificar. Los datos de vídeo almacenados en la memoria de datos de vídeo 38 se pueden obtener, por ejemplo, de la fuente de vídeo 18. Se puede decir que la memoria de imágenes de referencia 64 es un DPB que almacena datos de vídeo de referencia para su uso en la codificación de datos de vídeo por el codificador de vídeo 20, por ejemplo, en modos de intra- o intercodificación. La memoria de datos de vídeo 38 y la memoria de imágenes de referencia 64 pueden estar formadas por cualquiera de una variedad de dispositivos de memoria, tales como una memoria dinámica de acceso aleatorio (DRAM), que incluye DRAM síncrona (s DrAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. El mismo dispositivo de memoria o unos dispositivos de memoria separados pueden proporcionar la memoria de datos de vídeo 38 y la memoria de imágenes de referencia 64. En diversos ejemplos, la memoria de datos de vídeo 38 puede estar en el chip con otros componentes del codificador de vídeo 20, o fuera del chip en relación con esos componentes.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan una codificación interpredictiva del bloque de vídeo recibido, en relación con uno o más bloques de una o más tramas de referencia para proporcionar una predicción temporal. La unidad de intrapredicción 46 puede realizar de forma alternativa la codificación intrapredictiva del bloque de vídeo recibido, en relación con uno o más bloques vecinos de la misma trama o sector que el bloque que se va a codificar para proporcionar predicción espacial. El codificador de vídeo 20 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.
Además, la unidad de división 48 puede dividir bloques de datos de vídeo en subbloques, en base a una evaluación de sistemas de división previos en pasadas de codificación previas. Por ejemplo, la unidad de división 48 puede dividir inicialmente una trama o un sector en unas LCU, y dividir cada una de las LCU en sub-CU en base al análisis de velocidad-distorsión (por ejemplo, optimización de velocidad-distorsión). La unidad de selección de modo 40 puede generar además una estructura de datos de árbol cuaternario, indicativa de la división de una LCU en sub-CU. Las CU de nodo hoja del árbol cuaternario pueden incluir una o más PU y una o más TU.
La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, en base a resultados erróneos, y proporciona el bloque intra- o intercodificado resultante al sumador 50 para generar datos de bloque residual y al sumador 62 para reconstruir el bloque codificado para su uso como una trama de referencia. La unidad de selección de modo 40 también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores de modo intra, información de división y otra información de sintaxis de ese tipo, a la unidad de codificación entrópica 56.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generar vectores de movimiento, que estima el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual en relación con un bloque predictivo dentro de una imagen de referencia (u otra unidad codificada) en relación con el bloque actual que se está codificando dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que resulta coincidir estrechamente con el bloque que se va a codificar, en términos de diferencia de píxeles, que se puede determinar mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia al cuadrado (SSD) u otras métricas de diferencia.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un sector intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia se puede seleccionar de entre una primera lista de imágenes de referencia (lista 0) o una segunda lista de imágenes de referencia (lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación entrópica 56 y a la unidad de compensación de movimiento 44.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar obtener o generar el bloque predictivo en base al vector de movimiento determinado por la unidad de estimación de movimiento 42. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar funcionalmente integradas en algunos ejemplos. Al recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 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íxeles, como se analiza a continuación. En general, la unidad de estimación de movimiento 42 realiza la estimación de movimiento en relación con unos componentes de luma, y la unidad de compensación de movimiento 44 usa unos vectores de movimiento calculados en base a los componentes de luma, tanto para componentes de croma como para componentes de luma. La unidad de selección de modo 40 también puede generar elementos de sintaxis asociados con los bloques de vídeo y el sector de vídeo, para su uso por el descodificador de vídeo 30 en la descodificación de los bloques de vídeo del sector de vídeo.
La unidad de estimación de movimiento 42 busca en las imágenes de referencia almacenadas en un DPB de la memoria de imágenes de referencia 64. La unidad de selección de modo 40 puede determinar qué imágenes de referencia se van a usar para codificar una imagen, un sector de imagen y/o una secuencia de imágenes. El codificador de vídeo 20 puede codificar valores de número de orden de imagen (POC) para imágenes de referencia usadas para codificar la imagen, el sector o la secuencia. El codificador de vídeo 20 puede codificar los valores de POC indicativos de las imágenes de referencia que se van a incluir en la lista de imágenes de referencia en cabeceras de sector y/o conjuntos de parámetros, tales como unos PPS y/o SPS.
De esta manera, un descodificador de vídeo , tal como el descodificador de vídeo 30, puede reproducir la lista de imágenes de referencia incluyendo las imágenes de referencia indicadas en la cabecera de sector y/o el (los) conjunto(s) de parámetros. Además, después de codificar un bloque usando un vector de movimiento generado por la unidad de estimación de movimiento 42, el codificador de vídeo 20 puede codificar información de movimiento para el bloque, donde la información de movimiento puede incluir datos representativos del vector de movimiento, un identificador para la lista de imágenes de referencia y un índice de referencia que identifica una imagen de referencia en la lista de imágenes de referencia.
En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxel subentero de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionario de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxel completo y las posiciones de píxel fraccionario, y facilitar un vector de movimiento con una precisión de píxel fraccionario.
El codificador de vídeo 20 también puede formar períodos de restablecimiento de POC y codificar valores para identificadores de período de restablecimiento de pOc para sectores de imágenes para asignar los sectores a unos respectivos períodos de restablecimiento de POC. El codificador de vídeo 20 puede asignar sectores a períodos de restablecimiento de POC individualmente dentro de cada capa de datos de vídeo. Además, el codificador de vídeo 20 puede determinar unos tipos de restablecimiento de POC para los sectores y codificar valores para las indicaciones de los tipos de restablecimiento de POC (por ejemplo, valores de dos bits) para los sectores.
Como se analiza con respecto a la FIG. 1, el codificador de vídeo 20 puede estar configurado de acuerdo con las restricciones establecidas por una norma de codificación de vídeo aplicable. Por ejemplo, el codificador de vídeo 20 puede asegurar que la primera imagen de cada período de restablecimiento de POC tiene un tipo de restablecimiento de POC (por ejemplo, poc_reset_idc) que indica que los valores de POC se han de restablecer por completo o parcialmente. En general, como se describe anteriormente, el codificador de vídeo 20 puede determinar un valor de MSB de POC para una imagen actual en base al valor de MSB de POC de la imagen codificada antes de la imagen actual en orden de codificación, o en base a información adicional (por ejemplo, ciclo de MSB de POC) que se señaliza en la cabecera de sector.
De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 puede codificar datos que indican un restablecimiento de valor de POC para un valor de LSB de POC de una imagen de una capa no base independiente solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero. Por ejemplo, el codificador de vídeo 20 puede codificar un elemento de sintaxis poc_reset_idc. El codificador de vídeo 20 puede establecer un elemento de sintaxis poc_reset_idc igual a 0 para especificar que ni los MSB ni los LSB de un valor de POC para la imagen actual se restablecen. El codificador de vídeo 20 puede establecer un elemento de sintaxis poc_reset_idc igual a 1 para especificar que solo se pueden restablecer los MSB del valor de POC para la imagen actual. El codificador de vídeo 20 puede establecer un elemento de sintaxis poc_reset_idc igual a 2 para especificar que tanto los MSB como los LSB del valor de POC para la imagen actual se pueden restablecer. El codificador de vídeo 20 puede establecer un elemento de sintaxis pocreset_idc igual a 3 para especificar que solo los MSB o tanto los MSB como los LSB del valor de POC para la imagen actual se pueden restablecer y que se puede señalizar información de número de orden de imagen adicional.
El codificador de vídeo 20 puede controlar la manera en que se establece el valor de poc_reset_idc en base a una o más restricciones. Por ejemplo, el codificador de vídeo 20 puede controlar la manera en que se establece el elemento de sintaxis poc_reset_idc para asegurar que el flujo de bits resultante cumple una norma particular. De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 puede establecer el elemento de sintaxis poc_reset_idc para una imagen en una capa no base independiente de un flujo de bits multicapa de una manera que permite que la capa no base independiente se descodifique independientemente, por ejemplo, sin cambiar/actualizar información contenida en cabeceras de sector de sectores codificados de la capa no base independiente.
Por ejemplo, de acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 puede codificar el elemento de sintaxis poc_reset_idc para que sea igual a 2 solo cuando la imagen que se está codificando tenga un valor de LSB de POC igual a cero. Es decir, cuando una poc_lsb_not_present_flag para una capa particular que se está codificando es igual a 1 (por ejemplo, lo que indica que la capa es una capa no base independiente) y un elemento de sintaxis slice_pic_order_cnt_lsb que indica que el valor de LSB de POC de la imagen es mayor que cero, el codificador de vídeo 20 puede no establecer el valor de poc_reset_idc para que sea igual a 2.
Cuando el codificador de vídeo 20 codifica el elemento de sintaxis poc_reset_idc para que sea igual a 3, el codificador de vídeo 20 puede codificar además un elemento de sintaxis full_poc_reset_flag y poc_lsb_val. En MV-HEVC y SHVC, una full_poc_reset_flag igual a 1 especifica que tanto los MSB como los LSB del valor de POC para la imagen actual se restablecen cuando la imagen previa en el orden de descodificación en la misma capa no pertenece al mismo período de restablecimiento de POC. Una full_poc_reset_flag igual a 0 especifica que solo los m Sb del valor de POC para la imagen actual se restablecen cuando la imagen previa en el orden de descodificación en la misma capa no pertenece al mismo período de restablecimiento de POC. Además, el elemento de sintaxis poc_lsb_val especifica un valor que se puede usar para obtener el número de orden de imagen de la imagen actual.
De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 puede controlar la manera en que se codifica poc_lsb_val en base a si la capa que se está codificando es una capa no base independiente. Por ejemplo, cuando poc_lsb_not_present_flag para la capa que se está codificando es igual a 1 y full_poc_reset_flag es igual a 1, el codificador de vídeo 20 puede establecer el valor de poc_lsb_val igual a cero. De esta manera, el codificador de vídeo 20 puede asegurar que el restablecimiento del valor de POC solo se realiza para imágenes que tienen un valor de LSB de POC igual a cero, lo que puede permitir que las imágenes de referencia se identifiquen apropiadamente en un conjunto de imágenes de referencia, como se describe con más detalle a continuación con respecto a la FIG. 4.
La unidad de intrapredicción 46 puede intrapredecir un bloque actual, como alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se describe anteriormente. En particular, la unidad de intrapredicción 46 puede determinar un modo de intrapredicción que se va de usar para codificar un bloque actual. En algunos ejemplos, la unidad de intrapredicción 46 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pasadas de codificación separadas, y la unidad de intrapredicción 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar de entre los modos probados un modo de intrapredicción adecuado que se va a usar.
Por ejemplo, la unidad de intrapredicción 46 puede calcular los valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tiene las mejores características de velocidad-distorsión entre los modos probados. El análisis de velocidad-distorsión en general determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se ha codificado para generar el bloque codificado, así como una velocidad de bits (es decir, un número de bits) usada para generar el bloque codificado. La unidad de intrapredicción 46 puede calcular las razones a partir de las distorsiones y las velocidades para los diversos bloques codificados para determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
Después de seleccionar un modo de intrapredicción para un bloque, la unidad de intrapredicción 46 puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación entrópica 56. La unidad de codificación entrópica 56 puede codificar la información que indica el modo de intrapredicción seleccionado. El codificador de vídeo 20 puede incluir en el flujo de bits transmitido datos de configuración, que pueden incluir una pluralidad de tablas de índices de modos de intrapredicción y una pluralidad de tablas de índices de modos de intrapredicción modificados (también denominadas tablas de mapeo de palabras de código), definiciones de contextos de codificación para diversos bloques, e indicaciones de un modo de intrapredicción más probable, una tabla de índices de modos de intrapredicción y una tabla de índices de modos de intrapredicción modificados que se va a usar para cada uno de los contextos.
El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción de la unidad de selección de modo 40 del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, generando un bloque de vídeo que comprende valores de coeficientes de transformada residuales. La unidad de procesamiento de transformada 52 puede realizar otras transformadas que son conceptualmente similares a la DCT. También se podrían usar transformadas de wavelet, transformadas enteras, transformadas de subbanda u otros tipos de transformadas. En cualquier caso, la unidad de procesamiento de transformada 52 aplica la transformada al bloque residual, generando un bloque de coeficientes de transformada residual. La transformada puede convertir la información residual de un dominio de valor de píxel a un dominio de transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir aún más la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar a continuación una exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificación entrópica 56 puede realizar la exploración.
Después de la cuantificación, la unidad de codificación entrópica 56 codifica entrópicamente los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación entrópica 56 puede realizar una codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación entrópica de división en intervalos de probabilidad (PIPE) u otra técnica de codificación entrópica. En el caso de la codificación entrópica basada en contexto, el contexto puede estar basado en bloques vecinos. Después de la codificación entrópica por la unidad de codificación entrópica 56, el flujo de bits codificado se puede transmitir a otro dispositivo (por ejemplo, el descodificador de vídeo 30) o archivar para su posterior transmisión o recuperación.
La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican una cuantificación inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, por ejemplo, para su uso posterior como un bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia sumando el bloque residual a un bloque predictivo de una de las tramas de la memoria de imágenes de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular los valores de píxel subentero, para su uso en la estimación de movimiento. El sumador 62 suma el bloque residual reconstruido al bloque de predicción sometido a compensación de movimiento generado por la unidad de compensación de movimiento 44 para generar un bloque de vídeo reconstruido para su almacenamiento en la memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden usar el bloque de vídeo reconstruido como bloque de referencia para intercodificar un bloque en una trama de vídeo posterior.
De esta manera, el codificador de vídeo 20 de la FIG. 2 representa un ejemplo de codificador de vídeo configurado para codificar al menos una parte de una imagen de una capa descodificable independientemente de un flujo de bits multicapa, y codificar datos que indican un restablecimiento de valor de POC para un valor de LSB de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo 30 que puede implementar técnicas para gestionar valores de POC de acuerdo con las técnicas de la presente divulgación. Como se indica anteriormente, el descodificador de vídeo 30 puede estar adaptado para realizar codificación de vídeo multivista y/o escalable. Por ejemplo, el descodificador de vídeo 30 puede estar configurado para descodificar un flujo de bits que cumple con una o más ampliaciones de norma de codificación de vídeo, tal como SHVC o MV-HEVC. Sin embargo, aunque se hace referencia a unas normas de codificación específicas, se debe entender que las técnicas no son específicas de ninguna norma de codificación y que se pueden implementar con normas futuras y/o aún no creadas.
En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye una memoria de datos de vídeo 68, una unidad de descodificación entrópica 70, una unidad de compensación de movimiento 72, una unidad de intrapredicción 74, una unidad de cuantificación inversa 76, una unidad de transformada inversa 78, una memoria de imágenes de referencia 82 y un sumador 80. El descodificador de vídeo 30 puede, en algunos ejemplos, realizar una pasada de descodificación en general recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 (FIG. 2). La unidad de compensación de movimiento 72 puede generar datos de predicción en base a unos vectores de movimiento recibidos desde la unidad de descodificación entrópica 70, mientras que la unidad de intrapredicción 74 puede generar datos de predicción en base a unos indicadores de modo de intrapredicción recibidos desde la unidad de descodificación entrópica 70.
La memoria de datos de vídeo 68 puede almacenar datos de vídeo, tales como un flujo de bits de vídeo codificado, para su descodificación por los componentes del descodificador de vídeo 30. Los datos de vídeo almacenados en la memoria de datos de vídeo 68 se pueden obtener, por ejemplo, de un medio legible por ordenador, por ejemplo, de una fuente de vídeo local, tal como una cámara, por medio de una comunicación en red alámbrica o inalámbrica de datos de vídeo, o accediendo a unos medios físicos de almacenamiento de datos. La memoria de datos de vídeo 68 puede formar un búfer de imágenes codificadas (CPB) que almacena datos de vídeo codificado de un flujo de bits de vídeo codificado. Se puede decir que la memoria de imágenes de referencia 82 es un DPB que almacena datos de vídeo de referencia para usar en la descodificación de datos de vídeo por el descodificador de vídeo 30, por ejemplo, en modos de intra- o intercodificación. La memoria de datos de vídeo 68 y la memoria de imágenes de referencia 82 pueden estar formadas por cualquiera de una variedad de dispositivos de memoria, tales como una memoria dinámica de acceso aleatorio (DRAM), que incluye DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. El mismo dispositivo de memoria o unos dispositivos de memoria separados pueden proporcionar la memoria de datos de vídeo 68 y la memoria de imágenes de referencia 82. En diversos ejemplos, la memoria de datos de vídeo 68 puede estar en el chip con otros componentes del codificador de vídeo 30, o fuera del chip en relación con esos componentes.
Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un sector de vídeo codificado y elementos de sintaxis asociados desde el codificador de vídeo 20. La unidad de descodificación entrópica 70 del descodificador de vídeo 30 descodifica entrópicamente el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intrapredicción y otros elementos de sintaxis. La unidad de descodificación entrópica 70 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de compensación de movimiento 72. El descodificador de vídeo 30 puede recibir los elementos de sintaxis en el nivel de sector de vídeo y/o el nivel de bloque de vídeo.
Cuando el sector de vídeo se codifica como un sector intracodificado (I), la unidad de intrapredicción 74 puede generar datos de predicción para un bloque de vídeo del sector de vídeo actual en base a un modo de intrapredicción señalizado y en datos de bloques descodificados previamente de la trama o imagen actual. Cuando la trama de vídeo se codifica como un sector intercodificado (es decir, B, P o GPB), la unidad de compensación de movimiento 72 genera bloques predictivos para un bloque de vídeo del sector de vídeo actual en base a los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de descodificación entrópica 70. Los bloques predictivos se pueden generar a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede crear las listas de tramas de referencia, lista 0 (L0) y lista 1 (L1), usando técnicas de construcción predeterminadas en base a unas imágenes de referencia almacenadas en un DPB de la memoria de imágenes de referencia 82.
Más en particular, el descodificador de vídeo 30 puede descodificar un PPS que indica si los sectores de una imagen correspondiente al PPS incluyen información de restablecimiento de POC. Suponiendo que los sectores incluyan información de restablecimiento de POC, el descodificador de vídeo 30 puede descodificar una cabecera de segmento de sector de un sector de la imagen que incluye la información de restablecimiento de POC. La información de restablecimiento de POC puede incluir un identificador de período de restablecimiento de POC y un tipo de restablecimiento de POC.
El identificador de período de restablecimiento de POC puede indicar un período de restablecimiento de POC al que corresponde el sector. El tipo de restablecimiento de POC puede indicar si el valor de POC de una imagen que incluye el sector se restablece por completo o si solo se restablecen los MSB del valor de POC. Además, el tipo de restablecimiento de POC puede indicar que no se va a realizar ningún restablecimiento de POC o que se señaliza información adicional. Si el tipo de restablecimiento de POC indica que se señaliza información adicional, el descodificador de vídeo 30 puede descodificar la información adicional, que puede indicar un valor de LSB de POC y si el valor de POC se restablece por completo o si solo se restablecen los MSB.
De acuerdo con aspectos de la presente divulgación, el descodificador de vídeo 30 puede estar configurado para descodificar una capa no base descodificable independientemente de un flujo de bits multicapa. Por ejemplo, de acuerdo con unos aspectos de la presente divulgación, el descodificador de vídeo 30 puede descodificar datos que indican un valor de POC restablecido para un valor de LSB de POC de una imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
En algunos casos, el descodificador de vídeo 30 puede estar configurado para descodificar un elemento de sintaxis poc_reset_idc. De acuerdo con unos aspectos de la presente divulgación, el descodificador de vídeo 30 puede descodificar el elemento de sintaxis poc_reset_idc en base a una o más restricciones. Por ejemplo, el descodificador de vídeo 30 puede descodificar un elemento de sintaxis poc_reset_idc que cumple una norma particular. Por ejemplo, de acuerdo con unos aspectos de la presente divulgación, el descodificador de vídeo 30 puede descodificar el elemento de sintaxis poc_reset_idc para que sea igual a 2 solo cuando la imagen que se está codificando tiene un valor de LSB de POC igual a cero. Es decir, cuando una poc_lsb_not_present_flag para una capa en particular que se está codificando es igual a 1 (por ejemplo, lo que indica que la capa es una capa no base independiente) y un elemento de sintaxis slice_pic_order_cnt_lsb indica que el valor de LSB de POC de la imagen es mayor que 0, el descodificador de vídeo 30 puede no descodificar un valor de poc_reset_idc que es igual a 2.
Cuando el descodificador de vídeo 30 descodifica un elemento de sintaxis poc_reset_idc que es igual a 3, el descodificador de vídeo 30 puede descodificar además una full_poc_reset_flag y un elemento de sintaxis poc_lsb_val. De acuerdo con unos aspectos de la presente divulgación, cuando poc_lsb_not_present_flag para la capa que se está descodificando es igual a 1 y una full_poc_reset_flag es igual a 1, el descodificador de vídeo 30 puede descodificar un valor de poc_lsb_val que es igual a 0. De esta manera, el descodificador de vídeo 30 puede asegurar que el restablecimiento del valor de POC solo se realiza para imágenes que tienen un valor de LSB de POC igual a cero, lo que puede permitir que las imágenes de referencia se identifiquen apropiadamente en un conjunto de imágenes de referencia, como se describe con más detalle a continuación con respecto a la FIG. 4.
El descodificador de vídeo 30 también puede descodificar unos valores de POC de las imágenes de referencia que se van a incluir en una lista de imágenes de referencia. El descodificador de vídeo 30 puede descodificar estos valores de POC en las cabeceras de segmento de sector y/o de conjuntos de parámetros, tales como un PPS o un SPS. El descodificador de vídeo 30 puede crear a continuación una lista de imágenes de referencia que incluye las imágenes de referencia identificadas por los valores de POC descodificados.
Después de crear la lista de imágenes de referencia para un sector, el descodificador de vídeo 30 puede descodificar bloques del sector. La unidad de compensación de movimiento 72 determina la información de predicción para un bloque de vídeo del sector de vídeo actual, analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para generar los bloques predictivos para el bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad de compensación de movimiento 72 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra- o interpredicción) usado para codificar los bloques de vídeo del sector de vídeo, un tipo de sector de interpredicción (por ejemplo, sector B, sector P o sector GPB), unos vectores de movimiento para cada bloque de vídeo intercodificado del sector, el estado de interpredicción para cada bloque de vídeo intercodificado del sector y otra información para descodificar los bloques de vídeo del sector de vídeo actual. La información de movimiento para un bloque interpredicho puede incluir un identificador de lista de imágenes de referencia y un índice de referencia para identificar una imagen de referencia en la lista de imágenes de referencia que se va a usar para predecir el bloque.
La unidad de compensación de movimiento 72 también puede realizar una interpolación en base a unos filtros de interpolación. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los que usa el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular unos valores interpolados para los píxeles subenteros de unos bloques de referencia. En este caso, la unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para generar bloques predictivos.
La unidad de cuantificación inversa 76 realiza la cuantificación inversa, es decir, la descuantificación, de los coeficientes de transformada cuantificados proporcionados en el flujo de bits y descodificados por la unidad de descodificación entrópica 70. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación QPy calculado por el descodificador de vídeo 30 para cada bloque de vídeo del sector de vídeo para determinar un grado de cuantificación y, de igual modo, un grado de cuantificación inversa que se debería aplicar.
La unidad de transformada inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para generar bloques residuales en el dominio del píxel.
Después de que la unidad de compensación de movimiento 72 genere el bloque predictivo para el bloque de vídeo actual en base a los vectores de movimiento y otros elementos de sintaxis, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de transformada inversa 78 con los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 72. El sumador 80 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de bloques para filtrar los bloques descodificados para eliminar las distorsiones de efecto pixelado. También se pueden usar otros filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para allanar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. Los bloques de vídeo descodificado en una trama o imagen dadas se almacenan a continuación en la memoria de imágenes de referencia 82, que almacena imágenes de referencia usadas para una posterior compensación de movimiento. La memoria de imágenes de referencia 82 también almacena vídeo descodificado para una presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.
De esta manera, el descodificador de vídeo 30 de la FIG. 3 representa un ejemplo de descodificador de vídeo configurado para descodificar al menos una parte de una imagen de una capa descodificable independientemente de un flujo de bits multicapa, y descodificar datos que indican un restablecimiento de valor de POC para un valor de LSB de pOc de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
La FIG. 4 es un diagrama conceptual que ilustra un restablecimiento de un valor de POC para una capa no base independiente de un flujo de bits multicapa. En el ejemplo de la FIG. 4, el flujo de bits multicapa incluye una capa base (CApA 0) 90 y una capa no base independiente (CAPA 1) 92. En general, la mitad superior del ejemplo de diagrama expuesto en la FIG. 4 ilustra el flujo de bits multicapa antes de la extracción, por ejemplo, codificado por un codificador de vídeo tal como el codificador de vídeo 20 (indicado por la frase "antes de la extracción de la capa 1"). La mitad inferior del ejemplo de diagrama expuesto en la FIG. 4 ilustra un subflujo de bits que contiene una capa no base 92 después de la extracción del flujo de bits multicapa, por ejemplo, para su descodificación por un descodificador de vídeo tal como el descodificador de vídeo 30 (indicado por la frase "después de la extracción de la capa 1").
Antes de la extracción, el codificador de vídeo 20 puede codificar la capa base 90 y la capa no base 92 usando una norma de codificación de vídeo particular, por ejemplo, MV-HEVC o SHVC. Por ejemplo, el codificador de vídeo 20 puede estar configurado para realizar el restablecimiento de valor de POC para la imagen de IDR 94. El codificador de vídeo puede señalizar un índice de restablecimiento de valor de POC (poc_reset_idc) que es igual a 2. Antes de restablecer el valor de POC, la imagen 94 tiene un valor de MSB de POC de 0 y un valor de LSB de POC de 20. Después de restablecer el valor de POC, la imagen 94 tiene un valor de MSB de pOc de 0 y un valor de LSB de POC de 0. Además, para mantener la alineación entre capas de los valores de POC, el codificador de vídeo 20 puede realizar un restablecimiento de valor de POC de la imagen 96 incluida en la capa no base 92. En consecuencia, antes de restablecer el valor de POC, la imagen 96 tiene un valor de MSB de POC de 0 y un valor de LSB de POC de 20. Después de restablecer el valor de POC, la imagen 96 tiene un valor de MSB de POC de 0 y un valor de LSB de POC de 0.
Cuando se realiza un restablecimiento de valor de POC, el codificador de vídeo 20 también puede disminuir los valores de LSB de POC de las imágenes almacenadas en un DPB para tener en cuenta el restablecimiento de valor de POC. Por ejemplo, el codificador de vídeo 20 puede disminuir el valor de LSB de POC de cada imagen de referencia almacenada en el DPB en 20 (por ejemplo, la diferencia entre el valor de LSB de POC original y el valor de LSB de POC restablecido). En consecuencia, antes del restablecimiento del valor de POC, la imagen de referencia 98 tiene un valor de MSB de POC de 0 y un valor de LSB de POC de 3. Después de restablecer el valor de POC, la imagen de referencia 98 tiene un valor de MSB de POC de 0 y un valor de LSB de POC de -17. Igualmente, antes de restablecer el valor de POC, la imagen de referencia 100 tiene un valor de MSB de POC de 0 y un valor de LSB de POC de 3. Después de restablecer un valor de POC, la imagen de referencia 100 tiene un valor de MSB de POC de 0 y un valor de LSB de POC de -17.
El codificador de vídeo 20 también codifica la imagen 102 de la capa no base 92 usando interpredicción. Por ejemplo, el codificador de vídeo 20 identifica la imagen de referencia 100 como una LTRP e incluye la imagen de referencia 100 en un RPS para codificar la imagen 102 (por ejemplo, un conjunto de imágenes de referencia a largo plazo (LT-RPS)). El codificador de vídeo 20 también puede señalizar el valor de LSB de POC de la imagen de referencia 100 en una cabecera de sector de un sector de imagen 102 o en un conjunto de parámetros al que se refiere la imagen 102 para identificar la imagen de referencia 100 como una LTRP. Es decir, el codificador de vídeo 20 puede señalizar el valor de LSB de POC de la imagen de referencia 100 después de realizar el restablecimiento del valor de POC, de modo que el valor de LSB de POC señalizado es 15 (después de la conversión de -17 a un número positivo usando un algoritmo de conversión).
Después de la extracción, como se indica anteriormente, el descodificador de vídeo 30 puede estar configurado para descodificar la capa no base 92 cumpliendo con una norma de capa única particular, por ejemplo, HEVC, que no es necesariamente la misma que la norma multicapa usada para codificar una capa no base. En consecuencia, el descodificador de vídeo 30 puede usar la sintaxis asociada con la norma para descodificar la capa no base 92 y descartar o ignorar otra sintaxis. Aunque en este documento se hace referencia al descodificador de vídeo 30 que cumple con la norma de HEVC, y/o ampliaciones multicapa de HEVC, se debe entender que las técnicas de la presente divulgación no están necesariamente limitadas de esta manera y que se pueden usar con otras normas.
Para descodificar la imagen 102, el descodificador de vídeo 30 puede estar configurado para realizar la interpredicción de una manera que es recíproca a la realizada por el codificador de vídeo 20. En consecuencia, el descodificador de vídeo 30 puede crear una lista de imágenes de referencia que puede incluir una o más imágenes del LT-RPS. Por ejemplo, el descodificador de vídeo 30 puede descodificar una cabecera de sector de un sector de imagen 102 o un conjunto de parámetros al que la imagen 102 se refiere para identificar una o más imágenes de referencia a largo plazo que incluyen la imagen de referencia 100.
Como se indica anteriormente, en la cabecera de sector de la imagen 102 se puede señalizar que el valor de LSB de POC de la imagen de referencia 100 es igual a 15 (por ejemplo, correspondiente a un valor de LSB de POC de -17 después de realizar el restablecimiento del valor de POC). Sin embargo, el descodificador de vídeo 30 puede no estar configurado para realizar un restablecimiento de valor de POC. Por ejemplo, al descodificar la imagen 96, el descodificador de vídeo 30 puede no descodificar el elemento de sintaxis poc_reset_idc y puede no disminuir los valores de LSB de POC de las imágenes almacenadas en el DPB. En consecuencia, el valor de LSB de POC de la imagen de referencia 100 es igual a 3. La imagen de referencia 100, sin embargo, se identifica en la cabecera de sector mediante un valor de LSB de POC de 15. Por consiguiente, en el ejemplo de la FIG. 4, el descodificador de vídeo 30 puede localizar la imagen de referencia 100 en el DPB, porque el valor de LSB de POC de la imagen de referencia 100 no coincide con el valor de LSB de POC señalizado en la cabecera de sector.
Como se ilustra mediante el ejemplo de la FIG. 4, para extraer una capa de mejora independiente (tal como la capa no base 92) que un descodificador de HEVC puede descodificar sin cambiar la información de cabecera de sector, el descodificador de vídeo 30 puede considerar si las LTRP se usan para la predicción de imágenes de la capa y si las imágenes que restablecen tanto un LSB de POC como un MSB de POC están presentes en la capa. Estos dos parámetros se pueden considerar para determinar si es posible extraer la capa de mejora independiente de un flujo de bits multicapa sin tener que cambiar las cabeceras de sector de las imágenes de la capa.
De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden controlar la manera en que se realiza el restablecimiento del valor de POC para capas no base independientes. Las técnicas pueden, en algunos casos, permitir que los valores de POC de las LTRP señalizados en una cabecera de sector mantengan la coherencia con los valores de POC de las imágenes de referencia almacenadas en un DPB del descodificador de vídeo. En un ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar (codificar o descodificar) una imagen de una capa descodificable independientemente de un flujo de bits multicapa. El codificador de vídeo 20 y el descodificador de vídeo 30 también pueden codificar datos que indican un restablecimiento de valor de POC para un valor de LSB de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero. En dichos casos, realizar el restablecimiento del valor de POC no requiere que el codificador de vídeo 20 o el descodificador de vídeo 30 disminuyan valores de POC de imágenes almacenadas en un DPB, porque el valor de LSB de POC ya es igual a cero.
A continuación, se exponen ejemplos de sintaxis y semántica para gestionar el restablecimiento del valor de POC, de acuerdo con diversas técnicas de la presente divulgación. La sintaxis y la semántica descritas son relativas, por ejemplo, a las de MV-HEVC y SHVC indicadas anteriormente. En el ejemplo de descripción, las tablas de sintaxis y la semántica proporcionadas a continuación, las adiciones a MV-HEVC y SHVC se representan en cursiva y las supresiones se representan con texto entre corchetes precedido de "eliminado" (por ejemplo, [eliminado: "texto eliminado"]). En general, las sentencias con respecto a "requisitos" se deben entender que forman parte del texto de la norma o la ampliación de la norma, y no como un requisito para los propósitos de las técnicas de la presente divulgación. En algunos casos, dichos "requisitos" pueden incluir restricciones de flujo de bits que se puede determinar que son aplicables a, y continuación, acatadas, por ejemplo, por un codificador de vídeo en base a la determinación.
En un primer ejemplo, se pueden realizar los siguientes cambios en la semántica del elemento de sintaxis base_layer_parameter_set_compatibility_flag[i] en la información de usabilidad de vídeo (VUI) del conjunto de parámetros de vídeo (VPS):
base_layer_parameter_set_compatibility_flag[i] igual a 1 especifica que las siguientes restricciones se aplican a la capa con nuh_layer_id igual a layer_id_in_nuh[i]. base_layer_parameter_set_compatibility_flag[i] igual a 0 especifica que las siguientes restricciones se pueden aplicar o no a la capa con nuh_layer_id igual a layer_idin_nuh[i]. Cuando no está presente, se deduce que el valor de base_layer_parameter_set_compatibility_flag[i] es igual a 0.
- Cada unidad de NAL de segmento de sector codificada con un valor nuh_layer_id igual a layer_id_in_nuh[i] que se refiere al VPS se deberá referir a un PPS con un valor nuh_layer_id igual a 0.
- Cada unidad de NAL de segmento de sector codificada con un valor nuh_layer_id igual a layer_id_in_nuh[i] que se refiere al VPS se deberá referir a un SPS con valor nuh_layer_id igual a 0.
- Los valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8 y bit_depth_chroma_minus8, respectivamente, del SPS activo para la capa con nuhjayer_id igual a layer_id_in_nuh[i] deberán ser iguales a los valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8 y bit_depth_chroma_minus8, respectivamente, de la vps_rep_format_idx[i]-ésima estructura de sintaxis rep_format() en el VPS activo.
- El valor de poc_lsb_not_present_flag[i] deberá ser igual a 1.
- Cuando una unidad de acceso que contiene una imagen picA con n u h ja y e r jd igual a layerjd_in_nuh_[i] que se refiere al VPS también contiene una imagen con n u h ja y e r jd igual a 0 y slice_pic_order_cnt_lsb mayor que 0, la imagen picA deberá ser una imagen de no IDR.
Cuando la unidad de NAL de segmento de sector codificada con un valor nuh_layer_id igual a layerjd_in_nuh[i] que se refiere al VPS que tiene un valor de no cero de num_ong_ term_sps o num_long_term_pics, o ambos, y slice_pic-order_cnt_lsb no es igual a 0, poc_reset_idc no deberá ser igual a 2.
En un segundo ejemplo, el nombre del elemento de sintaxis base_layer_parameter_set_compatibility_flag [i] a base_layer_compatibility_flag[i]. Además, se pueden realizar los siguientes cambios en la semántica del elemento de sintaxis base_layer_paxameter_set_compatibility_flag[i] en la VUI de VPS (que a continuación se indica como base_layer_compatibility_flag[i]):
base layer_compatibility_flag[i] igual a 1 especifica que las siguientes restricciones se aplican a la capa con n u llja y e r jd igual a layer_id_in_nuh[i]. base_layer_compatibility_flag[i] igual a 0 especifica que las siguientes restricciones se pueden aplicar o no a la capa con nuh_layer_id igual a layer_id_in nuh[i]. Cuando no está presente, se deduce que el valor de base_layer_compatibility_flag[i] es igual a 0.
- Cada unidad de NAL de segmento de sector codificada con un valor null_layer_id igual a layer_id_m_nuh[i] que se refiere al VPS se deberá referir a un PPS con un valor nuh_laver_id igual a 0.
- Cada unidad de NAL de segmento de sector codificada con un valor null_layer_id igual a layer_id_in_nuh[i] que se refiere al VPS se deberá referir a un SPS con un valor nuh_layer_id igual a 0.
- Los valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8 y bit_depth_chroma_minus8, respectivamente, del SPS activo para la capa con nuh_layer_id igual a layer_id_in_nuh[i] deberán ser iguales a los valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8 y bit_depth_chroma_minus8, respectivamente, de la vps_rep_format_idx[i]-ésima estructura de sintaxis rep_format() en el VPS activo.
- El valor de poc_lsb_not_present_flag[i] deberá ser igual a 1.
- Para cualquier imagen picA que tiene nuh_ layer_id_igual a layer_id_ in_nuh[i] y que se refiere al VPS, se aplica lo siguiente:
- Cuando slice_pic_order_cnt_lsb es mayor que 0, poc_reset_idc no deberá ser igual a 2.
- Cuando full_poc_reset_flag es igual a 1, poc_lsb_val deberá ser igual a 0.
Se debe entender que la sintaxis incluida en el presente documento tiene simplemente por propósito ejemplificar. Es decir, aunque el ejemplo anterior se describe con respecto a esa bandera base_layer_compatibility, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden aplicar las restricciones descritas en este documento con respecto a otro elemento de sintaxis diferente o de otra manera.
En un tercer ejemplo, se añade una restricción a la semántica de poc_lsb_not_present_flag[i] de modo que cuando hay al menos una unidad de acceso que contiene una imagen de no IDR con nuh_layer_id igual a 0 y una imagen de IDR con nuh_layer_id igual a layer_id_in_nuh[i], poc_lsb_not_present_flag[i] no deberá ser igual a 1. Se añade una condición a la señalización de la capa base del elemento de sintaxis parameter_set_compatibility_flag[i] de modo que el elemento de sintaxis está presente solo cuando el valor de poc_lsb_not_present_flag[i] es igual a 1. Cuando no está presente, se deduce que el valor para base_layer_parameter_set_compatibility_flag[i] es igual a 0.
Además, la señalización del elemento de sintaxis base_layer_parameter_set_compatibility_flag[i] con el cambio indicado anteriormente se puede modificar como se establece en la siguiente tabla:
Figure imgf000023_0002
En la tabla anterior, una poc_Isb_not_present_flag[i] igual a 1 especifica que el elemento de sintaxis slice_pic_order_cnt_lsb no está presente en las cabeceras de sector de las imágenes de IDR con n u h ja y e rjd igual a layer_id_in_nuh[i] en la CVS. Además, poc_lsb not_present_flag[i] igual a 0 especifica que el elemento de sintaxis slice_pic_order_cnt_lsb puede estar presente o no en las cabeceras de sectores de imágenes de IDR con n u h ja y e rjd igual a laver_id_in_nuh[i] en la CVS. Cuando no está presente, se deduce que el valor de poc_lsb_not_present_flag[i] es igual a 0.
Además, una base_layer_parameter_set_compatibility_flag[i] igual a 1 especifica que las siguientes restricciones se aplican a la capa con n u llja y e rjd igual a layer_id_in_nuh[i]. Una base_layer_parameter_set_compatibility_flag[i] igual a 0 especifica que las siguientes restricciones se pueden aplicar o no a la capa con n u h ja y e rjd igual a layer_id_in_nuh[i]. En general, la base_layer_parameter_set_compatibility_flag[i] puede indicar si una capa de mejora usa los conjuntos de parámetros (por ejemplo, PPS y SPS) de la capa base.
En un cuarto ejemplo, de acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar configurados para implementar una nueva bandera para cada capa que indica si un descodificador conforme con HEVC puede extraer y descodificar una capa independiente sin tener que actualizar información en las cabeceras de sector de las imágenes de la capa. La señalización asociada con dicha bandera puede ser como se expone en la tabla 1 a continuación:
Tabla 1
Figure imgf000023_0001
En el ejemplo de la tabla 1 anterior, slice_segment_header_update_not_required_for_extraction_flag[i] igual a 1 especifica que no es necesario actualizar las cabeceras de segmento de sector de las imágenes con n u h ja ye rjd igual a layer_id_in_nuh[i] en cada CVS que se refiere al VPS cuando se invoca el proceso de extracción del subflujo de bits, siendo la capa con n u h ja y e rjd igual a layer_id_in_nub[i] la capa más baja en la entrada TargetDecLayerIdList. Además, slice_segment_header_update_not_required_for_extraction_flag[i] igual a 0 especifica que puede ser necesario o no actualizar las cabeceras de sector de imágenes con nuh_layer_id igual a layer_id_in_nuh[i] en la CVS cuando se invoca el proceso de extracción del subflujo de bits, siendo la capa n u h ja y e r jd igual a layer_id_in_nuh[i] la capa más baja en la entrada TargetDecLayerIdList. Cuando no está presente, se deduce que slice_segment_header_update_not_required_for_extraction_flag[i] es igual a 0.
La FIG. 5 es otro diagrama conceptual que ilustra el restablecimiento de un valor de POC para una capa no base independiente de un flujo de bits multicapa. En el ejemplo de la FIG. 5, el flujo de bits multicapa incluye una capa base (Ca Pa 0) 110 y una capa no base independiente (Ca Pa 1) 112. La capa base 110 incluye una imagen de IDR 114 y una imagen 116. La capa de no base 112 incluye una imagen 118 que está en la misma unidad de acceso que la imagen 114 de la capa base 110 y la imagen de IDR 120 que está en la misma unidad de acceso que la imagen 116 de la capa base 110.
Un descodificador de vídeo, tal como el descodificador de vídeo 30, puede estar configurado para descodificar una capa base 110 y una capa de no base 112 usando una norma de codificación de vídeo particular, por ejemplo, MV-HEVC o SHVC. El descodificador de vídeo 30 puede estar configurado para realizar un restablecimiento de valor de POC para la imagen 114 de la capa base 110, porque la imagen 114 es una imagen de IDR. El descodificador de vídeo puede descodificar un índice de restablecimiento de valor de POC (poc_reset_idc) que es igual a 2 para la imagen 114. Además, para mantener la alineación entre capas de los valores de POC, el descodificador de vídeo 30 también puede realizar un restablecimiento de valor de POC de la imagen 118 incluida en la capa de no base 112. En consecuencia, después de restablecer el valor de POC, tanto la imagen 114 de la capa base 110 como la imagen 118 de la capa de no base 112 tienen un valor de LSB de POC igual a cero.
El elemento de sintaxis poc_lsb_not_present_flag[i], incluido en MV-HEVC y SHVC, permite que la información de LSB de POC no se incluya en las cabeceras de segmento de sector de los sectores que pertenecen a una imagen de IDR de una capa de mejora independiente, tal como la capa no base 112. El elemento de sintaxis puede ayudar a permitir que la capa no base 112 se extraiga de un flujo de bits multicapa y se descodifique mediante un descodificador HEVC (por ejemplo, en lugar de un descodificador configurado para MV-HEVC o SHVC) sin modificar las cabeceras de segmento de sector de las imágenes en la capa y solo cambiando el n u llja y e r jd en las cabeceras de unidad de NAL. Por ejemplo, como se expone actualmente en los borradores de trabajo de MV-HEVC y SHVC, la poc_lsb_not_present_flag igual a uno especifica que el valor de LSB de POC no está presente en las cabeceras de sector de las imágenes de IDR. La poc_lsb_not_present_flag igual a cero especifica que el valor de LSB de POC puede estar presente o no en las cabeceras de sector de las imágenes de IDR.
La única restricción explícita sobre la poc_lsb_not_present_flag[i] incluida en las normas de MV-HEVC y SHVC indicadas anteriormente es que el valor de poc_lsb_not_present_flag[i] se puede establecer en 1 para una capa no base solo cuando la capa es independiente (por ejemplo, la predicción entre capas no se usa para predecir los datos de vídeo de la capa). Sin embargo, indicar que el valor de LSB de POC no está incluido en la cabecera de sector de una capa no base independiente, tal como la capa no base 112, puede crear un problema para las imágenes que no tienen un valor de LSB de POC de cero.
Por ejemplo, como se muestra en el ejemplo de la FIG. 5, la capa no base 112 puede estar asociada con una poc_lsb_not_present_flag[i] que se establece igual a 1, de modo que un valor de LSB de POC puede no estar incluido en las cabeceras de sector de imágenes de IDR para mantener el cumplimiento con un descodificador de HEVC. La imagen 120 es una imagen de IDR para la que se realiza un restablecimiento de valor de POC (por ejemplo, poc_reset_idc es igual a 1). En consecuencia, las cabeceras de sector de los sectores de la imagen 120 pueden no incluir una indicación del valor de LSB de POC. El descodificador de vídeo 30 puede deducir (por ejemplo, determinar automáticamente) que el valor de LSB de POC de la imagen 120 es igual a cero.
Sin embargo, deducir que el valor de LSB de POC de la imagen 120 es igual a cero puede hacer que el flujo de bits multicapa no cumpla con la norma de HEVC, porque el valor de LSB de POC de la imagen 116 de la capa base 110 (que está en la misma unidad de acceso que la imagen 120 de la capa no base 112) no es igual a cero. En su lugar, el valor de LSB de POC de la imagen 116 de la capa base 110 es 4. En consecuencia, la unidad de acceso que contiene las imágenes 116 y 120 incluye imágenes que tienen diferentes valores de POC, lo que no está permitido para el cumplimiento con el flujo de bits.
De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden codificar datos que indican un restablecimiento valor de POC para un valor de LSB de POC de una imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero. Por ejemplo, el codificador de vídeo 20 y el descodificador de vídeo 30 aplican una restricción de modo que el valor de poc_lsb_not_present_flag[i] no es igual a uno (por ejemplo, lo que indica que el valor de LSB de POC no está incluido en la cabecera de sector) a menos que se pueda deducir que el valor de LSB de POC de una imagen de IDR en la capa es igual a cero. Se puede deducir que el valor de LSB de POC de una imagen de capa no base independiente es igual a cero cuando el valor de LSB de POC de la imagen de capa base de la misma unidad de acceso es una imagen de IDR, o el valor de LSB de POC de la imagen de capa no base tiene un valor cero (por ejemplo, se reinicia para ser igual a cero siguiendo una progresión normal de valores de LSB de POC).
En el ejemplo de la FIG. 5, de acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden no codificar una poc_lsb_not_present_flag[i] que es igual a 1 para la capa no base 112, porque el valor de LSB de POC de la imagen 120, que es una imagen de iDr , no se puede deducir que sea igual a cero. Por el contrario, el valor de LSB de POC de la imagen 120 es 4. Una poc_lsb_not_present_flag que es igual a 0 puede indicar que la capa no base 112 no se puede descodificar independientemente, por ejemplo, usando un descodificador de vídeo conforme con HEVC, sin modificar uno o más elementos de sintaxis, como los elementos de sintaxis incluidos en una cabecera de sector de la imagen 120.
De esta manera, de acuerdo con unos aspectos de la presente divulgación, el valor de poc_lsb_not_present_flag[i] se puede restringir de modo que no deberá ser igual a 1 cuando el flujo de bits multicapa contiene una o más unidades de acceso que tienen una imagen de capa base que es una imagen no IDR con un valor de LSB de POC de no cero y una imagen de capa de mejora (correspondiente a la i-ésima capa en el VPS) que es una imagen de IDR. En un ejemplo, la siguiente restricción se debe añadir como parte de la semántica de poc_lsb_not_present_flag[i] de MV-HEVC y SHVC (por ejemplo, como una nota a la semántica de poc_lsb_not_present_flag[i]), donde las adiciones se representan en cursiva:
Es un requisito del cumplimiento con el flujo de bits que, dentro de todas las CVS que se refieren al VPS, cuando hay al menos una unidad de acceso que contiene una imagen de no IDR con nuh_layer_id igual a 0 y slice_pic_order_cnt_lsb mayor que 0, y que contiene una imagen de IDR con nuh_layer_id igual a layerjd_in_nuh[i], poc_lsb_not_present_flag[i] no deberá ser igual a 1.
En otro ejemplo, la siguiente restricción se debe añadir como parte de la semántica de poc_lsb_not present_flag[i] de MV-HEVC y SHVC (por ejemplo, como una nota a la semántica de poc_lsb_not_present_flag[i]), donde las adiciones se representan en cursiva:
Es un requisito del cumplimiento con el flujo de bits que, dentro de todas las CVS que se refieren al VPS, cuando hay al menos una unidad de acceso que contiene una imagen de no IDR con nuh_layer_id igual a 0 y una imagen de IDR con nuhjayer_id igual a layerjd_in_nuh[i], poc_lsb_not_present_flag[i] no deberá ser igual a 1.
En otro ejemplo, la siguiente restricción se debe añadir como parte de la semántica de poc_lsb_not_present_flag[i] de MV-HEVC y SHVC (por ejemplo, como una nota a la semántica de poc_lsb_not_present_flag[i]), donde las adiciones se representan en cursiva:
Es un requisito del cumplimiento con el flujo de bits que, cuando poc_lsbnot_present_flag[i] es igual a 1, dentro de todas las CVS que se refieren al VPS, cuando una unidad de acceso contiene una imagen de IDR con nuh_layer_id igual a layer_id_in_nuh[i], el valor de slice_pic_order_cnt_lsb tiene que ser igual a 0 para todas las imágenes de la unidad de acceso a menos que poc_reset_idc sea igual a 2 para todas las imágenes de la unidad de acceso.
La FIG. 6 es un diagrama de flujo que ilustra un ejemplo de procedimiento para codificar datos de vídeo de un flujo de bits multicapa de acuerdo con las técnicas de la presente divulgación. Además, el procedimiento de la FIG. 6 incluye codificar un bloque actual. El bloque actual puede comprender una CU actual o una parte de la CU actual. Aunque se describe con respecto al codificador de vídeo 20 (FIGS. 1 y 2), se debe entender que otros dispositivos pueden estar configurados para realizar un procedimiento similar al de la FIG. 6.
En este ejemplo, el codificador de vídeo 20 puede determinar si se restablece un valor de POC para la imagen que incluye el bloque actual (130). Cuando se realiza el restablecimiento del valor de POC, el codificador de vídeo 20 puede determinar un tipo de restablecimiento de POC y restablecer el valor de POC de la imagen (132). De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 solo puede codificar datos que indican un restablecimiento de valor de POC para un valor de LSB de POC de la imagen cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
Por ejemplo, como se describe anteriormente con respecto a la FIG. 2, el codificador de vídeo 20 puede codificar un elemento de sintaxis poc_reset_idc. De acuerdo con unos aspectos de la presente divulgación, el codificador de vídeo 20 puede controlar la manera en que se codifica el valor poc_reset_idc en base a una o más restricciones. Por ejemplo, el codificador de vídeo 20 puede codificar el elemento de sintaxis poc_reset idc para que sea igual a 2 solo cuando la imagen que se está codificando tiene un valor de LSB de POC igual a cero. Es decir, cuando una poc_lsb_not_present_flag para una capa en particular que se está codificando es igual a 1 (por ejemplo, lo que indica que la capa es una capa no base independiente) y un elemento de sintaxis slice_pic_order_cnt_lsb que indica que el valor de LSB de POC de la imagen es mayor que 0, el codificador de vídeo 20 puede no establecer el valor poc_reset_idc para que sea igual a 2.
Cuando el codificador de vídeo 20 codifica el elemento de sintaxis poc_reset_idc para que sea igual a 3, el codificador de vídeo 20 puede codificar además un elemento de sintaxis full_poc_reset_flag y poc_lsb_val. De acuerdo con los aspectos de la presente divulgación, cuando una poc_lsb_not_present_flag (que puede indicar que la capa que se está codificando es una capa no base independiente) para la capa que se está codificando es igual a 1 y full_poc_reset_flag es igual a 1, el codificador de vídeo 20 puede establecer el valor de poc_lsb_val igual a 0. De esta manera, el codificador de vídeo 20 puede asegurar que el restablecimiento del valor de POC se realiza solo para imágenes que tienen un valor de LSB de POC igual a cero, lo que puede permitir que las imágenes de referencia se identifiquen apropiadamente, como se describe en el presente documento.
El codificador de vídeo 20 puede formar a continuación una lista de imágenes de referencia (134). El codificador de vídeo 20 señaliza además los valores de POC de las imágenes de referencia incluidas en la lista de imágenes de referencia (136). Por ejemplo, el codificador de vídeo 20 puede codificar valores de POC (o partes de los valores de POC, por ejemplo, valores de LSB de POC) para las imágenes de referencia en un conjunto de parámetros tal como un SPS o PPS, y/o en una cabecera de sector para el sector. Algunas imágenes de referencia (por ejemplo, imágenes de referencia a largo plazo) se pueden señalizar en el conjunto de parámetros, mientras que otras imágenes de referencia (por ejemplo, imágenes de referencia a corto plazo) se pueden señalizar en la cabecera de sector.
Se debe entender que las etapas de formar la lista de imágenes de referencia y señalizar qué imágenes están incluidas en la lista de imágenes de referencia se pueden realizar múltiples veces en varias pasadas de codificación diferentes, para determinar el conjunto de imágenes de referencia que consigue las mejores características velocidad-distorsión para, por ejemplo, los bloques del sector actual. Es decir, el codificador de vídeo 20 puede seleccionar el conjunto de imágenes de referencia incluidas en la lista de imágenes de referencia en base a las características de todos los bloques del sector actual, y no solo en base a las características individuales de un solo bloque.
El codificador de vídeo 20 puede predecir a continuación el bloque actual del sector actual (138). Por ejemplo, el codificador de vídeo 20 puede calcular una o más unidades de predicción (PU) para el bloque actual. Más en particular, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento para el bloque actual entre las imágenes de referencia de la lista de imágenes de referencia para identificar un bloque coincidente usado como bloque de referencia, por ejemplo, en base a una SAD, una SSD, una MAD, una MSD u otras métricas de cálculo de errores. La unidad de estimación de movimiento 42 puede generar un vector de movimiento para el bloque actual en base a la búsqueda de movimiento. A continuación, el codificador de vídeo 20 puede codificar información de movimiento para el bloque (140), que puede incluir valores de diferencia de vector de movimiento para el vector de movimiento, un identificador de lista de imágenes de referencia y un índice de referencia, que conjuntamente identifican el bloque de referencia.
El codificador de vídeo 20 puede calcular a continuación un bloque residual para el bloque actual, por ejemplo, para generar una unidad de transformada (TU) (142). Para calcular el bloque residual, el codificador de vídeo 20 puede calcular una diferencia entre el bloque original no codificado y el bloque predicho para el bloque actual. El codificador de vídeo 20 puede transformar y cuantificar a continuación los coeficientes del bloque residual (144). A continuación, el codificador de vídeo 20 puede explorar los coeficientes de transformada cuantificados del bloque residual (146). Durante la exploración, o después de la exploración, el codificador de vídeo 20 puede codificar entrópicamente los coeficientes (148). Por ejemplo, el codificador de vídeo 20 puede codificar los coeficientes usando CAVLC o CABAC. El codificador de vídeo 20 puede facilitar a continuación los datos codificados entrópicamente del bloque (150).
De esta manera, el procedimiento de la FIG. 6 representa un ejemplo de procedimiento que incluye codificar, mediante un codificador de vídeo, al menos una parte de una imagen de una capa descodificable independientemente de un flujo de bits multicapa, y codificar, mediante el codificador de vídeo, datos que indican un valor de número de orden de imagen (POC) restablecido para un valor de bits menos significativos (LSB) de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
La FIG. 7 es un diagrama de flujo que ilustra un ejemplo de procedimiento para descodificar datos de vídeo de un flujo de bits multicapa de acuerdo con las técnicas de la presente divulgación. Además, el procedimiento de la FIG. 7 incluye descodificar un bloque actual. El bloque actual puede comprender una CU actual o una parte de la CU actual. Aunque se describe con respecto al descodificador de vídeo 30 (FIGS. 1 y 3), se debe entender que otros dispositivos pueden estar configurados para realizar un procedimiento similar al de la FIG. 7.
En este ejemplo, el descodificador de vídeo 30 puede determinar si debe reiniciar un valor de POC para la imagen que incluye el bloque actual (160). Cuando se realiza el restablecimiento del valor de POC, el descodificador de vídeo 30 puede descodificar datos que indican el restablecimiento de POC (162). En algunos casos, el descodificador de vídeo 30 puede descodificar datos que indican un tipo de restablecimiento de POC. De acuerdo con unos aspectos de la presente divulgación, el descodificador de vídeo 30 puede codificar solo datos que indican un restablecimiento de valor de POC para un valor de LSB de POC de la imagen cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
Por ejemplo, como se describe anteriormente con respecto a la FIG. 3, el descodificador de vídeo 30 puede descodificar un elemento de sintaxis poc_reset_idc. De acuerdo con unos aspectos de la presente divulgación, el descodificador de vídeo 30 puede recibir y descodificar poc_reset_idc en base a una o más restricciones. Por ejemplo, el descodificador de vídeo 30 puede descodificar un elemento de sintaxis poc_reset_idc que tiene un valor de 2 solo cuando la imagen que se está codificando tiene un valor de LSB de POC igual a cero. Es decir, cuando una poc_lsb_not_present_flag para una capa particular que se está codificando es igual a 1 (por ejemplo, lo que indica que la capa es una capa no base independiente) y un elemento de sintaxis slice_pic_order_cut_lsb que indica que el valor de LSB de POC de la imagen es mayor que 0, el descodificador de vídeo 30 puede no descodificar un valor de poc_reset_idc que es igual a 2.
Cuando el descodificador de vídeo 30 descodifica un elemento de sintaxis poc_reset_idc que es igual a 3, el descodificador de vídeo 30 puede descodificar además una foll_poc_reset_flag y un elemento de sintaxis poc_isb_val. De acuerdo con los aspectos de la presente divulgación, cuando una poc_lsb_not_present_flag (que puede indicar que la capa que se está codificando es una capa no base independiente) para la capa que se está codificando es igual a 1 y full_poc_reset_flag es igual a 1, el descodificador de vídeo 30 puede descodificar un valor de poc_lsb_val que es igual a 0. De esta manera, el descodificador de vídeo 30 puede asegurar que el restablecimiento del valor de POC se realiza solo para imágenes que tienen un valor de LSB de POC igual a cero, lo que puede permitir que las imágenes de referencia se identifiquen apropiadamente, como se describe en el presente documento.
El descodificador de vídeo 30 restablece a continuación el valor de POC de la imagen y descodifica los valores de POC de las imágenes de referencia (164), por ejemplo, de la cabecera de segmento de sector y/o un conjunto de parámetros tal como un PPS o SPS. El descodificador de vídeo 30 forma a continuación la lista de imágenes de referencia (166).
A continuación, el descodificador de vídeo 30 descodifica información de movimiento para un bloque actual (168). La información de movimiento puede incluir, por ejemplo, un identificador de lista de imágenes de referencia y un índice de referencia en la lista de imágenes de referencia. El descodificador de vídeo 30 predice a continuación el bloque actual (170), por ejemplo, usando el modo de interpredicción para calcular un bloque predicho para el bloque actual. Más en particular, el descodificador de vídeo 30 usa el identificador de lista de imágenes de referencia para identificar qué lista de imágenes de referencia debe usar, y el índice de referencia para identificar un índice de referencia en la lista de imágenes de referencia. El descodificador de vídeo 30 descodifica a continuación un vector de movimiento para el bloque actual e identifica un bloque de referencia en la imagen de referencia identificada.
El descodificador de vídeo 30 también puede recibir datos codificados entrópicamente para el bloque actual, tales como datos codificados entrópicamente para coeficientes de un bloque residual correspondiente al bloque actual (172). El descodificador de vídeo 30 puede descodificar entrópicamente los datos codificados entrópicamente para reproducir los coeficientes del bloque residual (174). El descodificador de vídeo 30 puede explorar inversamente a continuación los coeficientes reproducidos (176), para crear un bloque de coeficientes de transformada cuantificados. Es decir, usando la exploración inversa, el descodificador de vídeo 30 convierte un vector unidimensional en una matriz bidimensional. A continuación, el descodificador de vídeo 30 puede cuantificar y transformar inversamente los coeficientes para generar un bloque residual (178). El descodificador de vídeo 30 puede finalmente descodificar el bloque actual combinando el bloque predicho y el bloque residual (180).
De esta manera, el procedimiento de la FIG. 7 representa un ejemplo de procedimiento que incluye descodificar, mediante un codificador de vídeo, al menos una parte de una imagen de una capa descodificable independientemente de un flujo de bits multicapa, y descodificar, mediante el codificador de vídeo, datos que indican un valor de número de orden de imagen (POC) restablecido para un valor de bits menos significativos (LSB) de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen que es igual a cero.
Se ha de reconocer que dependiendo del ejemplo, determinados actos o actividades de cualquiera de las técnicas descritas en el presente documento se pueden realizar en una secuencia diferente, se pueden añadir, fusionar u omitir por completo (por ejemplo, no todos los actos o las actividades descritas son necesarias para la puesta en práctica de las técnicas). Además, en determinados ejemplos, los actos o las actividades se pueden realizar de forma concurrente, por ejemplo, a través de procesamiento multihilo, procesamiento por interrupciones o múltiples procesadores, en lugar de secuencialmente.
En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en, o transmitir a través de, un medio legible por ordenador como una o más instrucciones o código, y ejecutar mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como unos medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilita la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador en general pueden corresponder a (1) medios de almacenamiento tangibles legibles por ordenador que no son transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser medios disponibles cualesquiera a los que se puede acceder mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se puede usar para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se denomina apropiadamente medio legible por ordenador. Por ejemplo, si se transmiten instrucciones desde un sitio web, un servidor o cualquier otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o unas tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que en su lugar están dirigidos a medios de almacenamiento tangibles no transitorios. Los discos, como se usan en el presente documento, incluyen discos compactos (CD), discos láser, discos ópticos, discos versátiles digitales (DVD), discos flexibles y discos Blu-ray, de los cuales los discos flexibles normalmente reproducen datos magnéticamente, mientras que los demás discos reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también se deben incluir dentro del alcance de los medios legibles por ordenador.
Las instrucciones se pueden ejecutar mediante uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programabas in situ (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o software dedicados, configurados para codificar y descodificar, o incorporada en un códec combinado. Asimismo, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyen un aparato de teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En la presente divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En su lugar, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar mediante un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.
Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (13)

REIVINDICACIONES
1. Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:
codificar al menos una parte de una imagen de una capa no base descodificable independientemente de un flujo de bits multicapa;
codificar, en una cabecera de sector de la imagen, un valor de bit menos significativo, LSB, de número de orden de imagen, POC, que indica el valor de los bits menos significativos del POC de la imagen;
codificar, en una cabecera de sector, un elemento de sintaxis que indica un índice de restablecimiento de valor de POC, que indica un restablecimiento de valor de número de orden de imagen, POC, para el valor de bits menos significativos, LSB, de POC, de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen igual a cero; y
codificar, cuando la imagen tiene un valor de LSB de POC que no es igual a cero, el elemento de sintaxis de índice de restablecimiento de valor de POC en un valor distinto de 2, en el que el valor 2 especifica que tanto los bits más significativos, MSB, como los LSB del valor de POC para la imagen actual se pueden restablecer.
2. El procedimiento de la reivindicación 1, que comprende además codificar el elemento de sintaxis que indica un índice de restablecimiento de valor de POC si un tipo de imagen de la imagen es una de una imagen de actualización instantánea de descodificador (IDR), una imagen de acceso de enlace roto (BLA), o una imagen de acceso aleatorio limpio (CRA).
3. El procedimiento de la reivindicación 1, en el que codificar el uno o más elementos de sintaxis comprende codificar un índice de restablecimiento de valor de POC y, cuando la imagen tiene un valor de LSB de POC que es igual a cero, codificar el índice de restablecimiento de valor de POC comprende codificar un elemento de sintaxis poc_reset_idc que es igual a 3.
4. El procedimiento de la reivindicación 3, que comprende además codificar un elemento de sintaxis poc_lsb_val de una cabecera de sector de la imagen que indica que el valor de LSB de POC es igual a cero.
5. El procedimiento de la reivindicación 1, que comprende además codificar uno o más elementos de sintaxis que indican que la capa no base descodificable independientemente es una capa descodificable independientemente.
6. El procedimiento de la reivindicación 1, en el que el flujo de bits multicapa cumple con una de una ampliación de codificación de vídeo multivista de una norma de codificación de vídeo de HEVC (MV-HEVC) o una ampliación de codificación de vídeo escalable (SVC) de una norma de codificación de vídeo de HEVC (SHVC), y en el que una capa no base descodificable independientemente cumple con la norma de codificación de vídeo de HEVC.
7. El procedimiento de la reivindicación 1, en el que codificar comprende codificar, y en el que codificar la al menos una parte de la imagen comprende:
generar datos residuales para la al menos una parte que indica una diferencia entre unos datos predictivos y la parte; aplicar una transformada a los datos residuales para generar coeficientes de transformada; y
generar un flujo de bits que incluye una indicación de los coeficientes de transformada.
8. El procedimiento de la reivindicación 1, en el que codificar comprende descodificar, y en el que descodificar la al menos una parte de la imagen comprende:
obtener coeficientes de transformada para la al menos una parte de un flujo de bits codificado;
aplicar una transformada inversa a los coeficientes de transformada para generar datos residuales; y determinar la al menos una parte de la imagen en base a los datos residuales generados.
9. Un dispositivo para codificar datos de vídeo, comprendiendo el dispositivo:
medios para codificar al menos una parte de una imagen de una capa no base descodificable independientemente de un flujo de bits multicapa;
medios para codificar, en una cabecera de sector de la imagen, un valor de bit menos significativo, LSB, de número de orden de imagen, POC, que indica el valor de los bits menos significativos del POC de la imagen;
medios para codificar, en una cabecera de sector, un elemento de sintaxis que indica un índice de restablecimiento de valor de POC, que indica un restablecimiento de valor de número de orden de imagen, POC, para el valor de bits menos significativos, LSB, de POC de la imagen solo cuando la imagen tiene un valor de LSB de POC para la imagen igual a cero;
medios para codificar, cuando la imagen tiene un valor de LSB de POC que no es igual a cero, el elemento de sintaxis de índice de restablecimiento de valor de POC en un valor distinto de 2, en el que el valor 2 especifica que tanto los bits más significativos, MSB, como los LSB del valor de POC para la imagen actual se pueden restablecer.
10. El dispositivo de la reivindicación 9, en el que el flujo de bits multicapa cumple con una de una ampliación de codificación de vídeo multivista de una norma de codificación de vídeo de HEVC (MV-HEVC) o una ampliación de codificación de vídeo escalable (SVC) de una norma de codificación de vídeo de HEVC (SHVC), y en el que una capa no base descodificable independientemente cumple con la norma de codificación de vídeo de HEVC.
11. El dispositivo de la reivindicación 9, en el que el dispositivo comprende un codificador de vídeo, y en el que el codificador de vídeo está configurado además para:
calcular datos residuales para la al menos una parte que indican una diferencia entre unos datos predictivos y la parte; aplicar una transformada a los datos residuales para generar coeficientes de transformada; y
generar un flujo de bits que incluye una indicación de los coeficientes de transformada.
12. El dispositivo de la reivindicación 9, en el que el dispositivo comprende un descodificador de vídeo, y en el que el descodificador de vídeo está configurado además para:
obtener coeficientes de transformada para la al menos una parte de un flujo de bits codificado;
aplicar una transformada inversa a los coeficientes de transformada para generar datos residuales; y
determinar la al menos una parte de la imagen en base a los datos residuales generados.
13. Un medio de almacenamiento no transitorio legible por ordenador que tiene almacenadas en el mismo instrucciones que, cuando se ejecutan, hacen que un procesador de un dispositivo para codificar datos de vídeo emprenda el procedimiento de cualquiera de las reivindicaciones 1 a 8.
ES15712776T 2014-03-17 2015-03-17 Diseño de valor de Poc para codificación de vídeo multicapa Active ES2877048T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461954551P 2014-03-17 2014-03-17
US201461973104P 2014-03-31 2014-03-31
US14/659,213 US9866869B2 (en) 2014-03-17 2015-03-16 POC value design for multi-layer video coding
PCT/US2015/021065 WO2015142921A1 (en) 2014-03-17 2015-03-17 Poc value design for multi-layer video coding

Publications (1)

Publication Number Publication Date
ES2877048T3 true ES2877048T3 (es) 2021-11-16

Family

ID=54070439

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15712776T Active ES2877048T3 (es) 2014-03-17 2015-03-17 Diseño de valor de Poc para codificación de vídeo multicapa

Country Status (8)

Country Link
US (1) US9866869B2 (es)
EP (1) EP3120559B1 (es)
JP (1) JP2017514354A (es)
KR (1) KR102434872B1 (es)
CN (1) CN106105217B (es)
ES (1) ES2877048T3 (es)
MX (1) MX358178B (es)
WO (1) WO2015142921A1 (es)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102362841B1 (ko) 2011-09-22 2022-02-14 엘지전자 주식회사 영상 정보 시그널링 방법 및 장치와 이를 이용한 디코딩 방법 및 장치
EP2839659A1 (en) * 2012-04-16 2015-02-25 Telefonaktiebolaget LM Ericsson (PUBL) Encoder, decoder and methods thereof for video encoding and decoding
CN107743232B (zh) * 2012-06-25 2020-12-04 日本电气株式会社 视频解码设备和视频解码方法
EP3445054A1 (en) * 2016-04-12 2019-02-20 Sony Corporation Transmission device, transmission method, reception device and reception method
US20190141320A1 (en) * 2017-11-07 2019-05-09 Qualcomm Incorporated Enhanced reference picture management in video coding
CN109194445B (zh) * 2018-09-13 2020-11-27 中国电子科技集团公司第二十八研究所 一种适用于短码长喷泉码的编译码优化方法
US11457242B2 (en) * 2019-06-24 2022-09-27 Qualcomm Incorporated Gradual random access (GRA) signalling in video coding
CN115002467B (zh) * 2019-09-24 2023-04-04 华为技术有限公司 用于分辨率改变的解码图像缓冲区操作的方法和设备
BR122022009671A2 (pt) 2019-10-07 2022-07-12 Huawei Technologies Co., Ltd. Prevenção de sinalização redundante em fluxos de bits de vídeo de múltiplas camadas
US11356698B2 (en) * 2019-12-30 2022-06-07 Tencent America LLC Method for parameter set reference constraints in coded video stream
US11563980B2 (en) * 2020-04-02 2023-01-24 Qualcomm Incorporated General constraint information syntax in video coding
CN116134819A (zh) * 2020-06-15 2023-05-16 Lg电子株式会社 基于poc msb信息进行图像编码/解码的方法和设备及存储比特流的记录介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7586924B2 (en) * 2004-02-27 2009-09-08 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream
US20120230409A1 (en) * 2011-03-07 2012-09-13 Qualcomm Incorporated Decoded picture buffer management
US10674171B2 (en) * 2011-09-27 2020-06-02 Telefonaktiebolaget Lm Ericsson (Publ) Decoders and methods thereof for managing pictures in video decoding process
US20130089152A1 (en) * 2011-10-05 2013-04-11 Qualcomm Incorporated Signaling picture identification for video coding
EP3057325A4 (en) * 2013-10-08 2017-05-10 Sharp Kabushiki Kaisha Image decoding device, image coding device, and coded data
US20160269740A1 (en) * 2013-10-12 2016-09-15 Samsung Electronics Co., Ltd. Method and apparatus for encoding multilayer video, and method and apparatus for decoding multilayer video
WO2015082763A1 (en) * 2013-12-02 2015-06-11 Nokia Technologies Oy Video encoding and decoding

Also Published As

Publication number Publication date
US20150264366A1 (en) 2015-09-17
MX358178B (es) 2018-08-08
JP2017514354A (ja) 2017-06-01
KR20160135761A (ko) 2016-11-28
US9866869B2 (en) 2018-01-09
MX2016011450A (es) 2016-12-02
WO2015142921A1 (en) 2015-09-24
BR112016021476A2 (pt) 2017-08-15
KR102434872B1 (ko) 2022-08-19
CN106105217B (zh) 2019-05-31
CN106105217A (zh) 2016-11-09
EP3120559A1 (en) 2017-01-25
BR112016021476A8 (pt) 2021-07-06
EP3120559B1 (en) 2021-05-26

Similar Documents

Publication Publication Date Title
ES2877048T3 (es) Diseño de valor de Poc para codificación de vídeo multicapa
US10178397B2 (en) Generic use of HEVC SEI messages for multi-layer codecs
JP6534681B2 (ja) マルチレイヤビデオコーデックのための特定のhevc seiメッセージの使用
US9565452B2 (en) Error resilient decoding unit association
ES2744235T3 (es) Actualizaciones de conjuntos de parámetros en la codificación de vídeo
KR102127549B1 (ko) 멀티-계층 비디오 코딩에서의 상이한 코덱의 기본 계층의 지원
TWI558179B (zh) 對視訊寫碼發信長期參考圖像
EP3162066B1 (en) Recovery point sei message in multi-layer video codecs
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
BR112015006839B1 (pt) Sinalizando identificadores de camada para pontos de operação em codificação de vídeo
ES2856099T3 (es) Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo
BR112016015893B1 (pt) Método de decodificação de informações de vídeo, aparelho configurado para decodificar informações de vídeo e memória legível por computador
JP6312838B2 (ja) マルチレイヤコード化においてレイヤ間参照ピクチャセット(RPS)をコード化し、ビットストリーム終端(EoB)ネットワークアクセスレイヤ(NAL)単位をコード化するための方法
JP2017507539A (ja) マルチレイヤコーディングにおいて回復点補足エンハンスメント情報(sei)メッセージと領域リフレッシュ情報seiメッセージとをコーディングするための方法
JP6434044B2 (ja) ビデオ情報のスケーラブルコード化のための機器及び方法
US20190141320A1 (en) Enhanced reference picture management in video coding
JP6661540B2 (ja) マルチレイヤコード化において参照ピクチャセット(rps)をコード化するための方法
BR112016021476B1 (pt) Método e dispositivo para codificar dados de vídeo e memória legível por computador