ES2715314T3 - Acceso aleatorio completo desde imágenes de acceso aleatorio limpio en codificación de vídeo - Google Patents

Acceso aleatorio completo desde imágenes de acceso aleatorio limpio en codificación de vídeo Download PDF

Info

Publication number
ES2715314T3
ES2715314T3 ES13721237T ES13721237T ES2715314T3 ES 2715314 T3 ES2715314 T3 ES 2715314T3 ES 13721237 T ES13721237 T ES 13721237T ES 13721237 T ES13721237 T ES 13721237T ES 2715314 T3 ES2715314 T3 ES 2715314T3
Authority
ES
Spain
Prior art keywords
video
bit stream
image
cra
access unit
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
ES13721237T
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 ES2715314T3 publication Critical patent/ES2715314T3/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/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23614Multiplexing of additional data and video streams
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • 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
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44016Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8451Structuring of content, e.g. decomposing content into time segments using Advanced Video Coding [AVC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Un procedimiento para descodificar datos de vídeo de codificación de vídeo de alta eficiencia (HEVC), el procedimiento que comprende: descodificar (152), en un mensaje de información de mejora complementaria (SEI), un elemento sintáctico que indica si el acceso aleatorio al flujo de bits desde una unidad de acceso de acceso aleatorio limpio (CRA) en particular en una secuencia de vídeo codificada (120) del flujo de bits requiere uno o más conjuntos de parámetros de al menos una unidad de acceso anterior en el flujo de bits para descodificar la unidad de acceso CRA particular o las unidades de acceso posteriores, en el que la unidad de acceso CRA particular se coloca en cualquier punto dentro de la secuencia de vídeo codificada del flujo de bits y no limpia una memoria intermedia de imágenes descodificadas (DPB); y basándose en el elemento sintáctico que indica que no se necesitan conjuntos de parámetros de una unidad de acceso anterior, realizar (156) acceso aleatorio al flujo de bits desde la unidad de acceso CRA particular sin obtener los conjuntos de parámetros de la al menos una unidad de acceso anterior en el flujo de bits.

Description

DESCRIPCION
Acceso aleatorio completo desde imageries de acceso aleatorio limpio en codificacion de video
CAMPO TECNICO
[0001] Esta divulgacion se refiere, en general, al procesamiento de datos de video.
ANTECEDENTES
[0002] Las capacidades de video digital se pueden incorporar a una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusion directa digital, sistemas de radiodifusion inalambrica, asistentes digitales personales (PDA), ordenadores portatiles o de escritorio, camaras digitales, dispositivos de grabacion digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos celulares o de radio por satelite, dispositivos de videoconferencia y similares. Entre las normas de codificacion de video se incluyen ITU-T H.261, MPEG-1 Visual de la ISO/IEC, ITU-T H.262 o MPEG-2 Visual de la ISO/IEC, ITU-T H.263, MPEG-4 Visual de la ISO/IEC e ITU-T H.264 (tambien conocida como AVC del MPEG-4 de la ISO/IEC), incluyendo sus ampliaciones de codificacion de video escalable (SVC) y de codificacion de video de multiples visualizaciones (MVC). Ademas, la codificacion de video de alta eficiencia (HEVC) es una norma de codificacion de video que esta en proceso de elaboracion por el Equipo de Colaboracion Conjunta en Codificacion de Video (JCT-VC) del Grupo de Expertos en Codificacion de Video (VCEG) de ITU-T y el Grupo de Expertos en Imagenes en Movimiento (MPEG) de ISO/IEC. Los dispositivos de video pueden transmitir, recibir, codificar, descodificar y/o almacenar informacion de video digital mas eficazmente, implementando tales tecnicas de codificacion de video.
[0003] Las tecnicas de codificacion de video incluyen la prediccion espacial (intra-imagen) y/o la prediccion temporal (entre imagenes) para reducir o eliminar la redundancia intrinseca en las secuencias de video. Para la codificacion de video predictiva basada en bloques, un fragmento de video (por ejemplo, una trama de video o una parte de una trama de video) puede dividirse en bloques de video, que tambien pueden denominarse macrobloques, bloques arbolados, unidades de codificacion (CU) y/o nodos de codificacion. Los bloques de video en un fragmento intra-codificado (I) de una imagen se codifican utilizando prediccion espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de video en un fragmento inter-codificado (P o B) de una imagen pueden usar la prediccion espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen o la prediccion temporal con respecto a muestras de referencia en otras imagenes de referencia. Las imagenes pueden denominarse tramas, y las imagenes de referencia pueden denominarse tramas de referencia.
[0004] La prediccion espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de pixeles entre el bloque original a codificar y el bloque predictivo. Los pixeles tambien pueden denominarse elementos de imagen, imagenes o muestras. Un bloque inter-codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra-codificado se codifica de acuerdo con un modo de intra-codificacion y a los datos residuales. Para una mayor compresion, los datos residuales pueden transformarse desde el dominio de pixeles a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que a continuacion se pueden cuantificar. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una formacion bidimensional, pueden examinarse con el fin de generar un vector unidimensional de coeficientes de transformada, y puede aplicarse codificacion por entropia para lograr aun mas compresion.
[0005] En "WD6: High Efficiency Video Coding (HEVC) text specification draft 6 (version JCTVC-H1 003_dA) [WD6: borrador de memoria descriptiva textual de codificacion de video de alta eficiencia (HEVC) 6 (version JCTVC-H1 003_dA)]", de Benjamin Bross et al, Equipo de colaboracion conjunta sobre codificacion de video 7.® reunion: Ginebra, Suiza, 21 -30 de noviembre de 2011, paginas 1 -239, se publico un borrador de memoria descriptiva para la HEVC que data del 13 de febrero de 2012.
[0006] El "Text of ISO/IEC 14496-15/FDIS [Texto de ISO/IEC 14496-15/FDIS]" de Singer et al. (65.® reunion MPEG; Trondheim; documento n.° N5780, 13 de agosto de 2003) describe como se puede almacenar el contenido de AVC en un formato compatible con formato de archivo de medios de base ISO. El documento hace referencia a conjuntos de parametros y puntos de recuperacion de acceso aleatorio.
[0007] El "Study Text of ISO/IEC 14496-1:2001/FPDAM7 [Texto de estudio de ISO/IEC 14496-1: 2001/FPDAM7]" de Lim (64.® reunion MPEG; Pattaya; documento n.° N5609, 5 de mayo de 2003) indica que un indicador en una cabecera de paquete de capa de sincronizacion MPEG-4 puede configurarse en "1" si esta encapsulando una AU que contiene una imagen de actualizacion instantanea del descodificador o un mensaje de punto de recuperacion SEI y los conjuntos de parametros necesarios para su descodificacion ya estan disponibles o se entregan junto con la misma AU.
SUMARIO
[0008] En general, esta divulgacion describe tecnicas para proporcionar una indicacion de si realizar acceso aleatorio a partir de una unidad de acceso particular en un flujo de bits requiere obtener conjuntos de parametros a partir de unidades de acceso anteriores. Convencionalmente, una imagen de punto de acceso aleatorio (RAP) es una imagen de actualizacion de descodificacion instantanea (IDR), que indica el inicio de una secuencia de video codificada y siempre limpia una memoria intermedia de imagenes descodificadas (DPB) de un descodificador de video. La norma de codificacion de video de alta eficiencia (HEVC) introduce una imagen de acceso aleatorio limpio (CRA) que se puede colocar en cualquier punto dentro de una secuencia de video codificada y no limpia la DPB, lo cual proporciona una eficiencia de codificacion mejorada. Las imagenes CRA, por lo tanto, proporcionan mas opciones para el acceso aleatorio al flujo de bits sin una menor eficiencia de codificacion.
[0009] En el caso de acceso aleatorio de una imagen CRA, no se descodificaran todas las imagenes anteriores a la imagen CRA en orden de salida o descodificacion y no estan disponibles para su uso como imagenes de referencia. En este caso, para descodificar la imagen CRA o cualquiera de las siguientes imagenes en orden de salida o descodificacion, un descodificador de video puede necesitar obtener uno o mas conjuntos de parametros incluidos en una unidad de acceso para una de las imagenes anteriores no disponibles, lo cual es una operacion pesada. Las tecnicas de esta divulgacion proporcionan una indicacion, para cada imagen CRA, que indica si los conjuntos de parametros incluidos en las unidades de acceso anteriores son necesarios para realizar un acceso aleatorio desde la imagen. Cuando no se necesitan conjuntos de parametros de unidades de acceso anteriores para el acceso aleatorio desde una imagen de CRA particular, un descodificador de video puede determinar realizar un acceso aleatorio desde esa imagen sin una operacion de busqueda. A la inversa, cuando se necesitan conjuntos de parametros de unidades de acceso anteriores para el acceso aleatorio desde una imagen CRA particular, el descodificador de video puede determinar que no se realice un acceso aleatorio desde esa imagen para evitar la operacion de busqueda.
[0010] La invencion se define mediante las reivindicaciones.
[0011] Los detalles de uno o mas ejemplos se exponen en los dibujos adjuntos y en la descripcion siguiente. Otras caracteristicas, objetos y ventajas resultaran evidentes a partir de la descripcion y de los dibujos, y a partir de las reivindicaciones. La divulgacion habilitante para la invencion se encuentra en el modo de realizacion de la Figura 7. Los modos de realizacion restantes deben entenderse como ejemplos que no describen partes de la presente invencion.
BREVE DESCRIPCION DE LOS DIBUJOS
[0012]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificacion y descodificacion de video de ejemplo que puede utilizar las tecnicas descritas en esta divulgacion.
La FIG. 2 es un diagrama de bloques que ilustra un codificador de video de ejemplo que puede implementar las tecnicas descritas en esta divulgacion.
La FIG. 3 es un diagrama de bloques que ilustra un descodificador de video de ejemplo que puede implementar las tecnicas descritas en esta divulgacion.
La FIG. 4 es un diagrama conceptual que ilustra una secuencia de video codificada de acuerdo con tecnicas de codificacion de video predictiva.
La FIG. 5 es un diagrama conceptual que ilustra un ejemplo de una secuencia de video codificada.
La FIG. 6 es un diagrama de flujo que ilustra una operacion para determinar si una actualizacion del conjunto de parametros puede ocurrir en una parte de un flujo de bits.
La FIG. 7 es un diagrama de flujo que ilustra una operacion para determinar si se puede realizar el acceso aleatorio desde una unidad de acceso CRA sin tener que obtener conjuntos de parametros de unidades de acceso no disponibles anteriores.
La FIG. 8 es un diagrama de bloques que ilustra un conjunto a modo de ejemplo de dispositivos que forman parte de una red.
DESCRIPCION DETALLADA
[0013] Las tecnicas de esta divulgacion proporcionan una indicacion de si la realizacion de acceso aleatorio a partir de una unidad de acceso particular en un flujo de bits requiere obtener conjuntos de parametros a partir de unidades de acceso anteriores. Convencionalmente, una imagen de punto de acceso aleatorio (RAP) es una imagen de actualizacion de descodificacion instantanea (IDR), que indica el inicio de una secuencia de video codificada y siempre limpia una memoria intermedia de imagenes descodificadas (DPB) de un descodificador de video. La norma de codificacion de video de alta eficiencia (HEVC) introduce una imagen de acceso aleatorio limpio (CRA) que se puede colocar en cualquier punto dentro de una secuencia de video codificada y no limpia la DPB, lo cual proporciona una eficiencia de codificacion mejorada. Las imagenes CRA, por lo tanto, proporcionan mas opciones para el acceso aleatorio al flujo de bits sin una menor eficiencia de codificacion.
[0014] En el caso de acceso aleatorio de una imagen CRA, no se descodificaran todas las imagenes anteriores a la imagen CRA en orden de salida o descodificacion y no estan disponibles para su uso como imagenes de referencia. En este caso, para descodificar la imagen CRA o cualquiera de las siguientes imagenes en orden de salida o descodificacion, un descodificador de video puede necesitar obtener uno o mas conjuntos de parametros incluidos en una unidad de acceso para una de las imagenes anteriores no disponibles, lo cual es una operacion pesada. Las tecnicas de esta divulgacion proporcionan una indicacion, para cada imagen CRA, que indica si los conjuntos de parametros incluidos en las unidades de acceso anteriores son necesarios para realizar un acceso aleatorio desde la imagen. Cuando no se necesitan conjuntos de parametros de unidades de acceso anteriores para el acceso aleatorio desde una imagen de CRA particular, un descodificador de video puede determinar realizar un acceso aleatorio desde esa imagen sin una operacion de busqueda. A la inversa, cuando se necesitan conjuntos de parametros de unidades de acceso anteriores para el acceso aleatorio desde una imagen CRA particular, el descodificador de video puede determinar que no se realice un acceso aleatorio desde esa imagen para evitar la operacion de busqueda.
[0015] En algunos casos, la indicacion puede comprender un tipo particular de unidad de capa de abstraccion de red (NAL) incluida en una unidad de acceso para cada imagen CRA en un flujo de bits. En otros casos, la indicacion puede comprender un elemento sintactico, como un indicador, incluido en una carga util de unidad NAL incluida en una unidad de acceso para cada imagen CRA en el flujo de bits. En un ejemplo, la indicacion puede comprender un elemento sintactico, como un indicador, incluido en una unidad NAL de informacion de mejora suplementaria (SEI) en la unidad de acceso para la imagen CRA. Aunque se describen principalmente con respecto a las imagenes de CRA, las tecnicas de esta divulgacion se pueden usar de manera similar para otros tipos de imagenes RAP, incluidas las imagenes IDR y las imagenes de actualizacion de descodificacion gradual (GDR).
[0016] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificacion y descodificacion de video 10 de ejemplo que puede utilizar las tecnicas descritas en esta divulgacion. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de video codificados, a ser descodificados en un momento posterior por un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de video al dispositivo de destino 14 mediante un medio legible por ordenador 16. El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de entre una amplia gama de dispositivos, incluidos ordenadores de escritorio, ordenadores plegables (es decir, portatiles), ordenadores de tableta, descodificadores, telefonos tales como los denominados telefonos "inteligentes", los denominados paneles "inteligentes", televisores, camaras, dispositivos de visualizacion, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmision de video continua o similares. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden estar equipados para la comunicacion inalambrica.
[0017] El dispositivo de destino 14 puede recibir los datos de video codificados a descodificar mediante el medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo capaz de desplazar los datos de video codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicacion que habilita el dispositivo de origen 12 para transmitir datos de video codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de video codificados se pueden modular de acuerdo con una norma de comunicacion, tal como un protocolo de comunicacion inalambrica, y transmitir al dispositivo 14 de destino. El medio de comunicacion puede comprender cualquier medio de comunicacion, inalambrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o mas lineas de transmision fisica. El medio de comunicacion puede formar parte de una red basada en paquetes, tal como una red de area local, una red de area amplia o una red global tal como Internet. El medio de comunicacion puede incluir routers, conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion desde el dispositivo 12 de origen hasta el dispositivo 14 de destino.
[0018] En algunos ejemplos, pueden emitirse datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados del dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera entre una diversidad de medios de almacenamiento de datos, de acceso distribuido o local, tales como una unidad de disco duro, discos Bluray, discos DVD, discos CD-ROM, memoria flash, memoria volatil o no volatil u otros medios adecuados cualesquiera de almacenamiento digital para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar los datos de video codificados, generados por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de video almacenados desde el dispositivo de almacenamiento mediante transmision continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo 14 de destino. Los servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de video codificados a traves de cualquier conexion de datos estandar, incluyendo una conexion a Internet. Esto puede incluir un canal inalambrico (por ejemplo, una conexion wifi), una conexion cableada (por ejemplo, DSL, modem de cable, etc.) o una combinacion de ambos que sea adecuada para acceder a datos de vfdeo codificados almacenados en un servidor de archivos. La transmision de datos de vfdeo codificados desde el dispositivo de almacenamiento puede ser una transmision continua, una transmision de descarga o una combinacion de ambas.
[0019] Las tecnicas de esta divulgacion no estan limitadas necesariamente a aplicaciones o configuraciones inalambricas. Las tecnicas pueden aplicarse a la codificacion de vfdeo, para soportar cualquiera de una diversidad de aplicaciones multimedia, tales como radiodifusiones de television por el aire, transmisiones de television por cable, transmisiones de television por satelite, transmisiones de vfdeo continuas, por ejemplo, a traves de Internet, como transmision continua adaptable dinamica por HTTP (DASH), codificacion de vfdeo digital para su almacenamiento en un medio de almacenamiento de datos, descodificacion de vfdeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para admitir la transmision de vfdeo unidireccional o bidireccional, para admitir aplicaciones tales como la transmision de vfdeo continua, la reproduccion de vfdeo, la radiodifusion de vfdeo y/o la videotelefoma.
[0020] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vfdeo 18, un codificador de vfdeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vfdeo 30 y un dispositivo de visualizacion 32. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vfdeo desde un origen de vfdeo externo 18, tal como una camara externa. Del mismo modo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualizacion externo, en lugar de incluir un dispositivo de visualizacion integrado.
[0021] El sistema ilustrado 10 de la FIG. 1 es solo un ejemplo. Las tecnicas de esta divulgacion pueden realizarse mediante cualquier dispositivo de codificacion y/o descodificacion de vfdeo digital. Aunque en general las tecnicas son realizadas por un dispositivo de codificacion de vfdeo, las tecnicas tambien pueden ser realizadas por un codificador/descodificador de vfdeo, tfpicamente denominado un "CODEC". Ademas, las tecnicas de esta divulgacion tambien pueden realizarse mediante un preprocesador de vfdeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de dichos dispositivos de codificacion en los que el dispositivo de origen 12 genera datos de vfdeo codificados para su transmision al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera esencialmente simetrica, de modo que cada uno de los dispositivos 12, 14 incluya componentes de codificacion y de descodificacion de vfdeo. Por lo tanto, el sistema 10 puede prestar soporte a la transmision de vfdeo unidireccional o bidireccional entre los dispositivos de vfdeo 12, 14, por ejemplo, para la transmision continua de vfdeo, la reproduccion de vfdeo, la radiodifusion de vfdeo o la videotelefoma.
[0022] La fuente de vfdeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vfdeo, tal como una camara de vfdeo, un archivo de vfdeo que contiene vfdeo grabado previamente y/o una interfaz de alimentacion de vfdeo para recibir vfdeo desde un proveedor de contenidos de vfdeo. Como otra alternativa, la fuente de vfdeo 18 puede generar datos basados en graficos por ordenador como el vfdeo de origen, o una combinacion de vfdeo en directo, vfdeo archivado y vfdeo generado por ordenador. En algunos casos, si la fuente de vfdeo 18 es una videocamara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los llamados telefonos con camara o videotelefonos. Sin embargo, como se ha mencionado anteriormente, las tecnicas descritas en esta divulgacion pueden ser aplicables a la codificacion de vfdeo en general, y pueden aplicarse a aplicaciones inalambricas y/o alambricas. En cada caso, el codificador de vfdeo 20 puede codificar el vfdeo captado, precaptado o generado por ordenador. La informacion de vfdeo codificada puede entonces ser emitida por la interfaz de salida 22 hacia un medio legible por ordenador 16.
[0023] El medio legible por ordenador 16 puede incluir medios transitorios, tales como una radiodifusion inalambrica o una transmision de red alambrica, o medios de almacenamiento (es decir, medios de almacenamiento no transitorio), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vfdeo digital, un disco Bluray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vfdeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vfdeo codificados al dispositivo de destino 14, por ejemplo, mediante transmision por red. De manera similar, un dispositivo informatico de una utilidad de produccion de un medio, tal como una utilidad de grabacion de discos, puede recibir datos de vfdeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vfdeo codificados. Por lo tanto, puede entenderse que el medio legible por ordenador 16 incluye uno o mas medios legibles por ordenador de diversas formas, en varios ejemplos.
[0024] La interfaz de entrada 28 del dispositivo de destino 14 recibe informacion desde el medio legible por ordenador 16. La informacion del medio legible por ordenador 16 puede incluir informacion sintactica definida por el codificador de vfdeo 20, que tambien usa el descodificador de vfdeo 30, que incluye elementos sintacticos que describen caracterfsticas y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, GOP. El dispositivo de visualizacion 32 muestra los datos de vfdeo descodificados a un usuario, y puede comprender cualquiera entre una diversidad de dispositivos de visualizacion, tales como un tubo de rayos catodicos (CRT), una pantalla de cristal lfquido (LCD), una pantalla de plasma, una pantalla de diodos organicos emisores de luz (OLED) u otro tipo de dispositivo de visualizacion.
[0025] El codificador de video 20 y el descodificador de video 30 pueden funcionar de acuerdo con una norma de codificacion de video, tal como la norma de codificacion de video de alta eficiencia (HEVC), actualmente en fase de desarrollo por el Equipo de colaboracion conjunta en codificacion de video (JCT-VC) del Grupo de expertos de codificacion de video (VCEG) de ITU-T y el Grupo de expertos en imagenes en movimiento (MPEG) de ISO/IEC, como producto de una asociacion colectiva conocida como Equipo de Video Conjunto (JVT). La norma HEVC puede cumplir con el Modelo de prueba HEVC (HM). Un borrador reciente de HEVC HM, denominado "HEVC Working Draft 6 [Borrador 6 de trabajo de la HEVC]" o "WD6", se describe en el documento JCTVC-H1003, de Bross et al., titulado "High efficiency video coding (HEVC) text specification draft 6 [Memoria descriptiva textual de Codificacion de Video de Alta Eficiencia (HEVC), Borrador 6]", Equipo de Colaboracion Conjunta en Codificacion de Video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11 ,8.a reunion: San Jose, California, EE.UU., febrero de 2012.
[0026] Sin embargo, las tecnicas de esta divulgacion no estan limitadas a ninguna norma de codificacion particular. Aunque no se muestra en la FIG. 1, en algunos aspectos, tanto el codificador 20 de video como el descodificador 30 de video pueden estar integrados en un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para ocuparse de la codificacion tanto de audio como de video en un flujo de datos comun o en flujos de datos separados. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexador H.223 de la ITU o a otros protocolos tales como el protocolo de datagramas de usuario (UDP).
[0027] El codificador de video 20 y el descodificador de video 30 se pueden implementar, cada uno, como cualquiera entre una variedad de circuitos codificadores adecuados, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especificos de la aplicacion (ASIC), formaciones de puertas programables in situ (FPGA), logica discreta, software, hardware, firmware o cualquier combinacion de los mismos. Cuando las tecnicas 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 utilizando uno o mas procesadores para realizar las tecnicas de esta divulgacion. Cada uno entre el codificador de video 20 y el descodificador de video 30 se puede incluir en uno o mas codificadores o descodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/descodificador (CODEC) combinado en un dispositivo respectivo.
[0028] El equipo JCT-VC esta trabajando en el desarrollo de la norma HEVC. La iniciativa de normalizacion HEVC se basa en un modelo en evolucion de un dispositivo de codificacion de video denominado modelo de prueba HEVC (HM). El HM supone varias capacidades adicionales relativas a las normas existentes. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificacion mediante prediccion intra, el HM puede proporcionar hasta treinta y tres modos de codificacion mediante prediccion intra.
[0029] En general, el HM describe que una trama o imagen de video puede dividirse en una secuencia de bloques arbolados o unidades de codificacion de maximo tamano (LCU), que incluyen muestras tanto de luma como de croma. Los datos sintacticos dentro de un flujo de bits pueden definir un tamano para la LCU, que es la maxima unidad de codificacion en lo que respecta al numero de pixeles. Un fragmento incluye un numero de bloques de arbol consecutivos en orden de codificacion. Una trama o imagen de video puede dividirse en uno o mas fragmentos. Cada bloque de arbol puede dividirse en unidades de codificacion (CU) de acuerdo con un arbol cuaternario. En general, una estructura de datos de arbol cuaternario incluye un nodo por CU, con un nodo raiz correspondiente al bloque arbolado. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU.
[0030] Cada nodo de la estructura de datos de arbol cuaternario puede proporcionar datos sintacticos para la CU correspondiente. Por ejemplo, un nodo en el arbol cuaternario puede incluir un indicador de division, que indica si la CU correspondiente al nodo esta dividida en varias sub-CU. Los elementos sintacticos para una CU pueden definirse de manera recursiva y pueden depender de si la CU esta dividida en varias sub-CU. Si una CU no esta dividida adicionalmente, se denomina CU hoja. En esta divulgacion, cuatro sub-CU de una CU hoja tambien se denominaran CU hojas incluso aunque no haya ninguna division explicita de la CU hoja original. Por ejemplo, si una CU con un tamano de 16x16 no se divide adicionalmente, las cuatro sub-CU de tamano 8x8 tambien se denominaran CU hojas aunque la CU de tamano 16x16 no se haya dividido nunca.
[0031] Una CU tiene un proposito similar a un macrobloque de la norma H.264, excepto que una CU no tiene una distincion de tamano. Por ejemplo, un bloque arbolado puede dividirse en cuatro nodos secundarios (tambien denominados sub-CU) y cada nodo secundario puede a su vez ser un nodo principal y dividirse en otros cuatro nodos secundarios. Un nodo secundario final, no dividido, denominado nodo hoja del arbol cuaternario, comprende un nodo de codificacion, tambien denominado CU hoja. Los datos sintacticos asociados a un flujo de bits codificado pueden definir un numero maximo de veces en que puede dividirse un bloque arbolado, denominado profundidad de CU maxima, y tambien pueden definir un tamano minimo de los nodos de codificacion. Por consiguiente, un flujo de bits tambien puede definir una unidad de codificacion de tamano minimo (SCU). Esta divulgacion utiliza el termino "bloque" para referirse a cualquiera entre una CU, PU o TU, en el contexto de la HEVC, o a estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y sub-bloques de los mismos en la norma H.264/AVC).
[0032] Una CU incluye un nodo de codificacion y unidades de prediccion (PU) y unidades de transformada (TU) asociadas al nodo de codificacion. Un tamano de la CU corresponde a un tamano del nodo de codificacion y debe ser de forma cuadrada. El tamano de la CU puede variar desde 8x8 pixeles hasta el tamano del bloque de arbol, con un maximo de 64x64 pixeles o mas. Cada CU puede contener una o mas PU y una o mas TU. Los datos sintacticos asociados a una CU pueden describir, por ejemplo, la division de la CU en una o mas PU. Los modos de division pueden diferir dependiendo de si la CU esta codificada en modo de salto o directo, codificada en modo de prediccion intra o codificada en modo de prediccion inter. Las PU pueden dividirse para tener forma no cuadrada. Los datos sintacticos asociados a una CU tambien pueden describir, por ejemplo, la division de la CU en una o mas TU de acuerdo con un arbol cuaternario. Una TU puede tener forma cuadrada o no cuadrada (por ejemplo, rectangular).
[0033] La norma HEVC soporta transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamano de las TU se basa tipicamente en el tamano de las PU dentro de una CU definida dada para una LCU particionada, aunque puede que no sea siempre asi. Las TU son tipicamente del mismo tamano o de un tamano mas pequeno que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades mas pequenas mediante una estructura de arbol cuaternario conocida como arbol cuaternario residual (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencia de pixel asociados a las TU pueden transformarse para generar coeficientes de transformacion, que pueden cuantificarse.
[0034] Una CU hoja puede incluir una o mas unidades de prediccion (PU). En general, una PU representa una zona espacial correspondiente a la totalidad, o a una parte, de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Ademas, una PU incluye datos relacionados con la prediccion. Por ejemplo, cuando la PU esta codificada en modo intra, pueden incluirse datos para la PU en un arbol cuaternario residual (RQT), que pueden incluir datos que describen un modo de prediccion intra para una TU correspondiente a la PU. Como otro ejemplo, cuando la PU esta codificada en modo inter, la PU puede incluir datos que definen uno o mas vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolucion para el vector de movimiento (por ejemplo, precision de pixeles de un cuarto o precision de pixeles de un octavo), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imagenes de referencia (por ejemplo, la Lista 0 o la Lista 1) para el vector de movimiento.
[0035] Una CU hoja que tiene una o mas PU tambien puede incluir una o mas unidades de transformada (TU). Las unidades de transformada pueden especificarse usando un RQT (tambien denominado estructura de arbol cuaternario de TU), como se ha expuesto anteriormente. Por ejemplo, un indicador de division puede indicar si una CU hoja esta dividida en cuatro unidades de transformada. A continuacion, cada unidad de transformada puede dividirse adicionalmente en sub-TU adicionales. Cuando una TU no se divide adicionalmente, puede denominarse una TU hoja. En general, en lo que respecta a la intra-codificacion, todas las TU hojas que pertenecen a una CU hoja comparten el misma modo de prediccion intra. Es decir, el mismo modo de prediccion intra se aplica en general para calcular valores predichos para todas las TU de una CU hoja. En lo que respecta a la intra-codificacion, un codificador de video puede calcular un valor residual para cada TU hoja usando el modo de prediccion intra, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no esta necesariamente limitada al tamano de una PU. De este modo, las TU pueden ser mayores o menores que una PU. En lo que respecta a la intra-codificacion, una PU puede estar co-situada con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamano maximo de una TU hoja puede corresponder al tamano de la CU hoja correspondiente.
[0036] Ademas, las TU de las CU hojas tambien pueden asociarse a las respectivas estructuras de datos de arbol cuaternario, denominadas arboles cuaternarios residuales (RQT). Es decir, una CU hoja puede incluir un arbol cuaternario que indica como la CU hoja esta dividida en las TU. El nodo raiz de un arbol cuaternario de TU corresponde en general a una CU hoja, mientras que el nodo raiz de un arbol cuaternario de CU corresponde en general a un bloque arbolado (o LCU). Las TU del RQT que no estan divididas se denominan TU hojas. En general, esta divulgacion usa los terminos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique lo contrario.
[0037] Una secuencia de video incluye tipicamente una serie de tramas o imagenes de video. Un grupo de imagenes (GOP) comprende, en general, una serie de una o mas de las imagenes de video. Un GOP puede incluir datos sintacticos en una cabecera de GOP, en una cabecera de una o mas de las imagenes, o en otras ubicaciones, que describen un numero de imagenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintacticos de fragmento que describen un modo de codificacion para el fragmento respectivo. El codificador 20 de video actua tipicamente sobre bloques de video dentro de fragmentos de video individuales con el fin de codificar los datos de video. Un bloque de video puede corresponder a un nodo de codificacion de una CU. Los bloques de video pueden tener tamanos fijos o variables y pueden diferir en tamano de acuerdo con una norma de codificacion especificada.
[0038] Como ejemplo, el HM presta soporte a la prediccion en diversos tamanos de PU. Si se supone que el tamano de una CU particular es 2Nx2N, el HM admite prediccion intra en tamanos de PU de 2Nx2N o NxN e prediccion inter en tamanos de PU simetricas de 2Nx2N, 2NxN, Nx2N o NxN. El HM tambien admite la division asimetrica para prediccion inter en tamanos de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la division asimetrica, una direccion de una CU no esta dividida, mientras que la otra direccion esta dividida en un 25 % y un 75 %. La parte de la CU correspondiente a la division del 25 % esta indicada por una "n" seguida por una indicacion de "arriba", "abajo", "izquierda" o "derecha". Asf pues, por ejemplo, "2NxnU" se refiere a una CU 2Nx2N que esta dividida horizontalmente y tiene una PU 2Nx0,5N encima y una Pu 2nx1 ,5N debajo.
[0039] En esta divulgacion, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de p^xeles de un bloque de vfdeo en terminos de dimensiones verticales y horizontales, por ejemplo, 16x16 pfxeles o 16 por 16 pfxeles. En general, un bloque de 16x16 tendra 16 pfxeles en una direccion vertical (y = 16) y 16 pfxeles en una direccion horizontal (x = 16). Asimismo, un bloque de NxN tiene, en general, N pfxeles en una direccion vertical y N pfxeles en una direccion horizontal, donde N representa un valor entero no negativo. Los pfxeles de un bloque se pueden disponer en filas y columnas. Ademas, no es necesario que los bloques tengan necesariamente el mismo numero de pfxeles en la direccion horizontal y en la direccion vertical. Por ejemplo, los bloques pueden comprender NxM pfxeles, donde M no es necesariamente igual a N.
[0040] Tras la codificacion de prediccion intra o prediccion inter mediante las PU de una CU, el codificador de vfdeo 20 puede calcular los datos residuales para las TU de la CU. Las PU pueden comprender datos sintacticos que describen un procedimiento o modo de generacion de datos de pfxeles predictivos en el dominio espacial (tambien denominado el dominio de pfxeles) y las TU pueden comprender coeficientes en el dominio de transformada, tras la aplicacion de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada entera, una transformada de ondfculas o una transformada conceptualmente similar, a los datos de vfdeo residuales. Los datos residuales pueden corresponder a diferencias de pfxeles entre pfxeles de la imagen no codificada y los valores de prediccion correspondientes a las PU. El codificador de vfdeo 20 puede formar las TU incluyendo los datos residuales para la CU y, a continuacion, transformar las TU para generar coeficientes de transformada para la CU.
[0041] Tras cualquier transformada para generar coeficientes de transformada, el codificador de vfdeo 20 puede realizar la cuantificacion de los coeficientes de transformada. La cuantificacion se refiere, en general, a un proceso en el que los coeficientes de transformacion se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresion adicional. El proceso de cuantificacion 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 cuantificacion, donde n es mayor que m.
[0042] Despues de la cuantificacion, el codificador de vfdeo puede recorrer los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. El recorrido puede estar disenado para colocar los coeficientes de energfa mas alta (y por lo tanto de menor frecuencia) en la parte frontal de la matriz y para colocar los coeficientes de energfa mas baja (y por lo tanto de mayor frecuencia) en la parte posterior de la matriz. En algunos ejemplos, el codificador 20 de vfdeo puede utilizar un orden de escaneo predefinido para examinar los coeficientes de transformacion cuantificados para producir un vector en serie que se pueda someter a codificacion por entropfa. En otros ejemplos, el codificador 20 de vfdeo puede realizar un escaneo adaptativo. Despues de recorrer los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vfdeo 20 puede realizar la codificacion por entropfa del vector unidimensional, por ejemplo, de acuerdo con la codificacion de longitud variable adaptable al contexto (CAVLC), la codificacion aritmetica binaria adaptable al contexto (CABAC), la codificacion aritmetica binaria adaptable al contexto basada en la sintaxis (SBAC), la codificacion por entropfa por division de intervalos de probabilidad (PIPE) o con otra metodologfa de codificacion por entropfa. El codificador 20 de vfdeo tambien puede realizar la codificacion por entropfa de los elementos sintacticos asociados a los datos de vfdeo codificados, para su uso por el descodificador de vfdeo 30 en la descodificacion de los datos de vfdeo.
[0043] Para realizar la CABAC, el codificador de vfdeo 20 puede asignar un contexto dentro de un modelo contextual a un sfmbolo que se va a transmitir. El contexto se puede referir, por ejemplo, a si los valores contiguos del sfmbolo son distintos de cero o no. Para realizar la CAVLC, el codificador 20 de vfdeo puede seleccionar un codigo de longitud variable para un sfmbolo que se vaya a transmitir. Las palabras de codigo en la VLC se pueden construir de modo que los codigos relativamente mas cortos correspondan a sfmbolos mas probables, mientras que los codigos mas largos correspondan a sfmbolos 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 codigo de igual longitud para cada sfmbolo que se vaya a transmitir. La determinacion de la probabilidad se puede basar en un contexto asignado al sfmbolo.
[0044] Ademas, el codificador de vfdeo 20 puede enviar datos sintacticos, tales como datos sintacticos basandose en bloques, datos sintacticos basandose en tramas y datos sintacticos basandose en GOP, al descodificador de vfdeo 30, por ejemplo, en una cabecera de trama, una cabecera de bloque, una cabecera de fragmento o una cabecera de GOP. Los datos sintacticos de GOP pueden describir un cierto numero de tramas en el respectivo GOP, y los datos sintacticos de trama pueden indicar un modo de codificacion/prediccion utilizada para codificar la trama correspondiente.
[0045] El codificador de vfdeo 20 y el descodificador de vfdeo 30 pueden implementarse, cada uno, como cualquiera entre una amplia variedad de circuitos de codificadores o descodificadores adecuados, segun corresponda, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados especfficos de la aplicacion (ASIC), formaciones de puertas programables en el terreno (FPGA), circuitos de logica discreta, software, hardware, firmware o cualquier combinacion de los mismos. Tanto el codificador de video 20 como el descodificador de video 30 pueden estar incluidos en uno o mas codificadores o descodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/descodificador (codec) de video combinado. Un dispositivo que incluye el codificador de video 20 y/o el descodificador de video 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicacion inalambrica, tal como un telefono celular.
[0046] El codificador de video 20 y el descodificador de video 30 pueden configurarse para implementar una o mas de las tecnicas descritas en esta divulgacion. Como ejemplo, el codificador de video 20 puede configurarse para codificar una indicacion de si una actualizacion de conjunto de parametros puede ocurrir en una parte de un flujo de bits. El descodificador de video 30 puede configurarse para descodificar la indicacion para determinar si se puede producir una actualizacion de un conjunto de parametros almacenados sin realizar una comparacion de contenido entre el conjunto de parametros almacenados y un nuevo conjunto de parametros del mismo tipo con el mismo valor de identificacion. Cuando se produce una actualizacion del conjunto de parametros, el descodificador de video 30 almacena un conjunto de parametros actual con un valor de identificacion dado para reemplazar un conjunto de parametros anterior del mismo tipo y que tiene el mismo valor de identificacion. La parte del flujo de bits a la que se aplica la indicacion puede ser una secuencia de video codificada del flujo de bits o un GOP en la secuencia de video codificada del flujo de bits.
[0047] En un caso, la indicacion puede comprender un elemento sintactico, tal como un indicador, en el flujo de bits que indica si cualquier conjunto de parametros de cualquier tipo se puede actualizar en una parte de un flujo de bits. En otro caso, la indicacion puede comprender varios indicadores diferentes en el flujo de bits, cada uno de los cuales indica si un conjunto de parametros de un tipo particular puede actualizarse en la parte del flujo de bits. En cualquier caso, cuando un indicador indica que no se puede realizar una actualizacion del conjunto de parametros, el descodificador de video 30 puede almacenar y activar un unico conjunto de parametros de un tipo dado para la parte completa del flujo de bits. Al recibir un conjunto de parametros posterior del mismo tipo y tener el mismo valor de identificacion que el conjunto de parametros inicial, el descodificador de video 30 puede ignorar el conjunto de parametros posterior. A la inversa, cuando un indicador indica que puede producirse una actualizacion del conjunto de parametros, el descodificador de video 30 puede activar automaticamente un nuevo conjunto de parametros y desactivar un conjunto de parametros almacenado de un tipo determinado, o puede determinar si actualizar el parametro almacenado, por ejemplo, realizando una comparacion de contenido.
[0048] Como otro ejemplo, el codificador de video 20 puede estar configurado para codificar una indicacion de si realizar acceso aleatorio a partir de una unidad de acceso CRA particular en un flujo de bits requiere obtener conjuntos de parametros a partir de unidades de acceso anteriores. El descodificador de video 30 puede configurarse para descodificar la indicacion para determinar si los conjuntos de parametros incluidos en las unidades de acceso anteriores son necesarios para realizar un acceso aleatorio desde una imagen CRA particular. En algunos casos, la indicacion puede comprender un elemento sintactico, como un indicador, incluido en una carga util de unidad NAL incluida en una unidad de acceso para cada imagen CRA en el flujo de bits.
[0049] La unidad de acceso CRA se puede producir en cualquier punto dentro de una secuencia de video codificada y no limpiar la DPB, la cual proporciona mas opciones para el acceso aleatorio al flujo de bits sin la menor eficiencia de codificacion. En el caso de acceso aleatorio desde una imagen CRA, todas las imagenes que preceden a la imagen CRA en orden de salida o descodificacion no se descodificaran y no estaran disponibles para su uso como imagenes de referencia. Para descodificar la imagen CRA o cualquiera de las siguientes imagenes en orden de salida o descodificacion, un descodificador de video puede necesitar obtener uno o mas conjuntos de parametros incluidos en una unidad de acceso para una de las imagenes anteriores no disponibles, lo cual es una operacion pesada. De acuerdo con algunas de las tecnicas de esta divulgacion, cuando el indicador indica que no se necesitan conjuntos de parametros de unidades de acceso previas para el acceso aleatorio desde una imagen CRA particular, el descodificador de video 30 puede determinar realizar un acceso aleatorio desde esa imagen porque no se requiere ninguna operacion de busqueda. A la inversa, cuando el indicador indica que los conjuntos de parametros de las unidades de acceso anteriores son necesarios para el acceso aleatorio desde una imagen CRA particular, el descodificador de video 30 puede determinar que no se realice un acceso aleatorio desde esa imagen para evitar la operacion de busqueda. Aunque se describe principalmente con respecto a las imagenes CRA, las tecnicas se pueden usar de manera similar para otros tipos de imagenes RAP, incluidas las imagenes IDR y las imagenes de actualizacion de descodificacion gradual (GDR).
[0050] La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video 20 que puede implementar las tecnicas descritas en esta divulgacion. El codificador de video 20 puede realizar intra-codificacion e intercodificacion de bloques de video dentro de fragmentos de video. La intra-codificacion se basa en la prediccion espacial para reducir o eliminar la redundancia espacial en el video dentro de una trama o imagen de video dada. La intercodificacion se basa en la prediccion temporal para reducir o eliminar la redundancia temporal en el video dentro de tramas o imagenes adyacentes de una secuencia de video. El modo intra (modo I) puede referirse a cualquiera de varios modos de codificacion de base espacial. Los modos inter, tales como la prediccion unidireccional (modo P) o la biprediccion (modo B), pueden referirse a cualquiera de varios modos de codificacion de base temporal.
[0051] Como se muestra en la FIG. 2, el codificador de video 20 recibe un bloque de video actual dentro de una trama de video para ser codificada. En el ejemplo de la FIG. 2, el codificador de video 20 incluye una unidad de seleccion de modo 40, una memoria de imagenes de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificacion 54 y una unidad de codificacion por entropia 56. A su vez, la unidad de seleccion de modo 40 incluye una unidad de compensacion de movimiento 44, una unidad de estimacion de movimiento 42, una unidad de procesamiento de prediccion intra 46 y una unidad de division 48. Para la reconstruccion de bloques de video, el codificador de video 20 incluye tambien una unidad de cuantificacion inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62.
[0052] Durante el proceso de codificacion, el codificador de video 20 recibe una trama o un fragmento de video que va a codificarse. La trama o el fragmento pueden dividirse en multiples bloques de video. La unidad 42 de estimacion de movimiento y la unidad 44 de compensacion de movimiento llevan a cabo la codificacion de prediccion intra del bloque de video recibido con respecto a uno o mas bloques en una o mas tramas de referencia, para proporcionar la prediccion temporal. La unidad de procesamiento de prediccion intra 46, de forma alternativa, puede llevar a cabo la codificacion de prediccion intra del bloque de video recibido, con respecto a uno o mas bloques contiguos de la misma trama o fragmento que el bloque que va a codificarse, para proporcionar prediccion espacial. El codificador de video 20 puede llevar a cabo multiples pasadas de codificacion, por ejemplo, para seleccionar un modo de codificacion adecuada para cada bloque de datos de video.
[0053] Ademas, la unidad de division 48 puede dividir bloques de datos de video en sub-bloques, basandose en la evaluacion de los anteriores esquemas de division en las pasadas de codificacion anteriores. Por ejemplo, la unidad 48 de division puede dividir inicialmente una trama o un fragmento en varias LCU, y dividir cada una de las LCU en varias sub-CU, basandose en un analisis de velocidad-distorsion (por ejemplo, una optimizacion de velocidaddistorsion). La unidad de seleccion de modo 40 puede producir ademas una estructura de datos de arbol cuaternario, indicativa de la division de una LCU en las sub-CU. Las CU de nodos hoja del arbol cuaternario pueden incluir una o mas PU y una o mas TU.
[0054] La unidad de seleccion de modo 40 puede seleccionar uno de los modos de codificacion, intra o inter, por ejemplo, basandose en los resultados de errores, y proporciona el bloque intra-codificado o inter-codificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como una trama de referencia. La unidad de seleccion de modo 40 proporciona ademas elementos sintacticos, tales como vectores de movimiento, indicadores de modo intra, informacion de division y otra informacion sintactica de este tipo, a la unidad de codificacion por entropia 56.
[0055] La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con fines conceptuales. La estimacion del movimiento, realizada por la unidad 42 de estimacion del movimiento, es el proceso de generacion de vectores de movimiento, que estiman el movimiento de los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video dentro de una trama o imagen de video actual, con respecto a un bloque predictivo dentro de una trama de referencia (u otra unidad codificada), con respecto al bloque actual que se esta codificando dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se revela como estrechamente coincidente con el bloque que se va a codificar, en lo que respecta a la diferencia de pixeles, lo cual puede determinarse mediante la suma de diferencias absolutas (SAD), suma de las diferencias al cuadrado (SSD) u otras metricas de diferencia. En algunos ejemplos, el codificador de video 20 puede calcular valores para posiciones de pixel de subentero de imagenes de referencia almacenadas en la memoria de imagenes de referencia 64, que tambien puede denominarse memoria intermedia de imagenes descodificadas (DPB). Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de pixel, posiciones de un octavo de pixel u otras posiciones fraccionarias de pixel de la imagen de referencia. Por lo tanto, la unidad 42 de estimacion de movimiento puede realizar una busqueda de movimiento relativa a las posiciones de pixeles completas y las posiciones de pixeles fraccionarias, y generar un vector de movimiento con una precision de pixel fraccionaria.
[0056] La unidad de estimacion de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video en un fragmento inter-codificado, comparando la posicion de la PU con la posicion de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse de una primera lista (lista 0) de imagenes de referencia o una segunda lista (lista 1) de imagenes de referencia, cada una de las cuales identifica una o mas imagenes de referencia almacenadas en una memoria 64 de imagenes de referencia. La unidad 42 de estimacion del movimiento envia el vector de movimiento calculado a la unidad 56 de codificacion por entropia y a la unidad 44 de compensacion de movimiento.
[0057] La compensacion de movimiento, llevada a cabo por la unidad de compensacion de movimiento 44, puede implicar capturar o generar el bloque predictivo basandose en el vector de movimiento determinado por la unidad de estimacion de movimiento 42. De nuevo, la unidad 42 de estimacion de movimiento y la unidad 44 de compensacion de movimiento pueden integrarse funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de video actual, la unidad 44 de compensacion de movimiento puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imagenes de referencia. El sumador 50 forma un bloque de video residual restando los valores de pixel del bloque predictivo a los valores de pixel del bloque de video actual que se esta codificando, generando valores de diferencias de pixel, como se analiza posteriormente. En general, la unidad de estimacion de movimiento 42 lleva a cabo la estimacion de movimiento con respecto a los componentes de luma, y la unidad de compensacion de movimiento 44 utiliza los vectores de movimiento calculados basandose en los componentes de luma, tanto para los componentes de croma como para los componentes de luma. La unidad de seleccion de modo 40 tambien puede generar elementos sintacticos asociados a los bloques de video y el fragmento de video para su uso por el descodificador de video 30 al descodificar los bloques de video del fragmento de video.
[0058] La unidad de procesamiento de prediccion intra 46 puede realizar prediccion intra de un bloque actual, de forma alternativa a la prediccion inter llevada a cabo por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de procesamiento de prediccion intra 46 puede determinar un modo de prediccion intra que se vaya a usar para codificar un bloque actual. En algunos ejemplos, la unidad de procesamiento de prediccion intra 46 puede codificar un bloque actual usando diversos modos de prediccion intra, por ejemplo, durante diferentes pases de codificacion, y la unidad de procesamiento de prediccion intra 46 (o la unidad de seleccion de modo 40, en algunos ejemplos) puede seleccionar un modo adecuado de prediccion intra para su uso a partir de los modos probados.
[0059] Por ejemplo, la unidad de procesamiento de prediccion intra 46 puede calcular valores de distorsion de velocidad usando un analisis de distorsion de velocidad para las diversos modos de prediccion intra probados, y seleccionar el modo de prediccion intra que tenga las mejores caracteristicas de distorsion de velocidad entre los modos probados. El analisis de distorsion de velocidad determina en general una magnitud de distorsion (o de errores) entre un bloque codificado y un bloque original, no codificado, que se codifico para generar el bloque codificado, asi como una velocidad binaria (es decir, un numero de bits) usada para generar el bloque codificado. La unidad de procesamiento de prediccion intra 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar que modo de prediccion intra presenta el mejor valor de distorsion de velocidad para el bloque.
[0060] Despues de seleccionar un modo de prediccion intra para un bloque, la unidad de procesamiento de prediccion intra 46 puede proporcionar informacion, indicativa del modo de prediccion intra seleccionado para el bloque, a la unidad de codificacion por entropia 56. La unidad 56 de codificacion por entropia puede codificar la informacion que indica el modo de prediccion intra seleccionada. El codificador de video 20 puede incluir datos de configuracion en el flujo de bits transmitido, que pueden incluir una pluralidad de tablas de indices de modos de prediccion intra y una pluralidad de tablas de indices de modos de prediccion intra modificadas (tambien denominadas tablas de correlacion de palabras de codigo), definiciones de contextos de codificacion para diversos bloques e indicaciones de un modo de prediccion intra mas probable, una tabla de indices de modos de prediccion intra y una tabla de indices de modos de prediccion intra modificadas para su uso para cada uno de los contextos.
[0061] El codificador de video 20 forma un bloque de video residual restando los datos de prediccion, de la unidad de seleccion de modo 40, del bloque de video original que esta codificado. El sumador 50 representa el componente o los componentes que realizan esta operacion de resta. La unidad 52 de procesamiento de transformacion aplica una transformada, tal como una transformada discreta de coseno (DCT) o una transformada conceptualmente similar, al bloque residual, generando un bloque de video que comprende valores residuales de coeficientes de transformacion. La unidad 52 de procesamiento de transformadas puede llevar a cabo otras transformadas que son conceptualmente similares a la DCT. Tambien podrian usarse transformadas de ondiculas, transformadas de numeros enteros, transformadas de subbandas u otros tipos de transformadas. En cualquier caso, la unidad 52 de procesamiento de transformacion aplica la transformada al bloque residual, generando un bloque de coeficientes de transformacion residuales. La transformada puede convertir la informacion residual, desde un dominio de valor de pixel a un dominio de transformada, tal como un dominio de frecuencia. La unidad 52 de procesamiento de transformacion puede enviar los coeficientes de transformacion resultantes a la unidad 54 de cuantificacion. La unidad 54 de cuantificacion cuantifica los coeficientes de transformacion para reducir todavia mas la velocidad de transmision de bits. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantificacion se puede modificar ajustando un parametro de cuantificacion. En algunos ejemplos, la unidad 54 de cuantificacion puede realizar, a continuacion, una exploracion de la matriz que incluye los coeficientes de transformacion cuantificados. De forma alternativa, la unidad 56 de codificacion por entropia puede realizar la exploracion.
[0062] Tras la cuantificacion, la unidad de codificacion por entropia 56 codifica por entropia los coeficientes de transformada cuantificados. Por ejemplo, la unidad 56 de codificacion por entropia puede llevar a cabo la codificacion de longitud variable adaptativa segun el contexto (CAVLC), la codificacion aritmetica binaria adaptativa segun el contexto (CABAC), la codificacion aritmetica binaria adaptativa segun el contexto y basada en sintaxis (SBAC), la codificacion por entropia mediante la division en intervalos de probabilidades (PIPE) u otra tecnica de codificacion por entropia. En el caso de la codificacion por entropia basada en el contexto, el contexto puede basarse en bloques contiguos. Tras la codificacion por entropia realizada por la unidad 56 de codificacion por entropia, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, el descodificador de video 30) o archivarse para su posterior transmision o recuperacion.
[0063] La unidad de cuantificacion inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican la cuantificacion inversa y la transformacion inversa, respectivamente, para reconstruir el bloque residual en el dominio del pixel, por ejemplo, para su posterior uso como bloque de referencia. La unidad 44 de compensacion de movimiento puede calcular un bloque de referencia anadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria 64 de imagenes de referencia. La unidad 44 de compensacion del movimiento tambien puede aplicar uno o mas filtros de interpolacion al bloque residual reconstruido para calcular valores fraccionarios de pixel para su uso en la estimacion de movimiento. El sumador 62 anade el bloque residual reconstruido al bloque de prediccion compensado por movimiento, generado por la unidad 44 de compensacion de movimiento, para generar un bloque de video reconstruido para su almacenamiento en la memoria 64 de imagenes de referencia.
[0064] El codificador de video 20 de la FIG. 2 representa un ejemplo de un codificador de video configurado para implementar una o mas de las tecnicas descritas en esta divulgacion. En un ejemplo de las tecnicas, el codificador de video 20 puede configurarse para codificar una indicacion de si una actualizacion de conjunto de parametros puede ocurrir en una parte de un flujo de bits. El codificador de video 20 puede generar la indicacion para notificar a un descodificador de video si se puede producir una actualizacion de un conjunto de parametros almacenados. De esta manera, basandose en la indicacion, el descodificador de video primero determina si se permite una actualizacion del conjunto de parametros en la parte del flujo de bits antes de determinar si se debe realizar una actualizacion, por ejemplo, realizando una comparacion de contenido entre un conjunto de parametros activos almacenados y un nuevo conjunto de parametros del mismo tipo con el mismo valor de identificacion.
[0065] En algunos casos, la indicacion puede comprender una unica indicacion de si cualquiera de los conjuntos de parametros para una parte de un flujo de bits, por ejemplo, una secuencia de video codificada o un GOP, se puede actualizar. En este caso, se puede utilizar la misma indicacion para todos los tipos de conjuntos de parametros, incluidos los conjuntos de parametros de video (VPS), los conjuntos de parametros de secuencia (SPS), los conjuntos de parametros de imagen (PPS) y/o los conjuntos de parametros adaptativos (APS). En otros casos, la indicacion puede comprender varias indicaciones diferentes, cada una de las cuales indica si un conjunto de parametros de un tipo particular puede actualizarse en la parte del flujo de bits. La indicacion puede ser una indicacion de nivel de flujo de bits, como un elemento sintactico incluido en la parte del flujo de bits. Por ejemplo, la indicacion puede ser un elemento sintactico, como un indicador, incluido en las unidades de la capa de abstraccion de red (NAL) de informacion de mejora suplementaria (SEI) en el flujo de bits. Como otro ejemplo, la indicacion puede ser un elemento sintactico, como un indicador, incluido en las unidades NAL de conjunto de parametros de secuencia (SPS) en el flujo de bits.
[0066] En otros ejemplos, la indicacion puede ser un requisito en una definicion de perfil. En ejemplos adicionales, la indicacion puede definirse como un parametro de tipo de medio e incluirse en el protocolo de descripcion de sesion (SDP) cuando el flujo de bits de video se utiliza en un entorno de transmision basado en el protocolo de transporte en tiempo real (RTP), como la transmision continua o multidifusion. usando RTP para el transporte de datos multimedia. En este caso, la indicacion puede usarse en una fase de negacion de sesion, tambien conocida como intercambio de capacidad. En aun otros ejemplos, la indicacion puede definirse como una propiedad de transmision continua incluida en una descripcion de presentacion de medios (MPD) en un entorno de transmision continua de protocolo de transferencia de hipertexto (HTTP), como DASH.
[0067] En otro ejemplo de las tecnicas, el codificador de video 20 puede estar configurado para codificar una indicacion para cada imagen CRA de si realizar el acceso aleatorio a un flujo de bits de la unidad de acceso CRA requiere obtener conjuntos de parametros a partir de unidades de acceso anteriores. El codificador de video 20 puede generar la indicacion para notificar a un descodificador de video si los conjuntos de parametros incluidos en las unidades de acceso anteriores son necesarios para realizar un acceso aleatorio desde una unidad de acceso CRA particular. De esta manera, basandose en la indicacion, el descodificador de video primero determina si se requiere una operacion de busqueda para la descodificacion de acceso aleatorio desde la unidad de acceso CRA particular, y puede evitar realizar una operacion de busqueda seleccionando una imagen RAP diferente desde la cual realizar el acceso aleatorio. La indicacion es especialmente util para la unidad de acceso CRA introducida en la norma HEVC porque las imagenes CRA se pueden colocar en cualquier punto dentro de una secuencia de video codificada y no limpiar la DPB, lo cual brinda mas opciones para el acceso aleatorio al flujo de bits sin una menor eficiencia de codificacion.
[0068] En algunos casos, la indicacion puede comprender un tipo particular de unidad NAL, por ejemplo, un tipo particular de SPS, SEI o unidad NAL delimitadora de unidad de acceso, incluido en una unidad de acceso para cada imagen CRA en un flujo de bits. En otros casos, la indicacion puede comprender un elemento sintactico, como un indicador, incluido en una carga util de unidad NAL, por ejemplo, una carga util de unidad NAL delimitadora de unidad de acceso, SPS, SEI, o una cabecera de unidad NAL incluida en una unidad de acceso para cada imagen CRA en el flujo de bits. En un ejemplo, la indicacion puede comprender un indicador incluido en una unidad SEI NAL en la unidad de acceso para la imagen CRA. Aunque se describe principalmente con respecto a las imagenes CRA, el codificador de video 20 puede codificar indicaciones similares para otros tipos de imagenes RAP, incluidas las imagenes IDR y las imagenes de actualizacion de descodificacion gradual (GDR).
[0069] La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de video 30, que descodifica una secuencia de video codificada. En el ejemplo de la FIG. 3, el descodificador de video 30 incluye una unidad de descodificacion por entropia 70, una unidad de compensacion de movimiento 72, una unidad de procesamiento de prediccion intra 74, una unidad de cuantificacion inversa 76, una unidad de procesamiento de transformada inversa 78, un sumador 80 y una memoria de imagenes de referencia 82. En algunos ejemplos, el descodificador de video 30 puede realizar una pasada de descodificacion, en general, reciproca a la pasada de codificacion descrita con respecto al codificador de video 20 (FIG. 2).
[0070] Durante el proceso de descodificacion, el descodificador de video 30 recibe un flujo de bits de video codificado, que representa los bloques de video de un fragmento de video codificado y elementos sintacticos asociados, desde el codificador de video 20. El descodificador de video 30 puede recibir el flujo de bits de video codificado desde una entidad 29 de red. La entidad de red 29 puede ser, por ejemplo, ser un servidor de transmision continua, un elemento de red compatible con medios (MANE), un editor/empalmador de video, un elemento de red intermedio u otro dispositivo configurado para implementar una o mas de las tecnicas descritas anteriormente. La entidad de red 29 puede incluir un medio externo configurado para realizar algunas de las tecnicas de esta divulgacion. Algunas de las tecnicas descritas en esta divulgacion pueden ser implementadas por la entidad de red 29 antes de que la entidad de red 29 transmita el flujo de bits de video codificado al descodificador de video 30. En algunos sistemas de descodificacion de video, la entidad 29 de red y el descodificador de video 30 pueden ser partes de dispositivos separados, mientras que en otros casos la funcion descrita con respecto a la entidad 29 de red puede ser realizada por el mismo dispositivo que comprende el descodificador de video 30.
[0071] La unidad de descodificacion por entropia 70 del descodificador de video 30 descodifica por entropia el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de prediccion intra y otros elementos sintacticos. La unidad de descodificacion por entropia 70 remite los vectores de movimiento y otros elementos sintacticos a la unidad de compensacion de movimiento 72. El descodificador de video 30 puede recibir los elementos sintacticos en el nivel de fragmento de video y/o el nivel de bloque de video.
[0072] Cuando el fragmento de video se codifica como un fragmento intra-codificado (I), la unidad de procesamiento de prediccion intra 74 puede generar datos de prediccion para un bloque de video del fragmento de video actual, basandose en un modo de prediccion intra senalado, y datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de video se codifica como un fragmento inter-codificado (es decir, B o P), la unidad de compensacion de movimiento 72 genera bloques predictivos para un bloque de video del fragmento de video actual basandose en los vectores de movimiento y en otros elementos sintacticos recibidos desde la unidad de descodificacion por entropia 70. Los bloques predictivos se pueden producir a partir de una de las imagenes de referencia dentro de una de las listas de imagenes de referencia. El descodificador de video 30 puede construir las listas de tramas de referencia, Lista 0 y Lista 1, basandose en las imagenes de referencia almacenadas en la memoria de tramas de referencia 82, que puede denominarse una memoria intermedia de imagenes descodificadas (DPB).
[0073] La unidad de compensacion de movimiento 72 determina la informacion de prediccion para un bloque de video del fragmento de video actual, analizando los vectores de movimiento y otros elementos sintacticos, y usa la informacion de prediccion para producir los bloques predictivos del bloque de video actual que se esta descodificando. Por ejemplo, la unidad de compensacion de movimiento 72 usa algunos de los elementos sintacticos recibidos para determinar un modo de prediccion (por ejemplo, intra o prediccion inter), usado para codificar los bloques de video del fragmento de video, un tipo de fragmento de prediccion inter (por ejemplo, fragmento B o fragmento P), informacion de construccion para una o mas de las listas de imagenes de referencia del fragmento, vectores de movimiento para cada bloque de video inter-codificado del fragmento, el estado de prediccion inter para cada bloque de video intercodificado del fragmento y otra informacion, para descodificar los bloques de video en el fragmento de video actual.
[0074] La unidad de compensacion de movimiento 72 tambien puede realizar la interpolacion basandose en filtros de interpolacion. La unidad 72 de compensacion de movimiento puede usar filtros de interpolacion como los usados por el codificador de video 20 durante la codificacion de los bloques de video, para calcular valores interpolados para pixeles fraccionarios de los bloques de referencia. En este caso, la unidad 72 de compensacion de movimiento puede determinar los filtros de interpolacion usados por el codificador de video 20 a partir de los elementos sintacticos recibidos y usar los filtros de interpolacion para generar bloques predictivos.
[0075] La unidad de cuantificacion inversa 76 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformada cuantificados, proporcionados en el flujo de bits y descodificados por la unidad de descodificacion por entropia 70. El proceso de cuantificacion inversa puede incluir el uso de un parametro de cuantificacion QPy, calculado por el descodificador de video 30 para cada bloque de video en el fragmento de video para determinar un grado de cuantificacion y, asimismo, un grado de cuantificacion inversa que deberia aplicarse. La unidad de procesamiento de transformada inversa 78 aplica una transformada inversa, por ejemplo una DCT inversa, una transformada inversa de enteros o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada, con el fin de generar bloques residuales en el dominio de pixeles.
[0076] Despues de que la unidad de compensacion de movimiento 72 genera el bloque predictivo para el bloque de video actual, basandose en los vectores de movimiento y otros elementos sintacticos, el descodificador de video 30 forma un bloque de video descodificado sumando los bloques residuales procedentes de la unidad de transformacion inversa 78 a los correspondientes bloques predictivos generados por la unidad de compensacion de movimiento 72. El sumador 80 representa el componente o los componentes que realizan esta operacion de suma. Si se desea, tambien se puede aplicar un filtro de eliminacion de bloques para filtrar los bloques descodificados con el fin de eliminar distorsiones de efecto pixelado. Tambien se pueden usar otros filtros de bucle (en el bucle de codificacion o bien despues del bucle de codificacion) para suavizar las transiciones de pixeles o mejorar de otro modo la calidad del video. Los bloques de video descodificados de una trama o imagen determinada se almacenan a continuacion en la memoria 82 de imagenes de referencia, que almacena imagenes de referencia usadas para una compensacion de movimiento posterior. La memoria de tramas de referencia 82 almacena tambien video descodificado para su presentacion posterior en un dispositivo de visualizacion, tal como el dispositivo de visualizacion 32 de la FIG. 1.
[0077] El descodificador de video 30 de la FIG. 3 representa un ejemplo de un descodificador de video configurado para implementar una o mas de las tecnicas descritas en esta divulgacion. En un ejemplo de las tecnicas, el descodificador de video 30 puede configurarse para descodificar una indicacion de si una actualizacion del conjunto de parametros puede ocurrir en una parte de un flujo de bits. Cuando la indicacion indica que una actualizacion del conjunto de parametros no puede ocurrir en una parte de un flujo de bits, el descodificador de video 30 activa un conjunto de parametros inicial de un tipo dado para la parte completa del flujo de bits. En este caso, al recibir un conjunto de parametros posterior del mismo tipo y tener el mismo valor de identificacion que el conjunto de parametros inicial, el descodificador de video 30 no necesita determinar si actualizar el conjunto de parametros inicial para la secuencia de video codificada y puede ignorar el conjunto de parametros posteriores.
[0078] El HEVC HM incluye el concepto de conjuntos de parametros. Un conjunto de parametros es una estructura sintactica que incluye elementos sintacticos configurados para indicar informacion que permite a un descodificador de video reconstruir video codificado. Los elementos sintacticos pueden incluirse en un tipo particular de conjunto de parametros basado en la informacion indicada por los elementos sintacticos y la frecuencia con la que se espera que los elementos sintacticos cambien en el flujo de bits. Por ejemplo, un conjunto de parametros de video (VPS) incluye elementos sintacticos que describen las caracteristicas generales de las secuencias de video codificadas, incluidas las dependencias entre subcapas temporales. Un conjunto de parametros de secuencia (SPS) incluye elementos sintacticos que se espera que permanezcan sin cambios para las imagenes dentro de una secuencia de imagenes (por ejemplo, orden de imagenes, numero de imagenes de referencia y tamano de imagen). Un conjunto de parametros de imagen (PPS) incluye elementos sintacticos que pueden cambiar de imagen a imagen dentro de una secuencia (por ejemplo, modo de codificacion por entropia, parametros de cuantificacion y profundidad de bits). Un conjunto de parametros adaptativos (APS) incluye elementos sintacticos que se espera que cambien dentro de las imagenes de una secuencia (por ejemplo, tamano de bloque y filtrado de desbloqueo).
[0079] El concepto de conjunto de parametros desacopla la transmision de informacion que cambia poco frecuentemente de la transmision de datos de video codificados. En algunos ejemplos, los conjuntos de parametros pueden transmitirse "fuera de banda" (es decir, no transportarse junto con las unidades que contienen datos de video codificados). Puede ser deseable transmitir los conjuntos de parametros fuera de banda, ya que la transmision fuera de banda es tipicamente mas fiable que la transmision "dentro de banda" dentro del canal de datos. En el HEVC HM, cada VPS incluye un valor de identificacion (ID) del VPS, cada SPS incluye un ID de SPS y hace referencia a un VPS que utiliza un ID de VPS, y cada PPS incluye un ID de PPS y hace referencia a un SPS utilizando un ID de SPS. Ademas, cada cabecera de fragmento hace referencia a un PPS que utiliza un ID de PPS.
[0080] En un flujo de bits, cuando un conjunto de parametros de un tipo particular con un valor de ID de conjunto de parametros en particular tiene un contenido diferente que un conjunto de parametros anterior (en orden de flujo de bits o en orden de descodificacion) del mismo tipo con el mismo valor de ID, el tipo particular de conjunto de parametros con ese valor de ID particular puede actualizarse. Cuando se produce una actualizacion del conjunto de parametros, el descodificador de video 30 almacena el conjunto de parametros actual con el valor de ID dado para reemplazar el conjunto de parametros anterior del mismo tipo y que tiene el mismo valor de ID.
[0081] La actualizacion del conjunto de parametros puede ocurrir cuando se necesita un nuevo conjunto de parametros de un tipo particular, pero todos los posibles valores de ID se han utilizado. La actualizacion del conjunto de parametros tambien puede ocurrir en flujos de bits empalmados incluso cuando los espacios de valor de ID del conjunto de parametros no se utilizan completamente. El empalme del flujo de bits se refiere a la combinacion de dos o mas flujos de bits o partes de flujos de bits. Un primer flujo de bits puede ser anexado por un segundo flujo de bits, posiblemente con algunas modificaciones a uno o ambos flujos de bits para generar un flujo de bits empalmado. La primera imagen codificada en el segundo flujo de bits tambien se denomina punto de empalme. La imagen en el punto de empalme en el flujo de bits empalmado se origino a partir del segundo flujo de bits, mientras que la imagen inmediatamente anterior al punto de empalme en el flujo de bits empalmado se origino a partir del primer flujo de bits.
[0082] Los flujos de bits tipicamente utilizan unos pocos conjuntos de parametros de cada tipo, por ejemplo, unos pocos SPS y unos pocos PPS, y en ocasiones utilizan solo un conjunto de parametros de cada tipo. Ademas, cada uno de los flujos de bits tipicamente comienza con el valor de ID de conjunto de parametros mas pequeno 0 para cada uno de los diferentes tipos de conjuntos de parametros. De esta manera, si se empalman dos flujos de bits, es probable que tanto el punto de empalme como la imagen que precede inmediatamente a la imagen del punto de empalme se refieran al mismo valor de ID para un tipo particular de conjunto de parametros, por ejemplo, SPS con valor de ID 0, pero que los dos conjuntos de parametros incluyan contenido diferente. Por lo tanto, el conjunto de parametros al que hace referencia la imagen que precede al punto de empalme debe actualizarse con el conjunto de parametros del mismo tipo con el mismo valor de ID al que se hace referenda en la imagen del punto de empalme. En este caso, los conjuntos de parametros del flujo de bits empalmado no pueden transmitirse al comienzo del flujo de bits empalmado y, por lo tanto, no pueden transmitirse fuera de banda desde la secuencia de video codificada del flujo de bits.
[0083] Convencionalmente, con el fin de determinar si un conjunto de parametros actual de cualquier tipo con un valor de ID en particular debe ser activado para actualizar un parametro anterior establecido con el mismo valor de ID, un descodificador de video compara contenido del conjunto de parametros actual con el contenido del conjunto de parametros anterior para determinar si el contenido es diferente. Cuando el contenido del conjunto de parametros actual es diferente al conjunto de parametros anterior, el descodificador de video activa el conjunto de parametros actual para el flujo de bits y desactiva el conjunto de parametros anterior. El descodificador de video realiza esta comparacion de contenido cada vez que recibe un nuevo conjunto de parametros de un tipo particular que tiene un valor de ID particular que es el mismo que un conjunto de parametros recibidos anteriormente. Cuando los conjuntos de parametros se transmiten en banda, es decir, con una secuencia de video codificada del flujo de bits, el descodificador de video puede recibir transmisiones repetidas de los conjuntos de parametros para mejorar la resistencia al error. El descodificador de video luego realiza la comparacion de contenido para cada conjunto de parametros repetidos. Esta comparacion de contenido es innecesaria e impone una carga computacional al descodificador de video.
[0084] Las tecnicas descritas en esta divulgacion proporcionan un indicador configurado para indicar si una actualizacion del conjunto de parametros puede ocurrir en una parte de un flujo de bits (por ejemplo, una secuencia de video codificada o un GOP en la secuencia de video codificada). Cuando el indicador indica que la actualizacion del conjunto de parametros no puede ocurrir en la parte del flujo de bits, el descodificador de video 30 almacena y activa solo un primer conjunto de parametros con un valor de ID particular para la parte completa del flujo de bits. Ademas, cuando el indicador indica que no se puede realizar la actualizacion del conjunto de parametros, el descodificador de video 30 no realizara ninguna actualizacion del conjunto de parametros y, por lo tanto, no necesita comparar el contenido del primer conjunto de parametros con el contenido de un segundo conjunto de parametros del mismo tipo con el mismo valor de ID. De esta manera, el descodificador de video 30 puede funcionar como si el contenido del primer conjunto de parametros fuera identico al contenido incluido en cualquier otro conjunto de parametros del mismo tipo que tenga el mismo valor de ID.
[0085] Cuando el indicador indica que una actualizacion de conjunto de parametros puede ocurrir en la parte del flujo de bits, el descodificador de video 30 almacena y activa un primer conjunto de parametros con un valor de ID en particular, pero puede actualizar el primer conjunto de parametros almacenado usando un segundo conjunto de parametros del mismo tipo con el mismo valor de ID para reemplazar el primer conjunto de parametros almacenado. En algunos casos, el descodificador de video 30 puede activar automaticamente el segundo conjunto de parametros para la parte del flujo de bits, y desactivar el primer conjunto de parametros. En otros casos, el descodificador de video 30 puede comparar el contenido del primer conjunto de parametros con el contenido del segundo conjunto de parametros. Cuando el contenido del segundo conjunto de parametros es diferente al contenido del primer conjunto de parametros, el descodificador de video 30 activa el segundo conjunto de parametros para la parte del flujo de bits, y desactiva el primer conjunto de parametros.
[0086] La indicacion puede comprender un elemento sintactico de nivel de flujo de bits, tal como un indicador, incluido en el flujo de bits. Por ejemplo, la indicacion puede comprender un indicador incluido en una o mas unidades de capa de abstraccion de red (NAL) de informacion de mejora suplementaria (SEI) asociadas con una secuencia de video codificada en el flujo de bits. Como otro ejemplo, la indicacion puede comprender un indicador incluido en una o mas unidades NAL de conjunto de parametros de secuencia (SPS) para la secuencia de video codificada en el flujo de bits.
[0087] En un ejemplo, el indicador puede indicar si cualquier conjunto de parametros puede ser actualizado en la parte del flujo de bits. Por lo tanto, se puede usar un unico indicador para indicar el estado de actualizacion para diferentes tipos de conjuntos de parametros. En este caso, se puede usar el mismo indicador para todos los tipos de conjuntos de parametros, incluidos VPS, SPS, PPS y/o APS. Cuando el indicador es igual a 1, se puede actualizar un conjunto de parametros. Cuando el indicador es igual a 0, no se actualizara ningun conjunto de parametros y el descodificador de video 30 no realiza comparaciones de contenido entre los conjuntos de parametros del mismo tipo y con los mismos valores de ID de conjunto de parametros. Cuando el indicador es igual a 0, las comparaciones de contenido no son necesarias porque el descodificador de video 30 puede funcionar como si los conjuntos de parametros del mismo tipo y con los mismos valores de ID tuvieran el mismo contenido.
[0088] En otro ejemplo, el indicador puede indicar si un conjunto de parametros de un tipo particular puede ser actualizada en la parte del flujo de bits. En este caso, se puede usar un indicador diferente para cada uno de los diferentes tipos de conjuntos de parametros, incluidos VPS, SPS, PPS y APS. Por lo tanto, cada tipo de conjunto de parametros puede, en efecto, tener su propio indicador para indicar si se puede actualizar. Cuando el indicador es igual a 1, se puede actualizar un conjunto de parametros del tipo particular. Cuando el indicador es igual a 0, no se actualizara ningun conjunto de parametros del tipo particular y el descodificador de video 30 no realiza comparaciones de contenido entre los conjuntos de parametros del tipo particular y con los mismos valores de ID de conjunto de parametros. Cuando el indicador es igual a 0, las comparaciones de contenido no son necesarias porque el descodificador de video 30 puede funcionar como si los conjuntos de parametros del tipo particular y con los mismos valores de ID tuvieran el mismo contenido.
[0089] En un ejemplo adicional, el indicador puede indicar si dos o mas conjuntos de parametros de los diferentes tipos pueden ser actualizados en la parte del flujo de bits. En este caso, se puede usar un indicador para dos o mas de los diferentes tipos de conjuntos de parametros, por ejemplo, SPS y PPS, y otro indicador se puede usar para uno o mas de los diferentes tipos de conjuntos de parametros, por ejemplo, VPS. Por lo tanto, algunos tipos de conjuntos de parametros pueden compartir un indicador para indicar el estado de actualizacion conjunta, mientras que otros tipos de conjuntos de parametros pueden tener indicadores individuales para indicar el estado de actualizacion individual. Ademas, en algunos casos, la indicacion puede comprender una mascara de bits o una palabra de codigo que es un elemento sintactico unico con varios bits, donde cada bit corresponde al estado de actualizacion de uno o mas de los conjuntos de parametros, o una palabra de codigo tiene un valor particular para Indica diferentes combinaciones de los estados de actualizacion para los diferentes conjuntos de parametros.
[0090] En algunos casos, la indicacion de si una actualizacion del conjunto de parametros puede ocurrir en la parte del flujo de bits puede determinar como los conjuntos de parametros se transmiten al descodificador de video 30. Por ejemplo, cuando las actualizaciones de conjuntos de parametros pueden ocurrir en la parte del flujo de bits, los conjuntos de parametros pueden no ser transmitidos fuera de banda desde la secuencia de video codificada del flujo de bits porque las actualizaciones pueden ocurrir para diferentes partes del flujo de bits, por ejemplo, en el empalme de imagenes de puntos de un flujo de bits empalmado.
[0091] De acuerdo con las tecnicas, en un ejemplo, cuando el indicador indica que una actualizacion de conjunto de parametros no puede ocurrir en la parte del flujo de bits, el descodificador de video 30 puede recibir el primer conjunto de parametros en una transmision fuera de banda, es decir, una transmision separada de una secuencia de video codificada del flujo de bits. En este caso, dado que el primer conjunto de parametros es el unico conjunto de parametros activado para todo el flujo de bits, un codificador de video, como el codificador de video 20, puede codificar el primer conjunto de parametros fuera de banda, de manera que el primer conjunto de parametros sea independiente de los datos de secuencia de video codificada. En otro ejemplo, cuando el indicador indica que no se puede producir una actualizacion del conjunto de parametros en la parte del flujo de bits, el descodificador de video 30 puede recibir el primer conjunto de parametros en una transmision en banda, es decir, una transmision con una secuencia de video codificada del flujo de bits, sin comparar el contenido de cualquier transmision repetida del primer conjunto de parametros. En este caso, cuando un codificador de video, como el codificador de video 20, codifica transmisiones repetidas del primer conjunto de parametros para mejorar la resistencia a los errores, el descodificador de video 30 no realiza una comparacion de contenido para los conjuntos de parametros repetidos. Las comparaciones de contenido no son necesarias porque, de acuerdo con la indicacion, el descodificador de video 30 puede funcionar como si los conjuntos de parametros del mismo tipo y con los mismos valores de ID tuvieran el mismo contenido.
[0092] En algunos ejemplos, la indicacion puede ser un elemento sintactico, tal como un indicador, incluido en un flujo de bits, por ejemplo, en un VPS, SPS, PPS o APS. Como ejemplo, la indicacion puede ser un elemento sintactico incluido en una secuencia de video codificada. Como otro ejemplo, la indicacion puede ser un requisito en una definicion de perfil. En otros ejemplos, la indicacion puede definirse como un parametro de tipo de medio e incluirse en el protocolo de descripcion de sesion (SDP) cuando el flujo de bits de video se utiliza en un entorno de transmision basado en el protocolo de transporte en tiempo real (RTP), como la transmision continua o la multidifusion usando RTP para el transporte de datos multimedia. En este caso, la indicacion puede usarse en una fase de negacion de sesion, tambien conocida como intercambio de capacidades. En aun otros ejemplos, la indicacion puede definirse como una propiedad de transmision continua incluida en una descripcion de presentacion de medios (MPD) en un entorno de transmision continua de protocolo de transferencia de hipertexto (HTTP), como DASH.
[0093] En otro ejemplo de las tecnicas, el descodificador de video 30 pueden estar configurado para descodificar una indicacion para cada imagen CRA de si realizar el acceso aleatorio a un flujo de bits de la unidad de acceso CRA requiere obtener conjuntos de parametros a partir de unidades de acceso anteriores. La indicacion es especialmente util para las unidades de acceso CRA introducidas en la norma HEVC porque las imagenes CRA pueden colocarse en cualquier punto dentro de una secuencia de video codificada y no limpian la DPB, lo cual brinda mas opciones para el acceso aleatorio al flujo de bits sin una menor eficiencia de codificacion.
[0094] Cuando la indicacion indica que no se necesitan conjuntos de parametros a partir de unidades de acceso anteriores para el acceso aleatorio de una imagen CRA en particular, el descodificador de video 30 puede determinar para realizar acceso aleatorio a partir de esa imagen CRA con ninguna operacion obtener. Cuando la indicacion indica que se necesitan conjuntos de parametros de unidades de acceso anteriores para el acceso aleatorio desde una imagen CRA particular, el descodificador de video 30 puede determinar que no se realice un acceso aleatorio desde esa imagen para evitar la operacion de busqueda. En algunos casos, el descodificador de video 30 puede descodificar indicaciones para varias imagenes CRA diferentes dentro de una parte, por ejemplo, una secuencia de video codificada del flujo de bits para identificar una unidad de acceso desde la cual se puede realizar un acceso aleatorio sin realizar una operacion de busqueda de conjuntos de parametros. De esta manera, el descodificador de video 30 puede evitar realizar una operacion de busqueda seleccionando una imagen CRA diferente desde la cual realizar el acceso aleatorio.
[0095] El acceso aleatorio se refiere a una descodificacion de un flujo de bits de video a partir de una imagen codificada que no es la primera imagen codificada en el flujo de bits. El acceso aleatorio a un flujo de bits se necesita en muchas aplicaciones de video, como la radiodifusion y la transmision continua, por ejemplo, para que los usuarios alternen entre canales diferentes, para pasar a partes especificas del video, para empalmar diferentes flujos de bits o para cambiar a un flujo de bits diferente para adaptacion del flujo de la velocidad de transmision de bits, velocidad de tramas, resolucion espacial, etc. Esta caracteristica se habilita insertando imagenes de acceso aleatorio o puntos de acceso aleatorios en intervalos regulares, en el flujo de bits de video. Se puede utilizar una imagen de actualizacion instantanea del descodificador (IDR) para el acceso aleatorio. Sin embargo, dado que una imagen IDR comienza una secuencia de video codificada y siempre limpia la memoria intermedia de imagenes descodificadas (DPB), las imagenes que siguen a la imagen IDR en orden de descodificacion no pueden usar imagenes descodificadas antes que la imagen IDR como referencia. Por consiguiente, los flujos de bits que dependen de imagenes IDR para el acceso aleatorio pueden tener una eficiencia de codificacion significativamente menor.
[0096] Con el fin de mejorar la eficiencia de la codificacion, el concepto de imagenes de acceso aleatorio limpio (CRA) se introdujo en el HEVC HM. A diferencia de las imagenes IDR, las imagenes CRA se pueden colocar en cualquier punto dentro de una secuencia de video codificada y no limpian la DPB, lo cual brinda mas opciones para el acceso aleatorio al flujo de bits sin una menor eficiencia de codificacion. Debido a que una imagen CRA no limpia la DPB, las imagenes que siguen a la imagen CRA en orden de descodificacion pero que la preceden en orden de salida pueden usar imagenes descodificadas antes de la imagen CRA como referencia. Las imagenes que siguen a una imagen CRA en orden de descodificacion, pero que preceden a la imagen CRA en orden de salida, se denominan imagenes iniciales de la imagen CRA. Las imagenes principales de una imagen CRA se pueden descodificar correctamente si la descodificacion comienza desde una imagen IDR o CRA que precede a la imagen CRA actual. Sin embargo, las imagenes iniciales de una imagen CRA no se pueden descodificar correctamente cuando se produce un acceso aleatorio desde la imagen CRA actual. Las imagenes principales, por lo tanto, tipicamente se descartan de la DPB durante la descodificacion de acceso aleatorio. Para evitar la propagacion de errores por imagenes de referencia que pueden no estar disponibles dependiendo de donde comienza la descodificacion, todas las imagenes que siguen a una imagen CRA tanto en orden de descodificacion como en orden de salida pueden estar restringidas a no usar ninguna imagen que preceda a la imagen CRA en orden de descodificacion u orden de salida (lo cual incluye las imagenes iniciales) como referencia.
[0097] Las funciones de acceso aleatorio similares son soportadas en la norma H.264/AVC con un mensaje SEI de punto de recuperacion. Una implementacion de descodificador H.264/AVC puede o no soportar las funciones de mensaje SEI de punto de recuperacion. En HEVC, un flujo de bits que comienza con una imagen CRA se considera un flujo de bits conforme. Cuando un flujo de bits comienza con una imagen CRA, las imagenes iniciales de la imagen CRA pueden referirse a imagenes de referencia no disponibles y, por lo tanto, no pueden descodificarse. La norma HEVC especifica que no se emiten las imagenes iniciales de la imagen CRA inicial. Sin embargo, para el establecimiento de la conformidad del flujo de bits, la norma HEVC especifica un proceso de descodificacion para generar imagenes de referencia no disponibles para descodificar las imagenes principales sin salida. Las implementaciones de descodificador conformes no tienen que seguir ese proceso de descodificacion siempre que pueda generarse una salida identica en comparacion con cuando se realiza el proceso de descodificacion desde el comienzo de la secuencia de video codificada.
[0098] Ademas, un flujo de bits conforme en la norma HEVC puede no contener ninguna imagen IDR, y en consecuencia puede contener un subconjunto de una secuencia de video codificada o una secuencia de video codificada incompleta. En la norma HEVC, una secuencia de video codificada se define como una secuencia de unidades de acceso que incluye, en orden de descodificacion, una unidad de acceso IDR seguida de cero o mas unidades de acceso no IDR incluidas todas las unidades de acceso posteriores hasta, pero sin incluir, cualquier unidad de acceso IDR posterior. Las unidades de acceso incluidas en la secuencia de video codificada corresponden a imagenes de la secuencia de video. Cada una de las unidades de acceso incluye una o mas unidades de capa de abstraccion de red (NAL). La norma HEVC define las unidades NAL de capa de codificacion de video (VCL) y las unidades de NAL no VCL. Una unidad VCL NAL contiene un fragmento de datos de video para la imagen. Una unidad NAL no VCL contiene informacion distinta a un fragmento de datos de video. Por ejemplo, una unidad NAL no VCL puede contener datos delimitadores o un conjunto de parametros, como un VPS, SPS o PPS. Otro ejemplo de una unidad NAL no VCL es una unidad SEI NAL que puede incluir mensajes de temporizacion de imagen utilizados por un descodificador de video al descodificar el flujo de bits.
[0099] Cuando descodificador de video 30 realiza acceso aleatorio de una imagen CRA incluida en un flujo de bits, no se descodifican todas las imagenes anteriores a la imagen CRA en orden de salida o descodificacion y no estan disponibles para su uso como imagenes de referencia. En este caso, para descodificar la imagen CRA o cualquiera de las siguientes imagenes en orden de salida o descodificacion, el descodificador de video 30 puede necesitar obtener uno o mas conjuntos de parametros incluidos en una unidad de acceso para una de las imagenes anteriores no disponibles, lo cual es una operacion pesada.
[0100] Como un ejemplo, un SPS se pueden incluir en una unidad de acceso para una primera imagen CRA del flujo de bits y ninguna SPS se puede incluir en una segunda imagen CRA posterior del flujo de bits. En este caso, si el acceso aleatorio se realiza desde la segunda imagen CRA y todas las imageries anteriores, incluida la primera imagen CRA, no estan disponibles, el SPS tampoco esta disponible para descodificar la segunda imagen CRA y cualquier imagen posterior en el flujo de bits. Para realizar un acceso aleatorio desde la segunda imagen de CRA, el descodificador de video 30 necesita obtener el SPS de la primera imagen de CRA no disponible.
[0101] Convencionalmente, para evitar la operacion de busqueda, un descodificador de video puede realizar una comprobacion a traves de un flujo de bits recibidos para determinar que conjuntos de parametros se utilizan para diferentes partes del flujo de bits y si el acceso aleatorio esta disponible a partir de imagenes RAP en el flujo de bits. Tanto la operacion de busqueda como la operacion de comprobacion del flujo de bits pueden requerir un uso intensivo del procesador, ser operaciones pesadas para el descodificador de video y seria deseable evitar estas operaciones.
[0102] Las tecnicas de la presente divulgacion proporcionan una indicacion de si realizar acceso aleatorio a partir de una unidad de acceso CRA particular en un flujo de bits requiere obtener conjuntos de parametros a partir de unidades de acceso anteriores. Cuando no se necesitan conjuntos de parametros previos para el acceso aleatorio desde una unidad de acceso CRA particular, el descodificador de video 30 puede realizar un acceso aleatorio desde esa unidad de acceso CRA particular sin una operacion de busqueda. A la inversa, cuando se necesitan conjuntos de parametros anteriores para el acceso aleatorio desde la unidad de acceso CRA particular, el descodificador de video 30 puede no realizar el acceso aleatorio desde esa unidad de acceso CRA particular para evitar la operacion de busqueda. En algunos ejemplos, cuando se necesitan conjuntos de parametros anteriores para el acceso aleatorio desde la unidad de acceso CRA particular, el descodificador de video 30 puede realizar un acceso aleatorio desde esa unidad de acceso CRA despues de obtener los conjuntos de parametros de las unidades de acceso anteriores.
[0103] De acuerdo con las tecnicas descritas en esta divulgacion, una indicacion puede incluirse en el flujo de bits para cada unidad de acceso CRA para indicar si los conjuntos de parametros incluidos en unidades de acceso anteriores en el orden de salida o descodificacion son necesarios para descodificar la unidad de acceso CRA y todas las unidades de acceso posteriores en orden de salida o descodificacion. Si no se necesitan conjuntos de parametros anteriores para el acceso aleatorio desde una unidad de acceso CRA, el descodificador de video 30 puede realizar un acceso aleatorio al flujo de bits desde esa unidad de acceso sin depender de ninguna unidad NAL de conjunto de parametros incluida en las unidades de acceso anteriores. De esta manera, todas las unidades NAL anteriores pueden simplemente omitirse o ignorarse.
[0104] Como en el ejemplo expuesto anteriormente, una unidad SPS NAL puede ser incluido en una unidad de acceso para una primera imagen CRA de la secuencia de video y ninguna unidad SPS NAL pueden incluirse en una segunda imagen CRA posterior de la secuencia de video. De acuerdo con las tecnicas descritas en esta divulgacion, se puede incluir una indicacion en la unidad de acceso para la primera imagen de CRA para indicar que no se necesita ningun conjunto de parametros de una unidad de acceso anterior en orden de salida o descodificacion para descodificar la primera imagen de CRA o cualquier otra imagen posterior en orden de salida o descodificacion. Ademas, se puede incluir una indicacion en la unidad de acceso para que la segunda imagen CRA indique que se necesita un conjunto de parametros de una unidad de acceso anterior en orden de salida o descodificacion (es decir, el SPS en la unidad de acceso para la primera imagen CRA) para descodificar la segunda imagen CRA o cualquier imagen posterior en orden de salida o descodificacion. En este ejemplo, basandose en las indicaciones, el descodificador de video 30 puede determinar realizar un acceso aleatorio desde la primera imagen CRA, pero no realizar un acceso aleatorio desde la segunda imagen CRA para evitar la operacion de busqueda.
[0105] Aunque se describen principalmente con respecto a las imagenes CRA, las tecnicas de esta divulgacion se pueden usar de manera similar para otros tipos de imagenes RAP, incluidas las imagenes IDR y las imagenes de actualizacion de descodificacion gradual (GDR). En algunos casos, la indicacion puede comprender un tipo particular de unidad de capa de abstraccion de red (NAL) incluida en una unidad de acceso para cada imagen IDR o CRA en una secuencia de video codificada. En otros casos, la indicacion puede comprender un elemento sintactico, como un indicador, incluido en una carga util de unidad NAL incluida en una unidad de acceso para cada imagen IDR o CRA en la secuencia de video codificada. En un ejemplo, la indicacion puede comprender un indicador incluido en una unidad NAL de informacion de mejora suplementaria (SEI) en la unidad de acceso para la imagen CRA.
[0106] Ademas, por ejemplo, la indicacion de una imagen dada puede ser senalizada utilizando un tipo particular de SPS con un tipo de unidad NAL distinto. En este ejemplo, puede requerirse que el tipo particular de SPS se incluya en la primera unidad NAL en la unidad de acceso para la imagen, o la primera unidad NAL despues de una unidad NAL delimitadora de la unidad de acceso (si esta presente). En otro ejemplo, la indicacion de una imagen dada puede ser senalizada utilizando un tipo particular de delimitador de unidad de acceso con un tipo de unidad NAL distinto o un indicador incluido en una carga util de una unidad NAL delimitadora de unidad de acceso en la unidad de acceso para la imagen. En un ejemplo adicional, la indicacion de una imagen dada puede ser senalizada utilizando un indicador incluido en la cabecera de una unidad NAL en la unidad de acceso para la imagen. Ademas, la indicacion de una imagen dada puede ser senalizada utilizando un tipo particular de mensaje SEI o un indicador en un mensaje SEI. En el HEVC HM, el mensaje SEI puede incluirse en una unidad SEI NAL en la unidad de acceso para la imagen.
[0107] La FIG.4 es un diagrama conceptual que ilustra una secuencia de video 100 codificada de acuerdo con tecnicas de codificacion de video predictiva. Como se ilustra en la FIG. 4, la secuencia de video 100 incluye las imagenes PiciPici0. Las imageries Pici-Pici0 estan ordenadas y numeradas secuencialmente de acuerdo con el orden en el que se muestran. Como se describe en mas detalle a continuacion, el orden de salida o visualizacion no se corresponde necesariamente con el orden de descodificacion. Como se ilustra en la FIG. 4, la secuencia de video 100 incluye GOPi y GOP2 , donde las imagenes Pici-Pic5 se incluyen en GOPi y las imagenes Pic6-Pici0 se incluyen en GOP 2. La FIG.
4 ilustra ademas la Pic5 como dividida en slicei y slice2 , donde cada uno de los fragmentos i y 2 incluye LCU consecutivas de acuerdo con un escaneo de raster de izquierda a derecha de arriba a abajo. Ademas, la ultima LCU en Pic5 se ilustra como una division adicional en varias CU de acuerdo con un arbol cuaternario. Aunque no se muestran, las otras imagenes ilustradas en la FIG. 4 se puede dividir en una o mas partes de una manera similar.
[0108] Como se describe en mas detalle a continuacion, el HEVC HM incluye dos tipos de esquemas de fragmento de division, a saber fragmentos regulares y fragmentos de entropia. Adicionalmente, ademas de esquemas de division de fragmentos, el HM tambien incluye los esquemas de division de procesamiento en paralelo de frente de onda (WPP) y en elementos. Se puede seleccionar y aplicar un esquema de division basandose en una coincidencia de tamano de unidad de transmision maxima (MTU) y/o procesamiento en paralelo. Slicei y slice2 de Pic5 o cualquiera de las otras imagenes, pueden ser fragmentos regulares o fragmentos de entropia. Ademas, en otros ejemplos, cada uno de Pici -Pici0 se puede dividir usando elementos o WPP.
[0109] Ademas, la FIG. 4 ilustra el concepto de fragmentos I, fragmentos P y fragmentos B con respecto al GOP2 de la secuencia de video 100. Las flechas asociadas con cada una de las Pic6 - Pici0 en GOP 2 indican si una imagen incluye fragmentos I, fragmentos P o fragmentos B basados en una imagen referenciada indicada por las flechas. En la secuencia de video 100, Pic6 y Picg representan imagenes que incluyen fragmentos I (es decir, fragmentos predichos basandose en las referencias dentro de la imagen en si), las imagenes Pic7 y Pici0 representan imagenes que incluyen fragmentos P (es decir, fragmentos con prediccion inter basados en referencias en una imagen anterior) y Pics representa una imagen que incluye fragmentos B (es decir, fragmentos con prediccion inter basados en referencias tanto en una imagen anterior como en una imagen posterior).
[0110] La FIG. 5 es un diagrama conceptual que ilustra un ejemplo de una secuencia de video codificada 120 que corresponde al GOP2 ilustrado en la FIG. 4. Un HEVC HM define una secuencia de video codificada como una secuencia de unidades de acceso que consta, en orden de descodificacion, de una unidad de acceso de actualizacion de descodificacion instantanea (IDR) seguida de cero o mas unidades de acceso no IDR incluidas todas las unidades de acceso posteriores hasta, pero sin incluir, cualquier unidad de acceso IDR posterior. Una imagen codificada es una representacion codificada de una imagen que contiene todos los bloques de arboles de la imagen. Una unidad de acceso es un conjunto de unidades de capa de abstraccion de red (NAL) que son consecutivas en orden de descodificacion y representan una imagen codificada. Una unidad de acceso puede incluir unidades NAL de capa de codificacion de video (VCL) que representan fragmentos codificados de la imagen codificada, y unidades NAL no VCL, incluidos datos de delimitadores, conjuntos de parametros y mensajes de informacion de mejora suplementaria (SEI).
[0111] Como se ilustra en la FIG. 5, la secuencia de video codificada 120 incluye una unidad de acceso correspondiente a cada una de las Pic6-Pici0. Las unidades de acceso del flujo de datos de video 120 estan dispuestas secuencialmente de acuerdo con el orden de descodificacion. Cabe senalar que la unidad de acceso correspondiente a Picg esta ubicada antes de la unidad de acceso correspondiente a Pics. Por lo tanto, el orden de descodificacion no corresponde al orden de salida ilustrado en la FIG. 4. En este ejemplo, la diferencia entre el orden de salida y el orden de descodificacion se debe a que Pics hace referencia a Picg. Por lo tanto, Picg debe descodificarse antes de que Pics pueda descodificarse.
[0112] Como se ilustra en la FIG. 5, la unidad de acceso correspondiente a Picg incluye una unidad NAL 122 delimitadora de unidad de acceso (AU), una unidad NAL 124 del conjunto de parametros de imagen (PPS), una unidad NAL 126 de slicei y una unidad n Al 128 de slice2. Cada una de la unidad NAL 126 de slicei y la unidad NAL 128 de slice2 contiene un fragmento de datos de video y son ejemplos de unidades VCL NAL. Como se describio anteriormente con respecto a la FIG. 4, Picg representa una imagen que incluye fragmentos I. En el ejemplo de la FIG.
5, por lo tanto, cada una de la unidad NAL 126 de slicei, y la unidad NAL 128 de slice2 de la unidad de acceso correspondiente a Picg puede representar fragmentos I.
[0113] Una unidad no VCL NAL incluye informacion distinta de un fragmento de datos de video. Por ejemplo, un no VCL puede contener datos delimitadores, un conjunto de parametros o mensajes SEI. En el ejemplo ilustrado en la FIG. 5, la unidad NAL delimitadora de AU 122 incluye informacion para delimitar la unidad de acceso correspondiente a PICg de la unidad de acceso correspondiente a Pic7. Ademas, la unidad PPS NAL 124 incluye un conjunto de parametros de imagen. La unidad NAL 122 delimitadora de AU y la unidad 124 de PPS NAL son ejemplos de unidades NAL no VCL. Otro ejemplo de una unidad NAL no VCL es una unidad SEI NAL. Las unidades SEI NAl pueden incluir mensajes SEI de temporizacion de imagen o mensajes SEI de periodo de memoria intermedia que son utilizados por un descodificador de video cuando se descodifica un flujo de bits. Los mensajes SEI de sincronizacion de imagen pueden incluir informacion que indica cuando un descodificador de video debe comenzar a descodificar una unidad VCL NAL. Los mensajes SEI del periodo de almacenamiento en memoria intermedia pueden incluir informacion de retardo de eliminacion de la memoria intermedia de imagenes codificadas (CPB) que indica cuando un descodificador de video debe eliminar las imagenes de la CPB para evitar el desbordamiento.
ig
[0114] En el HEVC HM, cada uno de una secuencia de video, un GOP, una imagen, un fragmento, una CU, una PU y una TU pueden estar asociados con elementos sintacticos definidos para indicar propiedades de codificacion de video para esa estructura de datos de video. El HM emplea ademas un concepto de conjunto de parametros. Un conjunto de parametros es una estructura sintactica que incluye elementos sintacticos definidos para indicar las propiedades de codificacion de video aplicadas a cualquier estructura de datos de video que se refiera al conjunto de parametros. El HM emplea un mecanismo de conjunto de parametros jerarquico donde los elementos sintacticos se incluyen en un tipo de conjunto de parametros basandose en la frecuencia con la que se espera que cambien las propiedades de codificacion de video. El mecanismo de conjunto de parametros, por consiguiente, desacopla la transmision de informacion que cambia poco frecuentemente de la transmision de datos de bloque codificados. En algunas aplicaciones, los conjuntos de parametros pueden ser transmitidos "fuera de banda", es decir, no transportados junto con datos de video codificados, porque la transmision fuera de banda es tipicamente mas fiable que la transmision dentro de banda.
[0115] El HM define varios tipos diferentes de conjuntos de parametros, incluyendo uno o mas de un conjunto de parametros de video (VPS), un conjunto de parametros de secuencia (SPS), un conjunto de parametros de imagen (PPS), y un conjunto de parametros de adaptacion (APS). Un flujo de bits puede incluir varios conjuntos de parametros diferentes de cada tipo. Un conjunto de parametros particular se identifica mediante un identificador de conjunto de parametros (ID). Cada VPS incluye un ID de VPS, cada SPS incluye un ID de SPS y puede referirse a un ID de VPS, cada PPS incluye un ID de PPS y se refiere a un ID de SPS, y cada cabecera de fragmento se refiere a un ID de PPS, y posiblemente a un ID de APS. Ademas, cada mensaje de informacion de mejora suplementaria (SEI) del periodo de almacenamiento en memoria intermedia tambien hace referencia a un ID de SPS y, posiblemente, a un ID de VPS. En cada uno de estos ejemplos, los ID de conjunto de parametros se pueden codificar como elementos sintacticos utilizando un procedimiento de codificacion exp-Golomb (ue(v)) de entero sin signo de longitud variable.
[0116] Un VPS es una estructura sintactica que incluye elementos sintacticos que se aplican a cero o mas secuencias de video codificadas completas. Mas especificamente, un VPS incluye elementos sintacticos que describen las caracteristicas generales de las secuencias de video codificadas, incluida la informacion de perfiles, grados y niveles, y las dependencias entre subcapas temporales. Un VPS particular se identifica utilizando un ID de VPS particular codificado como un elemento sintactico en un mensaje SPS o SEI. Un SPS es una estructura sintactica que incluye elementos sintacticos que se aplican a cero o mas secuencias de video codificadas completas. Mas especificamente, un SPS incluye elementos sintacticos definidos para indicar las propiedades de codificacion de video que se espera que permanezcan sin cambios para una secuencia de tramas (por ejemplo, orden de imagenes, numero de tramas de referencia y tamano de imagen). Un SPS particular se identifica utilizando un ID de SPS particular codificado como un elemento sintactico en un PPS o un mensaje SEI.
[0117] Un PPS es una estructura sintactica que incluye elementos sintacticos que se aplican a cero o mas imagenes codificadas completas. Mas especificamente, un PPS incluye elementos sintacticos definidos para indicar propiedades de codificacion de video que pueden cambiar de imagen a imagen dentro de una secuencia (por ejemplo, modo de codificacion por entropia, parametros de cuantificacion y profundidad de bits). Un PPS particular se identifica utilizando un ID de PPS particular codificado como un elemento sintactico en una cabecera de fragmento. Un APS es una estructura sintactica que incluye elementos sintacticos que se aplican a cero o mas imagenes codificadas completas. Un APS, si esta codificado, puede incluir elementos sintacticos definidos para indicar las propiedades de codificacion del video, con el cambio con mayor frecuencia que otras propiedades indicadas en un PPS. Un APS particular se identifica mediante un ID de APS codificado como un elemento sintactico en una cabecera de fragmento.
[0118] El acoplamiento de flujo de bits se refiere a la concatenacion de dos o mas flujos de bits o partes de los flujos de bits. Por ejemplo, un primer flujo de bits puede ser anexado por un segundo flujo de bits, posiblemente con algunas modificaciones a uno o ambos flujos de bits para generar un flujo de bits empalmado. La primera imagen codificada en el segundo flujo de bits tambien se denomina punto de empalme. Por lo tanto, las imagenes despues del punto de empalme en el flujo de bits empalmado se originaron a partir del segundo flujo de bits, mientras que las imagenes anteriores al punto de empalme en el flujo de bits empalmado se originaron a partir del primer flujo de bits. En algunos casos, un empalmador de flujo de bits puede realizar el empalme de flujo de bits. Los empalmadores de flujos de bits pueden ser ligeros y menos inteligentes que los codificadores de video. Por ejemplo, un empalmador de flujo de bits puede no estar equipado con capacidades de codificacion por entropia y descodificacion por entropia. El empalme del flujo de bits puede ser util para las aplicaciones de escalabilidad (por ejemplo, para la velocidad de transmision de bits, la velocidad de tramas o la escalabilidad de resolucion espacial).
[0119] Como se describio anteriormente, un flujo de bits puede incluir uno o mas conjuntos de parametros diferentes de cada tipo, por ejemplo, SPS y PPS. Un conjunto de parametros de un tipo particular se identifica mediante un identificador de conjunto de parametros (ID). En algunos casos, un descodificador de video puede recibir un conjunto de parametros de un tipo particular con un ID de conjunto de parametros particular que tiene un contenido diferente al de un conjunto de parametros anterior (en orden de flujo de bits o de descodificacion) del mismo tipo con el mismo ID de conjunto de parametros. En este caso, el conjunto de parametros del tipo particular con el ID de conjunto de parametros particular (por ejemplo, SPS 0) se actualiza. La actualizacion del conjunto de parametros incluye el almacenamiento del contenido del conjunto de parametros recibido con el ID de conjunto de parametros en particular para reemplazar el conjunto de parametros anterior del mismo tipo y que tenga el mismo valor de ID de conjunto de parametros.
[0120] Una actualizacion de conjunto de parametros se puede producir cuando se necesite un nuevo conjunto de parametros de un tipo particular, pero se hayan utilizado todos los valores posibles del ID de conjunto de parametros. Una actualizacion del conjunto de parametros tambien puede ocurrir en flujos de bits empalmados incluso cuando los espacios de valor de ID de conjunto de parametros no se utilizan completamente. Los flujos de bits a menudo usan solo unos pocos SPS y unos pocos PPS, o incluso solo un SPS y un PPS, y usan el valor de ID de SPS mas pequeno y el valor de ID de PPS mas pequeno (es decir, 0). Por lo tanto, cuando se empalman dos flujos de bits o partes de flujos de bits, es probable que el punto de empalme, originalmente del segundo flujo de bits, y la imagen que precede inmediatamente a la imagen del punto de empalme, originalmente del primer flujo de bits, hagan referencia al mismo ID de SPS o ID de PPS. En este caso, el contenido del SPS o PPS al que hace referencia la imagen del punto de empalme y el contenido de la imagen del SPS o PPS al que hace referencia la imagen inmediatamente anterior a la imagen del punto de empalme, es probablemente diferente.
[0121] En el caso particular de los conjuntos de parametros SPS, cuando se hace referencia a la misma ID de SPS en la imagen del punto de empalme y en la imagen inmediatamente anterior al punto de empalme, y en realidad se utilizan dos SPS diferentes, entonces, en el flujo de bits empalmado, el SPS con el ID de SPS particular al que hace referencia la imagen que precede inmediatamente al punto de empalme se actualiza de manera efectiva mediante el SPS al que se hace referencia en la imagen del punto de empalme. En este caso, los SPS del flujo de bits empalmado no se pueden poner al principio del flujo de bits empalmado. Aunque se describio anteriormente con respecto a los SPS, lo mismo se aplica a los VPS, PPS y APS. La actualizacion del empalme del flujo de bits y el conjunto de parametros asociados se ha descrito basandose en el supuesto de que solo hay un punto de empalme en un flujo de bits empalmado. Sin embargo, un flujo de bits puede incluir multiples puntos de empalme, y las tecnicas descritas en el presente documento pueden aplicarse a cada uno de los puntos de empalme individualmente.
[0122] El acceso aleatorio se refiere a una descodificacion de un flujo de bits de video a partir de una imagen codificada que no es la primera imagen codificada en el flujo de bits. El acceso aleatorio a un flujo de bits es util en muchas aplicaciones de video, como la radiodifusion y la transmision continua. Por ejemplo, el acceso aleatorio es util para que los usuarios cambien entre diferentes canales, para saltar a partes especificas del video, o para cambiar a un flujo de bits diferente para la adaptacion del flujo (por ejemplo, para la velocidad de transmision de bits, la velocidad de tramas o la escalabilidad de resolucion espacial). El acceso aleatorio se habilita insertando imagenes de punto de acceso aleatorio (RAP) o unidades de acceso muchas veces a intervalos regulares en un flujo de bits de video.
[0123] Se puede usar una imagen de Actualizacion de descodificacion Instantanea (IDR) para el acceso aleatorio a un flujo de bits. Una imagen IDR comienza una secuencia de video codificada e incluye solo fragmentos con prediccion intra (es decir, fragmentos I). Ademas, una imagen IDR siempre limpia la memoria intermedia de imagenes descodificadas (DPB). Por lo tanto, las imagenes que siguen a la IDR en orden de descodificacion no pueden usar imagenes descodificadas antes de la imagen IDR como referencia. Por consiguiente, los flujos de bits que dependen de imagenes IDR para el acceso aleatorio pueden tener una eficiencia de codificacion significativamente menor.
[0124] Para mejorar la eficiencia de la codificacion, el concepto de imagenes de acceso aleatorio limpio (CRA) se introdujo en el HEVC HM. Una imagen CRA, al igual que una imagen IDR, incluye solo fragmentos de prediccion intra, es decir, fragmentos I. Las imagenes CRA se diferencian de las imagenes IDR en que las imagenes CRA no limpian la DPB y pueden ubicarse en cualquier posicion dentro de una secuencia de video codificada. Por consiguiente, se permite que las imagenes que siguen a una imagen CRA en orden de descodificacion, pero que preceden a las imagenes CRA en orden de salida, utilicen imagenes descodificadas antes de la imagen CRA como referencia. Las imagenes que siguen a una imagen CRA en orden de descodificacion, pero preceden a la imagen CRA en orden de salida, se denominan imagenes principales asociadas con la imagen CRA (o imagenes principales de la imagen CRA).
[0125] Las imagenes principales de una imagen CRA se pueden descodificar correctamente si la descodificacion comienza desde una imagen IDR o CRA antes de la imagen CRA actual. Sin embargo, las imagenes principales de una imagen CRA pueden no ser descodificables correctamente cuando se inicia un acceso aleatorio desde la imagen CRA actual. Por lo tanto, las imagenes principales se descartan tipicamente durante la descodificacion de acceso aleatorio de la imagen CRA actual. Refiriendose al ejemplo ilustrado en las FIGs. 4 y 5, picg puede ser una imagen CRA y pics puede ser una imagen principal de picg. Pics se puede descodificar correctamente si se accede al GOP 2 en la pic6, pero es posible que no se pueda descodificar correctamente si se accede al GOP 2 en picg. Esto se debe al hecho de que la pic7 puede no estar disponible si se accede al GOP 2 como picg. Para evitar la propagacion de errores por imagenes de referencia que pueden no estar disponibles dependiendo de donde comienza la descodificacion, todas las imagenes que siguen a una imagen CRA tanto en orden de descodificacion como en orden de salida pueden estar restringidas a no usar ninguna imagen que preceda a la imagen CRA en orden de descodificacion u orden de salida (lo cual incluye las imagenes iniciales) como referencia.
[0126] En el HEVC HM, un flujo de bits que comienza con una imagen CRA se considera un flujo de bits conforme. Cuando un flujo de bits comienza con una imagen CRA, las imagenes iniciales de la imagen CRA pueden referirse a imagenes de referencia no disponibles y, por lo tanto, pueden no descodificarse correctamente. Sin embargo, el HM especifica que las imageries iniciales de la imagen CRA inicial no se emiten, de ahi el nombre "acceso aleatorio limpio". En el ejemplo ilustrado en las FIGs. 4 y 5, si un flujo de bits comienza en Pic9, P8 no se emite. Para el establecimiento de requisitos de conformidad con el flujo de bits, el HM especifica un proceso de descodificacion para generar imagenes de referencia no disponibles para la descodificacion de las imagenes iniciales no emitidas. Sin embargo, las implementaciones de descodificador conformes no tienen que seguir ese proceso de descodificacion, siempre que el descodificador conforme pueda generar un resultado identico al del proceso de descodificacion que se realiza desde el comienzo de la secuencia de video codificada.
[0127] Hay que senalar que similares funciones de acceso aleatorio a las del HEVC HM se soportan en H.264/AVC con el mensaje SEI de punto de recuperacion. Una implementacion de descodificador H.264/AVC puede o no soportar las funcion de acceso aleatorio. Ademas, se debe tener en cuenta que, en el HEVC HM, un flujo de bits conforme puede no contener imagenes IDR. El HM define una secuencia de video codificada es una secuencia de unidades de acceso que incluye, en orden de descodificacion, una unidad de acceso IDR seguida de cero o mas unidades de acceso no IDR incluidas todas las unidades de acceso posteriores hasta, pero sin incluir, cualquier unidad de acceso IDR posterior. Por consiguiente, un flujo de bits conforme que no contiene ninguna imagen iDr puede contener un subconjunto de una secuencia de video codificada o una secuencia de video codificada incompleta.
[0128] Ahora se describiran los problemas y las tecnicas propuestas relacionadas con las actualizaciones de conjuntos de parametros en un flujo de bits. Convencionalmente, para determinar si realizar una actualizacion del conjunto de parametros, un descodificador compara el contenido del conjunto de parametros cada vez que se recibe un nuevo conjunto de parametros de un tipo particular con un ID de conjunto de parametros particular que tiene el mismo ID de conjunto de parametros que un conjunto de parametros recibido anteriormente del mismo tipo. La comparacion de conjuntos de parametros se realiza para verificar si los conjuntos de parametros incluyen el mismo contenido o uno diferente. Basandose en si los conjuntos de parametros tienen el mismo contenido, un descodificador determina si activar el conjunto de parametros recibido actualmente y desactivar el conjunto de parametros previamente activo. En el caso de que los conjuntos de parametros se transmitan en banda con datos de video codificados, los conjuntos de parametros pueden transmitirse repetidamente para mejorar la resistencia a los errores. En este caso, un descodificador puede hacer una comparacion del contenido del conjunto de parametros para cada conjunto de parametros repetidos. Hacer comparaciones de conjuntos de parametros repetidos puede imponer una carga innecesaria en el descodificador.
[0129] Esta divulgacion describe tecnicas que pueden proporcionar un uso mas eficiente de los recursos de procesamiento de descodificacion, particularmente en el caso de actualizaciones de conjuntos de parametros. En un ejemplo, esta divulgacion describe un dispositivo de procesamiento de video configurado para usar un indicador de nivel de flujo de bits para determinar si un conjunto de parametros se puede actualizar en una parte de un flujo de bits. En algunos casos, se puede usar una indicacion de nivel de flujo de bits para indicar si se puede actualizar un conjunto de parametros. La indicacion puede ser un indicador incluido en el flujo de bits, por ejemplo, en el SPS, y el indicador puede ser identico en todos los SPS. Cuando el indicador es igual a 1, se puede actualizar un conjunto de parametros. Cuando el indicador es igual a 0, no se puede actualizar ningun conjunto de parametros. En este caso, un descodificador de video no necesita comparar el contenido de dos conjuntos de parametros del mismo tipo y con los mismos valores de ID de conjunto de parametros determinar si los conjuntos de parametros tienen el mismo contenido, ya que, cuando el indicador es igual a 0, no se puede realizar la actualizacion de un conjunto de parametros y el descodificador de video funciona como si los dos conjuntos de parametros tuvieran el mismo contenido.
[0130] En otros casos, una indicacion de nivel de flujo de bits puede usarse para indicar si un conjunto de parametros de un tipo particular (por ejemplo, un VPS, SPS, PPS, o APS) se puede actualizar. La indicacion puede ser un indicador incluido en el flujo de bits, por ejemplo, en el SPS, y el indicador puede ser identico en todos los SPS. Cuando el indicador es igual a 1, se puede actualizar un conjunto de parametros del tipo particular. Cuando el indicador es igual a 0, no se puede actualizar ningun conjunto de parametros del tipo en particular. En este caso, un descodificador de video no necesita comparar el contenido de dos conjuntos de parametros del tipo en particular y con los mismos valores de ID de conjunto de parametros para determinar si los conjuntos de parametros tienen el mismo contenido, porque, cuando el indicador es igual a 0, no se puede realizar la actualizacion de un conjunto de parametros y el descodificador de video funciona como si los dos conjuntos de parametros tuvieran el mismo contenido. Cuando hay tres tipos de conjuntos de parametros, por ejemplo, SPS, PPS y APS, se utilizan tres de estas indicaciones, una para cada tipo de conjunto de parametros.
[0131] En los ejemplos descritos anteriormente, la indicacion se incluye en el nivel de flujo de bits en un conjunto de parametros. En otro ejemplo, la indicacion puede incluirse en un mensaje SEI. En otro ejemplo mas, la indicacion puede incluirse como un requisito en una definicion de un perfil. En algunos ejemplos, la indicacion puede incluirse en el nivel de secuencia de video codificada en lugar de en el nivel de flujo de bits. En otros ejemplos, la indicacion puede no estar incluida en el flujo de bits, pero en su lugar, la indicacion puede definirse como un parametro de tipo de medios e incluirse en el protocolo de descripcion de sesion (SDP) cuando el flujo de bits de video se utiliza en un entorno de transmision basado en protocolo de transporte en tiempo real (RTP), por ejemplo, transmision continua o multidifusion utilizando RTP para el transporte de datos de medios, durante la negociacion de la sesion o la fase de intercambio de capacidades. Como ejemplo adicional, en un entorno de transmision continua HTTP, por ejemplo, transmision continua dinamica adaptativa sobre HTTP (DASH), la indicacion puede definirse como una propiedad de transmision continua incluida en la descripcion de presentacion de medios (MPD).
[0132] Ahora se describiran los problemas y las tecnicas propuestas relacionados con la activacion de nuevos conjuntos de parametros en imagenes IDR. Como se describio anteriormente, en muchos casos las imagenes de puntos de empalme en el flujo de bits son imagenes IDR. Las imagenes de puntos de empalme tipicamente tienen caracteristicas de video diferentes a las imagenes inmediatamente anteriores al punto de empalme en un flujo de bits empalmado. Por lo tanto, habitualmente se necesita un conjunto de parametros diferente de cada tipo en el punto de empalme, y seria una perdida de recursos de procesamiento de descodificacion comparar si el contenido de los conjuntos de parametros asociados con la imagen del punto de empalme es identico a los conjuntos de parametros asociados con una imagen anterior. En este caso, puede ser mas eficiente activar un nuevo conjunto de parametros de cada tipo asociado con la imagen del punto de empalme sin comparar el contenido del conjunto de parametros. Ademas, cuando una imagen IDR es una imagen de punto de empalme, para evitar un desbordamiento de DPB, puede ser necesario no generar ninguna imagen antes de la imagen iDr , incluso si las imagenes aun no se han emitido al descodificar la imagen IDR.
[0133] Esta divulgacion describe tecnicas que pueden proporcionar un uso mas eficiente de los recursos de procesamiento de descodificacion, particularmente en el caso de actualizaciones de conjuntos de parametros en puntos de empalme de flujo de bits. En un ejemplo, esta divulgacion describe un dispositivo de procesamiento de video configurado para activar automaticamente un nuevo conjunto de parametros de cada tipo asociado con una imagen de punto de empalme de un flujo de bits empalmado. En particular, en muchos casos, las imagenes de puntos de empalme en el flujo de bits son imagenes IDR. De acuerdo con las tecnicas, en cada imagen IDR, un descodificador de video puede activar cada tipo de conjunto de parametros (y, por lo tanto, desactivar el conjunto de parametros previamente activo) aun cuando el conjunto de parametros recien activado pueda ser exactamente el mismo que el conjunto de parametros previamente activo, incluyendo el contenido y valor de ID del conjunto de parametros. Un posible inconveniente potencial de activar nuevos conjuntos de parametros en cada imagen IDR es que se puede realizar alguna activacion de conjuntos de parametros innecesarios.
[0134] En otro ejemplo, una indicacion puede incluirse en el flujo de bits para cada imagen IDR para indicar si la imagen IDR es una imagen IDR de empalmado (SIDR). En este ejemplo, cuando se indica una imagen SIDR, un descodificador de video puede activar cada tipo de conjunto de parametros (por lo tanto, desactivar el conjunto de parametros activado previamente), incluso aunque el conjunto de parametros recien activado sea exactamente igual al conjunto de parametros previamente activo, incluyendo el contenido y valor de ID del conjunto de parametros. Al activar solo nuevos conjuntos de parametros en las imagenes SIDR, en lugar de en cada imagen IDR, se puede reducir la activacion innecesaria del conjunto de parametros. Ademas, cuando se indica una imagen SIDR, el comportamiento de salida de la imagen puede ser el mismo que si estuviera presente no_output_of_prior_pics_flag y fuera igual a 1, lo cual indica que no se emitiran imagenes antes de la imagen SIDR. El no_output_of_prior_pics_flag puede o no estar presente, por ejemplo, en la cabecera de fragmento. En algunos casos, la indicacion puede ser un tipo de unidad NAL distinto especial. En otros casos, la indicacion puede ser un indicador de nivel de imagen en la cabecera de fragmento, el PPS o el APS.
[0135] A continuacion se describiran problemas y tecnicas propuestas relacionadas con el acceso aleatorio completo a un flujo de bits desde una unidad de acceso RAP. Cuando los conjuntos de parametros se transportan en banda con datos de video codificados, es decir, en el flujo de bits de video codificado, el acceso aleatorio al flujo de bits desde una unidad de acceso para una imagen IDR o una imagen CRA puede requerir la busqueda de conjuntos de parametros desde las unidades de acceso anteriores al IDR o unidad de acceso CRA en orden de descodificacion. Cuando no haya necesidad de obtener conjuntos de parametros de unidades de acceso anteriores a la unidad de acceso IDR o CRA en orden de descodificacion, seria conveniente notificar a un descodificador de video para evitar operaciones de busqueda innecesarias.
[0136] Esta divulgacion describen las tecnicas que se pueden utilizar con el fin de proporcionar un uso mas eficiente de los recursos de procesamiento de descodificacion en particular en el caso de acceso aleatorio. En un ejemplo, esta divulgacion describe un dispositivo de procesamiento de video configurado para usar una indicacion en un flujo de bits para determinar si se necesita una unidad NAL de conjunto de parametros en una unidad de acceso que precede a una unidad de acceso IDR o CRA para descodificar la unidad de acceso IDR o CRA. En particular, un flujo de bits puede incluir una indicacion para cada unidad de acceso IDR o CRA, para indicar si se necesita una unidad NAL de conjunto de parametros que precede a la unidad de acceso IDR o CRA (en orden de flujo de bits o descodificacion) para descodificar la unidad de acceso IDR o CRA y cualquiera de las unidades de acceso posteriores (en flujo de bits o en orden de descodificacion).
[0137] Si la indicacion es verdadera para una unidad de acceso IDR o CRA, entonces el descodificador de video puede acceder aleatoriamente al flujo de bits desde la unidad de acceso IDR o CRA sin depender de ninguna unidad NAL de conjunto de parametros que preceda a la unidad de acceso IDR o CRA. En este caso, todas las unidades NAL anteriores pueden simplemente omitirse o ignorarse. En un ejemplo, la indicacion para una imagen IDR o una imagen CRA puede ser senalizada usando un tipo particular de SPS (por ejemplo, con un tipo de unidad NAL distinto) donde SPS puede ser la primera unidad NAL de la unidad de acceso o la primera NAL Unidad despues de la unidad NAL delimitadora de la unidad de acceso, si esta presente en la unidad de acceso. En otro ejemplo, la indicacion puede ser senalizada utilizando un tipo particular de delimitador de la unidad de acceso, ya sea con un tipo de unidad NAL delimitadora de la unidad de acceso distinto o con un indicador dentro de la carga util de la unidad NAL de una unidad NAL delimitadora de la unidad de acceso. En otro ejemplo mas, la indicacion puede ser senalizada utilizando un indicador en la cabecera de la unidad NAL en la unidad de acceso. Como ejemplo adicional, la indicacion puede ser senalizada utilizando un tipo particular de mensaje SEI en la unidad de acceso o un indicador en un mensaje SEI en la unidad de acceso.
[0138] Ahora se describiran los problemas y las tecnicas propuestas relacionadas con las imagenes principales de imagenes CRA en un flujo de bits. Cuando el flujo de bits se inicia desde una imagen CRA, y las imagenes principales asociadas con la imagen CRA no estan presentes en un descodificador de video, la memoria intermedia de imagenes codificadas (CPB) puede desbordarse. En consecuencia, puede ser necesario aplicar un conjunto diferente de parametros del descodificador de referencia hipotetico (HRD) para evitar los desbordamientos de memoria intermedia. S. Deshpande, et al., "Signaling of CRA Pictures [Senalizacion de imagenes CRA]", 9.a reunion, Ginebra, Suiza, 27 de abril - 7 de mayo de 2012, Doc., JCTVC-I0278 (en adelante, "Deshpande"), describe una indicacion (por ejemplo, un nuevo tipo de unidad NAL o un indicador en una cabecera de fragmento) para una imagen CRA para indicar si las imagenes principales asociadas estan presentes, de manera que el descodificador de video puede determinar que conjunto de parametros HRD se deben aplicar. Sin embargo, la indicacion descrita por Deshpande requiere que una entidad de red externa (por ejemplo, un servidor de transmision continua o un elemento de red consciente de medios (MANE)) realice cambios en las cabeceras de unidad NAL o cabeceras de fragmento de la imagen CRA, que pueden ser pesados o imposibles para la entidad de red externa.
[0139] Esta divulgacion se describen las tecnicas que se pueden utilizarse con el fin de evitar posibles desbordamientos de memoria intermedia. En un ejemplo, esta divulgacion describe un dispositivo de procesamiento de video configurado para usar una indicacion para determinar si estan presentes las imagenes principales asociadas con una imagen CRA que comienza un flujo de bits. En particular, en un ejemplo, cuando las imagenes iniciales de una imagen CRA que comienza un flujo de bits no estan presentes, una entidad de red externa puede cambiar el tipo de unidad NAL para indicar la imagen CRA como una imagen IDR. En otro ejemplo, la entidad de red externa puede notificar al descodificador de video la presencia o ausencia de imagenes principales asociadas con una imagen CRA que comienza el flujo de bits.
[0140] La entidad de red externa puede generar un mensaje de protocolo de transmision continua en tiempo real (RTSP) para sistemas de transmision continua basados en RTSP, o un parametro de protocolo de descripcion de sesion (SDP) enviado durante las negociaciones de la sesion tanto para transmision continua basada en RTSP como para radiodifusion/multidifusion basada en (SAP) de protocolo de anuncio de sesion como una configuracion estatica. En la transmision continua de HTTP, por ejemplo, la transmision continua dinamica adaptativa a traves de HTTP (DASH), la indicacion puede realizarse asignando diferentes localizadores de recursos uniformes (URL) o asignando una URL con diferentes desviaciones de bytes para la imagen CRA y las imagenes principales. En este caso, el descodificador de video puede determinar por si mismo si estan presentes las imagenes iniciales de la imagen CRA, ya que es el descodificador de video el que determina si se deben solicitar las imagenes principales.
[0141] Ahora se describiran los problemas y las tecnicas propuestas relacionadas con la prediccion del vector de movimiento temporal. Refiriendose nuevamente a la FIG.4, cada una de las Pic6, Pic7 y Pic9 se utilizan como imagenes de referencia. Como se describio anteriormente, los elementos sintacticos de informacion de movimiento pueden identificar la ubicacion de un bloque de video predictivo en una imagen de referencia para la prediccion inter de un bloque de video en una imagen actual. La prediccion de movimiento puede referirse al proceso de definir informacion de movimiento (por ejemplo, vectores de movimiento e indices de imagenes de referencia) para un bloque de video dado en relacion con la informacion de movimiento para un bloque de video codificado previamente. Por ejemplo, la prediccion de movimiento puede implicar el uso de informacion de movimiento de una CU codificada previamente para generar informacion de movimiento para una CU actual que se esta codificando. La prediccion de movimiento se puede aplicar para reducir la cantidad de datos necesarios para comunicar el vector de movimiento de la CU actual.
[0142] Un ejemplo de prediccion de movimiento es la prediccion de movimiento de modo de fusion. En la prediccion de movimiento en modo de fusion, la informacion de movimiento para una CU actual se hereda de un bloque de video contiguo codificado previamente. Las tecnicas de prediccion de movimiento pueden usar un valor de indice para identificar un bloque de video contiguo del cual el bloque de video actual obtiene su informacion de movimiento. Los posibles bloques de video contiguos pueden incluir, por ejemplo, bloques de video en la imagen actual que son adyacentes a la CU actual (por ejemplo, arriba, abajo, a la izquierda o a la derecha). Ademas, los posibles bloques de video contiguos tambien pueden incluir bloques de video que se ubican en imagenes diferentes a la imagen actual (por ejemplo, un bloque de video co-ubicado desde una imagen temporalmente adyacente). Cuando un posible bloque de video contiguo se encuentra en una imagen diferente a la imagen actual, se le conoce como prediccion de vector de movimiento temporal (TMVP). Por ejemplo, en el ejemplo ilustrado en la FIG. 4, si Pic8 hereda un vector de movimiento de Pic7, este es un TMVP. En algunos casos, puede ser ventajoso permitir que algunas imagenes, fragmentos y CU utilicen TMVP, mientras que no permiten que otros utilicen TMVP.
[0143] El HEVC HM permite que TMVP se habilite o deshabilite imagen a imagen, y puede senalar la habilitacion de TMPV usando el indicador enable_temporal_mvp_flag en el PPS. Como se describio anteriormente, cada cabecera de fragmento hace referencia a un PPS particular utilizando un ID de PPS particular y determina si TMVP esta habilitado para la imagen basandose en el valor del indicador en el PPS particular. Por ejemplo, cuando un fragmento se refiere a un PPS con un valor enable_temporal_mvp_flag igual a 0 y tiene una identificacion temporal igual a 0, se invoca un proceso de marcado de imagenes de referencia en la DPB. Es decir, todas las imagenes en la memoria intermedia de imagenes descodificadas (DPB) estan marcadas como "no utilizadas para la prediccion del vector de movimiento temporal" y TMVP de imagenes de referencia anteriores no esta permitido.
[0144] Como una alternativa para incluir la habilitacion temporal de mvp_flag en el PPS, se ha descrito, en Lim, Chong Soon et al. "High-level Syntax: Proposed fix on signaling of TMVP disabling flag [Sintaxis de alto nivel: arreglo propuesto para la senalizacion del indicador de deshabilitacion de TMVP]" 9.a reunion, Ginebra, Suiza, 27 de abril - 7 de mayo de 2012, Doc., JCTVC-10420, (en adelante "Lim"), para indicar explicitamente el enable_temporal_mvp_flag en cada cabecera de fragmento P y B. Si bien la tecnica descrita en Lim elimina la necesidad de un proceso de marcado y determina las imagenes TMVP de forma independiente en lugar de confiar en la actualizacion de imagen a imagen, la tecnica descrita en Lim no es eficiente cuando muchas imagenes o todas las imagenes en una secuencia de video codificada no utilice TMVP. Bajo la tecnica descrita en Lim, las cabeceras de fragmento de todas las fragmentos P y B dentro de una imagen o secuencia incluirian el enable_temporal_mvp_flag incluso si ninguno de los fragmentos usa TMVP.
[0145] Esta divulgacion describe tecnicas que se pueden usar para reducir la senalizacion de enable_temporal_mvpflag para cada cabecera de fragmento P y B. En un ejemplo, esta divulgacion describe un dispositivo de procesamiento de video configurado para identificar un indicador en el SPS para determinar si la prediccion del vector de movimiento temporal esta habilitada. En particular, en algunos ejemplos, se puede agregar un indicador (por ejemplo, enable_temporal_mvp_ps_flag) en el SPS o PPS. Cuando este indicador es igual a 0 en un SPS o PPS en particular, enable_temporal_mvp_flag no esta presente en ninguna cabecera de fragmento que se refiera al SPS o PPS en particular. Cuando este indicador es igual a 1 en un SPS o PPS en particular, enable_temporal_mvpflag esta presente en cada cabecera de fragmento que se refiere al SPS o PPS en particular. La semantica de enable_temporal_mvp_flag en las cabeceras de fragmento puede ser la misma que en la propuesta de Lim.
[0146] Ahora se describiran los problemas y tecnicas propuestas relacionados con la senalizacion de conjunto de imagenes de referencia para imagenes codificadas en un flujo de bits. Como se describio anteriormente, ademas de los vectores de movimiento, los elementos sintacticos de informacion de movimiento tambien pueden incluir indices de imagenes de referencia. El HEVC HM utiliza un mecanismo basado en el Conjunto de imagenes de referencia (RPS) para gestionar las imagenes de referencia. Un RPS hace referencia a un conjunto de imagenes de referencia asociadas con una imagen, que consta de todas las imagenes de referencia que son anteriores a la imagen codificada en orden de descodificacion, que puede usarse para la prediccion inter de la imagen asociada o cualquier imagen que siga a la imagen asociada en orden de descodificacion. En el HM, se senaliza directamente un RPS para cada imagen codificada. Los elementos sintacticos para senalizar el RPS se incluyen tanto en el SPS como en la cabecera de fragmento. Para una imagen codificada en particular, el RPS puede ser uno de los posibles conjuntos de imagenes incluidos en el SPS, como lo indica un indicador en la cabecera de fragmento, o esta directamente senalado en la cabecera de fragmento.
[0147] El RPS para cada imagen comprende cinco listas diferentes de imagenes de referencia, tambien denominados los cinco subconjuntos RPS. Los cinco subconjuntos RPS incluyen: RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll, RefPicSetLtCurr y RefPicSetLtFoll. RefPicSetStCurrBefore incluye todas las imagenes de referencia a corto plazo (STRP) que son anteriores a la imagen actual tanto en orden de descodificacion como en orden de salida, y que pueden usarse en la prediccion inter de la imagen actual. RefPicSetStCurrAfter consta de todas las imagenes de referencia a corto plazo que son anteriores a la imagen actual en orden de descodificacion, que vienen a continuacion de la imagen actual en orden de salida, y que pueden usarse en prediccion inter de la imagen actual. RefPicSetStFoll consta de todas las imagenes de referencia a corto plazo que se pueden usar en la prediccion inter de una o mas de las imagenes que siguen a la imagen actual en orden de descodificacion, y que no se usan en la prediccion inter de la imagen actual. RefPicSetLtCurr consta de todas las imagenes de referencia a largo plazo (LTRP) que se pueden utilizar en la prediccion inter de la imagen actual. RefPicSetLtFoll consta de todas las imagenes de referencia a largo plazo que se pueden usar en la prediccion inter de una o mas de las imagenes que siguen a la imagen actual en orden de descodificacion, y que no se usan en la prediccion inter de la imagen actual.
[0148] Se ha descrito, en K. Suehring et al. "Long-term Picture Signaling for error-free environments [Senalizacion de imagen a largo plazo para entornos sin errores]" 9.a Reunion, Ginebra, Suiza, 27 de abril - 7 de mayo de 2012, Doc., JCTVC-I0112 (en adelante, "Suehring"), para identificar un LTRP mediante un indice a la lista ordenada de recuento de orden de imagenes (POC) de imagenes de referencia en la memoria intermedia de imagenes descodificadas (DPB) que estan: 1) marcadas como "usadas como referencia" y 2) no incluidas en los conjuntos de imagenes de referencia a corto plazo. Suehring afirma que, en un entorno sin errores, tal senalizacion de las LTRP es eficiente. Sin embargo, en un entorno sin errores, las STRP tambien pueden identificarse mediante indices a la lista ordenada de POC de imagenes de referencia en la DPB.
[0149] Esta divulgacion describe tecnicas que pueden usarse para identificar las STRP. En un ejemplo, esta divulgacion describe un dispositivo de procesamiento de vfdeo configurado para identificar una STRP mediante un fndice a la lista ordenada de POC de imagenes de referencia en la DPB. En particular, en algunos ejemplos, cada STRP puede identificarse mediante un fndice a la lista ordenada de POC de imagenes de referencia en la DPB. En algunos casos, el orden puede estar en orden creciente de valores POC. En otros casos, el orden puede estar en orden decreciente de valores POC. Para la primera STRP indicada, el fndice se codifica directamente, por ejemplo, usando uno de la codificacion de enteros sin signo exp-Golomb (ue (v)), la codificacion de enteros truncados exp-Golomb (te (v)), o la codificacion de enteros sin signo (u (v)). Si la codificacion es u(v), entonces la longitud, en bits, del fndice es Ceil(log2(N)), donde N es el numero de imagenes de referencia en la DPB. Para otra STRP indicada, se senala la diferencia entre el fndice de la STRP actual y el fndice de la STRP anterior. De forma alternativa, las imagenes de referencia en la DPB se pueden dividir en dos listas. En este ejemplo, una de las listas incluye una imagen de referencia con un POC menor que el POC de la imagen actual y puede ordenarse en orden decreciente de valores de POC. La otra de las listas incluye imagenes de referencia con un valor POC mayor que el valor POC de la imagen actual y puede ordenarse en orden creciente de valores POC. A continuacion, cada STRP que se incluira en el conjunto de imagenes de referencia a corto plazo puede ser identificado por la lista (es decir, una de las dos listas) y el fndice a esa lista.
[0150] Ahora se describiran los problemas y las tecnicas propuestas relacionadas con procesamiento por lotes de datos con prefijo de categorfa para los esquemas de division de imagen de procesamiento paralelo de frente de onda y elementos (WPP). Como se describio anteriormente, el HEVC HM incluye cuatro esquemas diferentes de division de imagenes, a saber, fragmentos regulares, fragmentos de entropfa, elementos y WPP. Los fragmentos regulares son similares a los de H.264/AVC. Cada fragmento regular se encapsula en su propia unidad NAL, y la prediccion dentro de la imagen (por ejemplo, la prediccion dentro de la muestra, la prediccion de la informacion de movimiento, la prediccion del modo de codificacion) y la dependencia de la codificacion por entropfa a traves de los lfmites de los fragmentos se deshabilitan. Por lo tanto, una trama regular puede reconstruirse independientemente de otras tramas regulares dentro de la misma imagen (aunque todavfa puede haber interdependencias debido a las operaciones de filtrado de bucle). Dado que la unidad basica en HEVC, es decir, un bloque de arbol, puede ser de un tamano relativamente grande (por ejemplo, un bloque de arbol puede ser de 64x64), se incluye un concepto de "fragmentos de granularidad fina" en el HM para permitir que el tamano de MTU coincida en los lfmites de fragmento dentro de un bloque de arbol, como una forma especial de fragmentos regulares. La granularidad del fragmento se senala en el conjunto de parametros de imagen, mientras que la direccion de un fragmento de granularidad fina aun se senala en la cabecera de fragmento.
[0151] Los fragmentos de entropfa, al igual que los fragmentos regulares, rompen las dependencias de descodificacion por entropfa, pero permiten que la prediccion (y el filtrado) en la imagen crucen los lfmites de los fragmentos de entropfa. Por lo tanto, los fragmentos de entropfa se pueden usar como un mecanismo ligero para paralelizar la descodificacion por entropfa sin tener un impacto en otros pasos de descodificacion. Si bien cada fragmento de entropfa esta encapsulado en su propia unidad NAL, tiene una cabecera de fragmento mucho mas corta en comparacion con un fragmento regular, ya que la mayorfa de los elementos sintacticos de cabecera de fragmento no estan presentes y deben heredarse de la cabecera de fragmento completa anterior. Debido a que se permite la prediccion en imagen entre los fragmentos de entropfa contiguos dentro de una imagen, la comunicacion requerida entre el procesadores/entre nucleos para habilitar la prediccion en imagen puede ser sustancial. No se recomienda que los fragmentos de entropfa se utilicen para la coincidencia de tamano de MTU en entornos propensos a errores, ya que debido a la prediccion en imagen, una perdida de un fragmento de entropfa tambien provoca el fallo de la descodificacion del siguiente fragmento de entropfa en orden de descodificacion. Los fragmentos de entropfa parecen tener un uso limitado para las arquitecturas de sistemas que ejecutan el proceso de descodificacion por entropfa en una arquitectura de multiples nucleos o de multiples CPU, pero ejecutan la funcion de descodificacion restante en un hardware de procesamiento de senales dedicado.
[0152] En WPP, la imagen se divide en filas de bloques de arbol. La descodificacion y prediccion por entropfa pueden usar datos de bloques de arbol en otras divisiones. El procesamiento paralelo es posible a traves de la descodificacion paralela de filas de bloques de arbol, donde el inicio de la descodificacion de una fila se retarda dos bloques de arbol, para asegurar que los datos relacionados con un bloque de arbol arriba y a la derecha del bloque de arbol del asunto esten disponibles antes que el bloque de arbol esta siendo descodificado. Usando este inicio escalonado (que aparece como un frente de onda cuando se representa graficamente), la paralelizacion es posible con tantos procesadores/nucleos como la imagen contenga filas de bloques de arbol. El HEVC HM incluye un mecanismo para organizar los bits codificados de diferentes filas de bloques de arbol para ser beneficiosos para un numero particular de procesadores/nucleos paralelos. Por ejemplo, es posible que todos los bits codificados de numeros pares de filas de bloques de arbol (filas de bloques de arbol 0, 2, 4,...) aparezcan antes de los bits codificados de numeros impares de filas de bloques de arbol (filas de bloques de arbol 1, 3, 5,...), de modo que el flujo de bits sea descodificable por dos procesadores/nucleos paralelos, aunque la descodificacion de una fila de bloque de arbol que viene mas temprano (por ejemplo, la fila 2 del bloque de arbol) se refiere a una fila de bloque de arbol que viene mas adelante (por ejemplo, la fila 1 del bloque de arbol). De manera similar a los fragmentos de entropfa, debido a la tolerancia de la prediccion en imagen entre las filas de bloques de arbol contiguas dentro de una imagen, la comunicacion necesaria entre procesadores/entre nucleos para permitir la prediccion en imagen puede ser sustancial. La division WPP no da como resultado mas unidades NAL en comparacion con cuando no se aplica; por lo tanto, WPP no se puede utilizar para la coincidencia de tamano MTU.
[0153] Los elementos definen limites horizontales y verticales que dividen una imagen en columnas y filas de elementos. El orden de escaneo de los bloques de arbol se cambia para que sea local dentro de un elemento (en el orden de un escaneo de raster de bloque de arbol de un elemento), antes de descodificar el bloque de arbol superior izquierdo del siguiente elemento en el orden de escaneo de raster de elementos de una imagen. Al igual que los fragmentos regulares, los elementos rompen las dependencias de prediccion en imagen, asi como las dependencias de descodificacion por entropia. Sin embargo, no es necesario que los elementos se incluyan en unidades NAL individuales (al igual que WPP en este aspecto) y, por lo tanto, no se pueden usar para la coincidencia de tamano de MTU. Cada elemento puede procesarse mediante un procesador/nucleo, y la comunicacion entre procesadores/entre nucleos requerida para la prediccion en imagen entre las unidades de procesamiento que descodifican los elementos contiguos se limita a transmitir la cabecera de fragmento compartida, en los casos en que un fragmento se extiende mas de un elemento, y el filtrado en bucle esta relacionado con el intercambio de muestras reconstruidas y metadatos. Por lo tanto, los elementos son menos exigentes en terminos de ancho de banda de memoria en comparacion con WPP debido a la independencia en imagen entre dos divisiones contiguas.
[0154] En el HEVC HM, el fragmento regular es la unica herramienta que se puede utilizar para la paralelizacion que tambien esta disponible, de forma practicamente identica, en H.264/AVC. La paralelizacion basada en fragmentos regulares no requiere mucha comunicacion entre procesadores ni entre nucleos (excepto para el intercambio de datos entre procesadores o entre nucleos para la compensacion de movimiento cuando se descodifica una imagen codificada de manera predecible, que es tipicamente mucho mas pesado que intercambio de datos entre procesadores o entre nucleos debido a la prediccion en imagen). Sin embargo, por la misma razon, los fragmentos regulares pueden requerir cierta sobrecarga de codificacion. Ademas, los fragmentos regulares (en contraste con algunos de los otros esquemas de division mencionados anteriormente) tambien sirven como mecanismo clave para que la division del flujo de bits coincida con los requisitos de tamano de MTU, debido a la independencia en imagen de los fragmentos regulares y que cada fragmento regular esta encapsulado su propia unidad NAL. En muchos casos, el objetivo de la paralelizacion y el objetivo de la coincidencia de tamano de MTU pueden imponer demandas contradictorias al diseno de fragmentos en una imagen.
[0155] Por simplicidad, las restricciones de los cuatro esquemas diferentes de division de imagenes se especifican en el HM. Por ejemplo, en el HM, no se puede aplicar ninguna combinacion de dos de los fragmentos, elementos y WPP de entropia al mismo tiempo. Ademas, en el HM, para cada fragmentos y elemento, se deben cumplir una o las dos condiciones siguientes: 1) todos los bloques de arbol codificados en un fragmento pertenecen al mismo elemento, y 2) todos los bloques de arbol codificados en un elemento pertenecen al mismo fragmento.
[0156] Un orden de datos intercalados para elemento y WPP, que tambien hace que los dos procedimientos de senalizacion de punto de entrada sean menos utiles, se ha descrito en S. Kanumuri, et al. "Category-prefixed data batching for tiles and wavefronts [Procesamiento por lotes de datos con prefijo de categoria para elementos y frentes de onda]" 9.a Reunion, Ginebra, Suiza 27 de abril - 7 de mayo de 2012, Doc., JCTVC-I0427 (en adelante "Kanumuri"). Un problema asociado con el enfoque propuesto en Kanumuri es que el numero maximo de categorias admitidas es 32. Sin embargo, es posible que haya mas de 32 sub-flujos WPP (por ejemplo, cuando cada fila de bloque de arbol es un sub-flujo y hay mas de 32 filas de bloque de arbol) o mas de 32 elementos, y se requiere que se conozca cada punto de entrada de elemento o sub-flujo WPP, por ejemplo, para procesar bloques de arbol (tanto de analisis como de descodificacion) en el escaneado de raster de bloques de arbol de una imagen mediante un descodificador de un solo nucleo. Ademas, el enfoque propuesto en Kanumuri impone una carga en la descodificacion de un solo nucleo, ya que el proceso de fusion para fusionar datos intercalados o saltar hacia atras y hacia adelante en el flujo de bits de una unidad NAL es necesario, dependiendo del orden de procesamiento.
[0157] Esta divulgacion describe tecnicas que pueden usarse para indicar si se aplican el procesamiento por lotes de datos con prefijo de categoria. En un ejemplo, esta divulgacion describe un dispositivo de procesamiento de video configurado para identificar con un indicador si se aplica el procesamiento por lotes de datos con prefijo de categoria. En particular, en algunos ejemplos, se puede agregar una indicacion en el SPS o PPS para indicar si se aplica el procesamiento por lotes de datos con prefijo de categoria. Si se indica que no se aplica el procesamiento por lotes de datos con prefijo de categoria, entonces se puede aplicar la forma convencional de manejar los elementos. En otros ejemplos, el numero maximo de categorias puede variar, y el valor del numero maximo de categorias puede senalarse en el SPS o PPS. En ejemplos adicionales, la asignacion de elementos o sub-flujos de WPP a categorias (es decir, que elementos o sub-flujos de WPP pertenecen a cada categoria) puede senalizarse, por ejemplo, en el SPS o PPS.
[0158] La FIG. 6 es un diagrama de flujo que ilustra una operacion para determinar si una actualizacion del conjunto de parametros puede ocurrir en una parte de un flujo de bits. La operacion ilustrada se describe como realizada por el descodificador de video 30 de la FlG. 3 basandose en una indicacion generada por el codificador de video 20 de la FIG. 2.
[0159] El descodificador de video 30 puede recibir un flujo de bits del codificador de video 20 con una o mas secuencias de video codificadas que incluyen multiples unidades de acceso que representan fragmentos de video codificados y conjuntos de parametros codificados. El descodificador de video 30 descodifica un indicador definido para indicar si una actualizacion del conjunto de parametros puede ocurrir en una parte del flujo de bits, como una de las secuencias de video codificadas (130). En un ejemplo, el indicador puede incluirse en una unidad SEI NAL incluida en al menos una unidad de acceso de la secuencia de video codificada. En otro ejemplo, el indicador puede incluirse en una unidad SPS NAL incluida en al menos una unidad de acceso de la secuencia de video codificada.
[0160] En algunos casos, el indicador puede indicar si los conjuntos de parametros de cualquier tipo pueden actualizarse en la secuencia de video codificada, de tal manera que solo un indicador puede ser utilizado para todos los tipos de conjuntos de parametros. En otros casos, el indicador puede indicar si un conjunto de parametros de un tipo particular puede actualizarse en la secuencia de video codificada, de manera que se pueda usar un indicador diferente para cada tipo de conjunto de parametros. En otros casos, el indicador puede indicar si los conjuntos de parametros de dos o mas tipos pueden actualizarse en la secuencia de video codificada, de manera que un indicador se puede utilizar para indicar el estado de actualizacion para los dos o mas tipos de conjuntos de parametros y otro indicador puede se puede utilizar para indicar el estado de actualizacion para tipos adicionales de conjuntos de parametros.
[0161] El descodificador de video 30 luego descodifica un primer conjunto de parametros de un tipo particular con un valor de ID particular de una unidad NAL de conjunto de parametros incluida en una de las unidades de acceso de la secuencia de video codificada (132). Cuando el indicador indica que no puede ocurrir una actualizacion de conjunto de parametros en la secuencia de video codificada para el tipo particular de conjunto de parametros (rama NO de 134), el descodificador de video 30 activa el primer conjunto de parametros para la parte completa del flujo de bits, es decir, la secuencia de video codificada en este ejemplo (136). En este caso, al descodificar un conjunto de parametros posterior del mismo tipo y tener un mismo valor de identificacion que el primer conjunto de parametros, el descodificador de video 30 no necesita determinar si actualizar el primer conjunto de parametros para la secuencia de video codificada y puede ignorar el conjunto de parametros posteriores. Por lo tanto, el descodificador de video 30 puede funcionar como si el contenido del primer conjunto de parametros fuera identico al contenido incluido en cualquier otro conjunto de parametros del mismo tipo que tenga el mismo valor de ID.
[0162] Cuando el indicador indica que se puede producir una actualizacion del conjunto de parametros en la secuencia de video codificada para el tipo particular de conjunto de parametros (rama SI de 134), el descodificador de video 30 activa el primer conjunto de parametros (138). El descodificador de video 30 luego descodifica un segundo conjunto de parametros del mismo tipo y con el mismo valor de ID que el primer conjunto de parametros de una unidad NAL de conjunto de parametros incluida en una de las unidades de acceso de la secuencia de video codificada (140). En este caso, debido a que pueden ocurrir actualizaciones de conjuntos de parametros, el descodificador de video 30 determina si almacenar el segundo conjunto de parametros para reemplazar el primer conjunto de parametros (142).
[0163] En algunos casos, el descodificador de video 30 puede activar automaticamente el segundo conjunto de parametros para la secuencia de video codificada, y desactivar el primer conjunto de parametros. En otros casos, el descodificador de video 30 puede comparar el contenido del primer conjunto de parametros con el contenido del segundo conjunto de parametros. Cuando el contenido del segundo conjunto de parametros es diferente al contenido del primer conjunto de parametros, el descodificador de video 30 activa el segundo conjunto de parametros para la secuencia de video codificada, y desactiva el primer conjunto de parametros.
[0164] La FIG. 7 es un diagrama de flujo que ilustra una operacion para determinar si se puede realizar el acceso aleatorio desde una unidad de acceso CRA sin tener que obtener conjuntos de parametros de unidades de acceso no disponibles anteriores. La operacion ilustrada se describe como realizada por el descodificador de video 30 de la FIG.
3 basandose en una indicacion generada por el codificador de video 20 de la FIG. 2.
[0165] El HEVC HM introdujo imagenes CRA para proporcionar mas opciones para el acceso aleatorio al flujo de bits sin la menor eficiencia de codificacion, como ocurre con imagenes IDR. Las unidades de acceso CRA se pueden colocar en cualquier punto dentro de una secuencia de video codificada y no limpian la memoria intermedia de imagenes descodificadas (DPB), lo cual permite a las imagenes iniciales de una unidad de acceso CRA determinada (es decir, imagenes que siguen la unidad de acceso CRA en orden de descodificacion pero preceden a la unidad de acceso CRA en orden de salida) usar imagenes descodificadas antes de la unidad de acceso CRA como imagenes de referencia. Sin embargo, las imagenes iniciales solo pueden descodificarse correctamente cuando el acceso aleatorio comienza desde una imagen RAP descodificada antes de la unidad de acceso CRA dada. En el caso de que el acceso aleatorio se inicie desde la imagen CRA particular, todas las imagenes que preceden a la imagen CRA en orden de salida o descodificacion no se descodificaran y no estaran disponibles para su uso como imagenes de referencia. Para descodificar la imagen CRA o cualquier unidad de acceso posterior en orden de salida o descodificacion, el descodificador de video 30 puede necesitar obtener uno o mas conjuntos de parametros incluidos en una unidad de acceso para una de las imagenes anteriores no disponibles, lo cual es una operacion pesada.
[0166] El descodificador de video 30 puede recibir un flujo de bits del codificador de video 20 con una o mas secuencias de video codificadas que incluyen multiples unidades de acceso que representan fragmentos de video codificados y conjuntos de parametros codificados. El descodificador de video 30 descodifica una o mas unidades de acceso CRA a partir de una secuencia de video codificada del flujo de bits (150). El descodificador de video 30 tambien descodifica un indicador definido para indicar si el acceso aleatorio al flujo de bits desde una unidad de acceso CRA particular requiere conjuntos de parametros de unidades de acceso anteriores, no disponibles (152). En un ejemplo, el indicador puede incluirse en una unidad SEI NAL incluida en la unidad de acceso CRA particular en la secuencia de video codificada del flujo de bits.
[0167] Cuando el indicador indica que no es necesario obtener conjuntos de parametros de unidades de acceso anteriores (es decir, no se requiere busqueda) para el acceso aleatorio desde la unidad de acceso CRA particular (rama NO de 154), el descodificador de video 30 realiza un acceso aleatorio al flujo de bits desde la unidad de acceso CRA particular sin realizar una operacion de busqueda (156). A la inversa, cuando el indicador indica que los conjuntos de parametros de las unidades de acceso anteriores deben ser obtenidos (es decir, se requiere busqueda) para el acceso aleatorio desde la imagen CRA particular (rama SI de 154), el descodificador de video 30 determina si realizar el acceso aleatorio a la flujo de bits desde la unidad de acceso CRA particular en orden (158). En algunos casos, el descodificador de video 30 puede determinar que el acceso aleatorio al flujo de bits esta disponible desde otra imagen RAP sin realizar una operacion de busqueda, y ademas determinar que no se realice el acceso aleatorio al flujo de bits desde la unidad de acceso CRA particular para evitar la busqueda de conjuntos de parametros desde las unidades de acceso anteriores. En otros casos, el descodificador de video 30 puede determinar que el acceso aleatorio al flujo de bits desde otra imagen RAP no esta disponible, y determinar ademas realizar un acceso aleatorio al flujo de bits desde la unidad de acceso CRA particular despues de obtener los conjuntos de parametros de las unidades de acceso anteriores.
[0168] De esta manera, basandose en el indicador, el descodificador de video 30 primero determina si se requiere una operacion de busqueda para la descodificacion de acceso aleatorio desde la unidad de acceso CRA particular, y puede evitar realizar una operacion de busqueda seleccionando una imagen RAP diferente desde la cual realizar acceso aleatorio. La indicacion es especialmente util para las unidades de acceso CRA, ya que las unidades de acceso CRA pueden ubicarse en cualquier punto dentro de una secuencia de video codificada y no limpiar la DPB, lo cual brinda mas opciones para el acceso aleatorio al flujo de bits sin una menor eficiencia de codificacion.
[0169] La FIG. 8 es un diagrama de bloques que ilustra un conjunto de dispositivos de ejemplo que forman parte de la red 300. En este ejemplo, la red 300 incluye los dispositivos de encaminamiento 304A, 304B (colectivamente denominados "dispositivos de encaminamiento 304") y el dispositivo de transcodificacion 306. Los dispositivos 304 de encaminamiento y el dispositivo 306 de transcodificacion estan concebidos para representar un pequeno numero de dispositivos que pueden formar parte de la red 300. Otros dispositivos de red, tales como conmutadores, concentradores, pasarelas, cortafuegos, puentes y otros dispositivos de ese tipo tambien pueden estar incluidos en la red 300. Ademas, pueden proporcionarse dispositivos de red adicionales a lo largo de un trayecto de red entre el dispositivo servidor 302 y el dispositivo cliente 308. En algunos ejemplos, el dispositivo servidor 302 puede corresponder al dispositivo de origen 12 de la FIG. 1, mientras que el dispositivo cliente 308 puede corresponder al dispositivo de destino 14 de la FIG. 1.
[0170] En general, los dispositivos de encaminamiento 304 implementan uno o mas protocolos de encaminamiento para intercambiar datos de red a traves de la red 300. En algunos ejemplos, los dispositivos 304 de encaminamiento pueden estar configurados para realizar operaciones de proxy o de memoria cache. Por lo tanto, en algunos ejemplos, los dispositivos de encaminamiento 304 pueden denominarse tambien dispositivos proxy. En general, los dispositivos 304 de encaminamiento ejecutan protocolos de encaminamiento para descubrir rutas a traves de la red 300. Al ejecutar dichos protocolos de encaminamiento, el dispositivo 304B de encaminamiento puede descubrir una ruta de red desde si mismo hasta el dispositivo servidor 302, a traves del dispositivo 304A de encaminamiento.
[0171] Las tecnicas de esta divulgacion pueden ser implementadas por dispositivos de red tales como los dispositivos de encaminamiento 304 y el dispositivo de transcodificacion 306, pero tambien pueden ser implementadas por el dispositivo cliente 308. De esta manera, los dispositivos de encaminamiento 304, el dispositivo de transcodificacion 306 y el dispositivo cliente 308 representan ejemplos de dispositivos configurados para implementar una o mas de las tecnicas descritas en esta divulgacion.
[0172] En uno o mas ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o cualquier combinacion de los mismos. Si se implementan en software, las funciones pueden almacenarse en, y transmitirse por, un medio legible por ordenador, como una o mas instrucciones o codigo, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que correspondan a un medio tangible tal como medios de almacenamiento de datos o medios de comunicacion que incluyan cualquier medio que facilite la transferencia de un programa informatico desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicacion. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) medios de almacenamiento tangibles legibles por ordenador que sean no transitorios o (2) un medio de comunicacion tal como una senal o una onda portadora. Los medios de almacenamiento de datos pueden ser medios disponibles cualesquiera a los que se pueda acceder desde uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para la implementacion de las tecnicas descritas en esta divulgacion. Un producto de programa informatico puede incluir un medio legible por ordenador.
[0173] A modo de ejemplo, y no de limitacion, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico u otros dispositivos de almacenamiento magnetico, memoria flash o cualquier otro medio que se pueda usar para almacenar un codigo de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. Ademas, cualquier conexion recibe debidamente la denominacion de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde una sede de la Red, un servidor u otro origen remoto usando un cable coaxial, un cable de fibra optica, un par trenzado, una linea de abonado digital (DSL) o tecnologias inalambricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologias inalambricas tales como infrarrojos, radio y microondas se incluyen en la definicion de medio. Sin embargo, deberia entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, senales u otros medios transitorios, sino que, en cambio, estan orientados a medios de almacenamiento tangibles no transitorios. Los discos, como se usan en el presente documento, incluyen un disco compacto (CD), un disco laser, un disco optico, un disco versatil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos reproducen usualmente los datos magneticamente, mientras que otros discos reproducen los datos opticamente con laseres. Las combinaciones de lo anterior tambien deberian incluirse dentro del alcance de los medios legibles por ordenador.
[0174] Las instrucciones se pueden ejecutar por uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores de proposito general, circuitos integrados especificos de la aplicacion (ASIC), matrices logicas programables in situ (FPGA) u otros circuitos logicos integrados o discretos equivalentes. En consecuencia, el termino "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 implementacion de las tecnicas descritas en el presente documento. Ademas, en algunos aspectos, la funcion descrita en el presente documento se puede proporcionar dentro de modulos de hardware y/o software dedicados, configurados para la codificacion y la descodificacion, o incorporados en un codec combinado. Ademas, las tecnicas se podrian implementar totalmente en uno o mas circuitos o elementos logicos.
[0175] Las tecnicas de esta divulgacion se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un telefono inalambrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, modulos o unidades se describen en esta divulgacion para enfatizar aspectos funcionales de dispositivos configurados para realizar las tecnicas divulgadas, pero no requieren necesariamente su realizacion mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades se pueden combinar en una unidad de hardware de codec, o ser proporcionadas por un grupo de unidades de hardware interoperativas, incluyendo uno o mas procesadores, como se ha descrito anteriormente, juntamente con software y/o firmware adecuados.

Claims (1)

  1. REIVINDICACIONES
    Un procedimiento para descodificar datos de video de codificacion de video de alta eficiencia (HEVC), el procedimiento que comprende:
    descodificar (152), en un mensaje de informacion de mejora complementaria (SEI), un elemento sintactico que indica si el acceso aleatorio al flujo de bits desde una unidad de acceso de acceso aleatorio limpio (CRA) en particular en una secuencia de video codificada (120) del flujo de bits requiere uno o mas conjuntos de parametros de al menos una unidad de acceso anterior en el flujo de bits para descodificar la unidad de acceso CRA particular o las unidades de acceso posteriores, en el que la unidad de acceso CRA particular se coloca en cualquier punto dentro de la secuencia de video codificada del flujo de bits y no limpia una memoria intermedia de imagenes descodificadas (DPB); y
    basandose en el elemento sintactico que indica que no se necesitan conjuntos de parametros de una unidad de acceso anterior, realizar (156) acceso aleatorio al flujo de bits desde la unidad de acceso CRA particular sin obtener los conjuntos de parametros de la al menos una unidad de acceso anterior en el flujo de bits.
    Un procedimiento para codificar datos de video de codificacion de video de alta eficiencia (HEVC), el procedimiento que comprende:
    codificar una o mas unidades de acceso de acceso aleatorio limpio (CRA) en una secuencia de video codificada de un flujo de bits de datos de video, en el que las unidades de acceso CRA estan ubicadas en cualquier punto dentro de la secuencia de video codificada del flujo de bits y no limpian una memoria intermedia de imagenes descodificadas (DPB); caracterizado por
    codificar, en un mensaje de informacion de mejora suplementaria (SEI), un elemento sintactico que indica si el acceso aleatorio al flujo de bits desde una unidad de acceso CRA particular en la secuencia de video codificada del flujo de bits requiere uno o mas conjuntos de parametros de al menos una unidad de acceso anterior en el flujo de bits para descodificar la unidad de acceso CRA particular o las unidades de acceso posteriores, en el que, basandose en el elemento sintactico que indica que no se necesitan conjuntos de parametros de una unidad de acceso anterior, se puede realizar un acceso aleatorio al flujo de bits desde la unidad de acceso CRA particular sin obtener los conjuntos de parametros de la al menos una unidad de acceso anterior en el flujo de bits.
    Un dispositivo para descodificar datos de video de codificacion de video de alta eficiencia (HEVC), el dispositivo que comprende:
    medios para descodificar, en un mensaje de informacion de mejora suplementaria (SEI), un elemento sintactico que indica si el acceso aleatorio al flujo de bits desde una unidad de acceso de acceso aleatorio limpio (CRA) en particular en una secuencia de video codificada del flujo de bits requiere uno o mas conjuntos de parametros de la al menos una unidad de acceso anterior en el flujo de bits para descodificar la unidad de acceso CRA particular o las unidades de acceso posteriores, en el que la unidad de acceso CRA particular esta situada en cualquier punto dentro de la secuencia de video codificada del flujo de bits y no limpia una memoria intermedia de imagenes descodificadas (DPB); y
    medios para, basandose en el elemento sintactico que indica que no se necesitan conjuntos de parametros de una unidad de acceso anterior, realizar un acceso aleatorio al flujo de bits desde la unidad de acceso CRA en particular sin obtener los conjuntos de parametros de la al menos una unidad de acceso anterior en el flujo de bits.
    Un dispositivo para codificar datos de video de codificacion de video de alta eficiencia (HEVC), el dispositivo que comprende:
    medios para codificar una o mas unidades de acceso de acceso aleatorio limpio (CRA) en una secuencia de video codificada de un flujo de bits de datos de video, en el que las unidades de acceso CRA estan ubicadas en cualquier punto dentro de la secuencia de video codificada del flujo de bits y no limpian una memoria intermedia de imagenes descodificadas (DPB); caracterizado por
    medios para codificar, en un mensaje de informacion de mejora suplementaria (SEI), un elemento sintactico que indica si el acceso aleatorio al flujo de bits desde una unidad de acceso CRA particular en la secuencia de video codificada del flujo de bits requiere uno o mas conjuntos de parametros de al menos una unidad de acceso en el flujo de bits para descodificar la unidad de acceso CRA particular o las unidades de acceso posteriores, en el que, basandose en el elemento sintactico que indica que no se necesitan conjuntos de parametros de una unidad de acceso anterior, el acceso aleatorio al flujo de bits desde la unidad de acceso CRA particular puede realizarse sin obtener los conjuntos de parametros de la al menos una unidad de acceso anterior en el flujo de bits.
    5. Un medio legible por ordenador que comprende instrucciones que, cuando se ejecutan, hacen que uno o mas procesadores lleven a cabo un procedimiento de acuerdo con la reivindicacion 1 o la reivindicacion 2.
ES13721237T 2012-04-27 2013-04-26 Acceso aleatorio completo desde imágenes de acceso aleatorio limpio en codificación de vídeo Active ES2715314T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261639823P 2012-04-27 2012-04-27
US13/870,846 US9736476B2 (en) 2012-04-27 2013-04-25 Full random access from clean random access pictures in video coding
PCT/US2013/038450 WO2013163569A1 (en) 2012-04-27 2013-04-26 Full random access from clean random access pictures in video coding

Publications (1)

Publication Number Publication Date
ES2715314T3 true ES2715314T3 (es) 2019-06-03

Family

ID=48325952

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13721237T Active ES2715314T3 (es) 2012-04-27 2013-04-26 Acceso aleatorio completo desde imágenes de acceso aleatorio limpio en codificación de vídeo

Country Status (10)

Country Link
US (1) US9736476B2 (es)
EP (1) EP2842344B1 (es)
JP (1) JP6224080B2 (es)
KR (1) KR101841812B1 (es)
CN (1) CN104396265B (es)
AR (1) AR092826A1 (es)
ES (1) ES2715314T3 (es)
HU (1) HUE041872T2 (es)
TW (1) TWI495273B (es)
WO (1) WO2013163569A1 (es)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3267681B1 (en) 2011-07-02 2018-11-21 Samsung Electronics Co., Ltd. Apparatus for multiplexing and demultiplexing video data to identify reproducing state of video data
CN103096049A (zh) * 2011-11-02 2013-05-08 华为技术有限公司 一种视频处理方法及系统、相关设备
US9892188B2 (en) * 2011-11-08 2018-02-13 Microsoft Technology Licensing, Llc Category-prefixed data batching of coded media data in multiple categories
US9516308B2 (en) 2012-04-27 2016-12-06 Qualcomm Incorporated Parameter set updates in video coding
DK2868082T3 (en) * 2012-06-29 2016-09-12 ERICSSON TELEFON AB L M (publ) Coding and decoding video sequences comprehensive referencebilledsæt
US9992490B2 (en) 2012-09-26 2018-06-05 Sony Corporation Video parameter set (VPS) syntax re-ordering for easy access of extension parameters
US20140092987A1 (en) * 2012-09-28 2014-04-03 Apple Inc. Entropy coding techniques and protocol to support parallel processing with low latency
US10419778B2 (en) 2013-01-04 2019-09-17 Sony Corporation JCTVC-L0227: VPS_extension with updates of profile-tier-level syntax structure
US10219006B2 (en) 2013-01-04 2019-02-26 Sony Corporation JCTVC-L0226: VPS and VPS_extension updates
WO2015076694A1 (en) * 2013-11-25 2015-05-28 Nptv Soft Ltd Method for delivering personalized interactive video stream
EP3200460A4 (en) 2014-10-16 2017-08-23 Samsung Electronics Co., Ltd Method and device for processing encoded video data, and method and device for generating encoded video data
KR102433227B1 (ko) 2016-02-09 2022-08-18 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 효율적인 감소성 또는 효율적인 랜덤 액세스를 허용하는 픽처/비디오 데이터 스트림들에 대한 개념
US10652631B2 (en) * 2016-05-24 2020-05-12 Qualcomm Incorporated Sample entries and random access
US10291923B2 (en) * 2016-05-24 2019-05-14 Qualcomm Incorporated Mapping of tile grouping and samples in HEVC and L-HEVC file formats
MX2022004795A (es) 2016-10-12 2022-12-16 Fraunhofer Ges Forschung Transmisión continua espacialmente desigual.
US11336909B2 (en) * 2016-12-27 2022-05-17 Sony Corporation Image processing apparatus and method
CN111937392B (zh) * 2018-04-17 2024-05-10 联发科技股份有限公司 视频编解码的神经网络方法和装置
MX2021002951A (es) * 2018-09-12 2021-07-15 Huawei Tech Co Ltd Un codificador de video, un decodificador de video y metodos correspondientes.
CN110741647A (zh) * 2018-09-29 2020-01-31 深圳市大疆创新科技有限公司 一种图像处理方法、装置、可移动平台及存储介质
BR112021012096A2 (pt) * 2018-12-20 2021-09-08 Telefonaktiebolaget Lm Ericsson (Publ) Métodos para decodificar e codificar um fluxo contínuo de bits, portadora, e, aparelhos de decodificação e codificação para decodificar e codificar um fluxo contínuo de bits
CN113557733A (zh) 2019-03-11 2021-10-26 华为技术有限公司 视频译码中的逐步解码刷新
JP7359871B2 (ja) * 2019-05-06 2023-10-11 華為技術有限公司 ビデオコーディングにおいて新たなコーディングされているビデオシーケンスを開始するピクチャのための前のピクチャの出力
US11539957B2 (en) * 2019-06-20 2022-12-27 Tencent America LLC Layered random access with reference picture resampling
MX2021016004A (es) * 2019-06-20 2022-06-16 Nokia Technologies Oy Aparato, método y programa informático para codificación y decodificación de vídeo.
US11825121B2 (en) * 2019-09-23 2023-11-21 Tencent America LLC Method for access unit delimiter signaling
US11310533B2 (en) * 2019-09-27 2022-04-19 Qualcomm Incorporated Quantization parameter signaling for joint chroma residual mode in video coding
US11758193B2 (en) * 2019-11-04 2023-09-12 Hfi Innovation Inc. Signaling high-level information in video and image coding
EP4062635A4 (en) 2019-12-26 2022-12-28 ByteDance Inc. CONSTRAINTS ON SIGNALING VIDEO LAYERS IN ENCODED BITSTREAMS
WO2021134018A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Signaling of decoded picture buffer parameters in layered video
KR20220113404A (ko) 2019-12-27 2022-08-12 바이트댄스 아이엔씨 비디오 서브픽처들을 시그널링하기 위한 신택스
WO2021142369A1 (en) * 2020-01-09 2021-07-15 Bytedance Inc. Signalling of the wavefront parallel processing
EP4091327A4 (en) * 2020-02-19 2023-05-03 ByteDance Inc. INFERENCE OF WEIGHT VALUES FOR VIDEO COMPONENTS IN A BITSTREAM
WO2021188453A1 (en) 2020-03-16 2021-09-23 Bytedance Inc. Gradual decoding refresh access unit in scalable video coding
CN115299049A (zh) 2020-03-20 2022-11-04 字节跳动有限公司 视频编解码中子图片信息的使用
EP4128786A1 (en) * 2020-04-02 2023-02-08 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. File format schemes allowing efficient roi, stream access and parameter set handling
WO2021216448A1 (en) 2020-04-20 2021-10-28 Bytedance Inc. Constraints on reference picture lists
US11962936B2 (en) 2020-09-29 2024-04-16 Lemon Inc. Syntax for dependent random access point indication in video bitstreams
US20230308658A1 (en) * 2022-03-25 2023-09-28 Tencent America LLC Methods of parameter set indication in video streaming

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003251964A1 (en) 2002-07-16 2004-02-02 Nokia Corporation A method for random access and gradual picture refresh in video coding
JP4002878B2 (ja) 2003-01-17 2007-11-07 松下電器産業株式会社 画像符号化方法
US7724818B2 (en) * 2003-04-30 2010-05-25 Nokia Corporation Method for coding sequences of pictures
US7415069B2 (en) 2003-12-09 2008-08-19 Lsi Corporation Method for activation and deactivation of infrequently changing sequence and picture parameter sets
ES2392437T3 (es) 2004-01-30 2012-12-10 Panasonic Corporation Procedimiento de decodificación de vídeos que utiliza matrices de cuantificación adaptativas
KR101022078B1 (ko) 2004-02-10 2011-03-17 톰슨 라이센싱 비디오 정보의 스트리밍을 용이하게 하는 방법 및 장치, 컴퓨터 판독가능 매체 및 비디오 정보를 포함하는 파일을 처리하는 방법 및 장치
US20050254526A1 (en) 2004-05-12 2005-11-17 Nokia Corporation Parameter sets update in streaming applications
JP2006203662A (ja) 2005-01-21 2006-08-03 Toshiba Corp 動画像符号化装置・復号化装置及び符号化ストリーム生成方法
JP2006211617A (ja) 2005-01-31 2006-08-10 Toshiba Corp 動画像符号化装置・復号化装置及び符号化ストリーム生成方法
JP5072893B2 (ja) * 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
US9992456B2 (en) * 2010-02-24 2018-06-05 Thomson Licensing Dtv Method and apparatus for hypothetical reference decoder conformance error detection
US9131033B2 (en) 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
US9357229B2 (en) 2010-07-28 2016-05-31 Qualcomm Incorporated Coding motion vectors in video coding
CN103299630B (zh) 2011-01-19 2016-10-19 寰发股份有限公司 获取运动矢量预测子的方法和装置
US9008181B2 (en) 2011-01-24 2015-04-14 Qualcomm Incorporated Single reference picture list utilization for interprediction video coding
GB2488830B (en) 2011-03-10 2015-07-29 Canon Kk Method and device for encoding image data and method and device for decoding image data
US20120230430A1 (en) 2011-03-10 2012-09-13 Stephan Wenger Parameter Set Maintenance in Video Coding
JP2013034161A (ja) 2011-06-28 2013-02-14 Sharp Corp 画像復号装置、画像符号化装置、および符号化データのデータ構造
EP3267681B1 (en) * 2011-07-02 2018-11-21 Samsung Electronics Co., Ltd. Apparatus for multiplexing and demultiplexing video data to identify reproducing state of video data
US9277228B2 (en) 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
US9351016B2 (en) * 2012-04-13 2016-05-24 Sharp Kabushiki Kaisha Devices for identifying a leading picture
KR102094503B1 (ko) * 2012-04-15 2020-03-30 삼성전자주식회사 다계층 비디오 부호화 방법 및 장치, 다계층 비디오 복호화 방법 및 장치
US9516308B2 (en) 2012-04-27 2016-12-06 Qualcomm Incorporated Parameter set updates in video coding

Also Published As

Publication number Publication date
US9736476B2 (en) 2017-08-15
KR20150008144A (ko) 2015-01-21
WO2013163569A1 (en) 2013-10-31
HUE041872T2 (hu) 2019-05-28
JP6224080B2 (ja) 2017-11-01
KR101841812B1 (ko) 2018-03-23
EP2842344B1 (en) 2018-12-12
TW201352005A (zh) 2013-12-16
AR092826A1 (es) 2015-05-06
TWI495273B (zh) 2015-08-01
JP2015515240A (ja) 2015-05-21
EP2842344A1 (en) 2015-03-04
US20130294500A1 (en) 2013-11-07
CN104396265B (zh) 2018-03-16
CN104396265A (zh) 2015-03-04

Similar Documents

Publication Publication Date Title
ES2715314T3 (es) Acceso aleatorio completo desde imágenes de acceso aleatorio limpio en codificación de vídeo
ES2744235T3 (es) Actualizaciones de conjuntos de parámetros en la codificación de vídeo
ES2909066T3 (es) Identificadores de codificación para conjuntos de mosaicos con movimiento restringido
ES2727814T3 (es) Estructura sintáctica de parámetros de descodificador hipotético de referencia
RU2628250C2 (ru) Устойчивая к ошибкам ассоциация единицы декодирования
ES2701786T3 (es) Procesamiento de memoria intermedia de imágenes descodificadas para imágenes de punto de acceso aleatorio en secuencias de vídeo
ES2637515T3 (es) Indicación y activación de conjuntos de parámetros para codificación de vídeo
ES2765462T3 (es) Diseños de formato de archivo de vídeo multicapa
CN107105295B (zh) 用于高效视频译码(hevc)和扩展的视频参数集
ES2748561T3 (es) Unidades de acceso IRAP y conmutación y empalme de flujos de bits
ES2657494T3 (es) Acceso aleatorio y señalización de imágenes de referencia a largo plazo en la codificación de vídeo
ES2684546T3 (es) Codificación de vídeo con comportamientos de imagen de punto de acceso aleatorio mejorados
ES2810202T3 (es) Adaptación de transmisión continua basada en imágenes de acceso aleatorio limpio (CRA)
US20140003506A1 (en) Signaling of long-term reference pictures for video coding
ES2780686T3 (es) Tipo de dependencia entre vistas en MV-HEVC
US20140010277A1 (en) Supplemental enhancement information (sei) messages having a fixed-length coded video parameter set (vps) id
ES2856099T3 (es) Señalización mejorada de identificadores de capa para puntos de operación de un codificador de vídeo
BR112015006839B1 (pt) Sinalizando identificadores de camada para pontos de operação em codificação de vídeo
US9479779B2 (en) Sub-bitstream extraction for multiview, three-dimensional (3D) and scalable media bitstreams