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
Links
- 238000004364 calculation method Methods 0.000 title claims description 17
- 230000006870 function Effects 0.000 claims description 31
- 238000000034 method Methods 0.000 claims description 20
- 230000002457 bidirectional effect Effects 0.000 claims description 10
- 230000033001 locomotion Effects 0.000 claims description 7
- 230000001105 regulatory effect Effects 0.000 claims description 2
- 238000012795 verification Methods 0.000 abstract description 8
- 230000006399 behavior Effects 0.000 abstract description 4
- 239000000872 buffer Substances 0.000 description 82
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000011002 quantification Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 239000002699 waste material Substances 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/176—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 block, e.g. a macroblock
-
- 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/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management 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/266—Channel 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/2662—Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content 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.
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.
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.
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.
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.
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
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
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).
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.
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.
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:
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:
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.
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.
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.
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.
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.
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.
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.
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)
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)
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 |
-
1999
- 1999-10-12 ES ES99308021T patent/ES2259827T3/es not_active Expired - Lifetime
- 1999-10-12 DE DE69930216T patent/DE69930216T2/de not_active Expired - Lifetime
- 1999-10-12 EP EP99308021A patent/EP0994627B1/en not_active Expired - Lifetime
- 1999-10-12 US US09/417,465 patent/US6542549B1/en not_active Expired - Fee Related
- 1999-10-13 CN CNB991216733A patent/CN1198464C/zh not_active Expired - Fee Related
- 1999-10-13 KR KR1019990044307A patent/KR100357233B1/ko not_active IP Right Cessation
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' 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) | 디지탈카메라의 영상부호화방법 및 장치 |