ES2765038T3 - Modelo de almacenamiento intermedio de bajo retardo en codificación de vídeo - Google Patents

Modelo de almacenamiento intermedio de bajo retardo en codificación de vídeo Download PDF

Info

Publication number
ES2765038T3
ES2765038T3 ES13818050T ES13818050T ES2765038T3 ES 2765038 T3 ES2765038 T3 ES 2765038T3 ES 13818050 T ES13818050 T ES 13818050T ES 13818050 T ES13818050 T ES 13818050T ES 2765038 T3 ES2765038 T3 ES 2765038T3
Authority
ES
Spain
Prior art keywords
dpb
image
video
picture
sub
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
ES13818050T
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 ES2765038T3 publication Critical patent/ES2765038T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field

Landscapes

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

Abstract

Un aparato configurado para descodificar datos de vídeo, comprendiendo el aparato: una memoria configurada para almacenar datos de vídeo; y un descodificador de vídeo en comunicación con la memoria, el descodificador de vídeo configurado para: recibir un primer retardo de salida de la memoria intermedia de imágenes descodificadas DPB y un segundo retardo de salida de la DPB en un mensaje SEI de temporización de imagen; recibir un indicador de memoria intermedia de imágenes codificadas, CPB, de subimagen; determinar si un ajuste de un descodificador de referencia hipotético, HRD, para un descodificador de vídeo indica una operación a nivel de imagen o una operación a nivel de subimagen basándose en el indicador de la CPB de subimagen; y basándose en una determinación de que el ajuste del HRD indica una operación a nivel de imagen, determinar, para la imagen descodificada, un primer tiempo de salida de la DPB multiplicando el primer retardo de salida de la DPB por un ciclo del reloj de imagen y agregando un valor resultante a un tiempo de eliminación de la CPB, y emitir imágenes desde una memoria intermedia de imágenes descodificadas basándose en el primer tiempo de salida de la DPB; y basándose en una determinación de que el ajuste del HRD indica una operación a nivel de subimagen, obtener un ciclo de reloj de subimagen basándose en el ciclo de reloj de imagen y un valor divisor de ciclo por el cual el ciclo de reloj de subimagen es igual al ciclo de reloj de imagen dividido por el valor divisor de ciclo; determinar, para la imagen descodificada, un segundo tiempo de salida de la DPB multiplicando el segundo retardo de salida de la DPB por un ciclo de reloj de subimagen y agregando un valor resultante a un tiempo de eliminación de la CPB y emitiendo imágenes desde una memoria intermedia de imágenes descodificadas basándose en el segundo tiempo de salida de la DPB.

Description

DESCRIPCIÓN
Modelo de almacenamiento intermedio de bajo retardo en codificación de vídeo
CAMPO TÉCNICO
[0001] La presente divulgación se refiere a la codificación de vídeo y, más particularmente, a técnicas para el almacenamiento intermedio de bajo retardo en un proceso de codificación de vídeo.
ANTECEDENTES
[0002] Las capacidades del vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión digital directa, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en 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 con más eficacia implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo llevan a cabo la predicción espacial (intraimagen) y/o la predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) puede dividirse en bloques de vídeo, que también pueden denominarse 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 de un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a unas muestras de referencia de bloques contiguos de la misma imagen, o predicción temporal con respecto a unas muestras de referencia de otras imágenes de referencia. Las imágenes pueden denominarse tramas y las imágenes de referencia pueden denominarse tramas de referencia.
[0004] La predicción espacial o temporal utiliza un bloque predictivo. Los datos residuales representan diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y de acuerdo con datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio del 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 formación bidimensional, pueden explorarse con el fin de generar un vector unidimensional de coeficientes de transformada, y puede aplicarse codificación de entropía para lograr aún más compresión.
[0005] El documento de "BROSS B y otros: "High Efficiency Video Coding (HEVC) text specification draft 9 (SoDIS)", divulga el manejo de la memoria intermedia de imágenes descodificadas (DPB) HEVC y el cálculo del tiempo de salida de la imagen, que depende de si se calcula la eliminación de la memoria intermedia de imágenes codificadas (CPB) a nivel de subimagen o a nivel de imagen.
[0006] El documento "US 2010/246662 A1", divulga un sistema de codificación de vídeo, que usa un modelo de memoria intermedia virtual que puede funcionar tanto a nivel de imagen como a nivel de fragmento. Se divulga que la señalización de los valores de slice_dpb_output_delay a nivel de fragmento permite que la memoria intermedia de visualización de imágenes descodificadas funcione a nivel de fragmento, de modo que se logra la visualización de datos descodificados con bajo retardo.
RESUMEN
[0007] En general, esta divulgación describe las técnicas para la codificación de vídeo y, más particularmente, técnicas para el almacenamiento intermedio de bajo retardo en un proceso de codificación de vídeo. En uno o más ejemplos, esta divulgación propone técnicas para señalizar retardos de salida de la memoria intermedia de imágenes descodificadas (DPB) para usar cuando un descodificador de vídeo está funcionando a un nivel de subimagen, para mejorar el retardo de la memoria intermedia de vídeo.
[0008] En un ejemplo de la divulgación, un procedimiento de descodificación de vídeo comprende recibir un primer retardo de salida de la memoria intermedia de imágenes descodificadas (DPB) y un segundo retardo de la salida de la DPB para una imagen descodificada, determinar, para la imagen descodificada, un primer tiempo de salida de la DPB usando el primer retardo de salida de la DPB en el caso de que un ajuste del descodificador de referencia hipotético (HRD) para un descodificador de vídeo indique una operación a nivel de imagen, y determinar, para la imagen descodificada, un segundo tiempo de salida de la DPB usando el segundo retardo de salida de la DPB en el caso que el ajuste de HRD para el descodificador de vídeo indique una operación a nivel de subimagen.
[0009] En otro ejemplo de la divulgación, un procedimiento de codificación de vídeo comprende determinar un primer tiempo de salida de la DPB usando un primer retardo de la salida de la DPB en el caso de que un ajuste de1HRD para un descodificador de vídeo indique una operación a nivel de imagen, determinar un segundo tiempo de salida de la DPB usando un segundo retardo de salida de la DPB en el caso de que el ajuste de1HRD para el descodificador de vídeo indique una operación a nivel de subimagen, y señalizar el primer retardo de salida de la memoria intermedia de imágenes descodificadas (DPB) y el segundo retardo de salida de la DPB.
[0010] En otro ejemplo de la divulgación, un aparato configurado para descodificar datos de vídeo comprende un descodificador de vídeo configurado para recibir un primer retardo de salida de la DPB y un segundo retardo de salida de la DPB para una imagen descodificada, determinar, para la imagen descodificada, un primer tiempo de salida de la DPB usando el primer retardo de salida de la DPB en el caso de que un ajuste de1HRD para un descodificador de vídeo indique una operación a nivel de imagen, y determinar, para la imagen descodificada, un segundo tiempo de salida de la DPB usando el segundo retardo de salida de la DPB en el caso de que el ajuste de1 HRD para el descodificador de vídeo indique una operación a nivel de subimagen.
[0011] En otro ejemplo de la divulgación, un aparato configurado para codificar datos de vídeo comprende un codificador de vídeo configurado para determinar un primer tiempo de salida de la DPB usando un primer retardo de salida de la DPB en el caso de que un ajuste del HRD para un descodificador de vídeo indique una operación a nivel de imagen, determinar un segundo tiempo de salida de la DPB usando un segundo retardo de salida de la DPB en el caso de que el ajuste del HRD para el descodificador de vídeo indique una operación a nivel de subimagen, y señalizar el primer retardo de salida de la DPB y el segundo retardo de salida de la DPB.
[0012] En otro ejemplo de la divulgación, un aparato configurado para descodificar datos de vídeo comprende medios para recibir un primer retardo de salida de la DPB y un segundo retardo de salida de la DPB para una imagen descodificada, medios para determinar, para la imagen descodificada, un primer tiempo de salida de la DPB usando el primer retardo de salida de la DPB en el caso de que un ajuste del HRD para un descodificador de vídeo indique una operación a nivel de imagen, y medios para determinar, para la imagen descodificada, un segundo tiempo de salida de la DPB usando el segundo retardo de salida de la DPB en el caso de que el ajuste de1 HRD para el descodificador de vídeo indique una operación a nivel de subimagen.
[0013] En otro ejemplo de la divulgación, un aparato configurado para codificar datos de vídeo comprende medios para determinar un primer tiempo de salida de la DPB usando un primer retardo de salida de la DPB en el caso de que un ajuste del HRD para un descodificador de vídeo indique una operación a nivel de imagen, medios para determinar un segundo tiempo de salida de la DPB usando un segundo retardo de salida de la DPB en el caso de que el ajuste del HRD para el descodificador de vídeo indique una operación a nivel de subimagen, medios para señalizar el primer retardo de salida de la DPB y el segundo retardo de salida de la DPB.
[0014] En otro ejemplo, esta divulgación divulga un medio de almacenamiento legible por ordenador que almacena instrucciones que, al ejecutarse, hacen que uno o más procesadores de un dispositivo configurado para descodificar los datos de vídeo reciban un primer retardo de salida de la DPB y un segundo retardo de salida de la DPB para una imagen descodificada, determinen, para la imagen descodificada, un primer tiempo de salida de la DPB utilizando el primer retardo de salida de la DPB en el caso de que un ajuste del HRD para un descodificador de vídeo indique una operación a nivel de imagen, y determinen, para la imagen descodificada, un segundo tiempo de salida de la DPB usando el segundo retardo de salida de la DPB en el caso de que el ajuste de1HRD para el descodificador de vídeo indique una operación a nivel de subimagen.
[0015] En otro ejemplo, esta divulgación divulga un medio de almacenamiento legible por ordenador que almacena instrucciones que, al ejecutarse, hacen que uno o más procesadores de un dispositivo configurado para codificar datos de vídeo determinen un primer tiempo de salida de la DPB usando un primer retardo de salida de la DPB en el caso de que un ajuste del HRD para un descodificador de vídeo indique una operación a nivel de imagen, determinen un segundo tiempo de salida de la DPB usando un segundo retardo de salida de la DPB en el caso de que el ajuste del HRD para el descodificador de vídeo indique una operación a nivel de subimagen, y señalicen el primer retardo de salida de la DPB y el segundo retardo de salida de la DPB.
[0016] Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la descripción siguiente. La invención se expone en las reivindicaciones adjuntas.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0017]
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 modelo de memoria intermedia para un descodificador de referencia hipotético (HRD).
La FIG. 3 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. 4 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. 5 es un diagrama de flujo que muestra un procedimiento de codificación a modo de ejemplo de acuerdo con las técnicas de la presente divulgación.
La FIG. 6 es un diagrama de flujo que muestra un procedimiento de descodificación de ejemplo de acuerdo con las técnicas de la presente divulgación.
DESCRIPCIÓN DETALLADA
[0018] Esta divulgación describe diversos procedimientos y técnicas para lograr un retardo de codec (codificador/descodificador) reducido de una forma interoperable, a través de un modelo de descodificador de referencia hipotético (HRD) genérico basado en subimágenes que incluye tanto operaciones de memoria intermedia de imágenes codificadas (CPB) basadas en subimágenes como operaciones de memoria intermedia de imágenes descodificadas (DPB) basadas en temporización de subimágenes.
[0019] Los enfoques actuales para minimizar el tiempo de retardo de la DPB y/o CPB presenta los siguientes inconvenientes. El tiempo de salida de una imagen descodificada es igual al tiempo de descodificación (es decir, el tiempo de eliminación de la CPB) de la última unidad de descodificación (es decir, la propia unidad de acceso para la operación de acceso a nivel de unidad) más el retardo de salida de la DPB señalizado. Por lo tanto, se utilizan, en general, dos enfoques para reducir el retardo. Uno es adelantar el tiempo de descodificación. El otro es reducir el valor del retardo de salida de la DPB señalizado (en relación con el tiempo de eliminación de la CPB). Sin embargo, las soluciones existentes para un modelo de memoria intermedia de retardo ultrabajo solo implican operaciones de la CPB basadas en subimágenes y solo aprovechan el primer enfoque para reducir el retardo.
[0020] En vista de estos inconvenientes, la presente divulgación propone técnicas para reducir más el retardo de descodificación a través de la señalización y el uso de valores reducidos del retardo de salida de la DPB señalizado en relación con el tiempo de eliminación de la CPB.
[0021] 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 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. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera entre una amplia gama de dispositivos, incluidos ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tableta, 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.
[0022] El dispositivo de destino 14 puede recibir los datos de vídeo codificados que se van a descodificar, por medio de un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de transferir los datos de vídeo codificados desde el dispositivo de origen 12 hasta el 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 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 cableado, 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 extensa 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 hasta el dispositivo de destino 14.
[0023] De forma alternativa, los datos codificados se pueden transmitir desde la interfaz de salida 22 a un dispositivo de almacenamiento 33. De forma similar, una interfaz de entrada puede acceder a los datos codificados del dispositivo de almacenamiento 33. El dispositivo de almacenamiento 33 puede incluir cualquiera de una variedad de medios de almacenamiento de datos de acceso distribuido o local, tales como una unidad de disco duro, discos Blu-ray, DVD, CD-ROM, una memoria flash, una 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 33 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 33 a través de transmisión en tiempo real o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, 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 por cable, etc.) o una combinación de ambas que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 33 puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas cosas.
[0024] Las técnicas de la presente 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 como apoyo a cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo, por ejemplo, a través 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 prestar soporte a una transmisión de vídeo unidireccional o bidireccional, a fin de prestar soporte a aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la difusión de vídeo y/o la videotelefonía.
[0025] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/desmodulador (módem) y/o un transmisor. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captación de vídeo, por ejemplo, una videocámara, un archivo de vídeo que contiene vídeo captado previamente, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el vídeo de origen, o una combinación de dichas fuentes. En un ejemplo, si la fuente de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, las técnicas descritas en 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 cableadas.
[0026] El vídeo capturado, precapturado o generado por ordenador se puede codificar mediante el codificador de vídeo 20. Los datos de vídeo codificados se pueden transmitir directamente al dispositivo de destino 14 por medio de la interfaz de salida 22 del dispositivo de origen 12. Los datos de vídeo codificados se pueden almacenar de forma adicional (o alternativa) en el dispositivo de almacenamiento 33 para un posterior acceso por el dispositivo de destino 14 u otros dispositivos, para su descodificación y/o reproducción.
[0027] 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 algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de vídeo codificados a través del enlace 16. Los datos de vídeo codificados transmitidos a través del enlace 16, o proporcionados en el dispositivo de almacenamiento 33, pueden incluir una diversidad de elementos sintácticos generados por el codificador de vídeo 20 para su uso por un descodificador de vídeo, tal como el descodificador de vídeo 30, en la descodificación de los datos de vídeo. Dichos elementos sintácticos se pueden incluir con los datos de vídeo codificados, transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos.
[0028] El dispositivo de visualización 32 se puede integrar con, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo descodificados ante un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0029] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de codificación de vídeo de alta eficacia (HEVC), actualmente en fase de desarrollo, y se pueden ajustar al modelo de prueba de la HEVC (HM). La HEVC está siendo desarrollada por el Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de la ISO/IEC. Un borrador de trabajo (WD) de HEVC, Bross y otros, "High Efficiency Video Coding (HEVC) text specification draft 9", y denominado WD9 de HEVC en adelante, está disponible desde el 5 de julio de 2013 en http://phenix.intevry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v13.zip.
[0030] De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas patentadas o industriales, tales como la norma ITU-T H.264, denominada de forma alternativa MPEG-4, Parte 10, codificación avanzada de vídeo (AVC) o ampliaciones de dichas normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de compresión de vídeo incluyen MPEG-2 e ITU-T H.263.
[0031] Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 se pueden integrar, cada uno, en un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para tratar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexor ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0032] El codificador de vídeo 20 y el descodificador de vídeo 30 se pueden implementar, cada uno, como cualquiera entre una variedad de circuitos codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o 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.
[0033] El equipo JCT-VC está trabajando en el desarrollo del estándar HEVC. Los esfuerzos de normalización de la HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo, denominado modelo de prueba de la HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a los dispositivos existentes, de acuerdo con, por ejemplo, la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificación mediante intrapredicción, e1HM puede proporcionar hasta treinta y tres modos de codificación mediante intrapredicción.
[0034] En general, el modelo de funcionamiento del HM describe que una trama o imagen de vídeo puede dividirse en una secuencia de bloques de árbol o unidades de codificación de máximo tamaño (LCU), que incluyen muestras tanto de luma como de croma. Un bloque de árbol tiene un propósito similar al de un macrobloque de la norma H.264. Un fragmento incluye un número de bloques de árbol consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada bloque de árbol puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuaternario. Por ejemplo, un bloque de árbol, tal como un nodo raíz del árbol cuaternario, puede dividirse en cuatro nodos hijo, y cada nodo hijo puede, a su vez, ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no dividido, tal como un nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces que puede dividirse un bloque de árbol, y también pueden definir un tamaño mínimo de los nodos de codificación.
[0035] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde, en general, a un tamaño del nodo de codificación y debe ser típicamente de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de 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 pueden dividirse para tener una forma no cuadrada. Los datos sintácticos 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 forma cuadrada o no cuadrada.
[0036] La norma HEVC permite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU se basa típicamente en el tamaño de las PU dentro de una CU dada definida para una LCU dividida, aunque puede que no sea siempre así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas usando una estructura de árbol cuaternario conocida como "árbol cuaternario residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencias de píxeles asociados a las TU pueden transformarse para generar coeficientes de transformada, que pueden cuantificarse.
[0037] En general, una PU incluye datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU se codifica en intramodo, la PU puede incluir datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU se codifica en intermodo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, lista 0, lista 1 o lista C) para el vector de movimiento.
[0038] En general, se usa una TU para los procesos de transformada y de cuantificación. Una CU dada que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Después de la predicción, el codificador 20 de vídeo puede calcular unos valores residuales a partir del bloque de vídeo identificado por el nodo de codificación de acuerdo con la PU. El nodo de codificación se actualiza luego para hacer referencia a los valores residuales, en lugar del bloque de vídeo original. Los valores residuales comprenden valores de diferencias de píxeles que pueden transformarse en coeficientes de transformada, cuantificarse y explorarse usando las transformadas y otra información de transformada especificada en las TU, para producir coeficientes de transformada en serie para la codificación por entropía. El nodo de codificación puede, una vez más, actualizarse para referirse a estos coeficientes de transformada en serie. Esta divulgación usa típicamente el término "bloque de vídeo" para referirse a un nodo de codificación de una CU. En algunos casos específicos, esta divulgación también puede usar el término "bloque de vídeo" para referirse a un bloque de árbol, es decir, una LCU o una CU, que incluye un nodo de codificación y unas PU y TU.
[0039] 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 sintácticos en una cabecera del GOP, una cabecera de una o más de las imágenes, o en otras ubicaciones, que describen una serie de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. El codificador de vídeo 20 actúa típicamente en bloques de vídeo dentro de fragmentos de vídeo individuales a fin de 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.
[0040] Como ejemplo, el HM presta soporte a la predicción en diversos tamaños de PU. Si se supone que el tamaño de una CU particular es 2Nx2N, el HM admite la intrapredicción en tamaños de PU de 2Nx2N o NxN, así como la interpredicción en tamaños de PU simétricas de 2Nx2N, 2NxN, Nx2N o NxN. E1 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 entre un 25 % y un 75 %. La parte de la CU correspondiente a la división del 25 % está indicada por una "n" seguida de una indicación de "arriba", "abajo", "izquierda" o "derecha". Así pues, por ejemplo, "2NxnU" se refiere a una CU de tamaño 2Nx2N que está dividida horizontalmente, con una PU de tamaño 2Nx0,5N encima y una PU de tamaño 2Nx1,5N debajo.
[0041] En esta divulgación, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque de tamaño NxN tiene, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles de un bloque se pueden disponer en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0042] T ras la codificación intrapredictiva o interpredictiva, usando las PU de una CU, el codificador 20 de vídeo puede calcular datos residuales a los que se apliquen las transformadas especificadas por las TU de la CU. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las CU. El codificador 20 de vídeo puede formar los datos residuales para la CU, y a continuación transformar los datos residuales para producir coeficientes de transformada.
[0043] Tras cualquier transformada para generar coeficientes de transformada, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformada. La cuantificación se refiere, en general, a un proceso en el que unos 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 a 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.
[0044] En algunos ejemplos, el codificador de vídeo 20 puede usar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados, para generar un vector en serie que pueda ser codificado por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar una exploración adaptativa. Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede realizar la codificación por entropía del vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la codificación por entropía de división de intervalos de probabilidad (PIPE) u otra metodología de codificación por entropía. El codificador de vídeo 20 también puede realizar la codificación por entropía de los elementos sintácticos asociados a los datos de vídeo codificados, para su uso por el descodificador de vídeo 30 en la descodificación de los datos de vídeo.
[0045] Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo contextual a un símbolo que se va a transmitir. El contexto se puede referir, por ejemplo, a si los valores vecinos del símbolo son distintos de cero o no. Para realizar la codificación CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo 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 forma, el uso de la VLC puede lograr 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.
[0046] Las aplicaciones de vídeo que pueden hacer uso del codificador de vídeo 20 y el descodificador de vídeo 30 pueden incluir la reproducción local, la reproducción continua, la radiodifusión/multidifusión y aplicaciones conversacionales. Las aplicaciones conversacionales incluyen videotelefonía y videoconferencia. Las aplicaciones conversacionales también se conocen como aplicaciones de bajo retardo, ya que dichas aplicaciones en tiempo real no son tolerantes a retardos significativos. Para una buena experiencia de usuario, las aplicaciones conversacionales requieren un retardo relativamente bajo de extremo a extremo de la totalidad de los sistemas, es decir, el retardo entre el momento en que se captura una trama de vídeo en un dispositivo de origen y el momento en que se muestra la trama de vídeo en un dispositivo de destino. Típicamente, un retardo de extremo a extremo aceptable para las aplicaciones conversacionales debe ser inferior a 400 ms. Un retardo de extremo a extremo de alrededor de 150 ms se considera muy bueno.
[0047] Cada etapa de procesamiento de una aplicación conversacional puede contribuir al retardo global de extremo a extremo. Retardos de ejemplo de las etapas de procesamiento incluyen retardo de captura, retardo de preprocesamiento, retardo de codificación, retardo de transmisión, retardo de almacenamiento en memoria intermedia de recepción (para antifluctuación), retardo de descodificación, retardo de la salida de imagen descodificada, retardo postprocesamiento y retardo de visualización. Típicamente, el retardo de códec (retardo de codificación, retardo de descodificación y retardo de salida de la imagen descodificada) debe reducirse al mínimo en las aplicaciones conversacionales. En particular, la estructura de codificación debe garantizar que el orden de descodificación de las imágenes y el orden de salida son idénticos, de tal forma que el retardo de salida de la imagen descodificada es igual o cercano a cero.
[0048] Las normas de codificación de vídeo típicamente incluyen una especificación de un modelo de almacenamiento en memoria intermedia de vídeo. En la AVC y en la HEVC, el modelo de almacenamiento en memoria intermedia se denomina descodificador hipotético de referencia (HRD), que incluye un modelo de almacenamiento en memoria intermedia de tanto la memoria intermedia de imágenes codificadas (CPB) como la memoria intermedia de imágenes descodificadas (DPB). Una CPB es una memoria intermedia de primero en entrar, primero en salir que contiene imágenes codificadas para descodificar. Una DPB es una memoria intermedia que contiene imágenes descodificadas para su uso en referencia (por ejemplo, interpredicciones), reordenamiento de salida, retardo de salida y visualización final. Los comportamientos de la CPB y de la DPB son especificados matemáticamente por e1HRD. E1HRD impone directamente restricciones sobre temporización, tamaños de almacenamiento en memoria intermedia y velocidades de bits diferentes, e impone restricciones indirectamente sobre características y estadísticas de los flujos de bits. Un conjunto completo de parámetros del HRD incluye cinco parámetros básicos: el retardo inicial de eliminación de la CPB, el tamaño de la CPB, la velocidad de transmisión de bits, el retardo inicial de salida de la DPB y el tamaño de la DPB.
[0049] En AVC y HEVC, la conformidad del flujo de bits y la conformidad del descodificador se especifican como partes de la especificación del HRD. Aunque el HRD se denomina como un descodificador, algunas técnicas especificadas por el HRD también son necesarias típicamente en el lado del codificador para garantizar la conformidad del flujo de bits, mientras que no es necesario típicamente en el lado del descodificador. Se especifican dos tipos de conformidad de flujo de bits o de HRD, concretamente, Tipo I y Tipo II. Además, se especifican dos tipos de conformidad de descodificador (es decir, la conformidad de descodificador de la temporización de salida y la conformidad de descodificador del orden de salida).
[0050] El flujo de bits Tipo I es un flujo de unidades de capa de abstracción de red (NAL) que contiene solo las unidades NAL de capa de codificación de vídeo (VCL) y las unidades NAL con nal_unit_type igual a FD_NUT (unidades NAL de datos de relleno) para todas las unidades de acceso en el flujo de bits. Un flujo de bits de Tipo II contiene, además de las unidades VCL NAL y las unidades NAL de datos de relleno para todas las unidades de acceso en el flujo de bits, al menos uno de los siguientes: unidades NAL no VCL adicionales distintas de las unidades NAL de datos de relleno; todos los elementos sintácticos leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes y trailing_zero_8bits que forman un flujo de bytes a partir del flujo de unidades NAL.
[0051] La FIG. 2 es un diagrama de bloques que ilustra un modelo de memoria intermedia para un descodificador de referencia hipotético (HRD). El HRD funciona de la forma siguiente. Los datos asociados con las unidades de descodificación que fluyen hacia la CPB 102 de acuerdo con un programa de llegada especificado son entregados por el planificador de flujo hipotético (HSS) 100. Los flujos entregados por e1HSS 100 pueden ser flujos de bits Tipo I o Tipo II, como se definió anteriormente. Los datos asociados a cada unidad de descodificación se eliminan y descodifican mediante el proceso de descodificación 104 (por ejemplo, en el descodificador de vídeo 30) en el momento de eliminación de la CPB de la unidad de descodificación. El proceso de descodificación 104 es realizado por el descodificador de vídeo 30. Cada imagen descodificada producida por el proceso de descodificación 104 se coloca en la DPB 106. Las imágenes descodificadas se pueden usar como imágenes de referencia durante el proceso de descodificación 104 (por ejemplo, durante la interpredicción). Se elimina una imagen descodificada de la DPB 106 cuando ya no es necesaria para la referencia de interpredicción y ya no es necesaria para la salida. En algunos ejemplos, las imágenes descodificadas en la DPB 106 pueden recortarse mediante la unidad de recorte de salida 108 antes de mostrarse. La unidad de recorte de salida 108 puede ser parte del descodificador de vídeo 30 o puede ser parte de un procesador externo (por ejemplo, un procesador de visualización) configurado para procesar aún más la salida de un descodificador de vídeo.
[0052] En los modelos del HRD de la AVC y la HEVC, la descodificación o la eliminación de la CPB está basada en unidades de acceso (AU), y se supone que la descodificación de imágenes es instantánea (por ejemplo, el proceso de descodificación 104 en la FIG. 2 se supone que es instantáneo). Una unidad de acceso es un conjunto de unidades de capa abstracta de red (NAL) y contiene una imagen codificada. En aplicaciones prácticas, si un descodificador en conformidad sigue estrictamente los tiempos de descodificación señalizados, por ejemplo, en los mensajes de información de mejora complementaria (SEI) de temporización de imágenes generados por el codificador de vídeo 20, para iniciar la descodificación de las AU, entonces el momento más temprano posible para emitir una imagen descodificada específica es igual al momento de descodificación de esa imagen específica (es decir, el momento en el que una imagen comienza a ser descodificada) más el tiempo necesario para descodificar esa imagen específica. El tiempo necesario para descodificar una imagen en aplicaciones prácticas no puede ser igual a cero.
[0053] El WD9 de HEVC incluye el soporte de operaciones de la CPB basadas en subimágenes para permitir un retardo de códec reducido, a veces denominado retardo ultrabajo. La CPB puede funcionar a nivel de AU (es decir, a nivel de imagen) o a nivel de subimagen (es decir, menos de una imagen completa), dependiendo de si el descodificador prefiere una operación de la CPB a nivel de subimagen (que puede ser especificado por un medio externo no especificado en la especificación de HEVC) y si los parámetros de la CPB de la subimagen están presentes (en el flujo de bits o mediante medios externos no especificados en la especificación de HEVC). Cuando ambas condiciones son verdaderas, la CPB funciona a nivel de subimagen (y en este caso cada unidad de descodificación se define como un subconjunto de una AU). Una unidad de descodificación (DU) es la unidad en la que opera el descodificador. De lo contrario, la CPB funciona a nivel de AU (y en este caso cada unidad de descodificación se define como una AU). Una DU es igual a una AU si el elemento de sintaxis SubPicCpbFlag es igual a 0. De lo contrario, una DU es un subconjunto de una UA.
[0054] La sintaxis de HEVC para los parámetros de la CPB a nivel de subimagen incluye lo siguiente:
- La siguiente sintaxis se encuentra en la parte de información de usabilidad de vídeo (VUI) del conjunto de parámetros de secuencia (SPS)
◦ Si los parámetros de la CPB a nivel de subimagen están presentes
◦ Un divisor de ciclos, para la obtención del reloj de subciclos
◦ Duración del retardo de eliminación de la CPB
◦ Si los valores de retardo de eliminación de la CPB de la unidad de descodificación se señalizan en mensajes SEI de temporización de imagen o mensajes SEI de información de la unidad de descodificación
◦ Longitud de los valores de tamaño de la CPB para operaciones de la CPB a nivel de subimagen
- La siguiente sintaxis está en los mensajes SEI del período de almacenamiento en memoria intermedia
◦ Un conjunto de retardo inicial de eliminación de la CPB y el desplazamiento de retardo para operaciones de la CPB de nivel de subimagen
- La siguiente sintaxis está en los mensajes SEI de temporización de imagen
◦ El número de unidades de descodificación en una unidad de acceso
◦ El número de unidades NAL en cada unidad de descodificación
◦ Los valores de retardo de eliminación de la CPB de la unidad de descodificación para las unidades de descodificación
- La siguiente sintaxis está en los mensajes SEI de temporización de imagen
◦ El índice de cada unidad de descodificación a la lista de unidades de descodificación en una unidad de acceso ◦ El valor de retardo de eliminación de la CPB de la unidad de descodificación para cada unidad de descodificación [0055] Los enfoques actuales para reducir al mínimo el tiempo de retardo de la CPB y/o la DPB presentan los siguientes inconvenientes. El tiempo de salida de una imagen descodificada es igual al tiempo de descodificación (es decir, el tiempo de eliminación de la CPB) de la última DU (es decir, la propia AU para operación a nivel de AU) más el retardo de salida de la DPB señalizado. Por lo tanto, se utilizan, en general, dos enfoques para reducir el retardo. Uno es adelantar el tiempo de descodificación. El otro es reducir el valor del retardo de salida de la DPB señalizado (en relación con el tiempo de eliminación de la CPB). Sin embargo, las soluciones existentes para un modelo de memoria intermedia de retardo ultrabajo solo implican operaciones de la CPB basadas en subimágenes y solo aprovechan el primer enfoque para reducir el retardo.
[0056] En vista de estos inconvenientes, la presente divulgación propone técnicas para reducir más el retardo de descodificación a través de la señalización y el uso de valores reducidos del retardo de salida de la DPB señalizado en relación con el tiempo de eliminación de la CPB.
[0057] Específicamente, en un ejemplo de la divulgación, un valor señalizado adicional del retardo de salida de la DPB en relación con el tiempo de eliminación de la CPB de cada AU es señalizado por un codificador, por ejemplo, en el mensaje SEI de temporización de imagen. Este retardo de salida de la DPB señalizado adicional se utiliza en la obtención del tiempo de salida de la DPB para operaciones del HRD basadas en subimágenes. En otro ejemplo, además del retardo de salida de la DPB señalizado adicionalmente, los tiempos de salida de la DPB se obtienen usando un reloj de subciclos en lugar del reloj de ciclos.
[0058] Algunos ejemplos detallados se proporcionan a continuación. Si no se menciona específicamente, los aspectos de los siguientes ejemplos pueden funcionar como se define en el WD9 de HEVC.
[0059] Una sintaxis y la semántica del mensaje SEI de temporización de imagen de ejemplo, de acuerdo con un ejemplo de esta divulgación son las siguientes. Los elementos de sintaxis alterados o introducidos por esta divulgación se muestran en negrita.
Figure imgf000010_0001
[0060] En este ejemplo de la divulgación, los elementos de sintaxis en negrita pueden operar como sigue. El elemento de sintaxis pic_dpb_output_du_delay se usa para calcular el tiempo de salida de la DPB de la imagen cuando el HRD funciona a nivel de subimagen (es decir, cuando SubPicCpbFlag es igual a 1). El elemento de sintaxis pic_dpb_output_du_delay especifica el número de subciclos de reloj a esperar después de la eliminación de la última unidad de descodificación en una unidad de acceso de la CPB antes de que la imagen descodificada se transmita desde la DPB.
[0061] En un ejemplo, la longitud del elemento de sintaxis pic_dpb_output_du_delay viene dada en bits por dpb_output_delay_length_minus1 1. En otro ejemplo, la longitud del elemento de sintaxis pic_dpb_output_du_delay se da en bits mediante el valor de otro elemento de sintaxis más 1, donde, por ejemplo, el elemento de sintaxis se denomina dpb_output_delay_length_du_minus1 y se señaliza en la parte VUI del conjunto de parámetros de secuencia.
[0062] El tiempo de salida obtenido de pic_dpb_output_du_delay de cualquier imagen que se transmite desde un descodificador en conformidad con la temporización de salida precederá al tiempo de salida obtenido de pic_dpb_output_du_delay de todas las imágenes en cualquier secuencia de vídeo codificada posterior en el orden de descodificación. En un ejemplo, el orden de salida de imagen establecido por los valores de este elemento de sintaxis será el mismo orden que se establece por los valores de PicOrderCntVal, como se especifica por el WD9 de HEVC. El elemento de sintaxis PicOrderCntVal indica el recuento de orden de imagen (POC) de la imagen actual. Un valor POC es una variable que está asociada con cada imagen que transmitirá la DPB que indica la posición de la imagen asociada en orden de salida en relación con las posiciones del orden de salida de las otras imágenes que se transmitirán de la DPB en la misma secuencia de vídeo codificada.
[0063] Para las imágenes que no se transmiten mediante el proceso de "desplazamiento" (es decir, el proceso mediante el cual las imágenes son eliminadas de la DPB) porque preceden, en orden de descodificación, a una imagen de actualización de descodificación instantánea (IDR) o imagen de acceso de enlace roto (BLA) con no_output_of_prior_pics_flag igual a 1 o que se deduce como igual a 1, los tiempos de salida obtenidos de pic_dpb_output_du_delay aumentarán con el valor en aumento de PicOrderCntVal con respecto a todas las imágenes dentro de la misma secuencia de vídeo codificada. El elemento de sintaxis no_output_of_prior_pics_flag especifica cómo se tratan las imágenes previamente descodificadas en la DPB después de la descodificación de una imagen IDR o BLA. Si no_output_of_prior_pics_flag es igual o se deduce que es 1, después de descodificar una imagen IDR o BLA, esas imágenes descodificadas previamente no se emitirán, sino que se vaciarán/eliminarán directamente de la memoria intermedia de imágenes descodificadas (DPB).
[0064] El proceso de "desplazamiento" se invoca en los siguientes casos.
- La imagen actual es una imagen IDR o BLA y no_output_of_prior_pics_flag no es igual a 1 y no se deduce que sea igual a 1.
- La imagen actual no es una imagen IDR ni una imagen BLA, y la cantidad de imágenes en la DPB que están marcadas como "necesarias para transmitir" es mayor que la cantidad máxima de imágenes permitidas antes de cualquier imagen en orden de descodificación (sps_max_num_reorder_pics [HighestTid]).
- La imagen actual no es una imagen IDR ni una imagen BLA, y el número de imágenes en la DPB es igual al tamaño máximo requerido de la DPB en la unidad de memorias intermedias de almacenamiento de imágenes (sps_max_dec_pic_buffering[HighestTid]).
[0065] El proceso de "desplazamiento" puede incluir las siguientes etapas ordenadas:
1. La imagen que está primero para la salida puede seleccionarse como la única que tiene el valor más pequeño de PicOrderCntVal de todas las imágenes en la DPB marcada como "necesaria para transmitir".
2. La imagen se recorta, usando la ventana de recorte de conformidad especificada en el conjunto de parámetros de secuencia activa para la imagen, la imagen recortada es transmitida, y la imagen se marca como "no necesaria para transmitir".
3. Si la memoria intermedia de almacenamiento de imágenes que incluía la imagen que se recortó y se transmitió contiene una imagen marcada como "no usada para referencia", la memoria intermedia de almacenamiento de imágenes se puede vaciar. Es decir, si se ha transmitido una imagen para su visualización y ya no es necesaria para la interpredicción, puede ser "desplazada", es decir, eliminada de la DPB.
[0066] Para dos imágenes cualesquiera en la secuencia de vídeo codificada, la diferencia entre los tiempos de salida de las dos imágenes obtenidas en operaciones del HRD a nivel de subimagen será idéntica a la misma diferencia obtenida en operaciones del HDR a nivel de AU (es decir, a nivel de imagen).
[0067] Un proceso de salida de imagen de ejemplo es el siguiente. Lo siguiente puede suceder instantáneamente en el tiempo de eliminación de la CPB de la unidad de acceso n, tr(n). Según si una imagen n tiene o no PicOutputFlag igual a 1 (es decir, se utiliza el HRD de subimagen), su tiempo de salida de la DPB to,dpb(n) se obtiene de la siguiente ecuación:
if( ISubPicCpbFlag ) // es decir, el HRD funciona a nivel de AU
t0,dpb( n ) = tr( n ) tc* pic_dpb_output_delay( n )
else // es decir, el HRD funciona a nivel de subimagen
t0.dpb( n ) = tr( n ) tc sub * P>c_dpb_output_du_delay( n )
donde pic_dpb_output_delay(n) y pic_dpb_output_du_delay(n) son los valores de pic_dpb_output_delay y pic_dpb_output_du_delay, respectivamente, especificados en el mensaje SEI de temporización de imagen asociado con la unidad de acceso n. La variable tc se obtiene de la siguiente manera y se denomina ciclo de reloj:
tc = num units in tiek time scale
La variable tc_sub se puede obtener como se indica a continuación y puede denominarse ciclo de reloj de subimagen:
tc sub = tc -b (tick_divisor_minus2 2)
[0068] De acuerdo con un ejemplo de esta divulgación, la salida de la imagen actual se especifica como sigue:
- Si PicOutputFlag es igual a 1 y to,dpb(n) = t r(n), la imagen actual se transmite.
- De otro modo, si PicOutputFlag es igual a 0, la imagen actual no se transmite, sino que se almacenará en la DPB como se especifica mediante el proceso de "desplazamiento" expuesto anteriormente.
- De otro modo (PicOutputFlag es igual a 1 y to,dpb(n) > tr(n)), la imagen actual se transmite más tarde y se almacenará en la DPB (como se especifica por el proceso de "desplazamiento") y se transmite en el tiempo to,dpb(n), a menos que se indique que no se transmite por la descodificación u obtención de no_output_of_prior_pics_flag igual a 1 en un tiempo que antecede a to,dpb(n). Cuando se transmite, la imagen se recortará, utilizando la ventana de recorte de conformidad especificada en el conjunto de parámetros de secuencia activa.
[0069] Cuando la imagen n es una imagen que se transmite y no es la última imagen del flujo de bits que se transmite, el valor de Ato.dpb(n) (es decir, el tiempo de salida de la DPB entre imágenes) se define como:
Figure imgf000012_0001
donde nn indica la imagen que sigue a la imagen n en orden de salida y tiene PicOutputFlag igual a 1.
[0070] La FIG. 3 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas descritas en esta divulgación. 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 adyacentes de una secuencia de vídeo. El intramodo (modo I) puede referirse a cualquiera de varios modos de compresión espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresión temporal.
[0071] En el ejemplo de la FIG. 3, el codificador de vídeo 20 incluye la unidad de procesamiento de predicción 41, una memoria de imágenes de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. La unidad de procesamiento de predicción 41 incluye la unidad de estimación de movimiento 42, la unidad de compensación de movimiento 44 y la unidad de procesamiento de intrapredicción 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también una unidad de cuantificación inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62. También se puede incluir un filtro de eliminación de bloques (no mostrado en la FIG. 3) para filtrar los límites de bloque, para eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará típicamente la salida del sumador 62. También se pueden usar filtros de bucle adicionales (en el bucle o tras el bucle), además del filtro de eliminación de bloques.
[0072] Como se muestra en la FIG. 3, el codificador de vídeo 20 recibe datos de vídeo, y la unidad de procesamiento de predicción 41 puede dividir los datos en bloques de vídeo. Esta división también puede incluir la división en fragmentos, mosaicos u otras unidades mayores, así como la división en bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de LCU y CU. El codificador de vídeo 20 ilustra, en general, los componentes que codifican bloques de vídeo dentro de un fragmento de vídeo que se va a codificar. El fragmento se puede dividir en múltiples bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados mosaicos). La unidad de procesamiento de predicción 41 puede seleccionar uno entre una pluralidad de posibles modos de codificación, tal como uno entre una pluralidad de modos de intracodificación, o uno entre una pluralidad de modos de intercodificación, para el bloque de vídeo actual basándose en resultados de error (por ejemplo, la velocidad de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 41 puede proporcionar el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia.
[0073] La unidad de procesamiento de intrapredicción 46, dentro de la unidad de procesamiento de predicción 41, puede realizar la codificación intrapredictiva del bloque de vídeo actual con respecto a uno o más bloques contiguos en la misma trama o fragmento que el bloque actual que va a codificarse, para proporcionar una compresión espacial. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 dentro de la unidad de procesamiento de predicción 41 realizan la codificación interpredictiva del bloque de vídeo actual con respecto a uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar compresión temporal.
[0074] La unidad de estimación del movimiento 42 se puede configurar para determinar el modo de interpredicción para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo en la secuencia como fragmentos P, fragmentos B o fragmentos GPB. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimación del 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 de una trama o imagen de vídeo actual en relación con un bloque predictivo de una imagen de referencia.
[0075] Un bloque predictivo es un bloque que se descubre que se corresponde estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, que puede determinarse mediante la suma de diferencias absolutas (SAD), la suma de las diferencias al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxel completo y las posiciones fraccionarias de píxel, y proporcionar un vector de movimiento con una precisión de píxel fraccionaria.
[0076] 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 ser seleccionada a partir de una primera lista (lista 0) de imágenes de referencia o de una segunda lista (lista 1) de imágenes de referencia, cada una de las cuales identifica una o más imágenes de referencia almacenadas en una memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
[0077] La compensación del movimiento, realizada por la unidad de compensación del movimiento 44, puede implicar obtener o generar el bloque predictivo en base al vector de movimiento determinado mediante estimación de movimiento, posiblemente realizando interpolaciones hasta precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luminancia como de crominancia. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de compensación de movimiento 44 también puede generar elementos sintácticos 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.
[0078] La unidad de procesamiento de intrapredicción 46 puede intrapredecir un bloque actual, de forma alternativa a la interpredicción llevada a cabo por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de procesamiento de intrapredicción 46 puede determinar una modalidad de intrapredicción a usar para codificar 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 pases 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 adecuado de intrapredicción para su uso a partir de los modos probados.
[0079] 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 las diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tenga las mejores características de velocidad-distorsión entre los modos probados. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que fue codificado para generar el bloque codificado, así como una velocidad de transferencia de bits (es decir, un número de bits) usada para generar el bloque codificado. La unidad de procesamiento de intrapredicción 46 puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modalidad de intrapredicción presenta el mejor valor de velocidaddistorsión para el bloque.
[0080] En cualquier caso, tras seleccionar un modo de intrapredicción para un bloque, la unidad de procesamiento de intrapredicción 46 puede proporcionar información que indica el modo de intrapredicción seleccionado para el bloque, a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indica el modo de intrapredicción seleccionado de acuerdo con las técnicas de esta divulgación. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices del modo de intrapredicción y una pluralidad de tablas de índices del 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 del modo de intrapredicción y una tabla de índices del modo de intrapredicción modificada, a usar para cada uno de los contextos.
[0081] Después de que la unidad de procesamiento de predicción 41 genera el bloque predictivo para el bloque de vídeo actual, por medio de interpredicción o bien intrapredicción, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo al bloque de vídeo actual. Los datos de vídeo residuales del bloque residual pueden estar incluidos en una o más TU y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de vídeo residuales en coeficientes de transformada residuales usando una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformada 52 puede convertir los datos de vídeo residuales de un dominio de píxel a un dominio de transformada, tal como un dominio de frecuencia.
[0082] La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir más la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad 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.
[0083] Tras la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar una codificación de longitud variable adaptativa al contexto (CAVLC), una codificación aritmética binaria adaptativa al contexto (CABAC), una codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), una codificación por entropía por división de intervalos de probabilidad (PIPE) u otra metodología o técnicas de codificación de entropía. Tras la codificación por entropía mediante la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir al descodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación mediante el descodificador de vídeo 30. La unidad de codificación por entropía 56 también puede realizar una codificación por entropía de los vectores de movimiento y los otros elementos sintácticos para el fragmento de vídeo actual que se está codificando.
[0084] La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantificación inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de los píxeles, para su posterior uso como bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia de una de las listas de imágenes de referencia. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores fraccionarios de píxeles, 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 producido por la unidad de compensación de movimiento 44 para producir un bloque de referencia para su almacenamiento en la memoria de imágenes de referencia 64 (a menudo denominada memoria intermedia de imágenes descodificadas (DPB)). La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden usar el bloque de referencia como un bloque de referencia para realizar una interpredicción de un bloque en una trama o imagen de vídeo subsiguiente.
[0085] El codificador de vídeo 20 puede configurarse para implementar las técnicas de esta divulgación. En un ejemplo, el codificador de vídeo 20 puede configurarse para determinar un primer tiempo de salida de la DPB usando un primer retardo de salida de la DPB en el caso de que un ajuste del HRD para un descodificador de vídeo indique una operación a nivel de imagen, determinar un segundo tiempo de salida de la DPB usando un segundo retardo de salida de la DPB en el caso de que el ajuste del HRD para el descodificador de vídeo indique una operación a nivel de subimagen, señalizar el primer retardo de salida de la DPB y el segundo retardo de salida de la DPB en un flujo de bits de vídeo codificado. Otros ejemplos del funcionamiento del codificador de vídeo 20 de acuerdo con las técnicas de esta divulgación se analizarán a continuación con respecto a la FIG. 5.
[0086] La FIG. 4 es un diagrama de bloques que ilustra un descodificador de vídeo 30 de ejemplo que puede implementar las técnicas descritas en esta divulgación. En el ejemplo de la FIG. 4, el descodificador de vídeo 30 incluye la memoria intermedia de imágenes codificadas (CPB) 78, la unidad de descodificación por entropía 80, la unidad de procesamiento de predicción 81, la unidad de cuantificación inversa 86, la unidad de procesamiento de transformada inversa 88, el sumador 90 y la memoria intermedia de imágenes descodificadas (DPB) 92. La unidad de procesamiento de predicción 81 incluye la unidad de compensación de movimiento 82 y la unidad de procesamiento de intrapredicción 84. En algunos ejemplos, el descodificador de vídeo 30 realiza una pasada de descodificación que, en general, es recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 de la FIG. 3.
[0087] La CPB 78 almacena imágenes codificadas del flujo de bits de imágenes codificadas. En un ejemplo, la CPB 78 es una memoria intermedia del tipo ‘primera en entrar, primera en salir’ que contiene unidades de acceso (AU) en orden de descodificación. Una AU es un conjunto de unidades de capa de abstracción de red (NAL), que están asociadas entre sí de acuerdo con una regla de clasificación especificada, son consecutivas en el orden de descodificación y contienen exactamente una imagen codificada. El orden de descodificación es el orden en el que se descodifican las imágenes, y puede ser diferente del orden en que se muestran las imágenes (es decir, el orden de visualización). El funcionamiento de la CPB puede especificarse mediante un descodificador de referencia hipotético (HRD), como un HRD que funciona de acuerdo con las técnicas de esta divulgación.
[0088] Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado, que representa los bloques de vídeo de un fragmento de vídeo codificado y elementos sintácticos asociados, desde el codificador de vídeo 20. La unidad de descodificación por entropía 80 del descodificador de vídeo 30 descodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. La unidad de descodificación por entropía 80 reenvía los vectores de movimiento y otros elementos sintácticos a la unidad de procesamiento de predicción 81. El descodificador de vídeo 30 puede recibir los elementos sintácticos a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo.
[0089] Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad de procesamiento de intrapredicción 84 de la unidad de procesamiento de predicción 81 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual, basándose en un modo de intrapredicción señalizado y datos de los bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un fragmento intercodificado (es decir, B o P), la unidad de compensación de movimiento 82 de la unidad de procesamiento de predicción 81 produce bloques predictivos para un bloque de vídeo del fragmento de vídeo actual, en base a los vectores de movimiento y otros elementos sintácticos recibidos desde la unidad de descodificación por entropía 80. Los bloques predictivos se pueden 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 las imágenes de referencia almacenadas en la DPB 92.
[0090] La unidad de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para producir los bloques predictivos del bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad de compensación de movimiento 82 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 en el fragmento de vídeo actual.
[0091] La unidad de compensación de movimiento 82 también puede realizar la interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento 82 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles fraccionarios de los bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos y usar los filtros de interpolación para producir bloques predictivos.
[0092] La unidad de cuantificación inversa 86 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo del fragmento de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que se debería aplicar. La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada a fin de generar bloques residuales en el dominio del píxel.
[0093] Después de que la unidad de compensación de movimiento 82 genera el bloque predictivo para el bloque de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de procesamiento de transformada inversa 88 a los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 82. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de bloques para filtrar los bloques descodificados, a fin de eliminar distorsiones de efecto 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 de píxeles o mejorar de otro modo la calidad del vídeo. Los bloques de vídeo descodificados en una trama o imagen dada son a continuación almacenados en la DPB 92, que almacena imágenes de referencia usadas para la posterior compensación de movimiento. La DPB 92 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. Al igual que la CPB 78, en un ejemplo, e1HRD puede especificar el funcionamiento de la DPB 92, como se define en las técnicas de esta divulgación.
[0094] El descodificador de vídeo 30 puede configurarse para implementar las técnicas de esta divulgación. En un ejemplo, el descodificador de vídeo 30 puede configurarse para recibir un primer retardo de salida de la DPB y un segundo retardo de salida de la DPB para una imagen descodificada, determinar, para la imagen descodificada, un primer tiempo de salida de la DPB usando el primer retardo de salida de la DPB en el caso de que un ajuste de1HRD para un descodificador de vídeo indique una operación a nivel de imagen y determinar, para la imagen descodificada, un segundo tiempo de salida de la DPB usando el segundo retardo de salida de la DPB en el caso de que el ajuste del HRD para el descodificador de vídeo indique una operación a nivel de subimagen. Otros ejemplos del funcionamiento del descodificador de vídeo 30 de acuerdo con las técnicas de esta divulgación se analizarán a continuación con respecto a la FIG. 6.
[0095] La FIG. 5 es un diagrama de flujo que muestra un procedimiento de codificación a modo de ejemplo de acuerdo con las técnicas de esta divulgación. Las técnicas de la FIG. 5 puede implementarse mediante una o más estructuras del codificador de vídeo 20.
[0096] En un ejemplo, el codificador de vídeo 20 puede estar configurado para determinar un primer tiempo de salida de la DPB usando un primer retardo de la salida de la DPB en el caso de que un ajuste de1HRD para un descodificador de vídeo indique un funcionamiento a nivel de imagen (500), y determinar un segundo tiempo de salida de la DPB usando un segundo retardo de salida de la DPB en el caso de que el ajuste de1HRD para el descodificador de vídeo indique la operación a nivel de subimagen (502). El codificador de vídeo 20 puede configurarse adicionalmente para señalizar el primer retardo de salida de la DPB y el segundo retardo de salida de la DPB en un flujo de bits de vídeo codificado (504).
[0097] El codificador de vídeo 20 puede configurarse adicionalmente para señalizar un indicador de la CPB de subimagen que indica si el ajuste del HRD para el descodificador de vídeo es a nivel de imagen o a nivel de subimagen (506), y codificar imágenes de vídeo basándose en el indicador de la CPB de subimagen (508).
[0098] En un ejemplo de la divulgación, la determinación del segundo tiempo de salida de la DPB comprende multiplicar el segundo retardo de salida de la DPB por un ciclo de reloj de subimagen y la adición de un valor resultante para un tiempo de eliminación de la CPB. En otro ejemplo de la divulgación, determinar el primer tiempo de salida de la DPB comprende multiplicar el primer retardo de salida de la DPB por un ciclo de reloj y agregar un valor resultante a un tiempo de eliminación de la CPB.
[0099] La FIG. 6 es un diagrama de flujo que muestra un procedimiento de descodificación de ejemplo de acuerdo con las técnicas de la presente divulgación. Las técnicas de la FIG. 6 puede implementarse mediante una o más estructuras del descodificador de vídeo 30.
[0100] En un ejemplo, el descodificador de vídeo 30 puede configurarse para recibir un indicador de la CPB de subimagen que indica si el ajuste del HRD para el descodificador de vídeo es a nivel de imagen o a nivel de subimagen (600), y descodificar imágenes de vídeo basándose en el indicador de la CPB de subimagen (602).
[0101] El descodificador de vídeo 30 puede configurarse adicionalmente para recibir un primer retardo de salida de la DPB y un segundo retardo de salida de la DPB para una imagen descodificada (604), y determinar, para la imagen descodificada, un primer tiempo de salida de la DPB usando el primer retardo de salida de la DPB en el caso de que el ajuste del HRD para el descodificador de vídeo indique una operación a nivel de imagen (606), y determinar, para la imagen descodificada, un segundo tiempo de salida de la DPB usando el segundo retardo de salida de la DPB en el caso de que el ajuste del HRD para el descodificador de vídeo indique una operación a nivel de subimagen (608).
[0102] El descodificador de vídeo 30 puede configurarse adicionalmente para emitir imágenes desde una memoria intermedia de imágenes descodificadas basándose en el primer tiempo de salida de la DPB o el segundo tiempo de salida de la DPB basándose en el ajuste del HRD (610). El primer tiempo de salida de la DPB se usa si el indicador de CPB de subimagen indica que el ajuste del HRD para el descodificador de vídeo indica una operación a nivel de imagen, y el segundo tiempo de salida de la DPB se usa si el indicador de CPB de subimagen indica que el ajuste del HRD para el descodificador de vídeo indica una operación a nivel de subimagen.
[0103] En otro ejemplo de la divulgación, el descodificador de vídeo 30 está configurado para determinar el segundo tiempo de salida de la DPB multiplicando el segundo retardo de salida de la DPB por un ciclo de reloj de subimagen y agregando un valor resultante a un tiempo de eliminación de la CPB. En otro ejemplo de la divulgación, el descodificador de vídeo 30 está configurado para determinar el primer tiempo de salida de la DPB multiplicando el primer retardo de salida de la DPB por un ciclo de reloj y agregando un valor resultante a un tiempo de eliminación de la CPB.
[0104] En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en o transmitir 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 corresponden a un medio tangible tal como medios de almacenamiento de datos, o medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) medios de almacenamiento tangibles y legibles por ordenador que sean no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0105] A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. Además, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otro origen remoto usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye el disco compacto (CD), el disco láser, el disco óptico, el disco versátil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos normalmente reproducen datos de manera magnética, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior se deberían incluir también dentro del alcance de los medios legibles por ordenador.
[0106] Las instrucciones se pueden ejecutar por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables in situ (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o software dedicados, configurados para la codificación y la descodificación, o incorporarse en un códec combinado. Además, las técnicas se pueden implementar totalmente en uno o más circuitos o elementos lógicos.
[0107] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionarse mediante un grupo de unidades de hardware interoperativas, incluidos uno o más procesadores, como se describe anteriormente, junto con software y/o firmware adecuados.
[0108] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (8)

REIVINDICACIONES
1. Un aparato configurado para descodificar datos de vídeo, comprendiendo el aparato:
una memoria configurada para almacenar datos de vídeo; y
un descodificador de vídeo en comunicación con la memoria, el descodificador de vídeo configurado para: recibir un primer retardo de salida de la memoria intermedia de imágenes descodificadas DPB y un segundo retardo de salida de la DPB en un mensaje SEI de temporización de imagen;
recibir un indicador de memoria intermedia de imágenes codificadas, CPB, de subimagen; determinar si un ajuste de un descodificador de referencia hipotético, HRD, para un descodificador de vídeo indica una operación a nivel de imagen o una operación a nivel de subimagen basándose en el indicador de la CPB de subimagen; y
basándose en una determinación de que el ajuste del HRD indica una operación a nivel de imagen, determinar, para la imagen descodificada, un primer tiempo de salida de la DPB multiplicando el primer retardo de salida de la DPB por un ciclo del reloj de imagen y agregando un valor resultante a un tiempo de eliminación de la CPB, y emitir imágenes desde una memoria intermedia de imágenes descodificadas basándose en el primer tiempo de salida de la DPB; y
basándose en una determinación de que el ajuste del HRD indica una operación a nivel de subimagen, obtener un ciclo de reloj de subimagen basándose en el ciclo de reloj de imagen y un valor divisor de ciclo por el cual el ciclo de reloj de subimagen es igual al ciclo de reloj de imagen dividido por el valor divisor de ciclo;
determinar, para la imagen descodificada, un segundo tiempo de salida de la DPB multiplicando el segundo retardo de salida de la DPB por un ciclo de reloj de subimagen y agregando un valor resultante a un tiempo de eliminación de la CPB y emitiendo imágenes desde una memoria intermedia de imágenes descodificadas basándose en el segundo tiempo de salida de la DPB.
2. El aparato según la reivindicación 1, en el que el descodificador de vídeo está configurado, además, para: descodificar imágenes de vídeo basándose en el indicador de CPB de subimagen.
3. Un aparato configurado para codificar datos de vídeo, comprendiendo el aparato:
una memoria configurada para almacenar datos de vídeo; y
un codificador de vídeo en comunicación con la memoria, el codificador de vídeo configurado para: determinar si un ajuste de un descodificador de referencia hipotético HRD para un descodificador de vídeo indica una operación a nivel de imagen o una operación a nivel de subimagen;
señalizar un indicador de memoria intermedia de imágenes codificadas, CPB, de subimagen que indica si el ajuste del HDR para el descodificador de vídeo es a nivel de imagen o a nivel de subimagen; basándose en una determinación de que el ajuste del HDR indica una operación a nivel de imagen, determinar un primer tiempo de salida de la memoria intermedia de imágenes descodificadas DPB multiplicando el primer retardo de salida de la DPB por un ciclo del reloj de imagen y agregando un valor resultante a un tiempo de eliminación de la CPB; y
basándose en una determinación de que el ajuste del HDR indica una operación a nivel de subimagen, obteniendo un ciclo de reloj de subimagen basándose en el ciclo de reloj de imagen y un valor divisor del ciclo por el cual el ciclo del reloj de subimagen es igual al ciclo del reloj de la imagen dividido por el valor divisor del ciclo; y
determinar un segundo tiempo de salida de la DPB usando un segundo retardo de salida de la DPB y el ciclo de reloj de subimagen multiplicando el segundo retardo de salida de la DPB por un ciclo de reloj de subimagen y agregando un valor resultante a un tiempo de eliminación de la CPB;
señalizar el primer retardo de salida de la DPB y el segundo retardo de salida de la DPB en un mensaje SEI de temporización de imagen.
4. El aparato según la reivindicación 3, en el que el codificador de vídeo está configurado, además, para codificar imágenes de vídeo basándose en el indicador de la CPB de subimagen.
5. Un aparato configurado para descodificar datos de vídeo, comprendiendo el aparato:
medios para recibir un primer retardo de salida de la memoria intermedia de imágenes descodificadas DPB y un segundo retardo de salida de la DPB en el mensaje SEI de temporización de imagen;
medios para recibir un indicador de memoria intermedia de imágenes codificadas CPB de subimagen; medios de indicación para determinar si un ajuste del descodificador de referencia hipotético HRD para un descodificador de vídeo indica una operación a nivel de imagen o una operación a nivel de subimagen basándose en el indicador de la CPB de subimagen;
medios, operables cuando los medios de indicación determinan una operación a nivel de imagen, para determinar, para la imagen descodificada, un primer tiempo de salida de la DPB multiplicando el primer retardo de salida de la DPB por un ciclo de reloj de imagen y agregando un valor resultante a un tiempo de eliminación de la CPB, y emitir imágenes desde una memoria intermedia de imágenes descodificadas basándose en el primer tiempo de salida de la DPB; y
medios, operables cuando los medios de indicación determinan una operación a nivel de subimagen, para obtener un ciclo de reloj de subimagen basado en el ciclo de reloj de imagen y un valor divisor de ciclo por el cual el ciclo de reloj de subimagen es igual al ciclo de reloj de imagen dividido por el valor divisor del ciclo y determinar, para la imagen descodificada, un segundo tiempo de salida de la DPB multiplicando el segundo retardo de salida de la DPB por un ciclo de reloj de subimagen y agregando un valor resultante a un tiempo de eliminación de la CPB y emitir imágenes desde una memoria intermedia de imágenes descodificadas basándose en el segundo tiempo de salida de la DPB.
6. El aparato según la reivindicación 5, que comprende, además, medios para descodificar imágenes de vídeo basándose en el indicador de la CPB de subimagen.
7. Un aparato configurado para codificar datos de vídeo, comprendiendo el aparato:
medios de indicación para determinar si un ajuste de un descodificador de referencia hipotético, HRD, para un descodificador de vídeo indica una operación a nivel de imagen o una operación a nivel de subimagen; medios para señalizar un indicador de memoria intermedia de imágenes codificadas CPB de subimagen que indica si el ajuste de HDR para el descodificador de vídeo es a nivel de imagen o a nivel de subimagen; medios, operables cuando los medios de indicación determinan que el ajuste de1HDR indica una operación a nivel de imagen, para determinar un primer tiempo de salida de la memoria intermedia de imágenes descodificadas DPB multiplicando el primer retardo de salida de la DPB por un ciclo de reloj de imagen y agregando un valor resultante a un tiempo de eliminación de la CPB; y
medios, operables cuando los medios de indicación determinan que el ajuste de1HDR indica una operación a nivel de subimagen, para obtener un ciclo de reloj de subimagen basándose en el ciclo de reloj de imagen y un valor divisor de ciclo por el cual el ciclo de reloj de subimagen es igual al ciclo de reloj de imagen dividido por el valor divisor de ciclo y para
determinar un segundo tiempo de salida de la DPB usando un segundo retardo de salida de la DPB y el ciclo de reloj de subimagen multiplicando el segundo retardo de salida de la DPB por un ciclo del reloj de subimagen y agregando un valor resultante a un tiempo de eliminación de la CPB; y
medios para señalizar el primer retardo de salida de la DPB y el segundo retardo de salida de la DPB en un mensaje SEI de temporización de imagen.
8. El aparato según la reivindicación 7, que comprende, además, medios para codificar imágenes de vídeo basándose en el indicador de la CPB de subimagen.
ES13818050T 2012-12-19 2013-12-10 Modelo de almacenamiento intermedio de bajo retardo en codificación de vídeo Active ES2765038T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261739632P 2012-12-19 2012-12-19
US201261745423P 2012-12-21 2012-12-21
US14/036,615 US9374585B2 (en) 2012-12-19 2013-09-25 Low-delay buffering model in video coding
PCT/US2013/074104 WO2014099489A1 (en) 2012-12-19 2013-12-10 Low-delay buffering model in video coding

Publications (1)

Publication Number Publication Date
ES2765038T3 true ES2765038T3 (es) 2020-06-05

Family

ID=50930858

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13818050T Active ES2765038T3 (es) 2012-12-19 2013-12-10 Modelo de almacenamiento intermedio de bajo retardo en codificación de vídeo

Country Status (11)

Country Link
US (1) US9374585B2 (es)
EP (1) EP2936818B1 (es)
JP (2) JP6545623B2 (es)
KR (1) KR101732294B1 (es)
CN (1) CN104854870B (es)
BR (1) BR112015014649B1 (es)
DK (1) DK2936818T3 (es)
ES (1) ES2765038T3 (es)
HU (1) HUE047101T2 (es)
TW (1) TWI530168B (es)
WO (1) WO2014099489A1 (es)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013119325A1 (en) * 2012-02-08 2013-08-15 Thomson Licensing Method and apparatus for using an ultra-low delay mode of a hypothetical reference decoder
KR101865014B1 (ko) * 2012-06-25 2018-06-05 닛본 덴끼 가부시끼가이샤 비디오 디코딩 장치, 방법 및 프로그램
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
IL287526B (en) 2013-04-07 2022-07-01 Dolby Int Ab Signal change in systems layer output
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
CN106921862A (zh) * 2014-04-22 2017-07-04 联发科技股份有限公司 多核解码器系统和视频解码方法
US9813719B2 (en) * 2014-06-18 2017-11-07 Qualcomm Incorporated Signaling HRD parameters for bitstream partitions
US20160234522A1 (en) * 2015-02-05 2016-08-11 Microsoft Technology Licensing, Llc Video Decoding
EP3262523B1 (en) * 2015-02-27 2019-12-04 DivX, LLC System and method for frame duplication and frame extension in live video encoding and streaming
CN107770565A (zh) * 2016-08-15 2018-03-06 联发科技股份有限公司 低延迟视频编码的装置与方法
MX2021010393A (es) 2019-03-01 2021-11-12 Fraunhofer Ges Forschung Decodificador de referencia hipotetico.
KR102776040B1 (ko) * 2019-03-11 2025-03-07 후아웨이 테크놀러지 컴퍼니 리미티드 인코더, 디코더, 및 대응하는 방법들
US12238319B2 (en) 2019-09-23 2025-02-25 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium storing bitstream
EP4026050A4 (en) 2019-09-24 2022-11-23 Huawei Technologies Co., Ltd. IMAGE INFORMATION AND DECODE UNIT INFORMATION ON TIME SCALABILITY
CA3164493A1 (en) * 2019-12-20 2021-06-24 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Video data stream, video encoder, apparatus and methods for a hypothetical reference decoder and for output layer sets
JP7431330B2 (ja) 2019-12-26 2024-02-14 バイトダンス インコーポレイテッド ビデオコーディングにおけるプロファイル、層及びレイヤの指示
JP7425204B2 (ja) 2019-12-26 2024-01-30 バイトダンス インコーポレイテッド ビデオビットストリームにおける仮想参照デコーダパラメータのシグナリングに対する制約
JP7422881B2 (ja) 2019-12-27 2024-01-26 バイトダンス インコーポレイテッド パラメータセットにおけるサブピクチャシグナリング
CN115152233B (zh) * 2019-12-30 2025-04-15 Lg电子株式会社 包括dpb管理处理的图像解码方法及其设备
CN115152211A (zh) 2019-12-31 2022-10-04 皇家Kpn公司 视频编码中解码图片缓冲区的部分输出
WO2021142364A1 (en) 2020-01-09 2021-07-15 Bytedance Inc. Signalling of high level syntax indication
WO2021193671A1 (ja) * 2020-03-25 2021-09-30 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
WO2021201616A1 (ko) * 2020-03-31 2021-10-07 엘지전자 주식회사 픽처 분할 정보 및 서브픽처 정보에 기반하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체
US12022101B2 (en) 2020-03-31 2024-06-25 Lg Electronics Inc. Image encoding/decoding method and apparatus based on subpicture information aligned between layers, and recording medium storing bitstream
WO2021261536A1 (ja) * 2020-06-25 2021-12-30 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
US11871143B2 (en) 2020-09-17 2024-01-09 Lemon Inc. Subpicture tracks in coded video
EP4268457A1 (en) 2020-12-28 2023-11-01 Koninklijke KPN N.V. Partial output of a decoded picture buffer in video coding
CN116965022A (zh) 2020-12-28 2023-10-27 皇家Kpn公司 在视频编码中图片的部分的优先解码和输出
US11695965B1 (en) * 2022-10-13 2023-07-04 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video coding using a coded picture buffer

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2840589B2 (ja) * 1996-02-09 1998-12-24 富士通株式会社 データ圧縮装置及びデータ復元装置
US5668599A (en) * 1996-03-19 1997-09-16 International Business Machines Corporation Memory management for an MPEG2 compliant decoder
US6539058B1 (en) * 1998-04-13 2003-03-25 Hitachi America, Ltd. Methods and apparatus for reducing drift due to averaging in reduced resolution video decoders
US6604158B1 (en) * 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US7417568B2 (en) * 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) * 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US7296931B2 (en) * 2002-11-13 2007-11-20 Ntn Corporation Fluid lubricated bearing device
EP1518403A4 (en) * 2002-07-02 2009-03-18 Conexant Systems Inc HYPOTHETIC REFERENCE DECODER FOR COMPRESSED PICTURES AND VIDEO
US7532670B2 (en) * 2002-07-02 2009-05-12 Conexant Systems, Inc. Hypothetical reference decoder with low start-up delays for compressed image and video
AU2003272833A1 (en) * 2002-09-17 2004-04-08 Vladimir Ceperkovic Fast codec with high compression ratio and minimum required resources
JP2004173069A (ja) * 2002-11-21 2004-06-17 Canon Inc 画像データ記録装置及び記録方法
US7403660B2 (en) * 2003-04-30 2008-07-22 Nokia Corporation Encoding picture arrangement parameter in picture bitstream
US20050254575A1 (en) * 2004-05-12 2005-11-17 Nokia Corporation Multiple interoperability points for scalable media coding and transmission
US8615038B2 (en) * 2004-12-06 2013-12-24 Nokia Corporation Video coding, decoding and hypothetical reference decoder
US8908577B2 (en) * 2005-12-02 2014-12-09 Qualcomm Incorporated Solving IP buffering delays in mobile multimedia applications with translayer optimization
JP2008167061A (ja) * 2006-12-27 2008-07-17 Toshiba Corp 符号化装置及び符号化方法
MY162367A (en) * 2007-01-05 2017-06-15 Thomson Licensing Hypothetical reference decoder for scalable video coding
CN101855910B (zh) * 2007-09-28 2014-10-29 杜比实验室特许公司 视频压缩和传送技术
EP2198619A2 (en) * 2007-10-05 2010-06-23 Thomson Licensing Methods and apparatus for incorporating video usability information (vui) within a multi-view video (mvc) coding system
US20090109988A1 (en) 2007-10-26 2009-04-30 Chowdhary Musunuri Video Decoder with an Adjustable Video Clock
US8897359B2 (en) * 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
US8259794B2 (en) * 2008-08-27 2012-09-04 Alexander Bronstein Method and system for encoding order and frame type selection optimization
US20100150230A1 (en) * 2008-12-17 2010-06-17 Apple Inc. Video coding system using sub-channels and constrained prediction references to protect against data transmission errors
JP5072893B2 (ja) * 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
KR20120027194A (ko) * 2009-04-21 2012-03-21 엘지전자 주식회사 다시점 비디오 신호 처리 방법 및 장치
CA2798012A1 (en) * 2010-05-07 2011-11-10 Nippon Telegraph And Telephone Corporation Video encoding to prevent decoder buffer underflow by re-encoding selected pictures in a video sequence using a retry count or a retry point
CN102870415B (zh) 2010-05-12 2015-08-26 日本电信电话株式会社 活动图像编码控制方法、活动图像编码装置以及活动图像编码程序
US8873627B2 (en) * 2010-12-07 2014-10-28 Mediatek Inc Method and apparatus of video coding using picture structure with low-delay hierarchical B group
CN107465916A (zh) * 2011-06-28 2017-12-12 寰发股份有限公司 编码/解码帧内预测模式的方法及装置
BR112013033552B1 (pt) 2011-06-30 2022-02-22 Microsoft Technology Licensing, Llc Método em um sistema de computador que implementa um decodificador de vídeo, método em um sistema de computação, meio legível por computador e sistema de computação
US20130170561A1 (en) * 2011-07-05 2013-07-04 Nokia Corporation Method and apparatus for video coding and decoding
KR101649207B1 (ko) * 2011-08-31 2016-08-19 노키아 테크놀로지스 오와이 멀티뷰 비디오 코딩 및 디코딩을 위한 방법, 장치 및 컴퓨터 프로그램
US9892188B2 (en) * 2011-11-08 2018-02-13 Microsoft Technology Licensing, Llc Category-prefixed data batching of coded media data in multiple categories
US9565431B2 (en) * 2012-04-04 2017-02-07 Qualcomm Incorporated Low-delay video buffering in video coding
TWI558182B (zh) * 2012-06-29 2016-11-11 Ge影像壓縮有限公司 視訊資料串流槪念技術
US20140003534A1 (en) * 2012-07-02 2014-01-02 Sony Corporation Video coding system with temporal scalability and method of operation thereof
US9648322B2 (en) * 2012-07-10 2017-05-09 Qualcomm Incorporated Coding random access pictures for video coding
US9380289B2 (en) * 2012-07-20 2016-06-28 Qualcomm Incorporated Parameter sets in video coding
US9451256B2 (en) * 2012-07-20 2016-09-20 Qualcomm Incorporated Reusing parameter sets for video coding
US9374583B2 (en) * 2012-09-20 2016-06-21 Qualcomm Incorporated Video coding with improved random access point picture behaviors
US9426462B2 (en) * 2012-09-21 2016-08-23 Qualcomm Incorporated Indication and activation of parameter sets for video coding
US9479773B2 (en) * 2012-09-24 2016-10-25 Qualcomm Incorporated Access unit independent coded picture buffer removal times in video coding
US9241158B2 (en) * 2012-09-24 2016-01-19 Qualcomm Incorporated Hypothetical reference decoder parameters in video coding
US9565452B2 (en) * 2012-09-28 2017-02-07 Qualcomm Incorporated Error resilient decoding unit association
US9319703B2 (en) * 2012-10-08 2016-04-19 Qualcomm Incorporated Hypothetical reference decoder parameter syntax structure
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
US20140192895A1 (en) * 2013-01-04 2014-07-10 Qualcomm Incorporated Multi-resolution decoded picture buffer management for multi-layer video coding
US9325992B2 (en) * 2013-01-07 2016-04-26 Qualcomm Incorporated Signaling of clock tick derivation information for video timing in video coding
US9402076B2 (en) * 2013-01-07 2016-07-26 Qualcomm Incorporated Video buffering operations for random access in video coding
US9521393B2 (en) * 2013-01-07 2016-12-13 Qualcomm Incorporated Non-nested SEI messages in video coding
US10003815B2 (en) * 2013-06-03 2018-06-19 Qualcomm Incorporated Hypothetical reference decoder model and conformance for cross-layer random access skipped pictures
US10554990B2 (en) * 2013-10-14 2020-02-04 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
US10284858B2 (en) * 2013-10-15 2019-05-07 Qualcomm Incorporated Support of multi-mode extraction for multi-layer video codecs

Also Published As

Publication number Publication date
BR112015014649A2 (pt) 2017-07-11
JP6545623B2 (ja) 2019-07-17
EP2936818B1 (en) 2019-10-09
DK2936818T3 (da) 2020-01-20
EP2936818A1 (en) 2015-10-28
CN104854870B (zh) 2018-12-04
JP2016506159A (ja) 2016-02-25
HUE047101T2 (hu) 2020-04-28
US20140169448A1 (en) 2014-06-19
JP2018110425A (ja) 2018-07-12
TW201440506A (zh) 2014-10-16
US9374585B2 (en) 2016-06-21
TWI530168B (zh) 2016-04-11
KR101732294B1 (ko) 2017-05-02
KR20150099792A (ko) 2015-09-01
WO2014099489A1 (en) 2014-06-26
BR112015014649B1 (pt) 2023-02-07
CN104854870A (zh) 2015-08-19

Similar Documents

Publication Publication Date Title
ES2765038T3 (es) Modelo de almacenamiento intermedio de bajo retardo en codificación de vídeo
AU2013371451B2 (en) Signaling of clock tick derivation information for video timing in video coding
ES2777214T3 (es) Refresco gradual de descodificación con soporte de adaptabilidad temporal a escala en la codificación de vídeo
ES2698554T3 (es) Acceso aleatorio con gestión avanzada de memoria intermedia de imágenes codificadas en codificación de vídeo
ES2608765T3 (es) Codificación de las unidades de la NAL de SEI para la codificación de vídeo
ES2707892T3 (es) Operaciones de almacenamiento en memoria intermedia de vídeo para acceso aleatorio en la codificación de vídeo
ES2736312T3 (es) Señalización de imágenes de referencia a largo plazo para codificación de vídeo
ES2684546T3 (es) Codificación de vídeo con comportamientos de imagen de punto de acceso aleatorio mejorados