ES2707890T3 - Codificación de vídeo de múltiples visualizaciones - Google Patents

Codificación de vídeo de múltiples visualizaciones Download PDF

Info

Publication number
ES2707890T3
ES2707890T3 ES12741460T ES12741460T ES2707890T3 ES 2707890 T3 ES2707890 T3 ES 2707890T3 ES 12741460 T ES12741460 T ES 12741460T ES 12741460 T ES12741460 T ES 12741460T ES 2707890 T3 ES2707890 T3 ES 2707890T3
Authority
ES
Spain
Prior art keywords
display
video
decoding
components
nal
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
ES12741460T
Other languages
English (en)
Inventor
Ying Chen
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2707890T3 publication Critical patent/ES2707890T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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

Landscapes

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

Abstract

Un procedimiento para descodificación de datos de vídeo, comprendiendo el procedimiento: obtener, a partir de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para cada componente de visualización de una pluralidad de componentes de visualización de datos de vídeo codificados, en el que cada componente de visualización de la pluralidad de componentes de visualización corresponde a una ubicación temporal común, y en el que cada unidad NAL de la una o más unidades NAL encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos e incluye como parte de una cabecera de unidad NAL un índice de orden de visualización que describe un orden de descodificación de los componentes de visualización respectivos y no incluye un identificador de visualización; obtener información, a partir de un nivel de secuencia del flujo de bits codificado y separado de la una o más unidades NAL, indicando las relaciones entre los identificadores de visualización para visualizaciones asociadas con los componentes de visualización y el índice de orden de visualización que describe el orden de descodificación de los componentes de visualización, en el que la información indicativa de la relación comprende una tabla de asignación que asigna identificadores de visualización a valores de índice de orden de visualización; y descodificar los datos de vídeo codificados de la pluralidad de componentes de visualización en el orden de descodificación basándose en la información obtenida y determinando el identificador de visualización de una o más unidades NAL utilizando la tabla de asignación.

Description

DESCRIPCIÓN
Codificación de vídeo de múltiples visualizaciones
SECTOR TÉCNICO
[0001] Esta divulgación se refiere a la codificación de vídeo.
ANTECEDENTES
[0002] Las capacidades del vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión digital directa, 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 celulares o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, codificación de vídeo avanzada (AVC), el estándar de codificación de vídeo de alta eficiencia (HEVC) actualmente en desarrollo y las extensiones de dichos estándares. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital con más eficiencia implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo llevan a cabo la predicción espacial (intraimagen) y/o la predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (por ejemplo, una imagen o una parte de una imagen) puede ser dividida en bloques de vídeo, que también pueden ser denominados bloques arbolados, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intra-codificado (I) de una imagen se codifican utilizando predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de vídeo en un fragmento inter-codificado (P o B) de una imagen pueden usar la predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen o la predicción temporal con respecto a muestras de referencia en otras imágenes de referencia.
[0004] 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 a codificar y el bloque predictivo. Un bloque inter-codificado 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 intra-codificado se codifica de acuerdo con un modo de intra-codificación y a los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio de píxeles a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que a continuación se pueden cuantificar. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una formación bidimensional, pueden examinarse con el fin de generar un vector unidimensional de coeficientes de transformada, y puede aplicarse codificación por entropía para lograr aún más compresión.
[0005] El documento WO 2008/088497, divulga para codificar información de orden de codificación de vídeo en una sintaxis de alto nivel, tal como un conjunto de parámetros de secuencia, un conjunto de parámetros de imagen, un conjunto de parámetros de visualización, un mensaje de información de mejora suplementaria, una cabecera de fragmento y una cabecera de unidad de capa de abstracción de red. Se proponen las mismas opciones para codificar el identificador de visualización.
[0006] El documento "Tecnología de la información - Codificación genérica de imágenes en movimiento e información de audio asociada: Sistemas; H.222.0 (2006) Enmienda 4 (12/09) ", ESTÁNDAR ITU-T, UNIÓN INTERNACIONAL DE TELECOMUNICACIONES, GINEBRA", divulga la señalización del orden de codificación de la visualización en el conjunto de parámetros de secuencia y la señalización del identificador de visualización en la cabecera de unidad NAL.
SUMARIO
[0007] En general, esta divulgación describe técnicas para codificar datos de vídeo. Por ejemplo, esta divulgación describe técnicas para realizar la codificación de vídeo de múltiples visualizaciones (MVC), y para una extensión de MVC para el estándar de codificación de vídeo HEVC actualmente en desarrollo. Es decir, MVC es una técnica de codificación de vídeo para encapsular múltiples visualizaciones de datos de vídeo. Cada visualización puede corresponder a una perspectiva, o ángulo, diferente, donde fueron capturados los datos de vídeo correspondientes de una escena común. Las técnicas de esta divulgación en general se relacionan con la formación de unidades de capa de abstracción de red (NAL) MVC, conjuntos de parámetros MVC y similares.
[0008] En un ejemplo, los aspectos de esta divulgación están dirigidos a un procedimiento de descodificación de datos de vídeo que incluye obtener, a partir de un flujo de bits codificados, una o más unidades de capa de abstracción de red (NAL) para cada componente de visualización de una pluralidad de componentes de visualización de datos de vídeo codificados, en el que cada componente de visualización de la pluralidad de componentes de visualización corresponde a una ubicación temporal común, y en el que cada unidad NAL de una o más unidades NAL encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos e incluye información que describe un orden de descodificación de los componentes de visualización respectivos; obtener información, a partir del flujo de bits codificado y separada de las unidades NAL, indicando las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización; y descodificar los datos de vídeo codificados de la pluralidad de componentes de visualización en el orden de descodificación basándose en la información obtenida.
[0009] En otro ejemplo, los aspectos de esta divulgación se refieren a un aparato para la descodificación de datos de vídeo que incluye uno o más procesadores configurados para obtener, a partir de un flujo de bits codificados 1010-809EP01, una o más unidades de capa de abstracción de red (NAL) para cada componente de visualización de una pluralidad de componentes de visualización de datos de vídeo codificados, en el que cada componente de visualización de la pluralidad de componentes de visualización corresponde a una ubicación temporal común, y en el que cada unidad NAL de una o más unidades NAL encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos e incluye información que describe un orden de descodificación de los componentes de visualización respectivos; obtener información, a partir del flujo de bits codificado y separada de las unidades NAL, indicando las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización; y descodificar los datos de vídeo codificados de la pluralidad de componentes de visualización en el orden de descodificación basándose en la información obtenida.
[0010] En otro ejemplo, los aspectos de esta divulgación se refieren a un aparato para la descodificación de datos de vídeo que incluye medios para obtener, a partir de un flujo de bits codificados, una o más unidades de capa de abstracción de red (NAL) para cada componente de visualización de una pluralidad de componentes de visualización de datos de vídeo codificados, en el que cada componente de visualización de la pluralidad de componentes de visualización corresponde a una ubicación temporal común, y en el que cada unidad NAL de una o más unidades NAL encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos e incluye información que describe un orden de descodificación de los componentes de visualización respectivos; medios para obtener información, a partir del flujo de bits codificado y separada de las unidades NAL, indicando las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización; y medios para descodificar los datos de vídeo codificados de la pluralidad de componentes de visualización en el orden de descodificación basándose en la información obtenida.
[0011] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o más procesadores obtengan, a partir de un flujo de bits codificados, una o más unidades de capa de abstracción de red (NAL) para cada componente de visualización de una pluralidad de componentes de visualización de datos de vídeo codificados, en el que cada componente de visualización de la pluralidad de componentes de visualización corresponde a una ubicación temporal común, y en el que cada unidad NAL de una o más unidades NAL encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos e incluye información que describe un orden de descodificación de los componentes de visualización respectivos; obtener información, a partir del flujo de bits codificado y separada de las unidades NAL, indicando las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización; y descodificar los datos de vídeo codificados de la pluralidad de componentes de visualización en el orden de descodificación basándose en la información obtenida.
[0012] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un procedimiento de codificación de datos de vídeo que incluye codificar datos de vídeo para una pluralidad de componentes de visualización para las respectivas visualizaciones de datos de vídeo, en el que cada uno de la pluralidad de componentes de visualización corresponde a una ubicación temporal común; formar, como parte de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para los datos de vídeo codificados de cada uno de los componentes de visualización, de tal manera que las unidades NAL incluyan información que describe un orden de descodificación de los datos de vídeo de los componentes de visualización respectivos y encapsular al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos; y proporcionar información en el flujo de bits codificado, separada de las unidades NAL, que indica las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización.
[0013] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un aparato para codificar datos de vídeo, comprendiendo el aparato uno o más procesadores configurados para codificar datos de vídeo para una pluralidad de componentes de visualización para las respectivas visualizaciones de los datos de vídeo, en el que cada uno de la pluralidad de componentes de visualización corresponde a una ubicación temporal común; formar, como parte de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para los datos de vídeo codificados de cada uno de los componentes de visualización, de manera que las unidades NAL incluyen información que describe un orden de descodificación de los datos de vídeo de los componentes de visualización respectivos y encapsular al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos; y proporcionar información en el flujo de bits codificado, separada de las unidades NAL, indicando las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización.
[0014] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un aparato para codificar datos de vídeo que incluye medios para codificar datos de vídeo para una pluralidad de componentes de visualización para las respectivas visualizaciones de los datos de vídeo, en el que cada uno de la pluralidad de componentes de visualización corresponde a una ubicación temporal común; medios para formar, como parte de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para los datos de vídeo codificados de cada uno de los componentes de la visualización, de tal manera que las unidades NAL incluyen información que describe un orden de descodificación de los datos de vídeo de los respectivos componentes de visualización y encapsular al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos; y medios para proporcionar información en el flujo de bits codificado, separada de las unidades NAL, que indica las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización.
[0015] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o más procesadores codifique datos de vídeo para una pluralidad de componentes de visualización para las respectivas visualizaciones de datos de vídeo, en el que cada uno de la pluralidad de componentes de visualización corresponde a una ubicación temporal común; forme, como parte de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para los datos de vídeo codificados de cada uno de los componentes de visualización, de tal manera que las unidades NAL incluyan información que describe un orden de descodificación de los datos de vídeo de los componentes de visualización respectivos y encapsule al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos; y proporcione información en el flujo de bits codificado, separada de las unidades NAL, que indica las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización.
[0016] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un procedimiento de descodificación de datos de vídeo que incluye obtener, a partir de un flujo de bits codificado y para cualquier componente de visualización de una primera visualización, la información de visualización de referencia que indica una o más visualizaciones de referencia para la predicción de componentes de visualización de la primera visualización; incluir, para descodificar un primer componente de visualización en una unidad de acceso y en la primera visualización, uno o más candidatos de referencia en una lista de imágenes de referencia, en el que el uno o más candidatos de referencia comprenden componentes de visualización en la unidad de acceso y en las visualizaciones de referencia indicadas por la información de visualización de referencia, en el que el número de candidatos de referencia es igual al número de visualizaciones de referencia; y descodificar el primer componente de visualización basándose en uno o más candidatos de referencia en la lista de imágenes de referencia.
[0017] En otro ejemplo, los aspectos de esta divulgación se refieren a un aparato para descodificar datos de vídeo, comprendiendo el aparato uno o más procesadores configurados para obtener, a partir de un flujo de bits codificado y para cualquier componente de visualización de una primera visualización, información de visualización de referencia que indica una o más visualizaciones de referencia para predecir componentes de visualización de la primera visualización; incluir, para descodificar un primer componente de visualización en una unidad de acceso y en la primera visualización, uno o más candidatos de referencia en una lista de imágenes de referencia, en el que el uno o más candidatos de referencia comprenden componentes de visualización en la unidad de acceso y en las visualizaciones de referencia indicadas por la información de visualización de referencia, en el que el número de candidatos de referencia es igual al número de visualizaciones de referencia; y descodificar el primer componente de visualización basándose en uno o más candidatos de referencia en la lista de imágenes de referencia.
[0018] En otro ejemplo, los aspectos de esta divulgación se refieren a un aparato para descodificar datos de vídeo, comprendiendo el aparato medios para obtener, a partir de un flujo de bits codificado y para cualquier componente de visualización de una primera visualización, la información de visualización de referencia que indica uno o más de referencia visualizaciones para predecir componentes de visualización de la primera visualización; medios para incluir, para descodificar un primer componente de visualización en una unidad de acceso y en la primera visualización, uno o más candidatos de referencia en una lista de imágenes de referencia, en el que el uno o más candidatos de referencia comprenden componentes de visualización en la unidad de acceso y en las visualizaciones de referencia indicadas por la información de visualización de referencia, en el que el número de candidatos de referencia es igual al número de visualizaciones de referencia; y medios para descodificar el primer componente de visualización basándose en uno o más candidatos de referencia en la lista de imágenes de referencia.
[0019] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o más procesadores obtengan, a partir de un flujo de bits codificado y para cualquier componente de visualización de una primera visualización, información de visualización de referencia que indica una o más visualizaciones de referencia para predecir los componentes de visualización de la primera visualización; incluir, para descodificar un primer componente de visualización en una unidad de acceso y en la primera visualización, uno o más candidatos de referencia en una lista de imágenes de referencia, en el que el uno o más candidatos de referencia comprenden componentes de visualización en la unidad de acceso y en las visualizaciones de referencia indicadas por la información de visualización de referencia, en el que el número de candidatos de referencia es igual al número de visualizaciones de referencia; y descodificar el primer componente de visualización basándose en uno o más candidatos de referencia en la lista de imágenes de referencia.
[0020] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un procedimiento de codificación de datos de vídeo que comprende determinar, para cualquier componente de visualización de una primera visualización, información de visualización de referencia que indica una o más visualizaciones de referencia para la predicción de componentes de visualización de la primera visualización; incluir, para codificar un primer componente de visualización en una unidad de acceso y en la primera visualización, uno o más candidatos de referencia en una lista de imágenes de referencia, en el que el uno o más candidatos de referencia comprenden componentes de visualización en la unidad de acceso y en las visualizaciones de referencia indicadas por la información de visualización de referencia, en el que el número de candidatos de referencia es igual al número de visualizaciones de referencia; codificar el primer componente de visualización basado en uno o más candidatos de referencia en la lista de imágenes de referencia; y proporcionar al primer componente de visualización codificado la información de visualización de referencia determinada en un flujo de bits codificado.
[0021] En otro ejemplo, los aspectos de esta divulgación se refieren a un aparato para codificar datos de vídeo que comprende uno o más procesadores configurados para determinar, para cualquier componente de visualización de una primera visualización, información de visualización de referencia que indica una o más visualizaciones de referencia para la predicción de componentes de visualización de la primera visualización; incluir, para codificar un primer componente de visualización en una unidad de acceso y en la primera visualización, uno o más candidatos de referencia en una lista de imágenes de referencia, en el que el uno o más candidatos de referencia comprenden componentes de visualización en la unidad de acceso y en las visualizaciones de referencia indicadas por la información de visualización de referencia, en el que el número de candidatos de referencia es igual al número de visualizaciones de referencia; codificar el primer componente de visualización basándose en uno o más candidatos de referencia en la lista de imágenes de referencia; y proporcionar al primer componente de visualización codificado la información de visualización de referencia determinada en un flujo de bits codificado.
[0022] En otro ejemplo, los aspectos de esta divulgación se refieren a un aparato para codificar datos de vídeo, comprendiendo el aparato medios para determinar, para cualquier componente de visualización de una primera visualización, información de visualización de referencia que indica una o más visualizaciones de referencia para la predicción de componentes de visualización de la primera visualización; medios para incluir, para codificar un primer componente de visualización en una unidad de acceso y en la primera visualización, uno o más candidatos de referencia en una lista de imágenes de referencia, en el que el uno o más candidatos de referencia comprenden componentes de visualización en la unidad de acceso y en las visualizaciones de referencia indicadas por la información de visualización de referencia, en el que el número de candidatos de referencia es igual al número de visualizaciones de referencia; medios para codificar el primer componente de visualización basado en uno o más candidatos de referencia en la lista de imágenes de referencia; y medios para proporcionar al primer componente de visualización codificado la información de visualización de referencia determinada en un flujo de bits codificado.
[0023] En otro ejemplo, los aspectos de esta divulgación están dirigidos a un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o más procesadores determinen, para cualquier componente de visualización de una primera visualización, la información de visualización de referencia que indica una o más visualizaciones de referencia para predecir los componentes de visualización de la primera visualización; incluir, para codificar un primer componente de visualización en una unidad de acceso y en la primera visualización, uno o más candidatos de referencia en una lista de imágenes de referencia, en el que el uno o más candidatos de referencia comprenden componentes de visualización en la unidad de acceso y en las visualizaciones de referencia indicadas por la información de visualización de referencia, en el que el número de candidatos de referencia es igual al número de visualizaciones de referencia; codificar el primer componente de visualización basándose en uno o más candidatos de referencia en la lista de imágenes de referencia; y proporcionar al primer componente de visualización codificado la información de visualización de referencia determinada en un flujo de bits codificado.
[0024] Los detalles de uno o más aspectos de la divulgación se exponen en los dibujos adjuntos y la descripción siguiente. Otras características, objetivos y ventajas de las técnicas descritas en esta divulgación resultarán evidentes a partir de la descripción y los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0025]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 4 es un diagrama conceptual que ilustra un patrón de predicción de la codificación de vídeo de múltiples visualizaciones (MVC) de ejemplo.
La FIG. 5A es un diagrama conceptual que ilustra un ejemplo de una estructura de flujo de bits que puede usarse en una implementación de una o más de las técnicas de esta divulgación.
La FIG. 5B es un diagrama conceptual que ilustra un ejemplo de una visualización que puede incluirse en la estructura de flujo de bits de la FIG. 5A.
La FIG. 5C es un diagrama conceptual que ilustra un ejemplo de una unidad de capa de abstracción de red (NAL) que puede incluirse en la estructura de flujo de bits de la FIG. 5A.
La FIG. 5D es un diagrama conceptual que ilustra otro ejemplo de una unidad NAL que puede incluirse en la estructura de flujo de bits de la FIG. 5A.
La FIG. 6 es un diagrama de flujo que ilustra un procedimiento de ejemplo de codificación de un flujo de bits de múltiples visualizaciones.
La FIG. 7 es un diagrama de flujo que ilustra un procedimiento de ejemplo de descodificación de un flujo de bits de múltiples visualizaciones.
La FIG. 8 es un diagrama de flujo que ilustra un procedimiento de ejemplo de codificación de un flujo de bits de múltiples visualizaciones.
La FIG. 9 es un diagrama de flujo que ilustra un procedimiento de ejemplo de descodificación de un flujo de bits de múltiples visualizaciones.
DESCRIPCIÓN DETALLADA
[0026] De acuerdo con ciertos sistemas de codificación de vídeo, la estimación de movimiento y la compensación de movimiento se pueden utilizar para reducir la redundancia temporal en una secuencia de vídeo, con el fin de lograr la compresión de datos. En este caso, puede generarse un vector de movimiento que identifica un bloque predictivo de datos de vídeo, por ejemplo, un bloque de otra imagen o fragmento de vídeo, que se puede utilizar para predecir los valores del bloque de vídeo actual que se está codificando. Los valores del bloque de vídeo predictivo se restan de los valores del bloque de vídeo actual para producir un bloque de datos residuales. La información de movimiento (por ejemplo, un vector de movimiento, índices de vectores de movimiento, direcciones de predicción u otra información) se comunica desde un codificador de vídeo a un descodificador de vídeo, junto con los datos residuales. El descodificador puede localizar el mismo bloque predictivo (basándose en el vector de movimiento) y reconstruir el bloque de vídeo codificado mediante la combinación de los datos residuales con los datos del bloque predictivo.
[0027] La codificación de vídeo de múltiples visualizaciones (MVC) es un estándar de codificación de vídeo para encapsular múltiples visualizaciones de datos de vídeo. En general, cada visualización se corresponde con una perspectiva, o ángulo, diferente, en el que fueron capturados los datos de vídeo correspondientes de una escena común. Las visualizaciones codificadas pueden usarse para la visualización tridimensional (3D) de datos de vídeo. Por ejemplo, dos visualizaciones (por ejemplo, las visualizaciones de los ojos izquierdo y derecho de un observador humano) pueden exhibirse simultáneamente, o casi simultáneamente, utilizando diferentes polarizaciones de luz, y un espectador puede usar gafas polarizadas pasivas de tal manera que cada uno de los ojos del espectador reciba una respectiva de las visualizaciones. De forma alternativa, el espectador puede llevar gafas activas que obturan cada ojo de forma independiente, y una pantalla puede alternar rápidamente entre las imágenes de cada ojo de forma sincronizada con las gafas.
[0028] En MVC, una imagen particular de una visualización particular se conoce como un componente de visualización. Es decir, un componente de visualización de una visualización corresponde a una instancia temporal particular de la visualización. El vídeo de múltiples visualizaciones puede contener una cantidad relativamente grande de dependencias estadísticas entre visualizaciones, ya que todas las cámaras utilizadas para capturar los datos de múltiples visualizaciones capturan la misma escena desde diferentes puntos de visualización. Dichas dependencias pueden explotarse para la predicción combinada temporal y/o entre visualizaciones, donde las imágenes no solo se predicen a partir de imágenes contiguas en el tiempo, sino también a partir de imágenes correspondientes de otras visualizaciones. Es decir, puede realizarse la predicción entre visualizaciones entre imágenes en la misma unidad de acceso (es decir, en la misma instancia de tiempo).
[0029] La predicción entre visualizaciones en general se realiza como si el componente de visualización de otra visualización fuera una referencia de predicción inter. En lugar de utilizar vectores de "movimiento" para la predicción, la predicción entre visualizaciones utiliza vectores de "desplazamiento", que son conceptualmente similares a los vectores de movimiento pero que describen el desplazamiento en lugar del movimiento. Las posibles referencias entre visualizaciones se señalan en la extensión de MVC del conjunto de parámetros de secuencia (SPS) y se pueden modificar mediante el proceso de construcción de la lista de imágenes de referencia, que habilita el ordenamiento flexible de las referencias de predicción inter o de predicción entre visualizaciones.
[0030] Los datos de vídeo, incluidos los datos de vídeo de MVC, pueden organizarse en unidades de capa de abstracción de red (NAL), que proporcionan una representación de vídeo adecuada para la red destinada a aplicaciones tales como la videotelefonía, el almacenamiento, la radiodifusión o la transmisión continua. Por ejemplo, un codificador de vídeo comúnmente codifica cada imagen de datos de vídeo como uno o más fragmentos descodificables independientemente. Los fragmentos se pueden empaquetar en unidades NAL para su transmisión a través de la red. Las unidades NAL que incluyen datos de la capa de codificación de vídeo (VCL) pueden incluir datos para una imagen o datos para un fragmento de una imagen. Por ejemplo, las unidades NAL pueden incluir información de sintaxis como valores de patrón de bloque codificado (CBP), tipo de bloque, modo de codificación, tamaño máximo de bloque para una unidad codificada (como una trama, fragmento, bloque o secuencia) u otra información.
[0031] Cada unidad NAL incluye una cabecera que identifica un tipo de datos almacenados en la unidad NAL. Un ejemplo de cabecera de unidad MVC NAL puede incluir elementos sintácticos que indiquen un identificador de visualización para la visualización a la que pertenece la unidad NAL, si la unidad NAL pertenece a una llamada imagen de anclaje que se puede usar como punto de acceso aleatorio (como referencia por otros componentes de visualización), si la unidad NAL se usa para la predicción entre visualizaciones para unidades NAL en otras visualizaciones, y una variedad de otra información. Como se describe en el presente documento, una imagen de anclaje en general puede corresponder a una imagen de acceso aleatorio, y dichos términos pueden usarse indistintamente. Es decir, "acceso aleatorio" en general se refiere al acto de iniciar un proceso de descodificación para un flujo de bits en un punto diferente al comienzo del flujo. Una imagen de acceso aleatorio en general se relaciona con una imagen que contiene solo fragmentos intracodificados (fragmentos I). Las imágenes codificadas que siguen a una imagen de acceso aleatorio tanto en orden de descodificación como en orden de salida no se predicen a partir de imágenes que preceden a la imagen de acceso aleatorio, ya sea en orden de descodificación o en orden de salida.
[0032] En general, una unidad de acceso puede incluir todos los componentes de la visualización de un instante de tiempo particular. Un componente de visualización particular incluye todas las unidades NAL de una visualización particular en una instancia de tiempo particular. Una unidad MVC NAL puede contener una cabecera de unidad NAL de un byte (incluido el tipo de unidad NAL) y puede incluir además una extensión de cabecera de unidad MVC NAL.
[0033] Mientras que H.264/AVC incluye soporte MVC, la extensión MVC actual a H.264/AVC puede contener varias ineficiencias con respecto a otros estándares de codificación de vídeo. Además, como se analiza con mayor detalle a continuación, una importación directa de MVC desde H.264/AVC a otros estándares de codificación, como el próximo estándar HEVC, puede no ser factible. Las técnicas de esta divulgación en general se relacionan con la formación de unidades NAL relacionadas con MVC, conjuntos de parámetros relacionados con MVC y similares. Ciertas técnicas de esta divulgación pueden habilitar la codificación MVC eficiente para el próximo estándar HEVC.
[0034] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 10 de ejemplo que puede utilizar técnicas para predicción de vectores de movimiento en codificación de múltiples visualizaciones. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados, a ser descodificados en un momento posterior por un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de vídeo al dispositivo de destino 14 mediante un medio legible por ordenador 16. El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de entre una amplia gama de dispositivos, incluidos ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tableta, descodificadores, teléfonos tales como los denominados teléfonos «inteligentes», los denominados paneles «inteligentes», televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmisión continua de vídeo o similares. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden estar equipados para la comunicación inalámbrica.
[0035] El dispositivo de destino 14 puede recibir los datos de vídeo codificados a descodificar mediante el medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo capaz de desplazar los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicación que habilita el dispositivo de origen 12 para transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real.
[0036] Los datos de vídeo codificados se pueden modular de acuerdo con un estándar de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación, inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El medio de comunicación puede incluir routers, 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.
[0037] En algunos ejemplos, pueden emitirse datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados del dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera entre una diversidad de medios de almacenamiento de datos, de acceso distribuido o local, tales como una unidad de disco duro, discos Bluray, discos DVD, discos CD-ROM, memoria flash, memoria volátil o no volátil u otros medios adecuados cualesquiera de almacenamiento digital para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar los datos de vídeo codificados, generados por el dispositivo de origen 12.
[0038] El dispositivo de destino 14 puede acceder a datos de vídeo almacenados desde el dispositivo de almacenamiento mediante transmisión continua o descarga. El servidor de ficheros puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectado en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión 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 datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0039] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas pueden aplicarse a la codificación de vídeo como soporte de cualquiera entre una diversidad de aplicaciones de multimedios, tales como radiodifusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo por Internet, tales como la transmisión continua adaptativa dinámica por HTTP (DASH), el vídeo digital que se codifica en un medio de almacenamiento de datos, la descodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para prestar soporte a la transmisión de vídeo unidireccional o bidireccional, para prestar soporte a 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.
[0040] 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. De acuerdo con esta divulgación, el codificador de vídeo 20 del dispositivo de origen 12 puede estar configurado para aplicar las técnicas de predicción de vectores de movimiento en la codificación de múltiples visualizaciones. 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 un origen de vídeo externo 18, tal como una cámara externa. Del mismo modo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[0041] El sistema ilustrado 10 de la FIG. 1 es solo un ejemplo. Las técnicas para la predicción de vectores de movimiento en codificación de múltiples visualizaciones pueden realizarse mediante cualquier dispositivo de codificación y/o descodificación de vídeo digital. Aunque, en general, las técnicas de esta divulgación se realizan mediante un dispositivo de codificación de vídeo, las técnicas también pueden realizarse mediante un codificador/descodificador de vídeo, denominado típicamente «CÓDEC». Además, las técnicas de esta divulgación también pueden realizarse mediante un preprocesador de vídeo. 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 codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera esencialmente simétrica, de modo que cada uno de los dispositivos 12, 14 incluya componentes de codificación y de descodificación de vídeo. Por lo tanto, el sistema 10 puede prestar soporte a la transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para la transmisión continua de vídeo, la radiodifusión de vídeo, la difusión de vídeo o la videotelefonía.
[0042] La fuente de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo grabado previamente y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. De forma alternativa adicional, la fuente 18 de vídeo puede generar datos basados en gráficos por ordenador como el 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 18 de vídeo es una videocámara, el dispositivo 12 de origen y el dispositivo 14 de destino pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y pueden aplicarse 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 información de vídeo codificada puede entonces ser emitida por la interfaz de salida 22 hacia un medio legible por ordenador 16.
[0043] 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 transitorio), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Bluray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, mediante transmisión por red. De manera similar, un dispositivo informático de una utilidad de producción de un medio, tal como una utilidad de grabación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, puede entenderse que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en varios ejemplos.
[0044] La interfaz de entrada 28 del dispositivo de destino 14 recibe información desde el medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información sintáctica definida por el codificador de vídeo 20, que también usa el descodificador de vídeo 30, que incluye elementos sintácticos que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, GOP. El dispositivo de visualización 32 muestra los datos de vídeo descodificados a un usuario, y puede comprender cualquiera entre una diversidad 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.
[0045] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse, cada uno, como cualquiera entre una amplia variedad de circuitos de codificadores o descodificadores adecuados, según corresponda, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), formaciones de puertas programables en el terreno (FPGA), circuitos de lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/descodificador (códec) de vídeo combinado. Un dispositivo que incluye el codificador de vídeo 20 y/o el 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 celular.
[0046] Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 se pueden integrar, cada uno, en un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro hardware y software, para ocuparse de la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexador ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0047] En el ejemplo mostrado en la FIG. 1, el sistema 10 también incluye la red de entrega de contenido/servidor 34 que tiene un router 36. En algunos ejemplos, el dispositivo de origen 12 puede comunicarse con el servidor/la red de suministro de contenido 34 mediante una diversidad de medios de transmisión o de almacenamiento, inalámbricos y/o cableados, como se ha descrito anteriormente. Además, aunque se muestra por separado en el ejemplo de la FIG. 1, en algunos ejemplos, el dispositivo de origen 12 y la red de entrega de servidor/contenido 34 comprenden el mismo dispositivo. El servidor/la red de suministro de contenido 34 puede almacenar una o más versiones de datos de vídeo codificados (desde el codificador de vídeo 20 del dispositivo de origen 12), y puede hacer que dichos datos de vídeo codificados estén disponibles para el acceso por parte del dispositivo de destino 14 y el descodificador de vídeo 30. En algunos ejemplos, el router 36 puede ser responsable de proporcionar datos de vídeo codificados al dispositivo de destino 14 en un formato solicitado.
[0048] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con un estándar de codificación de vídeo, tal como el estándar de codificación de vídeo de alta eficacia (HEVC), actualmente en fase de desarrollo, y pueden ajustarse al modelo de prueba de la HEVC (HM). De manera alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otros estándares de propiedad o industriales, tales como el estándar ITU-T H.264, de manera alternativa llamada MPEG-4, parte 10, codificación avanzada de vídeo (AVC), o extensiones de dichos estándares. Sin embargo, las técnicas de esta divulgación no están limitadas a ningún estándar de codificación particular. Entre otros ejemplos de estándares de codificación de vídeo se incluyen MPEG-2 e ITU-T H.263.
[0049] El estándar ITU-T H.264/MPEG-4 (AVC) fue formulada por el Grupo de Expertos en Codificación de vídeo (VCEG) de ITU-T, junto al Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC, como el producto de una asociación colectiva conocida como el Equipo de vídeo Conjunto (JVT). En algunos aspectos, las técnicas descritas en esta divulgación pueden aplicarse a dispositivos que se ajustan en general al estándar H.264. El estándar H.264 se describe en la recomendación H.264 de ITU-T, Codificación avanzada de vídeo para servicios audiovisuales genéricos, por el Grupo de estudio de la ITU-T, con fecha de marzo de 2005, que puede mencionarse en el presente documento como el estándar H.264 o la especificación H.264, o el estándar o especificación H.264/AVC. El Equipo mixto de vídeo (JVT) continúa trabajando en extensiones del estándar H.264/MPEG-4 AVC.
[0050] El equipo JCT-VC está trabajando en el desarrollo del estándar HEVC. La iniciativa de normalización HEVC se basa en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a los dispositivos existentes de acuerdo con, por ejemplo, el estándar ITU-T H.264/AVC. Por ejemplo, mientras que el estándar H.264 proporciona nueve modos de codificación mediante predicción intra, el HM puede proporcionar hasta treinta y tres modos de codificación mediante predicción intra.
[0051] En general, el modelo de funcionamiento del HM describe que una imagen de vídeo puede dividirse en una secuencia de bloques arbolados o unidades de codificación de máximo tamaño (LCU), que incluyen muestras tanto de luma como de croma. Los datos sintácticos dentro de un flujo de bits pueden definir un tamaño para la LCU, que es la máxima unidad de codificación en lo que respecta al número de píxeles. Un fragmento incluye un número de bloques de árbol consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada bloque de árbol puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuaternario. En general, una estructura de datos de árbol cuádruple incluye un nodo por CU, con un nodo raíz correspondiente al bloque arbolado. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU.
[0052] Cada nodo de la estructura de datos de árbol cuádruple puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo en el árbol cuádruple puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida en varias sub-CU. Los elementos sintácticos para una CU pueden definirse de manera recursiva y pueden depender de si la CU está dividida en varias sub-CU. Si una CU no está dividida adicionalmente, se denomina CU hoja. En esta divulgación, cuatro sub-CU de una CU hoja también se denominarán CU hojas incluso aunque no haya ninguna división explícita de la CU hoja original. Por ejemplo, si una CU con un tamaño de 16x16 no se divide adicionalmente, las cuatro sub-CU de tamaño 8x8 también se denominarán CU hojas aunque la CU de tamaño 16x16 no se haya dividido nunca.
[0053] Una CU tiene un propósito similar a un macrobloque del estándar H.264, excepto que una CU no tiene una distinción de tamaño. Por ejemplo, un bloque arbolado puede dividirse en cuatro nodos secundarios (también denominados sub-CU) y cada nodo secundario puede a su vez ser un nodo principal y dividirse en otros cuatro nodos secundarios. Un nodo secundario final, no dividido, denominado nodo hoja del árbol cuádruple, comprende un nodo de codificación, también denominado CU hoja. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces en que puede dividirse un bloque arbolado, denominado profundidad de CU máxima, y también pueden definir un tamaño mínimo de los nodos de codificación. Por consiguiente, un flujo de bits también puede definir una unidad de codificación de tamaño mínimo (SCU). Esta divulgación utiliza el término "bloque" para referirse a cualquiera entre una CU, PU o TU, en el contexto de la HEVC, o a estructuras de datos similares en el contexto de otros estándares (por ejemplo, macrobloques y sub-bloques de los mismos en el estándar H.264/AVC).
[0054] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de partición pueden diferir dependiendo de si la CU está codificada en modo de salto o directo, codificada en modo de predicción intra o codificada en modo de predicción inter. Las PU pueden dividirse para tener forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la partición de la CU en una o más TU de acuerdo con un árbol cuaternario. Una TU puede tener forma cuadrada o no cuadrada (por ejemplo, rectangular).
[0055] El estándar HEVC soporta transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU típicamente se basa en el tamaño de las PU de una CU dada, definida para una LCU dividida, aunque puede que no sea siempre así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas mediante una estructura de árbol cuaternario conocida como «árbol cuaternario residual» (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencia de píxel asociados a las TU pueden transformarse para generar coeficientes de transformada, que pueden cuantificarse.
[0056] Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa una zona espacial correspondiente a la totalidad, o a una parte, de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. Por ejemplo, cuando la PU está codificada en modo intra, pueden incluirse datos para la PU en un árbol cuádruple residual (RQT), que pueden incluir datos que describen un modo de predicción intra para una TU correspondiente a la PU. Como otro ejemplo, cuando la PU está codificada en modo inter, la PU puede incluir datos que definen uno o más vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, lista 0, lista 1 o lista C) para el vector de movimiento.
[0057] Una CU hoja que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Las unidades de transformada pueden especificarse usando un RQT (también denominado estructura de árbol cuádruple de TU), como se ha expuesto anteriormente. Por ejemplo, un indicador de división puede indicar si una CU hoja está dividida en cuatro unidades de transformada. A continuación, cada unidad de transformada puede dividirse adicionalmente en sub-TU adicionales. Cuando una TU no se divide adicionalmente, puede denominarse una TU hoja. En general, en lo que respecta a la intra-codificación, todas las TU hojas que pertenecen a una CU hoja comparten el mismo modo de predicción intra. Es decir, el mismo modo de predicción intra se aplica en general para calcular valores predichos para todas las TU de una CU hoja. En lo que respecta a la intra-codificación, un codificador de vídeo 20 puede calcular un valor residual para cada Tu hoja usando el modo de predicción intra, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no está necesariamente limitada al tamaño de una PU. De este modo, las TU pueden ser mayores o menores que una PU. En lo que respecta a la intra-codificación, una PU puede estar co-situada con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU hoja puede corresponder al tamaño de la CU hoja correspondiente.
[0058] Además, las TU de las CU hojas también pueden asociarse a las respectivas estructuras de datos de árbol cuádruple, denominadas árboles cuádruples residuales (RQT). Es decir, una CU hoja puede incluir un árbol cuádruple que indica cómo la CU hoja está dividida en las TU. El nodo raíz de un árbol cuádruple de TU corresponde en general a una CU hoja, mientras que el nodo raíz de un árbol cuádruple de CU corresponde en general a un bloque arbolado (o LCU). Las TU del RQT que no están divididas se denominan TU hojas. En general, esta divulgación usa los términos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique lo contrario.
[0059] Una secuencia de vídeo incluye típicamente una serie de imágenes. Según lo descrito en el presente documento, los términos "imagen" y "trama" pueden usarse de forma intercambiable. Es decir, la imagen que contiene datos de vídeo puede denominarse trama de vídeo o simplemente "trama". Un grupo de imágenes (GOP) comprende, en general, una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, en una cabecera de una o más de las imágenes, o en otras ubicaciones, que describen un número de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. El codificador de vídeo 20 actúa típicamente sobre bloques de vídeo dentro de fragmentos de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con un estándar de codificación especificada.
[0060] Como ejemplo, el HM presta soporte a la predicción en diversos tamaños de PU. Si se supone que el tamaño de una CU particular es 2Nx2N, el HM soporta predicción intra en tamaños de PU de 2Nx2N o NxN y predicción inter en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también soporta la división asimétrica para predicción inter en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la partición asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida en un 25 % y un 75 %. La parte de la CU correspondiente a la partición del 25 % está indicada por una «n» seguida de una indicación de «arriba», «abajo», «izquierda» o «derecha». Así pues, por ejemplo, «2NxnU» se refiere a una CU 2Nx2N que está dividida horizontalmente y tiene una PU 2Nx0,5N encima y una PU 2Nx1,5N debajo.
[0061] En esta divulgación, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque de NxN tiene, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles de un bloque se pueden disponer en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal y en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0062] Tras la codificación de predicción intra o predicción inter mediante las PU de una CU, el codificador de vídeo 20 puede calcular los datos residuales para las TU de la CU. Las PU pueden comprender datos sintácticos que describen un procedimiento o modo de generación de datos de píxeles predictivos en el dominio espacial (también denominado el dominio de píxeles) y las TU pueden comprender coeficientes en el dominio de transformada, tras la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada entera, una transformada de ondículas o una transformada conceptualmente similar, a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y los valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU incluyendo los datos residuales para la CU y, a continuación, transformar las TU para generar coeficientes de transformada para la CU.
[0063] Tras cualquier transformada para generar coeficientes de transformada, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformada. La cuantificación se refiere, en general, a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse hacia abajo hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
[0064] Después de la cuantificación, el codificador de vídeo puede recorrer los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. El recorrido puede estar diseñado para colocar los coeficientes de energía más alta (y por lo tanto de menor frecuencia) en la parte frontal de la matriz y para colocar los coeficientes de energía más baja (y por lo tanto de mayor frecuencia) en la parte posterior de la matriz. En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de escaneo predefinido para examinar los coeficientes de transformada cuantificados para producir un vector en serie que se pueda someter a codificación por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un escaneo adaptativo. Después de recorrer los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede realizar la codificación por entropía del vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptable al contexto (CAVLC), la codificación aritmética binaria adaptable al contexto (CABAC), la codificación aritmética binaria adaptable al contexto basada en la sintaxis (SBAC), la codificación por entropía por división de intervalos de probabilidad (PIPE) o con otra metodología de codificación por entropía. El codificador de vídeo 20 también puede realizar la codificación por entropía de los elementos sintácticos asociados a los datos de vídeo codificados, para su uso por el descodificador de vídeo 30 en la descodificación de los datos de vídeo.
[0065] Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo contextual a un símbolo que se va a transmitir. El contexto se puede referir, por ejemplo, a si los valores contiguos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo que se vaya a transmitir. Las contraseñas en la VLC se pueden construir de modo que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta forma, el uso de la VLC puede lograr un ahorro en bits con respecto, por ejemplo, al uso de contraseña de igual longitud para cada símbolo que se vaya a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
[0066] Además, el codificador de vídeo 20 puede enviar datos sintácticos, tales como datos sintácticos basados en bloques, datos sintácticos basados en imágenes y datos sintácticos basados en GOP, al descodificador de vídeo 30, por ejemplo, en una cabecera de imagen, una cabecera de bloque, una cabecera de fragmento o una cabecera de GOP. Los datos sintácticos del GOP pueden describir un cierto número de imágenes en el GOP respectivo, y los datos sintácticos de imagen pueden indicar un modo de codificación/predicción usada para codificar la imagen correspondiente.
[0067] En algunos ejemplos, el codificador de vídeo 20 puede generar y el descodificador de vídeo 30 puede recibir ciertos conjuntos de parámetros, que pueden ser usados al descodificar datos de vídeo. Por ejemplo, los conjuntos de parámetros pueden contener información de cabecera a nivel de secuencia (en conjuntos de parámetros de secuencia (SPS)) e información de cabecera a nivel de imagen, que cambia con poca frecuencia (en conjuntos de parámetros de imagen (PPS)). Con los conjuntos de parámetros (por ejemplo, PPS y SPS), la información que cambia infrecuentemente no tiene por qué repetirse para cada secuencia (por ejemplo, secuencia de imágenes) o imagen; por lo tanto, la eficacia de codificación puede mejorarse. Además, el uso de conjuntos de parámetros puede permitir la transmisión fuera de banda de la información de cabecera importante, evitando la necesidad de transmisiones redundantes, para la capacidad de recuperación tras errores. En los ejemplos de transmisión fuera de banda, las unidades NAL de conjuntos de parámetros se pueden transmitir por un canal diferente al de otras unidades NAL, tales como las unidades NAL de información de mejora suplementaria (SEI).
[0068] Las unidades NAL de SEI (denominadas mensajes SEI) pueden contener información que no es necesaria para la descodificación de las muestras de imágenes codificadas a partir de las unidades VCL NAL, pero pueden ayudar en los procesos relacionados con la descodificación, la visualización, la capacidad de recuperación tras errores y otros fines. Los mensajes de SEI pueden estar contenidos en las unidades NAL no de VCL. Los mensajes de SEI pueden estar incluidos en la parte normativa de algunas especificaciones estándar y, por lo tanto, no siempre son obligatorios para la implementación de un descodificador compatible con otros estándares de . Los mensajes de SEI pueden ser mensajes de SEI a nivel de secuencia o mensajes de SEI a nivel de imagen. Parte de la información a nivel de secuencia puede estar contenida en los mensajes de SEI, tales como los mensajes de SEI de información de ajustabilidad a escala en el ejemplo de la SVC y los mensajes de SEI de información de ajustabilidad a escala de visualizaciones en la MVC.
[0069] En algunos ejemplos, el codificador de vídeo 20 puede codificar un flujo de bits de MVC que se ajusta a la extensión MVC a H.264/AVC. Del mismo modo, el descodificador de vídeo 30 puede descodificar un flujo de bits de MVC que se ajusta a la extensión MVC a H.264/AVC. El último borrador conjunto de MVC se describe en JVT-AD007, "Revisión del borrador de los editores de ITU-T Rec. H.264 | ISO/IEC 14496-10 Codificación de vídeo avanzada", 30.a reunión de JVT, Ginebra, Suiza, enero-febrero de 2008, disponible públicamente en http://wftp3.itu.int/av-arch/jvtsite/2009_01_Geneva/JVT -AD007.
[0070] En la extensión escalable de H.264/AVC, se pueden añadir elementos sintácticos en la extensión de cabecera de unidad NAL para extender la cabecera de unidad NAL de un byte a cuatro bytes para describir las características de una unidad VCL NAL en múltiples dimensiones. Por lo tanto, una unidad VCL NAL en HEVC puede incluir una cabecera de unidad NAL más larga que la cabecera de unidad NAL en el estándar H.264/AVC. La extensión MVC a H.264/AVC se puede denominar en esta divulgación "MVC/AVC".
[0071] Una unidad MVC/AVC NAL puede contener una cabecera de unidad NAL de un byte que incluye el tipo de unidad NAL, así como una extensión de cabecera de unidad MVC/AVC NAL. Como ejemplo, la extensión de la cabecera de unidad MVC/AVC NAL puede incluir los elementos sintácticos en la siguiente Tabla 1:
TABLA 1 - SINTAXIS DE EXTENSIÓN DE CABECERA DE UNIDAD NAL
Figure imgf000013_0001
[0072] En la Tabla 1 anterior, el elemento de indicador idr puede indicar si la unidad NAL pertenece a una actualización de descodificación instantánea (IDR) o una imagen view-IDR (V-IDR) que puede ser utilizada como un punto de acceso aleatorio GOP cerrado. Por ejemplo, una imagen de IDR y todas las imágenes que suceden a la imagen IDR en orden de visualización y orden de flujo de bits, se pueden descodificar correctamente sin la descodificación de imágenes anteriores, ya sea en orden de flujo de bits o en orden de visualización. El elemento priority_id puede usarse con un proceso de adaptación de flujo de bits que varía el flujo de bits de acuerdo con las condiciones de red cambiantes y/o las capacidades del descodificador de vídeo 30 y/o el dispositivo de visualización 32 (por ejemplo, como UN proceso de adaptación de un solo paso). El elemento view_id se puede usar para indicar el identificador de visualización para la visualización a la que pertenece la unidad NAL, que se puede usar dentro de un descodificador MVC, por ejemplo, para predicción entre visualizaciones y fuera de un descodificador, por ejemplo, para renderización. En algunos casos, el view_id puede ser igual a una identificación de cámara predefinida, y puede ser relativamente grande. El elemento temporal_id se puede usar para indicar el nivel temporal de la unidad NAL actual, que puede corresponder a una velocidad de trama particular.
[0073] El elemento anchor_pic_flag puede utilizarse para indicar si la unidad NAL pertenece a una imagen de anclaje que se puede usar como punto de acceso aleatorio GOP abierto. Por ejemplo, las imágenes de anclaje y todas las imágenes que suceden a la imagen de anclaje en orden de visualización se pueden descodificar correctamente sin descodificar las imágenes anteriores en el orden de descodificación (es decir, el orden de flujo de bits), y por lo tanto pueden utilizarse como puntos de acceso aleatorio. Las imágenes de anclaje y las imágenes sin anclaje pueden tener diferentes dependencias de visualización, ambas de las cuales pueden señalarse en un SPS. Es decir, como se describe en el presente documento a, una dependencia de visualización puede referirse en general a una visualización de la que depende una visualización que se está codificando actualmente. En otras palabras, se pueden establecer dependencias de visualización a partir de las cuales se puede predecir una visualización que se está codificando actualmente. De acuerdo con algunos ejemplos, una dependencia de visualización se puede señalar en la extensión SPS MVC. En tales ejemplos, todas las predicciones entre visualizaciones pueden realizarse dentro del alcance especificado por la extensión SPS MVC. El elemento inter_view_flag se puede usar para indicar si la unidad NAL se usa para la predicción entre visualizaciones para las unidades NAL en otras visualizaciones.
[0074] Para transmitir la información de cabecera de unidad NAL de 4 bytes anterior para la visualización base de un flujo de bits de MVC, una unidad NAL de prefijo puede definirse en MVC. En el contexto de MVC, la unidad de acceso de visualización base puede incluir las unidades VCL NAL de una instancia temporal actual de una visualización particular, así como una unidad NAL de prefijo para la unidad de acceso de visualización base, que puede contener solo la cabecera de unidad NAL. Si no se requiere la unidad NAL de prefijo para descodificar (por ejemplo, para descodificar una visualización única), un descodificador puede ignorar y/o descartar la unidad NAL de prefijo.
[0075] Con respecto a una extensión SPS MVC/AVC, el MVC SPS puede indicar visualizaciones que pueden ser utilizadas para los propósitos de predicción entre visualizaciones. Por ejemplo, las posibles referencias entre visualizaciones pueden señalarse en la extensión SPS MVC/AVC y pueden modificarse mediante el proceso de construcción de la lista de imágenes de referencia, lo cual habilita el ordenamiento flexible de las referencias de predicción inter o de predicción entre visualizaciones. Un ejemplo de MVC/AVC SPS se expone en la Tabla 2 a continuación:
TABLA 2 - EJEMPLO DE MVC SPS
Figure imgf000014_0001
[0076] De acuerdo con algunos ejemplos, la dependencia de visualización puede señalarse en la extensión SPS MVC. Todas las predicciones entre visualizaciones pueden realizarse dentro del alcance especificado por la extensión SPS MVC. Es decir, el SPS puede establecer a qué visualizaciones se puede hacer referencia para fines de predicción mediante una visualización que se está codificando actualmente. En la Tabla 2 anterior, el elemento num_anchor_refs_l0[ i ] puede especificar el número de componentes de visualización para la predicción entre visualizaciones en la lista de imágenes de referencia inicializada para la Lista 0 (por ejemplo, RefPicListO). Además, el elemento anchor_ref_l0[ i ][ j ] puede especificar el view_id del j-ésimo componente de visualización para la predicción entre visualizaciones en la RefPicList0 inicializada. El elemento num_anchor_refs_l1[ i ] puede especificar el número de componentes de visualización para la predicción entre visualizaciones en la lista de imágenes de referencia inicializada para la lista uno (por ejemplo, RefPicList1). El elemento anchor_ref_l1[ i ][ j ] puede especificar el view_id del j-ésimo componente de visualización para la predicción entre visualizaciones en la RefPicList1 inicializada. El elemento num_non_anchor_refs_l0[ i ] puede especificar el número de componentes de visualización para la predicción entre visualizaciones en la RefPicList0 inicializada. El elemento non_anchor_ref_l0[ i ][ j ] puede especificar el view_id del j-ésimo componente de visualización para la predicción entre visualizaciones en la RefPicList0 inicializada. El elemento num_non_anchor_refs_l1[ i ] puede especificar el número de componentes de visualización para la predicción entre visualizaciones en la RefPicList1 inicializada. El elemento non_anchor_ref_l1[ i ][ j ] puede especificar el view_id del j-ésimo componente de visualización para la predicción entre visualizaciones en la RefPicList inicializada.
[0077] La lista de imágenes de referencia inicializada, o "inicial", puede ser la misma o diferente de una lista de imágenes de referencia final usada para los propósitos de predicción entre visualizaciones de componentes de visualización. Es decir, ciertos candidatos de referencia (es decir, las imágenes de referencia que pueden usarse para la predicción entre visualizaciones) pueden eliminarse de una lista de imágenes de referencia inicial (por ejemplo, imágenes redundantes). Además, como se describe con mayor detalle a continuación, los candidatos de referencia pueden reordenarse a partir de la lista de imágenes de referencia inicial para formar la lista de imágenes de referencia final.
[0078] En este ejemplo, de acuerdo con MVC/AVC, las dependencias de visualización para imágenes de anclaje e imágenes sin anclaje se mantienen y se señalan por separado. Es decir, un codificador de vídeo puede determinar un total de cuatro listas de imágenes de referencia (por ejemplo, Lista 0, imágenes sin anclaje; Lista 1, imágenes sin anclaje; Lista 0, imágenes de anclaje; Lista 1, imágenes de anclaje). Además, como se muestra en la Tabla 2 anterior, se requiere una señalización separada para indicar una dependencia de visualización al descodificador de vídeo 30. Es decir, el SPS debe incluir señalización separada de Lista 0 y Lista 1 para anchor_refs y non_anchor_refs.
[0079] Por otra parte, de acuerdo con la Tabla 2, la dependencia entre visualizaciones para componentes de visualización sin anclaje es un subconjunto de la de componentes de visualización de anclaje. Es decir, por ejemplo, un componente de visualización de una visualización de anclaje puede predecirse desde más de otra visualización, como la visualización 3 y 4. Sin embargo, una visualización sin anclaje solo se puede predecir a partir de las imágenes de la visualización 3 (un subconjunto de la visualización de anclaje). De esta manera, las dependencias de visualización para los componentes de visualización de anclaje y sin anclaje pueden mantenerse por separado.
[0080] Además, en la Tabla 2, el num_level_values_signalled puede especificar el número de valores de nivel señalados para la secuencia de vídeo codificada. El elemento level_idc[ i ] puede especificar el i-ésimo valor de nivel señalado para la secuencia de vídeo codificada. El elemento num_applicable_ops_minus1[ i ] más 1 puede especificar el número de puntos de funcionamiento a los que se aplica el nivel indicado por level_idc1[ i ]. El elemento apply_op_temporal_id[ i ][ j ] puede especificar el temporal_id del j-ésimo punto de funcionamiento al que se aplica el nivel indicado por level_idc[ i ]. El elemento apply_op_num_target_views_minus1[ i ][ j ] puede especificar el número de visualizaciones de salida de destino para el j-ésimo punto de funcionamiento al que se aplica el nivel indicado por level_idc[ i ]. El elemento applicable_op_target_view_id[ i ][ j ][ k ] puede especificar la k-ésima visualización de salida de destino para el j-ésimo punto de funcionamiento al que se aplica el nivel indicado por level_idc[ i ]. El elemento applicable_op_num_views_minus1 [ i ][ j ] puede especificar el número de visualizaciones, incluidas las visualizaciones que dependen de las visualizaciones de salida de destino pero que no pertenecen a las visualizaciones de salida de destino, en el j-ésimo punto de funcionamiento al que se aplica el nivel indicado por level_idc[ i ].
[0081] Por consiguiente, en la extensión SPS MVC, para cada visualización, se señala el número de visualizaciones que se pueden utilizar para formar la lista de imágenes de referencia 0 y la lista de imágenes de referencia 1. Además, la relación de predicción para una imagen de anclaje, tal como se señala en la extensión SPS MVC, puede ser diferente a la relación de predicción para la imagen sin anclaje (señalada en la extensión SPS MVC) de la misma visualización.
[0082] Como se describe en mayor detalle a continuación, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden disponer de forma flexible referencias predicción temporal y de visualización en la construcción de listas de imágenes de referencia. Permitir la disposición flexible proporciona no solo posible ganancia de eficiencia de codificación sino también capacidad de recuperación tras errores, ya que la sección de imágenes de referencia y los mecanismos de imagen redundantes se pueden extender a la dimensión de visualización. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden, en un ejemplo, construir una lista de imágenes de referencia de acuerdo con los siguientes pasos:
1) Inicializar la lista de imágenes de referencia para imágenes de referencia temporales (es decir, dentro de las visualizaciones), de manera que no se consideren imágenes de referencia de otras visualizaciones.
2) Agregar las imágenes de referencia entre visualizaciones al final de la lista en el orden en que aparecen las imágenes en la extensión MVC SPS.
3) Aplicar un proceso de reordenamiento de la lista de imágenes de referencia (RPLR) para imágenes de referencia tanto dentro de las visualizaciones como entre visualizaciones. Las imágenes de referencia entre visualizaciones se pueden identificar en los comandos de RPLR por sus valores de índice, según lo especificado en la extensión MVC SPS.
[0083] Mientras que H.264/AVC incluye soporte MVC, la extensión MVC actual a H.264/AVC puede contener varias ineficiencias con respecto a otros estándares de codificación de vídeo. Además, como se analiza con mayor detalle a continuación, una importación directa de MVC desde H.264/AVC a otros estándares de codificación, como el próximo estándar HEVC, puede no ser factible. Las técnicas de esta divulgación en general se relacionan con la formación de unidades NAL relacionadas con MVC, conjuntos de parámetros relacionados con MVC y similares. Si bien las técnicas de esta divulgación no están limitadas a ningún estándar de codificación particular, ciertas técnicas de esta divulgación pueden permitir una codificación MVC eficiente para el próximo estándar HEVC.
[0084] Como ejemplo, el estándar H.264/MVC soporta hasta 1024 visualizaciones y utiliza un identificador de visualización (view_id) en una cabecera de unidad NAL para identificar la visualización a la que pertenece una unidad NAL. Debido a que el ID de visualización tiene una longitud de 10 bits, más de 1000 visualizaciones diferentes pueden ser identificadas de manera única por los valores del ID de visualización. Sin embargo, muchas aplicaciones de vídeo tridimensionales (3D) requieren considerablemente menos visualizaciones. Además, es posible que se requieran menos visualizaciones para las aplicaciones de vídeo 3D que utilizan la síntesis de visualizaciones para generar más visualizaciones (que no requieren codificación). De acuerdo con la extensión MVC/AVC, la cabecera de unidad NAL incluye un ID de visualización de 10 bits que siempre se proporciona. El ID de visualización puede aumentar sustancialmente el número de bits para la cabecera de unidad NAL, que ocupa una parte relativamente grande del flujo de bits.
[0085] De acuerdo con aspectos de esta divulgación, un índice de orden de visualización ( "view_order_index" o "view_idx") puede señalarse como parte de una cabecera de unidad NAL. Es decir, el codificador de vídeo 20 puede codificar y transmitir, y el descodificador de vídeo 30 puede recibir y descodificar, un índice de orden de visualización como parte de una cabecera de unidad NAL. A efectos de comparación, el índice de orden de visualización puede reemplazar el ID de visualización que se señala en la cabecera de unidad NAL de la extensión MVC a H.264/AVC (en adelante, "MVC/AVC"). Es decir, por ejemplo, view_idx puede reemplazar a view_id en una cabecera de unidad NAL.
[0086] Como se analizó anteriormente, MVC proporciona predicción entre visualizaciones. En consecuencia, las visualizaciones utilizadas como referencia (es decir, las visualizaciones que se utilizan para predecir otras visualizaciones) deben aparecer en el orden de codificación anterior a las visualizaciones de referencia, como se analizó anteriormente. El orden de visualización en general describe el ordenamiento de las visualizaciones en una unidad de acceso, y un índice de orden de visualización identifica una visualización particular en el orden de visualización de la unidad de acceso. Es decir, un índice de orden de visualización describe el orden de descodificación de un componente de visualización correspondiente de una unidad de acceso.
[0087] Un SPS puede proporcionar una relación entre la visualización ids (view_ids) para las visualizaciones y los índices de orden de visualización para las visualizaciones. De acuerdo con los aspectos de esta divulgación, utilizando el índice de orden de visualización y los datos en el SPS, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden reemplazar el view_id de 10 bits de MVC/AVC en la cabecera de unidad NAL por el índice de orden de visualización. Por ejemplo, un índice de orden de visualización puede incluir sustancialmente menos de 10 bits (por ejemplo, 2 bits, 3 bits o similares). Si bien la relación entre el índice de orden de visualización y los identificadores de visualización puede requerir alguna señalización asociada, por ejemplo, en un SPS, las cabeceras de unidad NAL suelen consumir muchos más bits que dicha señalización. Por consiguiente, al reducir el tamaño de las cabeceras de unidad NAL, las técnicas de esta divulgación pueden lograr un ahorro de bits con respecto al esquema MVC/AVC. La información indicativa de la relación puede comprender, por ejemplo, una tabla de asignación que asigna valores de ID de visualización a valores de índice de orden de visualización. De esta manera, el descodificador de vídeo 30 puede simplemente recibir un valor de índice de orden de visualización en una cabecera de unidad NAL y determinar el view_id de la unidad NAL utilizando la tabla de asignación.
[0088] De acuerdo con algunos aspectos de la divulgación, el índice de orden de visualización puede tener una longitud dinámica, dependiendo de si se trata de una visualización base de HEVC, un perfil, o un número de visualizaciones soportadas en el flujo de bits de MVC. Por ejemplo, se puede lograr un ahorro adicional de bits en un flujo de MVC que incluye solo dos visualizaciones (es decir, para vídeo estéreo). En este ejemplo, un índice de orden de visualización puede no ser necesario, ya que el descodificador de vídeo 30 siempre puede descodificar una primera visualización (por ejemplo, la visualización 0) antes de descodificar una segunda visualización (por ejemplo, la visualización 1). Es decir, de acuerdo con algunos aspectos de esta divulgación, se puede asignar una visualización base con un índice de orden de visualización predeterminado de 0, y por lo tanto no es necesario señalarlo.
[0089] Además, una unidad NAL de prefijo, que se incluye inmediatamente antes de unidades NAL de una visualización base (por ejemplo, visualización 0) de una visualización base MVC/AVC, tal vez ya no sea necesaria cuando se utiliza el índice de orden de visualización descrito anteriormente . Por ejemplo, el descodificador de vídeo 30 ya no requiere una unidad NAL de prefijo para una visualización base, porque un índice de orden de visualización siempre puede ser cero para la visualización base, y una posición temporal de la visualización base puede determinarse utilizando el temporaljd (incluido en MCV/AVC). Por consiguiente, el codificador de vídeo 20 puede señalar el temporaljd en una cabecera de unidad NAL, lo cual puede proporcionar toda la información necesaria para que el descodificador de vídeo 30 asocie un componente de visualización particular con una visualización particular y con una ubicación temporal apropiada.
[0090] Con respecto al estándar HEVC emergente, de acuerdo con aspectos de esta divulgación, cuando una unidad NAL de prefijo no se utiliza para la visualización base compatible HEVC, un indicador se puede añadir en la cabecera de unidad NAL de la visualización base HEVC. El indicador solo se puede usar para indicar si el componente de visualización (de esa unidad NAL particular) se puede usar para realizar predicción inter de componentes de visualización de otras visualizaciones del flujo de bits.
[0091] Además, de acuerdo con aspectos de la divulgación, el índice de orden de visualización se puede utilizar con un valor de recuento de orden de imágenes (POC) (por ejemplo, que indica un orden de visualización de las imágenes) o un valor de trama (por ejemplo, que indica un orden de descodificación de las imágenes) para identificar un componente de visualización de un flujo de bits.
[0092] Como otro ejemplo, como se señaló anteriormente, la MVC/AVC SPS puede indicar visualizaciones dependientes (es decir, visualizaciones mencionadas por una o más de otras visualizaciones a los efectos de predicción) por separado para cada visualización. Por ejemplo, un anchor_pic_flag incluido en una cabecera de unidad MVC/AVC NAL puede usarse para indicar si la unidad NAL pertenece a una imagen de anclaje que se puede usar como un punto de acceso aleatorio de GOP abierto. En MVC/AVC, como se describió anteriormente, la dependencia de visualización se señala de manera diferente para las imágenes de anclaje y las imágenes sin anclaje. En consecuencia, para las visualizaciones dependientes señaladas para cada visualización, se consideran cuatro categorías diferentes, cada una de las cuales se diferencia en si una imagen es para una imagen de anclaje o si una imagen es para la Lista 0 o la Lista 1. Tal diseño no solo requiere un número relativamente grande de bits para mantener dichas demarcaciones, sino que también puede complicar la construcción de la lista de imágenes de referencia (por ejemplo, cada categoría debe mantenerse durante la construcción y reordenación de la lista de referencia).
[0093] De acuerdo con aspectos de la presente divulgación, el codificador de vídeo 20 puede señalar (y el descodificador de vídeo 30 puede recibir tal señalización) dependencia de visualización para cada visualización de un flujo de bits de MVC comúnmente para todos los componentes de visualización, independientemente de si los componentes de visualización son para imágenes de anclaje e imágenes sin anclaje. En algunos ejemplos, el SPS incluye una indicación de las dependencias de visualización para los componentes de visualización, en lugar de confiar en la información en una cabecera de unidad NAL. De esta manera, el codificador de vídeo 20 y el descodificador de vídeo 30 no pueden usar el anchor_pic_flag utilizado en la cabecera de unidad MVC/AVC NAL.
[0094] Un componente visualización de una visualización dependiente señalada se puede utilizar como una imagen de referencia, tanto en la lista 0 como en la lista 1. Además, la construcción de la lista de imágenes de referencia y el reordenamiento de la lista de imágenes de referencia para la Lista 0 y la Lista 1 también se pueden basar en la señalización común para imágenes de anclaje e imágenes sin anclaje. En algunos ejemplos, un mensaje de nivel de secuencia, información de mejora suplementaria (SEI) puede usarse para indicar cuando una imagen sin anclaje tiene una dependencia de visualización diferente a una imagen de anclaje.
[0095] Por consiguiente, ciertos aspectos de esta divulgación se refieren a la eliminación de la imagen de anclaje/imagen sin anclaje y la distinción de señalización Lista 0/Lista 1 del MVC/AVC, simplificando así el flujo de bits, así como la construcción de una lista de imágenes de referencia. Por ejemplo, de acuerdo con los aspectos de esta divulgación, el descodificador de vídeo 30 puede recibir, para cualquier componente de visualización una primera visualización, información de visualización de referencia que indica una o más visualizaciones de referencia para predecir componentes de visualización de la primera visualización. Es decir, el descodificador de vídeo 30 puede recibir información de visualización de referencia que indica las dependencias de la visualización para imágenes de anclaje de una visualización y imágenes sin anclaje de una visualización similar. La información de visualización de referencia puede incluir, por ejemplo, un índice de orden de visualización (que indica un orden de descodificación de la visualización en una unidad de acceso) asociado con cada visualización de referencia, como se describió anteriormente.
[0096] Además, al descodificar una imagen en particular (de una unidad de acceso) de una visualización particular, el descodificador de vídeo 30 puede incluir candidatos de referencia (por ejemplo, componentes de visualización a partir de los cuales la imagen en particular se puede predecir) de la misma unidad de acceso como la imagen particular y de las visualizaciones de referencia indicadas por la información de visualización de referencia. En algunos casos, el descodificador de vídeo 30 puede agregar candidatos de referencia a la lista de imágenes de referencia de cada visualización de referencia, de modo que el número de candidatos de referencia sea igual al número de visualizaciones de referencia. Además, el descodificador de vídeo 30 puede agregar candidatos de referencia a la Lista 1, a la Lista 0 o a ambas. A continuación, el descodificador de vídeo 30 puede descodificar la imagen en particular basándose en una de las imágenes de referencia en la lista de imágenes de referencia.
[0097] Como otro ejemplo, como se describe anteriormente, un priority_id está incluido en la cabecera de unidad NAL de un flujo de bits compatible con MVC/AVC. El priority_id proporciona una indicación de la prioridad de una unidad NAL particular. Más particularmente, a cada unidad NAL se le asigna convencionalmente un valor de prioridad. En respuesta a una solicitud de valor de prioridad P, se proporcionarán todas las unidades NAL que tengan valores de prioridad menores o iguales a P (es decir, se descartarán las unidades NAL que tengan valores de priority_id mayores que P). De esta manera, los valores de prioridad más bajos especifican prioridades más altas. Debe entenderse que las unidades NAL de la misma visualización pueden tener diferentes prioridades, por ejemplo, para la escalabilidad temporal dentro de la visualización.
[0098] Esta prioridad puede usarse para los propósitos de la escalabilidad. Por ejemplo, para recuperar datos de vídeo que consumen la menor cantidad de ancho de banda (al coste de formar una representación de calidad relativamente baja), el descodificador de vídeo 30 (o, más en general, el dispositivo de destino 14) puede solicitar que solo se transmitan las unidades NAL de mayor prioridad. de una fuente como el dispositivo fuente 12/codificador de vídeo 20, y la priority_id se puede usar para filtrar las unidades NAL de prioridad más baja. En algunos ejemplos, el router 36 de la red de entrega de contenido/servidor 34 puede usar la priority_id para separar las unidades NAL de prioridad relativamente alta de las unidades NAL de prioridad más baja. Para producir una representación de calidad relativamente más alta (al coste de un mayor consumo de ancho de banda), el descodificador de vídeo 30 puede solicitar que las unidades NAL tengan una prioridad más baja para complementar las unidades NAL de mayor prioridad, por ejemplo, especificando un valor de prioridad más alto.
[0099] De acuerdo con aspectos de esta divulgación, en lugar de señalar la priority_id en la cabecera de unidad NAL, el codificador de vídeo 20 puede proporcionar valores de priority_id en un SPS. Es decir, se puede señalar un priority_id para cada visualización con un cierto nivel temporal en el nivel de secuencia. Además, de acuerdo con los aspectos de esta divulgación, la adaptación de un solo paso puede habilitarse siempre que se conozca el contexto de señalización asociado con la adaptación.
[0100] Como se analizó anteriormente, en algunos ejemplos, el router 36, que puede ser responsable de reenviar el flujo de bits al dispositivo de destino 14, puede utilizar los valores de priority_id SPS para filtrar ciertas visualizaciones. Es decir, el router 36 puede recibir el flujo de bits completo, pero extrae un sub-flujo de bits que incluye unidades NAL que tienen valores de id de prioridad en y por debajo de un valor de prioridad especificado por el dispositivo de destino 14, y reenvía el sub-flujo de bits al dispositivo de destino.
[0101] En otro ejemplo, de acuerdo con MVC/AVC, la adaptación de un solo paso requiere un priority_id de 6 bits en la cabecera de unidad NAL. Por ejemplo, como se indicó anteriormente, un MVC/AVC SPS puede incluir una indicación de nivel de visualización para la escalabilidad de la visualización. Es decir, cada visualización de un flujo de bits de MVC puede codificarse de manera jerárquica y se le puede asignar un nivel de visualización numérica.
[0102] De acuerdo con los aspectos de esta divulgación, un SPS puede incluir la información de nivel de visualización. Por lo tanto, cuando el dispositivo de destino 14 solicita visualizaciones del nivel de visualización V desde el servidor/red de entrega de contenido 34, el dispositivo de destino 14 recibe todas las visualizaciones con niveles de visualización inferiores o iguales a V. De manera similar al uso de los valores de priority_id descritos anteriormente, el router 36 del servidor/la red de entrega de contenido 34 puede usar los niveles de visualización para extraer un sub­ flujo de bits que incluye datos para visualizaciones que tienen niveles de visualización menores o iguales a un nivel de visualización solicitado por el cliente.
[0103] Otros aspectos de esta divulgación se refieren a un proceso de transcodificación ligera para convertir un sub­ flujo de bits de un perfil más alto a un flujo de bits conforme a un perfil más bajo. Dicho proceso de transcodificación puede realizarse, por ejemplo, mediante el servidor/red de entrega de contenido 34. De acuerdo con los aspectos de esta divulgación, la transcodificación se puede realizar en los siguientes pasos:
1) Reasignar los valores de view_idx y view_id en el SPS
2) Cambiar el tamaño de la cabecera de unidad NAL por un view_idx de longitud corta
[0104] Supongamos, por ejemplo, que un flujo de bits de perfil de televisión de punto de visualización libre (FVT) contiene 32 visualizaciones, con view_idx igual al ID de visualización para cada visualización. En este ejemplo, el flujo de bits tiene un sub-flujo de bits que contiene 8 visualizaciones, con view_idx igual a 0, 4, 8, 12, 16, 20, 24, 28. Este sub-flujo de bits contiene además un sub-flujo de bits que contiene dos visualizaciones, con valores de ID de visualización 0 y 4.
[0105] De acuerdo con los aspectos de esta divulgación, los valores de view_idx para el sub-flujo de bits de 8 visualizaciones se pueden reasignar de acuerdo con la Tabla 3 a continuación:
TABLA 3 - REASIGNACIÓN DE VIEW IDX
Figure imgf000019_0002
[0106] De acuerdo con los aspectos de esta divulgación, los valores de view_idx para el sub-flujo de bits de 2 visualizaciones se pueden reasignar de acuerdo con la Tabla 4 a continuación:
TABLA 4 - REASIGNACIÓN DE VIEW IDX
Figure imgf000019_0003
[0107] De acuerdo con los aspectos de esta divulgación, un view_idx en una cabecera de unidad NAL se puede reasignar de acuerdo con la Tabla 5 a continuación:
TABLA 5 - REASIGNACIÓN DE VIEW IDX
Figure imgf000019_0001
[0108] De forma alternativa, el proceso de transcodificación ligero descrito anteriormente puede no requerir la reasignación de view_idx si un flujo de bits conforme permite un espacio en el índice de orden de visualización.
[0109] La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar las técnicas descritas en esta divulgación para codificación de un flujo de bits de múltiples visualizaciones. El codificador de vídeo 20 recibe datos de vídeo a codificar. En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una unidad de selección de modo 40, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54, una unidad de codificación por entropía 56 y una memoria de imágenes de referencia 64. A su vez, la unidad de selección de modo 40 incluye una unidad de estimación de movimiento/disparidad 42, una unidad de compensación de movimiento 44, una unidad de predicción intra 46 y una unidad de partición 48.
[0110] Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también una unidad de cuantificación inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62. También se puede incluir un filtro de eliminación de bloques (no mostrado en la FIG. 2) para filtrar fronteras de bloques y eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará típicamente la salida del sumador 62. También se pueden usar filtros de bucle adicionales (en el bucle o tras el bucle), además del filtro de eliminación de bloques. Dichos filtros no se muestran por razones de brevedad pero, si se desea, pueden filtrar la salida del sumador 50 (tal como un filtro en bucle).
[0111] La unidad de selección de modo 40 puede recibir datos de vídeo en bruto en forma de bloques de una o más visualizaciones. La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, basándose en los resultados de errores, y proporciona el bloque intra-codificado o inter-codificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una imagen de referencia. La unidad de selección de modo 40 proporciona además elementos sintácticos, tales como vectores de movimiento, indicadores de modo intra, información de división y otra información sintáctica de este tipo, a la unidad de codificación por entropía 56.
[0112] La unidad de estimación de movimiento/disparidad 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con fines conceptuales. La estimación del movimiento, realizada por la unidad de estimación de movimiento/disparidad 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento de los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de un bloque de vídeo dentro de una imagen actual, con respecto a un bloque predictivo dentro de una imagen de referencia (u otra unidad codificada), con respecto al bloque actual que está siendo codificado dentro de la imagen actual (u otra unidad codificada).
[0113] Un bloque predictivo es un bloque que se averigua que coincide estrechamente con el bloque que se va a codificar, en lo que respecta a la diferencia de píxeles, lo cual se puede determinar mediante la suma de la diferencia absoluta (SAD), suma de la diferencia de cuadrados (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxel de subentero de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64, que también puede denominarse memoria intermedia de imágenes de referencia. 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/disparidad 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxel completo y las posiciones de píxel fraccionario, y generar un vector de movimiento con una precisión de píxel fraccionario.
[0114] La unidad de estimación de movimiento/disparidad 42 calcula unos vectores de movimiento para una PU de un bloque de vídeo en un fragmento inter-codificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La unidad de estimación/disparidad de movimiento 42 también puede configurarse para realizar la predicción entre visualizaciones, en cuyo caso la unidad de estimación/disparidad de movimiento 42 puede calcular vectores de desplazamiento entre los bloques de una imagen de visualización (por ejemplo, la visualización 0) y los bloques correspondientes de una imagen de visualización de referencia (por ejemplo, la visualización 1). En general, los datos para un vector de movimiento/disparidad pueden incluir una lista de imágenes de referencia, un índice en la lista de imágenes de referencia (ref_idx), un componente horizontal y un componente vertical. La imagen de referencia puede seleccionarse de una primera lista de imágenes de referencia (lista 0), una segunda lista de imágenes de referencia (lista 1), o una lista de imágenes de referencia combinada (lista C), cada una de las cuales identifica una o más imágenes de referencia almacenadas en una memoria de imágenes de referencia 64. Con respecto a la lista combinada, el codificador de vídeo 20 selecciona de forma alternativa las entradas de dos listas (es decir, lista 0 y lista 1) para insertarlas (agregarlas) en la lista combinada. Cuando una entrada ya está en la lista combinada, al comprobar el número POC, el codificador de vídeo 20 tal vez no inserte la entrada nuevamente. Para cada lista (es decir, la Lista 0 o la Lista 1), el codificador de vídeo 20 puede seleccionar las entradas basándose en el orden ascendente del índice de referencia.
[0115] La unidad de estimación de movimiento/disparidad 42 puede generar y enviar un vector de movimiento/disparidad que identifica el bloque predictivo de la imagen de referencia a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44. Es decir, la unidad de estimación de movimiento/disparidad 42 puede generar y enviar datos de vectores de movimiento que identifican la lista de imágenes de referencia que contiene el bloque predictivo, un índice en la lista de imágenes de referencia que identifica la imagen del bloque predictivo y un componente horizontal y vertical para localizar el bloque predictivo dentro de la imagen identificada.
[0116] La compensación de movimiento, llevada a cabo por la unidad de compensación de movimiento 44, puede implicar capturar o generar el bloque predictivo basándose en el vector de movimiento/disparidad determinado por la unidad de estimación de movimiento/disparidad 42. De nuevo, la unidad de estimación de movimiento/disparidad 42 y la unidad de compensación de movimiento 44 pueden integrarse funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad 44 de compensación de movimiento puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
[0117] El sumador 50 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, generando valores de diferencias de píxel, como se expone posteriormente. En general, la unidad de estimación de movimiento/disparidad 42 lleva a cabo la estimación de movimiento con respecto a los componentes de luma, y la unidad de compensación de movimiento 44 utiliza los vectores de movimiento calculados basándose en los componentes de luma, tanto para los componentes de croma como para los componentes de luma. La unidad de selección de modo 40 también puede generar elementos sintácticos asociados a los bloques de vídeo y el fragmento de vídeo para su uso por el descodificador de vídeo 30 al descodificar los bloques de vídeo del fragmento de vídeo.
[0118] La unidad de predicción intra 46 puede realizar predicción intra de un bloque actual, de forma alternativa a la predicción inter llevada a cabo por la unidad de estimación de movimiento/disparidad 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de predicción intra 46 puede determinar un modo de predicción intra para usar para codificar un bloque actual. En algunos ejemplos, la unidad 46 de predicción intra puede codificar un bloque actual usando diversos modos de predicción intra, por ejemplo, durante diferentes pasadas de codificación, y la unidad 46 de predicción intra (o la unidad 40 de selección de modo, en algunos ejemplos) puede seleccionar un modo de predicción intra adecuado para usar a partir de los modos probados.
[0119] Por ejemplo, la unidad de predicción intra 46 puede calcular valores de distorsión de velocidad usando un análisis de distorsión de velocidad para los diversos modos de predicción intra probados, y seleccionar el modo de predicción intra que tenga las mejores características de distorsión de velocidad entre los modos probados. El análisis de distorsión de velocidad determina en general una magnitud de distorsión (o de errores) entre un bloque codificado y un bloque original, no codificado, que se codificó para generar el bloque codificado, así como una velocidad binaria (es decir, un número de bits) usada para generar el bloque codificado. La unidad de predicción intra 46 puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados para determinar qué modo de predicción intra presenta el mejor valor de distorsión de velocidad para el bloque.
[0120] Después de seleccionar un modo de predicción intra para un bloque, la unidad de predicción intra 46 puede proporcionar información indicativa del modo de predicción intra seleccionado para el bloque a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indica el modo de predicción intra seleccionada. El codificador de vídeo 20 puede incluir datos de configuración en el flujo de bits transmitido, que pueden incluir una pluralidad de tablas de índices de modos de predicción intra y una pluralidad de tablas de índices de modos de predicción intra modificadas (también denominadas tablas de correlación de contraseñas), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de predicción intra más probable, una tabla de índices de modos de predicción intra y una tabla de índices de modos de predicción intra modificadas para su uso para cada uno de los contextos.
[0121] 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 está codificado. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de procesamiento de transformadas 52 aplica una transformada, tal como una transformada discreta de coseno (DCT) o una transformada conceptualmente similar, al bloque residual, generando un bloque de vídeo que comprende valores residuales de coeficientes de transformada. La unidad de procesamiento de transformadas 52 puede llevar a cabo otras transformadas que son conceptualmente similares a la DCT. También podrían usarse transformadas de ondícula, transformadas de números enteros, transformadas de subbandas u otros tipos de transformadas. En cualquier caso, la unidad de procesamiento de transformadas 52 aplica la transformada al bloque residual, generando un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual, desde un dominio de valor de píxel a un dominio de transformada, tal como un dominio de frecuencia.
[0122] La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir todavía más la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad 54 de cuantificación puede realizar, a continuación, un escaneado de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad 56 de codificación por entropía puede realizar el escaneado.
[0123] Tras la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede llevar a cabo la codificación de longitud variable adaptable al contexto (CAVLC), la codificación aritmética binaria adaptable al contexto (CABAC), la codificación aritmética binaria adaptable al contexto y basada en sintaxis (SBAC), la codificación por entropía mediante la división en intervalos de probabilidades (PIPE) u otra técnica de codificación por entropía. En el caso de la codificación por entropía basada en el contexto, el contexto puede basarse en bloques contiguos. Tras la codificación por entropía realizada por la unidad de codificación por entropía 56, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, el descodificador de vídeo 30) o archivarse para su posterior transmisión o recuperación.
[0124] La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican la cuantificación inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio del píxel, por ejemplo, para su posterior uso como bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de la memoria de imágenes de referencia 64. La unidad 44 de compensación del movimiento también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxel de subentero para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento, 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. El bloque de vídeo reconstruido puede ser usado por la unidad de estimación de movimiento/disparidad 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para inter-codificar un bloque en una imagen posterior.
[0125] El codificador de vídeo 20 puede generar una serie de elementos sintácticos, como se ha descrito anteriormente, que pueden ser codificados por la unidad de codificación por entropía 56 u otra unidad de codificación del codificador de vídeo 20. En algunos ejemplos, el codificador de vídeo 20 puede generar y codificar elementos sintácticos para un flujo de bits de MVC, como se ha descrito anteriormente.
[0126] Como se señaló anteriormente, un identificador de visualización puede incluirse en una cabecera de unidad NAL para identificar la visualización a la que pertenece una unidad NAL. El ID de visualización puede aumentar sustancialmente el número de bits para la cabecera de unidad NAL, que ocupa una parte relativamente grande del flujo de bits. De acuerdo con los aspectos de esta divulgación, el codificador de vídeo 20 puede señalar un índice de orden de visualización como parte de una cabecera de unidad NAL. Es decir, el codificador de vídeo 20 puede reemplazar el ID de visualización que comúnmente se puede señalar en la cabecera de unidad NAL con un índice de orden de visualización. El índice de orden de visualización puede describir el orden de descodificación de un componente de visualización correspondiente de una unidad de acceso. El índice de orden de visualización se puede usar con un valor POC o un valor de trama para identificar un componente de visualización de un flujo de bits. El codificador de vídeo 20 también puede generar un SPS que proporciona una indicación de una relación entre los ID de visualización para las visualizaciones y los índices de orden de visualización para las visualizaciones. Por ejemplo, el codificador de vídeo 20 puede generar una tabla de asignación que asigna los valores de view_id a los valores del índice de orden de visualización e incluir dicha tabla de asignación en un SPS. En otros ejemplos, el codificador de vídeo 20 puede indicar la relación entre los ID de visualización y los índices de orden de visualización de una manera alternativa.
[0127] El codificador de vídeo 20 también puede evitar la codificación de una unidad NAL de prefijo, que típicamente se puede incluir inmediatamente antes de una visualización base. En lugar de eso, el codificador de vídeo 20 puede señalar un tem poraljd en una cabecera de unidad NAL, que puede proporcionar toda la información necesaria para que el descodificador de vídeo 30 asocie un componente de visualización particular con una visualización particular y con una ubicación temporal apropiada (por ejemplo, dado un índice de orden de visualización base predeterminado de cero). En algunos ejemplos, el codificador de vídeo 20 puede agregar un indicador a la cabecera de unidad NAL de la visualización base para indicar si el componente de visualización (de esa unidad NAL particular) se puede usar para realizar una predicción inter de componentes de visualización de otras visualizaciones del flujo de bits.
[0128] De acuerdo con los aspectos de esta divulgación, el codificador de vídeo 20 puede señalar las dependencias de visualización para cada visualización comúnmente para todos los componentes de visualización, independientemente de si los componentes de visualización son para imágenes de anclaje e imágenes sin anclaje y si los componentes de visualización pertenecen a la Lista 0 o Lista 1. En algunos ejemplos, el codificador de vídeo 20 puede incluir una indicación en un SPS que identifica diferentes dependencias de visualización para imágenes de anclaje e imágenes sin anclaje.
[0129] De acuerdo con otros aspectos de esta divulgación, en lugar de señalar la priorityjd en la cabecera de unidad NAL, el codificador de vídeo 20 puede proporcionar valores de priority_id en un SPS. Es decir, se puede señalar un priority_id para cada visualización con un cierto nivel temporal en el nivel de secuencia. Además, de acuerdo con los aspectos de esta divulgación, la adaptación de un solo paso puede habilitarse siempre que se conozca el contexto de señalización asociado con la adaptación. Además, el codificador de vídeo 20 puede señalar información de nivel de visualización en un SPS.
[0130] La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo 30 que puede implementar las técnicas descritas en esta divulgación para descodificar un flujo de bits de múltiples visualizaciones. En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 80, una unidad de predicción 81 con una unidad de compensación de movimiento 82 y una unidad de predicción intra 84, una unidad de cuantificación inversa 86, una unidad de transformación inversa 88, un sumador 90 y una memoria de imágenes de referencia 92.
[0131] Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado, que representa los bloques de vídeo de un fragmento de vídeo codificado y elementos sintácticos asociados, desde el codificador de vídeo 20. La unidad 80 de descodificación por entropía del descodificador 30 de vídeo realiza la descodificación por entropía del flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. La unidad de descodificación por entropía 80 envía los vectores de movimiento y otros elementos sintácticos a la unidad de predicción 81. El descodificador 30 de vídeo puede recibir los elementos sintácticos en el nivel de fragmento de vídeo y/o el nivel de bloque de vídeo.
[0132] Por ejemplo, el descodificador de vídeo 30 puede recibir un cierto número de unidades NAL que tienen una cabecera de unidad NAL que identifica un tipo de datos almacenados en la unidad NAL (por ejemplo, datos de VCL y datos distintos a VCL). Los conjuntos de parámetros pueden contener la información de cabecera a nivel de secuencia, tal como un SPS, PPS u otro conjunto de parámetros descrito anteriormente.
[0133] De acuerdo con aspectos de esta divulgación, el descodificador de vídeo 30 puede recibir un índice de orden de visualización como parte de una cabecera de unidad NAL. Es decir, el descodificador de vídeo 30 puede recibir un índice de orden de visualización en lugar del ID de visualización que comúnmente se puede señalar en la cabecera de unidad NAL. El índice de orden de visualización puede describir el orden de descodificación de un componente de visualización correspondiente de una unidad de acceso. Además, el descodificador de vídeo 30 puede recibir información indicativa de la relación entre un índice de orden de visualización recibido y un ID de visualización correspondiente. La información puede incluir, por ejemplo, una tabla de asignación que asigna los valores de view_id para visualizar los valores del índice de orden. De esta manera, el descodificador de vídeo 30 puede simplemente recibir un valor de índice de orden de visualización en una cabecera de unidad NAL y determinar el view_id de la unidad NAL utilizando la tabla de asignación. En algunos ejemplos, la información de la relación se puede recibir en un SPS. El descodificador de vídeo 30 también puede usar el índice de orden de visualización con un valor POC o un valor de trama (número de trama o frame_num) para identificar un componente de visualización de un flujo de bits.
[0134] En algunos ejemplos, de acuerdo con aspectos de esta divulgación, el descodificador de vídeo 30 puede no recibir una unidad NAL de prefijo, que típicamente puede incluirse inmediatamente antes de una visualización base. Más bien, el descodificador de vídeo 30 puede recibir un temporaljd en una cabecera de unidad NAL, que puede proporcionar toda la información necesaria para que el descodificador de vídeo 30 asocie un componente de visualización particular con una visualización particular y con una ubicación temporal apropiada (por ejemplo, dado un índice de orden de visualización de base predeterminado de cero). En algunos ejemplos, el descodificador de vídeo 30 puede recibir un indicador en la cabecera de unidad NAL de la visualización base para indicar si el componente de visualización (de esa unidad NAL particular) puede usarse para realizar una predicción inter de componentes de visualización de otras visualizaciones del flujo de bits.
[0135] De acuerdo con los aspectos de esta divulgación, el descodificador de vídeo 30 también puede recibir dependencias de visualización para cada visualización comúnmente para todos los componentes de la visualización, independientemente de si los componentes de la visualización son para imágenes de anclaje e imágenes sin anclaje, e independientemente de si el componente de visualización se incluirá en la Lista 0 o la Lista 1. En algunos ejemplos, el descodificador de vídeo 30 puede recibir una indicación en un SPS que identifica diferentes dependencias de visualización para imágenes de anclaje e imágenes sin anclaje.
[0136] De acuerdo con otros aspectos de esta divulgación, en lugar de señalar la priority_id en la cabecera de unidad NAL, el codificador de vídeo 20 puede proporcionar valores de priority_id en un SPS. Además, de acuerdo con los aspectos de esta divulgación, la adaptación de un solo paso puede habilitarse siempre que se conozca el contexto de señalización asociado con la adaptación. El descodificador de vídeo 30 también puede recibir cierta información de nivel de visualización en un SPS.
[0137] Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad de predicción intra 84 de la unidad de predicción 81 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual, basándose en un modo de predicción intra señalado y datos de los bloques previamente descodificados de la imagen actual. Cuando la imagen está codificada como un fragmento inter-codificado (es decir, B, P o GPB), la unidad de compensación de movimiento 82 de la unidad de predicción 81 genera bloques predictivos para un bloque de vídeo del fragmento de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos recibidos desde la unidad de descodificación por entropía 80. Los bloques predictivos se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de imágenes de referencia, la Lista 0 y la Lista 1 (o una lista combinada, la Lista c), usando técnicas de construcción por omisión, basándose en las imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
[0138] La unidad de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual, analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para producir los bloques predictivos del bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad 82 de compensación de movimiento usa algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, predicción intra o predicción inter) usado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de predicción inter (por ejemplo, fragmento B, fragmento P o fragmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo intercodificado del fragmento, un estado de predicción inter para cada bloque de vídeo intercodificado del fragmento y otro tipo de información para descodificar los bloques de vídeo en el fragmento de vídeo actual.
[0139] La unidad de cuantificación inversa 86 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformada cuantificados, proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo del fragmento de vídeo con el fin de determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que se debería aplicar.
[0140] La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo una DCT inversa, una transformada inversa entera o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada, con el fin de generar bloques residuales en el dominio de píxeles. De acuerdo con los aspectos de esta divulgación, la unidad de procesamiento de transformada inversa 88 puede determinar la manera en que se aplicaron las transformadas a los datos residuales. Es decir, por ejemplo, la unidad de procesamiento de transformada inversa 88 puede determinar un RQT que representa la manera en que se aplicaron las transformadas (por ejemplo, DCT, transformada entera, transformada de ondícula o una o más transformadas diferentes) a las muestras de luma residuales y las muestras de croma residuales asociadas con un bloque de datos de vídeo recibidos.
[0141] Después de que la unidad de compensación de movimiento 82 genera el bloque predictivo para el bloque de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de procesamiento de transformada inversa 88 a los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 82. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de bloques para filtrar los bloques descodificados con el fin de eliminar distorsiones de efecto pixelado. También se pueden usar otros filtros de bucle (en el bucle de codificación o bien 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 descodificados en una imagen dada se almacenan luego en la memoria de imágenes de referencia 92, que almacena imágenes de referencia usadas para la subsiguiente compensación de movimiento. La memoria 92 de imágenes de referencia almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo 32 de visualización de la FIG. 1.
[0142] La FIG. 4 es un diagrama conceptual que ilustra un patrón de predicción de MVC de ejemplo. En el ejemplo de la FIG. 4, se ilustran ocho visualizaciones y se ilustran doce ubicaciones temporales para cada visualización. En general, cada fila en la FIG. 4 corresponde a una visualización, mientras que cada columna indica una ubicación temporal. Cada una de las visualizaciones se puede identificar usando un identificador de visualización ("viewjd"), que puede utilizarse para indicar una ubicación de cámara relativa con respecto a las otras visualizaciones. En el ejemplo mostrado en la FIG. 4, los ID de visualización se indican de "S0" a "S7", aunque también se pueden utilizar ID de visualización numéricos. Además, cada una de las ubicaciones temporales se puede identificar usando un valor de recuento de orden de imágenes (POC), que indica un orden de visualización de las imágenes. En el ejemplo mostrado en la FIG. 4, los valores de POC se indican de "T0" a "T11".
[0143] Aunque MVC tiene una llamada visualización base que se puede descodificar mediante descodificadores H.264/AVC y el par de visualización estéreo puede soportarse mediante MVC, MVC puede soportar más de dos visualizaciones como entrada de vídeo 3D. En consecuencia, un renderizador de un cliente que tiene un descodificador de MVC puede esperar contenido de vídeo 3D con múltiples visualizaciones.
[0144] Las imágenes de la FIG. 4 se indican usando un bloque sombreado que incluye una letra, que designa si la imagen correspondiente está intra-codificada (es decir, una trama I), o inter-codificada en una dirección (es decir, como una trama P) o en múltiples direcciones (es decir, como una trama B). En general, las predicciones se indican mediante flechas, donde la imagen a la que se apunta utiliza el objeto desde el que se apunta como referencia de predicción. Por ejemplo, la trama P de la visualización S2 en la ubicación temporal T0 se predice a partir de la trama I de la visualización S0 en la ubicación temporal T0. Cada una de las imágenes mostradas en la FIG. 4 puede denominarse un componente de visualización. Es decir, un componente de visualización de una visualización corresponde a una instancia temporal particular de la visualización.
[0145] Al igual que con la codificación de vídeo de visualización única, las imágenes de una secuencia de vídeo de múltiples visualizaciones se pueden codificar predictivamente con respecto a las imágenes en diferentes ubicaciones temporales. Por ejemplo, la trama B de la visualización S0 en la ubicación temporal T1 tiene una flecha apuntando a la misma desde la trama I de la visualización S0 en la ubicación temporal T0, lo cual indica que la trama B se predice a partir de la trama I. Adicionalmente, sin embargo, en el contexto de la codificación de vídeo de múltiples visualizaciones, las imágenes se pueden predecir entre visualizaciones. Es decir, un componente de visualización puede usar los componentes de visualización de otras visualizaciones como referencia. En la MVC, por ejemplo, la predicción entre visualizaciones se realiza como si el componente de visualización en otra visualización es una referencia de predicción inter. Las posibles referencias entre visualizaciones pueden señalarse en la extensión SPS MVC y pueden modificarse mediante el proceso de construcción de la lista de imágenes de referencia, lo cual habilita el ordenamiento flexible de las referencias de predicción inter o de predicción entre visualizaciones.
[0146] La FIG. 4 proporciona diversos ejemplos de predicción entre visualizaciones. Las imágenes de visualización S1, en el ejemplo de la FIG. 4, se ilustran como predichas a partir de imágenes en diferentes ubicaciones temporales de la visualización S1, así como también cono entre visualizaciones predichas a partir de imágenes de imágenes de las visualizaciones S0 y S2 en las mismas ubicaciones temporales. Por ejemplo, la trama-B de la visualización S1 en la ubicación temporal T1 se predice a partir de cada una de las tramas-B de la visualización S1 en las ubicaciones temporales T0 y T2, así como las tramas-B de las visualizaciones S0 y S2 en la ubicación temporal T1.
[0147] En el ejemplo de la FIG. 4, la mayúscula "B" y la minúscula "b" están destinadas a indicar diferentes relaciones jerárquicas entre imágenes, en lugar de diferentes metodologías de codificación. En general, las tramas con "B" mayúscula están relativamente más altas en la jerarquía de predicción que las tramas con "b" minúscula. La FIG. 4 también ilustra las variaciones en la jerarquía de predicción utilizando diferentes niveles de sombreado, donde las imágenes con una mayor cantidad de sombreado (es decir, relativamente más oscuras) están más altas en la jerarquía de predicción que aquellas imágenes que tienen menos sombreado (es decir, relativamente más claras). Por ejemplo, todas las tramas I en la FIG. 4 se ilustran con sombreado completo, mientras que las tramas P tienen un sombreado algo más claro, y las tramas B (y las tramas b minúscula) tienen varios niveles de sombreado entre sí, pero siempre más claro que el sombreado de las tramas P y las tramas I.
[0148] En general, la jerarquía de predicción se relaciona con índices del orden de visualización, en cuanto a que las imágenes relativamente más altas en la jerarquía de predicción deberían ser descodificadas antes de la descodificación de imágenes que están relativamente más bajas en la jerarquía, de tal modo que esas imágenes relativamente más altas en la jerarquía se puedan utilizar como imágenes de referencia durante la descodificación de las imágenes relativamente más bajas en la jerarquía. Un índice de orden de visualización es un índice que indica el orden de descodificación de componentes de visualización en una unidad de acceso. Los índices de orden de visualización pueden estar implícitos en un conjunto de parámetros, tal como un SPS.
[0149] De esta manera, las imágenes utilizadas como imágenes de referencia pueden ser descodificadas antes de la descodificación de las imágenes que se codifican con referencia a las imágenes de referencia. Un índice de orden de visualización es un índice que indica el orden de descodificación de componentes de visualización en una unidad de acceso. De acuerdo con MVC/AVC, para cada índice i de orden de visualización, se señala el ID de visualización correspondiente. La descodificación de los componentes de visualización sigue el orden ascendente de los índices de orden de visualización. Si se presentan todas las visualizaciones, entonces el conjunto de índices de orden de visualización comprende un conjunto consecutivamente ordenado de cero a uno menos que el número total de visualizaciones.
[0150] En algunos casos, un subconjunto de todo un flujo de bits puede ser extraído para formar un sub-flujo de bits que aún se ajusta a MVC. Hay muchos posibles sub-flujos de bits que las aplicaciones específicas puedan requerir, basándose, por ejemplo, en un servicio proporcionado por un servidor, la capacidad, el apoyo y las capacidades de los descodificadores de uno o más clientes y/o la preferencia de uno o más clientes. Por ejemplo, un cliente podría requerir solo tres visualizaciones, y podría haber dos escenarios. En un ejemplo, un cliente puede requerir una experiencia de exhibición sin fisuras y podría preferir visualizaciones con los valores de view_id S0, S1 y S2, mientras que otro cliente puede requerir ajustabilidad a escala de las visualizaciones y preferir visualizaciones con los valores de view_id S0, S2 y S4. Ambos sub-flujos de bits se pueden descodificar como flujos de bits independientes de MVC y pueden disponer de soporte de forma simultánea.
[0151] En general, la posición, la orientación y la relación geométrica entre diferentes visualizaciones de la cámara se pueden inferir a partir del ID de visualización o el Índice de Orden de visualización. Para este propósito, se pueden incluir parámetros de cámara intrínsecos y extrínsecos en el flujo de bits utilizando un mensaje SEI de información de adquisición de múltiples visualizaciones.
[0152] Mientras que la FIG. 4 muestra ocho visualizaciones (S0-S7), como se señaló anteriormente, la extensión MVC/AVC soporta hasta 1024 visualizaciones y utiliza un ID de visualización en una cabecera de unidad NAL para identificar la visualización a la que pertenece una unidad NAL. De acuerdo con los aspectos de esta divulgación, un índice de orden de visualización puede señalarse como parte de una cabecera de unidad NAL. Es decir, para fines de comparación, un índice de orden de visualización puede reemplazar el ID de visualización que se señala en la cabecera de unidad NAL de la extensión MVC/AVC. El orden de visualización en general describe el ordenamiento de las visualizaciones en una unidad de acceso, y un índice de orden de visualización identifica una visualización particular en el orden de visualización de la unidad de acceso. Es decir, un índice de orden de visualización describe el orden de descodificación de un componente de visualización correspondiente de una unidad de acceso.
[0153] Por consiguiente, de acuerdo con los aspectos de esta divulgación, un SPS puede proporcionar una relación entre view_ids para las visualizaciones e índices de orden de visualización para las visualizaciones. Al usar el índice de orden de visualización y los datos en el SPS, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden reemplazar el view_id de 10 bits de MVC/AVC en la cabecera de unidad NAL por el índice de orden de visualización, lo cual puede llevar a un ahorro de bits con respecto al esquema MVC/AVC.
[0154] Un SPS de ejemplo que proporciona una relación entre view_ids para las visualizaciones y los índices de orden de visualización se proporciona en la Tabla 6 a continuación:
TABLA 6 - EXTENSIÓN MVC DE CONJUNTO DE PARÁMETROS DE SECUENCIA
Figure imgf000025_0001
Figure imgf000026_0001
[0155] En el ejemplo mostrado en la Tabla 6, los elementos sintácticos en negrita y en cursiva indican las desviaciones de sintaxis mVc /Av C SPS, es decir, modificaciones relativas a la sintaxis MVC/AVC SPS. Por ejemplo, el SPS que se muestra en la Tabla 6 especifica las relaciones de dependencia entre visualizaciones para una secuencia de vídeo codificada. El SPS también especifica valores de nivel para un subconjunto de los puntos de funcionamiento para la secuencia de vídeo codificada. Todos los SPS a los que hace referencia una secuencia de vídeo codificada deben ser idénticos. Sin embargo, es posible que algunas visualizaciones identificadas por view_id[ i ] no estén presentes en la secuencia de vídeo codificada. Además, algunas visualizaciones o subconjuntos temporales descritos por el SPS pueden haberse eliminado de la secuencia de vídeo codificada original, y por lo tanto pueden no estar presentes en la secuencia de vídeo codificada. Sin embargo, la información en el SPS, siempre puede aplicarse a las visualizaciones y los subconjuntos temporales restantes.
[0156] En la Tabla 6 anterior, el num_views_minus1 más 1 elemento puede especificar el número máximo de visualizaciones codificadas en la secuencia de vídeo codificada. El valor de num_view_minus1 puede estar en la gama entre 0 y 31, inclusive. En algunos casos, el número real de visualizaciones en la secuencia de vídeo codificada puede ser menor que num_views_minus1 más 1. El elemento view_id[ i ] puede especificar el identificador de visualización de la visualización con un índice de orden de visualización igual a i. El elemento view_level[ i ] puede especificar el view_level de la visualización con un índice de orden de visualización igual a i. En algunos ejemplos, todos los componentes de visualización con un nivel de visualización hasta un valor predefinido (VL) se pueden descodificar sin descodificar ningún componente de visualización con un nivel de visualización mayor que VL.
[0157] De acuerdo con aspectos de esta divulgación, el elemento num_ref_views[ i ] especifica el número de componentes de visualización para la predicción entre visualizaciones en la lista de imágenes de referencia inicial RefPicList0 y RefPicList1 al descodificar componentes de visualización con índice de orden de visualización igual a i. Tal vez el valor del elemento num_ref_views[ i ] no sea mayor que Min(15, num_views_minus1). El valor de num_ref_views [0] puede ser igual a 0. Además, de acuerdo con aspectos de esta divulgación, el elemento ref_view_idx[ i ] [ j ] puede especificar el índice de orden de visualización del j-ésimo componente de visualización para la predicción entre visualizaciones en la lista de imágenes de referencia inicial RefPicList0 y RefPicList1 en la descodificación de un componente de visualización con índice de orden de visualización igual a i. El valor de ref_view_idx[ i ] [ j ] puede estar en el rango de 0 a 31, inclusive.
[0158] Por consiguiente, en diversos aspectos de esta divulgación, tal vez ya no se requiera que las dependencias de visualización para las imágenes de anclaje y las imágenes sin anclaje se mantengan y señalen por separado. Es decir, el codificador de vídeo 20 y/o el codificador de vídeo 30 pueden usar una única lista de imágenes de referencia (o mantener dos listas de imágenes de referencia, la Lista 0 y la Lista 1) para imágenes de anclaje e imágenes sin anclaje por igual. De esta manera, como se muestra en la Tabla 6 anterior, no se requiere una señalización separada para indicar una dependencia de visualización al descodificador de vídeo 30. En lugar de eso, el SPS incluye ref view_idx, que puede usarse para construir tanto la Lista 0 como la Lista 1 para los componentes de la visualización.
[0159] De acuerdo con tales aspectos de esta divulgación, por ejemplo, el descodificador de vídeo 30 puede recibir, para cualquier componente de visualización una primera visualización, información de visualización de referencia que indica una o más visualizaciones de referencia para predecir componentes de visualización de la primera visualización. Es decir, el descodificador de vídeo 30 puede recibir información de visualización de referencia que indica las dependencias de la visualización para imágenes de anclaje de una visualización y imágenes sin anclaje de una visualización similar. Cuando se descodifica una imagen particular (de una unidad de acceso) de una visualización particular, entonces, el descodificador de vídeo 30 puede incluir candidatos de referencia (por ejemplo, componentes de visualización a partir de los cuales se puede predecir la imagen particular) de la misma unidad de acceso que la imagen particular y de las visualizaciones de referencia indicadas por la información de visualización de referencia. En algunos casos, el descodificador de vídeo 30 puede agregar candidatos de referencia a la lista de imágenes de referencia de cada visualización de referencia, de modo que el número de candidatos de referencia sea igual al número de visualizaciones de referencia. Además, el descodificador de vídeo 30 puede agregar candidatos de referencia a la Lista 1, a la Lista 0 o a ambas. A continuación, el descodificador de vídeo 30 puede descodificar la imagen en particular basándose en una de las imágenes de referencia en la lista de imágenes de referencia.
[0160] Además, de acuerdo con la Tabla 6, la dependencia entre visualizaciones para componentes de visualización sin anclaje ya no se puede señalar en un SPS como un subconjunto de dependencia entre visualizaciones para componentes de visualización de anclaje. En lugar de eso, un componente de visualización de una visualización de anclaje se puede predecir a partir de más de una visualización diferente, como la visualización 3 y 4, y una visualización sin anclaje también se puede predecir a partir de las imágenes de la visualización 3 y la visualización 4. Si se desea una restricción de dependencia de visualización de restricción adicional para imágenes sin anclaje, tal restricción se puede proporcionar en la señalización suplementaria, como un mensaje SEI.
[0161] El num_level_values_signalled_minus1 más 1 elemento puede especificar el número de valores de nivel señalados para la secuencia de vídeo codificada. El valor del num_level_values_signalled_minus1 puede estar en la gama entre 0 y 63, inclusive. El elemento level_idc[ i ] puede especificar el i-ésimo valor de nivel señalado para la secuencia de vídeo codificada. El elemento num_applicable_ops_minus1[ i ] más 1 puede especificar el número de puntos de funcionamiento a los que se aplica el nivel indicado por level_idc[ i ]. El valor del elemento núm. applicable_ops_minus1[ i ] puede estar en la gama entre 0 y 1023, inclusive. El elemento applicable_op_temporal_id[ i ][ j ] puede especificar el temporaljd del j-ésimo punto de funcionamiento al que se aplica el nivel indicado por level_idc[ i ]. El elemento applicable_op_num_target_views_minus1[ i ][ j ] más 1 puede especificar el número de visualizaciones de salida de destino para el j-ésimo punto de funcionamiento al que se aplica el nivel indicado por level_idc[ i ]. El valor de applicable_op_num_target_views_minus1[ i ][ j ] puede estar en el intervalo de 0 a 1023, inclusive.
[0162] El elemento applicable_op_target_view_idx[ i ][ j ][ k ] puede especificar el índice de orden de visualización de la k-ésima visualización de salida de destino para el j-ésimo punto de funcionamiento al que se aplica el nivel indicado por level_idc[ i ]. El valor del elemento applicable_op_target_view_idx[ i ][ j ][ k ] puede estar en la gama entre 0 y 31, inclusive. applicable_op_num_views_minus1[ i ][ j ] más 1 puede especificar el número de visualizaciones requeridas para descodificar las visualizaciones de salida de destino correspondientes al j-ésimo punto de funcionamiento al que se aplica el nivel indicado por level_idc[ i ]. El número de visualizaciones especificadas por applicable_op_num_views_minus1 puede incluir las visualizaciones de salida de destino y las visualizaciones de las que dependen las visualizaciones de salida de destino según lo especificado por un proceso de extracción de sub­ flujo de bits.
[0163] En otro ejemplo, de acuerdo con aspectos de esta divulgación, puede requerirse que el valor de ref_view_idx[i][j] sea más pequeño que i, basándose en un orden de descodificación de los componentes de visualización en la misma instancia de tiempo.
[0164] El ref_view_idx[i][j] puede reducirse aún más en tamaño (para ahorros de bits adicionales en comparación con MVC/AVC). Por ejemplo, se puede lograr un ahorro adicional de bits en un flujo de MVC que incluye solo dos visualizaciones (es decir, para vídeo estéreo). En este ejemplo, un índice de orden de visualización puede no ser necesario, ya que el descodificador de vídeo 30 siempre puede descodificar una primera visualización (por ejemplo, la visualización 0) antes de descodificar una segunda visualización (por ejemplo, la visualización 1). Un ejemplo de SPS reducido se proporciona en la Tabla 7 a continuación:
TABLA 7 - EXTENSIÓN MVC DE CONJUNTO DE PARÁMETROS DE SECUENCIA
Figure imgf000028_0001
[0165] En el ejemplo mostrado en la Tabla 7, el elemento ref_v¡ew_idx_d¡ff_m¡nus1[ i ][ j ] plus i+1 puede especificar el índice de orden de visualización del j-ésimo componente de visualización para la predicción entre visualizaciones en la lista de imágenes de referencia inicial RefPicListO y RefPicListl cuando la descodificación de un componente de visualización con índice de orden de visualización es igual a i. El valor del elemento ref_v¡ew_¡dx_d¡ff_m¡nus1[ i ][ j ] puede estar en el rango de 0 a 30-i, inclusive.
[0166] Otros ejemplos también son posibles. Por ejemplo, en lugar de la dependencia de visualización de señalización en un SPS (como los ejemplos mostrados en las Tablas 6 y 7 anteriores), la dependencia de visualización se puede señalar en un PPS. En otro ejemplo, la dependencia de visualización se puede señalar en el SPS, y una dependencia de visualización se puede señalar adicionalmente en un PPS que está dentro del alcance de la dependencia de visualización señalada en el conjunto de parámetros de secuencia. Por ejemplo, en un SPS, una visualización dependiente (por ejemplo, la visualización 2) se puede señalar como dependiente de la visualización 0 y la visualización 1, mientras que en un PPS, la visualización dependiente (por ejemplo, la visualización 2) se puede señalar como solo dependiente de la visualización 0.
[0167] De acuerdo con algunos aspectos de esta divulgación, la construcción y la reordenación de la lista de imágenes de referencia pueden modificarse a partir de MVC/AVC. Por ejemplo, de acuerdo con los aspectos de esta divulgación, se puede usar el índice de visualización (idx de visualización) descrito anteriormente durante la construcción y/o reordenación de la lista de imágenes de referencia. En las Tablas 8 y 9 a continuación se proporciona una sintaxis de modificación MVC de la lista de imágenes de referencia de ejemplo:
TABLA 8 - MODIFICACIÓN DE LA LISTA DE IMÁGENES DE REFERENCIA DE MVC
Figure imgf000028_0002
Figure imgf000029_0001
TABLA 9 - MODIFICACIÓN DE LA LISTA DE IMÁGENES DE REFERENCIA DE MVC
Figure imgf000029_0002
[0168] En las Tablas 8 y 9, el elemento mod¡f¡cat¡on_of_p¡c_nums_idc junto con abs_diff_pic_num_m¡nus1, long_term_pic_num, o abs_d¡ff_v¡ew_¡dx_m¡nus1 puede espec¡f¡car cuáles de las ¡mágenes de referenc¡a o componentes de referencia solo entre visualizaciones se reasignan. Por ejemplo, el elemento abs_diff_view_¡dx_m¡nus1 más 1 puede especificar la diferencia absoluta entre el índice de referencia entre visualizaciones para colocar en el índice actual en la lista de ¡mágenes de referencia y el valor de predicción del índice de referencias entre visualizaciones.
[0169] En otro ejemplo, de acuerdo con aspectos de esta divulgación, la inter_view_index de una referencia entre visualizaciones puede señalarse directamente. Tal sintaxis de modificación MVC de la lista de ¡mágenes de referencia se proporciona en las Tablas 10 y 11 a continuación:
TABLA 10 - MODIFICACIÓN DE LA LISTA DE IMÁGENES DE REFERENCIA DE MVC
Figure imgf000029_0003
Figure imgf000030_0001
TABLA 11 - MODIFICACIÓN DE LA LISTA DE IMÁGENES DE REFERENCIA DE MVC
Figure imgf000030_0002
[0170] En las Tablas 10 y 11, una imagen de referencia entre visualizaciones se puede identificar mediante el inter_view_index de la forma siguiente:
VOIdx = ref_view_idx[ CurrVOIdx ][ inter_view_index ]
donde CurrVOIdx es el índice de orden de visualización del componente de visualización actual. Dado un valor POC de la imagen actual, el POC y el VOIdx se pueden usar para identificar una imagen de referencia entre visualizaciones.
[0171] En algunos ejemplos, el proceso de descodificación MVC para construcción de listas de imágenes de referencia puede invocarse al comienzo del proceso de descodificación para cada fragmento P, SP o B. Durante la invocación de este proceso, solo se pueden considerar las imágenes de referencia que tengan el mismo valor de view_idx que el fragmento actual. Las imágenes de referencia descodificadas se pueden marcar como "usadas para referencia a corto plazo" o "usadas para referencia a largo plazo". Las imágenes de referencia a corto plazo pueden identificarse mediante los valores de frame_num y view_idx y, para las imágenes de referencia entre visualizaciones, adicionalmente mediante PicOrderCnt( ). A las imágenes de referencia a largo plazo se les puede asignar un índice de trama a largo plazo y pueden identificarse mediante los valores del índice de trama a largo plazo, view_idx y, para las imágenes de referencia entre visualizaciones, adicionalmente mediante PicOrderCnt( ).
[0172] Además de las imágenes de referencia, también se pueden incluir en la lista de imágenes de referencia los componentes de referencia solo entre visualizaciones (que pueden ser imágenes que no son de referencia y pueden no marcarse durante un proceso de marcado de imágenes de referencia). Los componentes de referencia solo entre visualizaciones pueden identificarse mediante el valor de view_idx y por PicOrderCnt( ).
[0173] Durante la invocación del proceso de construcción de la lista de imágenes de referencia, el siguiente proceso, identificado en MVC/AVC como subcláusula 8.2.4.1, puede invocarse para especificar:
• la asignación de las variables FrameNum, FrameNumWrap y PicNum a cada una de las imágenes de referencia a corto plazo, y
• la asignación de la variable LongTermPicNum a cada una de las imágenes de referencia a largo plazo.
[0174] Las imágenes de referencia y, cuando están presentes, los componentes de referencia solo entre visualizaciones, se tratan a través de índices de referencia. Un índice de referencia es un índice en una lista de imágenes de referencia. Al descodificar un fragmento P o SP, hay una lista de imágenes de referencia única RefPicList0. Al descodificar un fragmento B, hay una segunda lista de imágenes de referencia independiente RefPicList1 además de RefPicList0.
[0175] Al comienzo del proceso de descodificación para cada fragmento, la lista de imágenes de referencia RefPicList0, y para los fragmentos B RefPicList1, puede obtenerse como se especifica en los siguientes pasos ordenados:
1. La lista de imágenes de referencia inicial RefPicList0 y para los fragmentos B RefPicList1 se obtienen como se especifica en la subcláusula 8.2.4.2 de MVC/AVC.
2. Las imágenes de referencia entre visualizaciones o los componentes de referencia solo entre visualizaciones se adjuntan a la lista de imágenes de referencia inicial RefPicList0 y para los fragmentos B RefPicList1 como se especifica en la subcláusula 6.4.1 (que se expone a continuación).
3. Cuando ref_pic_list_modification_flag_10 es igual a 1 o, cuando se descodifica un fragmento B, ref_pic_list_modification_flag_l1 es igual a 1, la lista de imágenes de referencia RefPicListO y para los fragmentos B RefPicList1 se modifican como se especifica en la subcláusula 6.4.2 (se expone a continuación).
[0176] Además, el número de entradas en la lista de imágenes de referencia modificada RefPicListO es num_ref_idx_10_active_minus1 1, y para los fragmentos B, el número de entradas en la lista de imágenes de referencia modificadas, RefPicList1 es num_ref_idx_l1_active_minus_1 1. Una imagen de referencia o un componente de referencia solo entre visualizaciones puede aparecer en más de un índice en las listas de imágenes de referencia modificadas RefPicListO o RefPicList1.
[0177] Durante la invocación del proceso especificado en la subcláusula 6.4.1, tal vez no exista una referencia de predicción entre visualizaciones adjunta a RefPicListX (siendo X 0 o 1). Sin embargo, una referencia de predicción entre visualizaciones que no existe puede no estar en el RefPicListX modificado después de la invocación del proceso especificado en la subcláusula 6.4.2 (expuesta más adelante).
[0178] En un ejemplo, la subcláusula 6.4.1 se expone a continuación, lo cual incluye un proceso de inicialización para una lista de imágenes de referencia para referencias de predicción entre visualizaciones:
• Las entradas para este proceso son una lista de imágenes de referencia RefPicListX (con X siendo 0 o 1), inter view_flag y la información de dependencia de visualización que se ha descodificado a partir del seq_parameter set_mvc_exte nsion().
• El resultado de este proceso es una lista de imágenes de referencia posiblemente modificada RefPicListX, que todavía se conoce como la lista de imágenes de referencia inicial RefPicListX.
• Dado que i es el valor de view_idx para el fragmento actual, las imágenes de referencia entre visualizaciones y los componentes de referencia solo entre visualizaciones se adjuntan a la lista de imágenes de referencia como se especifica a continuación:
• Para cada valor del índice de referencia entre visualizaciones j desde 0 hasta num_ref_views[i] - 1, inclusive, en orden ascendente de j, la referencia de predicción entre visualizaciones con view_idx igual a ref_view_idx[i][j] desde la misma unidad de acceso que el fragmento actual se añade a RefPicListX.
[0179] En un ejemplo, la subcláusula 6.4.2 se establece a continuación, lo cual incluye un proceso de modificación para las listas de imágenes de referencia:
• La entrada a este proceso es la lista de imágenes de referencia RefPicListO y, al descodificar un fragmento B, también la lista de imágenes de referencia RefPicList1.
• Las salidas de este proceso son una lista de imágenes de referencia posiblemente modificada RefPicListO y, al descodificar un fragmento B, también una lista de imágenes de referencia posiblemente modificada RefPicList1.
• Cuando ref_pic_list_modification_flag_l0 es igual a 1, se especifican los siguientes pasos ordenados:
1. Dejar que refIdxL0 sea un índice en la lista de imágenes de referencia RefPicListO. Se establece inicialmente igual a 0.
2. Los correspondientes elementos sintácticos modification_of_pic_nums_idc se procesan en el orden en que aparecen en el flujo de bits. Para cada uno de estos elementos sintácticos, se aplica lo siguiente:
■ Si modify_of_pic_nums_idc es igual a 0 o igual a 1, el proceso especificado en la subcláusula 6.4.2.1 (que se establece a continuación) se invoca con RefPicListO y refIdxL0 como entrada, y la salida se asigna a RefPicListO y refIdxL0.
■ De lo contrario, si modification_of_pic_nums_idc es igual a 2, el proceso especificado en la subcláusula 6.4.2.2 (que se establece a continuación) se invoca con RefPicListO y refIdxL0 como entrada, y la salida se asigna a RefPicListO y refIdxL0.
■ De lo contrario, si modify_of_pic_nums_idc es igual a 4 o igual a 5, el proceso especificado en la subcláusula 6.4.2.3 (que se establece a continuación) se invoca con RefPicListO y refIdxL0 como entrada, y la salida se asigna a RefPicListO y refIdxL0.
■ De lo contrario (modification_of_pic_nums_idc es igual a 3), el proceso de modificación para la lista de imágenes de referencia RefPicListO ha finalizado.
• Cuando ref_pic_list_modification_flag_l1 es igual a 1, se especifican los siguientes pasos ordenados:
1. Dejar que refIdxL1 sea un índice en la lista de imágenes de referencia RefPicList1. Se establece inicialmente igual a 0.
2. Los correspondientes elementos sintácticos modification_of_pic_nums_idc se procesan en el orden en que aparecen en el flujo de bits. Para cada uno de estos elementos sintácticos, se aplica lo siguiente.
■ Si modification_of_ic_nums_idc es igual a 0 o igual a 1, el proceso especificado en la subcláusula 6.4.2.1 (que se establece a continuación) se invoca con RefPicList1 y refIdxL1 como entrada, y la salida se asigna a RefPicList1 y refIdxL1.
■ De lo contrario, si modification_of_pic_nums_idc es igual a 2, el proceso especificado en la subcláusula 6.4.2.2 (que se establece a continuación) se invoca con RefPicList1 y refIdxL1 como entrada, y la salida se asigna a Ref PicList1 y refIdxL1.
■ De lo contrario, si modify_of_pic_nums_idc es igual a 4 o igual a 5, el proceso especificado en la subcláusula 6.4.2.3 (que se establece a continuación) se invoca con RefPicList1 y refIdxL1 como entrada, y la salida se asigna a Ref PicList1 y refIdxL1.
■ De lo contrario (modification_of_pic_nums_idc es igual a 3), el proceso de modificación para la lista de imágenes de referencia RefPicList1 ha finalizado.
[0180] En un ejemplo, la subcláusula 6.4.2.1 se expone a continuación, lo cual incluye un proceso de modificación de una lista de imágenes de referencia para imágenes de referencia a corto plazo para predicción inter:
• Las entradas para este proceso son un índice refIdxLX y una lista de imágenes de referencia RefPicListX (con X siendo 0 o 1).
• Las salidas de este proceso son un índice incrementado refIdxLX y una lista de imágenes de referencia modificada RefPicListX.
• La variable picNumLXNoWrap se obtiene de la forma siguiente:
• Si modification_of_pic_nums_idc es igual a 0,
ifí picNumLXPred - ( ab£_diffj)ic_num_mmusl -+ 1 )< 0 )
picNumLXNoWrap = picNumLXPred - ( abs_diíf_pic_num_mmusl 1 )
MaxPicNum (H-l)
en caso contrario
picNumLXNoWrap = picNumLXPred - ( abs_diff_pic_num_imnusl 1)
• De lo contrario (modification_of_pic_nums_idc es igual a 1),
if( picNumLXPred ( abs_dLff_pic_num_mmusl -+ 1) >= MaxPicNum)
picNumLXNoWrap = picNumLXPred ( abs_diif^ic_num_minusl 1 ) -
MaxPicNum (H-2)
en caso contrario
picNumLXNoWrap = picNumLXPred ( abs_diff_pic_nnm_minusl 1)
donde picNumLXPred es el valor de predicción para la variable picNumLXNoWrap. Cuando el proceso especificado en esta subcláusula se invoca la primera vez para un fragmento (es decir, para la primera aparición de modification_of_pic_nums_idc igual a 0 o 1 en la sintaxis ref_pic_list_modification()), picNumL0Pred y picNumL1 Pred se establecen inicialmente iguales a CurrPicNum. Después de cada asignación de picNumLXNoWrap, el valor de picNumLXNoWrap se asigna a picNumLXPred.
[0181] En algunos ejemplos, la variable picNumLX se obtiene según lo especificado por el siguiente pseudocódigo:
if( picNumLXNoWrap > CurrPicNum)
picNumLX = picNumLXNoWrap - MaxPicNum (H-3)
en caso contrario
picNumLX = picNumLXNoWrap
donde picNumLX puede ser igual al PicNum de una imagen de referencia que está marcada como "utilizada para referencia a corto plazo" y puede no ser igual al PicNum de una imagen de referencia a corto plazo que está marcada como "no existente". Se puede realizar el siguiente proceso para colocar la imagen con el número de imagen a corto plazo picNumLX en la posición de índice refIdxLX, cambiar la posición de cualquier otra imagen restante a más adelante en la lista e incrementar el valor de refIdxLX:
fo r ( c Id x = n u m _ re f_ id x_ lX _ a c tive _ m in u s1 1; c Id x > re fId x L X ; c Id x — )
R e fP ic L is tX [c Id x ] = R e fP ic L is tX [c Id x - 1]
R e fP ic L is tX [re fId x L X ] = imagen de re fe re n c ia a c o r to p la z o con PicNum ig u a l a picNumLX
n ld x = re fId x L X f o r
c Id x = re fId x L X ; c Id x <= n u m _ re f_ id x_ lX _ a c tive _ m in u s1 1; c Idx++ ) (H- 4)
i f (P ic N u m F (R e fP ic L is tX [c Id x ]) != picNumLX y v ie w ID X (R e fP ic L is tX [ c Id x ] ) != cu rrV iew ID X )
R e fP ic L is tX [n Id x ] = R e fP ic L is tX [c Id x ]
donde la función viewIDX(refpic) devuelve el view_idx de la imagen de referencia refpic, la variable currViewIDX es igual al view_idx del fragmento actual y la función PicNumF(RefPicListX[cIdx]) se obtiene de la siguiente manera:
• Si la imagen de referencia RefPicListX[cIdx] está marcada como "utilizada para referencia a corto plazo", PicNumF(RefPicListX[cIdx]) es el PicNum de la imagen RefPicListX[cIdx].
• De lo contrario (la imagen de referencia RefPicListX[cIdx] no está marcada como "utilizada para referencia a corto plazo"), PicNumF(RefPicListX[cIdx]) es igual a MaxPicNum.
[0182] En un ejemplo, la subcláusula 6.4.2.2 se expone a continuación, incluyendo un proceso de modificación de una lista de imágenes de referencia para imágenes de referencia a largo plazo para predicción inter:
• Las entradas para este proceso son un índice refldxLX (con X siendo 0 o 1) y la lista de imágenes de referencia RefPicListX.
• Las salidas de este proceso son un índice incrementado refIdxLX y una lista de imágenes de referencia modificada RefPicListX.
• El siguiente procedimiento se realiza para colocar la imagen con el número de imagen a largo plazo núm. de imag. a largo plazo en la posición de índice refIdxLX, cambiar la posición de cualquier otra imagen restante a más adelante en la lista e incrementar el valor de refIdxLX:
for(cIdx = num_ref_idx_lX_active_minus1 1; cIdx > refIdxLX; cIdx— ) RefPicListX[cIdx] = RefPicListX[cIdx - 1]
RefPicListX[refIdxLX++] = imkagen de referencia a largo plazo con LongTermPicNum igual a long_term_pic_num
nldx = refIdxLX
for(cIdx = refIdxLX; cIdx <= num_ref_idx_lX_active_minus1 1; cIdx++) (H- 5) if(LongTermPicNumF(RefPicListX[cIdx]) != long_term_pic_num | viewIDX(RefPicListX[cIdx]) != currViewIDX)
RefPicListX[nIdx++] = RefPicListX[cIdx]
donde la función viewiüX(refpic) devuelve el view_idx de la imagen de referencia refpic, la variable currViewIDX es igual al view_idx del fragmento actual, y la función LongTermPicNumF(RefPicListX[cIdx]) se puede obtener de la siguiente manera:
• Si la imagen de referencia RefPicListX[cIdx] está marcada como "utilizada para referencia a largo plazo", LongTermPicNumF(RefPicListX[cIdx]) es el LongTermPicNum de la imagen RefPicListX[cIdx].
• De lo contrario (la imagen de referencia RefPicListX[cIdx] no está marcada como "usada para referencia a largo plazo"), LongTermPicNumF(RefPicListX[cIdx]) es igual a 2 * (MaxLongTermFrameIdx 1).
[0183] En un ejemplo, la subcláusula 6.4.2.3 se expone a continuación, incluyendo un proceso de modificación de una lista de imágenes de referencia para las referencias de predicción entre visualizaciones:
• Las entradas para este proceso son la lista de imágenes de referencia RefPicListX (con X siendo 0 o 1) y un índice refIdxLX en esta lista.
• Las salidas de este proceso son una lista de imágenes de referencia modificada RefPicListX (con X siendo 0 o 1) y un índice incrementado refIdxLX.
• Deje que currVOIdx sea la variable VOIdx del fragmento actual. La variable maxViewIdx se establece igual a num_ref_views[currVOIdx].
• La variable picInterViewIdxLX se obtiene de la forma siguiente:
• Si modification_of_pic_nums_idc es igual a 4, if(picInterViewIdxLXPred - (abs_diff_inter_view_minus1 1) < 0)
picInterViewIdxLX = picInterViewIdxLXPred - (
abs_diff_inter_view_minusl 1 ) maxViewIdx (H-6)
en caso contrario
picInterViewIdxLX = picInterViewIdxLXPred - (
abs_diff_inter_view_minusl 1)
• De lo contrario (modification_of_pic_nums_idc is equal to 5), if(picInterViewIdxLXPred (abs_diff_mter_view_minus1 1)>= maxViewIdx)
picInterViewIdxLX = picInterViewIdxLXPred (
abs_diff_inter_view_ minusl l 1 ) maxViewIdx (H-7)
en caso contrario
picInterViewIdxLX = picInterViewIdxLXPred (
abs_diff_intcr_vicw_minusl 1 )
donde picInterViewIdxLXPred es el valor de predicción para la variable picInterViewIdxLX. Cuando el proceso especificado en esta subcláusula se invoca la primera vez para RefPicList0 o RefPicList1 de un fragmento (es decir, para la primera aparición de modification_of_pic_nums_idc igual a 4 o 5 en la sintaxis ref_pic_list_modification()), picInterViewIdxL0Pred y picInterViewIdxL1Pred pueden inicialmente establecerse iguales a -1. Después de cada asignación de picInterViewIdxLX, el valor de picInterViewIdxLX se asigna a picInterViewIdxLXPred.
[0184] El flujo de bits puede no contener datos que conlleven picInterViewIdxLX igual a menor que 0 o picInterViewIdxLX mayor que maxViewIdx. La variable targetViewIDX se puede obtener de la siguiente manera:
ta rg e tV ie w ID X = re f_ v ie w _ id x [c u r rV O Id x ] [p ic In te rV ie w Id x L X ] (H-8)
[0185] El siguiente procedimiento puede llevarse a cabo para colocar la referencia de predicción entre visualizaciones con el índice de referencia entre visualizaciones igual a picInterViewIdxLX en la posición de índice refIdxLX y cambiar la posición de cualquier otra imagen restante para más tarde en la lista:
f o r ( c Id x = n u m _ re f_ id x_ lX _ a c tive _ m in u s1 1; c Id x > re fId x L X ; c Id x — )
R e fP ic L is tX [c Id x ] = R e fP ic L is tX [c Id x - 1]
R e fP ic L is tX [re fId x L X ] = r e fe re n c ia de p re d ic c ió n e n tre v is u a l iz a c io n e s con v ie w _ id x ig u a l a ta rg e tV ie w ID X
n ld x = re fId x L X fo r ( c Id x = re fId x L X ; c Id x <= n u m _ re f_ id x_ lX _ a c tive _ m in u s1 1; c Idx++) (H-10)
if ( v ie w ID X ( R e fP ic L is tX [c Id x ] ) != ta rg e tV ie w ID X ||
P ic tu re O rd e rC n t(R e fP ic L is tX [c Id x ] ) != currPOC)
R e fP ic L is tX [n Id x ] = R e fP ic L is tX [c Id x ]
donde la función viewIDX(refpic) devuelve el view_idx del refpic de la imagen de referencia, la variable currViewIDX es igual al view_idx del fragmento actual, y la variable currPOC es igual a PicOrderCnt() del fragmento actual.
[0186] En algunos ejemplos, se puede usar un proceso predeterminado para combinar listas de imágenes de referencia. Por ejemplo, un proceso de combinación de la lista de imágenes de referencia predeterminada puede incluir comprobar si una imagen de referencia (ya sea de RefPicListO o RefPicList1) es la primera aparición de la imagen de referencia que se agrega a la lista combinada. Para realizar dicha comprobación, un codificador de vídeo (como el codificador de vídeo 20 o el descodificador de vídeo 30) puede comparar una imagen actual CurrPic y cualquier imagen PicA en una lista, incluidas imágenes de referencia entre visualizaciones e imágenes de referencia temporales. La comparación se puede hacer de la siguiente manera:
if(V iew ID X (C urrP ic )= =V iew ID X (P icA )& & P O C (C urrP ic )==P O C (P ic A ) )
devue lve ve rd a d e ro ;
de lo c o n t r a r io
devue lve fa ls o ;
[0187] La FIG. 5A es un diagrama conceptual que ilustra un ejemplo de una estructura de flujo de bits 100 que puede usarse en una implementación de una o más de las técnicas de esta divulgación. El flujo de bits 100 puede cumplir con un estándar de codificación de vídeo, como el estándar HEVC. Además, en algunos ejemplos, el flujo de bits 100 puede cumplir con una extensión MVC a un estándar de codificación de vídeo.
[0188] En el ejemplo mostrado en la FIG. 5A, el flujo de bits 100 incluye una pluralidad de unidades de acceso 102-1 a 102-N (colectivamente, unidades de acceso 102). Como se señaló anteriormente, las unidades de acceso 102 pueden incluir un conjunto de componentes de visualización (denominados visualizaciones), como las visualizaciones 104-1 a 104-M (colectivamente, visualizaciones 104). En general, las unidades de acceso 102 incluyen todos los datos para una instancia temporal común, por ejemplo, datos para un componente de visualización por visualización. En algunos ejemplos, cada unidad de acceso de las unidades de acceso 102 incluye el mismo número de visualizaciones 104. La descodificación de cada unidad de acceso de las unidades de acceso 102 puede dar como resultado una imagen descodificada por visualización. Las unidades de acceso 102 pueden contener datos de vídeo codificados que pueden usarse para renderizar reproducción de vídeo tridimensional.
[0189] La FIG. 5B es un diagrama conceptual que ilustra un ejemplo de una visualización 104-N que puede incluirse en la estructura del flujo de bits 100 de la FIG. 5A. En general, cada componente de visualización en una unidad de acceso (como las visualizaciones 104 en la unidad de acceso 102-N) contiene un conjunto de unidades NAL de capa de codificador/descodificador (códec) de vídeo (VCL). Es decir, en el ejemplo mostrado en la FIG. 5B, la visualización 104-N incluye las unidades NAL 106-1 a 106-3 en una forma y orden específicos. Típicamente, los componentes de visualización están dispuestos en el mismo orden en cada unidad de acceso, de manera que el A-ésimo componente de visualización en cada unidad de acceso corresponde a la misma visualización. En otros ejemplos, la visualización 104-N puede incluir otros números de unidades NAL.
[0190] La FIG. 5C es un diagrama conceptual que ilustra una unidad NAL 108 de ejemplo, que puede ser similar en estructura a las unidades NAL 106 mostradas en la FIG. 5B. La unidad NAL 108 en general incluye una cabecera 110 de la unidad NAL y una carga útil 112. Además, la cabecera 110 de la unidad NAL incluye una primera parte 114 y una extensión 116 de la cabecera de unidad NAL, que puede ajustarse a la extensión MVC/AVC.
[0191] Por ejemplo, la primera parte 114 incluye un elemento ref_idc y un elemento de tipo de unidad NAL. El elemento ref idc puede indicar si la unidad NAL se utiliza como referencia para otras unidades NAL. Por ejemplo, un valor de ref_idc de 00 puede indicar que el contenido de la NALU no se usa para reconstruir las imágenes almacenadas (que se pueden usar para referencia futura). Dichas NALU se pueden descartar sin poner en riesgo la integridad de las imágenes de referencia. Los valores superiores a 00 pueden indicar que se requiere la descodificación de la NALU para mantener la integridad de las imágenes de referencia. El elemento de tipo de unidad NAL puede indicar el tipo de paquetes de la unidad NAL 108.
[0192] La extensión de la cabecera de unidad NAL 116 en general incluye un indicador IDR (IDR), un ID de prioridad (priorityjd), un ID de visualización (view_id), un ID temporal (temporaljd), un indicador de imagen de anclaje (APF) y un indicador entre visualizaciones (IVF). Como se describe con respecto a la FIG. 1 arriba, el indicador IDR puede indicar si la unidad NAL 108 pertenece a una actualización de descodificación instantánea (IDR) o una imagen view-IDR (V-IDR) que se puede usar como un punto de acceso aleatorio de GOP cerrado. El priority_id se puede usar con un proceso de adaptación de flujo de bits que varía el flujo de bits de acuerdo con las condiciones cambiantes de la red y/o las capacidades del descodificador de vídeo 30 y/o del dispositivo de visualización 32 (por ejemplo, como el proceso de adaptación de un solo paso). El view_id se puede usar para indicar el identificador de visualización para la visualización a la que pertenece la unidad NAL. El temporaljd se puede usar para indicar el nivel temporal de la unidad NAL actual, que puede corresponder a una velocidad de trama particular. El APF puede usarse para indicar si la unidad NAL pertenece a una imagen de anclaje que se puede usar como punto de acceso aleatorio GOP abierto. El IVF se puede usar para indicar si la unidad NAL se usa para la predicción entre visualizaciones para unidades NAL en otras visualizaciones.
[0193] Como se analizó anteriormente, el view_id de MVC/AVC es de 10 bits de largo, y puede usarse para identificar de forma única más de 1000 visualizaciones diferentes. En general, sin embargo, el número de visualizaciones realmente codificadas es típicamente de varios órdenes de magnitud menos de 1000 visualizaciones. Por ejemplo, la FIG. 4 incluye ocho visualizaciones para un contenido multimedia MVC dado. Dado que la cabecera 110 de la unidad NAL se incluye para cada unidad NAL, el view_id puede consumir una cantidad sustancial del flujo de bits. Aspectos de esta divulgación, como se describe con respecto al ejemplo mostrado en la FIG. 5D, pueden eliminar el view_id de la cabecera de unidad NAL, reduciendo así la cantidad de bits necesarios para codificar datos de vídeo MVC.
[0194] La FIG. 5D es un diagrama conceptual que ilustra una unidad NAL 120 de ejemplo, que puede ser similar en estructura a las unidades NAL 106 mostradas en la FIG. 5B. El ejemplo mostrado en la FIG. 5D ilustra un ejemplo de unidad NAL de acuerdo con los aspectos de esta divulgación. Por ejemplo, la unidad NAL 120 incluye una cabecera 122 de unidad NAL y una carga útil 124. Además, la cabecera de unidad NAL incluye una primera parte 126 y una extensión de cabecera de unidad NAL 128.
[0195] Al igual que con el ejemplo mostrado en la FIG. 5C, la primera parte 126 incluye un elemento ref_idc y un elemento de tipo de unidad NAL. El elemento ref_idc puede indicar si la unidad NAL se usa como referencia para otras unidades NAL. El elemento de tipo de unidad NAL puede indicar el tipo de paquetes de la unidad NAL 120.
[0196] Como se muestra en el ejemplo de la FIG. 5D, sin embargo, en lugar de incluir un ID de visualización en la extensión 128 de la cabecera de unidad NAL, un índice de orden de visualización se señala como parte de la cabecera 122 de la unidad NAL. Es decir, de acuerdo con los aspectos de esta divulgación, el índice de orden de visualización de la cabecera 122 de la unidad NAL puede reemplazar el view_id que se señala en la cabecera 110 de la unidad NAL (FIG. 5C). Como se indicó anteriormente, el orden de visualización en general describe el orden de las visualizaciones en una unidad de acceso, como una de las unidades de acceso 102 (FIG. 5A). El índice de orden de visualización puede indicar una visualización particular, tal como una de las visualizaciones 104, en el orden de visualización de la unidad de acceso. Es decir, el índice de orden de visualización puede describir el orden de descodificación de un componente de visualización correspondiente de una unidad de acceso.
[0197] Una tabla de sintaxis de cabecera de unidad NAL de ejemplo para la extensión 128 se proporciona en la Tabla 12 a continuación:
TABLA 12 - EXTENSIÓN MVC DE CABECERA DE UNIDAD NAL
Figure imgf000037_0001
[0198] En el ejemplo mostrado en la FIG. 13, una non_idr_flag que es igual a 0 puede indicar que la unidad de acceso actual es una unidad de acceso IDR. El valor de non_idr_flag puede ser el mismo para todas las unidades VCL NAL de una unidad de acceso. En algunos casos, se puede inferir que non_idr_flag es 0 para una unidad NAL de visualización base que tiene nal_unit_type igual a 5. Además, se puede inferir que non _idr_flag es 1 para una unidad NAL de visualización base que tiene nal_unit_type igual a 1. Para las unidades NAL en las que está presente el indicador no idr, se puede modificar una variable IdrPicFlag estableciendo el indicador igual a 1 cuando el indicador no idr es igual a 0, y estableciendo el indicador igual a 0 cuando non_idr_flag es igual a 1.
[0199] Además, un anchor_pic_flag que es igual a 1 puede especificar que la unidad de acceso actual es una unidad de acceso de anclaje. En algunos casos, se puede inferir que anchor_pic_flag es igual a 0 para una unidad NAL de visualización base que tiene nal_unit_type igual a 1, y se puede inferir que es 1 para una unidad NAL de visualización base que tiene nal_unit_type igual a 4 (actualización de descodificación limpia).
[0200] El view_idx puede especificar un índice de orden de visualización para la unidad NAL. En general, las unidades NAL con el mismo valor de view_idx pertenecen a la misma visualización. El tipo de unidad NAL igual a 20 se puede usar para indicar un tipo de unidad NAL para los componentes de visualización que no están en la visualización base.
[0201] Como se muestra en el ejemplo de la Tabla 12, en contraste con el ejemplo mostrado en la FIG. 5C, el priority_ID, el temporal_id e inter_view_flag se han eliminado, y el ID de visualización se ha reemplazado por view idx. En algunos ejemplos, el indicador entre visualizaciones se puede mover fuera de la extensión 128, como se muestra en la cabecera de unidad NAL de ejemplo de la Tabla 13 a continuación:
TABLA 13 - CABECERA DE UNIDAD NAL PARA VISUALIZACIÓN BASE
Figure imgf000037_0002
Figure imgf000038_0001
[0202] En el ejemplo mostrado en la Tabla 13, un elemento inter_view_flag que es igual a 0 puede indicar que el componente de visualización actual no es utilizado para predicción entre visualizaciones por ningún otro componente de visualización en la unidad de acceso actual. Un inter_view_flag que es igual a 1 puede indicar que el componente de visualización actual puede ser utilizado para la predicción entre visualizaciones por otros componentes de visualización en la unidad de acceso actual. El valor de inter_view_flag puede ser el mismo para todas las unidades VCL NAL de un componente de visualización.
[0203] Además, en el ejemplo mostrado en la Tabla 13, cuando nal_unit_type es igual a 1 o 5, un índice de orden de visualización puede inferirse a 0, y view_id de este componente de visualización es view_id[0]. En tal ejemplo, una extensión de cabecera de unidad NAL puede no ser necesaria. Es decir, en un flujo de MVC que incluye solo dos visualizaciones (es decir, para vídeo estéreo), un índice de orden de visualización puede no ser necesario, ya que un descodificador (como el descodificador de vídeo 30) siempre puede descodificar una primera visualización (por ejemplo, visualización 0) antes de descodificar una segunda visualización (p. ej., visualización 1).
[0204] En algunos ejemplos, una unidad NAL de prefijo, que tal vez ya no sea necesaria para una visualización base (por ejemplo, visualización 0). Por ejemplo, una unidad NAL de prefijo para una visualización base tal vez ya no sea necesaria, porque un índice de orden de visualización siempre es cero para la visualización base, y una posición temporal de la visualización base se puede determinar utilizando el temporal_id. En consecuencia, el temporal_id en una cabecera de unidad NAL proporciona toda la información necesaria para asociar un componente de visualización particular con una visualización particular y con una ubicación temporal apropiada.
[0205] La tabla 14 incluye otra cabecera de unidad NAL, que se refiere a una extensión de cabecera de unidad NAL:
TABLA 14 - CABECERA DE UNIDAD NAL
Figure imgf000038_0002
Figure imgf000039_0001
[0206] En el ejemplo mostrado en la Tabla 14, un inter_view_flag que es igual a 0 puede indicar que el componente de visualización actual no es utilizado para la predicción entre visualizaciones por otros componentes de visualización en la unidad de acceso actual. Un inter_view_flag que es igual a 1 puede especificar que el componente de visualización actual puede ser utilizado para la predicción entre visualizaciones por otros componentes de visualización en la unidad de acceso actual. El valor de inter_view_flag puede ser el mismo para todas las unidades VCL NAL de un componente de visualización. Además, nal_unit_header_mvc_extension se refiere a una extensión, como la que se muestra en la Tabla 12 anterior.
[0207] De acuerdo con otros aspectos de esta divulgación, una cabecera de unidad NAL para un flujo de bits de MVC puede diseñarse de acuerdo con la Tabla 15 a continuación:
TABLA 15 - CABECERA DE UNIDAD NAL
Figure imgf000039_0002
Figure imgf000040_0001
[0208] En el ejemplo mostrado en la Tabla 15, la formación de la cabecera de unidad NAL puede depender, por ejemplo, del nal_unit_type. Es decir, por ejemplo, cuando nal_unit_type es igual a 20, y la unidad MVC NAL, la unidad NAL puede incluir el indicador no idr, el anchor_pic_flag y el view_idx descrito anteriormente. Por consiguiente, para un perfil estéreo, una cabecera de unidad NAL puede diseñarse de acuerdo con la Tabla 16 a continuación:
TABLA 16 - CABECERA DE UNIDAD NAL
Figure imgf000040_0002
Figure imgf000041_0001
[0209] En otro ejemplo más, de acuerdo con otros aspectos de esta divulgación, una cabecera de unidad NAL para un flujo de bits de MVC puede diseñarse de acuerdo con la Tabla 17 a continuación:
TABLA 17 - CABECERA DE UNIDAD NAL
Figure imgf000041_0002
[0210] Independientemente de la configuración particular de la cabecera de unidad NAL, como se ha descrito anteriormente con respecto a la FIG. 4, un conjunto de parámetros de secuencia (SPS) puede proporcionar una relación entre view_ids para las visualizaciones y los índices de orden de visualización para las visualizaciones. En consecuencia, al usar el índice de orden de visualización y los datos en el SPS, el view_id de 10 bits de MVC/AVC puede ser reemplazado en la cabecera de unidad NAL por el índice de orden de visualización, lo cual puede conllevar un ahorro de bits con respecto al esquema MVC/AVC. El índice de orden de visualización se puede usar con un valor POC o un valor de trama (número de trama) para identificar un componente de visualización de un flujo de bits. Por ejemplo, relacionando la cuadrícula de componentes de visualización mostrada en la FIG. 4 con una cuadrícula cartesiana, el índice de orden de visualización puede proporcionar la coordenada y (por ejemplo, S0, S1, S2 ...) de un componente de visualización particular, mientras que el valor POC o el valor de trama pueden proporcionar la coordenada x (por ejemplo, T0, T1, T2 ...) del componente de visualización particular. La identificación de los componentes de visualización de esta manera se puede implementar, por ejemplo, en una lista de imágenes de referencia.
[0211] De acuerdo con otros aspectos de esta divulgación, la dependencia de visualización para cada visualización de un flujo de bits de MVC puede señalarse comúnmente para todos los componentes de visualización, independientemente de si los componentes de visualización son para imágenes de anclaje y sin anclaje. En algunos ejemplos, un SPS puede incluir dependencias de visualización para los componentes de visualización, en lugar de confiar en la información en una cabecera de unidad NAL. De esta manera, el anchor_pic_flag utilizado en la extensión 128 de la cabecera de unidad NAL puede eliminarse.
[0212] En este ejemplo, un componente de visualización de una visualización dependiente señalada se puede utilizar como una imagen de referencia, tanto en la lista 0 como en la lista 1, como se ha descrito anteriormente con respecto a la FIG. 4. Además, la construcción de la lista de imágenes de referencia y el reordenamiento de la lista de imágenes de referencia para la Lista 0 y la Lista 1 también se pueden basar en la señalización común para imágenes de anclaje e imágenes sin anclaje. En algunos ejemplos, un mensaje de nivel de secuencia, información de mejora suplementaria (SEI) puede usarse para indicar cuando una imagen sin anclaje tiene una dependencia de visualización diferente a una imagen de anclaje.
[0213] De acuerdo con otros aspectos de esta divulgación, en lugar de señalar la priority_id en la cabecera de unidad NAL, el codificador de vídeo 20 puede proporcionar valores de priority_id en un SPS. Como se analizó anteriormente, en algunos ejemplos, el router 36 puede usar los valores de SPS priority_id para filtrar ciertas visualizaciones. Es decir, el router 36 puede recibir el flujo de bits completo, pero extrae un sub-flujo de bits que incluye unidades NAL que tienen valores de id de prioridad en y por debajo de un valor de prioridad especificado por el dispositivo de destino 14, y reenvía el sub-flujo de bits al dispositivo de destino.
[0214] Además, de acuerdo con los aspectos de esta divulgación, se puede usar un mensaje de adaptación de prioridad para realizar la adaptación. Por ejemplo, la Tabla 18 a continuación muestra un ejemplo de mensaje SEI de adaptación de prioridad:
TABLA 18 - MENSAJE SEI DE ADAPTACIÓN DE PRIORIDAD
Figure imgf000042_0001
[0215] En el ejemplo mostrado en la Tabla 18, la num_temporal_id_minus1 más 1 puede indicar la más alta temporal_id de las unidades NAL del flujo de bits de MVC. El same_priority_id_flag[i][j] igual a 1 elemento puede indicar que la priority_id de las unidades NAL con un temporal_id i y un índice de orden de visualización j es igual a la priority_id señalada previamente, que puede ser priority_id[i][j-1 ], cuando j>0, o priority_id[i-1][ j] cuando j=0 e i>0. El elemento priority_id[i][j] puede especificar un identificador de prioridad para las unidades NAL con temporal_id igual a i e índice de orden de visualización igual a j. Un valor inferior de prioriy_id puede indicar una mayor prioridad.
[0216] La adaptación puede basarse en la cabecera de unidad NAL y un mensaje SEI, como el que se muestra en la Tabla 18. Por ejemplo, un proceso de adaptación puede suponer que el temporal_id y el view_idx de la unidad NAL son TID y VIDX, y el priority_id objetivo es el PID. En este ejemplo, si el priority_id[TID] [VIDX] no es más grande que el PID, la unidad NAL se mantiene; de lo contrario, la unidad NAL se filtra.
[0217] Si bien el ejemplo describe la información de prioridad en un mensaje SEI, en otros ejemplos, la información descrita como señalada en el mensaje SEI puede señalarse como una parte opcional de un conjunto de parámetros, como un MVC SPS.
[0218] La FIG. 6 es un diagrama de flujo que ilustra un procedimiento de ejemplo para codificar un flujo de bits de múltiples visualizaciones. El ejemplo mostrado en la FIG. 6 se describe en general como realizado por el codificador de vídeo 20 (FIGs. 1 y 2). Sin embargo, debe entenderse que el proceso descrito con respecto a la FIG. 6 puede llevarse a cabo mediante una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificadores/descodificadores (CÓDEC), y similares.
[0219] En el ejemplo de la FIG. 6, el codificador de vídeo 20 puede codificar datos de vídeo para una pluralidad de componentes de visualización (140). Por ejemplo, el codificador de vídeo 20 puede codificar una pluralidad de una pluralidad de visualizaciones diferentes, con cada visualización correspondiente a una perspectiva, o ángulo, diferente a la que se capturaron los datos de vídeo correspondientes de una escena común. Como se señaló anteriormente, una imagen particular de una visualización particular se denomina un componente de visualización. Es decir, un componente de visualización de una visualización corresponde a una instancia temporal particular de la visualización.
[0220] El codificador de vídeo 20 también puede formar unidades NAL que incluyen una indicación de un orden de descodificación de los componentes de visualización (142). Por ejemplo, como se describe con respecto a las FIGs.
5A-5D, de acuerdo con los aspectos de esta divulgación, el codificador de vídeo 20 puede proporcionar una indicación de un índice de orden de visualización (view_idx) en las cabeceras de unidad NAL que proporciona una indicación del orden de descodificación de los componentes de visualización. En general, las unidades NAL con el mismo valor de view_idx pertenecen a la misma visualización.
[0221] El codificador de vídeo 20 también puede proporcionar información, separada de las unidades NAL, que proporciona una indicación de las relaciones entre los identificadores de visualización y el orden de descodificación (144). En algunos ejemplos, el codificador de vídeo 20 puede generar un conjunto de parámetros, como un SPS, que indica una relación entre los identificadores de visualización para las visualizaciones y los índices de orden de visualización para las visualizaciones. En otros ejemplos, el codificador de vídeo 20 puede indicar la relación entre los índices de orden de visualización y los identificadores de visualización de una manera diferente.
[0222] Usando el índice de orden de visualización y la información separada, el codificador de vídeo 20 puede reemplazar el identificador de visualización de 10 bits típicamente incluido en una cabecera de unidad NAL por el índice de orden de visualización, lo cual puede proporcionar un ahorro de bits. Por ejemplo, un índice de orden de visualización puede incluir sustancialmente menos bits que un identificador de visualización. Mientras que el codificador de vídeo 20 debe señalar la relación entre el índice de orden de visualización y los identificadores de visualización, por ejemplo, en un SPS, las cabeceras de unidad NAL típicamente consumen muchos más bits que dicha señalización. Reemplazar un identificador de visualización en una cabecera de unidad NAL por un índice de orden de visualización puede reducir el tamaño de las cabeceras de unidad NAL, logrando así un ahorro de bits respecto a la codificación de un identificador de visualización en una cabecera de unidad NAL.
[0223] Debe entenderse también que los pasos que se muestran y describen con respecto a la FIG. 6 se proporcionan meramente como ejemplo. Es decir, los pasos del procedimiento de la FIG. 6 no necesariamente se deben realizar en el orden mostrado en la FIG. 6, y se pueden realizar menos pasos, pasos adicionales o alternativos.
[0224] La FIG. 7 es un diagrama de flujo que ilustra un procedimiento de ejemplo para descodificar un flujo de bits de múltiples visualizaciones. El ejemplo mostrado en la FIG. 7 se describe en general como realizado por el descodificador de vídeo 30 (FIGs. 1 y 3). Sin embargo, debe entenderse que el proceso descrito con respecto a la FIG. 7 puede llevarse a cabo mediante una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificadores/descodificadores (CÓDEC), y similares.
[0225] En el ejemplo de la FIG. 7, el descodificador de vídeo 30 puede recibir una o más unidades NAL para cada componente de visualización que incluye información indicativa de un orden de descodificación de los componentes de visualización respectivos (150). De acuerdo con los aspectos de esta divulgación, como se describe con respecto a la FIG. 6, el orden de descodificación de los componentes de visualización respectivos puede indicarse utilizando un índice de orden de visualización. Por consiguiente, el descodificador de vídeo 30 puede recibir una indicación de un índice de orden de visualización (view_idx) en las cabeceras de unidad NAL que proporciona una indicación del orden de descodificación de los componentes de visualización. En general, las unidades NAL con el mismo valor de view_idx pertenecen a la misma visualización.
[0226] El descodificador de vídeo 30 también puede recibir información que indica relaciones entre los identificadores de visualización y el orden de descodificación de los componentes de visualización (152). En algunos ejemplos, el descodificador de vídeo 30 puede recibir un conjunto de parámetros, como un SPS, que indica una relación entre los identificadores de visualización para las visualizaciones y los índices de orden de visualización para las visualizaciones. En otros ejemplos, el descodificador de vídeo 30 puede recibir una indicación diferente de la relación entre los índices de orden de visualización y los identificadores de visualización.
[0227] El descodificador de vídeo 30 también puede descodificar los datos de vídeo de múltiples visualizaciones utilizando la información recibida. Es decir, por ejemplo, el descodificador de vídeo puede descodificar cada una de las visualizaciones y determinar el identificador de visualización apropiado utilizando la información separada recibida.
A continuación, el descodificador de vídeo 30 puede presentar una representación 3D utilizando las visualizaciones, por ejemplo, en el dispositivo de visualización 32.
[0228] Debe entenderse también que los pasos que se muestran y describen con respecto a la FIG. 7 se proporcionan meramente como ejemplo. Es decir, los pasos del procedimiento de la FIG. 7 no necesariamente se deben realizar en el orden mostrado en la FIG. 7, y se pueden realizar menos pasos, pasos adicionales o alternativos.
[0229] La FIG. 8 es un diagrama de flujo que ilustra un procedimiento de ejemplo para codificar un flujo de bits de múltiples visualizaciones. El ejemplo mostrado en la FIG. 8 se describe en general como realizado por el codificador de vídeo 20 (FIGs. 1 y 2). En otros ejemplos, el proceso descrito con respecto a la FIG. 8 puede llevarse a cabo mediante una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificadores/descodificadores (CÓDEC), y similares. En el ejemplo de la FIG. 8, el codificador de vídeo 20 puede determinar, para cualquier componente de visualización de una primera visualización, información de visualización de referencia que indique una o más visualizaciones de referencia para predecir componentes de visualización de la primera visualización (160). Por ejemplo, como se indicó anteriormente, las dependencias de la visualización se pueden señalar de la misma manera para todos los componentes de visualización de una visualización, independientemente de si un componente de visualización particular de una unidad de acceso particular es una imagen de anclaje (punto de acceso aleatorio), o si el componente de visualización particular de la unidad de acceso particular es una imagen sin anclaje. En algunos casos, la información de visualización de referencia puede indicar las dependencias de la visualización utilizando valores de índice de visualización de referencia (valores de índice de orden de visualización para las visualizaciones de referencia). Es decir, la información de visualización de referencia puede contener valores de índice de visualización de referencia para cada visualización de referencia, lo cual puede indicar el orden de descodificación de la visualización de referencia en una unidad de acceso. En otros ejemplos, la información de visualización de referencia puede contener valores de diferencia de índice de visualización de referencia, que pueden indicar una diferencia entre un índice de orden de visualización de una visualización de referencia particular y un índice de orden de visualización del componente de visualización que se está codificando actualmente. En los ejemplos en los que se utilizan valores de índice de orden de visualización, como se ha descrito anteriormente, el codificador de vídeo 20 también puede proporcionar información adicional que indica las relaciones entre los valores de índice de orden de visualización y los identificadores de visualización de las visualizaciones.
[0230] El codificador de vídeo 20 también puede, al codificar un primer componente de visualización en una unidad de acceso en la primera visualización, incluir uno o más candidatos de referencia en una lista de imágenes de referencia basándose en la unidad de acceso a la que pertenece el primer componente de visualización, la información de visualización de referencia, y el número de visualizaciones de referencia indicadas por la información de visualización de referencia (162). Por ejemplo, como se ha descrito anteriormente, el codificador de vídeo 20 puede construir una lista de imágenes de referencia que incluya imágenes de referencia candidatas para predecir el primer componente de visualización (imágenes de referencia "candidatas", porque las imágenes de referencia pueden eliminarse de una lista de imágenes de referencia final). El codificador de vídeo 20 puede identificar imágenes de referencia candidatas entre visualizaciones en cada una de las visualizaciones de referencia indicadas por la información de visualización de referencia que pertenecen a la misma unidad de acceso (por ejemplo, tienen la misma instancia temporal) que el primer componente de visualización. El codificador de vídeo 20 puede agregar todos los componentes de visualización identificados a la lista de imágenes de referencia.
[0231] Por consiguiente, en el ejemplo mostrado en la FIG. 8, el codificador de vídeo 20 puede construir la lista de imágenes de referencia sin importar si un componente de visualización que se está codificando actualmente es una imagen de anclaje o una imagen sin anclaje. Además, el codificador de vídeo 20 puede construir la lista de imágenes de referencia sin importar si las imágenes de referencia candidatas están incluidas en la Lista 0 o la Lista 1. Es decir, el codificador de vídeo 20 puede construir una Lista de imágenes de referencia 0 o una Lista de imágenes de referencia 1 utilizando la misma información de visualización de referencia. Además, el codificador de vídeo 20 puede agregar los candidatos de referencia identificados tanto a la Lista 0 como a la Lista 1 por igual.
[0232] El codificador de vídeo 20 también puede codificar el primer componente de visualización basándose en uno o más candidatos de referencia en la lista de imágenes de referencia (164). Por ejemplo, el codificador de vídeo 20 puede identificar un componente de visualización en la lista de imágenes de referencia, generar datos residuales utilizando el componente de visualización identificado y codificar los datos residuales como se describe con respecto a la FIG. 2. El codificador de vídeo 20 también puede proporcionar al primer componente de visualización codificado la información de visualización de referencia determinada en un flujo de bits codificado (166).
[0233] Debería entenderse que los pasos mostrados y descritos con respecto a la FIG. 8 se proporcionan solo como un ejemplo. Es decir, los pasos del procedimiento de la FIG. 8 no necesariamente se deben realizar en el orden mostrado en la FIG. 8, y se pueden realizar menos pasos, pasos adicionales o alternativos.
[0234] La FIG. 9 es un diagrama de flujo que ilustra un procedimiento de ejemplo para descodificar un flujo de bits de múltiples visualizaciones. El ejemplo mostrado en la FIG. 9 se describe en general como realizado por el descodificador de vídeo 30 (FIGs. 1 y 3). En otros ejemplos, el proceso descrito con respecto a la FIG. 9 puede llevarse a cabo mediante una variedad de otros procesadores, unidades de procesamiento, unidades de codificación basadas en hardware tales como codificadores/descodificadores (CÓDEC), y similares.
[0235] En el ejemplo mostrado en la FIG. 9, el descodificador de vídeo 30 puede obtener, a partir de un flujo de bits codificado y para cualquier componente de visualización de una primera visualización, información de visualización de referencia que indique una o más visualizaciones de referencia para predecir componentes de visualización de la primera visualización (170). Por ejemplo, como se indicó anteriormente con respecto a la FIG. 8, las dependencias de visualización se pueden señalar de la misma manera para todos los componentes de visualización de una visualización, independientemente de si un componente de visualización particular de una unidad de acceso particular es una imagen de anclaje (punto de acceso aleatorio), o si el componente de visualización particular de la unidad de acceso particular de la unidad de acceso particular es una imagen sin anclaje. En algunos casos, la información de visualización de referencia puede indicar las dependencias de la visualización utilizando valores de índice de visualización de referencia (valores de índice de orden de visualización para las visualizaciones de referencia). Es decir, la información de visualización de referencia puede contener valores de índice de visualización de referencia para cada visualización de referencia, lo cual puede indicar el orden de descodificación de la visualización de referencia en una unidad de acceso. En otros ejemplos, la información de visualización de referencia puede contener valores de diferencia de índice de visualización de referencia, que pueden indicar una diferencia entre un índice de orden de visualización de una visualización de referencia particular y un índice de orden de visualización del componente de visualización que se está codificando actualmente. En los ejemplos en los que se utilizan valores de índice de orden de visualización, como se ha descrito anteriormente, el descodificador de vídeo 30 también puede obtener información adicional del flujo de bits codificado que indica las relaciones entre los valores de índice de orden de visualización y los identificadores de visualización de las visualizaciones. Dicha información se puede obtener a partir del nivel de secuencia.
[0236] El descodificador de vídeo 30 también puede, al descodificar un primer componente de visualización en una unidad de acceso en la primera visualización, incluir uno o más candidatos de referencia en una lista de imágenes de referencia basándose en la unidad de acceso a la que pertenece el primer componente de visualización, la información de visualización de referencia, y el número de visualizaciones de referencia indicadas por la información de visualización de referencia (172). Por ejemplo, como se ha descrito anteriormente, el descodificador de vídeo 30 puede construir una lista de imágenes de referencia que incluya imágenes de referencia candidatas para predecir el primer componente de visualización. El descodificador de vídeo 30 puede identificar imágenes de referencia candidatas entre visualizaciones en cada una de las visualizaciones de referencia indicadas por la información de visualización de referencia que pertenecen a la misma unidad de acceso (por ejemplo, tienen la misma instancia temporal) que el primer componente de visualización. El descodificador de vídeo 30 puede agregar todos los componentes de visualización identificados a la lista de imágenes de referencia.
[0237] Por consiguiente, en el ejemplo mostrado en la FIG. 9, el descodificador de vídeo 30 puede construir la lista de imágenes de referencia sin importar si un componente de visualización que se está codificando actualmente es una imagen de anclaje o una imagen sin anclaje. Además, el descodificador de vídeo 30 puede construir la lista de imágenes de referencia sin importar si las imágenes de referencia candidatas se incluyen en la Lista 0 o la Lista 1. Es decir, el descodificador de vídeo 30 puede construir una Lista de imágenes de referencia 0 o una Lista de imágenes de referencia 1 utilizando la misma información de visualización de referencia, que solo puede obtenerse una vez del flujo de bits codificado. Además, el descodificador de vídeo 30 puede agregar los candidatos de referencia identificados tanto a la Lista 0 como a la Lista 1 por igual.
[0238] El descodificador de vídeo 30 también puede descodificar el primer componente de visualización basándose en uno o más candidatos de referencia en la lista de imágenes de referencia (174). Por ejemplo, el descodificador de vídeo 20 puede identificar un componente de visualización en la lista de imágenes de referencia, combinar el componente de visualización identificado con los datos residuales descodificados (del flujo de bits codificado) para generar el componente de visualización, como se describe con respecto a la FIG. 3 anterior.
[0239] Debería entenderse que los pasos mostrados y descritos con respecto a la FIG. 9 se proporcionan solo como un ejemplo. Es decir, los pasos del procedimiento de la FIG. 9 no necesariamente se deben realizar en el orden mostrado en la FIG. 9, y se pueden realizar menos pasos, pasos adicionales o alternativos.
[0240] Si bien a ciertos elementos sintácticos descritos con respecto a esta divulgación se les han proporcionado nombres de ejemplo con fines explicativos, debe entenderse que los conceptos descritos en esta divulgación son más en general aplicables a cualquier elemento sintáctico, independientemente del nombre. Por ejemplo, mientras ciertos aspectos se refieren a un "índice de orden de visualización", "view_order_index" o "view_idx", debe entenderse que a tal elemento sintáctico se le puede dar un nombre alternativo en un futuro estándar de codificación.
[0241] Si bien se describen ciertas técnicas de esta divulgación con respecto al estándar HEVC emergente, se debería entender que las técnicas no se limitan a ningún estándar de codificación particular. Es decir, las técnicas se relacionan más en general con lograr eficiencias de codificación en la codificación de vídeo de múltiples visualizaciones, por ejemplo, a través de unidades NAL y conjuntos de parámetros más cortos y/o menos complejos, como se ha descrito anteriormente.
[0242] Debería entenderse que, dependiendo del ejemplo, ciertos actos o sucesos de cualquiera de los procedimientos descritos en el presente documento pueden realizarse en una secuencia distinta, pueden añadirse, fundirse u omitirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en práctica del procedimiento). Además, en ciertos ejemplos, los actos o sucesos pueden realizarse simultáneamente, por ejemplo, mediante el procesamiento de múltiples hilos, el procesamiento de interrupciones o múltiples procesadores, en lugar de secuencialmente. Además, aunque ciertos aspectos de esta divulgación se describen como realizados por un único módulo o unidad, con fines de claridad, se debería entender que las técnicas de esta divulgación pueden ser realizadas por una combinación de unidades o módulos asociados a un codificador de vídeo.
[0243] 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 pueden almacenarse en, y transmitirse por, un medio legible por ordenador, como una o más instrucciones o código, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que correspondan a un medio tangible tal como medios de almacenamiento de datos o medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación.
[0244] De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) medios de almacenamiento tangibles legibles por ordenador que sean no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0245] 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 de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. Además, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde una sede de la Red, un servidor u otro origen remoto usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio.
[0246] Sin embargo, debería entenderse 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 cambio, se orientan a medios de almacenamiento tangibles no transitorios. Los discos, como se usan en el presente documento, incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos reproducen usualmente los datos magnéticamente, mientras que otros discos reproducen los datos ópticamente con láseres. Las combinaciones de lo anterior también deberían incluirse dentro del alcance de los medios legibles por ordenador.
[0247] Las instrucciones se pueden ejecutar por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables 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 la codificación y la descodificación, o incorporados en un códec combinado. También, las técnicas se podrían implementar totalmente en uno o más circuitos o elementos lógicos.
[0248] Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec, o ser proporcionadas por un grupo de unidades de hardware interoperativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, conjuntamente con software y/o firmware adecuados.
[0249] Se han descrito diversos aspectos de la divulgación. Estos y otros aspectos están dentro del alcance de las reivindicaciones siguientes.

Claims (13)

  1. REIVINDICACIONES
    i . Un procedimiento para descodificación de datos de vídeo, comprendiendo el procedimiento:
    obtener, a partir de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para cada componente de visualización de una pluralidad de componentes de visualización de datos de vídeo codificados, en el que cada componente de visualización de la pluralidad de componentes de visualización corresponde a una ubicación temporal común, y en el que cada unidad NAL de la una o más unidades NAL encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos e incluye como parte de una cabecera de unidad NAL un índice de orden de visualización que describe un orden de descodificación de los componentes de visualización respectivos y no incluye un identificador de visualización;
    obtener información, a partir de un nivel de secuencia del flujo de bits codificado y separado de la una o más unidades NAL, indicando las relaciones entre los identificadores de visualización para visualizaciones asociadas con los componentes de visualización y el índice de orden de visualización que describe el orden de descodificación de los componentes de visualización, en el que la información indicativa de la relación comprende una tabla de asignación que asigna identificadores de visualización a valores de índice de orden de visualización; y
    descodificar los datos de vídeo codificados de la pluralidad de componentes de visualización en el orden de descodificación basándose en la información obtenida y determinando el identificador de visualización de una o más unidades NAL utilizando la tabla de asignación.
  2. 2. El procedimiento según la reivindicación 1, en el que obtener la información indicativa del orden de descodificación de los componentes de visualización respectivos comprende obtener un valor de índice de orden de visualización predeterminado de cero para una visualización base de la pluralidad de componentes de visualización.
  3. 3. El procedimiento de cualquier reivindicación precedente, en el que la una o más unidades NAL incluyen además información indicativa de si un primer componente de visualización de una primera visualización se usa como una referencia para predicción entre visualizaciones de un segundo componente de visualización de una segunda visualización diferente.
  4. 4. El procedimiento según cualquier reivindicación precedente, que comprende además obtener, a partir del flujo de bits codificado, valores de recuento de orden de imagen (POC) o valores de trama para la pluralidad de componentes de visualización, y en el que la descodificación comprende la descodificación de los datos de vídeo codificados basándose en la información indicativa del orden descodificación y los valores POC o los valores de trama respectivamente.
  5. 5. Un aparato para codificar datos de vídeo, comprendiendo el aparato:
    medios para obtener, a partir de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para cada componente de visualización de una pluralidad de componentes de visualización de datos de vídeo codificados, en el que cada componente de visualización de la pluralidad de componentes de visualización corresponde a una ubicación temporal común y en el que cada unidad NAL de una o más unidades NAL encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos e incluye como parte de una cabecera de unidad NAL un índice de orden de visualización que describe un orden de descodificación de los componentes de visualización respectivos y no incluye un identificador de visualización;
    medios para obtener información, a partir de un nivel de secuencia del flujo de bits codificado y separada de las unidades NAL, indicando las relaciones entre los identificadores de visualización para visualizaciones asociadas con los componentes de visualización y el índice de orden de visualización que describe el orden de descodificación de los componentes de visualización, en el que la información indicativa de la relación comprende una tabla de asignación que asigna identificadores de visualización a valores de índice de orden de visualización; y
    medios para descodificar los datos de vídeo codificados de la pluralidad de componentes de visualización en el orden de descodificación basándose en la información obtenida y determinando el identificador de visualización de una o más unidades NAL utilizando la tabla de asignación.
  6. 6. El aparato de la reivindicación 5, en el que para obtener la información indicativa del orden de descodificación de los componentes de visualización respectivos, el uno o más procesadores están configurados para obtener un valor de índice de orden de visualización predeterminado de cero para una visualización base de la pluralidad de componentes de visualización.
  7. 7. Un procedimiento para codificación de datos de vídeo, comprendiendo el procedimiento:
    codificar datos de vídeo para una pluralidad de componentes de visualización para visualizaciones respectivas de datos de vídeo, en el que cada uno de la pluralidad de componentes de visualización corresponde a una ubicación temporal común;
    formar, como parte de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para los datos de vídeo codificados de cada uno de los componentes de visualización, de manera que cada una de las unidades NAL incluya como parte de una cabecera de unidad NAL un índice de orden de visualización que describe un orden de descodificación de los datos de vídeo de los componentes de visualización respectivos y encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos y no incluye un identificador de visualización; y
    proporcionar información en un nivel de secuencia del flujo de bits codificado, separada de las unidades NAL, que indica las relaciones entre los identificadores de visualización para las visualizaciones asociadas con los componentes de visualización y el índice de orden de visualización que describe el orden de descodificación de los componentes de visualización, en el que la información indicativa de la relación comprende una tabla de asignación que asigna identificadores de visualización a valores de índice de orden de visualización.
  8. 8. El procedimiento según la reivindicación 7, en el que proporcionar la información indicativa del orden de descodificación de los componentes de visualización respectivos comprende proporcionar un valor de índice de orden de visualización predeterminado de cero para una visualización base de la pluralidad de componentes de visualización.
  9. 9. El procedimiento según la reivindicación 7 u 8, en el que la una o más unidades NAL incluyen además información indicativa de si un primer componente de visualización de una primera visualización se usa como referencia para la predicción entre visualizaciones de un segundo componente de visualización de una segunda visualización diferente.
  10. 10. El procedimiento según cualquiera de las reivindicaciones 7 a 9, en el que la información que indica las relaciones entre los identificadores de visualización para las visualizaciones y el orden de descodificación de los componentes de visualización comprende una tabla de asignación que asigna el orden de descodificación de los componentes de visualización a los identificadores de visualización para las visualizaciones.
  11. 11. Un aparato para codificar datos de vídeo, comprendiendo el aparato:
    medios para codificar datos de vídeo para una pluralidad de componentes de visualización para visualizaciones respectivas de datos de vídeo, en el que cada uno de la pluralidad de componentes de visualización corresponde a una ubicación temporal común;
    medios para formar, como parte de un flujo de bits codificado, una o más unidades de capa de abstracción de red (NAL) para los datos de vídeo codificados de cada uno de los componentes de visualización, de modo que cada una de las unidades NAL incluya como parte de una cabecera de unidad NAL un índice de orden de visualización que describe un orden de descodificación de los datos de vídeo de los componentes de visualización respectivos y encapsula al menos una parte de los datos de vídeo codificados para los componentes de visualización respectivos y no incluye un identificador de visualización; y
    medios para proporcionar información a un nivel de secuencia en el flujo de bits codificado, separada de las unidades Na L, indicando las relaciones entre los identificadores de visualización para las visualizaciones asociadas con los componentes de visualización y el índice de orden de visualización que describe el orden de descodificación de los componentes de visualización, en el que la información indicativa del relación comprende una tabla de asignación que asigna identificadores de visualización a valores de índice de orden de visualización.
  12. 12. El aparato según la reivindicación 11, en el que los medios para proporcionar la información indicativa del orden de descodificación de los componentes de visualización respectivos comprenden medios para proporcionar un valor de índice de orden de visualización predeterminado de cero para una visualización base de la pluralidad de componentes de visualización.
  13. 13. Un medio de almacenamiento no transitorio legible por ordenador que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o más procesadores emprendan el procedimiento según cualquiera de las reivindicaciones 1 a 4 o 7 a 10.
ES12741460T 2011-07-28 2012-07-27 Codificación de vídeo de múltiples visualizaciones Active ES2707890T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161512771P 2011-07-28 2011-07-28
US13/559,269 US9635355B2 (en) 2011-07-28 2012-07-26 Multiview video coding
PCT/US2012/048475 WO2013016610A1 (en) 2011-07-28 2012-07-27 Multiview video coding

Publications (1)

Publication Number Publication Date
ES2707890T3 true ES2707890T3 (es) 2019-04-05

Family

ID=46601939

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12741460T Active ES2707890T3 (es) 2011-07-28 2012-07-27 Codificación de vídeo de múltiples visualizaciones

Country Status (11)

Country Link
US (1) US9635355B2 (es)
EP (1) EP2737699B1 (es)
JP (1) JP5902300B2 (es)
KR (1) KR101617971B1 (es)
CN (1) CN103733626B (es)
BR (1) BR112014001799B1 (es)
CA (1) CA2843187C (es)
ES (1) ES2707890T3 (es)
HU (1) HUE041675T2 (es)
RU (1) RU2556882C1 (es)
WO (1) WO2013016610A1 (es)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10237565B2 (en) 2011-08-01 2019-03-19 Qualcomm Incorporated Coding parameter sets for various dimensions in video coding
US9258559B2 (en) 2011-12-20 2016-02-09 Qualcomm Incorporated Reference picture list construction for multi-view and three-dimensional video coding
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US20130272371A1 (en) * 2012-04-16 2013-10-17 Sony Corporation Extension of hevc nal unit syntax structure
US10205961B2 (en) 2012-04-23 2019-02-12 Qualcomm Incorporated View dependency in multi-view coding and 3D coding
PL2865177T3 (pl) 2012-06-25 2019-03-29 Huawei Technologies Co., Ltd. Sposób sygnalizowania obrazu stopniowego dostępu do warstwy czasowej
US9351005B2 (en) 2012-09-24 2016-05-24 Qualcomm Incorporated Bitstream conformance test in video coding
US9479779B2 (en) 2012-10-01 2016-10-25 Qualcomm Incorporated Sub-bitstream extraction for multiview, three-dimensional (3D) and scalable media bitstreams
KR101706318B1 (ko) * 2012-10-03 2017-02-15 에이치에프아이 이노베이션 인크. 3차원 비디오 코딩을 위한 모션 데이터 버퍼 감소 방법 및 장치
US9154785B2 (en) 2012-10-08 2015-10-06 Qualcomm Incorporated Sub-bitstream applicability to nested SEI messages in video coding
TWI669950B (zh) * 2012-12-21 2019-08-21 日商新力股份有限公司 影像處理裝置及方法
US9609347B2 (en) * 2013-04-04 2017-03-28 Qualcomm Incorporated Advanced merge mode for three-dimensional (3D) video coding
KR102186461B1 (ko) * 2013-04-05 2020-12-03 삼성전자주식회사 정수 픽셀의 위치와 관련하여 비디오의 부호화 및 복호화를 수행하는 방법과 그 장치
US9467700B2 (en) * 2013-04-08 2016-10-11 Qualcomm Incorporated Non-entropy encoded representation format
US9800895B2 (en) * 2013-06-27 2017-10-24 Qualcomm Incorporated Depth oriented inter-view motion vector prediction
GB2516825B (en) * 2013-07-23 2015-11-25 Canon Kk Method, device, and computer program for encapsulating partitioned timed media data using a generic signaling for coding dependencies
US9854270B2 (en) * 2013-12-19 2017-12-26 Qualcomm Incorporated Device and method for scalable coding of video information
JP2015136057A (ja) * 2014-01-17 2015-07-27 ソニー株式会社 通信装置、通信データ生成方法、および通信データ処理方法
US10264286B2 (en) 2014-06-26 2019-04-16 Qualcomm Incorporated Bitstream conformance constraints in scalable video coding
US20160048366A1 (en) * 2014-08-14 2016-02-18 David John Cowin Video Streaming System and Method for a Wearable Display
JP6238255B2 (ja) 2016-05-25 2017-11-29 株式会社Nexpoint 監視カメラシステムによる監視方法及び動画分割装置
KR20230145226A (ko) 2018-09-12 2023-10-17 후아웨이 테크놀러지 컴퍼니 리미티드 참조 화상 리스트 구조를 위한 인덱스 시그널링
US10812818B2 (en) * 2018-12-14 2020-10-20 Tencent America LLC Network abstraction unit layer type classes in network abstraction layer unit header
WO2020185128A1 (en) * 2019-03-12 2020-09-17 Huawei Technologies Co., Ltd. Design for distributed decoding refresh in video coding
KR102477310B1 (ko) * 2020-12-29 2022-12-12 재단법인 경주스마트미디어센터 Drm 콘텐츠 병렬 패키징 장치 및 이를 포함하는 drm 콘텐츠 병렬 패키징 시스템 및 drm 콘텐츠 병렬 패키징 방법
KR102302755B1 (ko) * 2019-12-30 2021-09-16 재단법인 경주스마트미디어센터 Drm 콘텐츠 병렬 패키징 장치 및 이를 포함하는 drm 콘텐츠 병렬 패키징 시스템 및 drm 콘텐츠 병렬 패키징 방법
US20220060684A1 (en) * 2020-03-26 2022-02-24 Alibaba Group Holding Limited Methods and apparatuses for signaling picture header

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7728878B2 (en) 2004-12-17 2010-06-01 Mitsubishi Electric Research Labortories, Inc. Method and system for processing multiview videos for view synthesis using side information
CN101346998B (zh) 2006-01-05 2012-01-11 日本电信电话株式会社 视频编码方法及解码方法、其装置
WO2007081176A1 (en) 2006-01-12 2007-07-19 Lg Electronics Inc. Processing multiview video
MX2008012382A (es) 2006-03-29 2008-11-18 Thomson Licensing Metodos y aparatos para usarse en un sistema de codificacion de video de multiples vistas.
EP2005752A4 (en) 2006-03-30 2010-06-09 Lg Electronics Inc METHOD AND APPARATUS FOR DECODING / ENCODING A VIDEO SIGNAL
CN101449585A (zh) 2006-03-30 2009-06-03 Lg电子株式会社 用于解码/编码视频信号的方法和装置
CN101496407B (zh) 2006-07-06 2013-02-06 汤姆逊许可证公司 用于针对多视角视频编码和解码解耦合帧号和/或图像顺序计数(poc)的方法和装置
WO2008005575A2 (en) 2006-07-06 2008-01-10 Thomson Licensing Method and apparatus for decoupling frame number and/or picture order count (poc) for multi-view video encoding and decoding
BRPI0714564B1 (pt) * 2006-07-20 2020-09-15 Interdigital Vc Holdings, Inc Método e aparelho para escalabilidade de visualização por sinalização em codificação de multivisualização em vídeo, estrutura de sinal de vídeo para codificação de vídeo e mídia de armazenagem
ES2630203T3 (es) 2006-10-10 2017-08-18 Nippon Telegraph And Telephone Corporation Método y dispositivo de control de codificación de predicción intra, su programa, y medio de almacenamiento que contiene programa
CN101653000B (zh) * 2006-10-13 2013-01-02 汤姆逊许可公司 用于包含多视点视频编码的参考图像管理的方法
JP4793366B2 (ja) 2006-10-13 2011-10-12 日本ビクター株式会社 多視点画像符号化装置、多視点画像符号化方法、多視点画像符号化プログラム、多視点画像復号装置、多視点画像復号方法、及び多視点画像復号プログラム
JP5108896B2 (ja) 2006-12-21 2012-12-26 トムソン ライセンシング 多視点映像符号化及び復号化用の、ハイレベルシンタックスを使用した改善されたシグナリングのための方法及び装置
WO2008085876A2 (en) * 2007-01-04 2008-07-17 Thomson Licensing Method and apparatus for video error concealment using high level syntax reference views in multi-view coded video
JP5475464B2 (ja) 2007-01-17 2014-04-16 エルジー エレクトロニクス インコーポレイティド ビデオ信号処理方法及び装置
CN101669367A (zh) 2007-03-02 2010-03-10 Lg电子株式会社 用于解码/编码视频信号的方法及设备
JP2009100070A (ja) 2007-10-15 2009-05-07 Victor Co Of Japan Ltd 多視点画像符号化方法、多視点画像符号化装置及び多視点画像符号化プログラム
WO2010079921A2 (ko) 2009-01-12 2010-07-15 엘지 전자 주식회사 뎁스 정보를 이용한 비디오 신호 처리 방법 및 장치
WO2010086500A1 (en) 2009-01-28 2010-08-05 Nokia Corporation Method and apparatus for video coding and decoding
EP2399394B1 (en) 2009-02-19 2020-09-30 InterDigital Madison Patent Holdings 3d video formats
US8982183B2 (en) 2009-04-17 2015-03-17 Lg Electronics Inc. Method and apparatus for processing a multiview video signal
KR20120027194A (ko) 2009-04-21 2012-03-21 엘지전자 주식회사 다시점 비디오 신호 처리 방법 및 장치
US8933989B2 (en) 2009-04-22 2015-01-13 Lg Electronics Inc. Reference picture list changing method of multi-view video
US8411746B2 (en) 2009-06-12 2013-04-02 Qualcomm Incorporated Multiview video coding over MPEG-2 systems
US8780999B2 (en) 2009-06-12 2014-07-15 Qualcomm Incorporated Assembling multiview video coding sub-BITSTREAMS in MPEG-2 systems
WO2011013257A1 (ja) 2009-07-29 2011-02-03 パナソニック株式会社 マルチビュービデオ復号装置およびその方法
US8976871B2 (en) 2009-09-16 2015-03-10 Qualcomm Incorporated Media extractor tracks for file format track selection
JP5524594B2 (ja) 2009-12-14 2014-06-18 パナソニック株式会社 画像復号装置及び画像復号方法
WO2012052968A1 (en) 2010-10-20 2012-04-26 Nokia Corporation Method and device for video coding and decoding
US10237565B2 (en) 2011-08-01 2019-03-19 Qualcomm Incorporated Coding parameter sets for various dimensions in video coding
US9258559B2 (en) 2011-12-20 2016-02-09 Qualcomm Incorporated Reference picture list construction for multi-view and three-dimensional video coding

Also Published As

Publication number Publication date
EP2737699B1 (en) 2018-10-24
RU2556882C1 (ru) 2015-07-20
EP2737699A1 (en) 2014-06-04
CA2843187A1 (en) 2013-01-31
JP2014522176A (ja) 2014-08-28
HUE041675T2 (hu) 2019-05-28
CN103733626B (zh) 2017-04-26
KR20140056311A (ko) 2014-05-09
WO2013016610A1 (en) 2013-01-31
US20130114670A1 (en) 2013-05-09
CN103733626A (zh) 2014-04-16
KR101617971B1 (ko) 2016-05-03
JP5902300B2 (ja) 2016-04-13
CA2843187C (en) 2017-12-05
BR112014001799A2 (pt) 2017-02-21
US9635355B2 (en) 2017-04-25
BR112014001799B1 (pt) 2022-06-14

Similar Documents

Publication Publication Date Title
ES2707890T3 (es) Codificación de vídeo de múltiples visualizaciones
ES2951060T3 (es) Señalización de identificadores de subimágenes en la codificación de vídeo
ES2719768T3 (es) Activación de conjuntos de parámetros para la codificación de vídeo tridimensional (3DVC) compatible con codificación de vídeo de múltiples vistas (MVC)
US9674525B2 (en) Multiview video coding
ES2867583T3 (es) Codificación de mensajes de SEI de MCTS anidados
US10205961B2 (en) View dependency in multi-view coding and 3D coding
ES2647948T3 (es) Reutilización de conjuntos de parámetros para la codificación de vídeo
ES2834114T3 (es) Indicación de procesamiento en paralelo en codificación de vídeo
US9674519B2 (en) MPEG frame compatible video coding
ES2703062T3 (es) Síntesis de visualización en vídeo 3D
EP3114839A1 (en) Simplified sub-prediction unit (sub-pu) motion parameter inheritence (mpi)
WO2013106705A2 (en) Coding parameter sets and nal unit headers for video coding
ES2780686T3 (es) Tipo de dependencia entre vistas en MV-HEVC
AU2013272130A1 (en) Signaling data for long term reference pictures for video coding