Sistema y método para codificación y decodificación aritmética.

Un sistema para la codificación y decodificación aritmética que comprende

• un codificador de entropía

(1100) para convertir al menos una secuencia de eventos, en que cada secuencia de eventos incluye una pluralidad de eventos, a al menos una secuencia de información, en que cada secuencia de información incluye al menos una parte de información, en que la al menos una secuencia de eventos representa datos de entrada particionados en una serie de segmentos, que comprende:

• un codificador aritmético (1115) configurado para generar cero o más partes de información de al menos una secuencia de información codificando al menos un evento de al menos una secuencia de eventos; y

• un controlador (1120) acoplado con el codificador aritmético (1115) configurado para mantener una limitación del número de eventos de la secuencia de eventos con respecto al número de partes de información generadas incluyendo el número de eventos en la al menos una secuencia de eventos para ser igual o inferior que un número determinado por una función de una combinación lineal que incluye el número de partes de información generadas en la al menos una secuencia de información y el número de segmentos y

• un descodificador configurado para descodificar la al menos una secuencia de información.

Tipo: Patente Europea. Resumen de patente/invención. Número de Solicitud: E10195913.

Solicitante: NTT DOCOMO, INC..

Nacionalidad solicitante: Japón.

Dirección: 11-1, NAGATACHO 2-CHOME CHIYODA-KU, TOKYO 100-6150 JAPON.

Inventor/es: BOSSEN,FRANK JAN.

Fecha de Publicación: .

Clasificación Internacional de Patentes:

  • SECCION H — ELECTRICIDAD > CIRCUITOS ELECTRONICOS BASICOS > CODIFICACION, DECODIFICACION O CONVERSION DE CODIGO,... > Conversión de un código, en el cual la información... > H03M7/40 (Conversión en, o a partir de códigos la longitud variable, p. ej. código Shanno-Fano, código Huffman, código Morse)
  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > RECONOCIMIENTO DE DATOS; PRESENTACION DE DATOS; SOPORTES... > Métodos o disposiciones para la lectura o el reconocimiento... > G06K9/46 (Extracción de elementos o de características de la imagen)
google+ twitter facebookPin it
Ilustración 1 de Sistema y método para codificación y decodificación aritmética.
Ilustración 2 de Sistema y método para codificación y decodificación aritmética.
Ilustración 3 de Sistema y método para codificación y decodificación aritmética.
Ilustración 4 de Sistema y método para codificación y decodificación aritmética.
Ver la galería de la patente con 7 ilustraciones.
Sistema y método para codificación y decodificación aritmética.

Texto extraído del PDF original:

DESCRIPCIÓN

Sistema y método para codificación y decodificación aritmética.

SOLICITUDES RELACIONADAS Esta solicitud de patente reivindica prioridad de la solicitud de patente provisional de Estados Unidos titulada "Limitar la Complejidad de un Codificador Aritmético", de Frank Bossen, presentada el 23 de abril de 2002 y asignada como S / N 60 / 374.770.

ANTECEDENTES DE LA INVENCIÓN Esta solicitud se refiere al tratamiento de datos, y más particularmente, a la codificación y decodificación de secuencias de datos en forma de una limitación de complejidad reducida.

Es habitual comprimir una secuencia de datos (es decir, información binaria o M-aria) para su envío desde una primera ubicación a una segunda ubicación. Por ejemplo, unos datos de vídeo se pueden generar en la primera ubicación, donde los datos representan una llamada de videoconferencia. Los datos se convierten habitualmente a una secuencia de eventos (es decir, eventos binarios). Para transmitir la secuencia de eventos a la segunda ubicación, es deseable comprimir, o codificar, la secuencia de eventos a una secuencia de información, con el fin de reducir el tiempo necesario para la transmisión de la secuencia de eventos a la segunda ubicación. Habitualmente se utiliza un codificador aritmético para comprimir la secuencia de eventos (es decir, los eventos binarios) a una secuencia de información de partes de información (es decir, bits binarios de información) para enviarla a la segunda ubicación. Cuanto mayor sea la compresión, o la eficiencia de la codificación, de la secuencia de información, mayor es la velocidad de transmisión de la secuencia de información a la segunda ubicación. La compresión se consigue mediante la generación de menos de una parte de información por evento que se codifica, en que las proporciones de eventos por partes de información que se codifica pueden llegar a 64:1 o incluso 128:1, dependiendo de la distribución de probabilidad de los eventos. Se utiliza un decodificador aritmético en la segunda ubicación para descomprimir la secuencia de información a la secuencia de eventos, permitiendo de esta manera que los datos de vídeo que representan la llamada de conferencia de vídeo se presenten a un individuo en la segunda ubicación. La compresión de datos se utiliza también para otras finalidades. Otra de dichas utilizaciones puede ser para aumentar la calidad de vídeo dada una cantidad de medios de almacenamiento para almacenar la secuencia de eventos. En este ejemplo se pueden utilizar codificadores para almacenar vídeo (es decir, que representa una película) en una Memoria de Disco Compacto de Sólo Lectura (CD-ROM) o Memoria de Video Disco Digital de Sólo Lectura (DVD-ROM), o cualquier otro medio de almacenamiento incluyendo ópticos, magnéticos o de otro tipo, para su reproducción en un momento posterior. Tal como se ha descrito anteriormente, la relación de eventos por partes de información codificada puede llegar a 64:1 o 128:1, dependiendo de la distribución de probabilidad de los eventos. En el momento posterior, se utiliza un decodificador para descomprimir la secuencia de información a la secuencia de eventos, permitiendo de ese modo que se utilice el video correspondiente u otros datos. Sin embargo, a medida que la codificación aumenta la eficiencia en el codificador, se requiere una mayor cantidad de proceso (es decir, operaciones de descodificación) en el decodificador para decodificar la secuencia de partes de información de una longitud determinada a la secuencia de eventos. Dicho aumento de las necesidades de proceso puede ser perjudicial, especialmente cuando se desea que se proporcione la secuencia de eventos en modo de tiempo real. Por ejemplo, en el caso de una secuencia de eventos que representa video, en tiempo real indica que para la secuencia de información que representa un período de tiempo (es decir, 1 segundo) de video, el decodificador es capaz de recibir la secuencia de información, y de decodificar la secuencia de información a la secuencia de eventos correspondiente dentro del período de tiempo. A veces, dicho proceso en tiempo real no es posible con los esquemas de eficiencia aumentada utilizados en los codificadores convencionales. Esta invención está dirigida a resolver uno o más de los problemas expuestos anteriormente en una forma nueva y simple. La patente US 6198848 describe un aparato de proceso de imágenes que implementa un sistema de control de frecuencia de manera que la cantidad de bits de datos por unidades de bloques individuales sean los mismos. Los datos de imagen transformada DCT se cuantifican y se codifican y tienen una longitud variable. El proceso iterativo se implementa para ajustar la cuantificación si se excede un cierto presupuesto. También se menciona el rellenado con ceros para garantizar una cantidad fija de datos por bloque.

WO9827734 describe un aparato de compresión y descompresión de bloques de longitud fija en que se adapta la frecuencia de bits por palabra comprimida sobre la base de los bits restantes en el bloque de salida. BREVE RESUMEN DE LA INVENCIÓN La invención se define mediante las reivindicaciones adjuntas. BREVE DESCRIPCIÓN DE VARIAS VISTAS DE LOS DIBUJOS La Figura 1 es un diagrama de bloques de un codificador de acuerdo con un ejemplo para la comprensión de la invención; La Figura 2 es un diagrama de flujo que ilustra la inicialización del codificador de la Figura 1 de acuerdo con un ejemplo para la comprensión de la invención; La Figura 3 es un diagrama de flujo que ilustra el funcionamiento del núcleo del motor del codificador de la Figura 1 de acuerdo con un ejemplo para la comprensión de la invención; La Figura 4 es un diagrama de flujo que ilustra el procedimiento de re-normalización para el codificador de la Figura 1 de acuerdo con un ejemplo para la comprensión de la invención; La Figura 5 es un diagrama de flujo que ilustra el funcionamiento del núcleo del motor del codificador de la Figura 1 al recibir una señal de finalización de acuerdo con un ejemplo para la comprensión de la invención; La Figura 6 es un diagrama de flujo que ilustra una rutina de Bit y Seguir llevada a cabo por el núcleo del motor de la Figura 1 de acuerdo con un ejemplo para la comprensión de la invención; La Figura 7 es un diagrama de bloques que ilustra un decodificador de acuerdo con un ejemplo para la comprensión de la invención; La Figura 8 es un diagrama de flujo que ilustra la inicialización del decodificador de la Figura 7 de acuerdo con un ejemplo para la comprensión de la invención; La Figura 9 es un diagrama de flujo que ilustra el funcionamiento del núcleo del motor del decodificador de la Figura 7 de acuerdo con un ejemplo para la comprensión de la invención; La Figura 10 es un diagrama de flujo que ilustra la re-normalización del núcleo del motor del decodificador de la Figura 7 de acuerdo con un ejemplo para la comprensión de la invención; y La Figura 11 es un diagrama de bloques de un codificador de acuerdo con otra realización de la invención.

DESCRIPCIÓN DETALLADA DE LA INVENCIÓN De acuerdo con un ejemplo para la comprensión de la invención, se proporciona un codificador aritmético para convertir una secuencia de eventos compuesta por una pluralidad de eventos a una secuencia de información que consta de al menos una parte de información, que incluye al menos un puerto de entrada para recibir eventos de la secuencia de eventos, y al menos un puerto de salida, en que un secuenciador está acoplado con el al menos un puerto de entrada y el al menos un puerto de salida e incluye un generador de contexto para la generación de información de contexto para al menos uno de los eventos recibidos. Se proporciona un estimador de probabilidades, junto con el secuenciador, para recibir un evento de la secuencia de eventos y la correspondiente información de contexto desde el secuenciador, y para generar una estimación de la probabilidad de que el evento tenga un valor particular. Un núcleo del motor está acoplado con el secuenciador y el estimador de probabilidad para recibir el evento de la secuencia de eventos desde el secuenciador, y la estimación de probabilidades desde el estimador de probabilidades, y generar 0 o más partes de la secuencia de información en respuesta al evento recibido y la estimación de probabilidades. El núcleo del motor puede limitar la relación de eventos por partes de información, y proporciona las 0 o más partes de información de la secuencia de información al secuenciador, donde se proporcionan las partes de información generadas como la secuencia de información en el al menos un puerto de salida. De acuerdo con otro ejemplo para la comprensión de la invención, también se proporciona un decodificador aritmético para convertir una secuencia de información que consta de al menos una parte de información a una secuencia de eventos compuesta por una pluralidad de eventos, incluyendo al menos un puerto de entrada para recibir partes de información de la secuencia de información, al menos un puerto de salida, y un secuenciador junto con el al menos un puerto de entrada y el al menos un puerto de salida y que incluye un generador de contexto para generar información de contexto para al menos un evento generado. El estimador de probabilidades se acopla con el secuenciador para recibir un evento generado de la secuencia de eventos y la información de contexto correspondiente, y para determinar una estimación de las probabilidades. Un núcleo del motor está acoplado con el secuenciador y el estimador de probabilidad para el proceso de cero o más partes de información de la secuencia de información desde el secuenciador sensible a la estimación de la probabilidad de generar un evento para explicar una relación limitada de eventos por partes de información. El evento generado se proporciona al estimador de probabilidad con la correspondiente información de contexto desde el secuenciador para actualizar la estimación de probabilidad, y el evento generado se proporciona al secuenciador para su transmisión como la secuencia de eventos desde el al menos un puerto de salida.

Tener el codificador aritmético que codifica la secuencia de eventos a la secuencia de información limitando la relación de eventos por partes de información permite la compresión de una secuencia de datos (es decir, eventos binarios o M- arios) de una manera que permite el uso en tiempo real de la secuencia de eventos. Además, la reducción de la complejidad de la secuencia de la información generada limitando la relación de eventos por partes de información permite a los decodificadores con una capacidad de proceso limitada (por ejemplo, decodificadores móviles) decodificar la secuencia de información de nuevo a su secuencia de evento correspondiente a la vez que manteniendo potencialmente una capacidad de proceso en tiempo real, o al menos sin la necesidad de que un usuario de la información tenga que esperar una cantidad significativa de tiempo, mientras dichos descodificadores realizan las operaciones de descodificación.

Del mismo modo, proporcionar un decodificador que decodifica la secuencia de información a una secuencia de eventos explicando una relación limitada de eventos por parte de información proporciona dicho uso en tiempo real de la secuencia de eventos, por ejemplo, durante una llamada de videoconferencia, o la recuperación y proceso de la información desde los medios de almacenamiento, por ejemplo la recuperación de información de vídeo, como una película de un DVD-ROM y el proceso de los datos de vídeo para su utilización. De acuerdo con otra realización de la invención, se proporciona un codificador de entropía para la conversión de al menos una secuencia de eventos, en que cada secuencia de eventos incluye una pluralidad de eventos, a al menos una secuencia de información, en que cada secuencia de información incluye al menos una parte de información, incluyendo un codificador aritmético para la generación de cero o más partes de información de al menos una secuencia de información en respuesta a al menos un evento de al menos una secuencia de eventos. El codificador de entropía incluye además un controlador acoplado con el codificador aritmético para limitar una serie de eventos en al menos una secuencia de eventos como una función de la cantidad de partes de información generadas en al menos una secuencia de información. La al menos una secuencia de eventos puede representar datos de entrada divididos en un número de segmentos, en que el controlador limita una serie de eventos como una función del número de partes de información al limitar un número máximo de eventos en al menos una secuencia de eventos como una función de una combinación lineal que incluye un número de partes de información generadas en al menos una secuencia de información, y el número de segmentos. El codificador de entropía puede estar acoplado con un procesador para convertir datos de entrada en la al menos una secuencia de eventos, donde el codificador de entropía es capaz de enviar información relativa a una serie de partes de información generadas en al menos una secuencia de información al procesador. Además, el procesador puede ser capaz de reducir una frecuencia de eventos de al menos una secuencia de eventos en respuesta a la información recibida desde el codificador de entropía. Tener un codificador de entropía, capaz de limitar un número de eventos en una secuencia de eventos como una función del número de partes de información generadas en una secuencia de información puede permitir que los datos de vídeo sean decodificados de forma consistente, lo que representa un número máximo de partes de información por grupo de segmentos, a la vez que se mantiene la calidad de codificación de vídeo, en comparación con los codificadores de la técnica anterior. Además, cuando el codificador recibe una indicación de que el umbral de complejidad está a punto de ser excedido, el codificador puede generar menos eventos para el siguiente segmento de datos de entrada, por ejemplo reduciendo la posibilidad de que se supere el umbral de limitación para el siguiente segmento. Asimismo, dado que el controlador es capaz de desencadenar la adición de bits de relleno cuando se supera el umbral de limitación, el procesador puede ser implementado de una manera tal que el procesador no necesita explicar o tratar la restricción de la complejidad. Los codificadores y el decodificador se pueden utilizar en el proceso de datos de vídeo, por ejemplo, como generado por un procesador de vídeo (es decir, el códec de vídeo). En el ejemplo del procesador de vídeo, se graba una imagen de vídeo, y se divide en bloques de muestra de los datos que puedan representar muestras de 16x16, 8x8, o 4x4 de la imagen grabada. A continuación, los bloques son transformados por el procesador de vídeo (es decir, utilizando una transformación discreta del coseno), y cuantificados para producir valores enteros que representan el bloque de muestras. Los valores enteros son convertidos en una secuencia de eventos (es decir, eventos binarios) por el procesador de video, y se envían al codificador para la codificación. Alternativamente, el procesador de vídeo puede operar directamente sobre muestras individuales, transformandolas y cuantificándolas, y convirtiendo el valor entero cuantificado particular para la muestra en una secuencia de eventos. Aunque una utilización de este tipo para el codificador y el decodificador que se describen en el presente documento es en la codificación y decodificación de datos de vídeo, un experto en la técnica apreciará que el codificador y el decodificador que se describen en el presente documento se pueden utilizar en cualquier situación en la que una secuencia de eventos se comprime a una secuencia de información en el caso del codificador, y en que una secuencia de dicha información se descomprime en el caso del decodificador. Además, aunque la siguiente descripción del codificador es en el contexto del proceso de una secuencia de eventos que comprenden una pluralidad de eventos binarios a una secuencia de información que comprende al menos una información de bit binario, y para el decodificador es en el contexto del proceso de una secuencia de información que comprende al menos una información de bit binario a una secuencia de eventos que comprenden una pluralidad de eventos binarios, el hecho de que el codificador y el decodificador podrían operar en secuencias de eventos y secuencias de información que constan de eventos que son M-arios en su naturaleza (es decir, cada evento M-ario representa > 1 bits de datos) utilizando las enseñanzas descritas en este documento, sería apreciado por un experto en la técnica. La Figura 1 ilustra un diagrama de bloques de un codificador aritmético 100 de acuerdo con un ejemplo para la comprensión de la invención. El codificador aritmético 100 incluye un secuenciador 105, un estimador de probabilidades 110, y un núcleo del motor 115, que se acoplan entre sí. Una o más líneas de datos de entrada 120 proporcionan un puerto de entrada para recibir una secuencia de eventos 125, en este caso una secuencia ordenada de eventos binarios, al codificador 100. Los eventos binarios de la secuencia 125 pueden tener un valor "A" o "B". La secuencia de eventos es procesada por el codificador, tal como se describe a continuación, para generar una secuencia de información que es una secuencia ordenada compuesta de al menos una parte de información, en este caso bits binarios, en que el número de partes de información en la secuencia de información es menor que el número de eventos en la secuencia de eventos. Las líneas de datos de salida 130 proporcionan un puerto de salida para el envío de la secuencia de información 135 desde el codificador 100. La secuencia ordenada de bits binarios de la secuencia de información incluye uno o más bits que tienen un valor de "0" o "1".

Al recibir la secuencia ordenada de eventos binarios 125, el secuenciador 105 transmite secuencialmente los eventos 125 tanto al estimador de probabilidades 110 como al núcleo del motor 115 a través de líneas de transmisión de evento 140 y 145, respectivamente. Para cada evento binario de la secuencia de eventos 125, el secuenciador 105 también transmite información de contexto para el estimador de probabilidades 110 al evento binario a través de una línea de transmisión de contexto 150. El estimador de probabilidades 110, utilizando la información de contexto recibida a través de las líneas de transmisión de contexto 150, genera una estimación de la probabilidad P (A) que se transmite al núcleo del motor 115 a través de la línea de transmisión de probabilidad 155. El estimador de probabilidades 110 a continuación, actualiza su estado interno basándose en el valor del evento binario recibido a través de la línea de transmisión de evento binario 140. El núcleo del motor 115 produce 0 o más bits de información utilizando el evento binario recibido a través de la línea de transmisión de eventos 145 y la estimación de probabilidad P (A) correspondiente recibida a través de la línea de transmisión de probabilidad 155, a la vez que delimita una relación de eventos por bits de información, tal como se describirá en más detalle a continuación. El secuenciador 105, tras la recepción de un primer evento binario de la secuencia de eventos 125, envía una señal de inicialización al estimador de probabilidades 110 y el núcleo del motor 115 a través de las líneas de inicialización 185 y 190, respectivamente. En la producción de los cero o más bits de información para la transmisión, a través de la línea de transmisión de bits 158, el núcleo del motor 115 utiliza varios registros, incluyendo un registro de gama 165, un registro bajo 170, un registro de bits pendientes 175, y un registro de contador 180. El funcionamiento del codificador 100 se describe con respecto a los diagramas de flujo de las Figuras 2-6. La Figura 2 ilustra un diagrama de flujo que describe el funcionamiento del núcleo del motor 115 tras la recepción de una señal de inicialización desde el secuenciador 105. Tal como se muestra en el diagrama de flujo de la Figura 2, el núcleo del motor 115 inicializa el intervalo de registro 165, por ejemplo a un valor hexadecimal 8000 (H), tal como se muestra en el paso 205. El núcleo del motor 115 también inicializa el registro bajo 170, el registro de bits pendientes 175 y el registro de contador 180 para, por ejemplo, un valor de 0, tal como se muestra en los pasos 210, 215 y 220 respectivamente.

Después de la inicialización, y al recibir un evento binario de la secuencia de eventos 125; el núcleo del motor opera tal como se ilustra en el diagrama de flujo de la Figura 3 de acuerdo con un ejemplo para la comprensión de la invención. Tal como se muestra en el paso 305 de la Figura 3, el núcleo del motor 115 calcula un valor de sub-intervalo R (A) para un valor de evento en particular, por ejemplo un valor del evento "A", utilizando un valor actual del registro de intervalos 165 y la estimación de probabilidad para ese valor de evento en particular recibida a través de la línea de transmisión de probabilidades 155. En este caso, el valor de sub-intervalo R (A) se calcula multiplicando el valor del registro de intervalos "R" por la estimación de la probabilidad P (A). Tal como se muestra en el paso 310, un comparador del núcleo del motor 115 (que no se muestra) compara un valor "X" del evento binario recibido a través de la línea de transmisión de eventos 145 con el valor del evento en particular A para el que se ha generado la probabilidad P (A). Cuando el valor de evento recibido X es igual a A, el registro de intervalos 165 se establece en el valor sub-intervalo R (A), tal como se muestra en el paso 315 (es decir, el valor de R (A) se almacena en el registro de intervalos 165). Sin embargo, cuando el valor de evento X recibido no es igual al evento A en el paso 310, el R sub-intervalo (A) se resta del valor R del registro de intervalos 165, donde el valor resultante se almacena en el registro de intervalos 165 tal como se muestra en el paso 320. Un valor L del registro bajo 170 se suma con el valor de sub-intervalo R (A) y se almacena en el registro bajo 170 tal como se muestra en el paso 325. Al recalcular el valor del registro de intervalos 165 en la etapa 315, o el registro bajo 170 en el paso 325, el núcleo del motor llama a una rutina de re-normalización, tal como se muestra en el paso 330 y que se describe más adelante con respecto al diagrama de flujo de la Figura 4, de acuerdo con un ejemplo para la comprensión de la invención.

Tal como se muestra en la Figura 4, la re-normalización comienza cuando un valor del registro de intervalos 165 se compara con un valor de intervalo predeterminado, en este caso 4000H tal como se muestra en el paso 405. Cuando el valor R del registro de intervalos 165 > 4000H, el registro de contador se incrementa en 1, un valor de incremento predeterminado, en este caso tal como se muestra en el paso 410. Cuando se determina en el núcleo del motor 115 que el valor de R es menor o igual a 4000H en el paso 405, el valor L del registro bajo 170 y el valor R del registro de intervalos 165 se suman, y se compara con el valor 8000H tal como se muestra en el paso 415. Cuando la suma es menor o igual a 8000H, se llama a una rutina de “bit y seguir” que tiene un parámetro B igual a "0" tal como se muestra en el paso 420 y tal como se describirá más adelante. A continuación, el valor del registro bajo se dobla tal como se muestra en el paso 425, y el valor C del registro de contador 180 se compara con 0 tal como se muestra en el paso 430.

Cuando el valor C del registro de contador 180 no es menor que 0, un valor de decremento, en este caso 4H, se resta del registro de contador 180, tal como se muestra en el paso 435, y el flujo vuelve al paso 405 y opera tal como se describe anteriormente. Sin embargo, cuando se determina en el paso 430 que el valor C del registro de contador es menor que 0, el registro de intervalos se reajusta duplicando el valor R del registro de intervalos 165, tal como se muestra en el paso 440, y el flujo del programa continúa al paso 435 tal como se ha descrito anteriormente.

Cuando se determina en el paso 415 que la suma de los valores L y R no es menor que o igual a 8000H, el valor L del registro bajo 170 se compara con 8000H tal como se muestra en el paso 445. Cuando el valor L es mayor que o igual a 8000H, se llama a la rutina de “bit y seguir” con un parámetro B igual a "1" tal como se muestra en el paso 450 y se analiza más adelante. Un valor 8000H se resta del registro bajo 170 tal como se muestra en el paso 455, y el flujo continúa al paso 425 tal como se ha descrito anteriormente. No obstante, cuando se determina que L no es mayor que o igual a 8000H en el paso 445, el registro de bits pendientes 175 se incrementa en 1, tal como se muestra en el paso 460, y se resta un valor 4000H del registro bajo 170 tal como se muestra en el paso 465. A continuación, el flujo sigue al paso 425 tal como se ha descrito anteriormente.

Tras la recepción de un evento final de la secuencia de eventos 125, el secuenciador 105 envía una señal de terminar al núcleo del motor 115 a través de la línea de terminar la transmisión 195. El funcionamiento del núcleo del motor 115 cuando se recibe una señal de terminar se muestra en el diagrama de flujo de la Figura 5, de acuerdo con un ejemplo para la comprensión de la invención.

Tal como se muestra en la Figura 5, se llama a una rutina de bit y seguir, el paso 505, con un argumento B que tiene el valor del bit más significativo (MSB) del registro bajo 170. Los bits menos significativos (LSB) de un registro bajo 170 se envían al secuenciador 105 tal como se muestra en el paso 510. La rutina de bit y seguir se muestra con más detalle en el diagrama de flujo de la Figura 6, de acuerdo con un ejemplo para la comprensión de la invención.

Tal como se muestra en la Figura 6, un valor B se envía como un bit de la secuencia de información 135 al secuenciador 105 a través de la línea de transmisión de bits 158, tal como se muestra en el paso 605. Un valor BO del registro de bits pendientes 175 se compara con 0, en el paso 610. Cuando un valor BO del registro de bits pendientes 175 no es mayor que 0, el flujo vuelve a cualquier segmento de programa / rutina que haya llamado a la rutina de bit y seguir (es decir, la caja 420 o la caja 450 de la Figura 4 o la caja 505 de la Figura 5). Sin embargo, cuando el valor BO es mayor que 0 en el paso 610, un bit de la secuencia de información 135 que tiene un valor de 1 menos el valor B se envía al secuenciador 105 a través de la línea de transmisión de bits 158, tal como se muestra en el paso 615. El valor BO del registro de bits pendientes se decrementa en 1 tal como se muestra en el paso 620, y el flujo vuelve al paso 610, y continúa como se ha descrito anteriormente.

Por lo tanto, proporcionar al codificador 100, que tiene un núcleo del motor 115, el contador 180 permite el seguimiento de la relación de eventos por partes de información, permitiendo de esta manera que dicha relación esté delimitada con el fin de reducir el límite de complejidad de la secuencia de información proporcionada por el codificador. El valor de incremento del contador que se ha descrito con respecto al paso 410, el valor del contador de decremento discutido con respecto al paso 435 y el valor con el que se compara el registro de contador 180 en el paso 430 se utilizan para regir la relación media de eventos en relación con las partes de información. Por ejemplo, con los valores descritos anteriormente con respecto a la Figura 4, tener un valor de decremento 4 en el paso 435 da como resultado que la relación media de eventos por partes de información está limitado a 4. La alteración del valor de decremento altera la relación media de los eventos por partes de información. En consecuencia, el valor de incremento, el valor de decremento y el valor con el que se compara el contador son meramente ejemplares, ya que dichos valores, junto con el valor al que se ha inicializado el registro de contador 180 en el cuadro 220 de la Figura 2, no necesitan ser tal como se han descrito anteriormente, sino que pueden ser cualquier valor entero, en el que se seleccionan los valores correspondientes para lograr la relación media limitada deseada de eventos por partes de información tal como apreciará un experto en la técnica.

Las Figuras 7-10 ilustran un decodificador aritmético y el funcionamiento del mismo que es capaz de decodificar una secuencia de información que consta de al menos una parte de información por una secuencia de eventos que comprende una pluralidad de eventos, que representa una relación limitada de eventos por partes de información en la secuencia de información. La Figura 7 es un diagrama de bloques del decodificador, donde las Figuras 8-10 son diagramas de flujo que ilustran el funcionamiento del decodificador. La Figura 7 ilustra un decodificador aritmético 700 de acuerdo con un ejemplo para la comprensión de la invención. El decodificador 700 incluye un secuenciador 705, un estimador de probabilidad 710, y un núcleo del motor 715 acoplados uno con el otro. Una o más líneas de datos de entrada de secuencia de información 720 proporcionan un puerto de importación de una secuencia de información 725, en este caso en una secuencia ordenada de bits binarios, al decodificador 700. Los bits binarios de la secuencia 725 pueden tener un valor de "0" o "1". El decodificador procesa la secuencia de información para generar una secuencia de eventos teniendo en cuenta la relación limitada de eventos por partes de información en la secuencia de información, tal como se describe más adelante. La secuencia de eventos generada es una secuencia de eventos ordenada que comprende una pluralidad de eventos, en este caso eventos binarios, que pueden tener un valor de "A" o "B". La secuencia de eventos se proporciona a las líneas de datos de secuencias de eventos de salida 730, que proporciona al menos un puerto de salida desde el decodificador 700.

Al recibir la secuencia ordenada de bits binarios 725, el secuenciador 705 transmite secuencialmente los uno o más bits al núcleo del motor 715 a través de la línea de transmisión de bits 740. Tras la recepción de los uno o más bits, el núcleo del motor 715 comienza la generación de eventos, en este caso eventos binarios, que se transmiten al secuenciador 705 y al estimador de probabilidad 710 a través de las líneas de transmisión de evento 745 y 750 respectivamente. Tal como se describe más adelante, el estimador de probabilidad envía una estimación de probabilidad inicial al núcleo del motor para generar el primer evento binario. A continuación, para cada evento binario generado por el núcleo del motor 715 y enviado al secuenciador 705, el secuenciador 705 transmite un contexto correspondiente al estimador de probabilidades 210 sobre la línea de transmisión de contexto 755. Basándose en el valor del contexto recibido a través de línea de transmisión de contexto 755, el estimador de probabilidad 710 genera una estimación de la probabilidad correspondiente P (A), que se envía al núcleo del motor 715 sobre la línea de transmisión de probabilidad 760, y es utilizada por el núcleo del motor 715 para generar otros eventos. Después de transmitir la estimación de probabilidad P (A), el estimador de probabilidad 710 actualiza su estado interno basándose en el valor del evento binario recibido desde el núcleo del motor 715 sobre la línea de transmisión de evento 750. El núcleo del motor 715 consume cero o más bits de información por cada evento binario generado. El núcleo del motor 715 utiliza varios registros en la generación de los eventos de la secuencia de eventos 735, incluyendo un registro de intervalo 765, un registro de valores 770 y un registro de contador 775. Se proporciona una señal de inicialización al núcleo del motor 715 y al estimador de probabilidad 710 a través de líneas de transmisión de inicialización 780 y 785, respectivamente. Se proporciona una señal de terminar al motor central 715 a través de una línea de finalizar señal 790. El funcionamiento del decodificador 700 se muestra en los diagramas de flujo de las Figuras 8-10.

La Figura 8 ilustra el funcionamiento del decodificador 700 al recibir una señal de inicialización a través de la línea de señal de inicialización 780 de acuerdo con un ejemplo para la comprensión de la invención. Tal como se muestra en la Figura 8, el núcleo del motor 715 inicializa el registro de intervalos 765 a un valor de 8000H tal como se muestra en el paso 800, e inicializa el valor del registro 770 a un valor particular representado por 16 bits (que se describe más adelante) tal como se muestra en el paso 805. Además, el núcleo del motor 715 inicializa el registro de contador 775 a un valor de cero tal como se muestra en el paso 810. El valor de registro 770 se inicializa en el paso 805 mediante la recopilación de 16 bits en el valor del registro 770, por ejemplo, las primeras 16 partes de información de la secuencia de información, tal como se describe en Arithmetic Coding Revisited, de Moffat et al., ACM Transactions on Information Systems, VOL. 16, NO. 3, Julio 1998, páginas 256- 294, que se incorpora como referencia en el presente documento, y como sería apreciado por un experto en la técnica. La Figura 9 es un diagrama de flujo que ilustra el funcionamiento de los motores de núcleo 715 en la generación de la secuencia de evento 725 de acuerdo con un ejemplo para la comprensión de la invención. Tal como se muestra en el paso 900, un valor de subintervalo R (A) es calculado por el núcleo del motor 715 para un valor del evento "A". El valor de subintervalo R (A) se calcula basándose en el valor del registro de intervalos 765 y la estimación de probabilidad determinada P (A) recibida a través de la línea de transmisión de estimación de probabilidad 760 del estimador de probabilidad 710, multiplicando el valor R del registro de intervalos 765 por la estimación de probabilidad P (A). Cuando se calcula el valor de sub-intervalo R (A) por primera vez para una secuencia de información 735 en particular, el estimador de probabilidad 710 determina que la estimación de la probabilidad P (A) es alguna estimación de probabilidad inicial / predeterminada (es decir, que se ha acordado con anterioridad). A partir de entonces, mientras los eventos se emiten desde el núcleo del motor 715, el estimador de probabilidad 710 utiliza los eventos emitidos junto con información de contexto correspondiente recibida a través de la línea de la información de contexto 755 en la actualización de la estimación de la probabilidad P (A) proporcionada a través de la línea de transmisión de estimación de la probabilidad 760, tal como se describe a continuación.

El valor de subintervalo R (A) se compara entonces con un valor V del registro de valores 770, tal como se muestra en el paso 905. Cuando el valor de subintervalo R (A) es menor que el valor V del valor del registro 765, el registro de intervalos 165 se establece en el valor de subintervalo R (A) tal como se muestra en el paso 910, y un evento "A" se emite al secuenciador 705 a través de la línea de transmisión de eventos 745 tal como se muestra en el paso 915. A continuación se llama a un procedimiento de renormalización, tal como se muestra en el paso 920, y que se describirá con más detalle con respecto al diagrama de flujo de la Figura 10.

Cuando el valor de subintervalo R (A) no es menor que el valor V del registro de valores 770 en el paso 905, el valor de subintervalo R (A) se resta del registro de intervalos 765 tal como se muestra en el paso 925. El valor de subintervalo R (A) se resta del valor de registro 770, tal como se muestra en el paso 930, y un evento "B" se emite desde el núcleo del motor al secuenciador 705 a través de línea de transmisión de evento 745, tal como se muestra en el paso 935. El flujo continúa con el procedimiento de renormalización en el paso 920.

Tal como se ha descrito anteriormente, tras la emisión de un evento a través de la línea de transmisión de evento 745, el secuenciador 705 transmite un contexto a través de la línea de transmisión de contexto 755 al estimador de probabilidad 210, en el que el estimador de probabilidad 710 actualiza su estado interno basándose en el valor del evento binario emitido por el núcleo del motor 715.

La Figura 10 es un diagrama de flujo que ilustra el funcionamiento del núcleo del motor 115 al realizar la re- normalización descrita anteriormente con respecto al paso 920 de acuerdo con un ejemplo para la comprensión de la invención. Tal como se muestra en el paso 1000, el valor R del registro de intervalos 765 se compara con un valor de intervalo predeterminado, en este caso 4000H. Cuando el valor predeterminado R no es menor que o igual a 4000H, el registro de contador 775 se incrementa en un valor de incremento predeterminado, en este caso 1, tal como se muestra en el paso 1005, y la re-normalización es completa. Sin embargo, cuando el valor R del registro de intervalos 765 es menor o igual a 4000h un valor C del registro de contador 775 se compara con 0 tal como se muestra en el paso 1010. Cuando el valor C del registro de contador 775 no es menor que 0, el valor V del valor del registro 770 se duplica, y se le añade un valor del bit recibido más reciente en el núcleo del motor 715 a través de la línea de transmisión de bits 740, en donde la suma resultante se almacena en el registro de valor 770 tal como se muestra en el paso 1015. Tal como se muestra en el paso 1020, un valor C del registro de contador 775 se decrementa en un valor de decremento predeterminado, en este caso 4H, y el flujo vuelve al paso 1000. Cuando un valor C del registro de contador es menor que 0, en el paso 1010, el registro de intervalos 765 se reajusta duplicando el valor R del registro de intervalos tal como se muestra en el paso 1025, y el flujo continúa al paso 1015 tal como se ha descrito anteriormente.

Después de que una pieza final de la información de la secuencia de información 725 se transmite a, y es procesada por, el núcleo del motor 715, el secuenciador 705 transmite una señal de terminar al núcleo del motor 715 a través de líneas de transmisión de señal de terminar 790 que indican al núcleo del motor 715 que la decodificación de la secuencia de información 725 se ha completado. El núcleo del motor 715 no necesita realizar ninguna operación en respuesta a la señal de terminación. El codificador 100 con un límite de complejidad reducido que es capaz de codificar una secuencia de eventos a una secuencia de información limitando una relación de eventos por partes de información resulta ventajoso, ya que proporciona una secuencia de información que puede ser decodificada y utilizada para soportar la prestación de la información para su utilización en tiempo real, sin afectar significativamente la eficiencia de codificación de la secuencia de información. Además, una codificación de complejidad reducida de este tipo puede ser beneficiosa cuando el decodificador utilizado en la decodificación de la secuencia de la información posee capacidades de proceso reducidas (es decir, está en un dispositivo móvil) ya que un decodificador de este tipo sería capaz de decodificar la secuencia de información sin un retraso indebido en espera de que la decodificación se lleve a cabo. Además, el decodificador 700 capaz de decodificar una secuencia de información a una secuencia de eventos asignando una relación limitada de eventos por partes de información en la secuencia de información, puede ser ventajoso al permitir una decodificación eficiente de la secuencia de información para su uso en, por ejemplo, uso en tiempo real de la secuencia de evento. La Figura 11 ilustra un codificador 1100 de acuerdo con otra realización de la invención. Tal como se muestra en la Figura 11, el codificador incluye un procesador 1105, junto con un codificador de entropía 1110. El codificador de entropía incluye un codificador aritmético 1115 junto con un controlador 1120. Los datos de entrada 1125 son recibidos en el codificador, y se codifican a una o más secuencias de partes de información que se muestran en 1130. Los datos de entrada 1125 pueden ser cualquier dato que va a ser codificado por el codificador 1100, incluyendo, por ejemplo, datos de vídeo. El procesador 1105 recibe los datos de entrada, y convierte los datos de entrada en una o más secuencias de eventos 1135. El procesador 1105 puede particionar los datos de entrada en uno o más segmentos de información (que no se muestran). Por ejemplo, cuando los datos de entrada 1125 son datos de vídeo, el procesador puede particionar los datos de vídeo en bloques de datos, por ejemplo representando muestras de 16x16 de la imagen de vídeo correspondiente. Una secuencia de eventos 1135 puede representar uno o más segmentos (bloques de video).

El codificador de entropía 1110 recibe la secuencia de eventos 1135 que va a ser aritméticamente codificada, donde el codificador aritmético 1115 genera 0 o más bits de la secuencia de información 1130 para cada caso de la secuencia de eventos 1135. El controlador 1120 es capaz de regular el codificador de entropía 1110 al limitar el número de partes de información de la secuencia de información 1130 como una función del número de los eventos de la secuencia de eventos 1135, de tal manera que el número de eventos no exceda un umbral con respecto al número de partes de información generadas. Cuando se supera el umbral, el controlador 1120 puede controlar el codificador de entropía para añadir una o más piezas de información de relleno a la secuencia de información 1130 para alcanzar el umbral.

El codificador de entropía puede codificar la secuencia de eventos 1135 de una manera similar a la descrita anteriormente con respecto al codificador aritmético 100 de la Figura 1. Por ejemplo, el codificador aritmético 1115 puede incluir, en su caso, un secuenciador, y un estimador de probabilidad tal como se ha descrito anteriormente con respecto a la Figura 1. El codificador aritmético 1115 puede incluir además un motor central con Registros de Intervalo, Bajo y de Bits Pendientes. El controlador 1120 puede incluir uno o más contadores para el seguimiento de una serie de eventos de la secuencia de eventos 1135 procesados y una serie de partes de información de la secuencia de información 1130 generada. Alternativamente, los uno o más contadores pueden estar presentes en el codificador de entropía 1110, donde el controlador 1120 es capaz de monitorizar el/los contador (es) para asegurar que el umbral entre eventos procesados y partes de información generados se mantiene sustancialmente. El controlador 1120 puede limitar el número de partes de información, por ejemplo, sobre cada secuencia individual de eventos que ha sido codificada. Por ejemplo, el controlador puede garantizar que (# partes de información generadas) x (umbral) ≥ (# eventos procesados). Esto se puede conseguir, por ejemplo, de una manera similar a como se ha descrito anteriormente con respecto a las Figuras 1-6, y, específicamente, a la Figura 4, donde el controlador incrementa un contador para cada evento procesado, y resta un número desde el contador que representa el valor de umbral, por ejemplo, "4" cuando se procesa un bit. El controlador puede entonces comparar el valor del contador, por ejemplo, con el valor 0, y activar la inserción de un bit de relleno si el valor del contador es mayor que 0. De esta manera, el controlador es capaz de asegurar que el codificador aritmético 1115 está limitado sustancialmente a una proporción de 4:1 de eventos procesados por partes de información generados.

Además, o como alternativa, el controlador puede limitar el número de eventos de la secuencia de eventos 1135 como una función del número de partes de información en la secuencia de partes de información, y un número de segmentos de los datos de entrada 1125 representados en la secuencia de eventos. Por ejemplo, la limitación puede tomar la forma de una combinación lineal: donde e es el número de eventos representados en la secuencia de partes de información, B es un número de partes de información en la secuencia de partes de información, S es un número de segmentos representados en la secuencia de eventos, y α y β representan un valor de decremento para un contador utilizado por el controlador para mantener sustancialmente una limitación del número de eventos de la secuencia de eventos con respecto a un número de partes de información generadas.

Los valores de α y β se proporcionan habitualmente al controlador 1120, y la derivación de α y β se describirá a continuación. El valor de α puede representar un valor de decremento, por ejemplo, para un contador tras la generación de una parte de información en el codificador, donde el valor β puede representar el valor de decremento, por ejemplo, para un contador tras la finalización del proceso de un segmento. En la alternativa, el valor β puede restarse de un valor de contador al comienzo del proceso de un segmento, o en cualquier otro momento durante el proceso de un segmento tal como resultaría evidente para un experto en la técnica. Se puede utilizar una línea de control de frecuencia 1140 para limitar el número de eventos de la secuencia de eventos 1135 como una función del número de partes de información en la secuencia de partes de información, y un número de segmentos de los datos de entrada 1125 representados en la secuencia de eventos. Por ejemplo, la línea de control de frecuencia 1140 se puede utilizar para transportar información relativa a la limitación de la complejidad (MEPS y / o PMEPS, ver más abajo) desde el codificador de entropía 1110 al procesador 1105. El codificador de entropía puede indicar al procesador que el umbral de limitación está a punto de ser excedido, o que ya se ha excedido, por ejemplo, mediante la transmisión de información sobre el valor del/de los contador (es). El procesador 1105 puede por lo tanto reducir la frecuencia de eventos (es decir, reducir el número de eventos por segmento / bloque), por ejemplo, para reducir la probabilidad de que el controlador 1120 desencadene la inserción de bits de relleno en la secuencia de información 1130. En algunas circunstancias, el número particular de segmentos de datos de los datos de entrada 1125 que serán procesados puede ser conocido en el codificador 1100, por ejemplo, cuando la secuencia de partes de información no tiene por qué limitarse sustancialmente para la transmisión sobre un medio de comunicación particular. En estas circunstancias, la secuencia de partes de información generada en el codificador 1100 puede representar una imagen codificada completa para la transmisión generada a partir de un número conocido de segmentos de los datos de entrada 1125. Cuando el número particular de segmentos de datos de los datos de entrada que se van a procesar es conocido, el controlador puede, por ejemplo, limitar el número de eventos en la secuencia de eventos 1135 como: Dado que el número total de segmentos, S, y el valor β son conocidos, el producto de β x S puede ser restado del número de eventos, E, por la secuencia de eventos 1135 durante o después del proceso de los uno o más segmentos de los datos de entrada 1125. Por ejemplo, cuando se utiliza un contador para limitar el número de eventos que responden a la cantidad de bits que se ha generado, el contador puede inicialmente ser decrementado en un valor de β x S, y puede ser decrementado en un valor α para cada parte de información generada, mientras que el contador se incrementa en "1" para cada caso de la secuencia de eventos 1135 procesados por el codificador de entropía 1110. El valor de β puede ser cualquier valor, habitualmente en el intervalo de 1 a 100, y puede ser determinado, por ejemplo, tal como se describe más adelante. El valor de α puede ser cualquier valor, habitualmente en el intervalo de 1 a 10, y puede ser determinado, por ejemplo, tal como se describe más adelante. En algunas circunstancias, un número de segmentos de los datos de entrada 1125 que se van a procesar no es conocido previamente, por ejemplo, cuando el medio de comunicación limita el número de partes de información que puede proporcionarse en la secuencia de información 1130. Esto puede ocurrir, por ejemplo, cuando la secuencia de información 1130 se va a transmitir a través de Internet, como un paquete de Protocolo de Internet (IP), en que el paquete IP tiene una limitación de tamaño máximo. En estas circunstancias, dependiendo de la complejidad de una imagen en particular, pueden ser necesarias una o más secuencias de partes de información para representar una sola imagen de los datos de entrada 1125. Sin embargo, el número de segmentos utilizados para la generación de una secuencia de partes de información no se puede saber de antemano, ya que no se puede saber después de cuántos segmentos procesados se alcanza el tamaño máximo de una secuencia de partes de información. Cuando un número de segmentos de los datos de entrada 1125 que se van a procesar no es conocido de antemano, el controlador puede explicar la pluralidad de secuencias de eventos mientras se codifica el uno o más segmentos que representan una secuencia particular de los eventos. Por ejemplo, cuando se utiliza un contador para limitar el número de eventos que responden a la cantidad de bits que se han generado, el contador puede ser decrementado en un valor β para cada segmento procesado, y puede ser decrementado en un valor α para cada pieza de información generada, mientras que el contador puede ser incrementado en "1" para cada caso de la secuencia de eventos 1135 procesados por el codificador de entropía 1110. Los valores de α y β pueden ser determinados, por ejemplo, teniendo en cuenta las limitaciones impuestas por una norma particular (es decir, una codificación de video reguladora estándar), y / o limitaciones con respecto a un decodificador que se utiliza para decodificar la secuencia de información codificada por el codificador 1100. Dichas limitaciones impuestas por la norma particular pueden incluir información con respecto a un número máximo de bits por segundo (MBPS), un número máximo de segmentos (bloques) por segundo (MSPS), y un número máximo de pico de bits por segundo (PMBPS). El PMBPS puede representar, por ejemplo, un número máximo de bits de una imagen dividido por la distancia temporal entre dos imágenes a codificar. El MBPS puede representar la capacidad del canal, por ejemplo, aproximadamente 64 000 bits por segundo para aplicaciones de comunicaciones móviles, 500 000 bits por segundo para la línea de abonado digital (DSL), y 4 000 000 bits por segundo para aplicaciones de difusión como la televisión (TV). El MSPS puede representar la norma de formato de vídeo, por ejemplo, 176x144 píxeles a 10 o 15 fotogramas por segundo para aplicaciones móviles (es decir, telefonía móvil), 320x240 píxeles a 24 fotogramas por segundo para aplicaciones DSL, 720x480 píxeles a 30 fotogramas por segundo para aplicaciones de televisión estándar y 1920x1088 píxeles a 30 fotogramas por segundo para TV de alta definición. PMBPS puede ser cualquier múltiplo del MBPS, habitualmente varias veces MBPS, por ejemplo, PMBPS ≈ 10 x MBPS.

Dependiendo de la implementación particular, los recursos de un decodificador (es decir, las capacidades de proceso y / o la memoria intermedia disponible) pueden ser limitados, y pueden también tomarse en cuenta al determinar los valores de α y β. Dichas limitaciones pueden incluir valores reales o supuestos con un número máximo de eventos por segundo (MEPS) que pueden ser procesados por el decodificador, y / o un número máximo pico de eventos por segundo (PMEPS) que pueden ser procesados por el decodificador (es decir, un número máximo de eventos en una imagen dividida por la distancia temporal entre dos imágenes a descodificar). La explicación de una o más de las anteriores limitaciones del decodificador, α y β puede ser representada en un sistema lineal como: PMEPS = α*PMBPS + ß*MSPS, y MEPS = α*MBPS + ß*MSPS.

Los valores de α y β pueden determinarse resolviendo el sistema lineal para α y β, dadas por ejemplo, las limitaciones de PMBPS y MSPS fijadas por la norma en particular, y una o las dos limitaciones de PMEPS y MEPS del decodificador. Los valores de α y β no necesitan ser valores enteros, sino que pueden ser cualquier valor para cumplir sustancialmente el sistema lineal.

Los valores de α y β pueden ser determinados de antemano, por un diseñador de sistemas del codificador 1100 que representa una o más de las limitaciones mencionadas anteriormente, y que se proporcionan al controlador 1120. Alternativamente, o además, los valores de α y β pueden ser determinados por el controlador 1120, o cualquier otro componente del codificador 1100, de acuerdo con una o más de las limitaciones mencionadas anteriormente, o como valores por defecto del codificador 1100. Cuando el controlador 1120 determina valores para α y β utilizando una o las dos limitaciones impuestas por la norma o por un dispositivo de decodificación, la información relativa a una o más de las limitaciones se puede almacenar en una memoria (que no se muestra) del controlador 1120, y ser utilizada por el controlador 1120 en la determinación de los valores α y β. Además, o como alternativa, se puede proporcionar información con respecto a las limitaciones al controlador 1120, por ejemplo, mediante algún dispositivo externo, como una memoria externa (es decir, un disco de vídeo digital (DVD)), un dispositivo reproductor de DVD, o por parte de un ingeniero de sistemas, por ejemplo, manipulando algunas de las funciones en relación con la codificación de los datos de entrada particulares 1125. En este último caso, el ingeniero de sistemas puede introducir en una consola u otro dispositivo de entrada (que no se muestra), o especificar de otra manera, la información con respecto a las limitaciones impuestas como resultado de una norma de codificación y / o un dispositivo de decodificación, tal como sería apreciado por un experto en la técnica.

Cuando una o las dos limitaciones PMEPS y MEPS de los decodificadores no son conocidas, se pueden suponer valores para PMEPS y MEPS, por ejemplo, como los requisitos operativos mínimos que debe tener un decodificador para ser capaz de decodificar la secuencia de información 1130 generada por el codificador 1100. Además, al asumir los valores para PMEPS y / o MEPS, pueden tenerse en cuenta las consideraciones en cuanto a, por ejemplo, el porcentaje de tiempo que utilizará el decodificador para la decodificación aritmética de los datos. Por ejemplo, se puede suponer que el decodificador será capaz de gastar no más del 30% de su tiempo / capacidades de proceso para llevar a cabo la decodificación aritmética de una secuencia de información recibida en el decodificador. Además, a pesar de que los valores de α y β pueden determinarse utilizando el sistema lineal anterior, dichos valores pueden ser ajustados para lograr un rendimiento de codificación deseado, en que los valores ajustados para α y β pueden ser posteriormente utilizados por el codificador 1100 para codificar los datos de entrada 1125 a la secuencia de información 1130. Por ejemplo, los valores de α y β pueden ser ajustados con consideraciones en relación a una posible pérdida de la calidad de vídeo debido a las partes de información con que se ha rellenado la secuencia de información 1130. Puede ser deseable, por ejemplo, reducir al mínimo el número de partes de información de relleno de este tipo para mantener una óptima calidad de vídeo (es decir, vídeo con poca o ninguna distorsión), a la vez que limitando la complejidad de decodificación. Dicha compensación entre la complejidad de decodificación y la calidad de vídeo puede determinarse experimentalmente, y puede tener en cuenta el algoritmo de codificación de vídeo particular utilizado por el codificador 1100.

Además, cuando se determinan los valores de α y β, se pueden hacer consideraciones en cuanto a si la limitación de la complejidad es demasiado ajustada, por ejemplo, si los valores de α y / o β son demasiado bajos. Una alta proporción de partes de información de relleno en la secuencia de partes de información (es decir, una serie de piezas de relleno superior a aproximadamente un 1% o un 2% de las partes de información de la secuencia de información) puede indicar que la limitación es demasiado ajustada. Un experto se daría cuenta de que otras proporciones pueden indicar una alta proporción de relleno de partes de información, por ejemplo, teniendo en cuenta la norma y / o el decodificador particulares que se pueden utilizar. Cuando se determina, por ejemplo, que los valores de α y β son demasiado ajustados, los valores de α y β pueden aumentarse para reducir la probabilidad de que se añadan bits de relleno (es decir, reducir la probabilidad de una penalización en la calidad de la secuencia de información codificada). Al aumentar los valores de α y β, se pueden hacer consideraciones en cuanto al efecto sobre los límites de complejidad resultante (es decir, MEPS y / o PMEPS) con respecto al decodificador que se utiliza para decodificar la secuencia de información codificada. Estas consideraciones pueden incluir el coste de implementar el decodificador. Si el límite de complejidad es mayor, más potencia de proceso puede ser necesaria en el decodificador. Un aumento de la potencia de proceso requerida probablemente podría dar como resultado un mayor coste de implementación. Como alternativa, α y β se pueden determinar experimentalmente, utilizando técnicas de regresión lineal. Se puede codificar una serie de secuencias de eventos, cada uno en representación de los segmentos S, sin imponer ninguna restricción de complejidad. Para cada secuencia z de eventos, se conoce para el número de eventos e(z), el número de partes de información generada resultante B (z). Se puede determinar, mediante regresión lineal, una línea e = c*B + d que se aproxima a los pares de datos (e(z), B (z)). Un valor inicial de α puede estar indicado por c, y un valor inicial de β puede estar indicado por d / S. Los valores de α y / o β pueden entonces ser incrementados para reducir al mínimo el número de pares de datos (e (z), B (z)) que se encuentran por encima de la línea e = a*B + β*S. La cantidad por la cual α y / o β se incrementan probablemente también tiene en cuenta los valores resultantes de MEPS y / o PMEPS, por ejemplo, para controlar los costes de implementación de un decodificador. Utilizando los valores de α y β tal como se determina mediante una o más de las diversas técnicas descritas anteriormente, el codificador 1100 puede representar un valor de α (es decir, disminuir un contador por el valor de α) para cada pieza información generada, y puede representar un valor de β (es decir, disminuir un contador por el valor de β) sobre la finalización de un segmento de los datos de entrada 1125. Por ejemplo, cuando α y β son valores enteros, dicha representación (es decir, reducciones de uno o más contadores) puede llevarse a cabo directamente.

Cuando, por ejemplo, uno de éllos o tanto α como β son valores fraccionarios, se puede determinar un denominador común para proporcionar valores no fraccionarios para α y β. En esta circunstancia, los valores nuevos, no fraccionales para α y β pueden ser contabilizados tal como se describe anteriormente, por ejemplo, decrementando un contador por los valores de α y β tras generar la parte de información y la finalización del proceso de segmento, respectivamente. El denominador común determinado puede determinarse, por ejemplo, mediante la adición del valor del denominador común al valor del contador en el proceso de cada evento de la secuencia de evento 1135. Por ejemplo, cuando se determina que los valores de α y β son 4/3 y 25 respectivamente, se puede determinar un denominador común como 3. Los valores no fraccionarios para α y β pueden por lo tanto ser determinados como 4 y 75 respectivamente, utilizando el denominador común. Por lo tanto, cuando se utiliza un contador para determinar los valores de α y β, el contador puede ser decrementado en 4 para cada parte de información generada, decrementado en 75 tras la finalización del proceso de cada segmento, e incrementado enr 3 para cada evento procesado. Tener un codificador capaz de limitar un número de partes de información a través de uno o más segmentos de los datos de entrada puede permitir que los datos de vídeo sean decodificados constantemente, lo que representa un número máximo de partes de información por grupo de segmentos, manteniendo la calidad de la codificación de vídeo en comparación con los codificadores de la técnica anterior. Además, cuando el codificador recibe una señal a través de la línea de control de la velocidad de que el umbral de complejidad está a punto de ser superado, el codificador puede generar menos eventos, por ejemplo β o menos eventos a partir del siguiente segmento de datos de entrada, para evitar superar ese umbral para este siguiente segmento / bloque. Por lo tanto, tener un valor de β diferente de cero puede ayudar al procesador 1105 en el ajuste de la calidad de vídeo. Además, dado que el controlador normalmente desencadena la adición de bits de relleno cuando se supera el umbral de limitación, el procesador puede ser implementado de una manera tal que el procesador no tenga por qué tener en cuenta o tratar la limitación de la complejidad. Por lo tanto, si el procesador cumple los límites impuestos por la norma en particular, por ejemplo, los límites en relación con uno o más entre MSPS, MBPS y PMBPS, también satisfará los límites de complejidad de MEPS y / o PMEPS (es decir, derivados de α y β tal como se describe más arriba).

Aunque se ha descrito la limitación del número de eventos que responden a la cantidad de partes de información generadas con respecto al codificador 1100, un experto se dará cuenta de que una limitación similar del número de eventos de la secuencia de eventos que responde a la serie de partes de información en la secuencia de información puede tenerse en cuenta en el codificador 100 descrito anteriormente con respecto a la Figura 1. Además, aunque el controlador 1120 se ha descrito como acoplado al codificador aritmético 1115, un experto se dará cuenta de que dicho acoplamiento puede ser directo, o a través de otros dispositivos intermedios. Dicho acoplamiento permite la comunicación directa y / o indirecta entre el controlador 1120 y el codificador aritmético 1115, de tal manera que el controlador 1120 es capaz de regular el codificador de entropía 1110 al limitar el número de partes de información de la secuencia de información 1130 como una función del número de eventos de la secuencia de eventos 1135.

Los codificadores 100 y 1100, y el decodificador 700, descritos en el presente documento pueden estar compuestos completamente de hardware, como software que se ejecuta en un microprocesador adecuado, o como una combinación de hardware y software. La funcionalidad de los motores de núcleo 115 y 715, así como el codificador aritmético 1115, el controlador 1120 y el procesador 1105, puede llevarse a cabo mientras un programa de ordenador se ejecuta en un microprocesador adecuado, y los registros de contador 180 y 775 pueden ser un registro que reside dentro del microprocesador, o puede ser residente en algún medio de almacenamiento externo en comunicación con el microprocesador, por ejemplo, RAM, EEPROM, o cualquier medio de almacenamiento magnético, óptico o de otro tipo regrabable tal como sería apreciado por un experto en la técnica. Tal como se ha descrito anteriormente, aunque los codificadores 100 y 1100, y el decodificador 700, han sido descritos como el proceso de una secuencia de eventos binaria a una secuencia de información binaria en el caso de los codificadores, y de una secuencia de información binaria a una secuencia de evento binario en el caso del decodificador, un experto en la técnica apreciaría que, utilizando las enseñanzas descritas en el presente documento, la secuencia de eventos M-arios puede ser procesada y producida sin dejar de conseguir las ventajas descritas en el presente documento.

Además, la señal de los registros de contador 180 y 775 puede invertirse sin dejar de conseguir las ventajas descritas en el presente documento, donde los incrementos en el registro de contador descritos en los pasos 410 y 1005 serían cambiados a decrementos, los decrementos en el registro de contador descritos en los pasos 435 y 1020 serían cambiados a incrementos, y las comparaciones con el registro de contador en los pasos 430 y 1010 serían cambiadas para determinar si el valor del registro de contador respectivo es > cero. Además se pueden utilizar dos contadores en lugar de uno. El primer contador C1 puede contar eventos, y el segundo contador C2 puede contar bits. En tal caso, una comparación entre los dos contadores puede ser si C1 < 4*C2 para determinar (o explicar) si se mantiene sustancialmente la relación predeterminada de los eventos para los bits.

Además, aunque el codificador 100 y el decodificador 700 se han descrito como hardware separado, un experto en la técnica se dará cuenta de que la funcionalidad llevada a cabo por cada uno de ellos tal como se describe en el presente documento podría integrarse en una sola unidad, por ejemplo, que puede ser útil en el caso de un ordenador personal (PC) que se utiliza para una conferencia de vídeo, donde el procesador y el almacenamiento de medios del PC serían utilizados para llevar a cabo la funcionalidad del codificador y el decodificador que se describen en el presente documento. La relación de limitación de eventos por partes de información y que constituyen una proporción limitada de eventos para partes de información realizadas por los motores de núcleo analizados en el presente documento puede llevarse a cabo en otros diseños de motores de núcleo, incluyendo el de un codificador Q, un codificador MQ, un codificador Z, así como los que se describen en "Low Complexity Arithmetic Coding Implementation", Rene van der Vleuten, Documento JVT - B033, reunión JVT en Ginebra, Suiza, enero de 2002, y "Low-Complexity Arithmetic Coding Engine", Winger, Documento JVT- B036, JVT reunión en Ginebra, Suiza, enero de 2002, los cuales se incorporan como referencia en el presente documento.

Por lo tanto, se ha descrito un codificador con un límite de complejidad reducido que es capaz de codificar una secuencia de eventos a una secuencia de información mediante la limitación una frecuencia de eventos por partes de información. Dicho codificador resulta ventajoso ya que proporciona una secuencia de información que puede ser decodificada y utilizada para apoyar la prestación de la información para su uso en tiempo real, sin afectar significativamente a la eficiencia de codificación de la secuencia de información. Además, una codificación de complejidad reducida de este tipo puede ser beneficiosa cuando el decodificador utilizado en la decodificación de la secuencia de la información posee capacidades de proceso reducidas (es decir, está en un dispositivo móvil) ya que un decodificador de este tipo sería capaz de decodificar la secuencia de información sin retraso indebido a la espera de que se lleve a cabo la decodificación. Además, se ha descrito un codificador capaz de limitar un número de partes de información a través de uno o más segmentos de los datos de entrada, que pueden permitir que los datos de vídeo se descodifiquen de forma consistente, lo que representa un número máximo de partes de información por grupo de segmentos, a la vez que se mantiene la calidad de codificación de vídeo, en comparación con los codificadores de la técnica anterior. Cuando el codificador recibe una señal a través de la línea de control de frecuencia de que el umbral de complejidad está a punto de ser superado, el codificador puede generar menos eventos, para evitar superar el umbral para este segmento siguiente de los datos de entrada. Además, dado que el controlador normalmente activa la adición de bits de relleno cuando se supera el umbral de limitación, el procesador puede ser implementado de una manera tal que el procesador no tenga por qué tener en cuenta o tratar la limitación de la complejidad. Además, se describe un descodificador capaz de decodificar una secuencia de información para una secuencia de eventos que explica una relación acotada de eventos por partes de información en la secuencia de información, permitiendo de esta manera una decodificación eficiente de la secuencia de información para su uso en, por ejemplo, la utilización en tiempo real de la secuencia de eventos. Aunque esta invención se ha mostrado y descrito en conexión con realizaciones particulares, es evidente que pueden realizarse ciertos cambios y modificaciones, además de los mencionados anteriormente, de las características básicas de esta invención. Además, puede haber muchos tipos diferentes de software y hardware que se pueden utilizar para la práctica de la invención, y la invención no se limita a los ejemplos descritos anteriormente. Por consiguiente, las realizaciones descritas han de ser consideradas en todos los aspectos sólo como ilustrativas y no restrictivas, y por lo tanto el alcance de la invención está indicado por las reivindicaciones adjuntas más que por la descripción anterior.

REIVINDICACIONES

1. Un sistema para la codificación y decodificación aritmética que comprende  un codificador de entropía (1100) para convertir al menos una secuencia de eventos, en que cada secuencia de eventos incluye una pluralidad de eventos, a al menos una secuencia de información, en que cada secuencia de información incluye al menos una parte de información, en que la al menos una secuencia de eventos representa datos de entrada particionados en una serie de segmentos, que comprende:  un codificador aritmético (1115) configurado para generar cero o más partes de información de al menos una secuencia de información codificando al menos un evento de al menos una secuencia de eventos; y  un controlador (1120) acoplado con el codificador aritmético (1115) configurado para mantener una limitación del número de eventos de la secuencia de eventos con respecto al número de partes de información generadas incluyendo el número de eventos en la al menos una secuencia de eventos para ser igual o inferior que un número determinado por una función de una combinación lineal que incluye el número de partes de información generadas en la al menos una secuencia de información y el número de segmentos y  un descodificador configurado para descodificar la al menos una secuencia de información.

2. El sistema de la reivindicación 1, en que el controlador (1120) también está configurado para limitar el número de eventos de al menos un secuencia de eventos al número de partes de información de la al menos una secuencia de información generando cero o más partes de relleno en al menos la secuencia de información.

3. El sistema de la reivindicación 1, en que los datos de entrada son datos de video.

4. El sistema de la reivindicación 3, en que cada segmento comprende un bloque de muestras de 16 x 16 de los datos de entrada.

5. El sistema de la reivindicación 1, en que al menos una de las partes de información y los eventos son M-arios en su naturaleza.

6. El sistema de la reivindicación 1, que comprende también  un procesador configurado para convertir los datos de entrada en la al menos una secuencia de eventos.

7. El sistema de la reivindicación 6 en que el procesador también está configurado para particionar los datos de entrada en el número de segmentos.

8. El sistema de la reivindicación 7, en que el codificador aritmético y el controlador comprenden un codificador de entropía, en que el codificador de entropía está acoplado con el procesador, y está configurado para enviar información relativa al número de partes de información generadas en la al menos una secuencia de información al procesador.

9. El sistema de la reivindicación 8, en que el procesador está configurado para reducir una frecuencia de eventos de la al menos una secuencia de eventos en respuesta a la información recibida desde el codificador de entropía.

10. El sistema de la reivindicación 7, en que el controlador también está configurado para limitar el número máximo de eventos generando cero o más partes de relleno en la al menos una secuencia de información.

11. Un método para codificar y decodificar, que comprende  convertir al menos una secuencia de eventos, en que cada secuencia de eventos incluye una pluralidad de eventos, en al menos una secuencia de información, en que cada secuencia de información incluye al menos una parte de información, en que la al menos una secuencia de eventos representa datos de entrada particionados en una serie de segmentos, que comprende:  pasos implementados por ordenador realizados por un procesador de un sistema de ordenador a implementar:  generar cero o más partes de información de al menos una secuencia de información codificando al menos un evento de al menos una secuencia de eventos de acuerdo con una codificación aritmética; y  mantener una limitación del número de eventos de la secuencia de eventos con respecto a un número de partes de información generadas que incluye el número de eventos en al menos una secuencia de eventos para que sea igual o inferior a un número determinado por una función de una combinación lineal que incluye el número de partes de información generadas en al menos una secuencia de información y el número de segmentos; y  decodificar la al menos una secuencia de información.