ES2958967T3 - Reducción de latencia en codificación y descodificación de vídeo - Google Patents
Reducción de latencia en codificación y descodificación de vídeo Download PDFInfo
- Publication number
- ES2958967T3 ES2958967T3 ES20162441T ES20162441T ES2958967T3 ES 2958967 T3 ES2958967 T3 ES 2958967T3 ES 20162441 T ES20162441 T ES 20162441T ES 20162441 T ES20162441 T ES 20162441T ES 2958967 T3 ES2958967 T3 ES 2958967T3
- Authority
- ES
- Spain
- Prior art keywords
- frame
- latency
- frames
- reordering
- video
- 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
Links
- 230000009467 reduction Effects 0.000 title description 5
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000002123 temporal effect Effects 0.000 claims description 35
- 239000000872 buffer Substances 0.000 claims description 28
- 230000006870 function Effects 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000008707 rearrangement Effects 0.000 claims description 2
- 230000006854 communication Effects 0.000 abstract description 46
- 238000004891 communication Methods 0.000 abstract description 46
- 230000008569 process Effects 0.000 description 21
- 238000012545 processing Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 230000004043 responsiveness Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/15—Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/31—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/88—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Técnicas y herramientas para reducir la latencia en la codificación y decodificación de vídeo restringiendo la latencia debida al reordenamiento de fotogramas de vídeo e indicando la restricción en la latencia de reordenamiento de fotogramas con uno o más elementos de sintaxis que acompañan a los datos codificados para los fotogramas de vídeo. Por ejemplo, una herramienta de comunicación en tiempo real con un codificador de video establece un elemento de sintaxis que indica una restricción en la latencia de reordenamiento de cuadros, que es consistente con las dependencias entre cuadros entre múltiples cuadros de una secuencia de video, y luego genera el elemento de sintaxis. Una herramienta de comunicación en tiempo real correspondiente con un decodificador de vídeo recibe el elemento de sintaxis que indica la restricción de latencia de reordenamiento de cuadros, determina la restricción de latencia de reordenamiento de cuadros basándose en el elemento de sintaxis y utiliza la restricción de latencia de reordenamiento de cuadros para determinar cuándo se reconstruye. El marco está listo para la salida (en términos de orden de salida). (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Reducción de latencia en codificación y descodificación de vídeo
Los ingenieros utilizan la compresión (llamada también codificación de fuente) para reducir la velocidad de bits del vídeo digital. La compresión reduce el coste de almacenar y transmitir información de vídeo al convertir la información a una forma de velocidad de bits más baja. La descompresión (también llamada descodificación) reconstruye una versión de la información original a partir del formato comprimido. Un "códec" es un sistema de codificador/descodificador.
Durante las últimas dos décadas se han adoptado diversos estándares de códecs de vídeo, incluyendo los estándares H.261, H.262 (MPEG-2 ó ISO/IEC 13818-2), H.263 y H.264 (AVC o ISO/IEC 14496-10) y MPEG-1 (ISO/IEC 11172-2), Visual MPEG-4 (ISO/IEC 14496-2) y SMPTE 421M. Más recientemente se está desarrollando el estándar HEVC. Un estándar de códec de vídeo define típicamente opciones para la sintaxis de una corriente de bits de vídeo codificado, detallando parámetros en la corriente de bits cuando se utilizan características particulares en la codificación y descodificación (cf. US 2010/0266012A1 o P. V. Rangan et al.: "Continuity and Synchronization in MPEG", IEEE Journal on Selected Areas in Communications, vol. 14, núm. 1, enero de 1996). En muchos casos, un estándar de códec de vídeo proporciona también detalles sobre las funciones de descodificación que debería realizar un descodificador para conseguir resultados correctos en la descodificación.
Un objetivo básico de la compresión es proporcionar un buen rendimiento de distorsión de velocidad. Así, para una velocidad de bits particular, el codificador intenta proporcionar la más alta calidad de video. O bien, para un nivel particular de calidad/fidelidad correspondiente al vídeo original, el codificador intenta proporcionar el vídeo codificado con la velocidad de bits más baja. En la práctica, dependiendo del escenario de uso, ciertas consideraciones, tales como el tiempo de codificación, la complejidad de codificación, los recursos de codificación, el tiempo de descodificación, la complejidad de descodificación, los recursos de descodificación, el retardo general y/o la fluidez en la reproducción, también afectan a las decisiones tomadas durante la codificación y descodificación.
Por ejemplo, considérense escenarios de uso tales como reproducción de vídeo desde almacenamiento, reproducción de vídeo a partir de datos codificados transmitidos a través de una conexión de red, y transcodificación de vídeo (de una velocidad de bits a otra velocidad de bits, o de un estándar a otro estándar). En el lado del codificador, tales aplicaciones pueden permitir una codificación fuera de línea que no dependa en absoluto del tiempo. Por lo tanto, un codificador puede aumentar el tiempo de codificación y aumentar los recursos utilizados durante la codificación para encontrar la forma más eficiente de comprimir vídeo, y, por ello, de mejorar el rendimiento de la distorsión de la velocidad. Si también es aceptable una pequeña cantidad de retardo en el lado del descodificador, el codificador puede mejorar adicionalmente el rendimiento de la distorsión de velocidad, como, por ejemplo, explotando las dependencias entre imágenes de las imágenes más tardías en la secuencia.
Por otro lado, considérense escenarios de uso tales como conferencias de escritorio remotas, vídeo de vigilancia, videotelefonía y otros escenarios de comunicación en tiempo real. Tales solicitudes son sensibles al tiempo. La baja latencia entre la grabación de imágenes de entrada y la reproducción de imágenes de salida es un factor clave en el rendimiento. Cuando se aplican herramientas de codificación/descodificación adaptadas para la comunicación en tiempo no real en escenarios de comunicación en tiempo real, la latencia global es a menudo inaceptablemente alta. Los retardos que introducen estas herramientas durante la codificación y descodificación pueden mejorar el rendimiento de la reproducción regular de vídeo, pero interrumpen la comunicación en tiempo real.
Por lo tanto, el objeto de la invención es proporcionar un método mejorado y un medio legible por ordenador para reducir la latencia en la descodificación y codificación de video.
Este objeto se resuelve mediante el objeto de las reivindicaciones independientes.
Realizaciones preferidas están definidas por las reivindicaciones dependientes.
En resumen, la descripción detallada presenta técnicas y herramientas para reducir la latencia en la codificación y descodificación de vídeo. Las técnicas y herramientas pueden reducir la latencia para mejorar la capacidad de respuesta de la comunicación en tiempo real. Por ejemplo, las técnicas y herramientas reducen la latencia global restringiendo la latencia debida al reordenamiento de fotogramas de vídeo e indicando la restricción en la latencia de reordenamiento de fotogramas con uno o más elementos de sintaxis que acompaña/n a los datos codificados para los fotogramas de vídeo.
De acuerdo con un aspecto de las técnicas y herramientas descritas en el presente documento, una herramienta tal como un codificador de vídeo, una herramienta de comunicación en tiempo real con un codificador de vídeo, u otra herramienta, establece uno o más elementos de sintaxis que indican una restricción en la latencia (por ejemplo, una restricción en la latencia de reordenamiento de fotogramas consistente con dependencias entre fotogramas entre múltiples fotogramas de una secuencia de vídeo). La herramienta emite el/los elemento/s de sintaxis, lo que facilita una determinación más sencilla y rápida de cuándo los fotogramas reconstruidos están listos para su salida en términos del orden de salida de los fotogramas.
De acuerdo con otro aspecto de las técnicas y herramientas descritas en el presente documento, una herramienta tal como un descodificador de vídeo, una herramienta de comunicación en tiempo real con un descodificador de vídeo, u otra herramienta, recibe y analiza uno o más elementos de sintaxis que indican una restricción en latencia (por ejemplo, una restricción en la latencia de reordenamiento de fotogramas). La herramienta también recibe datos codificados para múltiples fotogramas de una secuencia de video. Al menos algunos de los datos codificados se descodifican para reconstruir uno de los fotogramas. La herramienta puede determinar la restricción en la latencia en base al/a los elemento/s de sintaxis, y usar luego la restricción en la latencia para determinar cuándo un fotograma reconstruido está listo para su salida (en términos de orden de salida). La herramienta emite el fotograma reconstruido.
Los anteriores y otros objetos, características y ventajas de la invención resultarán más evidentes a partir de la siguiente descripción detallada, que procede con referencia a las figuras que se acompañan.
Breve descripción de los dibujos
La figura 1 es un diagrama de un sistema informático de ejemplo en el que se pueden implantar algunas realizaciones descritas.
Las figuras 2a y 2b son diagramas de entornos de red de ejemplo en los que se pueden implantar algunas realizaciones descritas.
La figura 3 es un diagrama de un sistema de codificador de ejemplo junto con el cual se pueden implantar algunas realizaciones descritas.
La figura 4 es un diagrama de un sistema de descodificador de ejemplo junto con el cual se pueden implantar algunas realizaciones descritas.
Las figuras 5a-5e son diagramas que muestran el orden codificado y el orden de emisión de fotogramas en varias series de ejemplo.
La figura 6 es un diagrama de flujo que muestra una técnica de ejemplo para configurar y emitir uno o más elementos de sintaxis que indican una restricción en la latencia.
La figura 7 es un diagrama de flujo que muestra una técnica de ejemplo para descodificación de latencia reducida.
Descripción detallada
La descripción detallada presenta técnicas y herramientas para reducir la latencia en la codificación y descodificación de vídeo. Las técnicas y herramientas pueden ayudar a reducir la latencia como para que mejore la capacidad de respuesta en la comunicación en tiempo real.
En escenarios de codificación/descodificación de vídeo, es inevitable que se produzca algún retardo entre el tiempo en que se recibe un fotograma de vídeo de entrada y el momento en el que se reproduce el fotograma. El fotograma es codificado por un codificador, entregado a un descodificador y descodificado por el descodificador, y las limitaciones prácticas en los recursos de codificación, en los recursos de descodificación y/o en el ancho de banda de la red originan cierta cantidad de latencia. Sin embargo, otras latencias son evitables. Por ejemplo, un codificador y un descodificador podrían introducir latencia para mejorar el rendimiento de la distorsión de la velocidad (por ejemplo, para explotar las dependencias entre fotogramas de imágenes que se encuentran más tarde en una secuencia). Tal latencia se puede reducir, aunque puede haber una penalización en términos de rendimiento de distorsión de velocidad, utilización del procesador o fluidez de reproducción.
Con las técnicas y herramientas descritas en el presente documento, la latencia se reduce restringiendo la latencia (limitando, por consiguiente, la extensión temporal de las dependencias entre fotogramas) e indicando la restricción en la latencia a un descodificador. Por ejemplo, la restricción en la latencia es una restricción en la latencia de reordenamiento de fotogramas. Alternativamente, la restricción en la latencia es una restricción en términos de segundos, milisegundos u otra medida de tiempo. Luego, el descodificador puede determinar la restricción en la latencia y utilizar la restricción al determinar qué fotogramas están listos para la salida. De esta manera, se pueden reducir los retardos en conferencias de escritorio remoto, videotelefonía, videovigilancia, vídeo con cámara web y otras aplicaciones de comunicación en tiempo real.
Algunas de las innovaciones descritas en el presente documento se ilustran con referencia a elementos de sintaxis y a funciones específicas del estándar H.264 y/o del estándar HEVC. Tales innovaciones se pueden también implantar para otros estándares o formatos.
De manera más general, existen diversas alternativas a los ejemplos descritos en el presente documento. Se pueden alterar ciertas técnicas descritas con referencia a diagramas de flujo cambiando el orden de las etapas mostradas en los diagramas de flujo, repartiendo, repitiendo u omitiendo ciertas etapas, etc. Los diversos aspectos de la reducción de latencia para la codificación y descodificación de vídeo se pueden usar en combinación o por separado. Las diferentes realizaciones pueden utilizar una o más de las técnicas y herramientas descritas. Algunas de las técnicas y herramientas descritas en el presente documento abordan uno o más de los problemas de fondo señalados. Típicamente, una técnica/herramienta dada no resuelve todos estos problemas.
I. Ejemplos de sistemas informáticos.
La figura 1 ilustra un ejemplo generalizado de un sistema informático adecuado (100) en el que se pueden implantar varias de las técnicas y herramientas descritas. El sistema informático (100) no pretende sugerir ninguna limitación en cuanto al alcance de uso o funcionalidad, ya que las técnicas y herramientas pueden implantarse en diversos sistemas informáticos de fines generales o de fines especiales.
Con referencia a la figura 1, el sistema informático (100) incluye una o más unidades (110, 115) de procesamiento y memoria (120, 125). En la figura 1, esta configuración más básica (130) se incluye dentro de una línea discontinua. Las unidades (110, 115) de procesamiento ejecutan instrucciones ejecutables por ordenador. Una unidad de procesamiento puede ser una unidad central de procesamiento (CPU) de fines generales, un procesador en un circuito integrado de aplicación específica (ASIC) o cualquier otro tipo de procesador. En un sistema de multiprocesamiento, las múltiples unidades de procesamiento ejecutan instrucciones ejecutables por ordenador para aumentar la potencia de procesamiento. Por ejemplo, la figura 1 muestra una unidad central (110) de procesamiento, así como una unidad (115) de procesamiento de gráficos o unidad de coprocesamiento. La memoria tangible (120, 125) puede ser memoria volátil (por ejemplo, registros, caché, RAM), memoria no volátil (por ejemplo, ROM, EEPROM, memoria flash, etc.), o alguna combinación de ellas, accesible por la/s unidad/es de procesamiento. La memoria (120, 125) almacena equipo lógico informático (software) (180) que implanta una o más innovaciones para reducir la latencia en la codificación y descodificación de vídeo, en forma de instrucciones ejecutables por ordenador adecuadas para su ejecución por la/s unidad/es de procesamiento.
El sistema informático puede tener características adicionales. Por ejemplo, el sistema informático (100) incluye almacenamiento (140), uno o más dispositivos (150) de entrada, uno o más dispositivos (160) de salida y una o más conexiones (170) de comunicación. Un mecanismo de interconexión (no se muestra), tal como un bus, un controlador o una red, interconecta los componentes del sistema informático (100). Típicamente, el software del sistema operativo (no mostrado) proporciona un entorno operativo para otro software que se ejecuta en el sistema informático (100) y que coordina las actividades de los componentes del sistema informático (100).
El almacenamiento tangible (140) puede ser extraíble o no extraíble, e incluye discos magnéticos, cintas o casetes magnéticos, CD-ROM, DVD o cualquier otro medio que pueda usarse para almacenar información de manera no transitoria, y al que se pueda acceder dentro del sistema informático (100). El almacenamiento (140) almacena instrucciones para el software (180), implantando una o más innovaciones para la reducción de la latencia en la codificación y descodificación de vídeo.
El/los dispositivo/s (150) de entrada puede/n ser de entrada táctil, tal como un teclado, un ratón, un bolígrafo o una bola de rastreo, un dispositivo de entrada de voz, un dispositivo de escaneo, u otro dispositivo que dé entrada al sistema informático (100). Para la codificación de vídeo, el/los dispositivo/s (150) de entrada puede/n ser una cámara, una tarjeta de vídeo, una tarjeta sintonizadora de TV, o un dispositivo similar que acepte entrada de vídeo en forma analógica o digital, o un CD-ROM o un CD-RW que lea muestras de video en el sistema informático (100). El/los dispositivo/s (160) de salida puede/n ser un dispositivo de exhibición visual, una impresora, un altavoz, una grabadora de CD, u otro dispositivo que dé salida desde el sistema informático (100).
La conexión o las conexiones (170) de comunicación permiten la comunicación a través de un medio de comunicación con otra entidad informática. El medio de comunicación transmite información tal como instrucciones ejecutables por ordenador, entrada o salida de audio o vídeo u otros datos en una señal de datos modulada. Una señal de datos modulada es una señal que tiene una o más de sus características establecidas o modificadas de tal manera que es capaz de codificar información en la señal. A modo de ejemplo, y sin limitación, los medios de comunicación pueden utilizar un portador eléctrico, óptico, de RF u otro.
Las técnicas y herramientas se pueden describir en el contexto general de los medios legibles por ordenador. Los medios legibles por ordenador son cualquier medio tangible disponible al que se pueda acceder dentro de un entorno informático. A modo de ejemplo, y sin limitación, con el sistema informático (100), los medios legibles por ordenador incluyen memoria (120, 125), almacenamiento (140) y combinaciones de cualesquiera de los anteriores. Las técnicas y herramientas se pueden describir en el contexto general de instrucciones ejecutables por ordenador, tales como las incluidas en módulos de programa, que se ejecutan en un sistema informático en un procesador de objetivo real o virtual. Generalmente, los módulos de programa incluyen rutinas, programas, bibliotecas, objetos, clases, componentes, estructuras de datos, etc. que realizan tareas particulares o implantan tipos de datos abstractos particulares. La funcionalidad de los módulos de programa se puede combinar o repartir entre módulos de programa según se desee hacer en las diversas realizaciones. Las instrucciones ejecutables por ordenador para módulos de programa pueden ejecutarse dentro de un sistema informático local o distribuido.
Los términos "sistema" y "dispositivo" se usan indistintamente en el presente documento. A menos que el contexto indique claramente lo contrario, ninguno de los términos implica limitación alguna sobre un tipo de sistema informático o dispositivo informático. En general, un sistema informático o dispositivo informático puede ser local o distribuido, y puede incluir cualquier combinación de equipo físico informático (hardware) de fines especiales y/o de hardware de fines generales con software que implante la funcionalidad descrita en el presente documento.
A efectos de presentación, la descripción detallada utiliza términos como "determinar" y "usar" para describir procesos informáticos en un sistema informático. Estos términos son abstracciones de alto nivel para procesos realizados por un ordenador, y no deben confundirse con actos realizados por un ser humano. Los procesos informáticos reales correspondientes a estos términos varían dependiendo de la implantación.
II. Ejemplos de entornos de red.
Las figuras 2a y 2b muestran entornos (201, 202) de red de ejemplo que incluyen codificadores (220) de vídeo y descodificadores (270) de vídeo. Los codificadores (220) y descodificadores (270) están conectados a través de una red (250) usando un protocolo de comunicación apropiado. La red (250) puede incluir Internet u otra red informática. En el entorno (201) de red, mostrado en la figura 2a, cada herramienta (210) de comunicación en tiempo real ("RTC") incluye un codificador (220) y un descodificador (270) para comunicación bidireccional. Un codificador dado (220) puede producir una salida que cumpla con el estándar SMPTE 421M, con el estándar ISO-IEC 14496-10 (conocido también como H.264 o AVC), con el estándar HEVC, o con otro estándar, o con un formato propietario, aceptando, el descodificador correspondiente (270), datos codificados desde el codificador (220). La comunicación bidireccional puede ser parte de una videoconferencia, de una videollamada telefónica o de otro escenario de comunicación entre dos partes. Aunque el entorno (201) de red de la figura 2a incluye dos herramientas (210) de comunicación en tiempo real, el entorno (201) de red puede incluir, en cambio, tres o más herramientas (210) de comunicación en tiempo real que participan en la comunicación entre varias partes.
La codificación mediante un codificador (220) es gestionada por una herramienta (210) de comunicación en tiempo real. La figura 3 muestra un sistema (300) de codificador de ejemplo que puede incluirse en la herramienta (210) de comunicación en tiempo real. Alternativamente, la herramienta (210) de comunicación en tiempo real utiliza otro sistema de codificador. Una herramienta (210) de comunicación en tiempo real gestiona también la descodificación mediante un descodificador (270). La figura 4 muestra un sistema (400) de descodificador de ejemplo, que puede incluirse en la herramienta (210) de comunicación en tiempo real. Alternativamente, la herramienta (210) de comunicación en tiempo real utiliza otro sistema de descodificador.
En el entorno (202) de red mostrado en la figura 2b, la herramienta (212) de codificación incluye un codificador (220) que codifica vídeo para su entrega a múltiples herramientas (214) de reproducción, que incluyen descodificadores (270). Se puede proporcionar comunicación unidireccional para un sistema de videovigilancia, un sistema de monitorización de cámara web, una presentación de conferencia de escritorio remoto u otro escenario en el que se codifique vídeo y se envíe desde una ubicación a otra o a más ubicaciones. Aunque el entorno (202) de red en la figura 2b incluye dos herramientas (214) de reproducción, el entorno (202) de red puede incluir más o menos herramientas (214) de reproducción. En general, una herramienta (214) de reproducción se comunica con la herramienta (212) de codificación para determinar el flujo de vídeo para que lo reciba la herramienta (214) de reproducción. La herramienta (214) de reproducción recibe el flujo, almacena en una memoria intermedia los datos codificados recibidos durante un período apropiado, y comienza a descodificar y a reproducir.
La figura 3 muestra un sistema (300) de codificador de ejemplo que puede incluirse en la herramienta (212) de codificación. Alternativamente, la herramienta (212) de codificación utiliza otro sistema de codificador. La herramienta (212) de codificación puede también incluir lógica de controlador del lado del servidor para gestionar conexiones con una o más herramientas (214) de reproducción. La figura 4 muestra un sistema (400) de descodificador de ejemplo, que puede incluirse en la herramienta (214) de reproducción. Alternativamente, la herramienta (214) de reproducción utiliza otro sistema de descodificador. La herramienta (214) de reproducción puede también incluir lógica de controlador del lado del cliente para gestionar conexiones con la herramienta (212) de codificación.
En algunos casos, el uso de un elemento de sintaxis para indicar la latencia (por ejemplo, latencia de reordenamiento de fotogramas) es específico de un estándar o formato particular. Por ejemplo, los datos codificados pueden contener uno o más elementos de sintaxis que indiquen una restricción en la latencia como parte de la sintaxis de una corriente de bits de vídeo codificado elemental definida de acuerdo con el estándar o formato, o como metadatos de medios definidos relacionados con los datos codificados. En tales casos, la herramienta (210) de comunicación en tiempo real, la herramienta (212) de codificación y/o la herramienta (214) de reproducción con latencia reducida pueden depender del códec, en el sentido de que las decisiones que tomen pueden depender de la sintaxis de la corriente de bits para un estándar o formato.
En otros casos, el uso de un elemento de sintaxis para indicar una restricción en la latencia (por ejemplo, una latencia de reordenamiento de fotogramas) está fuera de un estándar o formato particular. Por ejemplo, el/los elemento/s de sintaxis que indique/n una restricción en la latencia puede/n señalizarse como parte de la sintaxis de una corriente de transmisión de medios, de un archivo de almacenamiento de medios, o, más en general, de un protocolo de transporte o de un protocolo de multiplexación de un sistema de medios. O bien, el/los elemento/s de sintaxis que indique/n latencia se puede/n negociar entre herramientas (210) de comunicación en tiempo real, herramientas (212) de codificación y/o herramientas (214) de reproducción de acuerdo con un protocolo de negociación de propiedades de medios. En tales casos, la herramienta (210) de comunicación en tiempo real, la herramienta (212) de codificación y la herramienta (214) de reproducción con latencia reducida pueden ser independientes del códec, en el sentido de que pueden funcionar con cualquier codificador y descodificador de vídeo disponible, asumiendo un nivel de control sobre las dependencias entre fotogramas establecidas durante la codificación.
III. Ejemplos de sistemas de codificador.
La figura 3 es un diagrama de bloques de un sistema (300) de codificador de ejemplo junto con el cual se pueden implantar algunas realizaciones descritas. El sistema (300) de codificador puede ser una herramienta de codificación de fines generales capaz de operar en cualquiera de múltiples modos de codificación tales como un modo de codificación de baja latencia para comunicación en tiempo real, modo de transcodificación y modo de codificación regular para reproducción multimedia desde un archivo. o flujo, o puede ser una herramienta de codificación de fines especiales adaptada para uno de tales modos de codificación. El sistema (300) de codificador se puede implantar como un módulo de sistema operativo, como parte de una biblioteca de aplicaciones o como una aplicación independiente. En general, el sistema (300 de codificador) recibe una secuencia de fotogramas (311) de vídeo fuente desde una fuente (310) de vídeo y produce datos codificados como salida a un canal (390). La salida de datos codificados al canal puede incluir uno o más elementos de sintaxis que indiquen una restricción en la latencia (por ejemplo, en la latencia de reordenamiento de fotogramas) para facilitar la descodificación de latencia reducida.
La fuente (310) de vídeo puede ser una cámara, una tarjeta sintonizadora, un medio de almacenamiento u otra fuente de vídeo digital. La fuente (310) de vídeo produce una secuencia de fotogramas de vídeo a una velocidad de fotogramas de, por ejemplo, 30 fotogramas por segundo. Del modo en que se utiliza en el presente documento, el término "fotograma" se refiere en general a datos de imagen fuente, codificados o reconstruidos. Para vídeo progresivo, un fotograma es un fotograma de vídeo progresivo. Para vídeo entrelazado, en realizaciones de ejemplo, un fotograma de vídeo entrelazado se desentrelaza antes de la codificación. Alternativamente, dos campos de vídeo entrelazados complementarios se codifican como un fotograma de vídeo entrelazado o como campos separados. Además de indicar un fotograma de vídeo progresivo, el término "fotograma" puede indicar un único campo de vídeo no emparejado, un par complementario de campos de vídeo, un plano de objeto de vídeo que representa un objeto de vídeo en un momento dado o una región de interés en una imagen más grande. El plano o región del objeto de vídeo puede ser parte de una imagen más grande que incluya múltiples objetos o regiones de una escena.
El fotograma fuente (311) entrante se almacena en un área (320) de almacenamiento de memoria temporal de fotogramas fuente que incluye múltiples áreas (321, 322, ... , 32n) de almacenamiento de memoria intermedia de fotogramas. La memoria intermedia (321, 322, etc.) de fotogramas contiene un fotograma fuente en el área (320) de almacenamiento de fotogramas fuente. Después de que uno o más de los fotogramas fuente (311) se hayan almacenado en las memorias intermedias de fotogramas (321, 322, etc.) de fotogramas, un selector (330) de fotogramas selecciona periódicamente un fotograma fuente individual del área (320) de almacenamiento de fotogramas fuente. El orden en el que los fotogramas son seleccionados por el selector (330) de fotogramas para su entrada al codificador (340) puede diferir del orden en el que los fotogramas son producidos por la fuente (310) de vídeo; por ejemplo, un fotograma puede ponerse adelantado en orden, para facilitar la predicción temporalmente hacia atrás. Antes del codificador (340), el sistema (300) de codificador puede incluir un preprocesador (no mostrado) que realiza un preprocesamiento (por ejemplo, un filtrado) del fotograma (331) seleccionado antes de la codificación.
El codificador (340) codifica el fotograma seleccionado (331) para producir un fotograma codificado (341) y produce también señales (342) de control de gestión de memoria. Si el fotograma actual no es el primer fotograma que ha sido codificado, al realizar su proceso de codificación, el codificador (340) puede usar uno o más fotogramas previamente codificados/descodificados (369), que han sido almacenados en un área (360) de almacenamiento de memoria temporal de fotogramas descodificados. Tales fotogramas descodificados almacenados (369) se usan como fotogramas de referencia para la predicción entre fotogramas del contenido del fotograma fuente actual (331). Generalmente, el codificador (340) incluye múltiples módulos de codificación que realizan tareas de codificación, tales como estimación y compensación de movimiento, transformaciones de frecuencia, cuantificación, y codificación de entropía. Las funciones exactas realizadas por el codificador (340) pueden variar dependiendo del formato de compresión. El formato de los datos codificados de salida puede ser un formato Windows Media vídeo, un formato VC-1, un formato MPEG-x (por ejemplo, MPEG-1, MPEG-2 o MPEG-4), un formato H.26x (por ejemplo, H. 261, H.262, H.263, H.264), un formato HEVC, u otro formato.
Los fotogramas codificados (341) y las señales (342) de control de gestión de memoria son procesadas por un emulador (350) de proceso de descodificación. El emulador (350) de proceso de descodificación implanta algunas de las funciones de un descodificador, por ejemplo, tareas de descodificación para reconstruir fotogramas de referencia que utiliza el codificador (340) en la estimación y compensación del movimiento. El emulador (350) de proceso de descodificación utiliza las señales (342) de control de gestión de memoria para determinar si un fotograma codificado dado (341) necesita ser reconstruido y almacenado para su uso como fotograma de referencia en la predicción entre fotogramas de fotogramas posteriores a codificar. Si las señales (342) de control indican que es necesario almacenar un fotograma codificado (341), el emulador (350) de proceso de descodificación modela el proceso de descodificación que sería realizado por un descodificador que recibiera el fotograma codificado (341) y produce el correspondiente fotograma descodificado (351). Al hacerlo, cuando el codificador (340) ha usado uno o varios fotogramas descodificados (369) que se han almacenado en el área (360) de almacenamiento de fotogramas descodificados, el emulador (350) de proceso de descodificación utiliza también el/los fotograma/s descodificado/s (369) desde el área (360) de almacenamiento como parte del proceso de descodificación.
El área (360) de almacenamiento de memoria temporal de fotogramas descodificados incluye múltiples áreas (361, 362, ..., 36n) de almacenamiento intermedio de fotogramas. El emulador (350) de proceso de descodificación utiliza las señales (342) de control de gestión de memoria para gestionar el contenido del área (360) de almacenamiento con el fin de identificar cualesquiera memorias intermedias (361, 362, etc.) de fotograma con fotogramas que ya no le son necesarios al codificador (340) para su uso como fotogramas de referencia. Después de modelar el proceso de descodificación, el emulador (350) de proceso de descodificación almacena un fotograma recién descodificado (351) en una memoria intermedia (361, 362, etc.) de fotograma que ha sido identificada de esta manera.
Los fotogramas codificados (341) y las señales (342) de control de gestión de memoria se almacenan también como memoria intermedia en un área temporal (370) de datos codificados. Los datos codificados que se agregan en el área (370) de datos codificados pueden contener, como parte de la sintaxis de una corriente de bits de vídeo codificado elemental, uno o más elementos de sintaxis que indiquen una restricción en la latencia. O bien, los datos codificados que se agregan en el área (370) de datos codificados pueden incluir uno o varios elementos de sintaxis que indica/n una restricción en la latencia como parte de los metadatos de medios relacionados con los datos de vídeo codificados (por ejemplo, como uno o más parámetros en uno o más mensajes de información de perfeccionamiento suplementario ("SEI") o uno o más mensajes de información de usabilidad de vídeo ("VUI").
Los datos agregados (371) del área de datos codificados temporales (370) son procesados por un codificador (380) de canal. El codificador (380) de canal puede empaquetar los datos agregados para su transmisión como una corriente de medios, en cuyo caso el codificador de canal (380) puede agregar, como parte de la sintaxis de la corriente de transmisión de medios, uno o varios elementos de sintaxis que indique/n una restricción en la latencia. O bien, el codificador (380) de canal puede organizar los datos agregados para su almacenamiento como un archivo, en cuyo caso el codificador (380) de canal puede agregar, como parte de la sintaxis del archivo de almacenamiento de medios, uno o varios elementos de sintaxis que indique/n una limitación de la latencia. O bien, más en general, el codificador (380) de canal puede implantar uno o más protocolos de multiplexación o protocolos de transporte del sistema de medios, en cuyo caso el codificador (380) de canal puede añadir, como parte de la sintaxis del/de los protocolo/s, uno o varios elementos de sintaxis que indique/n una restricción en la latencia. El codificador (380) de canal da salida a un canal (390), que representa almacenamiento, una conexión de comunicaciones, u otro canal para la salida.
IV. Ejemplo de sistemas de descodificador.
La figura 4 es un diagrama de bloques de un sistema (400) de descodificador de ejemplo junto con el cual se pueden implantar algunas realizaciones descritas. El sistema (400) de descodificador puede ser una herramienta de descodificación de fines generales capaz de funcionar en uno cualquiera de múltiples modos de descodificación tales como un modo de descodificación de baja latencia para comunicación en tiempo real y un modo de descodificación regular para reproducción multimedia desde un archivo o corriente, o puede ser una herramienta de descodificación de fines especiales adaptada para uno de tales modos de descodificación. El sistema (400) de descodificador se puede implantar como un módulo de sistema operativo, como parte de una biblioteca de aplicaciones o como una aplicación independiente. En general, el sistema (400) de descodificador recibe datos codificados desde un canal (410) y produce fotogramas reconstruidos como salida para un destino (490) de salida. Los datos codificados pueden incluir uno o más elementos de sintaxis que indiquen una restricción en la latencia (por ejemplo, latencia de reordenamiento de fotogramas) para facilitar la descodificación de latencia reducida.
El sistema (400) de descodificador incluye un canal (410), que puede representar almacenamiento, una conexión de comunicaciones u otro canal para datos codificados como entrada. El canal (410) produce datos codificados que han sido codificados en canal. Un descodificador (420) de canal puede procesar los datos codificados. Por ejemplo, el descodificador (420) de canal despaquetiza datos que se han agregado para su transmisión como una corriente de medios, en cuyo caso el descodificador (420) de canal puede analizar, como parte de la sintaxis del flujo de transmisión de medios, el/los elemento/s de sintaxis que indiquen una restricción en la latencia. O el descodificador de canal (420) separa datos de vídeo codificados que se han agregado para su almacenamiento como un archivo, en cuyo caso el descodificador de canal (420) puede analizar, como parte de la sintaxis del archivo de almacenamiento de medios, elemento/s de sintaxis que indiquen una restricción en la latencia. O bien, más generalmente, el descodificador (420) de canal puede implantar uno o más protocolos de demultiplexación o protocolos de transporte del sistema de medios, en cuyo caso el descodificador (420) de canal puede analizar, como parte de la sintaxis del/de los protocolo/s, uno o varios elementos de sintaxis que indiquen una restricción en la latencia.
Los datos codificados (421) que salen del descodificador de canal (420) se almacenan en un área temporal (430) de datos codificados hasta que se haya recibido la cantidad suficiente de tales datos. Los datos codificados (421) incluyen fotogramas codificados (431) y señales (432) de control de gestión de memoria. Los datos codificados (421) en el área de datos codificados (430) pueden contener, como parte de la sintaxis de una corriente de bits de vídeo codificada elemental, uno o más elementos de sintaxis que indiquen una restricción en la latencia. O bien, los datos codificados (421) en el área (430) de datos codificados pueden incluir elementos de sintaxis que indiquen una restricción en la latencia como parte de los metadatos de medios relacionados con los datos de vídeo codificados (por ejemplo, como uno o más parámetros en uno o más mensajes SEI o mensajes VUI). En general, el área (430) de datos codificados almacena temporalmente datos codificados (421) hasta que tales datos codificados (421) sean usados por el descodificador (450). En ese punto, los datos codificados para un fotograma codificado (431) y las señales (432) de control de gestión de memoria se transfieren desde el área (430) de datos codificados al descodificador (450). A medida que continúa la descodificación, se añaden nuevos datos codificados al área (430) de datos codificados, y los datos codificados más antiguos que quedan en el área (430) de datos codificados se transfieren al descodificador (450).
El descodificador (450) descodifica periódicamente un fotograma codificado (431) para producir un fotograma descodificado correspondiente (451). Según sea apropiado, al realizar su proceso de descodificación, el descodificador (450) puede usar uno o más fotogramas (469) previamente descodificados como fotogramas de referencia para la predicción entre fotogramas. El descodificador (450) lee tales fotogramas (469) previamente descodificados desde un área (460) de almacenamiento de memoria temporal de fotogramas descodificados. Generalmente, el descodificador (450) incluye múltiples módulos de descodificación que realizan tareas de descodificación tales como descodificación de entropía, cuantificación inversa, transformaciones de frecuencia inversa y compensación de movimiento. Las funciones exactas realizadas por el descodificador (450) pueden variar dependiendo del formato de compresión.
El área (460) de almacenamiento de memoria temporal de fotogramas descodificados incluye múltiples áreas (461, 462,..., 46n) de almacenamiento intermedio de fotogramas. El área (460) de almacenamiento de fotogramas descodificados es un ejemplo de una memoria intermedia de imágenes descodificadas. El descodificador (450) utiliza las señales (432) de control de gestión de memoria para identificar una memoria intermedia (461, 462, etc.) de fotogramas en la que pueda almacenar un fotograma descodificado (451). El descodificador (450) almacena el fotograma descodificado (451) en esa memoria intermedia de fotograma.
Un secuenciador (480) de salida utiliza las señales (432) de control de gestión de memoria para identificar cuándo el siguiente fotograma a producir en el orden de salida está disponible en el área (460) de almacenamiento de fotogramas descodificados. Para reducir la latencia del sistema de codificación-descodificación, el secuenciador (480) de salida utiliza elementos de sintaxis que indican restricciones en la latencia para acelerar la identificación de los fotogramas que se producirán en el orden de salida. Cuando el siguiente fotograma (481) que se va a producir en el orden de salida está disponible en el área (460) de almacenamiento de fotogramas descodificados, es leído por el secuenciador (480) de salida, y emitido al destino (490) de salida (por ejemplo, a un dispositivo de exhibición visual). En general, el orden en el que el secuenciador (480) de salida emite los fotogramas desde el área (460) de almacenamiento de fotogramas descodificados puede diferir del orden en el que el descodificador (450) descodifica los fotogramas.
V. Elementos de sintaxis que facilitan codificación y descodificación de latencia reducida.
En la mayoría de los sistemas de códec de vídeo, el orden codificado (también llamado orden de descodificación u orden de corriente de bits) es el orden en el que los fotogramas de vídeo se representan en datos codificados en una corriente de bits, y, por consiguiente, en el que se procesan durante la descodificación. El orden codificado puede diferir del orden en el que los fotogramas son capturados por una cámara antes de la codificación y diferir del orden en el que los fotogramas descodificados se exhiben visualmente, se almacenan o se emiten de otro modo tras la descodificación (orden de salida u orden de exhibición visual). Reordenar los fotogramas en relación con el orden de salida tiene beneficios (principalmente en términos de capacidad de compresión), pero aumenta la latencia de extremo a extremo en los procesos de codificación y descodificación.
Las técnicas y herramientas descritas en el presente documento reducen la latencia debida al reordenamiento de fotogramas de vídeo y, al proporcionar información sobre las restricciones de la latencia de reordenamiento a los sistemas descodificadores, facilitan también la reducción de latencia por los sistemas descodificadores. Tal reducción de latencia es útil para muchos fines. Por ejemplo, se puede utilizar para reducir el desfase temporal que se produce en la comunicación por vídeo interactiva utilizando un sistema de videoconferencia, de modo que el flujo de conversación y la interactividad de la comunicación entre participantes remotos sean más rápidos y naturales.
A. Enfoques para disposición temporal de salida y orden de salida.
De acuerdo con el estándar H.264, el descodificador puede utilizar dos enfoques para determinar cuándo un fotograma descodificado está listo para ser emitido. El descodificador puede utilizar información de disposición temporal en forma de instantáneas de tiempo de descodificación y de instantáneas de tiempo de salida (por ejemplo, como se señaliza en mensajes SEI de disposición temporal de imágenes). O bien, el descodificador puede usar límites de capacidad de almacenamiento intermedio señalizados con diversos elementos de sintaxis para determinar cuándo un fotograma descodificado está listo para ser emitido.
La información de disposición temporal se puede asociar con cada fotograma descodificado. El descodificador puede utilizar información de disposición temporal para determinar cuándo se puede emitir el fotograma descodificado. Sin embargo, en la práctica, tal información de disposición temporal puede no estar disponible para el descodificador. Lo que es más, incluso cuando la información de disposición temporal esté disponible, algunos descodificadores no utilizan en realidad esta información (por ejemplo, porque el descodificador ha sido diseñado para funcionar independientemente de si la información de disposición temporal está disponible).
Los límites de capacidad de almacenamiento en memoria intermedia se indican con varios elementos de sintaxis de acuerdo con el estándar H.264 (y versiones preliminares del estándar HEVC), incluyendo el elemento de sintaxis max_dec_frame_buffering, el elemento de sintaxis num_reorder_frames, información de orden relativa (denominada información de "recuento de orden de imágenes"), y otra información de control de gestión de memoria señalizada en la corriente de bits. El elemento de sintaxis max_dec_frame_buffering (o la variable derivada especificada como MaxDpbFrames) especifica el tamaño requerido de la memoria intermedia de imagen descodificada ("DPB") en unidades de memoria intermedia de fotogramas. Como tal, el elemento de sintaxis max_dec_frame_buffering expresa la capacidad de memoria de nivel superior utilizada para una secuencia de vídeo codificada, como para permitir que el descodificador emita imágenes en el orden correcto. El elemento de sintaxis num_reorder_frames (o max_num _reorder_frames) indica el número máximo de fotogramas (o de pares de campos complementarios, o de campos no emparejados) que pueden preceder a cualquier fotograma (o a cualquier par de campos complementarios, o a cualquier campo no emparejado) en orden codificado y cómo sigue en orden de salida. En otras palabras, num_reorder_frames especifica una restricción en la capacidad de memoria necesaria para reordenar imágenes. El elemento de sintaxis max_num_ref_frames especifica el número máximo de fotogramas de referencia de corto y largo plazo (o de pares de campos de referencia complementarios, o de campos de referencia no emparejados) que puede usar el proceso de descodificación para la interpredicción de cualquier imagen en la secuencia. El elemento de sintaxis max_num_ref_frames determina también el tamaño de la ventana deslizante para marcar la imagen de referencia descodificada. Al igual que num_reorder_frames, max_num_ref_frames especifica una restricción en la capacidad de memoria requerida.
Un descodificador utiliza los elementos de sintaxis max_dec_frame_buffering (o MaxDpbFrames) y num_reorder_frames para determinar cuándo se ha excedido el límite de capacidad de almacenamiento intermedio. Esto sucede, por ejemplo, cuando es necesario almacenar un nuevo fotograma descodificado en la DPB, pero no queda espacio disponible en la DPB. En esta situación, el descodificador utiliza información de recuento del orden de las imágenes para identificar, entre las imágenes que han sido descodificadas, cuál es la más temprana en el orden de salida. A continuación, se emite la imagen que aparece más temprano en el orden de salida. Tal procesamiento se denomina a veces "tirada" porque una imagen "se tira" de la d Pb cuando llega una nueva imagen que debe almacenarse.
La información indicada con los elementos de sintaxis max_dec_frame_buffering (o MaxDpbFrames) y num_reorder_frames es suficiente para determinar la capacidad de memoria necesaria en un descodificador. Sin embargo, cuando se utiliza para controlar el proceso de "tirada" de la salida de imágenes, el uso de tal información puede introducir latencia innecesariamente. Como se define en el estándar H.264, los elementos de sintaxis max_dec_frame_buffering y num_reorder_frames no establecen un límite en la cantidad de reordenamiento que se puede aplicar a cualquier imagen en particular, y, por consiguiente, no establecen un límite en la latencia de extremo a extremo. Independientemente de los valores de estos elementos de sintaxis, una imagen particular puede mantenerse en la DPB durante un tiempo arbitrariamente largo antes de que salga, lo que corresponde a una latencia substancial añadida mediante el almacenamiento previo en la memoria intermedia de las imágenes fuente mediante un codificador.
B. Elementos de sintaxis que indican restricciones en latencia de reordenamiento de fotogramas.
Las técnicas y herramientas descritas en el presente documento reducen la latencia en un sistema de comunicación por vídeo. Una herramienta de codificación, una herramienta de comunicación en tiempo real, u otra herramienta establece un límite en el grado de reordenamiento que se puede aplicar a cualquier fotograma de una secuencia de vídeo codificada. Por ejemplo, el límite se expresa como un número de fotogramas que pueden preceder a cualquier fotograma dado en una secuencia de vídeo codificada en orden de salida y seguirlo en orden codificado. El límite restringe la latencia de reordenamiento permitida para cualquier fotograma particular de la secuencia. Dicho de otra manera, el límite restringe el grado temporal de reordenamiento (en términos de fotogramas) entre el orden codificado y el orden de salida que se puede aplicar a cualquier fotograma en particular. Limitar el alcance del reordenamiento ayuda a reducir el retardo de extremo a extremo. Además, establecer tal límite puede resultar útil en protocolos de negociación de sistemas en tiempo real o especificaciones de aplicaciones para escenarios de uso en los que es importante reducir la latencia.
La restricción en la latencia de reordenamiento de fotogramas viene indicada por uno o más elementos de sintaxis. Señalizar una restricción en la latencia de reordenamiento de fotogramas facilita la negociación a nivel de sistema para la comunicación interactiva en tiempo real o para otros escenarios de uso. Proporciona una manera de expresar directamente las restricciones en latencia de reordenamiento de fotogramas y caracterizar las propiedades de una sesión o corriente de medios.
El descodificador de vídeo puede utilizar una restricción indicada en la latencia de reordenamiento de fotogramas para permitir la salida con latencia reducida de fotogramas de vídeo descodificados. En particular, en comparación con los procesos de "tirada" de fotogramas, la señalización de una restricción en la latencia de reordenamiento de fotogramas permite al descodificador identificar de manera más simple y rápida los fotogramas en una DPB que están listos para ser emitidos. Por ejemplo, el descodificador puede determinar el estado de latencia de un fotograma en la DPB calculando la diferencia entre el orden codificado para el fotograma y el orden de salida. Comparando el estado de latencia del fotograma con la restricción en la latencia de reordenamiento de fotogramas, el descodificador puede determinar cuándo se ha alcanzado la restricción en la latencia de reordenamiento de fotogramas. El descodificador puede emitir inmediatamente cualquier fotograma que haya alcanzado este límite. Esto puede ayudar al descodificador a identificar más rápidamente los fotogramas que están listos para su salida, en comparación con los procesos de "tirada" que utilizan una variedad de elementos de sintaxis y estructuras de rastreo. De esta manera, el descodificador puede determinar rápidamente (y más temprano) cuándo se puede emitir un fotograma descodificado. Cuanto más rápido (y más pronto) pueda el descodificador identificar cuándo se pueden emitir fotogramas, más rápidamente (y más pronto) el descodificador podrá enviar vídeo a un dispositivo de exhibición visual o a etapas de procesamiento posteriores.
De este modo, usando la restricción en la latencia de reordenamiento de fotogramas, el descodificador puede comenzar la salida de fotogramas desde el área de almacenamiento de fotogramas descodificados antes de que el área de almacenamiento de fotogramas descodificados esté llena, pero aún así proporcionar descodificación conforme (es decir, que podrá descodificar todos los fotogramas de tal manera que los fotogramas sean coincidencias de bits exactas de fotogramas descodificados usando otro esquema convencional). Esto reduce significativamente el retardo cuando el retardo (en fotogramas) indicado por el elemento de sintaxis de latencia es mucho menor que el tamaño (en fotogramas) del área de almacenamiento de fotogramas descodificados.
Las figuras 5a-5e ilustran series (501-505) de fotogramas que tienen diferentes dependencias entre fotogramas. Las series se caracterizan por diferentes valores para (1) la restricción de la capacidad de memoria necesaria para reordenar imágenes (es decir, el número de memorias intermedias de fotogramas utilizados para almacenar fotogramas de referencia con fines de reordenamiento, por ejemplo, como se indica con un elemento de sintaxis num_reorder_frames, y (2) una restricción en la latencia de reordenamiento de fotogramas, por ejemplo, según lo
especificado por la variable MaxLatencyFrames. En las figuras 5a-5e, para un fotograma dado<F>r ;<^>, el subíndicejindica la posición del fotograma en el orden de salida y el superíndicekindica la posición del fotograma en el orden codificado. Los fotogramas se muestran en orden de salida; el valor del subíndice del orden de salida aumenta de izquierda a derecha. Las flechas ilustran las dependencias entre fotogramas para compensación de movimiento, de acuerdo con la cual los fotogramas anteriores en orden codificado se utilizan para la predicción de fotogramas posteriores en orden codificado. Para simplificar, las figuras 5a-5e muestran dependencias entre fotogramas a nivel de fotograma (y no a nivel de macrobloques, bloques, etc. en los que los fotogramas de referencia pueden cambiar), y las figuras 5a-5e muestran como máximo dos fotogramas como fotogramas de referencia para un fotograma dado. En la práctica, en algunas implantaciones, diferentes macrobloques, bloques, etc. de un fotograma dado pueden usar diferentes fotogramas de referencia, y se pueden usar más de dos fotogramas de referencia para el fotograma dado.
En la figura 5a, la serie (501) incluye nueve fotogramas. El último fotograma F81 en el orden de salida utiliza el primer fotograma F<00>como fotograma de referencia. Los otros fotogramas de la serie (501) utilizan tanto el último fotograma F81 como el primer fotograma F<00>como fotogramas de referencia. Esto significa que el fotograma F<00>se descodifica primero, seguido del fotograma F81, seguido del fotograma F<12>, etc. En la serie (501) que se muestra en la figura 5a, el valor de num_reorder_frames es 1. En cualquier punto del procesamiento del sistema de descodificador, entre los fotogramas mostrados en la figura 5a, hay sólo un fotograma (F81) almacenado en el área de almacenamiento de fotogramas descodificados parafines de reordenamiento.(El primer fotograma F<00>se utiliza también como fotograma de referencia y se almacena, pero no se almacena para fines de reordenamiento. Debido a que el orden de salida para el primer fotograma F<00>es menor que el orden de salida de los fotogramas intermedios, el primer fotograma F<00>no cuenta para fines de num_reorder_frames.) A pesar del bajo valor de num_reorder_frames, la serie (501) tiene una latencia relativamente alta: el valor de MaxLatencyFrames es 7. Después de codificar el primer fotograma F<00>, el codificador espera hasta que se hayan almacenado en la memoria intermedia ocho fotogramas fuente más, antes de codificar el siguiente fotograma F<i 2>en el orden de salida, porque el siguiente fotograma F<i 2>depende del último fotograma F<81>de la serie (501). El valor de MaxLatencyFrames es efectivamente la diferencia máxima permitida entre el valor del subíndice y el valor del superíndice para cualquier fotograma codificado en particular.
En la figura 5b, la serie (502) incluye nueve fotogramas, como en la serie (501) de la figura 5a, pero las dependencias entre fotogramas son diferentes. El reordenamiento temporal de los fotogramas se produce en períodos cortos. Como resultado, la serie (502) tiene una latencia mucho menor: el valor de MaxLatencyFrames es 1. El valor de num_reorder_frames sigue siendo 1.
En la figura 5c, la serie (503) incluye diez fotogramas. La dependencia entre fotogramas más larga es (en extensión temporal) más corta que la dependencia entre fotogramas más larga de la figura 5a, pero más larga que la dependencia entre fotogramas más larga de la figura 5b. La serie (503) tiene el mismo valor bajo de 1 para num_reorder_frames y tiene un valor relativamente bajo de 2 para MaxLatencyFrames. Por lo tanto, la serie (503) permite una latencia de extremo a extremo más baja que la serie (501) de la figura 5a, aunque no tan baja como la latencia que puede permitirse de la serie (502) de la figura 5b.
En la figura 5d, la serie (504) incluye fotogramas organizados en una jerarquía temporal con tres capas temporales de acuerdo con dependencias entre fotogramas. La capa de resolución temporal más baja incluye el primer fotograma F<00>y el último fotograma F<81>. La siguiente capa de resolución temporal añade el fotograma F42, que depende del primer fotograma F<00>y del último fotograma F<81>. La capa de resolución temporal más alta añade los fotogramas restantes. La serie (504) que se muestra en la figura 5d tiene un valor relativamente bajo de 2 para num_reorder_frames, pero un valor relativamente alto de 7 para MaxLatencyFrames, al menos para la capa de resolución temporal más alta, debido a la diferencia entre el orden codificado y el orden de salida para el último fotograma F<81>. Si se descodifica sólo la capa de resolución temporal intermedia o la capa de resolución temporal más baja, la restricción en el retardo de reordenamiento de fotogramas se puede reducir a 1 (para la capa intermedia) o a 0 (para la capa más baja). Para facilitar la descodificación de latencia reducida en diversas resoluciones temporales, los elementos de sintaxis pueden indicar restricciones en la latencia de reordenamiento de fotogramas para diferentes capas en una jerarquía temporal.
En la figura 5e, la serie (505) incluye fotogramas organizados en una jerarquía temporal con tres capas temporales de acuerdo con diferentes dependencias entre fotogramas. La capa de resolución temporal más baja incluye el primer fotograma F<00>, el fotograma medio F<41>y el último fotograma F<85>. La siguiente capa de resolución temporal agrega los fotogramas F<22>(que depende del primer fotograma F<00>y del fotograma medio F<41>) y F<66>(que depende del fotograma medio F<41>y del último fotograma F<85>). La capa de resolución temporal más alta agrega los fotogramas restantes. En comparación con la serie (504) de la figura 5d, la serie (505) de la figura 5e tiene todavía un valor relativamente bajo de 2 para num_reorder_frames, pero tiene un valor más bajo de 3 para MaxLatencyFrames, al menos para la capa de resolución temporal más alta, debido a la diferencia entre el orden codificado y el orden de salida para el fotograma medio F<41>y para el último fotograma F<85>. Si se descodifica sólo la capa de resolución temporal intermedia o la capa de resolución temporal más baja, la restricción en el retardo de reordenamiento de fotogramas se puede reducir a 1 (para la capa intermedia) ó a 0 (para la capa más baja).
En los ejemplos mostrados en las figuras 5a-5e, si se conoce el valor de MaxLatencyFrames, el descodificador puede identificar ciertos fotogramas como listos para la salida inmediata al recibir el fotograma anterior en el orden de salida. Para un fotograma dado, el valor del orden de salida del fotograma menos el valor del orden codificado del fotograma puede ser igual al valor de MaxLatencyFrames. En este caso, el fotograma dado está listo para su salida tan pronto como se reciba el fotograma que le precede en el orden de salida. (Por el contrario, tales fotogramas no se podrían identificar como listos para la salida usando sólo num_reorder_frames hasta que se recibieran fotogramas adicionales o se alcanzara el final de la secuencia). En particular, un descodificador puede usar el valor de MaxLatencyFrames para permitir una salida más temprana de los siguientes fotogramas:
- En la serie (501) de la figura 5a, el fotograma F<81>.
- En la serie (502) de la figura 5b, los fotogramas F<21>, F<43>, F<65>, y F<87>
- En la serie (503) de la figura 5c, los fotogramas F<31>, F<64>, y F<97>
- En la serie (504) de la figura 5d, el fotograma F<81>.
- En la serie (505) de la figura 5e, los fotogramas F<41>y F<85>.
Además, la declaración o la negociación del valor de MaxLatencyFrames a nivel de sistema puede proporcionar una expresión resumida de las características de latencia de la sesión o corriente de bits de una manera que no se permite mediante la medición de la capacidad de almacenamiento de reordenamiento y la indicación de tal capacidad utilizando num_reorder_frames.
C. Implantaciones de ejemplo.
Los elementos de sintaxis que indiquen una restricción en la latencia de reordenamiento de fotogramas se pueden señalizar de diversas maneras, dependiendo de la implantación. Los elementos de sintaxis pueden señalizarse como parte de un conjunto de parámetros de secuencia ("SPS"), de un conjunto de parámetros de imagen ("PPS"), u otro elemento de la corriente de bits, señalizarse como parte de mensajes SEI, mensajes VUI u otros metadatos, o señalizarse de alguna otra manera. En cualquiera de las implantaciones, un elemento de sintaxis que indique un valor de restricción puede codificarse usando codificación Golomb exponencial sin signo, alguna otra forma de codificación de entropía o codificación de longitud fija, y luego señalizarse. Un descodificador realiza la descodificación correspondiente después de recibir el elemento de sintaxis.
En una primera implantación, se señaliza un indicador maxjatencyjimitation. Si el indicador tiene un primer valor binario (por ejemplo, 0), no se impone ninguna restricción en la latencia de reordenamiento de fotogramas. En este caso, el valor de un elemento de sintaxis max_latency_frames no se señaliza o se ignora. De lo contrario (si el indicador tiene un segundo valor binario como 1), el valor del elemento de sintaxis max_latency_frames se señaliza para indicar la restricción en la latencia de reordenamiento de fotogramas. Por ejemplo, en este caso, el valor señalizado para el elemento de sintaxis max_latency_frames puede ser cualquier valor entero no negativo.
En una segunda implantación, se señaliza un elemento de sintaxis max_latency_frames_plus1 para indicar la restricción en la latencia de reordenamiento de fotogramas. Si max_latency_frames_plus1 tiene un primer valor (por ejemplo, 0), no se impone ninguna restricción en la latencia de reordenamiento de fotogramas. Para otros valores (por ejemplo, valores distintos de cero), el valor de la restricción en la latencia de reordenamiento de fotogramas se establece en max_latency_frames_plusl - 1. Por ejemplo, el valor de max_latency_frames_plus1 está en el intervalo de 0 a 232 - 2, inclusive.
De manera similar, en una tercera implantación, se señaliza un elemento de sintaxis max_latency_frames para indicar la restricción en la latencia de reordenamiento de fotogramas. Si max_latency_frames tiene un primer valor (por ejemplo, un valor máximo), no se impone ninguna restricción en la latencia de reordenamiento de fotogramas. Para otros valores (por ejemplo, valores inferiores al valor máximo), el valor de la restricción en la latencia de reordenamiento de fotogramas se establece en max_latency_frames.
En una cuarta implantación, la restricción en la latencia de reordenamiento de fotogramas se indica en relación con un tamaño máximo de memoria de fotogramas. Por ejemplo, la restricción de latencia se señaliza como un aumento en relación con el elemento de sintaxis num_reorder_frames. Normalmente, la restricción en la latencia de reordenamiento de fotogramas (en términos de fotogramas) es mayor o igual que num_reorder_frames. Para ahorrar bits en la señalización de la restricción de latencia, la diferencia entre la restricción de latencia y num_reorder_frames se codifica (por ejemplo, usando codificación Golomb exponencial sin signo, alguna otra forma de codificación de entropía) y luego se señaliza. Se señaliza un elemento de sintaxis max_latency_increase_plus1 para indicar la restricción en la latencia de reordenamiento de fotogramas. Si max_latency_increase_plus1 tiene un primer valor (por ejemplo, 0), no se impone ninguna restricción en la latencia de reordenamiento de fotogramas. Para otros valores (por ejemplo, valores distintos de cero), el valor de la restricción en la latencia de reordenamiento de fotogramas se establece en num_reorder_frames max_latency_increase_plus1 - 1. Por ejemplo, que el valor de max_latency_increase_plus1 esté en el intervalo de 0 a 232 - 2, inclusive.
Alternativamente, se señalizan de alguna otra manera uno o más elementos de sintaxis que indiquen una restricción en la latencia de reordenamiento de fotogramas.
D. Otras maneras de indicar restricciones en la latencia.
En muchos de los ejemplos anteriores, la restricción en la latencia es una restricción en la latencia de reordenamiento de fotogramas que se expresa en términos de un recuento de fotogramas. De manera más general, la restricción en la latencia es una restricción de retardo que puede expresarse en términos de un recuento de fotogramas o en términos de segundos, milisegundos u otra medida de tiempo. Por ejemplo, la restricción en la latencia se puede expresar como una medida de tiempo absoluta, tal como 1 segundo o 0,5 segundos. Un codificador puede convertir tal medida de tiempo en un recuento de fotogramas (considerando la velocidad de fotogramas del vídeo) y luego codificar el vídeo de tal manera que las dependencias entre fotogramas entre múltiples fotogramas de una secuencia de vídeo sean consistentes con el recuento de fotogramas. O bien, independientemente del reordenamiento de fotogramas y de las dependencias entre fotogramas, el codificador puede usar la medida de tiempo para limitar el grado en que se usa el retardo para suavizar las fluctuaciones a corto plazo en la velocidad de bits de vídeo codificado, la complejidad de codificación, el ancho de banda de la red, etc. El descodificador puede utilizar la medida de tiempo para determinar cuándo se puede emitir un fotograma desde una memoria intermedia de imagen descodificada.
La restricción en la latencia se puede negociar entre un lado del transmisor y un lado del receptor para equilibrar la capacidad de respuesta (falta de retardo) con la capacidad de suavizar las fluctuaciones a corto plazo en la velocidad de bits del vídeo codificado, la capacidad de suavizar las fluctuaciones a corto plazo en la velocidad de bits del vídeo codificado, la capacidad de suavizar las fluctuaciones a corto plazo en la complejidad de la codificación, la capacidad para suavizar las fluctuaciones a corto plazo en el ancho de banda de la red, y/u otro factor que se beneficie del mayor retardo. En tales negociaciones, puede resultar útil establecer y caracterizar la restricción en la latencia de una manera que sea independiente de la velocidad de fotogramas. Luego, la restricción se puede aplicar durante la codificación y descodificación, considerando la velocidad de fotogramas del vídeo. O bien, la restricción se puede aplicar durante la codificación y descodificación independientemente de la velocidad de fotogramas del vídeo.
E. Técnicas generalizadas para configurar y emitir elementos de sintaxis.
La figura 6 muestra una técnica de ejemplo (600) para configurar y emitir elementos de sintaxis que faciliten la descodificación de latencia reducida. Por ejemplo, una herramienta de comunicación en tiempo real o una herramienta de codificación descrita con referencia a las figuras 2a y 2b que realice la técnica (600). Alternativamente, otra herramienta que realice la técnica (600).
Para comenzar, la herramienta establece (610) uno o más elementos de sintaxis que indican una restricción en la latencia (por ejemplo, latencia de reordenamiento de fotogramas, latencia en términos de una medida de tiempo) consistente con dependencias entre fotogramas entre múltiples fotogramas de una secuencia de video. Cuando la herramienta incluye un codificador de vídeo, la misma herramienta puede también recibir los fotogramas, codificarlos para producir datos codificados (utilizando las dependencias entre fotogramas que son consistentes con la restricción en la latencia de reordenamiento de fotogramas) y emitir los datos codificados para su almacenamiento. o transmisión.
Típicamente, la restricción en la latencia de reordenamiento de fotogramas es una latencia de reordenamiento permitida para cualquier fotograma de una secuencia de vídeo. Sin embargo, la restricción puede expresarse de diversas maneras y tener diversos significados. Por ejemplo, la restricción se puede expresar en términos de un recuento máximo de los fotogramas que pueden preceder a un fotograma dado en el orden de salida pero seguir al fotograma dado en el orden codificado. O bien, la restricción se puede expresar como una diferencia máxima entre el orden codificado y el orden de salida para cualquier fotograma de la secuencia de vídeo. O bien, centrándose en un fotograma individual, la restricción se puede expresar como la latencia de reordenamiento asociada con un fotograma específico determinado en la secuencia de vídeo. O bien, centrándose en un grupo de fotogramas, la restricción se puede expresar como la latencia de reordenamiento asociada con el grupo de fotogramas en la secuencia de vídeo. O bien, la restricción se puede expresar de alguna otra manera.
A continuación, la herramienta emite (620) el o los elementos de sintaxis. Esto facilita la determinación de cuándo los fotogramas reconstruidos están listos para su salida en términos del orden de salida de los múltiples fotogramas. Los elementos de sintaxis se pueden emitir como parte de un conjunto de parámetros de secuencia o conjunto de parámetros de imagen en una corriente de bits de vídeo codificado elemental, como parte de la sintaxis para un archivo de almacenamiento de medios o una corriente de transmisión de medios que también incluya datos codificados para los fotogramas, como parte de un protocolo de negociación de propiedades de medios (por ejemplo, durante el intercambio de valores de parámetros de secuencia o sesión en la negociación a nivel de sistema), como parte de información del sistema de medios multiplexada con datos codificados para los fotogramas, o como parte de metadatos de medios relacionados con datos codificados para los fotogramas (por ejemplo, en mensajes SEI o mensajes VUI). Se pueden emitir diferentes elementos de sintaxis para indicar los requisitos de capacidad de memoria. Por ejemplo, un elemento de sintaxis de tamaño de memoria intermedia (tal como max_dec_frame_buffering) puede indicar el tamaño máximo de una DPB, y un elemento de sintaxis de memoria de fotogramas (tal como num_reorder_frames) puede indicar el tamaño máximo de la memoria de fotogramas para reordenar.
El valor de la restricción en la latencia se puede representar de diversas maneras, como se describe en la sección V.C. Por ejemplo, la herramienta emite un indicador que indica la presencia o ausencia de los elementos de sintaxis. Si el indicador indica que los elementos de sintaxis están ausentes, entonces la restricción en la latencia no está definida o tiene un valor por defecto. De lo contrario, los elementos de sintaxis siguen e indican la restricción en la latencia. O bien, un valor de los elementos de sintaxis indica que la restricción en la latencia no está definida o que tiene un valor por defecto, y otros valores posibles de los elementos de sintaxis indican un recuento de números enteros para la restricción en la latencia. O bien, para los casos en los que la restricción en la latencia es una restricción en la latencia de reordenamiento de fotogramas, un valor dado de los elementos de sintaxis indica el recuento de números enteros para la restricción en la latencia de reordenamiento de fotogramas en relación con un tamaño máximo de memoria de fotogramas para reordenamiento, que se indica con un elemento de sintaxis diferente, tal como num_reorder_frames. Alternativamente, la restricción en la latencia se representa de alguna otra manera.
En algunas implantaciones, los fotogramas de la secuencia de vídeo se organizan de acuerdo con una jerarquía temporal. En este caso, diferentes elementos de sintaxis pueden indicar diferentes restricciones en las latencias de reordenamiento de fotogramas para diferentes capas temporales de la jerarquía temporal.
F. Técnicas generalizadas para recibir y utilizar elementos de sintaxis.
La figura 7 muestra una técnica (700) de ejemplo para recibir y usar elementos de sintaxis que faciliten la descodificación de latencia reducida. Por ejemplo, la herramienta de comunicación en tiempo real o la herramienta de reproducción descrita con referencia a las figuras 2a y 2b realiza la técnica (700). Alternativamente, otra herramienta realiza la técnica (700).
Para comenzar, la herramienta recibe y analiza (710) uno o más elementos de sintaxis, que indican una restricción en la latencia (por ejemplo, latencia de reordenamiento de fotogramas, latencia en términos de una medida de tiempo). Por ejemplo, el análisis incluye la lectura de los uno o más elementos de sintaxis que indican la restricción en la latencia de la corriente de bits. La herramienta también recibe (720) datos codificados para múltiples fotogramas de una secuencia de vídeo. La herramienta puede analizar el/los elemento/s de sintaxis, y, en base a el/los elemento/s de sintaxis, determinar la restricción en la latencia. Típicamente, una restricción en la latencia de reordenamiento de fotogramas es una latencia de reordenamiento permitida para cualquier fotograma de la secuencia de vídeo. Sin embargo, la restricción se puede expresar de diversas maneras y tener diversos significados, como se describió en la sección anterior. El/los elemento/s de sintaxis se pueden señalizar como parte de un conjunto de parámetros de secuencia o conjunto de parámetros de imagen en una corriente de bits de vídeo codificado elemental, como parte de la sintaxis para un archivo de almacenamiento de medios o para una corriente de transmisión de medios, como parte de un protocolo de negociación de propiedades de medios, como parte de información del sistema de medios multiplexada con los datos codificados, o como parte de metadatos de medios relacionados con los datos codificados. La herramienta puede recibir y analizar diferentes elementos de sintaxis que indiquen requisitos de capacidad de memoria, como, por ejemplo, un elemento de sintaxis de tamaño de memoria intermedia tal como max_dec_frame_buffering y un elemento de sintaxis de memoria de fotogramas tal como num_reorder_frames.
El valor de la restricción en la latencia se puede representar de diversas maneras, como se describe en la sección V.C. Por ejemplo, la herramienta recibe un indicador que indica la presencia o ausencia de el/los elemento/s de sintaxis. Si el indicador indica que el/los elemento/s de sintaxis están ausentes, entonces la restricción en la latencia no está definida o que tiene un valor por defecto. De lo contrario, el/los elemento/s de sintaxis siguen e indican la restricción en la latencia. O bien, un valor del/de los elemento/s de sintaxis indica que la restricción en la latencia no está definida o que tiene un valor por defecto, y otros valores posibles de el/los elemento/s de sintaxis indican un recuento de números enteros para la restricción en la latencia. O bien, para los casos en los que la restricción en la latencia es una restricción en la latencia de reordenamiento de fotogramas, un valor dado del/de los elemento/s de sintaxis indica el recuento de números enteros para la restricción en la latencia de reordenamiento de fotogramas en relación con un tamaño máximo de memoria de fotogramas para reordenamiento, que se indica con un elemento de sintaxis diferente, tal como num_reorder_frames. Alternativamente, la restricción en la latencia se señaliza de alguna otra manera.
Volviendo a la figura 7, la herramienta descodifica (730) al menos algunos de los datos codificados para reconstruir uno de los fotogramas. La herramienta emite (740) el fotograma reconstruido. Al hacerlo, la herramienta puede utilizar la restricción en la latencia para determinar cuándo el fotograma reconstruido está listo para su salida, por ejemplo, en términos del orden de salida de los fotogramas de la secuencia de vídeo.
En algunas implantaciones, los fotogramas de la secuencia de vídeo se organizan de acuerdo con una jerarquía temporal. En este caso, diferentes elementos de sintaxis pueden indicar diferentes restricciones en las latencias de reordenamiento de fotogramas para diferentes capas temporales de la jerarquía temporal. La herramienta puede seleccionar una de las diferentes restricciones en las latencias de reordenamiento de fotogramas dependiendo de la resolución temporal de la salida.
En vista de las muchas realizaciones posibles a las que se pueden aplicar los principios de la invención divulgada, debe reconocerse que las realizaciones ilustradas son sólo ejemplos preferidos de la invención y que no deben considerarse limitantes del alcance de la invención. Más bien, el alcance de la invención está definido por las siguientes reivindicaciones. Por lo tanto, se reivindica como invención todo lo que entra dentro del alcance de estas reivindicaciones.
Claims (15)
1. Un método en un sistema informático que implanta un descodificador (450) de vídeo, comprendiendo el método: recibir y analizar un elemento de sintaxis que indica un tamaño máximo de memoria de fotogramas para reordenar, en el que el tamaño máximo de memoria de fotogramas para reordenar se expresa en términos de un recuento máximo de fotogramas que pueden preceder a cualquier fotograma de una secuencia de vídeo en orden codificado pero seguir a ese fotograma en orden de salida;
recibir y analizar (710) uno o más elementos de sintaxis diferentes que indican una restricción en la latencia de reordenamiento de fotogramas, en el que la restricción en la latencia de reordenamiento de fotogramas se expresa en términos de un recuento máximo de fotogramas que pueden preceder a cualquier fotograma de la secuencia de vídeo en orden de salida pero que siguen a ese fotograma en orden codificado;
recibir (720) datos codificados para varios fotogramas de la secuencia de vídeo;
con el descodificador de vídeo, descodificar (730) al menos algunos de los datos codificados para reconstruir uno de los varios fotogramas; y
emitir (740) el fotograma reconstruido.
2. El método de la reivindicación 1, comprendiendo el método adicionalmente:
determinar la restricción en la latencia de reordenamiento de fotogramas en base a los uno o más elementos de sintaxis; y
usar la restricción en la latencia de reordenamiento de fotogramas para determinar cuándo el fotograma reconstruido está listo para su salida en términos del orden de salida de los varios fotogramas de la secuencia de vídeo.
3. El método de la reivindicación 2, en el que los varios fotogramas de la secuencia de vídeo se organizan de acuerdo con una jerarquía temporal, en el que diferentes elementos de los uno o más elementos de sintaxis indican diferentes restricciones en las latencias de reordenamiento de fotogramas para diferentes capas temporales de la jerarquía temporal, comprendiendo adicionalmente, el método, seleccionar una de las diferentes restricciones en las latencias de reordenamiento de fotogramas dependiendo de la resolución temporal de la salida.
4. El método de cualquiera de las reivindicaciones 1 a 3, en el que la restricción en la latencia es una restricción en la latencia de reordenamiento de fotogramas, y en el que la restricción en la latencia de reordenamiento de fotogramas es una latencia de reordenamiento permitida para cualquier fotograma de la secuencia de vídeo.
5. El método de cualquiera de las reivindicaciones 1 a 4, en el que los uno o más elementos de sintaxis diferentes y los datos codificados se señalizan como parte de la sintaxis para una corriente de bits de vídeo codificado, comprendiendo adicionalmente el método:
recibir y analizar un elemento de sintaxis de tamaño de memoria intermedia que indica el tamaño máximo de una memoria intermedia de imagen descodificada, en el que el elemento de sintaxis de tamaño de memoria intermedia es diferente de los uno o más elementos de sintaxis diferentes que indican la restricción en la latencia de reordenamiento de fotogramas.
6. El método de cualquiera de las reivindicaciones 1 a 5, en el que uno o más elementos de sintaxis diferentes se señalizan como parte de un conjunto de parámetros de secuencia, de un conjunto de parámetros de imagen, de sintaxis para un archivo de almacenamiento multimedia que incluye también los datos codificados, de sintaxis para una corriente de transmisión de medios que incluye también los datos codificados, de un protocolo de negociación de propiedades de medios, de información del sistema de medios multiplexada con los datos codificados o metadatos de medios relacionados con los datos codificados.
7. El método de cualquiera de las reivindicaciones 1 a 6, en el que un valor posible de los uno o más elementos de sintaxis diferentes indica que la restricción en la latencia de reordenamiento de fotogramas no está definida o tiene un valor por defecto, y en el que otros valores posibles de los uno o más elementos diferentes de sintaxis indican un recuento de números enteros para la restricción en la latencia de reordenamiento de fotogramas.
8. El método de cualquiera de las reivindicaciones 1 a 7, en el que un valor de los uno o más elementos de sintaxis diferentes indica un recuento de números enteros para la restricción en la latencia de reordenamiento de fotogramas en relación con el tamaño máximo de la memoria de fotogramas para reordenamiento.
9. Uno o más medios legibles por ordenador que almacenan instrucciones ejecutables por ordenador para hacer que un sistema informático, cuando está programado mediante ellas, realice funciones, seleccionándose los uno o más medios legibles por ordenador únicamente del grupo que consiste en un dispositivo de almacenamiento y memoria no volátil, comprendiendo las funciones:
recibir y analizar (710) uno o más elementos de sintaxis que indican una restricción en la latencia de reordenamiento de fotogramas, en el/los que la restricción en la latencia de reordenamiento de fotogramas se expresa en términos de un recuento máximo de fotogramas que pueden preceder a cualquier fotograma de una secuencia de vídeo en orden de salida pero que siguen a ese fotograma en orden codificado;
determinar la restricción en la latencia de reordenamiento de fotogramas en base a los uno o más elementos de sintaxis;
recibir (720) datos codificados para varios fotogramas de la secuencia de vídeo;
con un descodificador de vídeo, descodificar (730) al menos algunos de los datos codificados para reconstruir uno de los varios fotogramas; y
emitir (740) el fotograma reconstruido, en el/los que la restricción se usa para determinar cuándo el fotograma reconstruido está listo para su salida.
10. Los uno o más medios legibles por ordenador de la reivindicación 9, en el/los que las funciones comprenden adicionalmente:
recibir y analizar uno o más elementos de sintaxis que indican un tamaño máximo de memoria de fotogramas para reordenar, en el/los que el tamaño máximo de memoria de fotogramas para reordenar se expresa en términos de un recuento máximo de fotogramas que pueden preceder a cualquier fotograma de la secuencia de vídeo en orden codificado pero que siguen a ese fotograma en orden de salida.
11. Los uno o más medios legibles por ordenador de la reivindicación 9 ó 10, en el/los que los uno o más elementos de sintaxis y los datos codificados se señalizan como parte de la sintaxis para una corriente de bits de vídeo codificado, comprendiendo adicionalmente las funciones:
recibir y analizar un elemento de sintaxis de tamaño de memoria intermedia que indica el tamaño máximo de una memoria intermedia de imagen descodificada, en el/los que el elemento de sintaxis de tamaño de memoria intermedia es diferente de los uno o más elementos de sintaxis que indican la restricción en la latencia de reordenamiento de fotogramas.
12. Los uno o más medios legibles por ordenador de cualquiera de las reivindicaciones 9 a 11, en el/los que los uno o más elementos de sintaxis se señalizan como parte de un conjunto de parámetros de secuencia, de un conjunto de parámetros de imagen, de sintaxis para un archivo de almacenamiento de medios que incluye también los datos codificados, de sintaxis para una corriente de transmisión de medios que incluye también los datos codificados, de un protocolo de negociación de propiedades de medios, de información del sistema de medios multiplexada con los datos codificados o metadatos de medios relacionados con los datos codificados.
13. Los uno o más medios legibles por ordenador de cualquiera de las reivindicaciones 9 a 12, en el/los que un posible valor de los uno o más elementos de sintaxis indica que la restricción en la latencia de reordenamiento de fotogramas no está definida o que tiene un valor por defecto, y en el/los que otros valores posibles de los uno o más elementos de sintaxis indican un recuento de números enteros para la restricción en la latencia de reordenamiento de fotogramas.
14. Los uno o más medios legibles por ordenador de cualquiera de las reivindicaciones 9 a 13, en el/los que un valor de los uno o más elementos de sintaxis indica un recuento de números enteros para la restricción en la latencia de reordenamiento de fotogramas en relación con un tamaño máximo de memoria de fotogramas para reordenamiento, siendo el tamaño máximo de memoria de fotogramas para reordenar indicado con un elemento de sintaxis diferente.
15. Los uno o más medios legibles por ordenador de la reivindicación 14, en el/los que la restricción en la latencia de reordenamiento de fotogramas se puede determinar como el recuento máximo para el tamaño máximo de la memoria de fotogramas para reordenamiento más el recuento de números enteros para la restricción en la latencia de reordenamiento de fotogramas, menos 1.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161571553P | 2011-06-30 | 2011-06-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2958967T3 true ES2958967T3 (es) | 2024-02-16 |
Family
ID=47390681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES20162441T Active ES2958967T3 (es) | 2011-06-30 | 2011-10-11 | Reducción de latencia en codificación y descodificación de vídeo |
Country Status (28)
Country | Link |
---|---|
US (17) | US8837600B2 (es) |
EP (4) | EP4246968A3 (es) |
JP (1) | JP6059219B2 (es) |
KR (1) | KR101944565B1 (es) |
CN (2) | CN105721880B (es) |
AU (1) | AU2011371809B2 (es) |
BR (1) | BR112013033552B1 (es) |
CA (1) | CA2840427C (es) |
CL (1) | CL2013003736A1 (es) |
CO (1) | CO6862115A2 (es) |
DK (1) | DK3691268T3 (es) |
ES (1) | ES2958967T3 (es) |
HK (2) | HK1195430A1 (es) |
HR (1) | HRP20231180T1 (es) |
HU (1) | HUE063498T2 (es) |
IL (2) | IL230189A (es) |
LT (1) | LT3691268T (es) |
MX (1) | MX2013015154A (es) |
MY (1) | MY189650A (es) |
NZ (1) | NZ619406A (es) |
PL (1) | PL3691268T3 (es) |
PT (1) | PT3691268T (es) |
RS (1) | RS64742B1 (es) |
RU (1) | RU2587467C2 (es) |
SG (1) | SG10201408609SA (es) |
TW (3) | TWI587693B (es) |
WO (1) | WO2013002818A1 (es) |
ZA (1) | ZA201308553B (es) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI587693B (zh) | 2011-06-30 | 2017-06-11 | 微軟技術授權有限責任公司 | 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體 |
KR20130058584A (ko) | 2011-11-25 | 2013-06-04 | 삼성전자주식회사 | 복호화기의 버퍼 관리를 위한 영상 부호화 방법 및 장치, 그 영상 복호화 방법 및 장치 |
CN104160701B (zh) | 2012-01-27 | 2017-06-30 | 太阳专利托管公司 | 图像编码方法、图像解码方法、图像编码装置、及图像解码装置 |
FR2994785A1 (fr) * | 2012-08-23 | 2014-02-28 | France Telecom | Procede de traitement d'un flux multimedia, terminal de communication, serveur et produit programme d'ordinateur correspondant. |
US9161039B2 (en) | 2012-09-24 | 2015-10-13 | Qualcomm Incorporated | Bitstream properties in video coding |
KR101561012B1 (ko) | 2012-09-28 | 2015-10-15 | 텔레폰악티에볼라겟엘엠에릭슨(펍) | 비디오 시퀀스의 픽처의 디코딩 및 인코딩 |
US9374585B2 (en) | 2012-12-19 | 2016-06-21 | Qualcomm Incorporated | Low-delay buffering model in video coding |
JP5811106B2 (ja) * | 2013-01-11 | 2015-11-11 | セイコーエプソン株式会社 | 映像処理装置、表示装置および映像処理方法 |
WO2014196198A1 (ja) * | 2013-06-05 | 2014-12-11 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 画像符号化方法、画像復号方法、画像符号化装置及び画像復号装置 |
CN104685318B (zh) * | 2013-06-27 | 2018-01-26 | 松下电器(美国)知识产权公司 | 运动传感器装置、电路、记录介质以及图像处理装置 |
CN104603574B (zh) * | 2013-07-01 | 2017-10-13 | 松下电器(美国)知识产权公司 | 具有多个光源的运动传感器装置 |
CN105379273B (zh) * | 2013-07-14 | 2019-03-15 | 夏普株式会社 | 对来自比特流的视频进行解码的方法和设备 |
US9674257B2 (en) * | 2013-12-31 | 2017-06-06 | Echostar Technologies L.L.C. | Placeshifting live encoded video faster than real time |
JP5866499B2 (ja) * | 2014-02-24 | 2016-02-17 | パナソニックIpマネジメント株式会社 | 監視カメラシステム及び監視カメラシステムの制御方法 |
US10419703B2 (en) * | 2014-06-20 | 2019-09-17 | Qualcomm Incorporated | Automatic multiple depth cameras synchronization using time sharing |
DE102014214750B3 (de) * | 2014-07-28 | 2015-06-11 | Reimar Lenz | Bildaufnahmesystem mit schnell vibrierendem Global-Shutter-CMOS-Sensor |
TWI500904B (zh) * | 2014-09-18 | 2015-09-21 | Vivotek Inc | 立體攝影機及用來測量立體攝影機與基準面之距離的自動測距方法 |
US10283091B2 (en) * | 2014-10-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Buffer optimization |
US10075692B2 (en) * | 2015-01-28 | 2018-09-11 | Hfi Innovation Inc. | Method of simple intra mode for video coding |
US10638140B2 (en) | 2015-05-29 | 2020-04-28 | Qualcomm Incorporated | Slice level intra block copy and other video coding improvements |
US10003813B2 (en) * | 2015-06-25 | 2018-06-19 | Samsung Electronics Co., Ltd. | Method and system for decoding by enabling optimal picture buffer management |
CN106358042B (zh) | 2015-07-17 | 2020-10-09 | 恩智浦美国有限公司 | 使用视频图像的帧间预测的并行解码器 |
US11051026B2 (en) | 2015-08-31 | 2021-06-29 | Intel Corporation | Method and system of frame re-ordering for video coding |
US10962780B2 (en) * | 2015-10-26 | 2021-03-30 | Microsoft Technology Licensing, Llc | Remote rendering for virtual images |
TWI632814B (zh) | 2016-11-11 | 2018-08-11 | 財團法人工業技術研究院 | 視訊畫幀產生方法及其系統 |
FR3058858A1 (fr) * | 2016-11-15 | 2018-05-18 | Orange | Procede et dispositif de codage et de decodage d'une sequence multi-vues |
KR102342051B1 (ko) | 2017-08-08 | 2021-12-22 | 삼성전자주식회사 | 영상 처리 장치, 영상 처리 방법 및 영상 디스플레이 시스템 |
US10412383B2 (en) | 2017-08-15 | 2019-09-10 | Google Llc | Compressing groups of video frames using reversed ordering |
US10748844B2 (en) * | 2017-12-30 | 2020-08-18 | Intel Corporation | Stress isolation for silicon photonic applications |
CN108833932B (zh) * | 2018-07-19 | 2021-01-05 | 湖南君瀚信息技术有限公司 | 一种实现高清视频超低延迟编解码及传输的方法及系统 |
JP7167194B2 (ja) | 2018-08-21 | 2022-11-08 | ロヴィ ガイズ, インコーポレイテッド | リアルタイム適応ビットレートトランスコーディングおよびトランスコードされたメディアの伝送のためのシステムおよび方法 |
US10911791B2 (en) * | 2019-01-09 | 2021-02-02 | Netflix, Inc. | Optimizing encoding operations when generating a buffer-constrained version of a media title |
CN113366853B (zh) | 2019-02-02 | 2024-08-02 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的缓冲区初始化 |
WO2020156541A1 (en) | 2019-02-02 | 2020-08-06 | Beijing Bytedance Network Technology Co., Ltd. | Data storage in buffers for intra block copy in video coding |
US10992960B2 (en) | 2019-02-06 | 2021-04-27 | Jared Michael Cohn | Accelerated video exportation to multiple destinations |
CN113545068B (zh) | 2019-03-01 | 2023-09-15 | 北京字节跳动网络技术有限公司 | 用于视频编解码中的帧内块复制的基于顺序的更新 |
EP3915265A4 (en) * | 2019-03-01 | 2022-06-22 | Beijing Bytedance Network Technology Co., Ltd. | DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING |
EP3915252A4 (en) | 2019-03-04 | 2022-03-23 | Beijing Bytedance Network Technology Co., Ltd. | IMPLEMENTATION OF ASPECTS IN AN INTRA BLOCK COPY IN VIDEO ENCODING |
KR102677020B1 (ko) | 2019-07-06 | 2024-06-19 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 카피를 위한 가상 예측 버퍼 |
JP7359934B2 (ja) | 2019-07-10 | 2023-10-11 | 北京字節跳動網絡技術有限公司 | 映像符号化におけるイントラブロックコピーのためのサンプル識別 |
KR102695788B1 (ko) | 2019-07-11 | 2024-08-14 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 비디오 코딩에서 인트라 블록 복사를 위한 비트스트림 적합 제약 |
US11064194B2 (en) | 2019-10-31 | 2021-07-13 | Western Digital Technologies, Inc. | Encoding digital videos using controllers of data storage devices |
CN113497932B (zh) * | 2020-04-07 | 2022-10-18 | 上海交通大学 | 测量视频传输时延的方法、系统及介质 |
WO2021243044A1 (en) * | 2020-05-27 | 2021-12-02 | Let's Jam, Llc | Methods and systems for synchronizing multimedia |
US20230224484A1 (en) * | 2020-06-09 | 2023-07-13 | Lg Electronics Inc. | Dpb operation-based image or video coding |
CN112351285B (zh) * | 2020-11-04 | 2024-04-05 | 北京金山云网络技术有限公司 | 视频编码、解码方法和装置、电子设备和存储介质 |
CN112468875B (zh) * | 2020-11-30 | 2022-03-29 | 展讯通信(天津)有限公司 | 视频解码帧的显示输出控制方法及装置、存储介质、终端 |
WO2023075563A1 (ko) * | 2021-11-01 | 2023-05-04 | 엘지전자 주식회사 | 피쳐 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
US11425423B1 (en) | 2022-03-10 | 2022-08-23 | Yendo Hu | Memory storage for motion estimation and visual artifact redcution |
Family Cites Families (111)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4309754A (en) | 1979-07-30 | 1982-01-05 | International Business Machines Corp. | Data interface mechanism for interfacing bit-parallel data buses of different bit width |
US4642756A (en) | 1985-03-15 | 1987-02-10 | S & H Computer Systems, Inc. | Method and apparatus for scheduling the execution of multiple processing tasks in a computer system |
EP0537721B1 (en) | 1991-10-15 | 1998-11-25 | Hewlett-Packard Company | Hardware-configured operating system kernel for a multitasking processor |
US6002801A (en) | 1995-04-18 | 1999-12-14 | Advanced Micro Devices, Inc. | Method and apparatus for improved video decompression by selection of IDCT method based on image characteristics |
DE19530483A1 (de) | 1995-08-18 | 1997-02-20 | Siemens Ag | Einrichtung und Verfahren zur Echtzeit-Verarbeitung einer Mehrzahl von Tasks |
US5861920A (en) * | 1996-11-08 | 1999-01-19 | Hughes Electronics Corporation | Hierarchical low latency video compression |
JPH10229420A (ja) | 1997-02-17 | 1998-08-25 | Matsushita Electric Ind Co Ltd | 通信システム |
US5909559A (en) | 1997-04-04 | 1999-06-01 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
US6006303A (en) | 1997-08-28 | 1999-12-21 | Oki Electric Industry Co., Inc. | Priority encoding and decoding for memory architecture |
EP0909094A1 (en) | 1997-10-07 | 1999-04-14 | CANAL+ Société Anonyme | Multithread data processor |
CN1199471C (zh) | 1997-11-28 | 2005-04-27 | 松下电器产业株式会社 | 提高了处理效率的图象声音处理装置 |
JP3935252B2 (ja) | 1997-12-26 | 2007-06-20 | キヤノン株式会社 | 画像形成装置及びジョブ処理方法 |
US6823016B1 (en) | 1998-02-20 | 2004-11-23 | Intel Corporation | Method and system for data management in a video decoder |
JPH11252552A (ja) | 1998-03-05 | 1999-09-17 | Sony Corp | ビデオ信号の圧縮符号化方法及び圧縮符号化装置、並びに、圧縮符号化データの多重化方法及び多重化装置 |
US6298166B1 (en) | 1998-03-30 | 2001-10-02 | Seiko Epson Corporation | Image transformations in the compressed domain |
US6859496B1 (en) | 1998-05-29 | 2005-02-22 | International Business Machines Corporation | Adaptively encoding multiple streams of video data in parallel for multiplexing onto a constant bit rate channel |
JP4146950B2 (ja) | 1998-11-04 | 2008-09-10 | キヤノン株式会社 | 画像形成装置、画像形成装置における表示制御方法及び記憶媒体 |
US6768774B1 (en) | 1998-11-09 | 2004-07-27 | Broadcom Corporation | Video and graphics system with video scaling |
US6637031B1 (en) * | 1998-12-04 | 2003-10-21 | Microsoft Corporation | Multimedia presentation latency minimization |
US6249288B1 (en) | 1998-12-14 | 2001-06-19 | Ati International Srl | Multi thread display controller |
US7370325B1 (en) | 1999-02-19 | 2008-05-06 | Lucent Technologies Inc. | Eager evaluation of tasks in a workflow system |
US6771824B1 (en) | 1999-12-28 | 2004-08-03 | Lucent Technologies Inc. | Adaptive variable length decoding method |
US6574279B1 (en) | 2000-02-02 | 2003-06-03 | Mitsubishi Electric Research Laboratories, Inc. | Video transcoding using syntactic and semantic clues |
JP2002010216A (ja) | 2000-04-20 | 2002-01-11 | Canon Inc | 復号化装置及びその制御方法並びに記憶媒体 |
US7206016B2 (en) | 2000-05-01 | 2007-04-17 | Polycom, Inc. | Filtering artifacts from multi-threaded video |
EP1156674A1 (en) | 2000-05-19 | 2001-11-21 | THOMSON multimedia | Method and device for decoding a video data stream in special reproduction modes |
US6963347B1 (en) | 2000-08-04 | 2005-11-08 | Ati International, Srl | Vertex data processing with multiple threads of execution |
GB2366464A (en) | 2000-08-14 | 2002-03-06 | Nokia Mobile Phones Ltd | Video coding using intra and inter coding on the same data |
US20040117427A1 (en) | 2001-03-16 | 2004-06-17 | Anystream, Inc. | System and method for distributing streaming media |
US7366236B1 (en) | 2001-06-04 | 2008-04-29 | Cisco Sytems Canada Co. | Source adaptive system and method for 2D iDCT |
WO2003058860A2 (en) * | 2001-12-31 | 2003-07-17 | Bae Systems Information And Electronic Systems Integration Inc. | System for peak detection among multiple signals |
US7920624B2 (en) | 2002-04-01 | 2011-04-05 | Broadcom Corporation | Inverse quantizer supporting multiple decoding processes |
US7034897B2 (en) | 2002-04-01 | 2006-04-25 | Broadcom Corporation | Method of operating a video decoding system |
US6963613B2 (en) | 2002-04-01 | 2005-11-08 | Broadcom Corporation | Method of communicating between modules in a decoding system |
EP3054680B1 (en) | 2002-04-19 | 2019-06-05 | Panasonic Intellectual Property Corporation of America | Motion vector calculating method |
JP2004088736A (ja) * | 2002-06-28 | 2004-03-18 | Matsushita Electric Ind Co Ltd | 動画像の符号化方法、復号化方法、データストリーム、データ記録媒体およびプログラム |
US7787539B2 (en) * | 2002-07-17 | 2010-08-31 | Broadcom Corporation | Decoding and presentation time stamps for MPEG-4 advanced video coding |
JP3534742B1 (ja) * | 2002-10-03 | 2004-06-07 | 株式会社エヌ・ティ・ティ・ドコモ | 動画像復号方法、動画像復号装置、及び動画像復号プログラム |
MY134659A (en) * | 2002-11-06 | 2007-12-31 | Nokia Corp | Picture buffering for prediction references and display |
EP2557788A1 (en) | 2002-11-29 | 2013-02-13 | Sony Corporation | Encoding apparatus and the method |
US7099389B1 (en) | 2002-12-10 | 2006-08-29 | Tut Systems, Inc. | Rate control with picture-based lookahead window |
CN1751518B (zh) | 2003-02-18 | 2010-12-01 | 诺基亚有限公司 | 图像编码方法 |
JP4750350B2 (ja) | 2003-03-13 | 2011-08-17 | パナソニック株式会社 | タスク切換装置、方法及びプログラム |
US7646817B2 (en) | 2003-03-28 | 2010-01-12 | Microsoft Corporation | Accelerating video decoding using a graphics processing unit |
US7627039B2 (en) | 2003-09-05 | 2009-12-01 | Realnetworks, Inc. | Parallel video decoding |
US7869503B2 (en) | 2004-02-06 | 2011-01-11 | Apple Inc. | Rate and quality controller for H.264/AVC video coder and scene analyzer therefor |
JP4095559B2 (ja) | 2004-02-13 | 2008-06-04 | 株式会社東芝 | H.264コーデックic、dvd再生装置、h.264コーデック方法 |
JP2007526687A (ja) | 2004-02-19 | 2007-09-13 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 可変ブロック長信号の復号化スキーム |
EP2184919A3 (en) | 2004-04-28 | 2010-07-28 | Panasonic Corporation | Stream generation apparatus, stream generation method, coding apparatus, coding method, recording medium and program thereof |
US20060002479A1 (en) | 2004-06-22 | 2006-01-05 | Fernandes Felix C A | Decoder for H.264/AVC video |
US20050289505A1 (en) | 2004-06-25 | 2005-12-29 | Williams Stanley N | Method and system for improving performance and scalability of applications that utilize a flow-based-programming methodology |
US8291448B2 (en) | 2004-09-15 | 2012-10-16 | Nokia Corporation | Providing zapping streams to broadcast receivers |
JP4867235B2 (ja) | 2004-10-26 | 2012-02-01 | ソニー株式会社 | 情報処理装置および情報処理方法、記録媒体、並びに、プログラム |
JP4375305B2 (ja) | 2004-10-26 | 2009-12-02 | ソニー株式会社 | 情報処理装置および情報処理方法、記録媒体、並びに、プログラム |
US20060114995A1 (en) | 2004-12-01 | 2006-06-01 | Joshua Robey | Method and system for high speed video encoding using parallel encoders |
US20060126726A1 (en) | 2004-12-10 | 2006-06-15 | Lin Teng C | Digital signal processing structure for decoding multiple video standards |
US7430238B2 (en) | 2004-12-10 | 2008-09-30 | Micronas Usa, Inc. | Shared pipeline architecture for motion vector prediction and residual decoding |
US20060126744A1 (en) | 2004-12-10 | 2006-06-15 | Liang Peng | Two pass architecture for H.264 CABAC decoding process |
US7817723B2 (en) | 2004-12-14 | 2010-10-19 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E. V. | Apparatus and method of optimizing motion estimation parameters for encoding a video signal |
EP1675402A1 (en) | 2004-12-22 | 2006-06-28 | Thomson Licensing | Optimisation of a quantisation matrix for image and video coding |
US9219917B2 (en) | 2005-01-19 | 2015-12-22 | Thomson Licensing | Method and apparatus for real time parallel encoding |
US7565021B2 (en) | 2005-03-01 | 2009-07-21 | Microsoft Corporation | Efficient implementation of block-based transform on graphics processing unit |
WO2006096612A2 (en) | 2005-03-04 | 2006-09-14 | The Trustees Of Columbia University In The City Of New York | System and method for motion estimation and mode decision for low-complexity h.264 decoder |
US20060215754A1 (en) | 2005-03-24 | 2006-09-28 | Intel Corporation | Method and apparatus for performing video decoding in a multi-thread environment |
JP4261508B2 (ja) | 2005-04-11 | 2009-04-30 | 株式会社東芝 | 動画像復号装置 |
JP4374548B2 (ja) | 2005-04-15 | 2009-12-02 | ソニー株式会社 | 復号装置および方法、記録媒体、並びに、プログラム |
US7920633B2 (en) | 2005-04-22 | 2011-04-05 | Broadcom Corporation | Method and system for parallel processing video data |
US8902989B2 (en) | 2005-04-27 | 2014-12-02 | Broadcom Corporation | Decoder system for decoding multi-standard encoded video |
EP1773063A1 (en) | 2005-06-14 | 2007-04-11 | Thomson Licensing | Method and apparatus for encoding video data, and method and apparatus for decoding video data |
US7119723B1 (en) | 2005-07-28 | 2006-10-10 | Texas Instruments Incorporated | Decoding variable length codes while using optimal resources |
KR100770704B1 (ko) | 2005-08-04 | 2007-10-29 | 삼성전자주식회사 | 픽쳐 스킵 방법 및 장치 |
US8306112B2 (en) | 2005-09-20 | 2012-11-06 | Mitsubishi Electric Corporation | Image encoding method and image decoding method, image encoder and image decoder, and image encoded bit stream and recording medium |
JP2009510962A (ja) | 2005-10-03 | 2009-03-12 | ノキア コーポレイション | 独立変数のための適応性可変長コード |
MX2008004760A (es) | 2005-10-12 | 2008-11-13 | Thomson Licensing | Region de codificacion de video h .264 escalable de interes. |
US8767836B2 (en) | 2006-03-27 | 2014-07-01 | Nokia Corporation | Picture delimiter in scalable video coding |
US7694102B2 (en) | 2006-03-30 | 2010-04-06 | International Business Machines Corporation | Systems and methods for self-tuning memory |
EP1841072B1 (de) | 2006-03-30 | 2016-06-01 | Unify GmbH & Co. KG | Verfahren und Einrichtung zum Dekodieren von schichtkodierten Daten |
US7626518B2 (en) | 2006-06-08 | 2009-12-01 | Via Technologies, Inc. | Decoding systems and methods in computational core of programmable graphics processing unit |
US8369419B2 (en) | 2006-06-16 | 2013-02-05 | Via Technologies, Inc. | Systems and methods of video compression deblocking |
US7586425B2 (en) | 2006-07-11 | 2009-09-08 | Nokia Corporation | Scalable video coding and decoding |
US8699583B2 (en) | 2006-07-11 | 2014-04-15 | Nokia Corporation | Scalable video coding and decoding |
CN1960472A (zh) | 2006-08-14 | 2007-05-09 | 中兴通讯股份有限公司 | 一种多媒体移动终端及其接收多媒体数据的处理方法 |
US8218640B2 (en) | 2006-10-31 | 2012-07-10 | Sony Computer Entertainment Inc. | Picture decoding using same-picture reference for pixel reconstruction |
US8121196B2 (en) | 2006-11-02 | 2012-02-21 | Corel Corporation | Method and apparatus for multi-threaded video decoding |
US7573407B2 (en) | 2006-11-14 | 2009-08-11 | Qualcomm Incorporated | Memory efficient adaptive block coding |
EP2092748A4 (en) | 2006-12-14 | 2011-01-05 | Thomson Licensing | METHOD AND DEVICE FOR CODING AND / OR DECODING VIDEO DATA USING EXPANSION LAYER RESTRICTION FOR SOFTENCE SCALINGABILITY |
WO2008079041A1 (en) | 2006-12-27 | 2008-07-03 | Intel Corporation | Methods and apparatus to decode and encode video information |
JP5535646B2 (ja) * | 2007-01-05 | 2014-07-02 | トムソン ライセンシング | スケーラブル映像符号化用の仮想リファレンスデコーダ |
KR101455161B1 (ko) * | 2007-01-08 | 2014-10-28 | 톰슨 라이센싱 | 비디오 스트림 스플라이싱을 위한 방법 및 장치 |
US8411734B2 (en) | 2007-02-06 | 2013-04-02 | Microsoft Corporation | Scalable multi-thread video decoding |
KR101132386B1 (ko) * | 2007-04-13 | 2012-07-16 | 노키아 코포레이션 | 비디오 코더 |
CN102263950B (zh) | 2007-05-17 | 2014-10-01 | 索尼株式会社 | 编码设备和编码方法以及解码设备和解码方法 |
US8396082B2 (en) | 2007-06-05 | 2013-03-12 | Core Wireless Licensing S.A.R.L. | Time-interleaved simulcast for tune-in reduction |
US8254455B2 (en) | 2007-06-30 | 2012-08-28 | Microsoft Corporation | Computing collocated macroblock information for direct mode macroblocks |
US8265144B2 (en) | 2007-06-30 | 2012-09-11 | Microsoft Corporation | Innovations in video decoder implementations |
US9648325B2 (en) | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
BR122012021950A2 (pt) * | 2007-10-05 | 2015-08-04 | Thomson Licensing | Aparelho para incorporação de informação de usabilidade de vídeo (vui) em um sistema de codificação de vídeo com múltiplos visualizações (mvc) |
US20090109988A1 (en) | 2007-10-26 | 2009-04-30 | Chowdhary Musunuri | Video Decoder with an Adjustable Video Clock |
US8121187B2 (en) | 2007-12-05 | 2012-02-21 | Alcatel Lucent | Method and apparatus for performing multiple bit rate video encoding and video stream switching |
WO2010057027A1 (en) * | 2008-11-14 | 2010-05-20 | Transvideo, Inc. | Method and apparatus for splicing in a compressed video bitstream |
TW201032597A (en) | 2009-01-28 | 2010-09-01 | Nokia Corp | Method and apparatus for video coding and decoding |
US8189666B2 (en) | 2009-02-02 | 2012-05-29 | Microsoft Corporation | Local picture identifier and computation of co-located information |
US20110002376A1 (en) * | 2009-07-01 | 2011-01-06 | Wham! Inc. | Latency Minimization Via Pipelining of Processing Blocks |
JP5604825B2 (ja) * | 2009-08-19 | 2014-10-15 | ソニー株式会社 | 画像処理装置および方法 |
WO2011043885A1 (en) | 2009-10-06 | 2011-04-14 | Dow Global Technologies Llc. | Extruded polystyrene foam with broad comonomer content distribution |
US9237387B2 (en) | 2009-10-06 | 2016-01-12 | Microsoft Technology Licensing, Llc | Low latency cacheable media streaming |
US8918533B2 (en) * | 2010-07-13 | 2014-12-23 | Qualcomm Incorporated | Video switching for streaming video data |
CN101938341B (zh) * | 2010-09-17 | 2012-12-05 | 东华大学 | 一种跨节点控制的在线视频流选择性重传方法 |
US8885729B2 (en) | 2010-12-13 | 2014-11-11 | Microsoft Corporation | Low-latency video decoding |
TWI587693B (zh) | 2011-06-30 | 2017-06-11 | 微軟技術授權有限責任公司 | 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體 |
KR20130058584A (ko) * | 2011-11-25 | 2013-06-04 | 삼성전자주식회사 | 복호화기의 버퍼 관리를 위한 영상 부호화 방법 및 장치, 그 영상 복호화 방법 및 장치 |
-
2011
- 2011-10-11 TW TW105103519A patent/TWI587693B/zh not_active IP Right Cessation
- 2011-10-11 PL PL20162441.8T patent/PL3691268T3/pl unknown
- 2011-10-11 EP EP23190880.7A patent/EP4246968A3/en active Pending
- 2011-10-11 MY MYPI2013702507A patent/MY189650A/en unknown
- 2011-10-11 WO PCT/US2011/055835 patent/WO2013002818A1/en active Application Filing
- 2011-10-11 RU RU2013158832/07A patent/RU2587467C2/ru active
- 2011-10-11 SG SG10201408609SA patent/SG10201408609SA/en unknown
- 2011-10-11 ES ES20162441T patent/ES2958967T3/es active Active
- 2011-10-11 CN CN201610092615.0A patent/CN105721880B/zh active Active
- 2011-10-11 AU AU2011371809A patent/AU2011371809B2/en active Active
- 2011-10-11 TW TW106113582A patent/TWI606722B/zh not_active IP Right Cessation
- 2011-10-11 EP EP23190874.0A patent/EP4246967A3/en active Pending
- 2011-10-11 MX MX2013015154A patent/MX2013015154A/es active IP Right Grant
- 2011-10-11 CA CA2840427A patent/CA2840427C/en active Active
- 2011-10-11 EP EP11868856.3A patent/EP2727341B1/en active Active
- 2011-10-11 TW TW100136771A patent/TWI533677B/zh not_active IP Right Cessation
- 2011-10-11 US US13/270,969 patent/US8837600B2/en active Active
- 2011-10-11 DK DK20162441.8T patent/DK3691268T3/da active
- 2011-10-11 KR KR1020137034813A patent/KR101944565B1/ko active IP Right Grant
- 2011-10-11 EP EP20162441.8A patent/EP3691268B1/en active Active
- 2011-10-11 CN CN201180071993.6A patent/CN103621085B/zh active Active
- 2011-10-11 HU HUE20162441A patent/HUE063498T2/hu unknown
- 2011-10-11 BR BR112013033552-1A patent/BR112013033552B1/pt active IP Right Grant
- 2011-10-11 RS RS20230857A patent/RS64742B1/sr unknown
- 2011-10-11 HR HRP20231180TT patent/HRP20231180T1/hr unknown
- 2011-10-11 NZ NZ619406A patent/NZ619406A/en unknown
- 2011-10-11 PT PT201624418T patent/PT3691268T/pt unknown
- 2011-10-11 JP JP2014518537A patent/JP6059219B2/ja active Active
- 2011-10-11 LT LTEP20162441.8T patent/LT3691268T/lt unknown
-
2013
- 2013-11-13 ZA ZA2013/08553A patent/ZA201308553B/en unknown
- 2013-12-26 IL IL230189A patent/IL230189A/en active IP Right Grant
- 2013-12-27 CL CL2013003736A patent/CL2013003736A1/es unknown
-
2014
- 2014-01-30 CO CO14019170A patent/CO6862115A2/es unknown
- 2014-08-13 US US14/458,997 patent/US9426495B2/en active Active
- 2014-09-02 HK HK14108880.0A patent/HK1195430A1/zh unknown
-
2016
- 2016-07-01 US US15/201,160 patent/US9729898B2/en active Active
- 2016-08-08 IL IL247175A patent/IL247175A/en active IP Right Grant
- 2016-12-13 US US15/377,831 patent/US9743114B2/en active Active
- 2016-12-23 HK HK16114638A patent/HK1226567A1/zh unknown
-
2017
- 2017-07-12 US US15/647,962 patent/US10003824B2/en active Active
-
2018
- 2018-04-26 US US15/963,899 patent/US10805640B2/en active Active
-
2020
- 2020-09-02 US US17/009,918 patent/US10924766B2/en active Active
-
2021
- 2021-01-07 US US17/143,782 patent/US11451830B2/en active Active
-
2022
- 2022-08-18 US US17/890,398 patent/US11601681B2/en active Active
- 2022-09-20 US US17/948,949 patent/US11641485B2/en active Active
- 2022-09-20 US US17/949,049 patent/US11601684B1/en active Active
- 2022-09-20 US US17/948,982 patent/US11641486B2/en active Active
- 2022-09-20 US US17/949,025 patent/US11641487B2/en active Active
- 2022-09-20 US US17/948,903 patent/US11601683B2/en active Active
- 2022-09-20 US US17/948,849 patent/US11601682B2/en active Active
-
2023
- 2023-03-21 US US18/124,517 patent/US11871040B2/en active Active
- 2023-11-02 US US18/386,524 patent/US12075097B2/en active Active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2958967T3 (es) | Reducción de latencia en codificación y descodificación de vídeo |