ES2856099T3 - Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo - Google Patents

Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo Download PDF

Info

Publication number
ES2856099T3
ES2856099T3 ES13774912T ES13774912T ES2856099T3 ES 2856099 T3 ES2856099 T3 ES 2856099T3 ES 13774912 T ES13774912 T ES 13774912T ES 13774912 T ES13774912 T ES 13774912T ES 2856099 T3 ES2856099 T3 ES 2856099T3
Authority
ES
Spain
Prior art keywords
layer
video
value
values
opidx
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
ES13774912T
Other languages
English (en)
Inventor
Ye-Kui Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2856099T3 publication Critical patent/ES2856099T3/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/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/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Un procedimiento de procesamiento de un flujo de bits de datos de vídeo que comprende unidades de capa de abstracción de red (NAL), incluyendo cada unidad NAL un valor de identificación (ID) de capa, comprendiendo además el flujo de bits de datos de vídeo un conjunto de parámetros de vídeo (VPS) que especifica una pluralidad de conjuntos de valores de ID de capa, en el que cada conjunto de valores de ID de capa identifica unidades NAL del flujo de bits, que pertenecen a un subflujo de bits descodificable de forma independiente del flujo de bits de datos de vídeo, comprendiendo el procedimiento: para cada conjunto de valores de ID de capa, recibir, en el VPS, un elemento de sintaxis que especifica un valor de ID de capa máximo para el conjunto respectivo de valores de ID de capa y una bandera para cada capa con un valor de ID de capa entre cero y el valor de ID de capa máximo y, en base a un valor de cada bandera, determinar si la capa respectiva está incluida en el conjunto de valores de ID de capa.

Description

DESCRIPCIÓN
Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo
[0001] Esta solicitud reivindica el beneficio de la solicitud de patente provisional de EE.UU. n.° 61/709.094, presentada el 2 de octubre de 2012.
CAMPO TÉCNICO
[0002] Esta divulgación se refiere, en general, al procesamiento de datos de vídeo y, más particularmente, al procesamiento de puntos de operación usados en datos de vídeo.
ANTECEDENTES
[0003] Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, incluidos televisiones digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, tabletas electrónicas, 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 codificación de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), la norma de Codificación de Vídeo de Alta Eficacia (HEVC), actualmente en desarrollo, y las ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de codificación de vídeo.
[0004] Las técnicas de codificación de vídeo incluyen la predicción espacial (intraimagen) y/o la predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. En la codificación de vídeo basada en bloques, un fragmento de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo, que también se pueden denominar bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia de bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar tramas y las imágenes de referencia se pueden denominar tramas de referencia.
[0005] 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 de acuerdo con 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 a un dominio de transformada, dando como resultado coeficientes de transformada residuales que, a continuación, se pueden cuantificar. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden explorar para producir un vector unidimensional de coeficientes de transformada, y se puede aplicar codificación por entropía para lograr aún más compresión.
BREVE EXPLICACIÓN
[0006] En general, esta divulgación describe técnicas para señalizar identificadores de capa para puntos de operación en la codificación de vídeo.
[0007] En un ejemplo, se describe un procedimiento para procesar un flujo de bits de datos de vídeo de acuerdo con la reivindicación 1.
[0008] En otro ejemplo, se describe un aparato para procesar un flujo de bits de datos de vídeo de acuerdo con la reivindicación 7.
[0009] En otro ejemplo, se describe un procedimiento para codificar un flujo de bits de datos de vídeo de acuerdo con la reivindicación 2.
[0010] En otro ejemplo, se describe un aparato para procesar un flujo de bits de datos de vídeo, de acuerdo con la reivindicación 8.
[0011] En otro ejemplo, un medio no transitorio legible por ordenador almacena instrucciones que, cuando se ejecutan por uno o más procesadores, hacen que el uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1 a 6.
[0012] Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y la siguiente descripción. Otros rasgos característicos, objetivos y ventajas resultarán evidentes a partir de la descripción y los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0013]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 4 es un diagrama de bloques que ilustra un conjunto de dispositivos de ejemplo que forman parte de una red.
La FIG. 5 es un diagrama de flujo que ilustra un procedimiento de ejemplo para codificar datos de vídeo de acuerdo con técnicas descritas en esta divulgación.
La FIG. 6 es un diagrama de flujo que ilustra un procedimiento de ejemplo para procesar datos de vídeo de acuerdo con técnicas descritas en esta divulgación.
DESCRIPCIÓN DETALLADA
[0014] Esta divulgación se refiere a la codificación de vídeo (es decir, la codificación y/o descodificación de datos de vídeo) y al procesamiento de vídeo y, más en particular, a la sintaxis de puntos de operación usada en el procesamiento de vídeo. En general, esta divulgación describe técnicas para señalizar identificadores de capa para puntos de operación en la codificación de vídeo. Los puntos de operación se refieren a subflujos de bits que se pueden extraer de un flujo de bits original que puede escalarse temporalmente y/o con múltiples capas o vistas. Los subflujos de bits pueden extraerse del flujo de bits en base a valores de identificadores de capa (es decir, ID de capa) e identificadores de subcapa temporales (es decir, ID temporales) que identifican el punto de operación del flujo de bits. En general, esta divulgación usa los términos "identificadores de capa" e "ID de capa" para referirse a identificadores de capas y/o vistas espaciales, mientras que los términos "identificadores de subcapa temporales" e "ID temporales" se refieren a identificadores de subcapas temporales.
[0015] Los puntos de operación pueden, por ejemplo, señalizarse en un conjunto de parámetros, tal como un conjunto de parámetros de vídeo (VPS), dentro del flujo de bits. Para cada uno de los puntos de operación, una estructura de sintaxis de puntos de operación, generada por un codificador de vídeo, especifica un conjunto de identificadores de capa usados para identificar unidades de capa de abstracción de red (NAL) en el flujo de bits que pertenecen a un subflujo de bits de un punto de operación dado. De esta manera, una entidad de red, tal como una entidad de red sensible a los medios (MANE), puede analizar sintácticamente las cabeceras de unidad NAL para extraer del flujo de bits original las unidades NAL que forman el subflujo de bits del punto de operación dado. Cada unidad NAL en el flujo de bits puede incluir un ID de capa y un ID temporal y, analizando sintácticamente el ID de capa y el ID temporal, el MANE puede identificar las unidades NAL para un punto de operación particular.
[0016] Las técnicas de esta divulgación pueden mejorar la eficacia de la señalización de información asociada a los puntos de operación mejorando la señalización de los ID de capa para los puntos de operación. De acuerdo con una técnica de ejemplo de esta divulgación que se explicará con mayor detalle a continuación, se puede señalizar un valor de identificación de capa (es decir, un ID de capa) para el ID de capa más grande, y la presencia de ID de capa adicionales se puede señalizar como una serie de banderas. Por ejemplo, supóngase que un flujo de bits incluye seis subflujos de varias resoluciones temporales y espaciales, y que cada subflujo tiene un ID de capa. El mayor valor de ID de capa se puede señalizar en el flujo de bits. Para los propósitos de este ejemplo, supóngase que el mayor valor de ID de capa es 9, lo que significa que, posiblemente, hay diez capas, con ID de capa de 0 a 9, que se pueden incluir en un punto de operación. Los valores restantes de ID de capa para el punto de operación se pueden señalizar usando nueve banderas, donde una primera bandera indica si el valor 0 de Id de capa está presente, la segunda bandera indica si el valor 1 de ID de capa está presente, y así sucesivamente, hasta una bandera final que indica si el valor 8 de ID de capa está presente. Por lo tanto, para señalizar los valores 2, 5 y 9 de ID de capa, el valor 9 se puede señalizar en primer lugar, seguido de las secuencias de banderas 001001000, donde el 1 para el tercer bit indica que el valor 2 de ID de capa está presente, y el 1 para el sexto bit indica que el valor 5 de ID de capa está presente. En esta divulgación también se analizarán otras técnicas para señalizar los ID de capa.
[0017] Esta divulgación usará, en general, el término "codificación de vídeo" para referirse a la codificación de vídeo o a la descodificación de vídeo. Esta divulgación también usa el término "procesamiento de vídeo" que, en general, incluye la codificación de vídeo pero también incluye otros tipos de procesamiento de vídeo, tal como análisis sintáctico de datos de vídeo, encaminamiento de datos de vídeo, empalme de flujos de bits de vídeo y otros procesos similares. En general, se puede considerar que un codificador de vídeo se refiere a un dispositivo que codifica y/o descodifica datos de vídeo, mientras que un procesador de vídeo o un dispositivo de procesamiento de vídeo se puede considerar como un dispositivo que codifica datos de vídeo pero también un dispositivo que realiza otros procesos en datos de vídeo.
[0018] 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 de señalización de ID de capa descritas en esta divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de vídeo codificados que un dispositivo de destino 14 va a descodificar en un momento posterior. Los datos de vídeo codificados pueden encaminarse desde el dispositivo de origen 12 al dispositivo de destino 14 a través del dispositivo de red 13, que puede ser parte de una red más grande de dispositivos de red. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de entre una amplia gama de dispositivos, incluidos ordenadores de escritorio, ordenadores plegables (por ejemplo, portátiles), tabletas electrónicas, descodificadores, equipos telefónicos de mano tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, 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.
[0019] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. En otros ejemplos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde una fuente de vídeo externa 18, tal como una cámara externa. Del mismo modo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[0020] El sistema 10 ilustrado de la FIG. 1 es simplemente un ejemplo. Las técnicas de esta divulgación pueden realizarse mediante cualquier dispositivo de codificación y/o procesamiento de vídeo digital. Aunque, en general, las técnicas son llevadas a cabo por un dispositivo de codificación de vídeo y un dispositivo de descodificación de vídeo, las técnicas también pueden ser llevadas a cabo por un codificador/descodificador de vídeo, denominado típicamente "CÓDEC". Además, las técnicas de esta divulgación también se pueden realizar mediante un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de dichos dispositivos de codificación, donde el dispositivo de origen 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera sustancialmente simétrica, de modo que cada uno de los dispositivos 12, 14 incluye componentes de codificación y descodificación de vídeo. Por consiguiente, el sistema 10 pueda admitir una transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo o videotelefonía.
[0021] En un ejemplo, el codificador de vídeo 20 del dispositivo de origen 12 puede generar un flujo de bits de datos de vídeo. Un VPS para los datos de vídeo puede definir múltiples puntos de operación correspondientes a subflujos de bits del flujo de bits. El codificador de vídeo 20 puede incluir una sintaxis de puntos de operación que identifica las capas y las subcapas temporales que se incluirán en puntos de operación particulares. La sintaxis de puntos de operación en el VPS puede incluir una indicación de un valor de ID de capa máximo para un punto de operación, así como una o más banderas. Las banderas indican si las capas con ID de capa menores que el ID de capa máximo están incluidas en el punto de operación. Por tanto, tras recibir el VPS con el ID de capa máximo y las banderas, el dispositivo de red 13 puede identificar las unidades NAL para el punto de operación y encaminar esas unidades NAL hacia el dispositivo de destino 14. Tras recibir las unidades NAL, el descodificador de vídeo 30 del dispositivo de destino 14 puede descodificar los datos de vídeo codificados. El descodificador de vídeo 30 puede, posiblemente, analizar sintácticamente la sintaxis de puntos de operación incluida en el VPS de la misma manera que el dispositivo de red 13. Por ejemplo, el descodificador de vídeo 30 puede analizar sintácticamente la sintaxis de puntos de operación para comprobar si se reciben todas las capas esperadas o para determinar un conjunto de parámetros de descodificador de referencia hipotético (HRD) que aplicar.
[0022] La fuente de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de suministro de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. Como otra alternativa, la fuente de vídeo 18 puede generar datos basados en gráficos de ordenador como fuente de vídeo, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se menciona anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o alámbricas.
[0023] En cada caso, el codificador de vídeo 20 puede codificar el vídeo capturado, precapturado o generado por ordenador. 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 pueden almacenarse también (o de forma alternativa) en un dispositivo de almacenamiento para un acceso posterior por parte del dispositivo de destino 14 u otros dispositivos, para su descodificación y/o reproducción.
[0024] Un enlace 16 puede incluir medios transitorios, tales como una radiodifusión inalámbrica o una transmisión en red alámbrica, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Blu-ray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, por medio de transmisión por red. De forma similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de acuñación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, se puede entender que el enlace 16 incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos. El enlace 16 puede comprender cualquier tipo de medio o dispositivo que pueda transferir 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ámbrico o alámbrico, 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.
[0025] La interfaz de entrada 28 del dispositivo de destino 14 recibe información desde el enlace 16, que puede ser un medio legible por ordenador. La información del enlace 16 puede incluir información de sintaxis definida por el codificador de vídeo 20, que también es usada por el descodificador de vídeo 30, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, GOP. El dispositivo de visualización 32 puede estar integrado en, o ser externo a, el dispositivo de destino 14. El dispositivo de visualización 32 muestra los datos de vídeo descodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0026] De forma alternativa, los datos codificados se pueden proporcionar desde la interfaz de salida 22 a un dispositivo de almacenamiento 34. De forma similar, una interfaz de entrada puede acceder a los datos codificados del dispositivo de almacenamiento 34. El dispositivo de almacenamiento 34 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 34 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 34 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. Servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectado a 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, incluida 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 cosas 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 34 puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0027] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo en apoyo de cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por 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 puede estar configurado 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.
[0028] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse como cualquiera de una variedad de circuitos de codificador o descodificador adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), circuitos de 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 adecuado no transitorio legible por ordenador 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, cualquiera de los cuales se puede integrar como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo. Un dispositivo que incluye el codificador de vídeo 20 y/o el descodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
[0029] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de codificación de vídeo, tal como la norma HEVC, actualmente en fase de desarrollo, y pueden ajustarse al modelo de prueba de HEVC (HM). Un borrador de la próxima norma HEVC, denominada "HEVC Working Draft 8" o "WD8", se describe en el documento JCTVC-J1003_d7, Bross et al., titulado "High efficiency video coding (HEVC) text specification draft 8", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e iSo /IEC JTC1/SC29/w G11, 10a reunión: Estocolmo, Suecia, julio de 2012. Otro borrador reciente de la norma HEVC, denominado "HEVC Working Draft 10" o "WD10", se describe en el documento JCTVC-L1003v34, de Bross et al., titulado "High efficiency video Coding (HEVC) text specification draft 10 (for FDIS & Last Call)", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12a reunión: Ginebra, Suiza, del 14 al 23 de enero de 2013.
[0030] De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas propietarias o industriales, tales como la norma ITU-T H.264, denominada de forma alternativa MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de esta divulgación no se limitan a ninguna norma de codificación particular. Otros ejemplos de normas de codificación de vídeo incluyen MPEG-2 e ITU-T H.263. En algunos aspectos, tanto el codificador de vídeo 20 como el descodificador de vídeo 30 puede estar integrados con un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos individuales. Cuando proceda, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexor ITU H.223 u otros protocolos tales como el protocolo de datagramas de usuario (UDP).
[0031] La norma ITU-T H.264/MPEG-4 (AVC) se formuló por el Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T conjuntamente con el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC, como el producto de una asociación colectiva conocida como el Equipo Mixto de vídeo (JVT). En algunos aspectos, las técnicas descritas en esta divulgación se pueden aplicar a dispositivos que se ajustan, en general, a la norma H.264. La norma H.264 está descrita en la recomendación H.264 de ITU-T, Codificación de Vídeo Avanzada para servicios audiovisuales genéricos, por el Grupo de Estudio de ITU-T, y con fecha de marzo de 2005, que se puede denominar en el presente documento norma H.264 o especificación H.264, o norma o especificación H.264/AVC. El Equipo Mixto de Vídeo (JVT) continúa trabajando en ampliaciones para H.264/MPEG-4 AVC.
[0032] El JCT-VC está trabajando en la elaboración de la norma HEVC. Los trabajos de normalización de HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba de HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo en relación con los dispositivos existentes de acuerdo con, por ejemplo, ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación por intrapredicción, el HM puede proporcionar hasta treinta y tres modos de codificación por intrapredicción.
[0033] En general, el modelo de trabajo del HM describe que una trama o imagen de vídeo se puede dividir en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU), que incluyen tanto muestras de luma como de croma. Los datos de sintaxis dentro de un flujo de bits pueden definir un tamaño para la LCU, que es la unidad de codificación más grande en cuanto al número de píxeles. Un fragmento incluye un número de bloques de árbol consecutivos en orden de codificación. Una trama o imagen de vídeo se puede dividir en uno o más fragmentos. Cada bloque de árbol se puede dividir en unidades de codificación (CU) de acuerdo con un árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, con un nodo raíz correspondiente al bloque de árbol. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, de los que cada uno corresponde a una de las sub-CU.
[0034] Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar datos de sintaxis para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir una bandera de división, que indica si la CU correspondiente al nodo está dividida en diversas sub-CU. Los elementos de sintaxis para una Cu se pueden definir de forma recursiva y pueden depender de si la CU está dividida en diversas sub-CU. Si una CU no se divide adicionalmente, se denomina CU hoja. En esta divulgación, cuatro sub-CU de una CU hoja también se denominarán CU hoja, incluso si no existe ninguna división explícita de la CU hoja original. Por ejemplo, si una CU de tamaño 16x16 no se divide adicionalmente, las cuatro sub-CU de 8x8 también se denominarán CU hoja aunque la CU de 16x16 nunca se dividiera.
[0035] Una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto en que una CU no tiene una distinción de tamaño. Por ejemplo, un bloque de árbol se puede dividir en cuatro nodos hijo (también denominados sub-CU) y cada nodo hijo puede ser, a su vez, un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no separado, denominado nodo hoja del árbol cuaternario, comprende un nodo de codificación, también denominado CU hoja. Los datos de sintaxis asociados a un flujo de bits codificado pueden definir el número máximo de veces en que se puede dividir un bloque de árbol, lo que se denomina profundidad máxima de CU, y también pueden definir un tamaño mínimo de los nodos de codificación. En consecuencia, un flujo de bits también puede definir la unidad de codificación más pequeña (SCU). Esta divulgación usa el término "bloque" para referirse a cualquiera de una CU, PU o TU, en el contexto de la HEVC, o a estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de las mismas en H.264/AVC).
[0036] 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. El tamaño de la CU corresponde al tamaño del nodo de codificación y debe tener conformación cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos de sintaxis asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir entre si la CU está codificada en modo directo o de salto, codificada en modo de intrapredicción o codificada en modo de interpredicción. 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 divisió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 (por ejemplo, rectangular).
[0037] La norma HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para CU diferentes. 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 este no sea siempre el caso. 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.
[0038] Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa un área espacial correspondiente a la totalidad, o a una parte, de la Cu correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. Por ejemplo, cuando la PU está codificada mediante intramodo se pueden incluir datos para la PU en un árbol cuaternario residual (RQT), que puede incluir datos que describen un modo de intrapredicción para una TU correspondiente a la PU. Como otro ejemplo, cuando la PU está codificada mediante intermodo, la PU puede incluir datos que definen uno o más vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, 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.
[0039] Una CU hoja que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Las unidades de transformada se pueden especificar usando un RQT (también denominado estructura de árbol cuaternario de TU), como se analiza anteriormente. Por ejemplo, una bandera de división puede indicar si una CU hoja está dividida en cuatro unidades de transformada. A continuación, cada unidad de transformada se puede dividir adicionalmente en sub-TU adicionales. Cuando una TU no se divide adicionalmente, se puede denominar TU hoja. En general, en la intracodificación, todas las TU hoja que pertenecen a una CU hoja comparten el mismo modo de intrapredicción. Es decir, el mismo modo de intrapredicción se aplica, en general, para calcular valores predichos para todas las TU de una CU hoja. En la intracodificación, un codificador de vídeo puede calcular un valor residual para cada TU hoja usando el modo de intrapredicción, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no se limita necesariamente al tamaño de una PU. Por tanto, las TU pueden ser más grandes o más pequeñas que una PU. En la intracodificación, una PU puede estar ubicada junto con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU hoja puede corresponder al tamaño de la CU hoja correspondiente.
[0040] Además, las TU de las CU hoja también se pueden asociar a estructuras de datos de árbol cuaternario respectivas, denominadas árboles cuaternarios residuales (RQT). Es decir, una CU hoja puede incluir un árbol cuaternario que indica cómo se divide la CU hoja en las TU. El nodo raíz de un árbol cuaternario de TU corresponde, en general, a una CU hoja, mientras que el nodo raíz de un árbol cuaternario de CU corresponde, en general, a un bloque de árbol (o LCU). Las TU del RQT que no están divididas se denominan TU hoja. En general, esta divulgación usa los términos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a menos que se indique de otro modo.
[0041] 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, u otras ubicaciones, que describen un número 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 una norma de codificación especificada.
[0042] En un ejemplo, el HM admite la predicción en diversos tamaños de PU. Suponiendo que el tamaño de una Cu particular es 2Nx2N, el HM admite la intrapredicción en tamaños de PU de 2Nx2N o NxN, y la interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también admite la división asimétrica para la interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la división asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida en un 25 % y un 75 %. La parte de la CU correspondiente a la división de un 25 % se indica mediante una "n" seguida de una indicación de "arriba", "abajo", "izquierda" o "derecha". Por tanto, por ejemplo, "2NxnU" se refiere a una CU de 2Nx2N que está dividida horizontalmente, con una PU de 2Nx0,5N encima y una PU de 2Nx1,5N debajo.
[0043] En esta divulgación, "NxN" y "N por N" se puede usar de manera intercambiable para hacer referencia a las dimensiones de píxel de un bloque de vídeo en lo que respecta a dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque de NxN tiene, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles de un bloque se pueden disponer en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0044] Después de la codificación de intrapredicción o interpredicción usando las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la Cu . Las PU pueden comprender datos de sintaxis que describen un procedimiento o modo de generación de datos de píxeles predictivos en el dominio espacial (también denominado dominio de píxel) y las TU pueden comprender coeficientes en el dominio de transformada, después de la aplicación de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada de enteros, una transformada de ondícula o una transformada conceptualmente similar, a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU, incluyendo los datos residuales para la CU, y, a continuación, transformar las TU para producir coeficientes de transformada para la CU.
[0045] Después de 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 proceso en el que coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando una compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
[0046] Después de la cuantificación, el codificador de vídeo puede explorar los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. La exploración se puede diseñar para colocar los coeficientes de mayor energía (y, por lo tanto, de menor frecuencia) en la parte delantera de la matriz y para colocar los coeficientes de menor energía (y, por lo tanto, de mayor frecuencia) en la parte trasera de la matriz. En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados para producir un vector serializado que se puede codificar 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 codificar por entropía el 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 sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) o con 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.
[0047] Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto, dentro de un modelo de contexto, a un símbolo que se va a transmitir. El contexto se puede referir, por ejemplo, a si los valores vecinos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo que se va a transmitir. Las palabras de código en la VLC se pueden construir de modo que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta manera, el uso de la VLC puede conseguir un ahorro en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
[0048] Además, el codificador de vídeo 20 puede enviar además datos de sintaxis, tales como datos de sintaxis basados en bloques, datos de sintaxis basados en tramas y datos de sintaxis basados en GOP, al descodificador de vídeo 30, por ejemplo, en una cabecera de trama, una cabecera de bloque, una cabecera de fragmento o una cabecera de GOP. Los datos de sintaxis de GOP pueden describir un número de tramas en el GOP respectivo, y los datos de sintaxis de trama pueden indicar un modo de codificación/predicción usado para codificar la trama correspondiente.
[0049] HEVC está diseñada para ser genérica en el sentido de que está destinada a dar servicio, por ejemplo, ser compatible con, una amplia gama de aplicaciones, velocidades de bits, resoluciones, calidades y servicios. Las aplicaciones potencialmente atendidas por HEVC incluyen, entre otras cosas, medios de almacenamiento digital, radiodifusiones televisivas y comunicaciones en tiempo real. En el transcurso de la creación de HEVC se han considerado diversos requisitos de aplicaciones típicas, se han desarrollado los elementos algorítmicos necesarios y estos se han integrado en una sola sintaxis. Por lo tanto, HEVC debería facilitar el intercambio de datos de vídeo entre diferentes aplicaciones. Sin embargo, teniendo en cuenta la practicidad de implementar la sintaxis completa de HEVC, también se estipula un número limitado de subconjuntos de la sintaxis mediante "perfiles" y "niveles".
[0050] Un "perfil" se define como un subconjunto de toda la sintaxis de flujo de bits especificada por la HEVC. Dentro de los límites impuestos por la sintaxis de un perfil dado, todavía es posible requerir una gran variación en el rendimiento de los codificadores y descodificadores, dependiendo de los valores tomados por los elementos de sintaxis en el flujo de bits, tales como el tamaño especificado de las imágenes descodificadas. En muchas aplicaciones, actualmente puede no ser ni práctico ni económico implementar un descodificador capaz de gestionar todos los usos hipotéticos de la sintaxis dentro de un perfil particular.
[0051] Para tratar con este problema, pueden especificarse "grados" y "niveles" dentro de cada perfil. Un nivel de un grado es un conjunto especificado de restricciones impuestas en valores de los elementos de sintaxis en el flujo de bits. Estas restricciones pueden ser simples límites en los valores. De forma alternativa, pueden adoptar la forma de restricciones en combinaciones aritméticas de valores (por ejemplo, el ancho de imagen multiplicado por la altura de imagen multiplicado por el número de imágenes descodificadas por segundo). Un nivel especificado para un grado inferior está más restringido que un nivel especificado para un grado superior. Se define el mismo conjunto de niveles para todos los perfiles, y la mayoría de los aspectos de la definición de cada nivel son comunes en los diferentes perfiles. Las implementaciones individuales pueden, dentro de las restricciones especificadas, admitir un nivel diferente para cada perfil admitido. En un contexto diferente, el nivel es el valor de un coeficiente de transformada antes de escalarse. Los perfiles y niveles se describen con más detalle en el Anexo A del borrador de trabajo 8 de la Codificación de Vídeo de Alta Eficacia (HEVC) (WD8).
[0052] El contenido de vídeo codificado conforme a HEVC WD8 usa una sintaxis común. Para lograr un subconjunto de la sintaxis completa, se incluyen banderas, parámetros y otros elementos de sintaxis en el flujo de bits, que señalizan la presencia o ausencia de elementos de sintaxis que se producen más adelante en el flujo de bits.
[0053] HEVC WD8 define una subcapa como una capa escalable temporal de un flujo de bits escalable temporal que consiste en unidades de capa de abstracción de red (NAL) de capa de codificación de vídeo (VCL) con un valor particular de la variable TemporalId y las unidades NAL no VCL asociadas. HEVC WD8 define además una representación de subcapa como un subconjunto del flujo de bits que consiste en unidades NAL de una subcapa particular y las subcapas inferiores.
[0054] La subcláusula 10.1 de HEVC 8 describe subconjuntos de flujos de bits y un proceso de extracción para generar subflujos de bits. La subcláusula 10.1 se expone a continuación.
10.1 Proceso de extracción de subflu jo de bits
[0055] Un requisito de conformidad con el flujo de bits es que cualquier subflujo de bits que esté incluido en la salida del proceso especificado en esta subcláusula, donde tIdTarget es igual a cualquier valor en el intervalo de 0 a 6, ambos inclusive, y targetDecLayerIdSet contiene el valor 0, se ajuste a esta recomendación | norma internacional.
[0056] NOTA: Un flujo de bits en conformidad contiene una o más unidades NAL de fragmento codificado, con nuh_reserved_zero_6bits igual a 0 y TemporalId igual a 0.
[0057] Las entradas a este proceso son una variable tIdTarget y una lista targetDecLayerIdSet. La salida de este proceso es un subflujo de bits.
[0058] El subflujo de bits se obtiene eliminando del flujo de bits todas las unidades NAL, donde TemporalId es mayor que tIdTarget o nuh_reserved_zero_6bits no está entre los valores en targetDecLayerIdSet.
[0059] En general, HEVC WD8 describe la extracción de subflujos de bits del flujo de bits en función de los valores de los identificadores de capa y los identificadores de subcapa temporales que identifican un punto de operación del flujo de bits.
[0060] Un punto de operación se identifica, en general, mediante un conjunto de valores nuh_reserved_zero_6bits, denotado como OpLayerIdSet, y un valor de TemporalId, denotado como OpTid, y el subconjunto de flujo de bits asociado obtenido como la salida del proceso de extracción del subflujo de bits como se especifica en la subcláusula 10.1 de HEVC WD8, donde OpTid y OpLayerIdSet son entradas que pueden descodificarse de forma independiente. Un modo de punto de operación simple se considera, en general, un modo de punto de operación en el que para cada punto de operación el OpLayerIdSet incluye y solo incluye un valor particular de nuh_reserved_zero_6bits y todos los demás valores de nuh_reserved_zero_6bits menores que el valor particular de nuh_reserved_zero_6bits.
[0061] La Tabla 1 siguiente muestra un ejemplo de sintaxis y semántica de carga útil de secuencia de octetos sin procesar (RBSP) de VPS.
TABLA 1
Figure imgf000010_0001
[0062] El elemento de sintaxis "vps_simple_op_mode_flag[i]" establecido igual a 1 especifica que el modo de punto de operación simple está en uso para la i-ésima estructura de sintaxis operation_point_layer_ids(). El elemento de sintaxis "vps_simple_op_mode_flag[i]" igual a 0 especifica que el modo de punto de operación simple no está en uso para la i-ésima estructura de sintaxis operation_point().
[0063] Dos instancias cualesquiera de la estructura de sintaxis hrd_parameters(i, vps_max_sub_layers_minus1) y hrd_parameters(j, vps_max_sub_layers_minus1), donde i no es igual a j, pueden no tener el mismo contenido.
[0064] La Tabla 2 siguiente muestra un ejemplo de sintaxis y semántica de perfil, grado y nivel.
TABLA 2
Figure imgf000011_0001
[0065] El elemento de sintaxis "sub_layer_profile_present_flag[i]" establecido igual a 1, cuando ProfilePresentFlag es igual a 1, especifica que la información de perfil está presente en la estructura de sintaxis profile_tier_level() para la representación de la subcapa con TemporalId igual a i. sub_layer_profile_present_flag [i] igual a 0 especifica que la información de perfil no está presente en la estructura de sintaxis profile_tier_level() para las representaciones de la subcapa con TemporalId igual a i. Cuando no está presente, se infiere que el valor de sub_layer_profile_present_flag[i] es igual a 0.
[0066] El elemento de sintaxis "sub_layer_level_present_flag[i]" establecido igual a 1 especifica que la información de nivel está presente en la estructura de sintaxis profile_tier_level() para la representación de la subcapa con TemporalId igual a i. sub_layer_level_present_flag[i] igual a 0 especifica que la información de nivel no está presente en la estructura de sintaxis profile_tier_level() para la representación de la subcapa con TemporalId igual a i.
[0067] Los elementos de sintaxis "sub_layer_profile_idc[i]" y "sub_layer_level_idc[i]" tienen la misma semántica que general_profile_idc y general_level_idc, respectivamente, pero se aplican a la representación de la subcapa con TemporalId igual a i.
[0068] La Tabla 3 siguiente muestra un ejemplo de sintaxis y semántica de punto de operación.
TABLA 3
Figure imgf000011_0002
Figure imgf000012_0001
[0069] La estructura de sintaxis operation_point(opIdx) especifica el conjunto de valores de nuh_reserved_zero_6bits incluidos en OpLayerldSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
[0070] El elemento de sintaxis "op_first_present_layer_id[opIdx]", cuando vps_simple_op_mode_flag[opIdx] se establece igual a 0, especifica el primer valor (es decir, el 0-ésimo) de nuh_reserved_zero_6bits incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. Cuando vps_simple_op_mode_flag[opIdx] es igual a 1, op_first_present_layer_id[opIdx] especifica el mayor valor de nuh_reserved_zero_6bits incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
[0071] El elemento de sintaxis "op_num_layer_id_values_minus1[opIdx]" más 1, cuando vps_simple_op_mode_flag[opIdx] es igual a 0, especifica el número de valores nuh_reserved_zero_6bits incluidos en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. op_num_layer_id_values_minus1[opIdx] es menor que o igual a 63.
[0072] El elemento de sintaxis "op_layer_id_delta_minus1[opIdx][i]" más 1, cuando vps_simple_op_mode_flag [opIdx] es igual a 0, especifica la diferencia entre el i-ésimo valor de nuh_reserved_zero_6bits y el (i-1 )-ésimo valor de nuh_reserved_zero_6bits incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() en el conjunto de parámetros de vídeo. El valor de op_layer_id_delta_minus1[opIdx][i] está en el intervalo de 0 a 63, ambos inclusive.
[0073] La variable NumOpLayerIdsMinus1[opIdx] se obtiene como sigue.
if(vps_simple_op_mode_flag[opIdx])
NumOpLayerIdsMinus1[opIdx] = op_first_present_layer_id[opIdx]
else
NumOpLayerIdsMinus1[opIdx] = op_num_layer_id_values_minus1[opIdx]
Se infiere que NumOpLayerIdsMinus1[0] es igual a 0.
[0074] Las variables OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive, se obtienen como sigue.
OpLayerId[opIdx][0] = vps_simple_op_mode_flag[opIdx] ? 0: op_first_present_layer_id[opIdx]
for(i = 1; i <= NumOpLayerIdsMinus1[opIdx]; i++) if(vps_simple_op_mode_flag[opIdx] )
OpLayerId[opIdx][i] = i
else
OpLayerId[opIdx][i] =
OpLayerId[opIdx][i-1] op_layer_id_delta_minus1[opIdx][i] 1
Se infiere que el valor de OpLayerId[0][0] es igual a 0.
[0075] Ningún valor de OpLayerId[opIdx][i] es igual a OpLayerId[opIdx][j] cuando i no es igual a j y tanto i como j están en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive.
[0076] Dos conjuntos cualesquiera OpLayerId[opIdx1] y OpLayerId[opIdx2], donde opIdx1 no es igual a opIdx2, no incluyen los mismos conjuntos de valores nuh_reserved_zero_6bits.
[0077] El OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() en el conjunto de parámetros de vídeo está configurado para incluir y solo incluir los valores de nuh_reserved_zero_6bits iguales a OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive.
[0078] Una sintaxis y semántica alternativas de puntos de operación se describen en la Tabla 4 y a continuación.
TABLA 4
Figure imgf000013_0001
[0079] La estructura de sintaxis operation_point(opIdx) especifica el conjunto de valores de nuh_reserved_zero_6bits incluidos en OpLayerldSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
[0080] El elemento de sintaxis "op_num_layer_id_values_minus1[opIdx]" más 1 especifica el número de valores nuh_reserved_zero_6bits incluidos en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. op_num_layer_id_values_minus1[opIdx] es menor que o igual a 63. Cuando no está presente, se infiere que el valor de op_num_layer_id_values_minus1[opIdx] es igual a 0.
[0081] En los flujos de bits que se ajustan a esta memoria descriptiva, op_num_layer_id_values_minus1[opIdx] es igual a 0. Aunque se requiere que el valor de op_num_layer_id_values_minus1[opIdx] sea igual a 0 en esta versión de esta memoria descriptiva, los descodificadores permiten que aparezcan otros valores en la sintaxis op_num_layer_id_values_minus1[opIdx].
[0082] El elemento de sintaxis "op_layer_id[opIdx][i]" especifica el i-ésimo valor de nuh_reserved_zero_6bits incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
[0083] La variable NumOpLayerIdsMmus1[opIdx] se obtiene como sigue.
if(vps_simple_op_mode_flag[opIdx])
NumOpLayerIdsMinus1[opIdx] = op_layer_id[opIdx][0]
else
NumOpLayerIdsMinus1[opIdx] = op_num_layer_id_values_minus1[opIdx]
Se infiere que NumOpLayerIdsMinus1[0] es igual a 0.
[0084] Las variables OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive, se obtienen como sigue.
for(i = 0; i <= NumOpLayerIdsMinus1[opIdx]; i++)
OpLayerId[opIdx][i] = vps_simple_op_mode_flag[opIdx] ? i :
op_layer_id[opIdx][i]
Se infiere que el valor de OpLayerId[0][0] es igual a 0.
[0085] Ningún valor de OpLayerId[opIdx][i] es igual a OpLayerId[opIdx][j] cuando i no es igual a j y tanto i como j están en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive.
[0086] Dos conjuntos cualesquiera OpLayerId[opIdx1] y OpLayerId[opIdx2], donde opIdx1 no es igual a opIdx2, no incluyen los mismos conjuntos de valores nuh_reserved_zero_6bits.
[0087] El OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() en el conjunto de parámetros de vídeo está configurado para incluir y solo incluir los valores de nuh_reserved_zero_6bits iguales a OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive.
[0088] JCTVC-K0204 (que está disponible en http://phenix.intevry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K0204-v1.zip) proporciona una señalización revisada de punto de operación como se describe mediante la sintaxis y semántica siguientes:
TABLA 5
Figure imgf000014_0002
[0089] El elemento de sintaxis "layer_present_in_op_flag[opIdx][i]" establecido igual a 1 especifica que la capa i está presente en el punto de operación opldx, y establecido igual a 0 especifica que la capa i no está presente en el punto de operación opldx.
[0090] Los procedimientos existentes para señalizar puntos de operación pueden tener algunos posibles inconvenientes. Por ejemplo, los procedimientos existentes para la señalización de puntos de operación pueden tener elementos de sintaxis codificados por entropía usando codificación ue(v) como se especifica en HEVC WD8, o no admiten la señalización de valores nuh_reserved_zero_6bits (es decir, ID de capa) mayores que max_num_layers_minus1, que se señaliza en el conjunto de parámetros de vídeo (VPS).
[0091] Esta divulgación propone diversas técnicas que pueden abordar potencialmente algunos de estos posibles inconvenientes. En una de estas técnicas, el valor más grande del valor de nuh_reserved_zero_6bits (es decir, el mayor valor de ID de capa) se señaliza primero, seguido de una lista de banderas, donde cada una especifica si la capa con un valor particular de ID de capa menor que el mayor valor de ID de capa está incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() en el conjunto de parámetros de vídeo. En otra técnica se señaliza una lista de M banderas, cada una de las cuales especifica si la capa con un valor de ID de capa posible particular está incluida en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. El valor de M es igual al número total de posibles ID de capa diferentes en cualquier flujo de bits. Por ejemplo, M puede ser igual a 2N, donde N es el número de bits usados para representar nuh_reserved_zero_6bits (es decir, el ID de capa). En otra técnica más, se señaliza el mayor valor del valor nuh_reserved_zero_6bits (es decir, el mayor valor de ID de capa). Si el modo de punto de operación simple no está en uso, entonces se señaliza una lista de banderas, donde cada una especifica si la capa con un valor particular de ID de capa menor que el mayor valor de ID de capa está incluida en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters () del conjunto de parámetros de vídeo.
[0092] A continuación se describirán algunos ejemplos detallados de las técnicas anteriores. Los ejemplos descritos a continuación concuerdan, en general, con HEVC WD8 y, por lo tanto, se puede suponer que aspectos que no se describen completamente a continuación son los mismos que en HEVC WD8.
[0093] La sintaxis y la semántica de punto de operación para un primer ejemplo se muestran en la Tabla 6 siguiente.
TABLA 6
Figure imgf000014_0001
[0094] La estructura de sintaxis operation_point(opIdx) especifica el conjunto de valores de nuh_reserved_zero_6bits incluidos en OpLayerldSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
[0095] El elemento de sintaxis "op_max_layer_id[opIdx]" especifica el mayor valor de nuh_reserved_zero_6bits incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. Aunque la Tabla 6 muestra el elemento de sintaxis "op_max_layer_id[opIdx]" siendo señalizado para cada punto de operación, también puede ser señalado en otra parte del flujo de bits codificado, tal como en un conjunto de parámetros de secuencia o VPS.
[0096] El elemento de sintaxis "op_layer_id_incuded_flag[opIdx][i]" establecido igual a 0 especifica que el valor de nuh_reserved_zero_6bits igual a i no está incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
op_layer_id_incuded_flag[opIdx][i] igual a 1 especifica que el valor de nuh_reserved_zero_6bits igual a i está incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. La suma de todos los op_layer_id_incuded_flag[opIdx][i], para i de 0 a op_max_layer_id[opIdx] - 1, ambos inclusive, es menor que o igual a max_num_layers_minus1.
[0097] La variable NumOpLayerIdsMinus1[opIdx] y las variables OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive, se obtienen como sigue.
for (i = 0, j = 0; i < op_max_layer_id[opIdx]; i++)
if (op_layer_id_incuded_flag[opIdx][i] )
OpLayerId[opIdx] [j++] = i
OpLayerId[opIdx][j] = op_max_layer_id[opIdx]
NumOpLayerIdsMinus1[opIdx] = j
[0098] Se infiere que NumOpLayerIdsMinus1[0] es igual a 0. Se infiere que el valor de OpLayerId[0][0] es igual a 0.
[0099] Dos conjuntos cualesquiera OpLayerId[opIdx1] y OpLayerId[opIdx2], donde opIdx1 no es igual a opIdx2, no incluyen el mismo conjunto de valores nuh_reserved_zero_6bits.
[0100] El OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() en el conjunto de parámetros de vídeo está configurado para incluir y solo incluir los valores de nuh_reserved_zero_6bits iguales a OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive.
[0101] Volviendo al ejemplo anterior, supóngase que un flujo de bits incluye seis subflujos de varias resoluciones temporales y espaciales, teniendo cada subflujo un ID de capa. Para el punto de operación identificado mediante opldx, el mayor valor de ID de capa se puede señalizar en el flujo de bits como el valor del elemento de sintaxis "op_max_layer_id[opIdx]". Para los propósitos de este ejemplo, supóngase que el mayor valor de ID de capa es 9, de modo que op_max_layer_id[opIdx] es igual a 9. Los valores restantes de ID de capa se pueden señalizar usando nueve banderas, donde una primera bandera indica si el valor 0 de ID de capa está presente, la segunda bandera indica si el valor 1 de ID de capa está presente, y así sucesivamente. Por lo tanto, para señalizar los valores 2, 5 y 10 de ID de capa, el valor 10 se puede señalizar en primer lugar, seguido de las secuencias de banderas 001001000, donde el 1 para el tercer bit indica que el valor 2 de ID de capa está presente, y el 1 para el sexto bit indica que el valor 5 de ID de capa está presente. Usando la sintaxis de la Tabla 6, las secuencias de banderas 001001000 se obtienen de la siguiente manera. Para i = 0, el valor de la bandera para op_layer_id_included_flag[opIdx][i] es 0. Para i = 1, el valor de la bandera para op_layer_id_included_flag[opIdx][i] es 0. Para i = 3, el valor de la bandera para op_layer_id_included_flag[opIdx][i] es 0. Para i = 4, el valor de la bandera para op_layer_id_included_flag[opIdx][i] es 0. Para i = 5, el valor de la bandera para op_layer_id_included_flag[opIdx][i] es 1. Para i = 6, el valor de la bandera para op_layer_id_included_flag[opIdx][i] es 0. Para i = 7, el valor de la bandera para op_layer_id_included_flag[opIdx][i] es 0. Para i = 8, el valor de la bandera para op_layer_id_included_flag[opIdx][i] es 0. Para i = 9, el valor de i no es menor que op_max_layer_id[opIdx], que también es igual a 9. Por lo tanto, un descodificador de vídeo puede determinar que se recibió la última bandera.
[0102] La sintaxis y semántica de punto de operación para una segunda técnica de ejemplo se muestran en la Tabla 7 siguiente.
TABLA 7
Figure imgf000015_0001
[0103] La estructura de sintaxis operation_point(opIdx) especifica el conjunto de valores de nuh_reserved_zero_6bits incluidos en OpLayerldSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
[0104] El elemento de sintaxis "op_layer_id_incuded_flag[opIdx][i]" establecido igual a 0 especifica que el valor de nuh_reserved_zero_6bits igual a i no está incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. op_layer_id_incuded_flag[opIdx][i] igual a 1 especifica que el valor de nuh_reserved_zero_6bits igual a i está incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. La suma de todos los op_layer_id_incuded_flag[opIdx][i], para i de 0 a 63, ambos inclusive, es menor que o igual a max_num_layers_minus1.
[0105] La variable NumOpLayerIdsMinus1[opIdx] y las variables OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive, se obtienen como sigue.
for(i = 0, j = 0; i < 64; i++)
if (op_layer_id_incuded_flag[opIdx][i] )
OpLayerId[opIdx] [j++] = i
NumOpLayerIdsMinus1[opIdx] = j
[0106] Se infiere que NumOpLayerIdsMinus1[0] es igual a 0. Se infiere que el valor de OpLayerId[0][0] es igual a 0.
[0107] Dos conjuntos cualesquiera OpLayerId[opIdx1] y OpLayerId[opIdx2], donde opIdx1 no es igual a opIdx2, no incluyen el mismo conjunto de valores nuh_reserved_zero_6bits.
[0108] El OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() en el conjunto de parámetros de vídeo está configurado para incluir y solo incluir los valores de nuh_reserved_zero_6bits iguales a OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive.
[0109] La sintaxis y la semántica de punto de operación para un tercer ejemplo se muestran en la Tabla 8 siguiente. En este ejemplo, la sintaxis y la semántica de VPS también cambian, como se muestra en la Tabla 8 y como se describe a continuación.
TABLA 8
Figure imgf000016_0001
[0110] El elemento de sintaxis "vps_s¡mple_op_iriode_flag[¡]" establecido igual a 1 especifica que el modo de punto de operación simple está en uso para la i-ésima estructura de sintaxis operation_point(). vps_simple_op_mode_flag[i] igual a 0 especifica que el modo de punto de operación simple no está en uso para la i-ésima estructura de sintaxis operation_point().
[0111] Dos instancias cualesquiera de la estructura de sintaxis hrd_parameters(i, vps_max_sub_layers_minus1) y hrd_parameters(j, vps_max_sub_layers_minus1), donde i no es igual a j, no tienen el mismo contenido.
TABLA 9
Figure imgf000017_0001
[0112] La estructura de sintaxis operation_point(opIdx) mostrada en la Tabla 9 especifica el conjunto de valores de nuh_reserved_zero_6bits incluidos en OpLayerldSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
[0113] El elemento de sintaxis "op_max_layer_id[opIdx]" especifica el mayor valor de nuh_reserved_zero_6bits incluido en el OpLayerldSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo.
[0114] El elemento de sintaxis "op_layer_id_incuded_flag[opIdx][i]" establecido igual a 0, cuando vps_simple_op_mode_flag[opIdx] es igual a 0, especifica que el valor de nuh_reserved_zero_6bits igual a i no está incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. op_layer_id_incuded_flag[opIdx][i] igual a 1, cuando vps_simple_op_mode_flag[opIdx] es igual a 0, especifica que el valor de nuh_reserved_zero_6bits igual a i está incluido en el OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() del conjunto de parámetros de vídeo. La suma de todos los op_layer_id_incuded_flag[opIdx][i], para i de 0 a op_max_layer_id[opIdx] - 1, ambos inclusive, es menor que o igual a max_num_layers_minus1.
[0115] La variable NumOpLayerIdsMinus1[opIdx] y las variables OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive, se obtienen como sigue.
if(vps_simple_op_mode_flag[opIdx]) {
for(i = 0; i <= op_max_layer_id[opIdx]; i++)
OpLayerId[opIdx][i] = i
NumOpLayerIdsMinus1[opIdx] = op_max_layer_id[opIdx]
} else {
for(i = 0, j = 0; i < op_max_layer_id[opIdx]; i++) if(op_layer_id_incuded_flag[opIdx][i])
OpLayerId[opIdx] [j++] = i
OpLayerId[opIdx][j] = max_layer_id[opIdx]
NumOpLayerIdsMinus1[opIdx] = j
}
[0116] Se infiere que NumOpLayerIdsMinus1[0] es igual a 0. Se infiere que el valor de OpLayerId[0][0] es igual a 0.
[0117] Dos conjuntos cualesquiera OpLayerId[opIdx1] y OpLayerId[opIdx2], donde opIdx1 no es igual a opIdx2, no incluyen el mismo conjunto de valores nuh_reserved_zero_6bits.
[0118] El OpLayerIdSet de los puntos de operación a los que se aplica la opIdx-ésima estructura de sintaxis hrd_parameters() en el conjunto de parámetros de vídeo está configurado para incluir y solo incluir los valores de nuh_reserved_zero_6bits iguales a OpLayerId[opIdx][i], para i en el intervalo de 0 a NumOpLayerIdsMinus1[opIdx], ambos inclusive.
[0119] La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar las técnicas descritas en esta divulgación. El codificador de vídeo 20 puede realizar la intracodificación y la 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. Intramodo (modo I) se puede referir a cualquiera de varios modos de codificación de base espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), se pueden referir a cualquiera de varios modos de codificación de base temporal.
[0120] Como se muestra en la FIG. 2, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama de vídeo que se va a codificar. En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una unidad de selección de modo 40, una memoria de tramas 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. A su vez, la unidad de selección de modo 40 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una unidad de procesamiento de intrapredicción 46 y una unidad de división 48. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también una unidad de cuantificación inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62. También puede incluirse un filtro de eliminación de pixelado para filtrar los límites de bloque a fin de eliminar distorsiones de pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de pixelado filtrará típicamente la salida del sumador 62. También se pueden usar filtros adicionales (en bucle o tras un bucle), además del filtro de eliminación de pixelado. Dichos filtros no se muestran por razones de brevedad, pero si se desea, pueden filtrar la salida del sumador 50 (como un filtro en bucle).
[0121] Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o un fragmento de vídeo que se va a codificar. La trama o el fragmento se pueden dividir en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan la codificación interpredictiva del bloque de vídeo recibido en relación con uno o más bloques en una o más tramas de referencia para proporcionar predicción temporal. De forma alternativa, la unidad de procesamiento de intrapredicción 46 puede llevar a cabo una codificación intrapredictiva del bloque de vídeo recibido, con respecto a uno o más bloques vecinos de la misma trama o fragmento que el bloque que va a codificarse para proporcionar predicción espacial. El codificador de vídeo 20 puede realizar múltiples pasadas de codificación, por ejemplo, para seleccionar un modo de codificación adecuado para cada bloque de datos de vídeo.
[0122] Además, la unidad de división 48 puede dividir bloques de datos de vídeo en subbloques, en base a la evaluación de esquemas de división previos en las pasadas de codificación previas. Por ejemplo, la unidad de división 48 puede dividir inicialmente una trama o un fragmento en varias LCU, y dividir cada una de las LCU en varias sub­ CU, basándose en un análisis de velocidad-distorsión (por ejemplo, una optimización de velocidad-distorsión). La unidad de selección de modo 40 puede producir además una estructura de datos de árbol cuaternario, indicativa de la división de una LCU en varias sub-CU. Las CU de nodos hoja del árbol cuaternario pueden incluir una o más PU y una o más TU.
[0123] La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, basándose en los resultados de errores, y proporciona el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una trama de referencia. La unidad de selección de modo 40 también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores de intramodo, información de división y otra información de sintaxis de este tipo a la unidad de codificación por entropía 56.
[0124] 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 con fines 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 el desplazamiento de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual, con respecto a un bloque predictivo dentro de una trama de referencia (u otra unidad codificada), con respecto al bloque actual que se está codificando dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se considera estrechamente coincidente con el bloque que se va a codificar, en lo que respecta a la diferencia de píxeles, lo cual se puede determinar mediante una suma de diferencias absolutas (SAD), una suma de 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 tramas de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionario de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxel completo y a las posiciones de píxel fraccionario, y proporcionar un vector de movimiento con una precisión de píxel fraccionario.
[0125] 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 puede seleccionarse a partir de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de tramas 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.
[0126] La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar buscar o generar el bloque predictivo en base al vector de movimiento determinado por la unidad de estimación de movimiento 42. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 se pueden integrar funcionalmente, en algunos ejemplos. 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 sumador 50 forma un bloque de vídeo residual restando 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 diferencias de píxel, como se analiza a continuación. En general, la unidad de estimación de movimiento 42 realiza la estimación de movimiento en relación con las componentes de luma, y la unidad de compensación de movimiento 44 usa vectores de movimiento calculados en base a las componentes de luma tanto para componentes de croma como para componentes de luma. La unidad de selección de modo 40 también puede generar elementos de sintaxis asociados a los bloques de vídeo y al 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.
[0127] La unidad de procesamiento de intrapredicción 46 puede intrapredecir un bloque actual, como una alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se describe anteriormente. En particular, la unidad de procesamiento de intrapredicción 46 puede determinar un modo de intrapredicción para su uso en la codificación de un bloque actual. En algunos ejemplos, la unidad de procesamiento de intrapredicción 46 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante diferentes pasadas de codificación, y la unidad de procesamiento de intrapredicción 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo apropiado de intrapredicción para usar a partir de los modos sometidos a prueba.
[0128] Por ejemplo, la unidad de procesamiento de intrapredicción 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción sometidos a prueba, y seleccionar el modo de intrapredicción que tenga las mejores características de velocidad-distorsión entre los modos sometidos a prueba. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o de error) entre un bloque codificado y un bloque original, no codificado, que se codificó para producir el bloque codificado, así como una velocidad de transferencia de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de procesamiento de intrapredicción 46 puede calcular relaciones a partir de las distorsiones y velocidades para los diversos bloques codificados para determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
[0129] Después de seleccionar un modo de intrapredicción para un bloque, la unidad de procesamiento de intrapredicción 46 puede proporcionar a la unidad de codificación por entropía 56 información indicativa del modo de intrapredicción seleccionado para el bloque. La unidad de codificación por entropía 56 puede codificar la información que indica el modo de intrapredicción seleccionado. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices de modo de intrapredicción y una pluralidad de tablas de índices de modo de intrapredicción 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 intrapredicción más probable, una tabla de índices de modo de intrapredicción y una tabla de índices de modo de intrapredicción modificada para su uso para cada uno de los contextos.
[0130] El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción de la unidad de selección de modo 40 al bloque de vídeo original que se está codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residuales. La unidad de procesamiento de transformada 52 puede realizar otras transformadas que son conceptualmente similares a la DCT. También se podrían usar transformadas de ondículas, transformadas de enteros, transformadas de subbanda u otros tipos de transformadas. En cualquier caso, la unidad de procesamiento de transformada 52 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual desde un dominio de valores de píxel a un dominio de transformada, tal como un dominio de frecuencia. La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54.
[0131] La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir además la velocidad de transferencia de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o 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 transformada cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
[0132] Después de la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede llevar a cabo la codificación de longitud variable 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 sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) u otra técnica de codificación por entropía. En el caso de la codificación por entropía basada en contexto, el contexto se puede basar en bloques vecinos. T ras la codificación por entropía por parte de la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir a otro dispositivo (por ejemplo, el descodificador de vídeo 30) o archivar para su posterior transmisión o recuperación.
[0133] La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican la cuantificación inversa y la transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, por ejemplo, para su posterior uso como bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria de tramas de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular 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 generar un bloque de vídeo reconstruido para su almacenamiento en la memoria de tramas de referencia 64. El bloque de vídeo reconstruido se puede usar por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para intercodificar un bloque en una trama de vídeo subsiguiente.
[0134] La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo 30 que puede implementar las técnicas descritas en esta divulgación. En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 70, una unidad de compensación de movimiento 72, una unidad de procesamiento de intrapredicción 74, una unidad de cuantificación inversa 76, una unidad de procesamiento de transformada inversa 78, una memoria de tramas de referencia 82 y un sumador 80. En algunos ejemplos, el descodificador de vídeo 30 puede realizar una pasada de descodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20, como se muestra en la FIG. 2.
[0135] Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un fragmento de vídeo codificado y elementos de sintaxis asociados desde el codificador de vídeo 20. El descodificador de vídeo 30 puede recibir el flujo de bits de vídeo codificado desde una entidad de red 29. La entidad de red 29 puede ser, por ejemplo, un servidor, un elemento de red sensible a los medios (MANE), un editor/empalmador de vídeo u otro dispositivo de este tipo configurado para implementar una o más de las técnicas descritas anteriormente. La entidad de red 29 puede incluir un medio externo configurado para realizar las técnicas de esta divulgación. Como se ha descrito anteriormente, algunas de las técnicas descritas en esta divulgación se pueden implementar mediante la entidad de red 29 antes de que la entidad de red 29 transmita el flujo de bits de vídeo codificado al descodificador de vídeo 30. En algunos sistemas de descodificación de vídeo, la entidad de red 29 y el descodificador de vídeo 30 pueden formar parte de dispositivos individuales, mientras que, en otros casos, el mismo dispositivo que comprende el descodificador de vídeo 30 puede realizar la funcionalidad descrita con respecto a la entidad de red 29.
[0136] En un ejemplo, la entidad de red 29 puede almacenar o recibir un flujo de bits original de datos de vídeo que es escalable y/o incluye múltiples capas o vistas. En el flujo de bits original, un conjunto de parámetros, tal como un VPS, puede incluir la sintaxis de puntos de operación analizada anteriormente. La entidad de red 29 puede usar la sintaxis de puntos de operación para identificar qué capas están presentes en el punto de operación. A partir del flujo de bits original, la entidad de red 29 puede elegir uno de los múltiples puntos de operación (es decir, subflujos de bits) basándose en la sintaxis de puntos de operación incluida en el VPS y basándose en lo que es deseable para o lo solicitado por el descodificador de vídeo 30. En lo que respecta al subflujo de bits correspondiente al punto de operación elegido, la entidad de red 29 puede reenviar al descodificador de vídeo 30 las unidades NAL VLC y las unidades NAL no VCL que comprenden ese flujo de bits y no reenviar las otras unidades NAL.
[0137] En lo que respecta a un punto de operación particular identificado en el VPS, la entidad de red 29 puede recibir una indicación de un valor de ID de capa máximo para un flujo de bits y recibir una serie de banderas para las capas con un valor de ID de capa menor que el valor de ID de capa máximo. Basándose en los valores de las banderas, la entidad de red 29 puede determinar qué capas están incluidas en el punto de operación. Por ejemplo, si el valor del ID de capa máximo es M, entonces la capa M está incluida en el punto de operación. Para la capa M-1, la entidad de red 29 recibe una bandera, donde un primer valor (por ejemplo, 1 o 0) de la bandera indica que la capa M-1 está incluida en el punto de operación y un segundo valor (por ejemplo, 0 o 1) de la bandera indica que la capa M-1 no está incluida en el punto de operación. Para la capa M-2, la entidad de red 29 recibe una segunda bandera, donde un primer valor (por ejemplo, 1 o 0) de la segunda bandera indica que la capa M-2 está incluida en el punto de operación y un segundo valor (por ejemplo, 0 o 1) de la segunda bandera indica que la capa M-2 no está incluida en el punto de funcionamiento. La entidad de red 29 también puede recibir banderas para todas las capas restantes hasta la capa 0. Por tanto, si el valor del ID de capa máximo es M, entonces la entidad de red 29 puede recibir banderas para todas las capas de 0 a M-1.
[0138] La unidad de descodificación por entropía 70 del descodificador de vídeo 30 descodifica por entropía el flujo de bits proporcionado por la entidad de red 29 para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intrapredicción y otros elementos de sintaxis tal como la sintaxis de puntos de operación descrita anteriormente. La unidad de descodificación por entropía 70 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de compensación de movimiento 72. El descodificador de vídeo 30 puede recibir los diferentes elementos de sintaxis en diferentes partes del flujo de bits codificado. Por ejemplo, algunos elementos de sintaxis pueden recibirse a nivel de VPS, nivel de SPS o nivel de APS, mientras que otros elementos de sintaxis se reciben a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo.
[0139] Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad de procesamiento de intrapredicción 74 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual, basándose en un modo de intrapredicción señalizado y datos de 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 72 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 70. Los bloques predictivos se pueden generar a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción por defecto, basándose en imágenes de referencia almacenadas en la memoria de tramas de referencia 82.
[0140] La unidad de compensación de movimiento 72 determina información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando sintácticamente los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se esté descodificando. Por ejemplo, la unidad de compensación de movimiento 72 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) usado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de interpredicción (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 interpredicción para cada bloque de vídeo intercodificado del fragmento y otra información para descodificar los bloques de vídeo del fragmento de vídeo actual.
[0141] La unidad de compensación de movimiento 72 también puede realizar interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento 72 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 valores interpolados para píxeles fraccionarios de bloques de referencia. En este caso, la unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
[0142] La unidad de cuantificación inversa 76 cuantifica de forma 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 70. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación QPy, calculado por el descodificador de vídeo 30 para cada bloque de vídeo en el fragmento de vídeo, para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debería aplicarse. La unidad de procesamiento de transformada inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de enteros inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para generar bloques residuales en el dominio de píxel.
[0143] Una vez que la unidad de compensación de movimiento 72 genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y en otros elementos de sintaxis, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales procedentes de la unidad de procesamiento de transformada inversa 78 a los bloques predictivos correspondientes generados por la unidad de compensación de movimiento 72. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de pixelado para filtrar los bloques descodificados para eliminar distorsiones de pixelado. También se pueden usar otros filtros de bucle (bien en el bucle de codificación o bien después del bucle de codificación) para suavizar las transiciones entre píxeles o mejorar de otro modo la calidad de vídeo. Los bloques de vídeo descodificados en una trama o imagen dada se almacenan a continuación en la memoria de tramas de referencia 82, que almacena imágenes de referencia usadas para una compensación de movimiento subsiguiente. La memoria de tramas de referencia 82 almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.
[0144] La FIG. 4 es un diagrama de bloques que ilustra un conjunto de ejemplo de dispositivos que forman parte de la red 100. En este ejemplo, la red 100 incluye dispositivos de encaminamiento 104A, 104b (dispositivos de encaminamiento 104) y un dispositivo de transcodificación 106. Los dispositivos de encaminamiento 104 y el dispositivo de transcodificación 106 pretenden representar un pequeño número de dispositivos que pueden formar parte de la red 100. Otros dispositivos de red, tales como conmutadores, concentradores, pasarelas, cortafuegos, puentes y otros dispositivos de ese tipo también pueden estar incluidos dentro de la red 100. Además, se pueden proporcionar dispositivos de red adicionales a lo largo de un trayecto de red entre un dispositivo servidor 102 y un dispositivo cliente 108. El dispositivo servidor 102 puede corresponder a un dispositivo de origen 12 (FIG. 1), mientras que el dispositivo cliente 108 puede corresponder a un dispositivo de destino 14 (FIG. 1), en algunos ejemplos.
[0145] En general, los dispositivos de encaminamiento 104 implementan uno o más protocolos de encaminamiento para intercambiar datos de red a través de la red 100. En algunos ejemplos, los dispositivos de encaminamiento 104 pueden estar configurados para realizar operaciones de apoderado (proxy) o de caché. Por lo tanto, en algunos ejemplos, los dispositivos de encaminamiento 104 se pueden denominar dispositivos de apoderado. En general, los dispositivos de encaminamiento 104 ejecutan protocolos de encaminamiento para descubrir rutas a través de la red 100. Al ejecutar dichos protocolos de encaminamiento, un dispositivo de encaminamiento 104B puede descubrir una ruta de red desde sí mismo hasta el dispositivo servidor 102 por medio del dispositivo de encaminamiento 104A.
[0146] Los dispositivos de encaminamiento 104 y el dispositivo de transcodificación 106 son ejemplos de dispositivos que pueden implementar técnicas descritas en esta divulgación. Por ejemplo, como parte del encaminamiento de datos de vídeo desde el dispositivo servidor 102 al dispositivo cliente 108, los dispositivos de encaminamiento 104 y/o el dispositivo de transcodificación 106 pueden recibir sintaxis de VPS que incluye sintaxis de puntos de operación. La sintaxis de puntos de operación puede, por ejemplo, incluir un valor de ID de capa máximo para un flujo de bits. Los dispositivos de encaminamiento 104 y el dispositivo de transcodificación 106 pueden recibir adicionalmente en la sintaxis de puntos de operación una o más banderas para las capas con ID de capa menores que el valor de ID de capa máximo. Basándose en el valor de ID de capa máximo y las banderas, los dispositivos de encaminamiento 104 y el dispositivo de transcodificación 106 pueden determinar las capas incluidas en el punto de operación y, por tanto, pueden identificar las unidades NAL que comprenden el subflujo de bits del punto de operación.
[0147] La FIG. 5 muestra un procedimiento de ejemplo de codificación de datos de vídeo de acuerdo con las técnicas de esta divulgación. Las técnicas de la FIG. 5 se describirán con referencia a un codificador de vídeo, tal como el codificador de vídeo 20. El codificador de vídeo 20 puede generar, en un flujo de bits de datos de vídeo codificados, una indicación de un valor de ID de capa máximo para un flujo de bits (152). El codificador de vídeo 20 también puede generar una bandera para una primera capa con un valor de ID de capa menor que el valor de ID de capa máximo (154). La indicación del ID de capa máximo y la bandera pueden, por ejemplo, ser parte de la sintaxis de puntos de operación incluida en un VPS.
[0148] La FIG. 6 muestra un procedimiento de ejemplo de procesamiento de datos de vídeo de acuerdo con las técnicas de esta divulgación. Las técnicas de la FIG. 6 se describirán con referencia a un dispositivo de procesamiento de vídeo, que puede corresponder a un descodificador de vídeo tal como el descodificador de vídeo 30 de la FIG. 1 y la FIG. 3 o que puede corresponder a un dispositivo de red o entidad de red tal como el dispositivo de red 13 de la FIG. 1, la entidad de red 29 de la FIG. 3, o los dispositivos de encaminamiento 104 o el dispositivo de transcodificación 106 de la FIG. 4. Un dispositivo de procesamiento de vídeo puede recibir, en un flujo de bits de datos de vídeo codificados, una indicación de un valor de ID de capa máximo para un flujo de bits (162). El dispositivo de procesamiento de vídeo también puede recibir una bandera para una primera capa con un valor de ID de capa menor que el valor de ID de capa máximo (164). Basándose en el valor de la bandera, el dispositivo de procesamiento de vídeo puede determinar si la primera capa está incluida en un punto de operación basándose en un valor de la bandera (166).
[0149] Se debe reconocer que, dependiendo del ejemplo, determinadas acciones o eventos de cualquiera de las técnicas descritas en el presente documento se pueden realizar en una secuencia distinta, se pueden añadir, fusionar o excluir por completo (por ejemplo, no todas las acciones o eventos descritos son necesarios para la puesta en práctica de las técnicas). Además, en determinados ejemplos, las acciones o eventos se pueden realizar simultáneamente, por ejemplo, a través de procesamientos de múltiples hilos, procesamientos por interrupciones o mediante múltiples procesadores, en lugar de secuencialmente.
[0150] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en, o transmitirse por, un medio legible por ordenador como una o más instrucciones o código, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador que correspondan a un medio tangible, tales como medios de almacenamiento de datos, o medios de comunicación que incluyan 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.
[0151] A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, r Om , EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. Además, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio 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 se incluyen en la definición de medio. Sin embargo, se deberá entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, están dirigidos a medios de almacenamiento no transitorios tangibles. 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 normalmente los datos magnéticamente, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior también se deben incluir dentro del alcance de los medios legibles por ordenador.
[0152] Las instrucciones se pueden ejecutar por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables por campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o 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.
[0153] Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos 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 por un grupo de unidades de hardware interoperativas, incluidos uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.

Claims (11)

REIVINDICACIONES
1. Un procedimiento de procesamiento de un flujo de bits de datos de vídeo que comprende unidades de capa de abstracción de red (NAL), incluyendo cada unidad NAL un valor de identificación (ID) de capa, comprendiendo además el flujo de bits de datos de vídeo un conjunto de parámetros de vídeo (VPS) que especifica una pluralidad de conjuntos de valores de ID de capa, en el que cada conjunto de valores de ID de capa identifica unidades NAL del flujo de bits, que pertenecen a un subflujo de bits descodificable de forma independiente del flujo de bits de datos de vídeo, comprendiendo el procedimiento:
para cada conjunto de valores de ID de capa, recibir, en el VPS, un elemento de sintaxis que especifica un valor de ID de capa máximo para el conjunto respectivo de valores de ID de capa y
una bandera para cada capa con un valor de ID de capa entre cero y el valor de ID de capa máximo y, en base a un valor de cada bandera, determinar si la capa respectiva está incluida en el conjunto de valores de ID de capa.
2. Un procedimiento de codificación de un flujo de bits de datos de vídeo que comprende unidades de capa de abstracción de red (NAL), incluyendo cada unidad NAL un valor de identificación (ID) de capa, para incluir un conjunto de parámetros de vídeo (VPS) que especifica una pluralidad de conjuntos de valores de identificación (ID) de capa, en el que cada conjunto de valores de ID de capa identifica unidades NAL del flujo de bits, que pertenecen a un subflujo de bits descodificable de forma independiente del flujo de bits de datos de vídeo, comprendiendo el procedimiento:
generar, para su inclusión en el VPS, un elemento de sintaxis que especifica, para cada conjunto de valores de ID de capa, un valor de ID de capa máximo para el conjunto respectivo de valores de ID de capa,
y una bandera para cada capa con un valor de ID de capa entre cero y el valor de ID de capa máximo, donde un valor para la bandera señaliza si la capa respectiva está incluida en el conjunto de valores de ID de capa.
3. El procedimiento de la reivindicación 1 o la reivindicación 2, donde cada conjunto de valores de ID de capa está definido por un punto de operación.
4. El procedimiento de la reivindicación 1 o la reivindicación 2, donde que un primer valor de la bandera indica que la capa respectiva está identificada en el conjunto de valores de ID de capa, y un segundo valor de la bandera indica que la capa respectiva no está identificada en el conjunto de valores de ID de capa.
5. El procedimiento de la reivindicación 1, donde el procedimiento se realiza mediante un elemento de red sensible a los medios (MANE), y donde el procedimiento comprende además: en respuesta a una capa que se identifica en un conjunto de valores de ID de capa, identificar una unidad de capa de abstracción de red (NAL) que comprende un elemento de sintaxis de ID de capa, donde un valor del elemento de sintaxis de ID de capa corresponde a la capa.
6. El procedimiento de la reivindicación 2, donde el procedimiento es realizado por un codificador de vídeo.
7. Un aparato de procesamiento de un flujo de bits de datos de vídeo que comprende unidades de capa de abstracción de red (NAL), incluyendo cada unidad NAL un valor de identificación (ID) de capa, comprendiendo además el flujo de bits de datos de vídeo un conjunto de parámetros de vídeo (VPS) que especifica una pluralidad de conjuntos de valores de ID de capa, donde cada conjunto de valores de ID de capa identifica unidades NAL del flujo de bits, que pertenecen a un subflujo de bits descodificable de forma independiente del flujo de bits de datos de vídeo, comprendiendo el aparato:
medios para cada conjunto de valores de ID de capa, para recibir, en el VPS, un elemento de sintaxis que especifica un valor de ID de capa máximo para el conjunto respectivo de valores de ID de capa;
medios para recibir en el VPS, para cada conjunto de valores de ID de capa, una bandera para cada capa con un valor de ID de capa entre cero y el valor de ID de capa máximo; y
medios para determinar, en base a un valor de cada bandera, si la capa respectiva está incluida en el conjunto de valores de ID de capa.
8. Un aparato de procesamiento de un flujo de bits de datos de vídeo que comprende unidades de capa de abstracción de red (NAL), incluyendo cada unidad NAL un valor de identificación (ID) de capa, comprendiendo los datos de vídeo un conjunto de parámetros de vídeo (VPS) que define una pluralidad de conjuntos de identificadores de capa, en el que cada conjunto de valores de ID de capa identifica unidades NAL del flujo de bits, que pertenecen a un subflujo de bits descodificable de forma independiente del flujo de bits de datos de vídeo, comprendiendo el aparato:
un codificador de vídeo configurado para:
generar, para su inclusión en el VPS, un elemento de sintaxis que especifica, para cada conjunto de valores de ID de capa, un valor de ID de capa máximo para el conjunto respectivo de valores de ID de capa; y generar, para cada conjunto de valores de ID de capa, una bandera para cada capa con un valor de ID de capa entre cero y el valor de ID de capa máximo, en el que un valor para la bandera señaliza si la capa respectiva está incluida en el conjunto de valores de ID de capa.
9. El aparato de la reivindicación 7 o la reivindicación 8, donde un primer valor de la bandera indica que la capa respectiva está identificada en el conjunto de valores de ID de capa, y un segundo valor de la bandera indica que la capa respectiva no está presente en el punto de operación.
10. El aparato de la reivindicación 7, donde el aparato comprende un elemento de red sensible a los medios (MANE), y donde el aparato comprende además medios para identificar una unidad de capa de abstracción de red (NAL) que comprende un elemento de sintaxis de ID de capa en respuesta a que la primera capa esté incluida en el punto de operación, donde un valor del elemento de sintaxis de ID de capa corresponde a la primera capa; y/o donde el aparato comprende al menos uno de:
un circuito integrado;
un microprocesador; y
un dispositivo de comunicación inalámbrica que incluye el descodificador de vídeo.
11. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando son ejecutadas por uno o más procesadores, hacen que los uno o más procesadores lleven a cabo el procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 6.
ES13774912T 2012-10-02 2013-10-01 Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo Active ES2856099T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261709094P 2012-10-02 2012-10-02
US14/042,416 US9781413B2 (en) 2012-10-02 2013-09-30 Signaling of layer identifiers for operation points
PCT/US2013/062890 WO2014055536A1 (en) 2012-10-02 2013-10-01 Improved signaling of layer identifiers for operation points of a video coder

Publications (1)

Publication Number Publication Date
ES2856099T3 true ES2856099T3 (es) 2021-09-27

Family

ID=50385190

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13774912T Active ES2856099T3 (es) 2012-10-02 2013-10-01 Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo

Country Status (20)

Country Link
US (1) US9781413B2 (es)
EP (1) EP2904789B1 (es)
JP (1) JP6345675B2 (es)
KR (1) KR101865453B1 (es)
CN (1) CN104685890B (es)
AR (1) AR094826A1 (es)
AU (1) AU2013327493B2 (es)
BR (1) BR112015007273B1 (es)
CA (1) CA2884881C (es)
DK (1) DK2904789T3 (es)
ES (1) ES2856099T3 (es)
HK (1) HK1209552A1 (es)
HU (1) HUE052661T2 (es)
IL (1) IL238026A (es)
MY (1) MY171655A (es)
PH (1) PH12015500613B1 (es)
RU (1) RU2656827C2 (es)
SG (2) SG10201702549TA (es)
TW (2) TWI610557B (es)
WO (1) WO2014055536A1 (es)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9992490B2 (en) 2012-09-26 2018-06-05 Sony Corporation Video parameter set (VPS) syntax re-ordering for easy access of extension parameters
US9781413B2 (en) * 2012-10-02 2017-10-03 Qualcomm Incorporated Signaling of layer identifiers for operation points
US10219006B2 (en) 2013-01-04 2019-02-26 Sony Corporation JCTVC-L0226: VPS and VPS_extension updates
US10419778B2 (en) * 2013-01-04 2019-09-17 Sony Corporation JCTVC-L0227: VPS_extension with updates of profile-tier-level syntax structure
US10284858B2 (en) * 2013-10-15 2019-05-07 Qualcomm Incorporated Support of multi-mode extraction for multi-layer video codecs
CN105101072A (zh) 2015-05-19 2015-11-25 小米科技有限责任公司 定位的方法和装置
US10516891B2 (en) * 2015-11-20 2019-12-24 Intel Corporation Method and system of reference frame caching for video coding
US11172232B2 (en) * 2019-09-06 2021-11-09 Sharp Kabushiki Kaisha Systems and methods for signaling level information in video coding
EP4032293A4 (en) 2019-10-07 2022-11-30 Huawei Technologies Co., Ltd. ERROR PREVENTION IN A SUB-BITSTREAM EXTRACTION

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993201B1 (en) * 1997-07-08 2006-01-31 At&T Corp. Generalized scalability for video coder based on video objects
TWI260591B (en) * 2002-10-14 2006-08-21 Samsung Electronics Co Ltd Information storage medium with structure for multi-angle data, and recording and reproducing apparatus therefor
CA2604203A1 (en) * 2005-04-13 2006-10-19 Nokia Corporation Coding, storage and signalling of scalability information
US20070230564A1 (en) * 2006-03-29 2007-10-04 Qualcomm Incorporated Video processing with scalability
EP2041955A2 (en) 2006-07-11 2009-04-01 Thomson Licensing Methods and apparatus for use in multi-view video coding
CN101523920B (zh) * 2006-10-16 2013-12-04 汤姆森许可贸易公司 在视频操作期间使用网络抽象层单元以信号方式指示即时解码刷新的方法
WO2008133455A1 (en) * 2007-04-25 2008-11-06 Lg Electronics Inc. A method and an apparatus for decoding/encoding a video signal
US20100250763A1 (en) 2009-03-31 2010-09-30 Nokia Corporation Method and Apparatus for Transmitting Information on Operation Points
US8411746B2 (en) 2009-06-12 2013-04-02 Qualcomm Incorporated Multiview video coding over MPEG-2 systems
CN101924944B (zh) 2009-06-15 2013-06-05 华为技术有限公司 可伸缩视频编码操作点选择方法、信息提供方法及设备
US8948241B2 (en) 2009-08-07 2015-02-03 Qualcomm Incorporated Signaling characteristics of an MVC operation point
US9716920B2 (en) 2010-08-05 2017-07-25 Qualcomm Incorporated Signaling attributes for network-streamed video data
CN103416003B (zh) * 2011-01-14 2015-05-27 维德约股份有限公司 改进的nal单元头部
WO2014044908A1 (en) * 2012-09-21 2014-03-27 Nokia Corporation Method and apparatus for video coding
US9781413B2 (en) * 2012-10-02 2017-10-03 Qualcomm Incorporated Signaling of layer identifiers for operation points

Also Published As

Publication number Publication date
JP2015531570A (ja) 2015-11-02
TW201707447A (zh) 2017-02-16
CN104685890A (zh) 2015-06-03
BR112015007273B1 (pt) 2023-03-14
HK1209552A1 (en) 2016-04-01
TWI566582B (zh) 2017-01-11
SG11201501641XA (en) 2015-04-29
KR20150065839A (ko) 2015-06-15
AU2013327493A1 (en) 2015-04-16
TWI610557B (zh) 2018-01-01
BR112015007273A2 (pt) 2017-07-04
IL238026A (en) 2017-12-31
SG10201702549TA (en) 2017-04-27
US9781413B2 (en) 2017-10-03
EP2904789A1 (en) 2015-08-12
HUE052661T2 (hu) 2021-05-28
RU2015116166A (ru) 2016-11-27
RU2656827C2 (ru) 2018-06-06
CA2884881A1 (en) 2014-04-10
PH12015500613A1 (en) 2015-05-11
CA2884881C (en) 2020-01-28
KR101865453B1 (ko) 2018-06-07
AU2013327493B2 (en) 2017-10-12
PH12015500613B1 (en) 2015-05-11
AR094826A1 (es) 2015-09-02
TW201429255A (zh) 2014-07-16
DK2904789T3 (da) 2021-02-15
WO2014055536A1 (en) 2014-04-10
EP2904789B1 (en) 2020-11-25
JP6345675B2 (ja) 2018-06-20
MY171655A (en) 2019-10-22
US20140092996A1 (en) 2014-04-03
CN104685890B (zh) 2019-03-12

Similar Documents

Publication Publication Date Title
ES2909066T3 (es) Identificadores de codificación para conjuntos de mosaicos con movimiento restringido
ES2611349T3 (es) Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo
ES2884723T3 (es) Señalización de regiones de interés y actualización de decodificación gradual en la codificación de video
ES2856099T3 (es) Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo
AU2013324245B2 (en) Error resilient decoding unit association
ES2777214T3 (es) Refresco gradual de descodificación con soporte de adaptabilidad temporal a escala en la codificación de vídeo
ES2701786T3 (es) Procesamiento de memoria intermedia de imágenes descodificadas para imágenes de punto de acceso aleatorio en secuencias de vídeo
ES2899642T3 (es) Procesamiento en paralelo de mosaicos y de frente de onda
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
ES2897708T3 (es) Modelado de contexto eficiente en memoria
ES2707892T3 (es) Operaciones de almacenamiento en memoria intermedia de vídeo para acceso aleatorio en la codificación de vídeo
CA2884422C (en) Signaling layer identifiers for operation points in video coding
ES2886344T3 (es) Predicción residual generalizada para codificación de vídeo escalable y codificación de vídeo 3D
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
ES2684546T3 (es) Codificación de vídeo con comportamientos de imagen de punto de acceso aleatorio mejorados