ES2834114T3 - Indicación de procesamiento en paralelo en codificación de vídeo - Google Patents

Indicación de procesamiento en paralelo en codificación de vídeo Download PDF

Info

Publication number
ES2834114T3
ES2834114T3 ES14792942T ES14792942T ES2834114T3 ES 2834114 T3 ES2834114 T3 ES 2834114T3 ES 14792942 T ES14792942 T ES 14792942T ES 14792942 T ES14792942 T ES 14792942T ES 2834114 T3 ES2834114 T3 ES 2834114T3
Authority
ES
Spain
Prior art keywords
video
vps
enabled
tiles
flag
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
ES14792942T
Other languages
English (en)
Inventor
Krishnakanth Rapaka
Ye-Kui Wang
Fnu Hendry
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 ES2834114T3 publication Critical patent/ES2834114T3/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/37Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability with arrangements for assigning different transmission priorities to video input data or to video coded data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

Un procedimiento de descodificación de datos de vídeo, comprendiendo el procedimiento: descodificar, a partir de un conjunto de parámetros de vídeo, VPS, de un flujo de bits de múltiples capas, datos que indican una configuración de mosaico para una i-ésima capa del flujo de bits de múltiples capas, en el que la descodificación de los datos que indican la configuración de mosaico comprende la descodificación de un primer elemento de sintaxis, tiles_enabled_vps_flag[i], en el VPS para la i-ésima capa del flujo de bits de múltiples capas, en el que un valor de tiles_enabled_vps_flag[i] igual a 1 indica que el valor de un segundo elemento de sintaxis, tiles_enabled_flag, incluido en cada conjunto de parámetros de imagen, PPS, al que se hace referencia por al menos una imagen de la i-ésima capa es igual a 1, en el que un valor de tiles_enabled_flag igual a 1 indica que los mosaicos están habilitados para imágenes que se refieren a ese PPS; y descodificar el flujo de bits de múltiples capas de acuerdo con los datos descodificados del VPS.

Description

DESCRIPCIÓN
indicación de procesamiento en paralelo en codificación de vídeo
CAMPO TÉCNICO
[0001] Esta divulgación se refiere a la codificación de vídeo y, más particularmente, a técnicas para el procesamiento en paralelo en codificación de vídeo.
ANTECEDENTES
[0002] Las capacidades de vídeo digital se pueden incorporar en 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 tipo tablet, 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 avanzada de vídeo (AVC), el estándar de Codificación de vídeo de alta eficacia (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 más eficazmente implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o 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 (es decir, una trama de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo, que también se pueden denominar CTB, CU y/o nodos de codificación. Los bloques de vídeo en un fragmento intracodificado (1) de una imagen se codifican usando la predicción espacial con respecto a muestras de referencia en bloques contiguos de la misma imagen. Los bloques de vídeo en un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia de bloques contiguos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar tramas y las imágenes de referencia se pueden denominar tramas 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 que se va a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio de píxel en 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 matriz bidimensional, se pueden explorar para producir un vector unidimensional de coeficientes de transformada, y se puede aplicar la codificación por entropía para lograr aún más compresión.
BREVE EXPLICACIÓN
[0005] En general, esta divulgación describe técnicas para procesamiento en paralelo de codificación de vídeo. Por ejemplo, esta divulgación describe técnicas para el procesamiento en paralelo en procesos de codificación de vídeo de múltiples capas, incluidas las extensiones de múltiples capas del estándar de codificación de vídeo de alta eficiencia (HEVC). Las técnicas de esta divulgación incluyen proporcionar una indicación temprana del uso o disponibilidad de herramientas de procesamiento en paralelo (por ejemplo, a un nivel de conjunto de parámetros de vídeo (VPS)) para un proceso de codificación de vídeo.
[0006] En un ejemplo, un procedimiento para descodificar datos de vídeo incluye descodificar, a partir de un conjunto de parámetros de vídeo (VPS) de un flujo de bits de múltiples capas, datos que indican al menos una de una configuración de mosaico para capas del flujo de bits de múltiples capas o una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas, y descodificación del flujo de bits de múltiples capas de acuerdo con los datos descodificados del VPS.
[0007] En otro ejemplo, un procedimiento de codificación de datos de vídeo incluye codificar, en un conjunto de parámetros de vídeo (VPS) de un flujo de bits de múltiples capas, datos que indican al menos una de una configuración de mosaico para capas del flujo de bits de múltiples capas o una configuración de procesamiento en paralelo para las capas del flujo de bits de múltiples capas y codificación del flujo de bits de múltiples capas, incluida la codificación del VPS del flujo de bits de múltiples capas.
[0008] En otro ejemplo, un aparato que procesa datos de vídeo incluye una memoria que almacena datos de vídeo de múltiples capas y un codificador de vídeo configurado para procesar datos que indica al menos una de una configuración de mosaico para capas de datos de vídeo de múltiples capas o una configuración de procesamiento en paralelo para capas de datos de vídeo de múltiples capas, en el que los datos están asociados con un conjunto de parámetros de vídeo (VPS) de un flujo de bits que incluye los datos de vídeo de múltiples capas, y procesa los datos de vídeo de múltiples capas de acuerdo con los datos del VPS.
[0009] En otro ejemplo, un aparato que realiza datos de vídeo incluye medios para procesar datos que indican al menos una de una configuración de mosaico para capas del flujo de bits de múltiples capas o una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas, en el que los datos están asociados con un conjunto de parámetros de vídeo (VPS) del flujo de bits de múltiples capas, y medios para procesar el flujo de bits de múltiples capas de acuerdo con los datos del VPS.
[0010] En otro ejemplo, un medio de almacenamiento legible por ordenador no transitorio tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que uno o más procesadores procesen datos que indican al menos una de una configuración de mosaico para capas del flujo de bits de múltiples capas o una configuración de procesamiento en paralelo para capas de flujo de bits de múltiples capas, en la que los datos están asociados con un conjunto de parámetros de vídeo (VPS) del flujo de bits de múltiples capas, y procesan el flujo de bits de múltiples capas de acuerdo con los datos del VPS.
[0011] Los detalles de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y la descripción a continuación. Otras características, objetivos y ventajas de la divulgación serán evidentes a partir de la descripción y dibujos, y a partir del documento DESHPANDE (SHARP) S ET AL: "On Tile Alignment", 14. CONVENCIÓN DE JCT-VC; 25-7-2013 - 2-8-2013; VIENA; (EQUIPO DE COLABORACIÓN CONJUNTA SOBRE CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL: HTTP://WFTP3.ITU.INT/ AV-ARCH/JCTVC-SITE/,, n.2 JCTVC-N0199-v3, 31 de julio de 2013 (31-07-2013), divulga un procedimiento para señalar la alineación de mosaicos en un VPS.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0012]
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 usar las técnicas descritas en la presente 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 la presente 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 la presente divulgación.
La FIG. 4A es un diagrama conceptual que ilustra un ejemplo de puntos de sincronización para el procesamiento en paralelo de frente de onda.
La FIG. 4B es un diagrama conceptual que ilustra otro ejemplo de puntos de sincronización para el procesamiento en paralelo de frente de onda.
La FIG. 5 es un diagrama conceptual que ilustra puntos de sincronización de ejemplo para el procesamiento en paralelo de filas de bloques de vídeo.
La FIG. 6 es un diagrama conceptual que ilustra mosaicos de ejemplo de acuerdo con la norma HEVC.
La FIG. 7 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. 8 es un diagrama conceptual que ilustra varias dimensiones escalables para la codificación de vídeo escalable (SVC).
La FIG. 9 es un diagrama conceptual que ilustra un ejemplo de la estructura de codificación SVC.
La FIG. 10 es un diagrama conceptual que ilustra unas unidades de acceso (UA) de ejemplo en un flujo de bits de múltiples capas.
La FIG. 11 ilustra una técnica para procesar datos de vídeo de múltiples capas consistente con esta divulgación.
La FIG. 12 ilustra otra técnica para procesar datos de vídeo de múltiples capas consistente con esta divulgación.
DESCRIPCIÓN DETALLADA
[0013] Los aspectos de esta divulgación pueden estar relacionados con diversas técnicas para la indicación temprana de herramientas de procesamiento en paralelo en la codificación de vídeo, como se describe con mayor detalle a continuación. En algunos casos, la técnica se puede realizar con extensiones de múltiples capas a un estándar de codificación de vídeo de alta eficiencia (HEVC), como una extensión de codificación de vídeo de múltiples visualizaciones a HEVC (MV-HEVC), una extensión de codificación de vídeo de múltiples visualizaciones más profundidad a HEVC (3D-HEVC), o una extensión de codificación de vídeo escalable (SVC) a HEVC (SHVC), como se indica a continuación. Sin embargo, las técnicas de esta divulgación no se limitan a ningún estándar de codificación de vídeo en particular, y también o de forma alternativa se pueden usar con otras extensiones de HEVC, otros estándares de codificación de múltiples visualizaciones (con o sin un componente de profundidad) y/u otros estándares de vídeo de capa. Además, las técnicas de esta divulgación, como se describe a continuación, se pueden aplicar de forma independiente o en combinación.
[0014] Pueden usarse herramientas de procesamiento en paralelo para codificar o descodificar datos de vídeo en paralelo. Por ejemplo, algunas herramientas de procesamiento en paralelo pueden permitir la codificación o descodificación en paralelo de diferentes partes espaciales de una única imagen de vídeo. En un ejemplo con fines ilustrativos, con respecto a la norma HEVC mencionada anteriormente, el procesamiento en paralelo se puede lograr utilizando el procesamiento en paralelo de frente de onda (WPP). WPP es una técnica de codificación de vídeo mediante la cual dos o más filas de bloques de vídeo (por ejemplo, filas de bloques de árbol codificados (CTB), como se describe a continuación) se codifican y/o descodifican aproximadamente al mismo tiempo (es decir, en paralelo).
[0015] Debido a las interdependencias en la predicción intra, la predicción inter y el análisis de sintaxis de ciertos elementos de sintaxis, utilizando WPP, se puede sincronizar la descodificación paralela de las filas de bloques. Es decir, los bloques de vídeo en una fila actual de bloques pueden usar información codificada de bloques de vídeo en una fila de bloques por encima de la fila actual de bloques. Cuando se procesan dos filas de bloques en paralelo, un descodificador de vídeo puede sincronizar el procesamiento entre bloques en las dos filas para garantizar que los datos requeridos por una fila inferior de bloques ya se hayan codificado en la fila superior de bloques. En este sentido, se puede considerar que el proceso WPP se divide en dos procesos principales, incluido un proceso de análisis de flujo de bits y un proceso de reconstrucción. El proceso de reconstrucción puede incluir sincronización entre filas de bloques.
[0016] Otra técnica de procesamiento en paralelo incluye el uso de los llamados mosaicos para codificar vídeo. Por ejemplo, HEVC define los mosaicos como un número entero de bloques que coexisten en una columna y una fila, ordenados consecutivamente en un escaneo cuadriculado del mosaico. La división de cada imagen en mosaicos puede denominarse una partición. Los mosaicos en una imagen se ordenan consecutivamente en el escaneo cuadriculado de la imagen. El número de mosaicos y las ubicaciones de sus límites se pueden definir para toda la secuencia o cambiar de una imagen a otra. Los límites de los mosaicos, de manera similar a los límites de fragmento, rompen las dependencias de análisis y de predicción, de modo que un mosaico se pueda procesar de forma independiente a otro mosaico. Sin embargo, en algunos casos, los filtros en bucle (por ejemplo, filtros de desbloqueo y filtros de desplazamiento adaptativo de muestra (SAO)) aún pueden cruzar los límites de los mosaicos.
[0017] El uso de mosaicos puede mejorar el paralelismo, ya que no se necesita ninguna comunicación (o relativamente poca) entre los procesadores o los núcleos de procesadores para la descodificación por entropía y la reconstrucción de compensación de movimiento. Por consiguiente, diferentes mosaicos de una imagen pueden ser procesados por diferentes procesadores o núcleos de procesador. Además, los mosaicos pueden exhibir una eficacia de codificación relativamente mejor cuando se comparan con los fragmentos, porque los mosaicos permiten formas de partición de imágenes que contienen muestras con una correlación potencialmente superior a los fragmentos. Los mosaicos también pueden reducir la sobrecarga de la cabecera de fragmento.
[0018] Si bien las técnicas de WPP y mosaico descritas anteriormente pueden proporcionar procesamiento en paralelo dentro de una capa particular, en algunos casos, múltiples capas de datos de vídeo también pueden codificarse o descodificarse en paralelo. Una "capa" de datos de vídeo puede referirse, en general, a una secuencia de imágenes que tiene al menos una característica común, tal como una visualización, una velocidad de trama, una resolución o similar. Por ejemplo, una capa puede incluir datos de vídeo asociados con una visualización particular (por ejemplo, perspectiva) de datos de vídeo de múltiples visualizaciones (como se describe, por ejemplo, con respecto a la FIG. 7 a continuación). Como otro ejemplo, una capa puede incluir datos de vídeo asociados con una capa particular de datos de vídeo escalables (como se describe, por ejemplo, con respecto a las FIGS. 8-10 a continuación). Por lo tanto, esta divulgación puede referirse indistintamente a una capa y a una visualización de datos de vídeo. Es decir, una visualización de datos de vídeo puede denominarse una capa de datos de vídeo y viceversa. Además, los términos predicción de entrevistas y predicción entre capas pueden referirse indistintamente a la predicción entre múltiples capas y/o visualizaciones de datos de vídeo. Además, un códec de capas múltiples (también denominado codificador de vídeo de capas múltiples o codificador-descodificador de capas múltiples) puede referirse conjuntamente a un códec de visualizaciones múltiples o un códec escalable (por ejemplo, un códec configurado para codificar y/o descodificar datos de vídeo utilizando MV-HEVC, 3D--HEVC, SHVC u otra técnica de codificación de múltiples capas).
[0019] En algunos casos, se pueden codificar múltiples capas de datos de vídeo en paralelo usando un retardo de compensación. Un retardo de compensación puede referirse en general a un retardo asociado con el procesamiento (por ejemplo, codificación o descodificación) de múltiples capas en paralelo. Por ejemplo, un descodificador de vídeo puede descodificar más de una capa de un flujo de bits de múltiples capas en paralelo. Sin embargo, cuando se utilizan técnicas de predicción entre capas para descodificar una capa actual, el descodificador de vídeo puede acceder a datos de referencia de una capa de referencia que es diferente a la capa actual. Los datos de referencia deben estar disponibles (por ejemplo, descodificados) para que se utilicen como referencia entre capas para descodificar la capa actual. Por consiguiente, en general, el descodificador de vídeo finaliza la descodificación de todas las capas de referencia en un esquema de descodificación de múltiples capas antes de descodificar una capa que se refiere a una o más de las capas de referencia.
[0020] En lugar de esperar a que se finalice una capa de referencia completa (por ejemplo, se descodifique), el descodificador de vídeo puede retardar el inicio de la descodificación de una capa actual hasta que se haya descodificado al menos parte de la capa de referencia. El retardo de compensación puede indicar en general una cantidad mínima de una capa de referencia que se va a descodificar antes de que el descodificador de vídeo comience a descodificar una capa actual. La implementación de un retardo de compensación puede ayudar a garantizar que los datos de referencia entre capas estén disponibles para ser utilizados como referencia, al mismo tiempo que permite que al menos una parte de la capa de referencia y la capa actual se descodifiquen en paralelo. Por ejemplo, un descodificador paralelo puede comenzar a descodificar una capa de mejora tan pronto como se logre el retardo de desplazamiento de la capa de referencia especificada. Aunque el ejemplo anterior se describe con respecto a la descodificación de vídeo (realizada por un descodificador paralelo), debe entenderse que un codificador de vídeo puede aplicar técnicas similares durante la codificación en paralelo.
[0021] El diseño de HEVC y extensiones HEVC (por ejemplo, como MV-HEVC, 3D-HEVC o SHVC) puede presentar ciertos inconvenientes. Por ejemplo, cuando se usan en capas, ciertas configuraciones de mosaicos y WPP pueden afectar el diseño de la canalización (por ejemplo, la asignación de recursos entre capas) y la implementación de un códec. En algunos casos, es posible que sea necesario cambiar el diseño de un conducto para diferentes configuraciones de mosaicos y WPP. Por ejemplo, al realizar predicciones entre capas utilizando mosaicos, los mosaicos que tienen la misma ubicación espacial relativa en las capas deben ser procesados por los mismos recursos de procesamiento (por ejemplo, el mismo núcleo de procesamiento) para que no sea necesario acceder a los datos para la predicción entre capas mediante diferentes núcleos de procesamiento. Además, en algunos casos, la memoria, los ciclos y los requisitos de retardo pueden ser diferentes para diferentes capas.
[0022] La utilización de las herramientas de codificación paralela descritas anteriormente (por ejemplo, mosaicos y/o WPP) a través de capas puede obtenerse típicamente analizando el conjunto de parámetros de imagen activa (PPS) de cada capa. Sin embargo, analizar dicha información de un PPS puede no ser un proceso sencillo y puede introducir un retardo, porque el contenido de un PPS activo se conoce solo después de que ha comenzado el proceso de activación (por ejemplo, mientras se descodifican imágenes dentro de una capa en particular). Además, encontrar todos los PPS relevantes para una secuencia de vídeo codificada y analizar los PPS puede requerir esfuerzos de análisis computacionalmente onerosos.
[0023] Otro problema potencial con el diseño HEVC y las extensiones relevantes (por ejemplo, como MV-HEVC, 3D-HEVC y/o SHVC) es que cuando los mosaicos se usan en capas (por ejemplo, en más de una capa de vídeo de múltiples capas datos) para el paralelismo, se pueden aplicar filtros de bucle a través de los límites de los mosaicos. Un filtro de bucle puede incluir un filtro de desbloqueo u otro filtro que se utiliza en el proceso de codificación de vídeo para mejorar la calidad del vídeo. A pesar de la posibilidad de mejorar la calidad del vídeo, permitir que se aplique un filtro de bucle a través del límite de un mosaico puede afectar el paralelismo e introducir un retardo. Por ejemplo, si el filtrado de bucle se aplica a los mosaicos, un bloque de un mosaico en particular puede cambiarse debido al filtrado de bucle, lo cual puede ocasionar problemas para realizar la predicción entre capas utilizando ese mosaico.
[0024] Esta divulgación describe técnicas para señalizar información relacionada con el procesamiento en paralelo. Las técnicas de esta divulgación pueden permitir que un descodificador de vídeo determine las configuraciones de mosaicos y/o la configuración WPP a través de capas de una secuencia de vídeo codificada en un punto relativamente temprano en el proceso de descodificación de la secuencia de vídeo codificada. Además, las técnicas de esta divulgación pueden permitir que un descodificador de vídeo determine si se pueden aplicar filtros de bucle a través de los límites de los mosaicos en un punto relativamente temprano en el proceso de descodificación. La determinación de dicha información relativamente temprano en el proceso de descodificación puede, en algunos casos, permitir que el descodificador de vídeo asigne recursos del sistema de manera más eficiente y reduzca el retardo (por ejemplo, en relación con proporcionar dicha información en otra ubicación, como un PPS, como se describió anteriormente). Es decir, la información de procesamiento en paralelo permite al descodificador de vídeo determinar si se utilizan herramientas de codificación en paralelo y, de ser así, la manera en que se implementan las herramientas de codificación en paralelo.
[0025] En algunos ejemplos, la información de procesamiento en paralelo puede proporcionarse en un conjunto de parámetros de vídeo (VPS), como se describe con mayor detalle a continuación. En otros ejemplos, la información de procesamiento en paralelo se puede proporcionar en la información de usabilidad de vídeo (VUI) del VPS, como se describe con mayor detalle a continuación. El VPS se descodifica relativamente temprano en el proceso de descodificación (por ejemplo, en relación con el PPS). Por tanto, de acuerdo con los aspectos de esta divulgación y como se describe con mayor detalle a continuación, la información de procesamiento en paralelo del VPS (o VPS VUI) puede proporcionar una indicación temprana de la información de procesamiento en paralelo que se usa durante la codificación. Es decir, la información de procesamiento en paralelo del VPS puede complementar otra información de procesamiento en paralelo que puede proporcionarse en un PPS y usarse durante la codificación. Por ejemplo, la información de procesamiento en paralelo del VPS (o VPS VUI) puede proporcionar una indicación temprana de la información de procesamiento en paralelo que se incluye en un PPS. De esta manera, como se describe con mayor detalle a continuación, un descodificador de vídeo puede descodificar la información de procesamiento en paralelo del VPS (o VPS VUI), determinar si (y/o cómo) se utilizan herramientas de codificación de procesamiento en paralelo en el flujo de bits de múltiples capas, y asignar recursos de descodificación basándose en la información de procesamiento en paralelo del VPS. El descodificador de vídeo puede comenzar a descodificar el flujo de bits de múltiples capas utilizando la información de procesamiento en paralelo de un PPS que fue indicado por el VPS.
[0026] De acuerdo con los aspectos de esta divulgación, un descodificador de vídeo puede configurarse para analizar uno o más mosaicos de sintaxis correspondientes a datos de vídeo, en el que uno o más elementos de sintaxis indican uno o más de una configuración de elemento, una configuración de filtro de bucle y una configuración de procesamiento en paralelo y realizar la descodificación en paralelo de los datos de vídeo de acuerdo con uno o más elementos de sintaxis.
[0027] 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 las técnicas para procesamiento de vídeo en paralelo descritas en esta divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera los datos de vídeo codificados que van a ser descodificados en un momento posterior por un dispositivo de destino 14. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores tipo tablet, descodificadores, equipos telefónicos tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[0028] El dispositivo de destino 14 puede recibir los datos de vídeo codificados que se van a descodificar, por medio de un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo que pueda mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita los datos de vídeo codificados directamente a un dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o por cable, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como Internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
[0029] De forma alternativa, los datos codificados se pueden transmitir desde la interfaz de salida 22 a un dispositivo de almacenamiento 32. De forma similar, una interfaz de entrada puede acceder a los datos codificados del dispositivo de almacenamiento 32. El dispositivo de almacenamiento 32 puede incluir cualquiera de una variedad de medios de almacenamiento de datos de acceso local o distribuidos, tales como una unidad de disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En otro ejemplo, el dispositivo de almacenamiento 32 puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados en el dispositivo de almacenamiento 32 a través de transmisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor que pueda 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 conectados 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 Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas 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 32 puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0030] Las técnicas de la presente divulgación no están limitadas necesariamente a aplicaciones o contextos inalámbricos. Las técnicas se pueden aplicar a la codificación de vídeo en apoyo de cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo, por ejemplo, por medio de Internet, codificación de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para admitir una transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o videotelefonía.
[0031] 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. En algunos casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contenga un vídeo capturado previamente, una interfaz de alimentación de vídeo para recibir un vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el vídeo de origen, o una combinación de dichas fuentes. Como ejemplo, si la fuente de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, las técnicas descritas en la presente divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o por cable.
[0032] El vídeo capturado, precapturado o generado por ordenador se puede codificar mediante el codificador de vídeo 20. Los datos de vídeo codificados se pueden transmitir directamente al dispositivo de destino 14 por medio de la interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados se pueden almacenar también (o de forma alternativa) en el dispositivo de almacenamiento 32 para un acceso posterior por parte del dispositivo de destino 14 u otros dispositivos, para su descodificación y/o reproducción.
[0033] El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 33. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de vídeo codificados a través del enlace 16. Los datos de vídeo codificados comunicados a través del enlace 16, o proporcionados en el dispositivo de almacenamiento 32, pueden incluir una variedad de elementos de sintaxis generados por el codificador de vídeo 20 para su uso por un descodificador de vídeo, tal como el descodificador de vídeo 30, en la descodificación de los datos de vídeo. Dichos elementos de sintaxis se pueden incluir con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenarse en un medio de almacenamiento o almacenarse en un servidor de archivos.
[0034] El dispositivo de visualización 33 se puede integrar con, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 33 visualiza los datos de vídeo descodificados ante un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como 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.
[0035] 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 apropiadas, u otro hardware y software, para tratar 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, en algunos ejemplos, las unidades MUX-DEMUX se pueden ajustar al protocolo de multiplexación ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0036] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse cada uno como cualquiera de una variedad de circuitos de codificador adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador adecuado, no transitorio y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden incluir en uno o más codificadores o descodificadores, de los que cualquiera se puede integrar como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
[0037] Esta divulgación puede referirse en general al codificador de vídeo 20 que "señala" cierta información a otro dispositivo, tal como el descodificador de vídeo 30. Sin embargo, se debería entender que el codificador de vídeo 20 puede señalar información asociando determinados elementos de sintaxis a diversas partes codificadas de datos de vídeo. Es decir, el codificador de vídeo 20 puede "señalar" datos almacenando determinados elementos de sintaxis en cabeceras de diversas partes codificadas de datos de vídeo. En algunos casos, dichos elementos de sintaxis pueden ser codificados y almacenados antes de ser recibidos y descodificados por el descodificador de vídeo 30. Por tanto, el término "señalar" se puede referir, en general, a la comunicación de datos de sintaxis u otros datos para descodificar datos de vídeo comprimidos, ya sea que dicha comunicación se produzca en tiempo real o casi real o durante un intervalo de tiempo, tal como podría ocurrir cuando se almacenan elementos de sintaxis en un medio en el momento de la codificación, que a continuación se pueden recuperar por un dispositivo de descodificación en cualquier momento después de almacenarse en este medio.
[0038] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma HEVC, desarrollada por parte del Equipo de Colaboración Conjunta sobre Codificación de vídeo (JCT-VC) del Grupo de Expertos de Codificación de Vídeo (VCEG) de la ITU-T y el Grupo de Expertos en Películas (MPEG) de ISO/IEC. HEVC se describe en ITU-T H.265, SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of Audiovisual Services-Coding of Moving Video, “High Efficiency Video Coding”, Abril de 2013. Un borrador de especificación HEVC, denominado HEVC WD en adelante en el presente documento, está disponible en http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip.
[0039] Se han propuesto diversas extensiones de HEVC. Por ejemplo, la extensión de múltiples visualizaciones de HEVC, concretamente MV-HEVC, y otra extensión de la HEVC para la codificación de vídeo 3D más avanzada (3D-HEVC) están siendo desarrolladas por el JCT-3V. Mientras tanto, la extensión de codificación de vídeo escalable de HEVC, concretamente SHVC, está siendo desarrollada por el JCT-VC.
[0040] Un borrador de trabajo (WD) reciente de la MV-HEVC, denominado MV-HEVC WD5 en adelante en el presente documento está disponible en http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V-E1004-v6.zip. Un WD reciente de 3D-HeVc , denominado 3D-HEVC WD1 en adelante en el presente documento, está disponible en http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V-E1001-v3.zip. Un WD reciente de SHVC, y denominado SHVC WD3 en adelante en el presente documento, está disponible en http://phenix.it-sudparis.eu/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1008-v3.zip. Otra extensión de HEVC es la extensión del alcance de HEVC, que se describe en “High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 4,” JCTVC-Nl005_v1, abril de 2013 (en adelante en el presente documento “JCTVC-N1005").
[0041] Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Por consiguiente, las técnicas de esta divulgación se pueden aplicar a cualquiera de una variedad de estándares de codificación en los que puede ser deseable la indicación del procesamiento en paralelo.
[0042] Con respecto a HEVC, por ejemplo, los esfuerzos de estandarización se basaron en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba de HEVC (HM). E1HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo relativos a los dispositivos existentes de acuerdo con, por ejemplo, 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.
[0043] En general, el modelo de trabajo del HEVC HM describe que una trama o imagen de vídeo se puede dividir en una secuencia de bloques del árbol de codificación (CTB) o unidades de codificación más grandes (LCU), que incluyen tanto muestras de luminancia como de crominancia. En muchos ejemplos, un CTB es un bloque de muestras NxN (por ejemplo, muestras de luminancia o crominancia). Un CTB tiene un fin similar al de un macrobloque de la norma H.264. Un fragmento incluye un número de CTB consecutivos en orden de codificación. Una trama o imagen de vídeo se puede dividir en uno o más fragmentos. Cada CTB puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuádruple. Por ejemplo, un CTB, como un nodo raíz del árbol cuádruple, puede dividirse en cuatro nodos hijos, y cada nodo hijo puede, a su vez, ser un nodo padre y dividirse en otros cuatro nodos hijos. Un nodo hijo final, no separado, como un nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos de sintaxis asociados a un flujo de bits codificado pueden definir un número máximo de veces en que puede dividirse un CTB, y también pueden definir un tamaño mínimo de los nodos de codificación.
[0044] 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, en general, a un tamaño del nodo de codificación y debe ser típicamente de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño de la CTB, 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 de sintaxis asociados a una CU pueden describir, por ejemplo, la partición de la CU en una o más PU. Los modos de partición pueden diferir entre si la CU está codificada en modo directo o de salto, codificada en modo de predicción intra o codificada en modo de predicción inter. Las PU se pueden dividir para tener una conformación no cuadrada. Los datos de sintaxis 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 una conformación cuadrada o no cuadrada.
[0045] La norma HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU se basa típicamente en el tamaño de las PU dentro 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 más pequeñas que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU se pueden subdividir en unidades más pequeñas usando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). Los nodos hoja del RQT se pueden denominar unidades de transformada (TU). Los valores de diferencias de píxeles asociados a las TU se pueden transformar para producir coeficientes de transformada, que se pueden cuantificar.
[0046] En general, una PU incluye datos relacionados con el procedimiento de predicción. Por ejemplo, cuando la PU se codifica en intramodo, la PU puede incluir datos que describen un modo de predicción intra para la PU. Como otro ejemplo, cuando la PU se codifica en intermodo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una 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.
[0047] En general, se usa una TU para los procedimientos de transformada y de cuantificación. Una CU dada que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Después de la predicción, el codificador de vídeo 20 puede calcular unos valores residuales a partir del bloque de vídeo identificado por el nodo de codificación de acuerdo con la PU. El nodo de codificación se actualiza luego para hacer referencia a los valores residuales, en lugar del bloque de vídeo original. Los valores residuales comprenden valores de diferencias de píxeles que pueden transformarse en coeficientes de transformada, cuantificarse y explorarse usando las transformadas y otra información de transformada especificada en las TU, para producir coeficientes de transformada en serie para la codificación por entropía. El nodo de codificación puede, una vez más, actualizarse para referirse a estos coeficientes de transformación en serie. Esta divulgación típicamente usa el término "bloque de vídeo" para referirse a uno o más de un CTB, LCU o una CU, que incluye un nodo de codificación y unas PU y TU.
[0048] Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. 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 de sintaxis en una cabecera del GOP, una cabecera de una o más de las imágenes, o en otras ubicaciones, que describen una serie de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos de sintaxis de fragmento que describen un modo de codificación para el fragmento respectivo. El codificador de vídeo 20 funciona típicamente en bloques de vídeo dentro de fragmentos de vídeo individuales para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con un estándar de codificación especificado.
[0049] 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 la predicción intra en tamaños de PU de 2Nx2N o NxN, así como la predicción inter en tamaños de PU simétricas de 2Nx2N, 2NxN, Nx2N o NxN. E1HM también soporta la partición asimétrica para la 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 entre 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 de tamaño 2Nx2N que está dividida horizontalmente, con una PU de tamaño 2Nx0,5N encima y una PU de tamaño 2Nx1,5N debajo.
[0050] 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 tamaño 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 que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0051] Tras la codificación intrapredictiva o interpredictiva, usando las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales a los que se apliquen las transformadas especificadas por las TU de la CU. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las CU. El codificador de vídeo 20 puede formar los datos residuales para la CU, y a continuación transformar los datos residuales para producir coeficientes de transformada.
[0052] Seguidamente a cualquier transformada para producir 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 procedimiento en el que 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 con algunos, o con la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja a un valor de m bits durante la cuantificación, donde n es mayor que m.
[0053] En algunos ejemplos, el codificador de vídeo 20 puede usar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados, para generar un vector en serie que pueda ser codificado por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar una exploración adaptativa. Después de explorar 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 adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la codificación por entropía por partición de intervalos de probabilidad (PIPE) u otra metodología de codificación por entropía. El codificador de vídeo 20 también puede codificar por entropía los elementos de sintaxis asociados 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.
[0054] Como se señaló anteriormente, las técnicas de esta divulgación se pueden usar para proporcionar una indicación temprana de herramientas de codificación paralelas, tales como codificar datos de vídeo usando mosaicos y/o WPP. Por ejemplo, una configuración típica de flujo de bits puede ser la siguiente: Conjunto de parámetros de vídeo (VPS), extensión de VPS, conjunto de parámetros de secuencia (SPS), extensión SPS, conjunto de parámetros de imagen (PPS), extensión PPS, cabecera de fragmento, carga útil de vídeo. En algunos casos, las herramientas de codificación paralelas pueden estar indicadas en la extensión PPS y/o PPS.
[0055] Las técnicas de esta divulgación pueden, en algunos casos, usarse para proporcionar una indicación temprana a un descodificador de vídeo de si se usan herramientas de codificación paralela dentro de capas de un flujo de bits de múltiples capas, por ejemplo, en el VPS, recibido por el descodificador de vídeo. Por ejemplo, la información de procesamiento en paralelo del VPS puede complementar otra información de procesamiento en paralelo que puede proporcionarse en un PPS y usarse durante la codificación, proporcionando así una indicación temprana de la información de procesamiento en paralelo que se incluye en el PPS (por ejemplo, porque la información del VPS se descodifica antes que el PPS).
[0056] De acuerdo con aspectos de esta divulgación, las técnicas pueden permitir que un descodificador de vídeo, tal como un descodificador de vídeo 30, asigne eficientemente recursos de descodificación para descodificar los datos de vídeo de múltiples capas y reducir el retardo de descodificación general. Por ejemplo, el codificador de vídeo 20 puede codificar (y el descodificador de vídeo 30 puede descodificar) datos de un VPS y/o VPS VUI que indica una configuración de mosaico para capas de un flujo de bits de múltiples capas y/o una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas. En particular, con respecto a la configuración de procesamiento en paralelo, los datos pueden indicar si se realiza la sincronización de procesamiento en paralelo (por ejemplo, sincronización de codificación por entropía, como se realiza en WPP).
[0057] En general, un SPV puede incluir datos que describen las características generales de una secuencia de vídeo codificada, incluidas las dependencias entre subcapas. Uno de los propósitos del VPS puede ser permitir la extensibilidad compatible de un estándar particular en términos de señalización en la capa de sistemas. Típicamente, un VPS debe incluirse en un flujo de bits de múltiples capas para que el flujo de bits sea descodificado, un VPS puede, de forma adicional o alternativa, incluir datos que definen información de usabilidad de vídeo (VUI), como información de representación de vídeo, parámetros de descodificador de referencia hipotético (HRD) y/o información de restricción de flujo de bits. La información de restricción del flujo de bits puede incluir restricciones en el rango del vector de movimiento, el tamaño del búfer de imágenes descodificadas (DPB) (por ejemplo, en términos de un cierto número de imágenes que se mantendrán en la DPB), el número de tramas de reordenación (es decir, una indicación de un cierto número de tramas a ser reordenadas del orden de descodificación al orden de visualización), tamaños codificados de bloques (por ejemplo, macrobloques (MBs) o unidades de árbol de codificación) y tamaños codificados de imágenes. Un VPS puede proporcionar datos adicionales para una o más ampliaciones del VPS, de manera que el VPS pueda ampliarse mediante futuras normas o ampliaciones de la próxima norma HEVC. En esta divulgación, el acrónimo VPS puede referirse conjuntamente a VPS y VPS VUI, según corresponda.
[0058] Un ejemplo de VPS VUI para indicar las configuraciones de mosaicos y WPP para cada capa se ilustra en la Tabla 1 a continuación. WPP se describe con mayor detalle, por ejemplo, con respecto a las FIGS. 4A-5 a continuación. Los mosaicos se describen con mayor detalle, por ejemplo, con respecto a la FIG. 6 siguiente. De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 puede codificar los elementos de sintaxis mostrados en la Tabla 1 e incluir los elementos de sintaxis codificados en un flujo de bits codificado. Asimismo, el descodificador de vídeo 30 puede analizar y descodificar los elementos de sintaxis de un flujo de bits codificado.
Tabla 1 - Ejemplo n.° 1 de VPS VUI
Figure imgf000011_0001
[0059] El elemento de sintaxis tiles_enabled_vps_flag[i] es igual a un valor de 1 indica que el valor de tiles_enabled_flag es igual a 1 para cada PPS al que hace referencia (por ejemplo, está asociado con) al menos una imagen de la i-ésima capa especificada por el VPS. El elemento de sintaxis tiles_enabled_vps_flag[i] que es igual a un valor 0 indica que el valor del indicador de mosaicos habilitados es igual a 0 para cada PPS al que se hace referencia (por ejemplo, está asociado con) al menos una imagen de la i-ésima capa especificada por el VPS.
[0060] El elemento de sintaxis tiles_enabled_flag igual a 1 especifica que hay más de un mosaico en cada imagen que hace referencia al PPS. El elemento de sintaxis tiles_enabled _flag que es igual a un valor de 0 especifica que solo hay un mosaico en cada imagen que se refiere al PPS.
[0061] El elemento de sintaxis loop_filter_across_tiles_disabled_vps_flag[i] igual a 1 indica que el valor de loop_filter_across_tiles_enabled_flag es igual a 0 para cada PPS al que se hace referencia (por ejemplo, está asociado con) al menos una imagen de la i-ésima capa especificada por el VPS. El elemento de sintaxis loop_filter_across_tiles_enabled_vps_flag[i] siendo igual a un valor de 0 indica que la restricción anterior puede aplicarse o no.
[0062] El elemento de sintaxis loop_filter_across_tiles_enabled_flag igual a 1 especifica que las operaciones de filtrado en bucle se realizan a través de los límites de los mosaicos. El elemento de sintaxis loop_filter_across_tiles_enabled_flag que es igual a un valor de 0 especifica que las operaciones de filtrado en bucle no se realizan a través de los límites de los mosaicos. Las operaciones de filtrado en bucle pueden incluir las operaciones de filtro de desbloqueo y filtro de desplazamiento adaptativo de muestra. Cuando no está presente (por ejemplo, el elemento de sintaxis loop_filter_across_tiles_enabled_flag no se incluye en el flujo de bits), se infiere que el valor del elemento de sintaxis loop_filter_across_tiles_enabled_flag es igual a 1.
[0063] El elemento de sintaxis entropy_coding_sync_enabled_vps_flag[i] igual a 1 indica que el valor del elemento de sintaxis entropy_coding_sync_enabled_flag es igual a 1 para cada PPS al que hace referencia (por ejemplo, está asociado con) al menos una imagen de la i-ésima capa especificada por el VPS. El elemento de sintaxis entropy_coding_sync_enabled_vps_flag[i] siendo igual a un valor de 0 indica que el valor del elemento de sintaxis entropy _coding_sync_enabled_flag es igual a 0 para cada PPS al que se hace referencia (por ejemplo, está asociado con) al menos una imagen de la i-ésima capa especificada por el VPS.
[0064] El elemento de sintaxis entropy_coding_sync_enabled_flag igual a 1 especifica que se invoca un proceso de sincronización específico para las variables de contexto antes de descodificar el primer bloque del árbol de codificación de una fila de bloques del árbol de codificación en cada mosaico en cada imagen que hace referencia al PPS, y un se invoca proceso de memorización específico para las variables de contexto después de descodificar dos bloques de árbol de codificación de una fila de bloques de árbol de codificación en cada mosaico en cada imagen que se refiere al PPS. El elemento de sintaxis entropy_coding_sync_enabled_flag que es igual a un valor de 0 especifica que no es necesario invocar ningún proceso de sincronización específico para las variables de contexto antes de descodificar el primer bloque de árbol de codificación de una fila de bloques de árbol de codificación en cada mosaico de cada imagen que se refiere al PPS y no es necesario invocar ningún proceso de memorización específico para las variables de contexto después de descodificar dos bloques de árbol de codificación de una fila de bloques de árbol de codificación en cada mosaico en cada imagen que se refiere al PPS.
[0065] Por consiguiente, al recibir los elementos de sintaxis incluidos en el ejemplo de la Tabla 1 anterior, el descodificador de vídeo 30 puede determinar una configuración de mosaico y/o una configuración de procesamiento en paralelo para capas de un flujo de bits de múltiples capas. Por ejemplo, para cada capa desde 0 hasta el número máximo de capas (por ejemplo, for(i = 0; i <= vps_max_layers_minus1; i++) el descodificador de vídeo 30 puede obtener, a partir de un VPS de un flujo de bits codificado, datos que indiquen si los mosaicos están habilitados en al menos una imagen de la capa (por ejemplo, el elemento de sintaxis tiles_enabled_vps_flag[i]). Además, para cada capa para la que se habilitan mosaicos (por ejemplo, if(tiles_enabled_vps_flag[i])), el descodificador de vídeo 30 también puede obtener datos que indiquen si el filtrado de bucle se aplica a través de los límites de los mosaicos, o si el filtrado de bucle a través de los límites de los mosaicos está deshabilitado (por ejemplo, el elemento de sintaxis loop_filter_across_tiles_disabled_vps_flag[i]).
[0066] Además, el descodificador de vídeo 30 también puede obtener datos que indiquen una configuración de procesamiento en paralelo. Por ejemplo, el descodificador de vídeo 30 puede obtener datos que indiquen si se realiza la sincronización de codificación por entropía, por ejemplo, a través de WPP (por ejemplo, entropy_coding_sync_enabled_vps_flag[i]). En otros ejemplos, los elementos de sintaxis que tienen una convención de nomenclatura diferente pueden usarse para transmitir la configuración de mosaico y/o la configuración de procesamiento en paralelo.
[0067] En otro ejemplo, las técnicas de esta divulgación incluyen señalizar/leer una indicación de alineación entre capas de mosaicos y configuraciones de filtro de bucle y WPP (por ejemplo, el uso de filtro de bucle a través de límites de mosaico, loopfilter_accross_tile_boundary) en un VPS. En un primer ejemplo, la indicación de las configuraciones de mosaicos y WPP para cada capa puede realizarse en el VPS VUI modificado como se muestra a continuación en la Tabla 2. El codificador de vídeo 20 puede codificar los elementos de sintaxis mostrados en la Tabla 2 e incluir los elementos de sintaxis codificados en un flujo de bits codificado. Asimismo, el descodificador de vídeo 30 puede analizar y descodificar los elementos de sintaxis de un flujo de bits codificado.
Tabla 2 - Ejemplo n.° 2 de VPS VUI
Figure imgf000012_0001
[0068] El elemento de sintaxis paralel_tools_vps_idc igual a 0 indica que tanto el indicador habilitado de mosaicos de elementos de sintaxis como el elemento de sintaxis entropy_coding_sync_enabled_flag son iguales a 0 para las imágenes. El elemento de sintaxis parallel_tools_vps_idc igual a 1 indica que el elemento de sintaxis entropy_coding _sync_enabled_flag es igual a 1 y el elemento de sintaxis tiles_enabled_flag es igual a 0 para las imágenes en todas las capas. El elemento de sintaxis parallel_tools_vps_idc igual a 2 indica que el elemento de sintaxis tiles_enabled_flag es igual a 1 y el elemento de sintaxis entropy_coding_sync_enabled_flag es igual a 0 para las imágenes en todas las capas. El elemento de sintaxis paralel_tools_vps_idc igual a 3 indica que el elemento de sintaxis tiles_enabled_flag puede ser igual a 1 para imágenes en cero o más capas y el elemento de sintaxis entropy_coding_sync_enabled_flag puede ser igual a 1 para las imágenes en cero o más capas.
[0069] Las tablas 3 y 4 a continuación muestran ejemplos adicionales de cómo se puede modificar el VPS VUI para indicar la configuración de mosaicos y WPP. De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 puede codificar los elementos de sintaxis mostrados en las Tablas 3 y 4 e incluir los elementos de sintaxis codificados en un flujo de bits codificado. Asimismo, el descodificador de vídeo 30 puede analizar y descodificar los elementos de sintaxis de un flujo de bits codificado.
Tabla 3 - Ejemplo n.° 3 de VPS VUI
Figure imgf000013_0002
[0070] El elemento de sintaxis parallel_tools_vps_idc[i] : siendo igual a un valor de 0 indica que tanto el elemento de sintaxis tiles_enabled_flag como el elemento de sintaxis entropy_coding_sync_enabled_flag son iguales a 0 para la imagen de la i-ésima capa que se refiere a un PPS activo. El elemento de sintaxis paralel_tools_vps_idc[i] igual a 1 indica que el elemento de sintaxis entropy_coding_sync_enabled_flag es igual a 1 para la imagen de la i-ésima capa y todas sus imágenes de la capa de referencia directa que se refieren a un PPS activo. El elemento de sintaxis paralel_tools_vps_idc[i] igual a 2 indica que el indicador habilitado de mosaicos de elementos de sintaxis es igual a 1 para la imagen de la i-ésima capa y todas sus imágenes de la capa de referencia directa que se refieren a un PPS activo. El elemento de sintaxis parallel_tools_vps_idc[i] igual a 3 indica que, cuando el elemento de sintaxis tiles_enabled_flag es igual a 1 para la imagen de la i-ésima capa, entonces al menos una de sus capas de referencia directa tiene el elemento de sintaxis entropy_coding _sync_enabled_flag = 1 y, cuando el elemento de sintaxis entropy_coding _sync_enabled_flag = 1 para la imagen de la capa i-ésima, entonces al menos una de sus capas de referencia directa tiene el indicador de mosaicos de elementos de sintaxis habilitado igual a 1.
Tabla 4 - Ejemplo n.° 4 de VPS VUI
Figure imgf000013_0001
[0071] El elemento de sintaxis tile_entropy_sync_coding_not_mixed_flag[i][j]: igual a 1 indica que, dentro de un CVS, cuando el elemento de sintaxis tiles_enabled_flag es igual a 1 para un PPS activo de i-ésima capa, el elemento de sintaxis entropy_coding_sync_enabled_flag es igual a 0 para un PPS activo de la j-ésima capa de referencia directa de la i-ésima capa o cuando el elemento de sintaxis entropy_coding_sync_enabled_flag es igual a 1 para un PPS activo de la i-ésima capa, el elemento de sintaxis tiles_enabled_flag es igual a 0 para un PPS activo de la j-ésima referencia directa capa de la i-ésima capa. El elemento de sintaxis tile_entropy_sync_coding_not_mixed_flag[i][j] igual a un valor de 0 indica que tal restricción puede aplicarse o no. En tales ejemplos, se pueden usar uno o más elementos de sintaxis adicionales para indicar si se aplica la restricción.
[0072] El elemento de sintaxis loopfilter_across_tile_boundary_not_mixed_flag[i][j] : igual a 1 indica que, dentro de un CVS, cuando el elemento de sintaxis loop_filter_across_tiles_enabled_flag es igual a 1 para un PPS activo de la i-ésima capa, el elemento de sintaxis loop_filter_across _tiles_enabled_flag también es igual a 1 para un PPS activo de la j-ésima capa de referencia directa de la i-ésima capa. El elemento de sintaxis loopfilter_across_tile_boundary_not_mixed_flag[i][j] siendo igual a un valor de 0 indica que tal restricción puede aplicarse o no. En tales ejemplos, se pueden usar uno o más elementos de sintaxis adicionales para indicar si se aplica la restricción.
[0073] De esta manera, el codificador de vídeo 20 puede codificar, en un conjunto de parámetros de vídeo (VPS) de un flujo de bits de múltiples capas, al menos uno de los datos que indican una configuración de mosaico para las capas del flujo de bits de múltiples capas o datos que indican una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas. Asimismo, el descodificador de vídeo 30 puede descodificar, a partir de un conjunto de parámetros de vídeo (VPS) de un flujo de bits de múltiples capas, al menos uno de los datos que indican una configuración de mosaico para las capas del flujo de bits de múltiples capas o datos que indican una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas.
[0074] La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas descritas en esta divulgación. En particular, el codificador de vídeo 20 puede configurarse para codificar datos de un flujo de bits de múltiples capas de acuerdo con las técnicas de esta divulgación. Como se ha indicado anteriormente, el codificador de vídeo 20 puede adaptarse para realizar una codificación de vídeo de múltiples visualizaciones y/o ajustable a escala. Por ejemplo, el codificador de vídeo 20 puede configurarse para codificar un flujo de bits que se ajuste a una o más extensiones estándar de codificación de vídeo, tales como SHVC, MV-HEVC o 3D-HEVC. Sin embargo, si bien se hace referencia a normas de codificación específicas, debería entenderse que las técnicas no son específicas para ninguna norma de codificación y que pueden implementarse con normas futuras y/o aún no desarrolladas.
[0075] En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una unidad de partición 35, una memoria de datos de vídeo 37, una unidad de procesamiento de predicción 41, una memoria de imagen de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. La unidad de procesamiento de predicción 41 incluye una unidad de estimación de movimiento 42, una unidad de compensación de movimiento 44 y una unidad de procesamiento de predicción intra 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye la unidad de cuantificación inversa 58, la unidad de procesamiento de transformación inversa 60, un sumador 62 y una memoria de imagen de referencia 64 (que también puede denominarse búfer de imágenes descodificadas (DPB)), y una unidad de filtrado 66.
[0076] La memoria de datos de vídeo 37 puede almacenar datos de vídeo que se van a codificar por los componentes del codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 37 se pueden obtener, por ejemplo, a partir de la fuente de vídeo 18. La memoria de imágenes de referencia 64 puede referirse a un búfer de imágenes descodificadas que almacena datos de vídeo de referencia para su uso en la codificación de datos de vídeo mediante el codificador de vídeo 20, por ejemplo, en modos de intra o intercodificación. La memoria de datos de vídeo 37 y la memoria de imágenes de referencia 64 se pueden formar por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 37 y la memoria de imágenes de referencia 64 se pueden proporcionar por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 37 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera del chip relativo a esos componentes.
[0077] El codificador de vídeo 20 puede realizar intra e intercodificación de bloques de vídeo dentro de fragmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial de un vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal de un vídeo dentro de tramas o imágenes contiguas de una secuencia de vídeo. El intramodo (modo I) se puede referir a cualquiera de varios modos de compresión de base espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), se pueden referir a cualquiera de varios modos de compresión de base temporal.
[0078] Por ejemplo, como se muestra en la FIG. 2, el codificador de vídeo 20 recibe datos de vídeo, y la unidad de partición 35 divide los datos en bloques de vídeo. Esta partición también puede incluir la partición en fragmentos, mosaicos u otras unidades mayores, así como la partición en bloques de vídeo, por ejemplo, de acuerdo con una estructura en árbol cuaternario de LCU y CU. El codificador de vídeo 20 ilustra, en general, los componentes que codifican los bloques de vídeo dentro de un fragmento de vídeo que se va a codificar. El fragmento se puede dividir en múltiples bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados mosaicos). La unidad de procesamiento de predicción 41 puede seleccionar uno de una pluralidad de posibles modos de codificación, tal como uno de una pluralidad de modos de intracodificación, o uno de una pluralidad de modos de intercodificación, para el bloque de vídeo actual en base a resultados de error (por ejemplo, la velocidad de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 41 puede proporcionar el bloque intra o intercodificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia.
[0079] La unidad de procesamiento de predicción intra 46, dentro de la unidad de procesamiento de predicción 41, puede realizar la codificación intrapredictiva del bloque de vídeo actual en relación con uno o más bloques contiguos en la misma trama o fragmento que el bloque actual que se va a codificar, para proporcionar una compresión espacial. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 dentro de la unidad de procesamiento de predicción 41 realizan la codificación interpredictiva del bloque de vídeo actual en relación con uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar compresión temporal.
[0080] La unidad de estimación de movimiento 42 se puede configurar para determinar el modo de predicción inter para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo en la secuencia como fragmentos P o fragmentos B. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado para propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar la desviación de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual relativa a un bloque predictivo dentro de una imagen de referencia.
[0081] Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, lo que se puede determinar por la suma de diferencias absolutas (SAD), la suma de las diferencias al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxel completo y a las posiciones de píxel fraccionario, y emitir un vector de movimiento con una precisión de píxel fraccionario.
[0082] La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento intercodificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia se puede seleccionar de una primera lista (lista 0) de imágenes de referencia o de una segunda lista (lista 1) de imágenes de referencia, de las que cada una identifica una o más imágenes de referencia almacenadas en una memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
[0083] La compensación del movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar obtener o generar el bloque predictivo en base al vector de movimiento determinado por la estimación del movimiento, posiblemente realizando interpolaciones a una precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se esté codificando, formando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luminancia como de crominancia. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de compensación de movimiento 44 también puede generar elementos de sintaxis asociados con los bloques de vídeo y el fragmento de vídeo para su uso por el descodificador de vídeo 30 en la descodificación de los bloques de vídeo del fragmento de vídeo.
[0084] La unidad de procesamiento de predicción intra 46 puede intrapredecir un bloque actual, como alternativa a la predicción inter realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se describe anteriormente. En particular, la unidad de procesamiento de predicción intra 46 puede determinar un modo de predicción intra que se va a usar para codificar un bloque actual. En algunos ejemplos, la unidad de procesamiento de predicción intra 46 puede codificar un bloque actual usando diversos modos de predicción intra, por ejemplo, durante pasadas de codificación independientes, y la unidad de procesamiento de predicción intra 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de predicción intra adecuado para su uso a partir de los modos probados. Por ejemplo, la unidad de procesamiento de predicción intra 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de predicción intra sometidos a prueba, y seleccionar el modo de predicción intra que tenga las mejores características de velocidaddistorsión entre los modos sometidos a prueba. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se codificó para producir el bloque codificado, así como una velocidad de transmisión de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de procesamiento 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 velocidad-distorsión para el bloque.
[0085] En cualquier caso, después de seleccionar un modo de predicción intra para un bloque, la unidad de procesamiento 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 indique el modo de predicción intra seleccionado de acuerdo con las técnicas de la presente divulgación. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices del modo de predicción intra y una pluralidad de tablas de índices del modo de predicción intra modificadas (también denominadas tablas de correlación de palabras de código), 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 del modo de predicción intra y una tabla de índices del modo de predicción intra modificada para su uso para cada uno de los contextos.
[0086] Después de que la unidad de procesamiento de predicción 41 genera el bloque predictivo para el bloque de vídeo actual, por medio de predicción inter o bien predicción intra, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo al bloque de vídeo actual. Los datos de vídeo residuales del bloque residual se pueden incluir en una o más TU y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de vídeo residuales en coeficientes de transformada residuales usando una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformación 52 puede convertir los datos de vídeo residuales de un dominio de píxel en un dominio de transformación, tal como un dominio de frecuencia.
[0087] La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformación para reducir aún más la velocidad de transmisión de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos, o con 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 de cuantificación 54 puede realizar a continuación una exploración de la matriz que incluye los coeficientes de transformación cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
[0088] 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 realizar una codificación de longitud variable adaptativa al contexto (CAVLC), una codificación aritmética binaria adaptativa al contexto (CABAC), una codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), una codificación por entropía por partición de intervalos de probabilidad (PIPE) u otra metodología o técnica de codificación por entropía. Seguidamente a la codificación por entropía por la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir al descodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación por el descodificador de vídeo 30. La unidad de codificación por entropía 56 también puede codificar por entropía los vectores de movimiento y los otros elementos de sintaxis para el fragmento de vídeo actual que se esté codificando.
[0089] La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantificación inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, para su posterior uso como bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles fraccionarios, 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 producir un bloque de referencia para su almacenamiento en la memoria de imágenes de referencia 64. El bloque de referencia puede ser usado por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como bloque de referencia para realizar una predicción inter de un bloque en una trama o imagen de vídeo subsiguiente.
[0090] La unidad de filtrado 66 puede realizar una variedad de procesos de filtrado. Por ejemplo, la unidad de filtrado 66 puede realizar un filtrado de desbloqueo. Es decir, la unidad de filtrado 66 puede recibir una pluralidad de bloques de vídeo reconstruidos que forman un fragmento o una trama de vídeo reconstruido y límites de bloque de filtro para eliminar las distorsiones de bloqueo de un fragmento o trama. En un ejemplo, la unidad de filtrado 66 evalúa la denominada "intensidad de límite" de un bloque de vídeo. Basándose en la intensidad de límite de un bloque de vídeo, los píxeles de borde de un bloque de vídeo se pueden filtrar con respecto a los píxeles de borde de un bloque de vídeo adyacente, de modo que las transiciones de un bloque de vídeo a otro sean más difíciles de percibir por un espectador.
[0091] En algunos casos, las variables utilizadas por un filtro de desbloqueo pueden obtenerse de bloques de vídeo reconstruidos sin una comparación de los bloques de vídeo reconstruidos con los bloques de vídeo fuente originales. Por tanto, cada uno del codificador de vídeo 20 y el descodificador de vídeo 30 (FIG. 3) puede programarse para realizar el mismo proceso de desbloqueo en bloques de vídeo reconstruidos con información adicional mínima con respecto a la trama de vídeo original codificada en el flujo de bits. Sin embargo, en algunos casos, la unidad de filtrado 66 puede incluir elementos de sintaxis en el flujo de bits para indicar si se debe realizar el desbloqueo y/o si se debe realizar uno de un tipo particular de modos de desbloqueo. En otros ejemplos, la unidad de filtrado 66 puede aplicar varios filtros adicionales y/o alternativos, tales como filtros de compensación adaptativa de muestra (SAO) u otros filtros.
[0092] De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 puede configurarse para codificar datos que indiquen una configuración de mosaico y/o una configuración de procesamiento en paralelo para capas de un flujo de bits de múltiples capas. Por ejemplo, el codificador de vídeo 20 puede configurarse para codificar datos de un VPS y/o VPS VUI que indica una configuración de mosaico para capas de un flujo de bits de múltiples capas y/o una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas. En particular, con respecto a la configuración de procesamiento en paralelo, los datos pueden indicar si se realiza la sincronización de procesamiento en paralelo (por ejemplo, sincronización de codificación por entropía, como se realiza en WPP).
[0093] En algunos ejemplos, los datos que indican la configuración de mosaico y/o la configuración de procesamiento en paralelo pueden incluir varios elementos de sintaxis. Por ejemplo, para cada capa de datos de vídeo en el flujo de bits de múltiples capas, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican si los mosaicos están habilitados en al menos una imagen de la capa (por ejemplo, como el elemento de sintaxis tiles_enabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior). Además, para cada capa para la que se habilitan mosaicos, el codificador de vídeo 20 también puede codificar uno o más elementos de sintaxis que indican si el filtrado de bucle se aplica a través de los límites de los mosaicos, o si el filtrado de bucle a través de los límites de los mosaicos está deshabilitado (por ejemplo, como el elemento de sintaxis loop_filter_across_tiles_disabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior). En algunos casos, el codificador de vídeo 20 también puede codificar uno o más elementos de sintaxis que indican una configuración de procesamiento en paralelo. Por ejemplo, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican si se realiza la sincronización de codificación por entropía, por ejemplo, a través de WPP (por ejemplo, tal como el elemento de sintaxis entropy_coding_sync_enabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior).
[0094] La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo 30 de ejemplo que puede implementar las técnicas descritas en la presente divulgación. En particular, el descodificador de vídeo 30 puede configurarse para realizar un procesamiento en paralelo de frente de onda de datos de vídeo de acuerdo con las técnicas de esta divulgación. Como se ha indicado anteriormente, el descodificador de vídeo 30 puede adaptarse para realizar la codificación de vídeo de múltiples visualizaciones y/o ajustable a escala. Por ejemplo, el descodificador de vídeo 30 puede configurarse para descodificar un flujo de bits que se ajuste a una o más extensiones estándar de codificación de vídeo, tales como SHVC, MV-HEVC o 3D-HEVC. Sin embargo, si bien se hace referencia a normas de codificación específicas, debería entenderse que las técnicas no son específicas para ninguna norma de codificación y que pueden implementarse con normas futuras y/o aún no desarrolladas.
[0095] En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye una memoria de datos de vídeo 79, una unidad de descodificación por entropía 80, una unidad de procesamiento de predicción 81, una unidad de cuantificación inversa 86, una unidad de procesamiento de transformación inversa 88, un sumador 90, una memoria de imágenes de referencia 92 y una unidad de filtrado 94. La unidad de procesamiento de predicción 81 incluye una unidad de compensación de movimiento 82 y una unidad de procesamiento de predicción intra 84. En algunos ejemplos, el descodificador de vídeo 30 puede realizar un pase de descodificación, en general, recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 de la FIG. 2.
[0096] La memoria de datos de vídeo 79 puede almacenar datos de vídeo, tales como un flujo de bits de vídeo codificado, que se va a descodificar por los componentes del descodificador de vídeo 30. Los datos de vídeo almacenados en la memoria de datos de vídeo 79 pueden obtenerse, por ejemplo, de un medio legible por ordenador, por ejemplo, de una fuente de vídeo local, tal como una cámara, mediante comunicación de datos de vídeo por red alámbrica o inalámbrica, o accediendo a medios de almacenamiento físico de datos. La memoria de datos de vídeo 79 puede formar un búfer de imágenes codificadas (CPB) que almacena datos de vídeo codificados a partir de un flujo de bits de vídeo codificado. La memoria de imágenes de referencia 92 puede denominarse búfer de imágenes descodificadas que almacena datos de vídeo de referencia para su uso en la descodificación de datos de vídeo mediante el descodificador de vídeo 30, por ejemplo, en modos de intra o intercodificación. La memoria de datos de vídeo 79 y la memoria de imágenes de referencia 92 se pueden formar por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 79 y la memoria de imágenes de referencia 92 se pueden proporcionar por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 79 puede estar en un chip con otros componentes del descodificador de vídeo 30, o fuera del chip relativo a esos componentes.
[0097] Durante el procedimiento 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 de sintaxis asociados desde el codificador de vídeo 20. La unidad de descodificación por entropía 80 del descodificador de vídeo 30 descodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos de sintaxis. La unidad de descodificación por entropía 80 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de procesamiento de predicción 81. El descodificador de vídeo 30 puede recibir los elementos de sintaxis a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo.
[0098] Cuando el fragmento de vídeo se codifica como un fragmento intra-codificado (1), la unidad de procesamiento de predicción intra 84 de la unidad de procesamiento 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 trama o imagen actual. Cuando la trama de vídeo se codifica como un fragmento intercodificado (es decir, B, P o GPB), la unidad de compensación de movimiento 82 de la unidad de procesamiento 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 en otros elementos de sintaxis 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 tramas de referencia, lista 0 y lista 1, usando técnicas de construcción por defecto en base a imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
[0099] 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 de sintaxis, 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 de compensación de movimiento 82 usa algunos de los elementos de sintaxis 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 o fragmento P), 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, el estado de predicción inter para cada bloque de vídeo intercodificado del fragmento y otra información para descodificar los bloques de vídeo en el fragmento de vídeo actual.
[0100] La unidad de compensación de movimiento 82 también puede realizar la interpolación en base a filtros de interpolación. La unidad de compensación de movimiento 82 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular los valores interpolados para píxeles fraccionarios de los bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
[0101] 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 procedimiento de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo del fragmento de vídeo para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa que se debería aplicar. La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de entero inversa o un procedimiento de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de píxel.
[0102] 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 de sintaxis, 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.
[0103] La unidad de filtrado 94 puede, en algunos ejemplos, estar configurada de forma similar a la unidad de filtrado 66 del codificador de vídeo 20 (FIG. 2). Por ejemplo, la unidad de filtrado 94 puede configurarse para realizar desbloqueo, SAO u otras operaciones de filtrado al descodificar y reconstruir datos de vídeo a partir de un flujo de bits codificado. Los bloques de vídeo descodificados en una trama o imagen dada se almacenan a continuación en la memoria de imágenes de referencia 92, que almacena imágenes de referencia usadas para una compensación de movimiento subsiguiente. La memoria de imágenes de referencia 92 también almacena vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 33 de la FIG. 1.
[0104] De acuerdo con aspectos de esta divulgación, el descodificador de vídeo 30 puede configurarse para descodificar datos que indican una configuración de mosaico y/o una configuración de procesamiento en paralelo para capas de un flujo de bits de múltiples capas. Por ejemplo, el descodificador de vídeo 30 puede configurarse para descodificar datos de un VPS y/o VPS VUI que indica una configuración de mosaico para capas de un flujo de bits de múltiples capas y/o una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas. En particular, con respecto a la configuración de procesamiento en paralelo, los datos pueden indicar si se realiza la sincronización de procesamiento en paralelo (por ejemplo, sincronización de codificación por entropía, como se realiza en WPP).
[0105] En algunos ejemplos, los datos que indican la configuración de mosaico y/o la configuración de procesamiento en paralelo pueden incluir varios elementos de sintaxis. Por ejemplo, para cada capa de datos de vídeo en el flujo de bits de múltiples capas, el descodificador de vídeo 30 puede descodificar uno o más elementos de sintaxis que indican si los mosaicos están habilitados en al menos una imagen de la capa (por ejemplo, como el elemento de sintaxis de tiles_enabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior). Además, para cada capa para la que se habilitan mosaicos, el descodificador de vídeo 30 también puede descodificar uno o más elementos de sintaxis que indican si el filtrado de bucle se aplica a través de los límites de los mosaicos, o si el filtrado de bucle a través de los límites de los mosaicos está deshabilitado (por ejemplo, como el elemento de sintaxis loop_filter_across_tiles_disabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior). En algunos casos, el descodificador de vídeo 30 también puede descodificar uno o más elementos de sintaxis que indican una configuración de procesamiento en paralelo. Por ejemplo, el descodificador de vídeo 30 puede descodificar uno o más elementos de sintaxis que indican si la sincronización de codificación por entropía se realiza, por ejemplo, a través de WPP (por ejemplo, como el elemento de sintaxis entropy_coding_sync_enabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior).
[0106] De acuerdo con aspectos de esta divulgación, el descodificador de vídeo 30 puede realizar la descodificación de vídeo de los datos de vídeo de acuerdo con los elementos de sintaxis. Por ejemplo, el descodificador de vídeo 30 puede asignar recursos de descodificación basándose en los elementos de sintaxis descodificados y proceder con la descodificación de los datos de vídeo.
[0107] Las FIGS. 4A y 4B representan diagramas conceptuales que muestran ejemplos de sincronización CTB en procesamiento en paralelo de frente de onda. Cabe señalar que los ejemplos de la FIG. 4A y FIG. 4B se presentan con fines ilustrativos. En otros ejemplos, se pueden procesar más de dos filas CTB en paralelo. Además, una trama de vídeo puede comprender más o menos CTB en una fila de CTB que los 7 CTB que se representan en la FIG. 4A y FIG. 4B.
[0108] La FIG. 4A muestra un ejemplo de procesamiento en paralelo de frente de onda con puntos de sincronización retardados por un CTB. En el ejemplo de la FIG. 4A, se procesan dos filas CTB (por ejemplo, se descodifican) en paralelo. La descodificación de CTB 0 en la fila 1 de CTB, en el punto de sincronización A, no comienza hasta que la descodificación de la fila 0 de CTB también alcanza el punto de sincronización A.
[0109] En el ejemplo de la FIG. 4A, el punto de sincronización A se produce después de que se haya completado la descodificación de CTB 0 en la fila 0 de CTB. Este retardo permite la descodificación de elementos de sintaxis y/o información de píxeles en CTB 0 en la fila 1 que se basan en elementos de sintaxis descodificados y/o información de píxeles en un CTB directamente arriba, o arriba y a la izquierda de la CTB. Es decir, el descodificador de vídeo 30 puede requerir que ciertos elementos de sintaxis en CTB 0 fila 0 ya hayan sido descodificados, para descodificar correctamente los elementos de sintaxis en CTB 0 fila 1. Los puntos de sincronización BG muestran otros puntos en los que puede finalizar la codificación de la fila 0, antes de que la codificación de la fila 1 pueda comenzar en el punto correspondiente. Como puede verse, se requiere sincronización en cada CTB. En este contexto, la sincronización no requiere necesariamente que la descodificación en, por ejemplo, el punto A, en ambas filas se produzca simultáneamente. Más bien, la sincronización simplemente requiere que la descodificación de la fila superior alcance el punto de sincronización antes de que la descodificación de la fila inferior pueda comenzar en el punto de sincronización correspondiente.
[0110] La FIG. 4B es un diagrama conceptual que ilustra otro ejemplo de puntos de sincronización para el procesamiento en paralelo de frente de onda. En este ejemplo, la descodificación de información de píxeles y/o elementos de sintaxis en una fila CTB inferior (por ejemplo, fila 1 de CTB) también puede depender de la información de píxeles descodificada y/o elementos de sintaxis en una CU ubicada arriba y a la derecha de la actual descodificada CU. Como tal, dos CTB en la fila 0 (es decir, CTB 0 y CTB 1) deben descodificarse antes de que la descodificación pueda comenzar en la fila 1 de CTB. Como se muestra en la FIG. 4B, el descodificador de vídeo 30 puede comenzar a descodificar CTB 0 en la fila 1 de CTB cuando se haya completado la descodificación de CTB 1 en la fila 0 de CTB.
[0111] Como se analizó anteriormente, los elementos de sintaxis típicamente se codifican mediante un codificador por entropía en el codificador de vídeo 20. Por ejemplo, el codificador de vídeo 20 puede codificar elementos de sintaxis utilizando CABAC. Cada elemento de sintaxis se puede binarizar en uno o más bins para la aplicación de CABAC. Como tal, los elementos de sintaxis para CTB completos pueden señalarse mediante un solo bin o por varios bins. Es deseable tener equilibrio de carga para la operación de análisis entre los CTB. Si la sincronización del módulo de análisis se relaja para realizarse al principio de cada fila CTB, en lugar de en cada CTB, se puede lograr el equilibrio de carga para analizar los subflujos del frente de onda (es decir, analizar cada fila CTB). Por lo tanto, para eliminar la necesidad de sincronización por CTB, el codificador de vídeo 20 puede configurarse de manera que todos los elementos de sintaxis sean descodificables sin el uso de información de ningún elemento de sintaxis de una fila de CTB por encima de la CTB codificado actualmente.
[0112] WPP, como se muestra en los ejemplos de las FIGS. 4A y 4B, se pueden habilitar usando uno o más elementos de sintaxis. Por ejemplo, como se establece en la especificación HEVC, el elemento de sintaxis entropy_coding_sync_enabled_flag igual a 1 especifica que se invoca un proceso de sincronización específico para las variables de contexto antes de descodificar la unidad de árbol de codificación que incluye el primer bloque de árbol de codificación de una fila de bloques de árbol de codificación en cada mosaico en cada imagen se refiere al PPS, y se invoca un proceso de almacenamiento específico para las variables de contexto después de descodificar la unidad del árbol de codificación que incluye el segundo bloque del árbol de codificación de una fila de bloques del árbol de codificación en cada mosaico en cada imagen que se refiere al PPS. Además, el elemento de sintaxis entropy_coding_sync_enabled_flag que es igual a un valor de 0 especifica que no es necesario invocar ningún proceso de sincronización específico para las variables de contexto antes de descodificar la unidad de árbol de codificación que incluye el primer bloque de árbol de codificación de una fila de bloques de árbol de codificación en cada mosaico en cada imagen que se refiere al PPS, y no es necesario invocar un proceso de almacenamiento específico para las variables de contexto después de descodificar la unidad de árbol de codificación que incluye el segundo bloque de árbol de codificación de una fila de bloques de árbol de codificación en cada mosaico en cada imagen que se refiere al PPS. En algunos casos, el elemento de sintaxis entropy_coding_sync_enabled_flag puede usarse para controlar la sincronización descrita anteriormente con respecto a las FIGS. 4A y 4B.
[0113] La FIG. 5 es un diagrama conceptual que ilustra otro ejemplo de puntos de sincronización para el procesamiento en paralelo de filas de bloques de vídeo. En el ejemplo de la FIG. 5, el codificador de vídeo 20 y el descodificador de vídeo 30 están configurados para analizar todos los elementos de sintaxis sin utilizar ninguna información de una fila CTB por encima de la fila CTB actualmente codificada. Como tal, la parte de análisis del procesamiento en paralelo de frente de onda puede proceder desde un único punto de sincronización al comienzo de la fila CTB, ya que cualquier diferencia en la complejidad del análisis y el tiempo de análisis entre las filas no tiene relación con otra fila.
[0114] Como se muestra en la FIG. 5, la codificación de la fila 0 de CTB puede comenzar antes de la codificación de la fila 1 de CTB, ya que las técnicas de codificación predictiva (por ejemplo, predicción inter o predicción intra) utilizadas durante el proceso de reconstrucción aún pueden depender de la información de píxeles de la fila anterior. Como se muestra en la FIG. 5, el procesamiento de la fila 1 de CTB puede comenzar tan pronto como se complete la reconstrucción de CTB 1 en la fila 0 de CTB. Sin embargo, a diferencia del ejemplo de la FIG. 4A y FIG. 4B, no se utilizan más puntos de sincronización para procesar las filas 0 y 1 de CTB. Como tal, se puede procesar una primera pluralidad de filas de CTB en paralelo, utilizando el retardo de dos CTB, con un solo punto de sincronización, es decir, el punto de sincronización A'. Una segunda pluralidad de filas CTB (es decir, filas CTB 2 y 3) puede codificarse en paralelo por el codificador de vídeo 20 o el descodificador de vídeo 30 usando un único punto de sincronización B' después de que se procese la primera pluralidad de filas CTB. En el ejemplo de la FIG. 5, el primer y segundo grupo de filas CTB incluyen dos filas CTB. Sin embargo, se pueden procesar más de dos filas de CTB en paralelo utilizando las técnicas de esta divulgación.
[0115] De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 puede configurarse para codificar datos que indican una configuración de procesamiento en paralelo para capas de un flujo de bits de múltiples capas. Por ejemplo, el codificador de vídeo 20 puede configurarse para codificar datos de un VPS y/o VPS VUI que indique una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas. En particular, con respecto a la configuración de procesamiento en paralelo, los datos pueden indicar si se realiza la sincronización del procesamiento en paralelo, como la descrita anteriormente con respecto a las FIGS. 4A - 5. Asimismo, el descodificador de vídeo 30 puede configurarse para descodificar tales datos, por ejemplo, a partir de un VPS y/o VPS VUI.
[0116] En algunos ejemplos, los datos que indican la configuración de procesamiento en paralelo pueden incluir varios elementos de sintaxis. Por ejemplo, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican si la sincronización de la codificación por entropía se realiza en cualquier imagen de una capa en un flujo de bits de múltiples capas. Es decir, el codificador de vídeo 20 puede proporcionar una indicación temprana, utilizando el VPS, de si la sincronización de codificación por entropía habilitada se realiza en capas del flujo de bits de múltiples capas (por ejemplo, debido a que el VPS ocurre relativamente antes en el flujo de bits que los conjuntos de parámetros que realmente permiten la sincronización de codificación por entropía, como un PPS). En un ejemplo con fines ilustrativos, el codificador de vídeo 20 puede codificar un elemento de sintaxis entropy_coding_sync_enabled_vps_flag[i] que indica si el valor del elemento de sintaxis entropy_coding_sync_enabled_flag es igual a 1 para cada PPS al que hace referencia al menos una imagen de una capa en particular. El descodificador de vídeo 30 también puede configurarse para descodificar tal información del VPS. El descodificador de vídeo 30 puede, en algunos casos, usar dicha información para asignar recursos del sistema para descodificar los datos de vídeo de múltiples capas.
[0117] La FIG. 6 es un diagrama conceptual que ilustra mosaicos de ejemplo de acuerdo con la norma HEVC. Usar la estructura de mosaicos mostrada en la FIG. 6 puede, en algunos casos, hacer que un códec sea más compatible con el paralelo. HEVC define los mosaicos como un número entero de CTB que coexisten en una columna y una fila, ordenados consecutivamente en escaneo cuadriculado de CTB del mosaico. La división de cada imagen en mosaicos puede denominarse una partición. Los mosaicos en una imagen se ordenan consecutivamente en el escaneo cuadriculado del mosaico, como se muestra en la FIG. 6.
[0118] Por ejemplo, la FIG. 6 ilustra un ejemplo de orden de codificación de CTB para una imagen 96 que está dividida en múltiples mosaicos 98A, 98B, 98C, 98d , 98E, 98F, 98G, 98H y 981 (colectivamente, "mosaicos 98"), con límites de mosaico indicados por las líneas gruesas. Cada bloque cuadrado en la imagen 96 representa un bloque de píxeles asociado a un CTB. Los números en los bloques de píxeles indican las posiciones de los CTB correspondientes (por ejemplo, las LCU) en un orden de codificación de mosaico para la imagen 96. Como se ilustra en el ejemplo de la FIG.
6, los CTB en el mosaico 98A se codifican primero, seguidos por los CTB en el mosaico 98B, seguidos por los CTB en el mosaico 98C, seguidos por los CTB en el mosaico 98D, seguidos por los CTB en el mosaico 98E, seguidos por los CTB en el mosaico 98F, seguidos por los CTB en el mosaico 98G, seguidos por los CTB en el mosaico 98H y seguidos por los CTB en el mosaico 981. Dentro de cada uno de los mosaicos 98, los CTB se codifican de acuerdo con un orden de escaneo cuadriculado.
[0119] El número de mosaicos y las ubicaciones de sus límites se pueden definir para toda la secuencia o cambiar de una imagen a otra. Los límites, de manera similar a los límites de fragmento, rompen las dependencias de análisis y de predicción, de modo que un mosaico se pueda procesar de forma independiente. Sin embargo, en algunos casos, los filtros en bucle (por ejemplo, filtros de desbloqueo y filtros de desplazamiento adaptativo de muestra (SAO)) aún pueden cruzar los límites de los mosaicos. Por ejemplo, HEVC proporciona un elemento de sintaxis loop_filter_across_tiles_enabled_flag especificado en un PPS. Cuando el valor del elemento de sintaxis loop_filter_across_tiles_enabled_flag es igual a 1, las operaciones de filtrado en bucle se pueden realizar a través de los límites de los mosaicos en imágenes que se refieren al PPS. El elemento de sintaxis loop_filter_across_tiles_enabled_flag igual a un valor de 0 especifica que las operaciones de filtrado en bucle no se realizan a lo ancho de los límites de los mosaicos en las imágenes que se refieren al PPS.
[0120] El uso de mosaicos puede mejorar el paralelismo, ya que no se necesita ninguna comunicación (o relativamente poca) entre los procesadores o los núcleos de procesadores para la descodificación por entropía y la reconstrucción de compensación de movimiento. Además, los mosaicos pueden exhibir una eficacia de codificación relativamente mejor cuando se comparan con los fragmentos, porque los mosaicos permiten formas de partición de imágenes que contienen muestras con una correlación potencialmente superior a los fragmentos. Los mosaicos también pueden reducir la sobrecarga de la cabecera de fragmento.
[0121] Cuando se usa un mosaico en la codificación de una sola capa, el elemento de sintaxis min_spatial_segmentation_idc puede ser utilizado por un descodificador de vídeo (como un descodificador de vídeo 30) para calcular el número máximo de muestras de luminancia a procesar por un hilo de procesamiento, suponiendo que el descodificador de vídeo 30 utiliza al máximo la información de descodificación en paralelo. Cuando no es igual a 0, un elemento de sintaxis min_spatial_segmentation_idc puede ayudar a establecer un límite en el tamaño máximo posible de distintas regiones de segmentación espacial codificadas en las imágenes de la secuencia de vídeo codificada. En HEVC, puede haber algunas interdependencias de imagen entre los diferentes hilos, por ejemplo, debido a la sincronización de la codificación por entropía o al filtrado de desbloqueo a lo ancho de los límites de los mosaicos o fragmentos. Tales interdependencias pueden afectar la manera en que el descodificador de vídeo 30 asigna recursos para descodificar datos de vídeo, como se describe en el presente documento.
[0122] De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 puede codificar datos que indiquen una configuración de mosaico para capas de un flujo de bits de múltiples capas. Por ejemplo, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indique si los mosaicos, como los mosaicos mostrados y descritos anteriormente con respecto a la FIG. 6, están habilitados para una capa particular de un flujo de bits de múltiples capas. De forma adicional o alternativa, el codificador de vídeo 20 puede codificar datos que indiquen si el filtrado de bucle a través de mosaicos está habilitado o deshabilitado. El descodificador de vídeo 30 puede configurarse para descodificar tales datos, por ejemplo, a partir de un VPS y/o VPS VUI.
[0123] En algunos ejemplos, los datos que indican la configuración del mosaico pueden incluir varios elementos de sintaxis. Por ejemplo, para cada capa de datos de vídeo en el flujo de bits de múltiples capas, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican si los mosaicos están habilitados en al menos una imagen de la capa. Además, para cada capa para la que se habilitan mosaicos, el codificador de vídeo 20 también puede codificar uno o más elementos de sintaxis que indican si el filtrado de bucle se aplica a través de los límites de los mosaicos, o si el filtrado de bucle a través de los límites de los mosaicos está deshabilitado. De esta manera, el codificador de vídeo 20 puede proporcionar una indicación temprana, utilizando el VPS, de una configuración de mosaico (por ejemplo, si los mosaicos están habilitados y/o si se puede aplicar filtrado a través de mosaicos) para capas del flujo de bits de múltiples capas (por ejemplo, debido a que el VPS ocurre relativamente antes en el flujo de bits que los conjuntos de parámetros que realmente permiten la sincronización de la codificación por entropía, como un PPS).
[0124] En un ejemplo con fines ilustrativos, el codificador de vídeo 20 puede codificar un elemento de sintaxis tiles_enabled_vps_flag[i] que indica si el valor de tiles_enabled_flag es igual a 1 para cada PPS al que hace referencia al menos una imagen de una capa particular. De forma adicional o alternativa, el codificador de vídeo 20 puede codificar un elemento de sintaxis loop_across_tiles_disabled_vps_flag[i] que indica si el valor de loop_filter_across_tiles_enabled_flag es igual a 0 para cada PPS al que hace referencia al menos una imagen de una capa particular. El descodificador de vídeo 30 también puede configurarse para descodificar tal información del VPS. El descodificador de vídeo 30 puede, en algunos casos, usar dicha información para asignar recursos del sistema para descodificar los datos de vídeo de múltiples capas.
[0125] Las FIGS. 7 a 10 ilustran una variedad de técnicas de codificación de múltiples capas que pueden usarse junto con las técnicas de esta divulgación. Por ejemplo, las técnicas se pueden aplicar a componentes de visualización de textura, componentes de visualización en profundidad y las diversas capas temporales, espaciales y de calidad, como se describe en el presente documento.
[0126] La FIG. 7 es un diagrama conceptual que ilustra un patrón de predicción de MVC de ejemplo. Mientras que la FIG. 7 se describe con respecto a H.264/AVC y MVC, debe entenderse que se puede usar un patrón de predicción similar con otros esquemas de codificación de vídeo de múltiples visualizaciones, incluidos MV-HEVC, 3D-HEVC (una extensión de múltiples visualizaciones más profundidad de HEVC) y múltiples visualizaciones usando codificación de vídeo escalable (ver, por ejemplo, el ejemplo de codificación de vídeo escalable descrito con respecto a las FIGS. 810). Por lo tanto, las referencias a la codificación de múltiples visualizaciones y/o MVC a continuación se aplican a la codificación de vídeo de múltiples visualizaciones en general, y no están restringidas a la norma H.264/MVC.
[0127] En el ejemplo de la FIG. 7, se ilustran ocho visualizaciones (que tienen ID de visualización de "S0" hasta "S7"), y se ilustran doce ubicaciones temporales (de "T0" hasta "T11") para cada visualización. Es decir, cada fila en la FIG.
7 corresponde a una visualización, mientras que cada columna indica una ubicación temporal.
[0128] Aunque la MVC tiene una denominada visualización básica que se puede descodificar mediante los descodificadores de la H.264/AVC y se podrían soportar también los pares de visualizaciones en estéreo por la MVC, la ventaja de MVC es que podría soportar un ejemplo que usa más de dos visualizaciones como una entrada de vídeo 3D y que descodifica este vídeo 3D representado por las múltiples visualizaciones. Un visualizador de un cliente que tiene un descodificador de MVC puede esperar contenido de vídeo en 3D con múltiples visualizaciones.
[0129] Las imágenes en la FIG. 7 están indicadas en la intersección de cada fila y cada columna en la FIG. 7, usando un bloque sombreado que incluye una letra, que designa si la imagen correspondiente está intracodificada (es decir, es una trama I) o intercodificada 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 usa 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.
[0130] Al igual que con la codificación de vídeo de visualización única, las imágenes de una secuencia de vídeo de codificación 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, que 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 la visualización puede usar los componentes de la visualización en otras visualizaciones como referencia. En la MVC, como ejemplo de codificación de vídeo de múltiples visualizaciones, la predicción entre visualizaciones se realiza como si el componente de la visualización de otra visualización fuera una referencia de predicción inter. Las posibles referencias entre visualizaciones se señalizan en la extensión de la MVC del conjunto de parámetros de secuencia (SPS) y pueden ser modificadas por 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 predicción entre visualizaciones.
[0131] En la MVC, se permite la predicción entre visualizaciones (IVP) entre imágenes en la misma unidad de acceso (es decir, con la misma instancia de tiempo). Una unidad de acceso es, en general, una unidad de datos que incluye todos los componentes de visualización (por ejemplo, todas las unidades de capa de abstracción de red (NAL)) para una instancia temporal común. Por lo tanto, en la MVC, se permite la predicción entre visualizaciones entre imágenes en la misma unidad de acceso. Cuando se codifica una imagen en una de las visualizaciones no básicas, la imagen puede agregarse a una lista de imágenes de referencia, si está en una visualización diferente pero con la misma instancia de tiempo (por ejemplo, el mismo valor de POC y, por lo tanto, en la misma unidad de acceso). Una imagen de referencia de predicción entre visualizaciones puede disponerse en cualquier posición de una lista de imágenes de referencia, tal como cualquier imagen de referencia de predicción inter.
[0132] La FIG. 7 proporciona diversos ejemplos de predicción entre visualizaciones. Las imágenes de la visualización S1, en el ejemplo de la FIG. 7, se ilustran como predichas a partir de imágenes en diferentes ubicaciones temporales de la visualización S1, así como predichas entre visualizaciones a partir 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.
[0133] En el ejemplo de la FIG. 7, la "B" mayúscula y la "b" minúscula están destinadas a indicar diferentes relaciones jerárquicas entre imágenes, en lugar de diferentes metodologías de codificación. En general, las imágenes con "B" mayúscula son relativamente más altas en la jerarquía de predicción que las imágenes con "b" minúscula. La FIG. 7 también ilustra variaciones en la jerarquía de predicción usando 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. 7 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 diversos niveles de sombreado entre sí, pero siempre más claro que el sombreado de las tramas P y las tramas I.
[0134] En general, la jerarquía de predicción se refiere a los índices de orden de visualización, en cuanto a que las imágenes relativamente más altas en la jerarquía de predicción se deberían descodificar antes de descodificar imágenes que están relativamente más bajas en la jerarquía, de modo que esas imágenes relativamente más altas en la jerarquía se puedan usar 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. 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.
[0135] De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 puede codificar datos que indiquen una configuración de mosaico y/o una configuración de procesamiento en paralelo para capas de un flujo de bits de múltiples capas, como las visualizaciones S0-S7 mostradas en el ejemplo de la FIG. 7. Por ejemplo, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indica una configuración de mosaico para visualizaciones de los datos de vídeo de múltiples visualizaciones mostrados en el ejemplo de la FIG. 7. Por ejemplo, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indique si los mosaicos, como los mosaicos mostrados y descritos anteriormente con respecto a la FIG. 6, están habilitados para una visualización particular de los datos de vídeo de múltiples visualizaciones. De forma adicional o alternativa, el codificador de vídeo 20 puede codificar datos que indiquen si el filtrado de bucle a través de mosaicos está habilitado o deshabilitado. El descodificador de vídeo 30 puede configurarse para descodificar tales datos, por ejemplo, a partir de un VPS y/o VPS VUI.
[0136] De forma adicional o alternativa, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indica una configuración de procesamiento en paralelo para visualizaciones de los datos de vídeo de múltiples visualizaciones mostrados en el ejemplo de la FIG. 7. Por ejemplo, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indique si la sincronización descrita anteriormente con respecto a las FIGS. 4A-5, está habilitada para imágenes de una visualización particular de los datos de vídeo de múltiples visualizaciones. El descodificador de vídeo 30 puede configurarse para descodificar tales datos, por ejemplo, a partir de un VPS y/o VPS VUI.
[0137] La FIG. 8 es un diagrama conceptual que ilustra varias dimensiones escalables para la codificación de vídeo escalable (SVC). En este ejemplo, las escalabilidades se habilitan en tres dimensiones. En la dimensión de tiempo, las frecuencias de tramas con 7,5 Hz, 15 Hz o 30 Hz pueden ser soportadas por la escalabilidad temporal (T). Cuando se soporta escalabilidad espacial (S), se pueden habilitar diferentes resoluciones, como QCIF, CIF y 4CIF. Para cada resolución espacial y frecuencia de tramas específicas, se pueden agregar capas de señal a ruido (SNR) (Q) para mejorar la calidad de la imagen.
[0138] Una vez que el contenido de vídeo se ha codificado de tal manera escalable, se puede usar una herramienta de extracción para adaptar el contenido real entregado de acuerdo con los requisitos de la aplicación, que pueden depender, por ejemplo, de los clientes o el canal de transmisión. En el ejemplo mostrado en la FIG. 8, cada volumen cúbico, es decir cubo, contiene las imágenes con la misma frecuencia de trama (nivel temporal), resolución espacial y capas de SNR. Se puede lograr una mejor representación añadiendo esos cubos (imágenes) en cualquier dimensión. La escalabilidad combinada puede soportarse cuando hay dos, tres o incluso más escalabilidades habilitadas.
[0139] De acuerdo con la especificación SVC, las imágenes con las capas espacial y de calidad más bajas son compatibles con H.264/AVC, y las imágenes en el nivel temporal más bajo forman la capa base temporal, que se puede mejorar con imágenes a niveles temporales más altos. Además de la capa compatible con H.264/AVC, se pueden agregar varias capas de mejora espacial y/o de SNR para proporcionar escalabilidades espacial y/o de calidad. La escalabilidad de SNR también se denomina escalabilidad de calidad. Cada capa de mejora espacial o de SNR puede ser temporalmente escalable, con la misma estructura de escalabilidad temporal que la capa compatible con H.264/AVC. Para una capa de mejora espacial o de SNR, la capa inferior de la que depende también se denomina capa base de esa capa de mejora espacial o de SNR específica.
[0140] La FIG. 9 es un diagrama conceptual que ilustra un ejemplo de la estructura de codificación SVC. En este ejemplo, las imágenes con la capa espacial y de calidad más bajas (imágenes en la capa 0 y capa 1, con resolución QCIF) son compatibles con H.264/AVC. Entre ellas, las imágenes del nivel temporal más bajo forman la capa base temporal, como se muestra en la capa 0 de la FIG. 9. Esta capa base temporal (capa 0) se puede mejorar con imágenes de niveles temporales más altos (capa 1). Además de la capa compatible con H.264/AVC, se pueden agregar varias capas de mejora espacial y/o de SNR para proporcionar escalabilidades espacial y/o de calidad. Por ejemplo, la capa de mejora puede ser una representación CIF con la misma resolución que la capa 2. En este ejemplo, la capa 3 es una capa de mejora de SNR. Como se muestra en este ejemplo, cada capa de mejora espacial o de SNR puede ser temporalmente escalable, con la misma estructura de escalabilidad temporal que la capa compatible con H.264/AVC. Además, una capa de mejora puede mejorar tanto la resolución espacial como la frecuencia de tramas. Por ejemplo, la capa 4 proporciona una capa de mejora 4CIF, que incrementa aún más la frecuencia de tramas de 15 Hz a 30 Hz.
[0141] La FIG. 10 es un diagrama conceptual que ilustra unidades de acceso (UA) de ejemplo. Cada UA incluye uno o más fragmentos, encapsulados dentro de unidades de capa de abstracción de red (NAL). Puede haber cero o más unidades NAL por unidad de acceso por capa. Un conjunto de unidades NAL que corresponde a una capa dentro de una UA se puede denominar un "componente de capa". El ejemplo de la FIG. 10 representa componentes de capa correspondientes a los componentes de capa de la FIG. 9. Como se muestra en el ejemplo de la FIG. 10, los fragmentos codificados en la misma instancia de tiempo (es decir, dentro de una UA común) son sucesivos en el orden de flujo de bits y forman una unidad de acceso en el contexto de SVC. A continuación, esas unidades de acceso SVC siguen el orden de descodificación, que podría ser diferente del orden de visualización y decidirse, por ejemplo, mediante la relación de predicción temporal.
[0142] Las extensiones escalables de H.264/AVC (codificación de vídeo avanzada) se describen a continuación. Algunas funcionalidades de SVC se heredan de H.264/AVC. En comparación con las normas escalables anteriores, a continuación se revisan algunas de las mayores ventajas de la extensión de SVC a H.264/AVC, a saber, la predicción entre capas y la descodificación de un solo bucle.
[0143] La extensión de SVC de H.264/AVC soporta la descodificación de un solo bucle. Con la descodificación de un solo bucle, cada capa soportada se puede descodificar con un solo bucle de compensación de movimiento. Para lograr esto, el uso de la predicción intra entre capas solo se permite para macrobloques de capa de mejora, para los cuales la señal de la capa de referencia co-ubicada está intra-codificada. Se requiere además que todas las capas que se utilizan para la predicción entre capas de las capas superiores se codifiquen usando predicción intra restringida.
[0144] La extensión SVC de H.264/AVC también soporta la predicción entre capas. SVC introduce la predicción entre capas para escalabilidades espaciales y de SNR basadas en textura, residuos y movimiento. La escalabilidad espacial en SVC se ha generalizado para cualquier relación de resolución entre dos capas. La escalabilidad de SNR se puede realizar mediante escalabilidad de granularidad gruesa (CGS) o escalabilidad de granularidad media (MGS). En SVC, dos capas espaciales o de CGS pertenecen a distintas capas de dependencia (indicadas mediante dependency_id de elemento de sintaxis en la cabecera de la unidad NAL), mientras que dos capas de MGS pueden estar en la misma capa de dependencia. Una capa de dependencia incluye capas de calidad con el valor del quality_id de elemento de sintaxis desde 0 hasta valores más altos, correspondientes a capas de mejora de calidad. En SVC, los procedimientos de predicción entre capas se utilizan para reducir la redundancia entre capas.
[0145] Como se ha indicado anteriormente, de forma similar a H.2.64/AVC, HEVC también tendrá extensión de codificación de vídeo escalable, actualmente llamada SHVC, que al menos proporcionará escalabilidad temporal, escalabilidad de SNR y escalabilidad espacial. En SHVC, para lograr predicción de textura entre capas, las muestras reconstruidas de capa de referencia se muestrean de forma ascendente en primer lugar cuando la resolución de la capa de referencia es menor que la de la capa de mejora. Incluso en el caso de escalabilidad de SNR, las muestras de la capa de referencia pueden filtrarse antes de ser utilizadas para la predicción entre capas para obtener una mayor eficiencia de codificación. El proceso de muestreo ascendente o de filtrado entre capas puede realizarse para imágenes de capa completa, que también pueden denominarse componentes de capa o simplemente imágenes. En SHVC, se puede usar una estructura de descodificación de bucle múltiple y un descodificador de vídeo (tal como un descodificador de vídeo 30) puede procesar diferentes capas en paralelo.
[0146] De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 puede codificar datos que indiquen una configuración de mosaico y/o una configuración de procesamiento en paralelo para capas de un flujo de bits de múltiples capas, como las capas escalables mostradas en los ejemplos de las FIGS. 8 - 10. Por ejemplo, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indica una configuración de mosaico para capas de datos de vídeo escalables mostrados en los ejemplos de las FIGS. 8 - 10. Por ejemplo, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indique si los mosaicos, como los mosaicos mostrados y descritos anteriormente con respecto a la FIG. 6, están habilitados para una capa particular de datos de vídeo escalables. De forma adicional o alternativa, el codificador de vídeo 20 puede codificar datos que indiquen si el filtrado de bucle a través de mosaicos está habilitado o deshabilitado. El descodificador de vídeo 30 puede configurarse para descodificar tales datos, por ejemplo, a partir de un VPS y/o VPS VUI.
[0147] De forma adicional o alternativa, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indica una configuración de procesamiento en paralelo para capas de datos de vídeo escalables, tales como las capas mostradas en las FIGS. 8 - 10. Por ejemplo, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indique si la sincronización descrita anteriormente con respecto a las FIGS. 4A-5, está habilitada para imágenes de una capa particular de datos de vídeo escalables. El descodificador de vídeo 30 puede configurarse para descodificar tales datos, por ejemplo, a partir de un VPS y/o VPS VUI.
[0148] La FIG. 11 ilustra una técnica para procesar datos de vídeo consistente con esta divulgación. Aunque se describe con respecto al codificador de vídeo 20 (FIGS. 1 y 2) con fines de ejemplo, las técnicas de esta divulgación se pueden realizar utilizando una variedad de otros procesadores. Además, el proceso particular mostrado en la FIG.
11 se proporciona a modo de ejemplo. En otros ejemplos, un proceso consistente con las técnicas de esta divulgación puede incluir más, menos o una disposición alternativa de pasos.
[0149] El codificador de vídeo 20 puede determinar una configuración de mosaico para capas de datos de vídeo de múltiples capas (110). Por ejemplo, el codificador de vídeo 20 puede determinar si se deben usar mosaicos al codificar las capas de datos de vídeo. El codificador de vídeo 20 también puede determinar si se deben aplicar filtros de bucle a través de los límites de los mosaicos al codificar las capas de datos de vídeo. En algunos ejemplos, el codificador de vídeo 20 puede determinar si se utilizan mosaicos y si se aplican filtros de bucle a través de los límites de los mosaicos basándose en un análisis de distorsión de velocidad.
[0150] El codificador de vídeo 20 también puede determinar una configuración de procesamiento en paralelo para codificar las capas de datos de vídeo (112). Por ejemplo, el codificador de vídeo 20 puede determinar si se aplica WPP, así como la manera en que se realiza WPP, como se describe en los ejemplos anteriores con respecto a las FIGS. 4A - 5. El codificador de vídeo 20 puede codificar entonces las capas de los datos de vídeo de múltiples capas usando la configuración de mosaico determinada y la configuración de procesamiento en paralelo (114). Por ejemplo, el codificador de vídeo 20 puede realizar predicciones intra o inter-predicciones de datos de vídeo (incluida la predicción entre capas), como se describe anteriormente.
[0151] De acuerdo con aspectos de esta divulgación, el codificador de vídeo 20 también puede codificar datos que indiquen la configuración de mosaico y la configuración de procesamiento en paralelo (116). Por ejemplo, el codificador de vídeo 20 puede codificar datos de un VPS y/o VPS VUI que indica una configuración de mosaico para capas del flujo de bits de múltiples capas y una configuración de procesamiento en paralelo para capas del flujo de bits de múltiples capas. En un ejemplo con fines ilustrativos, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican si los mosaicos están habilitados en al menos una imagen de la capa (por ejemplo, como el elemento de sintaxis tiles_enabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior). Además, para cada capa para la que se habilitan mosaicos, el codificador de vídeo 20 también puede codificar uno o más elementos de sintaxis que indican si el filtrado de bucle se aplica a través de los límites de los mosaicos, o si el filtrado de bucle a través de los límites de los mosaicos está deshabilitado (por ejemplo, como el elemento de sintaxis loop_filter_across tiles_disabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior). El codificador de vídeo 20 también puede codificar uno o más elementos de sintaxis que indican una configuración de procesamiento en paralelo. Por ejemplo, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican si se realiza la sincronización de codificación por entropía, por ejemplo, a través de WPP (por ejemplo, tal como el elemento de sintaxis entropy_coding_sync_enabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior).
[0152] La FIG. 12 ilustra otra técnica para procesar datos de vídeo consistente con esta divulgación. Aunque se describe con respecto al descodificador de vídeo 30 (FIGS. 1 y 3) con fines de ejemplo, las técnicas de esta divulgación pueden realizarse utilizando una variedad de otros procesadores. Además, el proceso particular mostrado en la FIG.
12 se proporciona a modo de ejemplo. En otros ejemplos, un proceso consistente con las técnicas de esta divulgación puede incluir más, menos o una disposición alternativa de pasos.
[0153] El descodificador de vídeo 30 puede recibir un flujo de bits de múltiples capas (120). Por ejemplo, el descodificador de vídeo 30 puede recibir un flujo de bits que se ajuste a un estándar de codificación de vídeo particular, como la norma HEVC o sus extensiones (por ejemplo, como MV-HEVC, 3D-HEVC, SHVC, o similares).
[0154] De acuerdo con aspectos de esta divulgación, el descodificador de vídeo 30 puede descodificar datos que indiquen una configuración de mosaico (122). El descodificador de vídeo 30 también puede descodificar datos que indican una configuración de procesamiento en paralelo (124). Por ejemplo, el descodificador de vídeo 30 puede descodificar datos de un VPS y/o VPS VUI que indica una configuración de mosaico para las capas del flujo de bits de múltiples capas y una configuración de procesamiento en paralelo para las capas del flujo de bits de múltiples capas. En un ejemplo con fines ilustrativos, el descodificador de vídeo 30 puede descodificar uno o más elementos de sintaxis que indican si los mosaicos están habilitados en al menos una imagen de la capa (por ejemplo, como el elemento de sintaxis tiles_enabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior). Además, para cada capa para la que los mosaicos están habilitados, el descodificador de vídeo 30 también puede descodificar uno o más elementos de sintaxis que indican si el filtrado de bucle se aplica a través de los límites del mosaico, o si el filtrado de bucle a través de los límites del mosaico está deshabilitado (por ejemplo, como el elemento de sintaxis toop_filter_across_tiles_disabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior). En algunos casos, el descodificador de vídeo 30 también puede descodificar uno o más elementos de sintaxis que indican una configuración de procesamiento en paralelo. Por ejemplo, el descodificador de vídeo 30 puede descodificar uno o más elementos de sintaxis que indican si se realiza la sincronización de codificación por entropía, por ejemplo, a través de WPP (por ejemplo, como el elemento de sintaxis entropy_coding_sync_enabled_vps_flag[i] mostrado en el ejemplo de la Tabla 1 anterior).
[0155] En algunos casos, el descodificador de vídeo 30 puede asignar recursos de descodificación para descodificar los datos de múltiples capas (126). Por ejemplo, de acuerdo con aspectos de esta divulgación, la información descrita anteriormente puede proporcionar una indicación temprana de la configuración de mosaico y/o la configuración de procesamiento en paralelo de datos de vídeo, por ejemplo, antes de descodificar imágenes de los datos de vídeo. El descodificador de vídeo 30 puede asignar mosaicos particulares de datos de vídeo (si está habilitado) para ser descodificados por núcleos de procesamiento particulares. El descodificador de vídeo 30 puede, al asignar recursos, considerar si el filtrado de bucle puede aplicarse a través de los límites de los mosaicos. Además, el descodificador de vídeo 30 puede determinar los recursos de descodificación basándose en la configuración de procesamiento en paralelo (por ejemplo, la configuración WPP) de imágenes dentro de una capa particular. A continuación, el descodificador de vídeo 30 puede descodificar los datos de vídeo de múltiples capas, por ejemplo, usando un proceso recíproco aplicado por el codificador de vídeo 20 (128).
[0156] Ciertos aspectos de esta divulgación se han descrito con respecto a la norma HEVC y las ampliaciones de la norma de HEVC, con fines de ilustración. Sin embargo, las técnicas descritas en la presente divulgación pueden ser útiles para otros procesos de codificación de vídeo, que incluyen otros procesos de codificación de vídeo, estándar o de propiedad, aún no desarrollados.
[0157] Un codificador de vídeo, tal como se describe en esta divulgación, puede referirse a un codificador de vídeo o a un descodificador de vídeo. De manera similar, una unidad de codificación de vídeo puede referirse a un codificador de vídeo o a un descodificador de vídeo. Asimismo, la codificación de vídeo se puede referir a una codificación de vídeo o una descodificación de vídeo, según corresponda.
[0158] Debe reconocerse que, dependiendo del ejemplo, ciertos actos o sucesos de cualquiera de las técnicas descritas en el presente documento pueden realizarse en una secuencia distinta, pueden agregarse, fusionarse u omitirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en práctica de las técnicas). Por otro lado, en determinados ejemplos, las acciones o eventos pueden tener lugar simultáneamente, por ejemplo, a través de procesamiento de múltiples subprocesos, procesamiento de interrupciones o múltiples procesadores, en lugar de secuencialmente.
[0159] En un ejemplo, el descodificador de vídeo 30 puede configurarse para analizar uno o más elementos de sintaxis correspondientes a datos de vídeo, en el que uno o más elementos de sintaxis indican una o más de una configuración de mosaico, una configuración de filtro de bucle y una configuración de procesamiento en paralelo, y realizar la descodificación en paralelo de los datos de vídeo de acuerdo con uno o más elementos de sintaxis. El descodificador de vídeo 30 puede configurarse para recibir uno o más elementos de sintaxis en un conjunto de parámetros de vídeo.
[0160] En un ejemplo de la divulgación, el uno o más elementos de sintaxis incluyen un tiles_enabled_vps_flag que indica la configuración de mosaico para cada conjunto de parámetros de imagen al que se refiere al menos una imagen de los datos de vídeo, un loop_filter_across_tiles_disabled_vps_flag que indica la configuración del filtro de bucle para cada parámetro de imagen conjunto al que se hace referencia mediante al menos una imagen de los datos de vídeo, y un entropy_coding_sync_enabled_vps_flag que indica la configuración de procesamiento en paralelo para cada conjunto de parámetros de imagen al que se hace referencia mediante al menos una imagen de los datos de vídeo.
[0161] En otro ejemplo de la divulgación, el uno o más elementos de sintaxis incluyen un elemento de sintaxis parallel_tools_vps_idc, el elemento de sintaxis parallel_tools_vps_idc indica tanto la configuración de mosaico como la configuración de procesamiento en paralelo para cada capa de los datos de vídeo que se refieren al conjunto de parámetros de vídeo.
[0162] En otro ejemplo de la divulgación, el uno o más elementos de sintaxis incluyen un elemento de sintaxis parallel_tools_vps_idc, el elemento de sintaxis parallel_tools_vps_idc indica tanto la configuración de mosaico como la configuración de procesamiento en paralelo para cada conjunto de parámetros de imagen al que se hace referencia mediante al menos una imagen de los datos de vídeo.
[0163] En otro ejemplo de la divulgación, el uno o más elementos de sintaxis incluyen un tile_entropy_sync_coding_not_mixed_flag y un indicador loopfilter_across_tife_boundary_not_mixed, en el que el tile_entropy_sync coding_not_mixed_flag indica la configuración de mosaico al menos una configuración de procesamiento en paralelo de cada parámetro de imagen de vídeo, y en el que el indicador de filtro de bucle a través del borde del mosaico no mezclado indica la configuración del filtro de bucle para cada conjunto de parámetros de imagen al que se refiere al menos una imagen de los datos de vídeo.
[0164] En otro ejemplo de la divulgación, el codificador de vídeo 20 puede configurarse para determinar uno o más elementos de sintaxis correspondientes a los datos de vídeo, en el que el uno o más elementos de sintaxis indican uno o más de una configuración de mosaico, una configuración de filtro de bucle y una configuración de procesamiento en paralelo, realizar la codificación en paralelo de los datos de vídeo de acuerdo con uno o más elementos de sintaxis, y señalizar el uno o más elementos de sintaxis. El codificador de vídeo 20 puede señalar uno o más elementos de sintaxis en un conjunto de parámetros de vídeo.
[0165] En un ejemplo de la divulgación, el uno o más elementos de sintaxis incluyen un tiles_enabled_vps_flag que indica la configuración de mosaico para cada conjunto de parámetros de imagen al que se refiere al menos una imagen de los datos de vídeo, un loop_filter_across_tiles_disabled_vps_flag que indica la configuración del filtro de bucle para cada parámetro de imagen conjunto al que se hace referencia mediante al menos una imagen de los datos de vídeo, y un entropy_coding_sync_enabled_vps_flag que indica la configuración de procesamiento en paralelo para cada conjunto de parámetros de imagen al que se hace referencia mediante al menos una imagen de los datos de vídeo.
[0166] En otro ejemplo de la divulgación, el uno o más elementos de sintaxis incluyen un elemento de sintaxis parallel_tools_vps_idc, el elemento de sintaxis parallel_tools_vps_idc indica tanto la configuración de mosaico como la configuración de procesamiento en paralelo para cada capa de los datos de vídeo que se refieren al conjunto de parámetros de vídeo.
[0167] En otro ejemplo de la divulgación, el uno o más elementos de sintaxis incluyen un elemento de sintaxis parallel_tools_vps_idc, el elemento de sintaxis parallel_tools_vps_idc indica tanto la configuración de mosaico como la configuración de procesamiento en paralelo para cada conjunto de parámetros de imagen al que se hace referencia mediante al menos una imagen de los datos de vídeo.
[0168] En otro ejemplo de la divulgación, el uno o más elementos de sintaxis incluyen un tile_entropy_sync_coding_not_m¡xed_flag y un loopfilter_across_tile_boundary_not_mixed flag, en el que el tile_entropy_sync_coding_not_mixed_flag indica la configuración de mosaico y la configuración de procesamiento de paralelo para cada conjunto de parámetros de imagen al que se hace referencia en una imagen de los datos de vídeo, y en el que el loopfilter_across_tile_boundary_not_mixed_flag indica la configuración del filtro de bucle para cada conjunto de parámetros de imagen al que se refiere al menos una imagen de los datos de vídeo.
[0169] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, programa informático, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en o transmitir a través de un medio legible por ordenador como una o más instrucciones o código, y ejecutarse por 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 incluyendo cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) medios de almacenamiento tangibles legibles por ordenador que sean no transitorios o a (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder 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.
[0170] 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. Asimismo, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde una página web, un servidor u otra fuente remota 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 están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en cambio, se refieren a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, donde unos discos reproducen habitualmente los datos magnéticamente, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también se deben incluir dentro del alcance de los medios legibles por ordenador.
[0171] Las instrucciones se pueden ejecutar por uno o más procesadores, tales como uno o más procesadores digitales de señales (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 discretos o integrados equivalentes. Por consiguiente, 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 puede proporcionarse dentro de módulos de hardware y/o de software dedicados configurados para la codificación y la descodificación, o incorporarse en un códec combinado. Además, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
[0172] 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). En esta divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar mediante un grupo de unidades de hardware interoperativas, que incluya uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.
[0173] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (9)

REIVINDICACIONES
1. Un procedimiento de descodificación de datos de vídeo, comprendiendo el procedimiento:
descodificar, a partir de un conjunto de parámetros de vídeo, VPS, de un flujo de bits de múltiples capas, datos que indican una configuración de mosaico para una i-ésima capa del flujo de bits de múltiples capas, en el que la descodificación de los datos que indican la configuración de mosaico comprende la descodificación de un primer elemento de sintaxis, tiles_enabled_vps_flag[i], en el VPS para la i-ésima capa del flujo de bits de múltiples capas, en el que un valor de tiles_enabled_vps_flag[i] igual a 1 indica que el valor de un segundo elemento de sintaxis, tiles_enabled_flag, incluido en cada conjunto de parámetros de imagen, PPS, al que se hace referencia por al menos una imagen de la i-ésima capa es igual a 1, en el que un valor de tiles_enabled_flag igual a 1 indica que los mosaicos están habilitados para imágenes que se refieren a ese PPS; y
descodificar el flujo de bits de múltiples capas de acuerdo con los datos descodificados del VPS.
2. El procedimiento según la reivindicación 1, en el que descodificar el VPS comprende descodificar el VPS antes de una secuencia de imágenes del flujo de bits de múltiples capas, y en el que descodificar el flujo de bits de múltiples capas comprende descodificar la secuencia de imágenes de acuerdo con los datos descodificados del VPS.
3. Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:
codificar, en un conjunto de parámetros de vídeo, VPS, de un flujo de bits de múltiples capas, datos que indican una configuración de mosaico para una i-ésima capa del flujo de bits de múltiples capas, en el que codificar los datos que indican la configuración de mosaico comprende codificar un primer elemento de sintaxis, tiles_enabled_vps_flag[i], en el VPS para la i-ésima capa del flujo de bits de múltiples capas, en el que un valor de tiles_enabled_vps_flag[i] indica que el valor de un segundo elemento de sintaxis, tiles_enabled_flag, incluido en cada conjunto de parámetros de imagen, PPS, al que se hace referencia mediante al menos una imagen de la i-ésima capa, indica que los mosaicos están habilitados para imágenes que se refieren a ese PPS; y
codificar el flujo de bits de múltiples capas, incluida la codificación del VPS del flujo de bits de múltiples capas.
4. El procedimiento según la reivindicación 1 o 3, en el que descodificar o codificar los datos que indican la configuración de mosaico comprende además descodificar o codificar un elemento de sintaxis loop_filter_across_tiles_disabled_vps_flag que indica una configuración de filtro de bucle para cada conjunto de parámetros de imagen al que se hace referencia mediante al menos una imagen de la capa respectiva.
5. El procedimiento según la reivindicación 1 o la reivindicación 3, que comprende además asignar recursos de codificación de un codificador o descodificador de vídeo de acuerdo con los datos del VPS.
6. El procedimiento según la reivindicación 3, en el que codificar el VPS comprende codificar el VPS antes de codificar una secuencia de imágenes del flujo de bits de múltiples capas, y en el que codificar el flujo de bits de múltiples capas comprende codificar la secuencia de imágenes.
7. Un aparato que procesa datos de vídeo, comprendiendo el aparato:
medios para descodificar, a partir de un conjunto de parámetros de vídeo, VPS, de un flujo de bits de múltiples capas, datos que indican una configuración de mosaico para una i-ésima capa del flujo de bits de múltiples capas, en el que la descodificación de los datos que indican la configuración de mosaico comprende la descodificación de un primer elemento de sintaxis, tiles_enabled_vps_flag[i], en el VPS para la i-ésima capa del flujo de bits de múltiples capas, en el que un valor de tiles_enabled_vps_flag[i] igual a 1 indica que el valor de un segundo elemento de sintaxis, tiles_enabled_flag, incluido en cada conjunto de parámetros de imagen, PPS, al que se hace referencia mediante al menos una imagen de la i-ésima capa es igual a 1, en el que un valor de tiles_enabled habilitado igual a 1 indica que los mosaicos están habilitados para imágenes que se refieren a ese PPS; y
medios para descodificar el flujo de bits de múltiples capas de acuerdo con los datos del VPS.
8. Un aparato que procesa datos de vídeo, comprendiendo el aparato:
medios para codificar, en un conjunto de parámetros de vídeo, VPS, de un flujo de bits de múltiples capas, datos que indican una configuración de mosaico para una i-ésima capa del flujo de bits de múltiples capas, en el que codificar los datos que indican la configuración de mosaico comprende codificar un primer elemento de sintaxis, tiles_enabled_vps_flag[i], en el VPS para la i-ésima capa del flujo de bits de múltiples capas, en el que un valor de tiles_enabled_vps_flag[i] indica que el valor de un segundo elemento de sintaxis, tiles_enabled_flag, incluido en cada conjunto de parámetros de imagen, PPS, al que se hace referencia mediante al menos una imagen de la i-ésima capa, indica que los mosaicos están habilitados para imágenes que se refieren a ese PPS; y
medios para codificar el flujo de bits de múltiples capas que incluyen ahora confundido el VPS del flujo de bits de múltiples capas.
9. 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 realice el procedimiento de acuerdo con una cualquiera de las reivindicaciones 1 a 7.
ES14792942T 2013-10-14 2014-10-14 Indicación de procesamiento en paralelo en codificación de vídeo Active ES2834114T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361890763P 2013-10-14 2013-10-14
US14/512,199 US9936207B2 (en) 2013-10-14 2014-10-10 Indication of parallel processing in video coding
PCT/US2014/060445 WO2015057677A1 (en) 2013-10-14 2014-10-14 Indication of parallel processing in video coding

Publications (1)

Publication Number Publication Date
ES2834114T3 true ES2834114T3 (es) 2021-06-16

Family

ID=52809644

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14792942T Active ES2834114T3 (es) 2013-10-14 2014-10-14 Indicación de procesamiento en paralelo en codificación de vídeo

Country Status (10)

Country Link
US (1) US9936207B2 (es)
EP (1) EP3058729B1 (es)
JP (1) JP6461982B2 (es)
KR (1) KR101991554B1 (es)
CN (1) CN105637864B (es)
BR (1) BR112016008241B1 (es)
ES (1) ES2834114T3 (es)
MX (1) MX357564B (es)
TW (1) TWI659643B (es)
WO (1) WO2015057677A1 (es)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015037922A1 (ko) * 2013-09-10 2015-03-19 주식회사 케이티 스케일러블 비디오 신호 인코딩/디코딩 방법 및 장치
CN105659598A (zh) * 2013-10-22 2016-06-08 株式会社Kt 用于对多层视频信号进行编码/解码的方法和装置
MX364032B (es) * 2013-10-22 2019-04-11 Kt Corp Metodo y dispositivo para codificar/descodificar una señal de video de multicapa.
MX360338B (es) * 2013-10-29 2018-10-30 Kt Corp Metodo y dispositivo de codificacion/decodificacion de señal de video de multiples capas.
KR101834237B1 (ko) * 2014-02-12 2018-03-06 주식회사 칩스앤미디어 동영상 처리 방법 및 장치
US10277913B2 (en) * 2014-10-22 2019-04-30 Samsung Electronics Co., Ltd. Application processor for performing real time in-loop filtering, method thereof and system including the same
CN106210728B (zh) * 2015-04-10 2019-08-30 上海澜至半导体有限公司 用于视频解码的电路、方法和视频解码器
US10743023B2 (en) * 2015-12-04 2020-08-11 Sony Corporation Image processing apparatus and image processing method
WO2018011042A1 (en) 2016-07-14 2018-01-18 Koninklijke Kpn N.V. Video coding
KR102004247B1 (ko) * 2016-11-25 2019-07-29 경희대학교 산학협력단 영상 병렬 처리 방법 및 장치
WO2018207956A1 (ko) * 2017-05-10 2018-11-15 엘지전자(주) 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치
US10873754B2 (en) 2017-12-12 2020-12-22 Coherent Logix, Incorporated Low latency video codec and transmission with parallel processing
DK3847817T3 (da) * 2018-09-14 2024-06-17 Huawei Tech Co Ltd Slicing og tiling i videokodning
KR102572140B1 (ko) * 2018-11-30 2023-08-30 샤프 가부시키가이샤 코딩된 비디오의 픽처들에 대한 타일 구조들을 시그널링하기 위한 시스템들 및 방법들
US11653010B2 (en) * 2018-12-21 2023-05-16 Sharp Kabushiki Kaisha Moving image encoding device and moving image decoding device
GB2585232B (en) * 2019-07-04 2021-12-08 Apical Ltd Image data pre-processing for neural networks
CN113994670B (zh) * 2019-07-25 2023-08-11 寰发股份有限公司 具有虚拟边界的跨分量自适应环路滤波的视频编解码方法及装置
KR20220130149A (ko) 2020-02-14 2022-09-26 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 인 루프 필터링과 비디오 슬라이스들 간의 상호작용

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8345869B2 (en) * 2007-04-11 2013-01-01 The Directv Group, Inc. Method and apparatus for file sharing of missing content between a group of user devices in a peer-to-peer network
US9451252B2 (en) * 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US9648335B2 (en) 2013-07-12 2017-05-09 Qualcomm Incorporated Bitstream restrictions on picture partitions across layers

Also Published As

Publication number Publication date
KR20160070768A (ko) 2016-06-20
US20150103920A1 (en) 2015-04-16
TW201528788A (zh) 2015-07-16
TWI659643B (zh) 2019-05-11
WO2015057677A1 (en) 2015-04-23
EP3058729A1 (en) 2016-08-24
MX2016004644A (es) 2016-08-05
US9936207B2 (en) 2018-04-03
JP2016533696A (ja) 2016-10-27
MX357564B (es) 2018-07-13
KR101991554B1 (ko) 2019-06-20
BR112016008241B1 (pt) 2023-02-14
EP3058729B1 (en) 2020-08-26
BR112016008241A2 (pt) 2017-08-01
JP6461982B2 (ja) 2019-01-30
CN105637864B (zh) 2019-02-15
CN105637864A (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
ES2834114T3 (es) Indicación de procesamiento en paralelo en codificación de vídeo
US9979975B2 (en) Bitstream restrictions on picture partitions across layers
TWI781972B (zh) 具有用於視頻寫碼之樣本存取之線性模型預測模式
ES2780688T3 (es) Señalización para operaciones DPB basadas en un búfer de imágenes subdescodificadas (sub-DPB) en la codificación de vídeo
CN107409209B (zh) 用于线性模型预测模式的降取样处理
ES2909066T3 (es) Identificadores de codificación para conjuntos de mosaicos con movimiento restringido
CA2913618C (en) Cross-layer parallel processing and offset delay parameters for video coding
US9247249B2 (en) Motion vector prediction in video coding
ES2707890T3 (es) Codificación de vídeo de múltiples visualizaciones
US9560358B2 (en) Device and method for scalable coding of video information
ES2780686T3 (es) Tipo de dependencia entre vistas en MV-HEVC
ES2905124T3 (es) Dispositivo y método para procesar datos de video
US10491904B2 (en) Channel line buffer data packing scheme for video codecs