ES2259827T3 - Regulacion de los requisitos de calculo y de memoria de un tren de bits comprimido en un decodificador de video. - Google Patents

Regulacion de los requisitos de calculo y de memoria de un tren de bits comprimido en un decodificador de video.

Info

Publication number
ES2259827T3
ES2259827T3 ES99308021T ES99308021T ES2259827T3 ES 2259827 T3 ES2259827 T3 ES 2259827T3 ES 99308021 T ES99308021 T ES 99308021T ES 99308021 T ES99308021 T ES 99308021T ES 2259827 T3 ES2259827 T3 ES 2259827T3
Authority
ES
Spain
Prior art keywords
decoding
time
memory
complexity
time stamp
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.)
Expired - Lifetime
Application number
ES99308021T
Other languages
English (en)
Inventor
Thiow Keng Tan
Guo Rong Hu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP32876798A external-priority patent/JP2000125292A/ja
Priority claimed from JP4140699A external-priority patent/JP2000244909A/ja
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Application granted granted Critical
Publication of ES2259827T3 publication Critical patent/ES2259827T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods 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 block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Un aparato para la verificación del flujo binario de vídeo comprimido orientado a objetos incluye un conjunto de modelos de verificador: Verificador de Complejidad de Vídeo (VCV), Verificador de memoria de Vídeo (VMV) y Verificador de Presentación de Vídeo (VPV). Los modelos especifican el comportamiento de un descodificador para tamaño y tasa VOP variable y define nuevos parámetros y límites para medir y verificar los recursos computacionales y de memoria que el flujo binario demanda. Se pueden usar en el codificador de vídeo o en la verificación de la distribución de vídeo precomprimida.

Description

Regulación de los requisitos de cálculo y de memoria de un tren de bits comprimido en un decodificador de vídeo.
Antecedentes de la invención 1. Campo de la invención
La presente invención se refiere a un método y modelo para regular los requisitos de cálculo y de memoria de un tren de bits comprimido en un decodificador vídeo. Esta invención es útil en el campo de las técnicas de compresión y codificación audiovisuales multimedia donde el codificador tiene que regular los requisitos de complejidad de los trenes de bits que genera. Esto garantiza que los decodificadores que se adapten a la especificación de complejidad del estándar puedan decodificar con éxito estos trenes de bits sin andar escasos de recursos.
2. Descripción de la técnica relacionada
En el pasado, los implementadores de decodificadores vídeo conformes a una cierta capacidad de rendimiento de un estándar tenían que garantizar que los decodificadores tuviesen suficientes recursos para soportar el peor escenario posible según la especificación. Ésta no es una buena práctica de ingeniería puesto que generalmente el peor escenario representa un caso casi imposible en condiciones operativas normales. Esto da lugar a ingeniería excesiva y un desperdicio de recursos.
Actualmente dentro de la estandarización de MPEG-4, hay un esfuerzo por especificar límites de complejidad para el decodificador en base a la complejidad del tren de bits en vez del peor escenario. Éste es un método estadístico basado en una unidad común de medida de complejidad. El estándar especificará un valor fijo para la complejidad máxima permitida en un tren de bits conforme. El decodificador tiene que proporcionar recursos suficientes para decodificar todos los trenes de bits conformes. El codificador tiene que garantizar que todos los trenes de bits generados no excedan de los límites máximos de complejidad y que por lo tanto sean conformes.
La figura 1 representa gráficamente el concepto anterior. En la figura 1, se distribuyen trenes de bits válidos a la izquierda del valor fijo del estándar y todos los codificadores conformes se distribuyen a la derecha del valor fijo del estándar. El límite de complejidad se indica con la línea recta en el gráfico. La abscisa se da en unidades de complejidad. A la izquierda de la línea están todos los trenes de bits conformes. Aquí se ilustra la distribución típica del tren de bits. La mayor parte de los trenes de bits tendría una complejidad mucho menor que el límite de complejidad. Unos pocos trenes de bits se aproximarán a este límite. Cuando un tren de bits excede de este límite, ya no es un tren de bits conforme y por lo tanto no se representa. En el lado derecho del límite de complejidad está la distribución de decodificadores. La mayoría de los decodificadores se diseñarían lo más próximos al límite de complejidad que sea posible para ahorrar costo. Unos pocos decodificadores pueden tener más recursos que los requeridos y estos están más a la derecha del gráfico. Un decodificador que no tenga suficientes recursos para cumplir los requisitos de complejidad de un tren de bits conforme estará a la izquierda del límite de complejidad y se considerará no conforme.
La figura 2 muestra un método simple de medida de complejidad donde el codificador cuenta el número de cada tipo de macrobloque seleccionado y evalúa la complejidad del tren de bits en base a alguna función de costo predefinida dada a cada uno del tipo de macrobloque. La figura 2 muestra un método simple de contar la función de costo del tren de bits generado calculando las unidades I-MB equivalentes. Sin embargo, esto tiene el problema de no poder dar la medida de complejidad instantánea y no considera otro recurso, como la memoria. La información acerca del macrobloque corriente se pasa a la Decisión de Tipo de Macrobloque, módulo 201, donde se decide codificar el macrobloque en un método particular. Esta decisión es contada después por el Generador de Función de Costo, módulo 202, que convierte esta información a una función de costo de complejidad. La función de costo de complejidad es realimentada posteriormente al módulo de Decisión de Tipo de Macrobloque para la decisión futura.
Los módulos 203 a 210 son los módulos típicos requeridos para un codificador de transformada híbrido. La imagen introducida se divide en bloques que son procesados por los módulos de estimación de movimiento y compensación 210 y 209, respectivamente. Obsérvese que este paso se salta si no hay predicción de movimiento. La señal de diferencia de movimiento compensado es procesada posteriormente por el módulo de transformada DCT 203. Los coeficientes de transformación son cuantificados después en el módulo de cuantificación 204. Los coeficientes cuantificados son codificados posteriormente con codificación de entropía junto con la información general del tipo de macrobloque y los vectores de movimiento en el módulo de Codificación de Longitud Variable 205. El decodificador local que consta de los módulos 206 a 209 reconstruye la imagen codificada para uso en la predicción de futuras imágenes. La Cuantificación Inversa, módulo 206, cuantifica inversamente los coeficientes antes de alimentarse a la DCT Inversa, módulo 207, donde se recupera la señal de diferencia. La señal de diferencia se suma posteriormente con la predicción de movimiento para formar el bloque reconstruido. Estos bloques se almacenan posteriormente en la Memoria de Trama, módulo 208, para uso futuro.
Además, en codificación vídeo es inherente que el proceso de compresión dé lugar a un tren de bits de tasa de bits variable. Este tren de bits es enviado comúnmente por un canal de tasa de bits constante. Para absorber la variación instantánea de la tasa de bits es común introducir memorias intermedias en la salida del codificador y en la entrada del decodificador. Estas memorias intermedias sirven como depósito para bits y permiten conectar un canal de tasa de bits constante a un codificador que genera trenes de bits de tasa de bits variable así como a un decodificador que consume trenes de bits a una tasa de bits variable.
La ocupación de las memorias intermedias cambia en el tiempo, porque la velocidad a la que se está llenando la memoria intermedia y la velocidad a la que se está vaciando son diferentes. Sin embargo, a lo largo de un período largo de tiempo, se puede definir que la tasa media para llenar la memoria intermedia y la tasa media de vaciar la memoria intermedia son las mismas. Por lo tanto, si permitimos una memoria intermedia suficientemente grande, se puede lograr la operación de estado de régimen. Para trabajar correctamente, la memoria intermedia no debe estar vacía (subdesbordamiento) ni llenarse totalmente (desbordamiento). Para garantizar esta condición, se han presentado en la literatura modelos de la memoria intermedia, tal como MPEG-1 y MPEG-2, donde el modelo de memoria intermedia vídeo permite el comportamiento del decodificador de tasa de bits variable conectado a un canal de tasa de bits constante. El resto del decodificador no tiene que ser modelado porque el método de decodificación vídeo se ha definido a una tasa de tramas constante y cada trama tiene un tamaño constante. Por lo tanto, la tasa constante de decodificación y el consumo de memoria intermedia se definen bien en el tiempo y el verificador de puesta en memoria intermedia vídeo (VBV) se utiliza para verificar si la memoria intermedia requerida en un decodificador es inferior al tamaño de memoria intermedia definido verificando el tren de bits con su función de tasa de distribución, R(t).
Definir la medida de complejidad no es suficiente para garantizar que el decodificador se pueda diseñar de forma inequívoca. Hay dos razones para ello.
La primera razón es que la complejidad se mide en el tiempo. Dado que el tiempo es suficientemente grande, puede acomodar varias tramas de imágenes. La distribución de complejidad puede ser tal que los recursos del decodificador se puedan agotar en el tiempo instantáneo mientras que la complejidad media es inferior al límite establecido. Restringir la ventana a un tiempo más corto restringiría la variabilidad de la complejidad de las imágenes. Esto significa que todas las imágenes deben tener la complejidad constante. Esto no es bueno puesto que, por la naturaleza de los modos de codificación, los diferentes tipos de imágenes deberán tener complejidades diferentes.
La segunda razón es que la complejidad no está relacionada solamente con el tiempo de cálculo. Un segundo elemento, que no es capturado en la medida de complejidad, son los requisitos de memoria.
Por lo tanto, el problema a resolver es inventar un método para regular los requisitos de complejidad del tren de bits en términos de requisitos de cálculo y de memoria.
Además, en desarrollos recientes en el proceso de compresión vídeo, MPEG ha definido un método de codificación más flexible que está orientado a objeto. Este esquema de codificación conforme soporta un número variable de macrobloques dentro de una imagen vídeo y diferente tasa de imágenes de tal manera que la tasa de decodificación y la tasa de consumo de la memoria ya no son constantes. Hay que medir estas tasas con el tiempo para garantizar que no violen la capacidad máxima del decodificador. Los ejemplos de sistemas de la técnica anterior incluyen US-A-5677969, WO-A-9617492, US-A-5719632, US-A-5038209, WO-A-9747139.
Además, el problema a resolver es cómo definir nuevos verificadores y algoritmos para medir los parámetros de un tren de bits vídeo comprimido para garantizar que el tren de bits generado se pueda decodificar con la capacidad y recursos definidos.
Para resolver el problema anterior, se diseña un modelo conjunto de requisitos de cálculo y de memoria. Considerando los requisitos de cálculo así como de memoria de los trenes de bits podemos limitar con precisión los requisitos de recursos en el decodificador.
Los requisitos de memoria se definen bien por la cantidad de memoria disponible. El uso y la liberación de la memoria también están bien definidos en el tiempo por los sellos de tiempo de decodificación y presentación de la secuencia vídeo. Los sellos de tiempo están embebidos en los trenes de bits.
Por lo tanto, vinculando las unidades de complejidad de cálculo al uso de memoria, es posible resolver el primer problema donde la ventana para definir el límite de complejidad es ambigua. Enlazando estos requisitos, los requisitos de cálculo y de memoria pueden ser delimitados en base a los sellos de tiempo de decodificación y presentación. Ya no hay que definir una ventana deslizante para la medición de complejidad. Al mismo tiempo las imágenes no tienen que tener complejidad constante.
Además, el modelo VCV 130 proporciona los requisitos de cálculo para determinar el tiempo de comienzo y fin de la decodificación de los macrobloques. El modelo VMv 140 describe el comportamiento de la memoria de referencia y la ocupación de la memoria de referencia. El VPV 105 define un algoritmo para comprobar el tren de bits y verificar la cantidad de memoria intermedia de presentación.
Esta invención enlaza los modelos en términos del consumo de memoria, lo que permite limitar los trenes de bits por una limitación física del decodificador. El aparato para implementar la verificación también se facilita en esta invención.
Además, se desarrolla un conjunto completo nuevo de modelos de verificadores: Verificador de Complejidad Vídeo (VCV), Verificador de Memoria Vídeo (VMV) y Verificador de Presentación Vídeo (VPV). Los modelos especifican el comportamiento de un decodificador para tamaño y tasa VOP variables y definen nuevos parámetros y límites para medir y verificar los recursos de cálculo y de memoria que el tren de bits demanda, véase.
La operación de la invención es la siguiente. El codificador comprueba la complejidad del tren de bits generado contando el tipo de macrobloque. A cada tipo de macrobloque se le asigna un costo predefinido en algunas unidades de complejidad. Cada macrobloque decodificado también consume una cantidad predefinida de espacio de memoria. Dependiendo del tipo del VOP, la memoria está ocupada durante un período diferente. La memoria se libera cuando el macrobloque en el VOP ya no se requiere para la presentación o predicción.
Al decodificador virtual se le asigna el límite máximo de unidades de complejidad y memoria. El decodificador virtual puede decodificar el tren de bits lo más rápidamente que sea posible con sujeción al límite del límite de complejidad. Sin embargo, al hacerlo, el decodificador tendría que tener memoria extra para mantener los VOPs decodificados hasta que sea tiempo de visualizarlos o hasta que ya no se necesiten para predicción. Así, es claro que el decodificador virtual está limitado tanto por la cantidad de capacidad de procesado como por la memoria
disponible.
Por lo tanto, verificando los requisitos de unidades de complejidad del tren de bits y ajustando el sello de tiempo de decodificación del VOP, el decodificador virtual es capaz de evitar que el uso de memoria exceda su límite. Así, el decodificador virtual se puede utilizar menos tiempo en un VOP simple y más tiempo en un VOP complejo.
El decodificador virtual se define por las reglas siguientes:
a) La cantidad de memoria requerida para decodificar el VOP corriente se define por el número de macrobloques en el VOP y se consume a una tasa constante entre el sello de tiempo de decodificación del VOP corriente y el VOP siguiente.
b) Al tiempo de presentación de un VOP I o P, la memoria total asignada al VOP I o P anterior en orden de decodificación se libera al instante.
c) Al tiempo de presentación de un VOP B, la memoria total asignada a dicho VOP B se libera al instante.
d) En cualquier momento, el sello de tiempo de decodificación del (n+1)-ésimo VOP en orden de decodificación, DTS_{n+1}, debe ser inferior o igual al sello de tiempo de presentación del n-ésimo VOP en orden de decodificación, PTSn.
(1)DTS_{n+1} \leq PT_{n}
donde n es en orden de decodificación.
e) En cualquier momento, la suma de la memoria consumida no debe exceder los recursos de memoria máximos disponibles, M_{Max}. De otro modo, se dice que el decodificador virtual tiene desbordamiento de memoria.
f) En cualquier momento, la relación de la complejidad de decodificación del VOP corriente, C_{n}, al tiempo de decodificación disponible, DTS_{n+1} - DTS_{n}, debe ser inferior a los recursos de complejidad máxima disponibles por segundo, C'_{Max}. De otro modo, se dice que el decodificador virtual tiene desbordamiento de complejidad.
(2)C_{n} \ / \ (DTS_{n+1} - DTS_{n}) < C' _{Max},
donde n es en orden de decodificación.
Así, un tren de bits válido es aquel donde los valores del tren de bits cumplen las condiciones de d), e) y f) y no hacen que el decodificador virtual rebose en recursos de memoria o complejidad.
Breve descripción de los dibujos
La figura 1 es una distribución de complejidad de tren de bits y recursos de decodificador en unidades de complejidad de la técnica anterior.
La figura 2 es una medida de complejidad y control en un codificador vídeo de la técnica anterior.
La figura 3 es una medida de complejidad y control con decodificador virtual en codificador vídeo según la primera realización.
La figura 4 es un diagrama de bloques para el decodificador virtual de la primera realización.
La figura 5 es un gráfico que muestra la funcionalidad del decodificador virtual con los sellos de tiempo de decodificación y presentación sin reordenación de tramas.
La figura 6 es un gráfico que muestra la funcionalidad del decodificador virtual con los sellos de tiempo de decodificación y presentación, y que muestra en particular un ejemplo de la realización del decodificador virtual.
La figura 7 es un diagrama de bloques que representa una medida de complejidad y verificación con verificador de complejidad virtual hipotético en codificador vídeo según la presente invención.
La figura 8 es un diagrama de bloques que representa una medida de complejidad y verificación usando un verificador de complejidad virtual hipotético.
La figura 9 es un diagrama de bloques de un modelo de verificador vídeo, que muestra en particular la interrelación entre VBV, VCV, VMV y VPV.
La figura 10 es un diagrama de bloques de un verificador de memoria intermedia vídeo, que muestra en particular la disposición del verificador de memoria intermedia vídeo conectado a la salida del codificador.
La figura 11 es un gráfico que muestra una operación de un verificador de memoria intermedia vídeo que ocupa tiempo.
La figura 12 es un diagrama de bloques de un verificador de complejidad vídeo, que muestra en particular la disposición del verificador de complejidad vídeo conectado a la salida del codificador.
La figura 13 es un gráfico que muestra una operación del verificador de complejidad vídeo que ocupa tiempo.
La figura 14 es un diagrama de bloques de un verificador de memoria vídeo, que muestra en particular la disposición del verificador de memoria vídeo conectado a la salida del codificador.
La figura 15 es un gráfico que muestra una operación del verificador de memoria vídeo que ocupa tiempo.
La figura 16 es un diagrama de bloques de un verificador de presentación vídeo, que muestra en particular la disposición del verificador de presentación vídeo conectado a la salida del codificador.
La figura 17 es un gráfico que muestra una operación del verificador de presentación vídeo que ocupa tiempo.
La figura 18 es un diagrama de bloques de un modelo de verificador vídeo usado en un codificador vídeo.
La figura 19 es un diagrama de flujo de la verificación de trenes de bits vídeo mostrando la operación de un verificador autónomo de trenes de bits vídeo.
La figura 20 es un gráfico que muestra una ocupación de memoria intermedia VBV.
La figura 21 es un gráfico que muestra ocupación de memoria intermedia VCV, VMV y VPV.
Descripción de las realizaciones preferidas
Primera realización
La primera realización se representa en las figuras 3, 4, 5 y 6. La figura 3 muestra el mismo diagrama que en la técnica anterior de la figura 2, pero con nuevas partes añadidas según la presente invención. La primera realización usa un decodificador virtual 303. La salida del generador de función de costo 302 no es realimentada directamente al módulo de decisión de tipo de macrobloque 301, sino mediante el decodificador virtual 303. El decodificador virtual 303 también recibe los sellos de tiempo de presentación de las imágenes que son codificadas. El decodificador virtual 303 realiza la función descrita anteriormente. Es un modelo hipotético que simula un decodificador que tiene recursos de cálculo y de memoria limitados. Estos recursos son consumidos según la información de codificación hallada en el generador de función de costo y los sellos de tiempo de presentación.
La figura 4 ilustra las funciones del decodificador virtual 303. La función de costo de complejidad del generador de función de costo 302 se pasa a la memoria intermedia de VOP virtual 401, y el generador de sello de tiempo de decodificación (DTS) 402. La memoria intermedia de VOP virtual 401 también recibe las señales del sello de tiempo de presentación (PTS) y del sello de tiempo de decodificación (DTS). Después simula el uso de memoria intermedia. La salida de la memoria intermedia de VOP virtual 401 es la ocupación de memoria intermedia. Esta información se pasa al generador DTS 402 para que pueda generar el DTS siguiente.
La generación del DTS depende de la ocupación de memoria intermedia y la función de costo de complejidad. Cuando la memoria se está llenando, el DTS siguiente puede retardarse para dejar más tiempo para decodificar la imagen corriente y llenar así más tarde la memoria intermedia. Igualmente, cuando aumenta la función de costo de complejidad de la imagen corriente, el DTS de la imagen siguiente también se puede retardar para dar al decodificador más tiempo para decodificar la imagen corriente. A continuación se da una función posible:
(3)DTS_{n+1} = DTS_{n} + c_{1} \ x \ \text{plenitud\_de\_memoria\_intermedia} + c_{2} \ x \ \text{costo\_de\_complejidad}
donde c_{1} y c_{2} son factores constantes determinados por la tasa de tramas de la secuencia.
El DTS no puede ser demasiado rápido, puesto que si dos DTS consecutivos están demasiado próximos, el denominador en la ecuación (2) será pequeño y el lado izquierdo de la ecuación excederá los límites del lado derecho. Cuando sucede esto, el decodificador ha agotado el recurso de cálculo. Véase la regla f) explicada anteriormente.
Igualmente, el DTS no se puede retardar indefinidamente, puesto que la imagen tendrá que visualizarse en un tiempo particular dado por el PTS. Véase la regla d) anterior. Esta comprobación se realiza en el comparador PTS/DTS 403, donde se verifica la diferencia entre el PTS y DTS. El resultado se pasa al generador de factor de ponderación de tipo de macrobloque 404, donde se genera el factor de ponderación para cada tipo de macrobloque. Estos pesos se utilizan para regular la decisión realizada en el módulo de decisión de tipo de macrobloque 301.
La memoria intermedia de VOP virtual implementa las reglas a) a c) y garantiza que la regla e) no se viole. Dos ejemplos de esta realización se muestran en las figuras 5 y 6. La figura 5 muestra el caso en el que el tipo de codificación VOP consta de VOPs I y P solamente. Por lo tanto, los VOPS se decodifican y visualizan en el mismo orden. La figura 6 muestra el caso en el que los tipos de codificación VOP constan de VOPs I, P y B. Debido a la predicción bidireccional de los VOPs B, hay que reordenar los VOPS para codificación de tal manera que el orden de codificación y el orden de visualización de los VOPS sean diferentes. Por lo tanto, en el modelo los VOPS se decodifican y visualizan en orden diferente.
Caso 1
VOPs I y P solamente
A continuación se describe la operación de la memoria intermedia de VOP virtual cuando solamente hay VOPs I y P. El eje horizontal muestra el tiempo y los sellos de tiempo correspondientes cuando comienza un evento. El eje vertical muestra el uso de memoria. El límite de los recursos de memoria está marcado por el recurso de memoria máximo disponible.
Según la regla a), en el tiempo DTS_{0}, el decodificador virtual comienza a decodificar el primer VOP, VOP I 0. Completa la decodificación en DTS_{1}. El decodificador virtual, o modelo, asume que la memoria usada por VOP 0 es lineal en el tiempo, así la línea recta mostrada entre DTS_{0} y DTS_{1}. Entre DTS_{1} y DTS_{2} el decodificador decodifica el VOP P 1 y consume VOP 1 de memoria. Este proceso se repite durante todos los intervalos de DTS_{i} a DTS_{i+1} y se representa en la figura 5 como las líneas linealmente crecientes.
La regla b) se representa en cada PTS excepto en PTS_{0} donde no tiene un VOP previo. En PTS_{1}, la memoria consumida por VOP 0 se libera al instante. Esto se representa como la línea vertical en el gráfico. Una caída vertical similar en la memoria consumida se representa en el tiempo PTS_{i} en el gráfico.
Mientras el gráfico permanece entre los límites de los recursos de memoria máximos disponibles y el DTS y PTS cumplen las condiciones de la regla e), el modelo opera dentro de sus límites. El modelo ha rebosado cuando se viola una o varias reglas d), e) o f).
Caso 2
VOPs I, P y B
La figura 6 muestra el caso en el que hay VOPs I, P y B. Cuando hay VOPs B en la secuencia, hay que reordenar el orden de decodificación. En este ejemplo, la secuencia codificada contiene VOPs 0, 1, 2, 3, 4,... VOP 0 es VOP I, VOPs 1 y 3 son VOPs P y VOPs 2 y 4 son VOPS B. El orden de visualización real de estos VOPs es 0, 2, 1, 4, 3,... Obsérvese el nuevo orden de VOPs 1 y 2 así como 3 y 4. Esto es debido a que el VOP B 2 necesita el VOP P 1 para predicción; por lo tanto, el VOP P es decodificado primero aunque su orden de visualización llegue después del VOP B 2.
Según la regla a), en el tiempo DTS_{0}, el decodificador virtual comienza a decodificar el primer VOP, VOP I 0. Completa la decodificación en DTS_{1}. El modelo asume que la memoria usada por VOP 0 es lineal en el tiempo, así la línea recta se muestra entre DTS_{0} y DTS_{1}. Entre DTS_{1} y DTS_{2} el decodificador decodifica el VOP P 1 y consume VOP 1 de memoria. Entre DTS_{2} y DTS_{3} el decodificador decodifica el VOP B 2 y consume VOP 2 de memoria.
Las reglas b) y c) se aplican en cada PTS excepto en PTS_{0} donde no tiene un VOP previo. En PTS_{2}, la memoria consumida por VOP 2 se libera al instante. Esto se representa como la línea vertical en el gráfico. Una caída vertical similar en la memoria consumida se representa en el tiempo PTS_{i} en el gráfico.
Mientras el gráfico permanece entre los límites de los recursos de memoria máximos disponibles y el DTS y PTS cumplen las condiciones de la regla e), el modelo opera dentro de sus límites. El modelo ha rebosado cuando se viola una o varias reglas d), e) o f).
Verificación de complejidad virtual
En una realización separada, el decodificador virtual 303 se utiliza no para controlar la complejidad del tren de bits codificado, sino para verificar que el tren de bits es conforme a la especificación de complejidad. Hay dos métodos de verificación. Uno se realiza internamente en el codificador mientras el tren de bits está siendo generado y el otro fuera del codificador después de haberse generado el tren de bits. Estos se muestran en las figuras 7 y 8, respectivamente.
En la figura 7, el verificador de complejidad virtual hipotético calcula la función de costo mediante el generador de función de costo 702, y además recibe el PTS y DTS del generador de PTS, DTS 701. Esta información se aplica entonces mediante el decodificador virtual 703, como se ha descrito anteriormente. El verificador garantiza que se cumplan las reglas a) a f) para que el tren de bits sea válido.
La figura 8 muestra el caso en el que el verificador de complejidad virtual hipotético está unido a la salida del codificador 801. El analizador 802 analiza el tren de bits de la salida del codificador para obtener el PTS, DTS y tipo de codificación de macrobloque. El tipo de codificación de macrobloque se pasa después al generador de función de costo 803, donde se evalúa la función de costo. La función de costo junto con el PTS y DTS se aplica mediante el decodificador virtual 804, como se describe en la sección anterior. El verificador garantiza que se cumplan las reglas a) a f) para que el tren de bits sea válido.
Con la primera realización, el codificador es capaz de controlar y regular la complejidad de los trenes de bits codificados que genera. Al mismo tiempo, el decodificador garantiza que no se creen trenes que sean demasiado complejos. El efecto de esta invención es que el diseño de los decodificadores ya no se tiene que basar en el peor escenario, sino en la medida de complejidad común que especifica el estándar. Por lo tanto, el costo de estos productos se puede reducir, puesto que no se necesita ingeniería excesiva.
Segunda realización
La segunda realización describe la operación general de la presente realización.
Un modelo es una simulación de las acciones de un decodificador deseado y sus módulos tal como la memoria intermedia de trenes de bits, la unidad central de proceso (CPU), o el dispositivo de almacenamiento de memoria. Se puede usar un modelo como un verificador vídeo embebido en el codificador durante la creación del tren de bits codificado para garantizar que un decodificador típico pueda decodificar el tren de bits que crea el codificador. También se puede usar un modelo como un verificador vídeo autónomo. Se utiliza un verificador vídeo autónomo para comprobar y verificar un tren de bits que ya ha sido codificado por algunos medios para garantizar que un decodificador típico es capaz de decodificarlo.
Esta realización presenta un verificador vídeo, representado en la figura 9, que incluye los modelos siguientes:
1) Un modelo de memoria intermedia vídeo 120,
2) Un modelo de complejidad vídeo 130,
3) Un modelo de memoria de referencia vídeo 140, y
4) Un modelo de presentación vídeo 150.
Cada uno de los modelos se representa individualmente en las figuras 10, 12, 14 y 16, respectivamente.
La figura 10 muestra un modelo de memoria intermedia vídeo 120, que tiene un verificador de memoria intermedia vídeo 202. El verificador de memoria intermedia vídeo 202 es necesario para limitar los requisitos de memoria para la memoria intermedia de trenes de bits que necesita un decodificador vídeo, con el que el codificador vídeo puede ser obligado a hacer trenes de bits que son decodificables con una memoria intermedia de tamaño predeterminado. El verificador de memoria intermedia vídeo 202 unido a la salida del codificador 201 se utiliza para simular la memoria intermedia de trenes de bits 204 presente en un decodificador real 203.
El verificador de memoria intermedia vídeo 202 funciona de la forma siguiente como ilustra el gráfico de la figura 11. Simula la memoria intermedia de trenes de bits del decodificador haciendo las suposiciones siguientes. Supone en primer lugar un cierto tamaño máximo de la memoria intermedia 251 y la ocupación inicial 252 del verificador de memoria intermedia virtual. Se supone después que el verificador de memoria intermedia virtual se llena 253 con bits del tren de bits producido por el codificador. Se supone que el verificador de memoria intermedia virtual se llena a una tasa específica que es controlada por el canal que se utiliza para transportar el tren de bits. Interpretando después la información de temporización embebida en el tren de bits, el verificador de memoria intermedia vídeo elabora el tiempo en el que se espera que el decodificador inicie la decodificación de las imágenes individuales de los datos de entrada codificados en el tren de bits 254. Al tiempo en que se supone que el decodificador completa la decodificación de las imágenes individuales de los datos de entrada, el número de bits que representan la imagen corriente se saca del verificador de memoria intermedia virtual 255. Se supone que los bits se quitan al instante de la memoria
intermedia.
El contenido del verificador de memoria intermedia virtual 202 se verifica en el instante antes y después de sacar los bits de él. Si el verificador de memoria intermedia virtual de ocupación excede del tamaño máximo de memoria intermedia, se dice que el verificador de memoria intermedia virtual se ha desbordado. Si los bits a extraer son más de los disponibles en el verificador de memoria intermedia virtual, se dice que el verificador de memoria intermedia virtual se ha subdesbordado. Para funcionamiento normal, la memoria intermedia no se puede desbordar. En el caso de subdesbordamiento, se supone que el decodificador está inactivo hasta que los bits requeridos llegan al verificador de memoria intermedia virtual.
Implementando este modelo y usándolo para regular y comprobar los trenes de bits creados por el codificador, podemos estar seguros de que cualquier decodificador conforme a las especificaciones del estándar puede decodificar los trenes de bits así generados. El tren de bits no rebosará o subdesbordará la memoria intermedia de trenes de bits del decodificador.
La figura 12 muestra un modelo de complejidad vídeo 130, que tiene un verificador de complejidad vídeo 302. El verificador de complejidad vídeo 302 es necesario para limitar los requisitos de velocidad de procesado que precisa un decodificador vídeo, con el que el codificador vídeo se puede limitar a hacer trenes de bits que sean decodificables con una capacidad predeterminada del procesador del decodificador. El verificador de complejidad vídeo 302 unido a la salida del codificador 301 se utiliza para simular el procesador 305 presente en un decodificador real 303.
El verificador de complejidad vídeo 302 opera de la forma siguiente como ilustra el gráfico de la figura 13. Simula el procesador del decodificador haciendo las suposiciones siguientes. La imagen se segmenta en unidades de procesado más pequeñas llamadas macrobloques. Primero asume que hay un cierto número máximo de macrobloques 351 que el procesador puede acumular en su memoria intermedia para procesado. Esto pone un límite a la cantidad de retardo que el procesador puede tener antes de que la imagen tenga que ser decodificada. A continuación, el verificador de complejidad vídeo determina el comienzo del tiempo de decodificación inspeccionando la información codificada en el tren de bits. al tiempo en que se espera que el decodificador inicie la decodificación de las imágenes individuales de los datos de entrada codificados en el tren de bits 352, el verificador de complejidad virtual determina la complejidad de la imagen a decodificar en términos de número de macrobloques 353. Este número de macrobloques se pone después en la cola del verificador de complejidad vídeo para procesado. El verificador vídeo procesa posteriormente los macrobloques a una tasa máxima dada de macrobloques por unidad de tiempo 354. Esta tasa máxima se basa en la especificación del estándar. Usando estas suposiciones se calcula el tiempo de la terminación de la decodificación de las imágenes 535. Una fórmula simple de dividir el tamaño de la cola por la tasa de procesado dará el tiempo que se tarda en completar la decodificación de la imagen sometida a la cola.
La cola del verificador de complejidad vídeo se verifica al tiempo de inicio de la decodificación para garantizar que la cola no exceda del número máximo de límite de macrobloques. Esto tiene la finalidad de garantizar que todas las imágenes se puedan decodificar dentro de cierta latencia del decodificador.
En una variación diferente del verificador de complejidad vídeo, la complejidad del tren de bits se mide también en términos de los tipos diferentes de macrobloques. Los tipos de codificación de los macrobloques se utilizan para clasificar los macrobloques en diferentes categorías de complejidad. La complejidad se normaliza posteriormente con respecto al tipo de macrobloque más simple, al que se le da una unidad de una complejidad de macrobloque. A las categorías restantes se les da un peso de w veces una complejidad de macrobloque, donde w varía para cada una de las categorías dependiendo de la complejidad y siempre es un valor mayor que uno. La suma ponderada de la complejidad de macrobloque se usa posteriormente en el verificador de complejidad vídeo.
Implementando este modelo y usándolo para regular y comprobar los trenes de bits creados por el codificador, podemos asegurar que cualquier decodificador conforme con las especificaciones del estándar puede decodificar los trenes de bits así generados. El tren de bits no será demasiado complejo para el procesador en el decodificador.
La figura 14 muestra un modelo de memoria vídeo 140, que tiene un verificador de memoria vídeo 402. El verificador de memoria vídeo 402 es necesario para limitar los requisitos de memoria de referencia que necesita un decodificador vídeo, con el que un codificador vídeo se puede obligar a hacer trenes de bits que sean decodificables con un tamaño predeterminado de memoria de referencia. El verificador de memoria vídeo 402 unido a la salida del codificador 401 se utiliza para simular la memoria de referencia 406 presente en un decodificador real 403.
El verificador de memoria vídeo 402 opera de la forma siguiente como ilustra el gráfico de la figura 15. Simula el consumo de memoria del decodificador haciendo las suposiciones siguientes. Supone primero que está disponible una cierta memoria de referencia máxima en términos de macrobloques 451. Durante el tiempo de decodificación 452, la memoria de referencia se consume a una tasa constante dada por la tasa de decodificación de la imagen 453. La tasa puede ser en términos de macrobloques por unidad de tiempo. Al tiempo de la presentación de la imagen corriente 454, la memoria ocupada por la imagen anterior es liberada al instante 455.
La razón por la que se libera la memoria ocupada por la imagen anterior y no la imagen corriente, es que la memoria de referencia de la imagen anterior se utiliza para la decodificación de la imagen corriente. Se puede liberar solamente cuando ya no se necesite. El tiempo de visualización de la imagen corriente se utiliza para determinar que la imagen corriente ha sido decodificada y por lo tanto la imagen anterior ya no se necesita y se puede liberar. En el caso de predicción bidireccional la liberación de la memoria es más complicada. Dado que las imágenes bidireccionales previstas no se usan para la predicción de futuras imágenes, se liberan de memoria en su tiempo de presentación sin retardo.
El verificador de memoria vídeo se verifica en el tiempo de presentación de cada imagen para ver si supera la memoria de referencia máxima. Esto tiene la finalidad de garantizar que siempre haya suficiente memoria de referencia para el almacenamiento de la imagen decodificada.
Implementando este modelo y usándolo para regular y comprobar los trenes de bits creados por el codificador, podemos asegurar que cualquier decodificador conforme con las especificaciones del estándar puede decodificar los trenes de bits así generados. El tren de bits no ocupará más memoria de referencia que la disponible en el decodificador.
Modelo de presentación vídeo
La figura 16 muestra un modelo de presentación vídeo 150, que tiene un verificador de presentación vídeo 502. El verificador de presentación vídeo 502 es necesario para limitar los requisitos de memoria de presentación que precisa una pantalla vídeo, con el que un codificador vídeo se puede obligar a hacer trenes de bits visualizables con un tamaño predeterminado de memoria de visualización. El verificador de presentación vídeo 502 unido a la salida del codificador 501 se utiliza para simular la memoria de presentación 507 unida a la salida del decodificador real 503.
El verificador de presentación vídeo 502 opera de la forma siguiente como ilustra el gráfico de la figura 17. Simula la memoria de presentación intermedia de la pantalla haciendo las suposiciones siguientes. Supone primero que está disponible una cierta memoria de presentación máxima en términos de macrobloques 551. Durante el tiempo de presentación 552, la memoria de presentación se llena con la imagen decodificada completa. Esta memoria se libera posteriormente a una tasa constante cuando se visualiza 553 la imagen. El verificador de presentación se verifica para garantizar que los macrobloques acumulados en la memoria intermedia no exceden de la memoria máxima disponible.
El modelo de verificador vídeo antes presentado individualmente se puede combinar para formar un verificador vídeo completo. La figura 18 muestra una solución completa incluyendo todos los módulos en el codificador. Representa los modelos de verificadores vídeo y los varios módulos codificadores que son controlados por el mecanismo de realimentación del verificador. La presente invención de los modelos de verificadores vídeo se puede usar en el codificador vídeo y en la verificación del tren de bits vídeo precodificado.
Cuando se utiliza en un codificador vídeo, el modelo VBV 613 se utiliza para comprobar la tasa del tren de bits. Si la tasa es mayor que el límite definido, se enviará una señal de realimentación al controlador de tasa 610 para controlar la cuantificación 604 y VLC 605. El modelo VCV 612 se utiliza para comprobar la complejidad o el costo de decodificación del tren de bits generado. Si la complejidad es superior al límite definido, se enviará una señal de realimentación al controlador de tipo de macrobloque 611 para controlar la decisión de tipo de macrobloque 601. El VMV 614 y VPV 615 se utilizan para comprobar el requisito de memoria de referencia 608. Si se desborda, también se enviará una señal de realimentación al controlador de tipo de macrobloque 611 para cambiar la decisión de tipo de macrobloque 601.
Como se muestra en la figura 19, los modelos de verificadores también se pueden utilizar para comprobar la conformidad de trenes de bits vídeo. Con el diagrama de flujo, el tren de bits vídeo se verifica con el VBV, VCV, VMV, y VPV uno a uno. Si no se puede cumplir ningún límite, el tren de bits no es conforme y debe ser rechazado.
Tercera realización
La tercera realización es un caso generalizado de la presente invención. Describe un ejemplo de una especificación completa del modelo de verificador vídeo. Se divide en las definiciones siguientes:
Definición de modelo de memoria intermedia vídeo
El verificador de puesta en memoria intermedia vídeo (VBV) es un algoritmo para verificar un tren de bits con su función de tasa de distribución, R(t), para verificar que la cantidad de memoria intermedia de tasa requerida en un decodificador es inferior al tamaño de memoria intermedia indicado. Originado a partir de MPEG-2, el nuevo VBV se define con nuevas características de la codificación vídeo orientada a objetos. Si un tren de bits visual se compone de múltiples objetos vídeo (VOs) cada uno con una o varias capas de objetos vídeo (VOLs), el modelo de memoria intermedia de tasa se aplica independientemente a cada VOL (usando funciones de tamaño y tasa de memoria intermedia particulares de dicho VOL).
El VBV se aplica a vídeo natural codificado como una combinación de planos de objetos vídeo intra, previsto y bidireccional (VOPS I, P y B). La sección siguiente se refiere a la figura 20. El tren de bits vídeo codificado tendrá que cumplir los requisitos del VBV definidos como sigue:
1. Cuando los parámetros vbv_memoria_intermedia _tamaño y vbv_ocupación son especificados por información de configuración de nivel de sistema, el tren de bits estará limitado según los valores especificados. Cuando los parámetros vbv_memoria_intermedia_tamaño y vbv_ocupación no están especificados (excepto en el caso de cabecera vídeo corta como se describe más adelante), esto indica que el tren de bits se deberá limitar según los valores por defecto de vbv_memoria_intermedia_tamaño y vbv_ocupación. El valor por defecto de vbv_memoria_intermedia_tamaño es el valor máximo de vbv_memoria_intermedia_tamaño permitido dentro del perfil y el nivel. El valor por defecto de vbv_ocupación es 170 x vbv_memoria_intermedia_tamaño, donde vbv_ocupación es en unidades de 64 bits y vbv_memoria_intermedia_tamaño es en unidades de 16384 bits. Esto corresponde a una ocupación inicial de aproximadamente dos tercios del tamaño de memoria intermedia completo.
2. El tamaño de memoria intermedia VBV es especificado por el campo vbv_memoria_intermedia_tamaño en la cabecera VOL en unidades de 16384 bits. Un vbv_memoria_intermedia_tamaño de 0 está prohibido. Definir B = 16384 x vbv_memoria_intermedia_tamaño de modo que sea el tamaño de memoria intermedia VBV en bits.
3. La tasa instantánea de bits de canal de capa de objeto vídeo vista por el codificador se designa por R_{vol}(t) en bits por segundo. Si el campo bit_tasa en la cabecera VOL está presente, define una tasa máxima (en unidades de 400 bits por segundo; un valor de 0 está prohibido) de tal manera que R_{vol}(t) <= 400 x bit_tasa. Obsérvese que R_{vol}(t) cuenta solamente sintaxis visual para el VOL corriente (consúltese la definición de d_{i} a continuación). Si el canal es un multiplex de tiempo serie conteniendo otros VOLs o como define ISO/IEC 14496-1 con una tasa de canal instantánea local vista por el codificador de R(t),
R_{vol}(t) = \{R(t) \ si \ t \in (\text{duración de bits de canal of un bit de VOL vol\}}
\hskip-4,8cm 0 de otro modo
La memoria intermedia VBV está inicialmente vacía. El campo vbv_ocupación especifica la ocupación inicial de la memoria intermedia VBV en unidades de 64 bits antes de decodificar el VOP inicial. El primer bit en la memoria intermedia VBV es el primer bit del tren elemental.
5. Definir d_{i} de modo que sea el tamaño en bits del i-ésimo VOP más cualquier cabecera GOV inmediatamente precedente, donde i es el índice VOP que se incrementa en 1 en orden de decodificación. Un VOP incluye cualesquiera palabras código de relleno traseras antes del código de inicio siguiente y el tamaño de un VOP codificado (d_{i}) siempre es un múltiplo de 8 bits debido a alineación de código inicial.
6. Sea t_{i} el tiempo de decodificación asociado con VOP i en orden de decodificación. Todos los bits (d_{i}) de VOP i se quitan de la memoria intermedia VBV al instante en t_{i}. Esta propiedad de extracción instantánea distingue el modelo de memoria intermedia VBV de una memoria intermedia de tasa real. El método de determinar el valor de t_{i} se define en el punto 7 siguiente.
7. \tau_{i} es el tiempo de composición (o tiempo de presentación en un decodificador no-compositor) de VOP i. Para un plano de objeto vídeo, \tau_{i} definido por vop_tiempo_incremento (en unidades de segundos 1/vop_tiempo_incremento_re-
solución) más el número acumulado de segundos enteros especificado por módulo_tiempo_base. En el caso de vídeo entrelazado, un VOP consta de líneas de dos campos y \tau_{i} es el tiempo de composición del primer campo. La relación entre el tiempo de composición y el tiempo de decodificación para un VOP viene dada por:
t_{i} = \tau_{i} \ si \ ((\text{vop\_codificación\_tipo de VOP i} == \ VOP \ B) \left\bracevert \right\bracevert \text{bajo\_retardo} \left\bracevert \right\bracevert \text{escalabilidad})
t_{i} = \tau_{i} - m_{i} de otro modo
donde bajo_retardo es verdadero ("1") si el tren elemental no contiene VOPS B. Si bajo_retardo es "0" y la escalabilidad también es "0", el tiempo de composición de los VOPs I y P se retarda hasta que se hayan compuesto todos los VOPs B inmediatamente anteriores en el tiempo. Este período de retardo es m_{i} = \tau_{f} = \tau_{\rho}, donde f, para un VOP I o P es el índice del VOP propiamente dicho, y para un VOP B es el índice del VOP no B temporalmente futuro más próximo con relación a VOP i, y \rho es el índice del VOP no B temporalmente anterior más próximo con relación a vop i.
Para inicializar el decodificador de modelo cuando m_{i} es necesario para el primer VOP, hay que definir un tiempo de decodificación inicial t_{0} para el primer VOP (puesto que la estructura de temporización está bloqueada a los tiempos VOP B y el primer VOP decodificado no sería un VOP B). Este tiempo de decodificación definido será t_{0} = 2t_{1} – t_{2} (es decir, suponiendo que t_{1} – t_{0} = t_{2} – t_{1}).
El ejemplo siguiente demuestra cómo se determina m_{i} para una secuencia con números variables de VOPS B consecutivos:
Orden de decodificación: I_{0}P_{1}P_{2}P_{3}B_{4}P_{5}B_{6}P_{7}B_{8}B_{9}P_{10}B_{11}B_{12}
Orden de presentación: I_{0}P_{1}P_{2}B_{4}P_{3}B_{6}P_{5}B_{8}B_{9}P_{7}B_{11}B_{12}P_{10}
Supóngase que vop_tiempo_incremento=1 y modulo_tiempo_base=0 en este ejemplo. El subíndice i es en orden de decodificación.
TABLA 1 Un ejemplo que demuestra cómo se determina m_{i}
i \tau_{i} t_{i} m_{i}
0 0 0 – 1 = -1 1
1 1 1 – 1 = 0 1
2 2 2 – 1 = 1 1
3 4 4 – 2 = 2 2
4 3 3 2
5 6 6 – 2 = 4 2
6 5 5 2
7 9 9 – 3 = 6 3
8 7 7 3
9 8 8 3
10 12 12 – 3 = 9 3
11 10 10 3
12 11 11 3
8. Definir b_{i} como la ocupación de memoria intermedia en bits inmediatamente después de la extracción de VOP i de la memoria intermedia de tasa. Usando las definiciones anteriores, b_{i} se puede definir iterativamente
b_{0} = 64 \ x \ vbv\_ocupación - d_{0}
b_{i+1} = b_{i} + \int\limits^{t_{i+1}}_{t_{i}}R_{vol}(t)dt - d_{i+1} \ para \ i \geq 0
9. El modelo de memoria intermedia de tasa requiere que la memoria intermedia VBV nunca desborde o subdesborde, es decir,
0 < b_{i} \ y \ b_{i} + d_{i} < \text{B para todo i}
Se utiliza aritmética de valor real para calcular b_{i} de manera que los errores no se acumulen.
Un tamaño de VOP codificado siempre debe ser inferior al tamaño de memoria intermedia VBV, es decir, d_{i} < B para todo i.
10. Si la cabecera vídeo corta está en uso (es decir, cuando corta_vídeo_cabecera = 1), el parámetro vbv_memo-
ria_intermedia_tamaño no está presente y se requieren las condiciones siguientes para operación VBV. La memoria intermedia está inicialmente vacía al comienzo de la operación del codificador (es decir, t=0 al tiempo de la generación del primer plano vídeo con cabecera corta), y su plenitud se verifica posteriormente después de cada intervalo de tiempo de 1001/30000 segundos (es decir, a t=1001/30000, 2002/30000, etc). Si un plano vídeo completo con cabecera corta está en la memoria intermedia al tiempo de verificación, se quita. La plenitud de memoria intermedia después de la extracción de un VOP, b_{i}, será mayor que cero e inferior a (4 Rmax \cdot 1001)/30000 bits, donde Rmax es la tasa de bits máxima en bits por segundo permitida dentro del perfil y nivel. El número de bits usados para codificar cualquier VOP solo, d_{i}, no excederá de k \cdot 16384 bits, donde k = 4 para QCIF y sub-QCIF, k = 16 para CIF, k = 32 para 4CIF, y k = 64 para 16CIF, a no ser que se especifique un valor más grande de k en la definición de perfil y nivel. Además, la plenitud de memoria intermedia total en cualquier momento no excederá de un valor de B = k \cdot 16384 + (4 \cdot Rmax \cdot 1001)/30000.
Un requisito del codificador es producir un tren de bits que no desborde o subdesborde la memoria intermedia VBV. Esto significa que el codificador se debe diseñar para realizar una operación VBV correcta para el rango de valores de R_{vol,decodificador}(t) sobre el que el sistema operará para distribución del tren de bits. Un canal tiene retardo constante si la tasa de bits del codificador en el tiempo t cuando un bit particular entra en el canal, R_{vol,codificador}(t) es igual a R_{vol,decodificador}(t + L), donde el bit se recibe en (t + L) y L es constante. En el caso de canales de retardo constante, el codificador puede utilizar su R_{vol,codificador}(t) estimado localmente para simular la ocupación VBV y controlar el número de bits por VOP, d_{i}, para evitar desbordamiento o subdesbordamiento.
El modelo VBV supone un canal de retardo constante. Esto permite al codificador producir un tren de bits elemental que no desborde o subdesborde la memoria intermedia usando R_{vol,codificador}(t); obsérvese que R_{vol}(t) se define como R_{vol,codificador}(t) en el punto 2 anterior.
Definición del modelo de complejidad vídeo
El verificador de complejidad vídeo (VCV) es un algoritmo para verificar un tren de bits para verificar que la cantidad de capacidad de procesado requerida en un decodificador es inferior a la medida de complejidad indicada en función de costo equivalente de I-MB/s. Si un tren de bits visuales se compone de múltiples VOs cada con uno o varios VOLs, el modelo de complejidad vídeo se aplica conjuntamente para todos VOLs (usando un vcv_memoria intermedia_tamaño acumulado para todos los VOLs).
El VCV se aplica a vídeo natural codificado como una combinación de VOPs I, P y B. El tren de bits vídeo codificado tendrá que cumplir los requisitos del VCV definidos como sigue:
1. Un vcv_memoria_intermedia_tamaño se define como el número de I-MBs equivalentes que se pueden contener en la memoria intermedia VCV. Estos I-MBs equivalentes son consumidos por el decodificador a la tasa de decodificación I-MB equivalente de función de costo vcv_decodificador_tasa. Un vcv_decodificar_latencia se define como el tiempo de procesado necesario para que el decodificador decodifique una memoria intermedia VCV completa (vcv_memoria_intermedia_tamaño MBs) con la tasa de decodificación MB (I-MB/s equivalente). Así, la relación vcv_memoria_intermedia_tamaño=vcv_decodificador_latencia * vcv_decodificador_tasa es verdadera. La memoria intermedia VCV está inicialmente vacía al comienzo de la decodificación.
2. Cuando el parámetro vcv_decodificador_latencia sea especificado por vcv_control_parámetros, el tren de bits será limitado según los valores especificados. Cuando no se especifique el parámetro vcv_decodificador_latencia, el tren de bits estará limitado según los valores por defecto de vcv_decodificador_latencia.
3. El costo de complejidad de un vop, M_{i}, en unidades de I-MB equivalente se calcula en base a la fórmula siguiente:
M_{i} es la nueva cantidad de macrobloques en el sello de tiempo t_{i}. M_{i} puede incluir macrobloques I, P y B. El "costo de decodificación" para estos macrobloques se basa en el tipo de macrobloque y viene dado por los pesos w_{i}, w_{\rho}, W_{B}, W_{s1} y W_{s\rho}.
M_{i} = w_{I} M_{Ii} + w_{P} M_{Pi} + w_{B} M_{Bi} + w_{SI} M_{SIi} + w_{SP} M_{SPi}
donde I, P y B se refieren respectivamente a macrobloques I, P y B mientras que SI y SP se refieren respectivamente a macrobloques I y P incluyendo límite de objeto (forma).
4. En el tiempo t_{i} - vcv_decodificador_latencia el costo de complejidad del VOP se añade a la memoria intermedia VCV, donde t_{i} es el tiempo de decodificación calculado en la sección 0.
5. El modelo de complejidad requiere que la memoria intermedia VCV nunca rebose, es decir, el proceso de decodificación debe completarse dentro del tiempo de latencia del decodificador. En ese caso se cumple el único requisito estricto del modelo: el tiempo de fin de decodificación debe ser antes del tiempo de decodificación calculado en la sección 0. Esta condición siempre se cumple si no se produce desbordamiento de la memoria intermedia VCV.
6. El modelo de complejidad permite que la memoria intermedia VCV subdesborde, en cuyo caso el decodificador simplemente permanece inactivo, mientras la memoria intermedia VCV está vacía.
Definición del modelo de memoria de referencia vídeo
El verificador de memoria vídeo (VMV) es un algoritmo para verificar un tren de bits para verificar que la cantidad de memoria de referencia requerida en un decodificador es inferior a la memoria de referencia máxima total indicada en unidades de MB. Si un tren de bits visuales se compone de múltiples VOs cada con uno o varios VOLs, el modelo de memoria de referencia vídeo se aplica conjuntamente para todo VOL (puesto que este modelo asume un espacio de memoria compartido).
El VMV se aplica a vídeo natural codificado como una combinación de VOPs I, P y B. El tren de bits vídeo codificado tendrá que cumplir los requisitos del VMV definidos como sigue:
1. La memoria de referencia está inicialmente vacía. Se llena de los datos decodificados cuando cada macrobloque es decodificado.
2. La cantidad de memoria de referencia requerida para la decodificación del i-ésimo vop se define como el número de macrobloques en el vop, n_{i}, y se consume a una tasa constante durante la duración de la decodificación del vop, T_{i}. La duración de decodificación del i-ésimo vop, T_{i}, se produce entre s_{i} y e_{i}, donde s_{i} y e_{i} son el tiempo de decodificación de inicio y el tiempo de fin de decodificación del i-ésimo vop y se obtienen de la intersección de la pendiente de procesado del decodificador y el eje de tiempo de decodificación del modelo VCV en la figura 21.
3. En el tiempo de composición (o tiempo de presentación en un decodificador no-compositor), \tau_{i}, de un VOP I o P, la memoria total asignada al VOP I o P anterior en el orden de decodificación se libera al instante.
4. En el tiempo de composición (o tiempo de presentación en un decodificador no-compositor), \tau_{i}, de un VOP B, la memoria total asignada a dicho VOP B se libera al instante.
5. El modelo de memoria de referencia requiere que la memoria intermedia VMV nunca rebose.
La ocupación de memoria intermedia del verificador de memoria vídeo se representa en la figura 21. En la figura 21, la flecha A1 apunta a un lugar donde la memoria de referencia se consume durante el período de decodificación, y la flecha A2 apunta a un lugar donde la memoria de referencia se libera en un tiempo de composición o tiempo de presentación en un decodificador no-compositor.
Interacción entre VBV, VCV y VMV
El modelo de memoria intermedia de tasa define cuándo el tren de bits está disponible para la decodificación y se quita de la memoria intermedia. El modelo de complejidad define la velocidad a la que se decodifican los macrobloques. El modelo de memoria de referencia define la cantidad de memoria de referencia que se consume y libera. Obviamente, es ventajoso que el decodificador vídeo decodifique con toda la anterioridad que sea posible. Sin embargo, ésta es una condición del VBV y el VMV. El decodificador solamente puede empezar a decodificar si los bits están disponibles para decodificación. Al mismo tiempo que el decodificador decodifica el tren de bits, genera macrobloques que consumen la memoria de referencia. Así, si decodifica demasiado rápidamente, rebosará la memoria de referencia.
Por otra parte, si el decodificador empieza a decodificar demasiado tarde, no será capaz de completar la decodificación en el tiempo y el tren de bits se sacará de VBV antes de que pueda procesarse. Igualmente, la memoria de referencia requerida para la predicción del VOP corriente también puede ser quitada del VMV.
Por lo tanto, el codificador tendrá que regular los parámetros vbv_memoria_intermedia_tamaño, vbv_ocupación y vcv_decodificador_latencia de tal manera que el tren de bits resultante no viole ninguno de los modelos VBV, VCV y VMV. Además de regular estos parámetros, el codificador también puede ajustar adaptativamente sus parámetros de codificación de tal manera que el tren de bits resultante no viole los modelos.
Definición del modelo de presentación vídeo
El verificador de presentación vídeo (VPV) es un algoritmo para verificar un tren de bits para verificar que la cantidad de memoria intermedia de presentación requerida en un decodificador es inferior a una cantidad dada de memoria en unidades de MB. También se utiliza para limitar la tasa del compositor en términos de número máximo de MB/s.
El VPV opera de la misma manera que el VCV:
1. En el tiempo de composición del i-ésimo VOP, \tau_{i}, el VOP se coloca en la memoria intermedia de presentación.
2. Los datos en la memoria intermedia de presentación son consumidos por el compositor a una tasa equivalente al número máximo de MB/s.
3. En \tau_{i} + compositor_latencia el VOP deberá ser compuesto.
4. El modelo de memoria de presentación requiere que la memoria intermedia VPV nunca rebose.
Con la tercera realización de la presente invención, el codificador es capaz de controlar y regular la complejidad de los trenes de bits codificados que genera. Al mismo tiempo, el decodificador se asegura de que no se creen trenes demasiado complejos. El efecto de esta invención es que el diseño de los decodificadores ya no se tiene que basar en el peor escenario, sino en la medida de complejidad común que especifica el estándar. Por lo tanto, el costo de estos productos se puede reducir, puesto que no se necesita ingeniería excesiva.

Claims (10)

1. Un método para regular los requisitos de cálculo y de memoria de un tren de bits vídeo comprimido incluyendo:
dividir una imagen en una pluralidad de macrobloques;
codificar los macrobloques con diferentes tipos de codificación a un tren de bits;
supervisar la complejidad del tren de bits;
calcular una función de costo de complejidad del tren de bits en base al tipo de codificación de los macrobloques;
aplicar la función de costo de complejidad a un decodificador virtual;
regular un sello de tiempo de decodificación de la imagen en dependencia de la ocupación de la memoria, que se consume durante la decodificación de los macrobloques, y dicha función de costo de complejidad
derivar un conjunto de factores de ponderación; y
aplicar los factores de ponderación para regular una decisión futura sobre el tipo de codificación.
2. El método según se reivindica en la reivindicación 1, donde el decodificador virtual, para evitar desbordamiento en recursos de complejidad o de memoria, opera según las reglas siguientes:
a) una cantidad de memoria para decodificación que guarda un plano de objeto vídeo corriente se define por varios macrobloques en un plano de objeto vídeo y se consume a una tasa constante entre tiempos de sello de tiempo de decodificación del plano de objeto vídeo corriente y un plano de objeto vídeo siguiente;
b) en un tiempo de presentación de un plano de objeto vídeo intra o previsto una memoria total asignada a un plano de objeto vídeo intra o previsto previo en orden de decodificación se libera al instante;
c) en un tiempo de presentación de un plano de objeto vídeo bidireccional, la memoria total asignada al plano de objeto vídeo bidireccional se libera al instante;
d) en cualquier momento, el sello de tiempo de decodificación del (n+1)-ésimo plano de objeto vídeo en orden de decodificación, el sello de tiempo de decodificación_{n+1}, debe ser inferior o igual al sello de tiempo de presentación del n-ésimo plano de objeto vídeo en orden de decodificación, el sello de tiempo de presentación_{n};
e) en cualquier momento, la suma de la memoria consumida no debe exceder de los recursos de memoria máximos disponibles; y
f) en cualquier momento, una relación de una complejidad de decodificación del plano de objeto vídeo corriente a un tiempo de decodificación disponible, el sello de tiempo de decodificación_{n+1} - sello de tiempo de decodificación_{n}, debe ser inferior a recursos de complejidad máxima disponibles por segundo.
3. El método según se reivindica en la reivindicación 1, donde el tipo de codificación de macrobloque incluye codificación intra, codificación predictiva, codificación bidireccional, codificación predictiva con compensación de movimiento de bloque de solapamiento, codificación intra con decodificación de forma límite, y codificación predictiva con decodificación de forma límite, y
donde la función de costo es una suma ponderada normalizada de un costo de decodificar cada tipo de codificación presente en el tren de bits.
4. El método según se reivindica en la reivindicación 1, donde el sello de tiempo de decodificador de varias imágenes se optimiza según las reglas siguientes:
a) en cualquier momento, el sello de tiempo de decodificación de la (n+1)-ésima imagen en orden de decodificación, el sello de tiempo de decodificación_{n+1}, debe ser inferior o igual al sello de tiempo de presentación de la n-ésima imagen en orden de decodificación, el sello de tiempo de presentación_{n};
b) en cualquier momento, la suma de la memoria consumida no debe exceder de los recursos de memoria máximos disponibles; y
c) en cualquier momento, una relación de una complejidad de decodificación de la imagen corriente a un tiempo de decodificación disponible, el sello de tiempo de decodificación_{n+1} - sello de tiempo de decodificación_{n}, debe ser inferior a los recursos de complejidad máxima disponibles por segundo,
de tal forma que las imágenes se decodifiquen en el tiempo más corto, con sujeción a una disponibilidad de recursos de cálculo y de memoria en el decodificador virtual.
5. El método según se reivindica en la reivindicación 1, donde el tren de bits incluye al menos uno de bits vídeo y otros bits de datos.
6. Un aparato para regular los requisitos de cálculo y de memoria de un tren de bits vídeo comprimido incluyendo:
medios para dividir una imagen en una pluralidad de macrobloques;
medios (301) para codificar los macrobloques donde diferentes tipos de codificación a un tren de bits;
medios para verificar la complejidad del tren de bits;
medios (302) para calcular una función de costo de complejidad del tren de bits en base al tipo de codificación de los macrobloques;
medios para aplicar la función de costo de complejidad a un decodificador virtual (303);
unos medios (402) para regular un sello de tiempo de decodificación de la imagen en dependencia de la ocupación de la memoria, que se consume durante la decodificación de los macrobloques, y de dicha función de costo de complejidad;
medios (404) para derivar un conjunto de factores de ponderación; y
medios para aplicar los factores de ponderación regularmente a la decisión futura sobre el tiempo de codificación.
7. El aparato según se reivindica en la reivindicación 6, donde el decodificador virtual, para evitar desbordamiento en recursos de complejidad o de memoria, opera según las reglas siguientes:
a) una cantidad de memoria para decodificación que guarda un plano de objeto vídeo corriente se define por varios macrobloques en un plano de objeto vídeo y se consume a una tasa constante entre tiempos de sello de tiempo de decodificación del plano de objeto vídeo corriente y un plano de objeto vídeo siguiente;
b) en un tiempo de presentación de un plano de objeto vídeo intra o previsto una memoria total asignada a un plano de objeto vídeo intra o previsto previo en orden de decodificación se libera al instante;
c) en un tiempo de presentación de un plano de objeto vídeo bidireccional, la memoria total asignada al plano de objeto vídeo bidireccional se libera al instante;
d) en cualquier momento, el sello de tiempo de decodificación del (n+1)-ésimo plano de objeto vídeo en orden de decodificación, el sello de tiempo de decodificación_{n+1}, debe ser inferior o igual al sello de tiempo de presentación del n-ésimo plano de objeto vídeo en orden de decodificación, el sello de tiempo de presentación_{n};
e) en cualquier momento, la suma de la memoria consumida no debe exceder de los recursos de memoria máximos disponibles; y
f) en cualquier momento, una relación de una complejidad de decodificación del plano de objeto vídeo corriente a un tiempo de decodificación disponible, el sello de tiempo de decodificación_{n+1} - sello de tiempo de decodificación_{n}, debe ser inferior a recursos de complejidad máxima disponibles por segundo.
8. El aparato según se reivindica en la reivindicación 6, donde el tipo de codificación de macrobloque incluye codificación intra, codificación predictiva, codificación bidireccional, codificación predictiva con compensación de movimiento de bloque de solapamiento, codificación intra con decodificación de forma límite, y codificación predictiva con decodificación de forma límite, y
donde la función de costo es una suma ponderada normalizada de un costo de decodificar cada tipo de codificación presente en el tren de bits.
9. El aparato según se reivindica en la reivindicación 6, donde, para optimizar el sello de tiempo de decodificación de varias imágenes, el aparato opera según las reglas siguientes:
a) en cualquier momento, el sello de tiempo de decodificación de la (n+1)-ésima imagen en orden de decodificación, el sello de tiempo de decodificación_{n+1}, debe ser inferior o igual al sello de tiempo de presentación de la n-ésima imagen en orden de decodificación, el sello de tiempo de presentación_{n};
b) en cualquier momento, la suma de la memoria consumida no debe exceder de los recursos de memoria máximos disponibles; y
c) en cualquier momento, una relación de una complejidad de decodificación de la imagen corriente a un tiempo de decodificación disponible, el sello de tiempo de decodificación_{n+1} - sello de tiempo de decodificación_{n}, debe ser inferior a los recursos de complejidad máxima disponibles por segundo, de tal forma que las imágenes se decodifiquen en el tiempo más corto, con sujeción a una disponibilidad de recursos de cálculo y de memoria en el decodificador virtual.
10. El aparato según se reivindica en la reivindicación 6, donde el tren de bits incluye al menos uno de bits vídeo y otros bits de datos.
ES99308021T 1998-10-13 1999-10-12 Regulacion de los requisitos de calculo y de memoria de un tren de bits comprimido en un decodificador de video. Expired - Lifetime ES2259827T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP32876798A JP2000125292A (ja) 1998-10-13 1998-10-13 ビデオデコーダの圧縮されたビットストリームの計算及び記録に必要な条件を制御する方法及び装置
JP10-328767 1998-10-13
JP4140699A JP2000244909A (ja) 1999-02-19 1999-02-19 圧縮ビデオのビットストリームの検定方法および装置
JP11-41406 1999-02-19

Publications (1)

Publication Number Publication Date
ES2259827T3 true ES2259827T3 (es) 2006-10-16

Family

ID=26381014

Family Applications (1)

Application Number Title Priority Date Filing Date
ES99308021T Expired - Lifetime ES2259827T3 (es) 1998-10-13 1999-10-12 Regulacion de los requisitos de calculo y de memoria de un tren de bits comprimido en un decodificador de video.

Country Status (6)

Country Link
US (1) US6542549B1 (es)
EP (1) EP0994627B1 (es)
KR (1) KR100357233B1 (es)
CN (1) CN1198464C (es)
DE (1) DE69930216T2 (es)
ES (1) ES2259827T3 (es)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002016917A (ja) * 2000-06-30 2002-01-18 Toshiba Corp 動画像の時間情報復号方法
US7133449B2 (en) * 2000-09-18 2006-11-07 Broadcom Corporation Apparatus and method for conserving memory in a fine granularity scalability coding system
KR100394014B1 (ko) * 2001-06-23 2003-08-09 엘지전자 주식회사 영상 변환 부호화 장치
EP1262866A1 (en) * 2001-06-01 2002-12-04 STMicroelectronics Limited A method and circuitry for determining the validity of information
US7116712B2 (en) * 2001-11-02 2006-10-03 Koninklijke Philips Electronics, N.V. Apparatus and method for parallel multimedia processing
WO2003045068A2 (en) * 2001-11-21 2003-05-30 Canon Kabushiki Kaisha Method and device for determining at least one multimedia data encoding parameter
US9497452B2 (en) * 2002-01-22 2016-11-15 Broadcom Corporation System and method of transmission and reception of video using compressed differential time stamps
US7180943B1 (en) * 2002-03-26 2007-02-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Compression of a data stream by selection among a set of compression tools
KR20040007818A (ko) * 2002-07-11 2004-01-28 삼성전자주식회사 동영상 부호화를 위한 dct연산량 조절 방법 및 그 장치
US9948977B2 (en) * 2003-01-09 2018-04-17 Avago Technologies General Ip (Singapore) Pte. Ltd. System, method, and apparatus for determining presentation time for picture without presentation time stamp
US20070002976A1 (en) * 2002-12-20 2007-01-04 Koninkijke Phillips Electronics N.V. Method of recording a stream of audio-visual data
US7466774B2 (en) * 2003-01-07 2008-12-16 Thomson Licensing Mixed inter/intra video coding of macroblock partitions
US7266147B2 (en) * 2003-03-31 2007-09-04 Sharp Laboratories Of America, Inc. Hypothetical reference decoder
JP3787633B2 (ja) * 2003-04-21 2006-06-21 独立行政法人情報通信研究機構 実時間コンテンツ編集システム
US7373004B2 (en) * 2003-05-23 2008-05-13 Silicon Integrated Systems Corp. Apparatus for constant quality rate control in video compression and target bit allocator thereof
US7535959B2 (en) * 2003-10-16 2009-05-19 Nvidia Corporation Apparatus, system, and method for video encoder rate control
US20070291131A1 (en) * 2004-02-09 2007-12-20 Mitsuru Suzuki Apparatus and Method for Controlling Image Coding Mode
KR100988402B1 (ko) * 2004-06-27 2010-10-18 애플 인크. 멀티-패스 비디오 인코딩 방법
JP4438059B2 (ja) * 2004-08-24 2010-03-24 キヤノン株式会社 画像再生装置及びその制御方法
US7447978B2 (en) * 2004-11-16 2008-11-04 Nokia Corporation Buffering packets of a media stream
JP4902358B2 (ja) * 2004-12-02 2012-03-21 ソニー株式会社 符号化装置および方法、並びにプログラム
KR100610900B1 (ko) * 2004-12-09 2006-08-09 엘지전자 주식회사 비디오 인코더의 동적인 제어 방법
US8358693B2 (en) 2006-07-14 2013-01-22 Microsoft Corporation Encoding visual data with computation scheduling and allocation
US8311102B2 (en) * 2006-07-26 2012-11-13 Microsoft Corporation Bitstream switching in multiple bit-rate video streaming environments
US20080025408A1 (en) * 2006-07-31 2008-01-31 Sam Liu Video encoding
US8340193B2 (en) * 2006-08-04 2012-12-25 Microsoft Corporation Wyner-Ziv and wavelet video coding
US8699561B2 (en) * 2006-08-25 2014-04-15 Sony Computer Entertainment Inc. System and methods for detecting and handling errors in a multi-threaded video data decoder
US8238442B2 (en) 2006-08-25 2012-08-07 Sony Computer Entertainment Inc. Methods and apparatus for concealing corrupted blocks of video data
US7456760B2 (en) * 2006-09-11 2008-11-25 Apple Inc. Complexity-aware encoding
US7388521B2 (en) * 2006-10-02 2008-06-17 Microsoft Corporation Request bits estimation for a Wyner-Ziv codec
US9325682B2 (en) * 2007-04-16 2016-04-26 Tailstream Technologies, Llc System for interactive matrix manipulation control of streamed data and media
US8340192B2 (en) * 2007-05-25 2012-12-25 Microsoft Corporation Wyner-Ziv coding with multiple side information
US8432970B1 (en) * 2007-12-14 2013-04-30 Marvell International Ltd. Block type selection
CN101500160B (zh) * 2008-01-28 2015-04-29 华为技术有限公司 一种码流标识方法、装置及编解码***
US20090304086A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Method and system for video coder and decoder joint optimization
CN102349296B (zh) * 2009-03-13 2016-03-09 瑞典爱立信有限公司 用于处理编码比特流的方法和装置
US8897370B1 (en) * 2009-11-30 2014-11-25 Google Inc. Bitrate video transcoding based on video coding complexity estimation
US8976856B2 (en) 2010-09-30 2015-03-10 Apple Inc. Optimized deblocking filters
US8793393B2 (en) * 2011-11-23 2014-07-29 Bluespace Corporation Video processing device, video server, client device, and video client-server system with low latency thereof
KR20130058584A (ko) * 2011-11-25 2013-06-04 삼성전자주식회사 복호화기의 버퍼 관리를 위한 영상 부호화 방법 및 장치, 그 영상 복호화 방법 및 장치
CN104012090B (zh) * 2011-12-23 2018-01-26 英特尔公司 内容自适应的高精度宏块速率控制
GB2501145A (en) * 2012-04-12 2013-10-16 Supercell Oy Rendering and modifying objects on a graphical user interface
GB2518909B (en) * 2013-12-16 2015-10-28 Imagination Tech Ltd Encoder adaptation
KR101732995B1 (ko) * 2015-02-10 2017-05-25 엔에이치엔엔터테인먼트 주식회사 스트리밍 레이턴시 최소화 시스템 및 이를 사용하는 방법
US10819951B2 (en) 2016-11-30 2020-10-27 Microsoft Technology Licensing, Llc Recording video from a bitstream
US11758147B2 (en) 2019-02-01 2023-09-12 Zhejiang University Methods and apparatus of bitstream verifying and decoding

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5038209A (en) * 1990-09-27 1991-08-06 At&T Bell Laboratories Adaptive buffer/quantizer control for transform video coders
JPH04185172A (ja) * 1990-11-20 1992-07-02 Matsushita Electric Ind Co Ltd ディジタル画像信号の高能率符号化装置
EP0524317A4 (en) * 1991-02-08 1995-02-15 Tokyo Shibaura Electric Co Model forecasting controller
GB9424437D0 (en) * 1994-12-02 1995-01-18 Philips Electronics Uk Ltd Encoder system level buffer management
US5677969A (en) * 1995-02-23 1997-10-14 Motorola, Inc. Method, rate controller, and system for preventing overflow and underflow of a decoder buffer in a video compression system
US5742623A (en) * 1995-08-04 1998-04-21 General Instrument Corporation Of Delaware Error detection and recovery for high rate isochronous data in MPEG-2 data streams
GB9519923D0 (en) * 1995-09-29 1995-11-29 Philips Electronics Nv Motion estimation for predictive image coding
BR9611393A (pt) 1995-11-08 1999-07-13 Novo Nordisk As Produtos à base de lignocelulose e processo para a manufatura do mesmo
US5686963A (en) * 1995-12-26 1997-11-11 C-Cube Microsystems Method for performing rate control in a video encoder which provides a bit budget for each frame while employing virtual buffers and virtual buffer verifiers
US5719632A (en) * 1996-01-25 1998-02-17 Ibm Corporation Motion video compression system with buffer empty/fill look-ahead bit allocation
US6125146A (en) 1996-06-05 2000-09-26 U.S. Philips Corporation Method and device for decoding coded digital video signals
FR2753330B1 (fr) * 1996-09-06 1998-11-27 Thomson Multimedia Sa Procede de quantification pour codage video

Also Published As

Publication number Publication date
CN1251004A (zh) 2000-04-19
EP0994627A2 (en) 2000-04-19
DE69930216D1 (de) 2006-05-04
US6542549B1 (en) 2003-04-01
EP0994627B1 (en) 2006-03-08
KR20000034997A (ko) 2000-06-26
CN1198464C (zh) 2005-04-20
DE69930216T2 (de) 2006-12-07
KR100357233B1 (ko) 2002-10-18
EP0994627A3 (en) 2000-07-26

Similar Documents

Publication Publication Date Title
ES2259827T3 (es) Regulacion de los requisitos de calculo y de memoria de un tren de bits comprimido en un decodificador de video.
ES2285264T3 (es) Almacenamiento temporal de imagenes para referencias y presentacion de prediccion.
US8520730B2 (en) Picture coding method and picture coding apparatus
JP4203707B2 (ja) 事前解析を用いた動画像符号化装置、動画像符号化方法、及びそのプログラム。
CN101325698B (zh) 仅帧内视频序列编码的比特率控制方法与装置
US20140153653A1 (en) Hypothetical reference decoder
ITTO20090486A1 (it) Controllore dinamico della velocita&#39; di trasmissione indipendente dal gruppo di immagini
JPH05336511A (ja) 動画像符号化装置
US7302000B2 (en) Method and system for two-pass video encoding using sliding windows
EP1088454A1 (en) Video encoder and encoding method with buffer control
ES2265504T3 (es) Procedimiento para la compresion y la descompresion de datos de video.
US7215706B2 (en) Video signal encoding and buffer management
JP4669190B2 (ja) ビデオ・データの品質を制御するための方法および装置
KR20180119102A (ko) 비디오 인코더의 출력 비트레이트를 제어하는 방법 및 레이트 제어기
US20050078756A1 (en) Encoding apparatus and encoding method
CN111327898B (zh) 一种视频编码的方法、装置、电子设备及存储介质
US20120269259A1 (en) System and Method for Encoding VBR MPEG Transport Streams in a Bounded Constant Bit Rate IP Network
US8780977B2 (en) Transcoder
EP1146745B1 (en) Coding device and coding method
JPH114445A (ja) 画像符号化装置および方法
JP2008136177A (ja) 動き検出装置、MOS(metal−oxidesemiconductor)集積回路および映像システム
KR101732995B1 (ko) 스트리밍 레이턴시 최소화 시스템 및 이를 사용하는 방법
JP2000244909A (ja) 圧縮ビデオのビットストリームの検定方法および装置
JP2000125292A (ja) ビデオデコーダの圧縮されたビットストリームの計算及び記録に必要な条件を制御する方法及び装置
KR0166719B1 (ko) 디지탈카메라의 영상부호화방법 및 장치