ES2607982T3 - Esquema de codificación y decodificación entrópica - Google Patents

Esquema de codificación y decodificación entrópica Download PDF

Info

Publication number
ES2607982T3
ES2607982T3 ES12700329.1T ES12700329T ES2607982T3 ES 2607982 T3 ES2607982 T3 ES 2607982T3 ES 12700329 T ES12700329 T ES 12700329T ES 2607982 T3 ES2607982 T3 ES 2607982T3
Authority
ES
Spain
Prior art keywords
bin
sequence
buffer
source symbols
symbols
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES12700329.1T
Other languages
English (en)
Inventor
Detlev Marpe
Tung Nguyen
Heiko Schwarz
Thomas Wiegand
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GE Video Compression LLC
Original Assignee
GE Video Compression LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GE Video Compression LLC filed Critical GE Video Compression LLC
Application granted granted Critical
Publication of ES2607982T3 publication Critical patent/ES2607982T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/55Compression Theory, e.g. compression of random number, repeated compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods 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 a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

Aparato de codificación entrópica que comprende un descomponedor (136) configurado para convertir una secuencia (138) de elementos de sintaxis que tienen un rango de valores que se subdivide en una secuencia de N particiones (1401-3) en una secuencia (106) de símbolos fuente (106) mediante la descomposición individualmente de al menos un subgrupo de los elementos de sintaxis en un número respectivo n de símbolos fuente si con i >= 1*n, dependiendo el número respectivo n de símbolos fuente de en cuál de las secuencias de N particiones (1401-3) cae un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del número respectivo de símbolos fuente si conduzca a z y, si n>1, para todo i >= 1*n-1, el valor de si corresponda a un rango de la partición i-ésima; un subdivisor (100) configurado para subdividir la secuencia (106) de símbolos fuente en una primera subsecuencia (108) de símbolos fuente y una segunda subsecuencia (110) de símbolos fuente de modo que todos los símbolos fuente sx, siendo x un miembro de un primer subconjunto de {1*N}, estén contenidos dentro de la primera subsecuencia (108) y todos los símbolos fuente sy, siendo y un miembro de un segundo subconjunto de {1*N} que es disyunto respecto al primer subconjunto, estén contenidos dentro de la segunda subsecuencia (110); un codificador VLC (102) configurado para codificar acertadamente con relación a símbolos los símbolos fuente de la primera subsecuencia (108); y un codificador aritmético (104) configurado para codificar la segunda subsecuencia (110) de símbolos fuente, en el que el segundo subconjunto es {1} estando dispuesta la secuencia de N particiones de modo que una p-ésima partición cubra valores más altos del rango de valores que una q-ésima partición para todo p,q ε {1*N} con p>q, caracterizado porque N >= 3, y en el que el primer subconjunto es {2, 3} con el codificador VLC (102) configurado para usar un código Golomb-Rice para codificar acertadamente con relación a símbolos los símbolos fuente s2, y un código Exp-Golomb para codificar acertadamente con relación a símbolos los símbolos fuente s3, en el que los valores z del subgrupo de los elementos de sintaxis son valores absolutos, y en el que el codificador VLC (102) se configura para adaptar un parámetro Golomb-Rice del código Golomb-Rice de acuerdo con símbolos previamente codificados.

Description

5
10
15
20
25
30
35
40
45
50
55
60
Esquema de codificacion y decodificacion entropica DESCRIPCION
La presente invencion se refiere a codificacion y decodificacion entropica y puede usarse en aplicaciones tales como, por ejemplo, compresion de video y audio.
La codificacion entropica, en general, puede considerarse como la forma mas generica de compresion de datos sin perdida. La compresion sin perdida se dirige a representar datos discretos con menos bits que los necesarios para la representacion de los datos originales pero sin ninguna perdida de informacion. Los datos discretos pueden darse en la forma de texto, graficos, imagenes, video, audio, voz, facsfmil, datos medicos, datos meteorologicos, datos financieros o cualquier otra forma de datos digitales.
En la codificacion entropica, las caractensticas de alto nivel espedficas de la fuente de datos discreta subyacente frecuentemente se desprecia. Consecuentemente, cualquier fuente de datos se considera que se da como una secuencia de sfmbolos fuente que toman valores en un alfabeto m-ario dado y que se caracteriza por una distribucion de probabilidad (discreta) correspondiente {p- ..., pm}. En estos ajustes abstractos, la delimitacion inferior de cualquier metodo de codificacion entropica en terminos de longitud de palabra de codigo esperada en bits por sfmbolo es dado por la entropfa
n
H = -X Pi log2 Pi
i=1
(A1)
Los codigos de Huffman y codigos aritmeticos son ejemplos bien conocidos de codigos practicos capaces de aproximarse al lfmite de entropfa (en un cierto sentido). Para una distribucion de probabilidad fija, los codigos de Huffman son relativamente faciles de construir. La propiedad mas atractiva de los codigos de Huffman es que su implementacion puede realizarse eficientemente mediante el uso de tablas de codigo de longitud variable (VLC, del ingles “Variable Length Code”). Sin embargo, cuando se trabaja con estadfsticas de origen variable en el tiempo, es decir, probabilidades de sfmbolos cambiantes, la adaptacion del codigo de Huffman y sus tablas de VLC correspondientes es bastante exigente, tanto en terminos de complejidad algontmica como en terminos de costes de implementacion. Tambien, en el caso de tener un valor de alfabeto dominante con pk > 0,5, la redundancia del codigo de Huffman correspondiente (sin el uso de ninguna extension de alfabeto tal como codificacion de tirada) puede ser bastante sustancial. Otros inconvenientes de los codigos de Huffman vienen dados por el hecho de que en caso de tratar con modelizados de probabilidad de orden mas alto, pueden requerirse multiples conjuntos de tablas de VLC. La codificacion aritmetica, por otro lado, aunque es sustancialmente mas compleja que la VLC, ofrece la ventaja de un manejo mas consistente y adecuado cuando se trata con modelizados de probabilidad adaptativos y de orden mas alto asf como con el caso de distribuciones de probabilidad altamente sesgadas. Realmente, esta caractenstica basicamente es el resultado del hecho de que la codificacion aritmetica proporciona un mecanismo, al menos conceptualmente, para mapear cualquier valor dado de probabilidad estimado en una forma mas o menos directa a una parte de la palabra de codigo resultante. Provista con una interfaz de ese tipo, la codificacion aritmetica permite una separacion limpia entre las tareas de modelizado de probabilidad y estimacion de probabilidad, por un lado, y la codificacion entropica real, es decir, mapeados de unos sfmbolos a palabras de codigo, por otro lado.
Una alternativa a la codificacion aritmetica y a la codificacion VLC es la codificacion PIPE. Para ser mas preciso, en la codificacion PIPE, el intervalo unitario se particiona en un pequeno conjunto de intervalos de probabilidad disjuntos para canalizar el proceso de codificacion junto con las estimaciones de probabilidad de variables de sfmbolos aleatorios. De acuerdo con esta particion, una secuencia de entrada de sfmbolos fuente discretos con tamanos de alfabeto arbitrarios puede mapearse a una secuencia de sfmbolos de alfabeto y cada uno de los sfmbolos de alfabeto se asigna a un intervalo de probabilidad particular que se codifica, a su vez, mediante un proceso de codificacion entropico especialmente dedicado. Estando representado cada uno de los intervalos por una probabilidad fija, el proceso de codificacion de entropfa de probabilidad intervalo de particion (PIPE, del ingles “Probability Interval Partitioning Entropy”) puede basarse en el diseno y aplicacion de codigos de longitud simples de variable a variable. El modelizado de probabilidad puede ser fijo o adaptativo. Sin embargo, aunque la codificacion PIPE es significativamente menos compleja que la codificacion aritmetica, tiene aun una complejidad mas alta que la codificacion VLC.
Por lo tanto, sena favorable tener disponible un esquema de codificacion entropico que permita conseguir un compromiso mejor entre la complejidad de codificacion por un lado y la eficiencia de compresion por otro lado, incluso cuando se compara con la codificacion PIPE que ya combina las ventajas tanto de la codificacion aritmetica como de la codificacion VLC.
El documento WO 2008/129021 A2 se refiere a la compresion escalable de secuencias de entramado en 3D consistentes en el tiempo. En relacion a la cuantificacion y codificacion entropica, el documento describe que los errores de prevision de los vectores del entramado se comprimen componente a componente. En particular, los
2
5
10
15
20
25
30
35
40
45
50
55
60
componentes se mapean a la cantidad de numeros enteros, es decir con signo, y se usa un maximo para la cantidad, es decir imax, para definir un intervalo dentro de la cantidad de numeros enteros para los que los componentes que caen dentro de este intervalo son codificados entropicamente. La cantidad residual, es decir la distancia al extremo mas proximo del intervalo, se codifica usando codigos Golomb.
Adicionalmente, en general, sena favorable tener disponible un esquema de codificacion entropico que permita conseguir una mejor eficiencia de compresion per se, con una complejidad de codificacion moderada.
Es un objeto de la presente invencion proporcionar un concepto de codificacion entropico que satisfaga la demanda anteriormente identificada, es decir permita conseguir un mejor compromiso entre la complejidad de codificacion por un lado y la eficiencia de compresion por otro lado.
Este objeto se consigue por la materia objeto de las reivindicaciones independientes.
La presente invencion se basa en la idea de la descomposicion de un intervalo de valores de los elementos de sintaxis respectivos en una secuencia de n particiones con codificacion de los componentes de los z valores del elemento de sintaxis que caen dentro de las particiones respectivas por separado con al menos una por codificacion VLC y con al menos una por codificacion aritmetica. En consecuencia, de acuerdo con las realizaciones de la presente invencion, los elementos de sintaxis se descomponen en un numero respectivo de n sfmbolos fuente si, siendo i=1... n, dependiendo el numero n respectivo de sfmbolos fuente de en cual de una secuencia de n particiones (140i-3) dentro de la que se subdivide un intervalo de valores de los elementos de sintaxis respectivos, cae dentro un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del numero respectivo de sfmbolos fuente si conduce a z, y, si n>1, para todo i=1... n-1, el valor de si corresponde a un intervalo de la particion i-esima.
Aspectos preferidos de la presente invencion son el objeto de las reivindicaciones dependientes adjuntas.
Se describen a continuacion realizaciones preferidas de la presente invencion con respecto a las figuras. Esta realizacion representa ejemplos, en la medida en que no usan codificacion aritmetica proxima a la codificacion VLC. Entre las figuras,
La Fig. 1a La Fig. 1b
La Fig. 1c
La Fig. 2a La Fig. 2b
La Fig. 3
La Fig. 4
La Fig. 5 La Fig. 6
muestra un diagrama de bloques de un aparato de codificacion entropica;
muestra un diagrama esquematico que ilustra una descomposicion posible de elementos de sintaxis en sfmbolos fuente;
muestra un diagrama de flujo que ilustra un modo posible de funcionamiento del descomponedor de la Fig. 1a en la descomposicion de elementos de sintaxis en sfmbolos fuente;
muestra un diagrama de bloques de un aparato de decodificacion entropica;
muestra un diagrama de flujo que ilustra un modo posible de funcionamiento del componedor de la Fig. 2a en la composicion de elementos de sintaxis a partir de sfmbolos fuente;
muestra un diagrama de bloques de un codificador PIPE de acuerdo con una realizacion de comparacion que puede usarse en la Fig. 1;
muestra un diagrama de bloques de un decodificador PIPE adecuado para la decodificacion de un flujo de bits generado por el codificador PIPE de la Fig. 3, de acuerdo con una realizacion de comparacion, que puede usarse en la Fig. 2;
muestra un diagrama esquematico que ilustra un paquete de datos con flujos de bits parciales multiplexados;
muestra un diagrama esquematico que ilustra un paquete de datos con una segmentacion alternativa usando segmentos de tamano fijo;
La Fig. 7
muestra un diagrama de bloques de un codificador PIPE que usa intercalado de flujos de bits parcial;
La Fig. 8 muestra ejemplos de ilustracion esquematica para el estado de una memoria intermedia de palabras de codigo en el lado del codificador de la Fig. 7;
La Fig. 9 muestra un diagrama de bloques de un decodificador PIPE que usa un intercalado de flujos de bits parcial;
5
10
15
20
25
30
35
40
45
50
55
60
La Fig. 10 La Fig. 11 La Fig. 12 La Fig. 13 La Fig. 14 La Fig. 15 La Fig. 16 La Fig. 17
La Fig. 18
La Fig. 19
La Fig. 20 La Fig. 21 La Fig. 22 La Fig. 23
La Fig. 24
muestra un diagrama de bloques de un decodificador PIPE que usa un intercalado de palabras de codigo usando un conjunto simple de palabras de codigo;
muestra un diagrama de bloques de un codificador PIPE que usa intercalado de secuencias de bits de longitud fija;
muestra un esquema que ilustra ejemplos para el estado de una memoria intermedia de bits global en el lado del codificador de la Fig. 11;
muestra un diagrama de bloques de un decodificador PIPE que usa intercalado de secuencias de bits de longitud fija;
muestra un grafico para la ilustracion de un intervalo de probabilidad optimo esquematizado en K = 4 intervalos suponiendo una distribucion de probabilidad uniforme en (0, 0,5];
muestra un diagrama esquematico que ilustra un arbol de eventos binarios para una probabilidad LPB de P = 0,38 y un codigo de longitud variable asociado obtenido mediante el algoritmo de Huffman;
muestra un grafico a partir del que pueden recogerse el incremento relativo en la tasa de bits p(p, C) para codigos C optimos dado un numero maximo de entradas de tabla Lm;
muestra un grafico que ilustra el incremento de la tasa para la particion del intervalo de probabilidad teoricamente optimo en K = 12 intervalos y un diseno real con v2v codigos con un numero maximo de entradas de tabla Lm = 65;
muestra un diagrama esquematico que ilustra un ejemplo para la conversion de un arbol de eleccion ternario en un arbol de eleccion binario completo;
muestra un diagrama de bloques de un sistema que comprende un codificador (parte izquierda) y decodificador (parte derecha);
muestra un diagrama de bloques de un aparato de codificacion entropica;
muestra un diagrama de bloques de un aparato de decodificacion entropica;
muestra un diagrama de bloques de un aparato de codificacion entropica;
muestra un diagrama esquematico que ilustra ejemplos del estado de una memoria intermedia de bits
global en el lado del codificador de la Fig. 22;
muestra un diagrama de bloques de un aparato de decodificacion entropica.
Antes de que se describan varias realizaciones de la presente solicitud en lo que sigue con respeto a las figuras, se observa que se usan iguales signos de referencia a todo lo largo de las figuras para indicar elementos iguales o equivalentes en estas figuras, y la descripcion de estos elementos presentada el cualquiera de las figuras previas puede aplicarse tambien a cualquiera de las figuras siguientes siempre que la descripcion previa no entre en conflicto con la descripcion de las figuras actuales.
La Fig. 1a muestra un aparato de codificacion entropica. El aparato comprende un subdivisor 100, un codificador VLC 102 y un codificador PIPE 104.
El subdivisor 100 se configura para subdividir una secuencia de sfmbolos fuente 106 en una primera subsecuencia 108 de sfmbolos fuente y una segunda subsecuencia 110 de sfmbolos fuente. El codificador VLC 102 tiene una entrada del mismo conectada a una primera salida del subdivisor 100 y se configura para convertir acertadamente con relacion a sfmbolos, los sfmbolos fuente de la primera subsecuencia 108 en palabras de codigo que forman un primer flujo de bits 112. El codificador VLC 102 puede comprender una tabla de busqueda y usar, individualmente, los sfmbolos fuente como un mdice para la busqueda, por sfmbolo fuente, de una palabra de codigo respectiva en la tabla de busqueda. El codificador VLC produce la ultima palabra de codigo, y prosigue con el siguiente sfmbolo fuente en la subsecuencia 110 para producir una secuencia de palabras de codigo en la que cada palabra de codigo se asocia con exactamente uno de los sfmbolos fuente dentro de la subsecuencia 110. Las palabras de codigo pueden tener longitudes diferentes y pueden definirse de modo que ninguna palabra de codigo forme un prefijo con cualquiera de las otras palabras de codigo. Adicionalmente, la tabla de busqueda puede ser estatica.
5
10
15
20
25
30
35
40
45
50
55
60
El codificador PIPE 104 tiene una entrada del mismo conectada a una segunda salida del subdivisor 100 y se configura para codificar la segunda subsecuencia 110 de sfmbolos fuente, representados en la forma de una secuencia de sfmbolos de alfabeto, y comprende un asignador 114 configurado para asignar una medida para una estimacion de una distribucion de probabilidad entre valores posibles que pueden asumir los sfmbolos de alfabeto respectivos, a cada sfmbolo de alfabeto de la secuencia de sfmbolos de alfabeto basandose en la informacion contenida dentro de los sfmbolos de alfabeto previos de la secuencia de sfmbolos de alfabeto, una pluralidad de codificadores entropicos 116 cada uno de los cuales se configura para convertir los sfmbolos de alfabeto dirigidos al codificador entropico respectivo en un segundo flujo de bits 118 respectivo, y un selector 120 configurado para dirigir cada sfmbolo de alfabeto de la segunda subsecuencia 110 a uno seleccionado de la pluralidad de codificadores entropicos 116, dependiendo la seleccion de la medicion mencionada anteriormente para la estimacion de la distribucion de probabilidad asignada al sfmbolo de alfabeto respectivo. La asociacion entre sfmbolos fuente y sfmbolos de alfabeto puede ser tal que cada sfmbolo de alfabeto se asocie unicamente con exactamente un sfmbolo fuente de la subsecuencia 110 para representar, posiblemente junto con sfmbolos de alfabeto adicionales de la secuencia de sfmbolos de alfabeto que pueden seguirse inmediatamente entre sf, este sfmbolo fuente.
Como se describe mas en detalle a continuacion, la secuencia 106 de sfmbolos fuente puede ser una secuencia de elementos de sintaxis de un flujo de bits que puede analizarse. El flujo de bits que puede analizarse puede, por ejemplo, representar contenido de video y/o audio en una forma escalable o no escalable representando los elementos de sintaxis, por ejemplo, niveles del coeficiente de transformada, vectores de movimiento, indices de referencia de imagen en movimiento, factores de escala, valores de energfa de la envolvente de audio o similares. Los elementos de sintaxis pueden, en particular, ser de tipo o categona diferente siendo los elementos de sintaxis del mismo tipo, por ejemplo, teniendo el mismo significado dentro del flujo de bits que puede analizarse pero con respecto a diferentes partes del mismo, tal como diferentes imagenes, diferentes macrobloques, diferentes componentes espectrales o similares, mientras que los elementos de sintaxis de tipo diferente pueden tener un significado diferente dentro del flujo de bits, tal como un vector de movimiento tiene un significado diferente que un elemento de sintaxis que represente un nivel de coeficiente de transformada que represente la prediccion de movimiento residual.
El subdivisor 100 puede configurarse para realizar la subdivision dependiendo del tipo de elementos de sintaxis. Esto es, el subdivisor 100 puede enviar elementos de sintaxis de un primer grupo de tipos a la primera subsecuencia 108 y enviar elementos de sintaxis de un segundo grupo de tipos distintos del primer grupo, a la segunda subsecuencia 110. La subdivision realizada por el subdivisor 100 puede disenarse de modo que las estadfsticas de sfmbolos de los elementos de sintaxis dentro de la subsecuencia 108 sea adecuada para ser codificada por VLC por el codificador VLC 102, es decir resulte en casi una minima entropfa posible a pesar del uso de la codificacion VLC y su restriccion con relacion a su adecuacion para ciertas estadfsticas de sfmbolo tal como se describe en la parte introductoria de la memoria de la presente solicitud. Por otro lado, el subdivisor 100 puede enviar todos los otros elementos de sintaxis en la segunda subsecuencia 110 de modo que estos elementos de sintaxis que tienen estadfsticas de sfmbolos que no son adecuadas para la codificacion VLC, se codifican mediante un codificador PIPE 104 mas complejo, pero mas eficiente —en terminos de la relacion de compresion—.
Como es tambien el caso con mayor detalle con respecto a las figuras siguientes, el codificador PIPE 104 puede comprender un simbolizador 122 configurado para mapear individualmente cada elemento de sintaxis de la segunda subsecuencia 110 en una secuencia parcial respectiva de sfmbolos de alfabeto, junto con la formacion de la secuencia 124 anteriormente mencionada de sfmbolos de alfabeto. En otras palabras, el simbolizador 122 puede no estar presente si, por ejemplo, el sfmbolo fuente de la subsecuencia 110 esta representado como secuencias parciales respectivas de sfmbolos de alfabeto. El simbolizador 122 es, por ejemplo, ventajoso en caso de que los sfmbolos fuente dentro de la subsecuencia 110 sean de diferentes alfabetos, y especialmente, alfabetos que tengan diferentes numeros de sfmbolos de alfabeto posibles. Concretamente, en este caso, el simbolizador 122 es capaz de armonizar los alfabetos de los sfmbolos que llegan dentro del subflujo 110. El simbolizador 122 puede, por ejemplo, realizarse como un binarizador configurado para binarizar los sfmbolos que llegan dentro de la subsecuencia 110.
Como se ha mencionado anteriormente, los elementos de sintaxis pueden ser de tipo diferente. Esto puede ser verdad tambien para los elementos de sintaxis dentro del subflujo 110. El simbolizador 122 puede configurarse entonces para realizar el mapeado individual de los elementos de sintaxis de la subsecuencia 110 usando un esquema de mapeado de simbolizacion, tal como un esquema de binarizacion, diferente para elementos de sintaxis de tipo diferente. Ejemplos para esquemas de binarizacion espedficos se presentan en la descripcion siguiente, tal como un esquema de binarizacion unario, un esquema de binarizacion exp-Golomb de orden 0 u orden 1, por ejemplo, o un esquema de binarizacion unario truncado, un esquema de binarizacion truncado y reordenado exp- Golomb de orden 0 o un esquema de binarizacion no sistematico.
En consecuencia, los codificadores entropicos 116 podnan configurarse para funcionar sobre un alfabeto binario. Finalmente, debena tomarse nota que el simbolizador 122 puede considerarse como parte del codificador PIPE 104 en sf tal como se muestra en la Fig. 1a. Alternativamente, sin embargo, el binarizador puede considerarse como externo al codificador PIPE.
5
10
15
20
25
30
35
40
45
50
55
60
De modo similar a la ultima nota, debena tomarse nota que el asignador 114, aunque se muestra conectado en serie entre el simbolizador 122 y el selector 120, puede considerarse alternativamente como conectado entre una salida del simbolizador 124 y una primera entrada del selector 120, estando conectada una salida del asignador 114 a otra entrada del selector 120 como se describe posteriormente con respecto a la Fig. 3. En efecto, el asignador 114 acompana cada sfmbolo de alfabeto con la medida anteriormente mencionada para una estimacion de la distribucion de probabilidad.
En lo que se refiere a la salida del aparato de codificacion entropica de la Fig. 1a, la misma se compone de un primer flujo de bits 112 producido por el codificador VLC 102 y la pluralidad de segundos flujos de bits 118 producidos por la pluralidad de codificadores entropicos 116. Como se describe adicionalmente a continuacion, todos estos flujos de bits pueden transmitirse en paralelo. Alternativamente, los mismos pueden intercalarse en un flujo de bits 126 comun mediante el uso de un intercalador 128. Las Figs. 22 a 24 muestran ejemplos de un tal intercalado de flujos de bits. Como se muestra adicionalmente en la Fig. 1, el codificador PIPE 104 en sf puede incluir su propio intercalador 130 para intercalar la pluralidad de segundos flujos de bits 118 en un flujo de bits 132 codificado PIPE comun. Las posibilidades para dicho intercalador 130 pueden deducirse de la descripcion de las Figs. 5 a 13. El flujo de bits 132 y el flujo de bits 112 pueden, en una configuracion paralela, representar la salida del aparato de codificacion entropica de la Fig. 1a. Alternativamente, otro intercalador 134 puede intercalar ambos flujos de bits en cuyo caso el intercalador 130 y 134 formanan dos etapas de un intercalador 128 en dos etapas.
Como se ha descrito anteriormente, el subdivisor 100 puede realizar la subdivision en elementos de sintaxis, es decir, los sfmbolos fuente sobre los que opera el subdivisor 100 pueden ser elementos de sintaxis completos, o dicho de otro modo, el subdivisor 100 puede operar en unidades de elementos de sintaxis.
Sin embargo, el aparato de codificacion entropica de la Fig. 1a puede incluir el descomponedor 136 para descomponer elementos de sintaxis dentro de un flujo de bits 138 que puede analizarse individualmente en uno o mas sfmbolos fuente de la secuencia de sfmbolos fuente 106 que entra en el subdivisor 100.
En particular, el descomponedor 136 puede configurarse para convertir la secuencia 138 de elementos de sintaxis en la secuencia 106 de sfmbolos fuente mediante la descomposicion individualmente de cada elemento de sintaxis en un numero entero respectivo de sfmbolos fuente. El numero entero puede variar entre los elementos de sintaxis. En particular, alguno de los elementos de sintaxis puede incluso dejarse sin cambiar por el descomponedor 136, mientras que otros elementos de sintaxis se descomponen exactamente en dos, o al menos dos, sfmbolos fuente. El subdivisor 100 puede configurarse para enviar uno de los sfmbolos fuente de dichos elementos de sintaxis descompuestos a la primera subsecuencia 108 de los sfmbolos fuente y otro de los sfmbolos fuente del mismo elemento de sintaxis descompuesto a la segunda subsecuencia 110 de sfmbolos fuente. Como se ha mencionado anteriormente, los elementos de sintaxis dentro del flujo de bits 138 pueden ser de tipo diferente, y el descomponedor 136 puede configurarse para realizar la descomposicion individual dependiendo del tipo del elemento de sintaxis. El descomponedor 136 realiza preferentemente la descomposicion individual de los elementos de sintaxis de modo que existe un mapeado inverso unico predeterminado usado posteriormente en el lado de la decodificacion, desde el numero entero de sfmbolos fuente al elemento de sintaxis respectivo, comun para todos los elementos de sintaxis.
Por ejemplo, el descomponedor 136 puede configurarse para descomponer elementos de sintaxis z en el flujo de bits 138 que puede analizarse, en dos sfmbolos fuente x e y de modo que z = x + y, z = x - y, z = x ■ y o z = x : y. Con esta medida, el subdivisor 100 puede descomponer los elementos de sintaxis en dos componentes, concretamente sfmbolos fuente del flujo de sfmbolos fuente 106, uno de los cuales es adecuado para ser codificado por VLC en terminos de eficiencia de compresion, tal como x, y el otro de los cuales no es adecuado para la codificacion por VLC y se pasa, por lo tanto, al segundo subflujo 110 en lugar de al primer subflujo 108, tal como y. La descomposicion usada por el descomponedor 136 no necesita ser biyectiva. Sin embargo, como se ha mencionado anteriormente existina un mapeado inverso que permita una recuperacion unica de los elementos de sintaxis de las posibles descomposiciones entre las que el descomponedor 136 puede elegir si la descomposicion no es biyectiva.
Hasta ahora, se han descrito diferentes posibilidades para el manejo de diferentes elementos de sintaxis. Si dichos elementos de sintaxis o casos existen, es opcional. La descripcion adicional, sin embargo, se concentra en elementos de sintaxis que se descomponen por el descomponedor 136 de acuerdo con el siguiente principio.
Como se muestra en la Fig. 1b, el descomponedor 136 se configura para descomponer ciertos elementos de sintaxis z en el flujos de bits 138 que puede analizarse en etapas. Pueden existir dos o mas etapas. Las etapas son para la division del intervalo de valores de los elementos de sintaxis z en dos o mas subintervalos adyacentes o subrangos tal como se muestra en la Fig. 1c. El rango de valores del elemento de sintaxis puede tener dos puntos extremos infinitos, meramente uno o puede tener puntos extremos definidos. En la Fig. 1c, el rango de valores del elemento de sintaxis se subdivide ejemplarmente en tres particiones 1401-3. Tal como se muestra en la Fig. 1b, si el elemento de sintaxis es mayor que o igual que la delimitacion 142 de la primera particion 1401, es decir el lfmite superior de
5
10
15
20
25
30
35
40
45
50
55
60
separacion de particiones 140i y 1402, entonces el elemento de sintaxis se resta de la delimitacion Ifmitel de la primera particion 1401 y z se comprueba de nuevo para comprobar si el mismo es incluso mayor o igual que la delimitacion 144 de la segunda particion 1402, es decir el lfmite superior que separa las particiones 1402 y 1403. Si z' es mayor que o igual que la delimitacion 144, entonces z' se resta la delimitacion lfmite2 de la segunda particion 1402 dando como resultado z''. En el primer caso en el que z es mas pequeno que lfmite1, el elemento de sintaxis z se envfa al subdivisor 100 tal cual, en caso de que z este entre lfmite1 y lfmite2, el elemento de sintaxis z se envfa al subdivisor 100 en una dupla (lfmite1, z') siendo z=lfmite1 + z', y en caso de que z este por encima de lfmite2, el elemento de sintaxis z se envfa al subdivisor 100 como un triplete (lfmite1, Kmite2-Kmite1, z') siendo z = lfmite1 + lfmite2 + z'. El primer (o unico) componente, es decir z o lfmite1, forma un primer sfmbolo fuente a ser codificado por el subdivisor 100, el segundo componente, es decir z' o lfmite2 - lfmite1, forman un segundo sfmbolo fuente a ser codificado por el subdivisor 100, si esta presente, y el tercer componente, es decir z'', forma un tercer sfmbolo fuente a ser codificado por el subdivisor 100, si esta presente. Por ello, de acuerdo con la Fig. 1b y 1c, el elemento de sintaxis se mapea a cualquiera de 1 a 3 sfmbolos fuente, pero las generalizaciones sobre un numero maximo menor o mayor de sfmbolos fuente es facilmente deducible de la descripcion anterior, y dichas alternativas tambien se describiran en lo que sigue.
En cualquier caso, todos estos diferentes componentes o sfmbolos fuente resultantes estan de acuerdo con las realizaciones a continuacion, codificadas con codificacion entre las alternativas. Al menos una de ellas se envfa por el subdivisor al codificador PIPE 104, y al menos otra de las mismas se envfa al codificador VLC 102.
Se describen con mas detalle a continuacion realizaciones ventajosas particulares.
Despues de haber descrito anteriormente un aparato de codificacion entropica, se describe con respecto a la Fig. 2a un aparato de decodificacion entropica. El aparato de decodificacion entropica de la Fig. 2a comprende un decodificador VLC 200 y un decodificador PIPE 202. El decodificador VLC 200 se configura para reconstruir acertadamente con relacion a codigo los sfmbolos fuente de una primera subsecuencia 204 de palabras de codigo de un primer flujo de bits 206. El primer flujo de bits 206 es igual al flujo de bits 112 de la Fig. 1, y lo mismo se aplica a la subsecuencia 204 en lo que se refiere a la subsecuencia 108 de la Fig. 1a. El decodificador PIPE 202 se configura para reconstruir una segunda subsecuencia 208 de sfmbolos fuente, representados en la forma de una secuencia de sfmbolos de alfabeto, que comprende una pluralidad de decodificadores entropicos 210, un asignador 212 y un selector 214. La pluralidad de decodificadores entropicos 210 se configura para convertir uno respectivo de los segundos flujos de bits 216 en sfmbolos de alfabeto de la secuencia de sfmbolos de alfabeto. El asignador 212 se configura para asignar una medida de una estimacion de una distribucion de probabilidad entre valores posibles que pueden asumir los sfmbolos de alfabeto respectivos, a cada sfmbolo de alfabeto de la secuencia de sfmbolos de alfabeto que representan la segunda subsecuencia 208 de sfmbolos fuente a ser reconstruidos, basandose en la informacion contenida dentro de los sfmbolos de alfabeto previamente reconstruidos de la secuencia de sfmbolos de alfabeto. Con este fin, el asignador 212 puede conectarse en serie entre una salida del selector 214 y una entrada del mismo, en tanto que entradas adicionales del selector 214 tienen salidas de los decodificadores entropicos 210 respectivamente conectadas al mismo. El selector 214 se configura para recuperar cada sfmbolo de alfabeto de la secuencia de sfmbolos de alfabeto desde uno seleccionado de la pluralidad de decodificadores entropicos 210, dependiendo la seleccion de la medida asignada al sfmbolo de alfabeto respectivo. En otras palabras, el selector 214 junto con el asignador 212 es operativo para recuperar los sfmbolos de alfabeto obtenidos por los decodificadores entropicos 210 en un orden entre los decodificadores entropicos 210 obtenidos mediante la revision de la informacion contenida dentro de sfmbolos de alfabeto previos de la secuencia de sfmbolos de alfabeto. Incluso en otras palabras, el asignador 212 y el selector 214 son capaces de reconstruir el orden original de los sfmbolos de alfabeto de sfmbolo de alfabeto a sfmbolo de alfabeto. Junto con la prediccion del siguiente sfmbolo de alfabeto, el asignador 212 es capaz de determinar la medida anteriormente mencionada de la estimacion de la distribucion de probabilidad para el sfmbolo de alfabeto respectivo mediante el uso del cual el selector 214 selecciona entre los decodificadores entropicos 210 a recuperar el valor actual de su sfmbolo de alfabeto. Para ser incluso mas preciso, y tal como se describira con mas detalle a continuacion, el decodificador PIPE 202 puede configurarse para reconstruir la secuencia 208 de sfmbolos fuente, representada en la forma de la secuencia de sfmbolos de alfabeto, reaccionando a las solicitudes de sfmbolos de alfabeto que solicitan secuencialmente los sfmbolos de alfabeto, y el asignador 212 puede configurarse para asignar cada solicitud de un sfmbolo de alfabeto de la secuencia de sfmbolos de alfabeto que representan la segunda subsecuencia (208) de sfmbolos fuente a ser reconstruidos, la medida anteriormente mencionada de una estimacion de una distribucion de probabilidad entre los valores posibles que pueden asumir los sfmbolos de alfabeto respectivos. En consecuencia, el selector 214 puede configurarse para recuperar, para cada solicitud de un sfmbolo de alfabeto de la secuencia de sfmbolos de alfabeto que representa la segunda subsecuencia (208) de sfmbolos fuente a ser reconstruida, el sfmbolo de alfabeto respectivo de la secuencia de sfmbolos de alfabeto de uno seleccionada de la pluralidad de decodificadores entropicos 210, dependiendo la seleccion de la medida asignada a la solicitud respectiva del sfmbolo de alfabeto respectivo. La concordancia entre solicitudes en el lado de la decodificacion por un lado, y el flujo de datos o codificacion en el lado de la codificacion por otro lado, se describira con mas detalle con respecto a la Fig. 4.
Como la primera subsecuencia 214 de sfmbolos fuente y la segunda subsecuencia 208 de sfmbolos fuente forman
5
10
15
20
25
30
35
40
45
50
55
60
comunmente una secuencia comun 210 de s^bolos fuente, el aparato de decodificacion entropica de la Fig. 2a puede, opcionalmente, comprender un recombinador 220 configurado para recombinar la primera subsecuencia 204 y la segunda subsecuencia 208 para obtener la secuencia comun 218 de sfmbolos fuente. Esta secuencia comun 208 de sfmbolos fuente conduce a una reconstruccion de la secuencia 106 de la Fig. 1a.
De acuerdo con la descripcion presentada anteriormente con respecto a la Fig. 1, los sfmbolos fuente de la primera y segunda subsecuencias 204 y 208 pueden ser elementos de sintaxis de un flujo de bits que puede analizarse. En este caso, el recombinador 220 podna configurarse para reconstruir este flujo de bits que puede analizarse de la secuencia 218 de los elementos de sintaxis mediante el intercalado de los sfmbolos fuente que llegan a traves de la primera y segunda subsecuencias 204 y 208 en un orden preestablecido mediante alguna regla de analisis que define un orden entre los elementos de sintaxis. En particular, los elementos de sintaxis pueden ser, como se ha descrito anteriormente, de tipo diferente y el recombinador 220 puede configurarse para recuperar o solicitar elementos de sintaxis de un primer grupo de tipos desde el decodificador VLC 200 a traves del subflujo 204, y elementos de sintaxis de un segundo tipo desde el decodificador PIPE 202 a traves del subflujo 208. En consecuencia, siempre que la regla de analisis recien mencionada indique que un elemento de sintaxis de un tipo dentro del primer grupo es el siguiente en lrnea, el recombinador 202 inserta un sfmbolo fuente actual de la subsecuencia 204 en la secuencia comun 218 y en caso contrario de la subsecuencia 208.
De la misma manera, el decodificador PIPE 202 podna incluir un desimbolizador 222 conectado entre la salida del selector 214 y una entrada del recombinador 220. De modo similar a la descripcion anterior con respecto a la Fig. 1, el desimbolizador 222 podna considerarse como externo al decodificador PIPE 202 y podna disponerse incluso detras del recombinador 202, es decir en el lado de salida del recombinador 220, alternativamente. El desimbolizador 222 podna configurarse para volver a mapear, en unidades de secuencias parciales de sfmbolos de alfabeto, la secuencia de sfmbolos de alfabeto 224 producida por el selector 214 en la forma de sfmbolos fuente, es decir elementos de sintaxis de la subsecuencia 208. De modo similar al recombinador 220, el desimbolizador 222 sabe acerca de la construccion de posibles secuencias parciales de sfmbolos de alfabeto. En particular, el desimbolizador 222 puede analizar sfmbolos de alfabeto recientemente recibidos desde el selector 214 para asegurarse de si estos sfmbolos de alfabeto recientemente recibidos conducen a una secuencia parcial valida de sfmbolos de alfabeto asociada con un valor respectivo del elemento de sintaxis respectivo, o si este no es el caso, y que sfmbolo de alfabeto falta a continuacion. En aun otras palabras, el simbolizador 222 sabe, en cualquier momento, si han de recibirse sfmbolos de alfabeto adicionales desde el selector 214 para finalizar la recepcion de un elemento de sintaxis respectivo o no, y en consecuencia, a que elemento de sintaxis pertenece uno respectivo de los sfmbolos de alfabeto producidos por el selector 214. Con este fin, el desimbolizador 222 puede usar un esquema de (des)mapeado del simbolizado que diferencie los elementos de sintaxis de tipo diferente. De modo similar, el asignador 212 sabe acerca de la asociacion de un sfmbolo de alfabeto actual a ser recuperado desde cualquiera de los decodificadores entropicos 210 por el selector 214, a uno respectivo de los elementos de sintaxis y puede fijar la medida anteriormente mencionada de estimacion de una distribucion de probabilidad de este sfmbolo de alfabeto en consecuencia, es decir depende del tipo de elemento de sintaxis asociado. Aun mas, el asignador 212 puede diferenciar entre diferentes sfmbolos de alfabeto que pertenezcan a la misma secuencia parcial de un sfmbolo de alfabeto actual y puede fijar la medida de la estimacion de distribucion de probabilidad de modo diferente para estos sfmbolos de alfabeto. Se describen con mas detalle a continuacion detalles en este sentido. Como se describe en la presente memoria, el asignador 212 puede configurarse para asignar contextos a los sfmbolos de alfabeto. La asignacion puede depender del tipo de elemento de sintaxis y/o de la posicion dentro de la secuencia parcial de los sfmbolos de alfabeto del elemento de sintaxis actual. Tan pronto como el asignador 212 haya asignado un contexto al sfmbolo de alfabeto actual a ser recuperado desde cualquiera de los decodificadores entropicos 210 por el selector 214, el sfmbolo de alfabeto puede tener inherentemente la media de la estimacion de la distribucion de probabilidad asociada con el mismo dado que cada contexto tiene su medida de estimacion asociada con el. Adicionalmente, el contexto —y su medida asociada de estimacion de la distribucion de probabilidad— pueden adaptarse de acuerdo con las estadfsticas actuales de los sfmbolos de alfabeto del contexto respectivo que se han recuperado desde los decodificadores entropicos 210 hasta el momento. Se presentan con mas detalle a continuacion detalles en este sentido.
De modo similar a la explicacion anterior de la Fig. 1, puede ser posible que la correspondencia entre los sfmbolos fuente anteriormente mencionados de las subsecuencias 204 y 208 en elementos de sintaxis no sea una correspondencia uno a uno. Por el contrario, los elementos de sintaxis pueden haberse descompuesto en un numero entero de sfmbolos fuente variando el numero, eventualmente, entre los elementos de sintaxis pero siendo, en cualquier caso, mayor que uno al menos para un elemento de sintaxis. Como se ha hecho notar anteriormente, la descripcion a continuacion se enfoca sobre el manejo de esta clase de elementos de sintaxis, y elementos de sintaxis de otras clases pueden incluso no estar presentes.
Para el manejo de los elementos de sintaxis recien mencionados, el aparato de decodificacion entropica de la Fig. 2a puede comprender un componedor 224 configurado para rehacer la descomposicion realizada por el descomponedor 136 de la Fig. 1 a. En particular, el componedor 224 puede configurarse para componer la secuencia 226 de elementos de sintaxis desde los sfmbolos fuente de la secuencia 218 o, si el recombinador 220 falta,
5
10
15
20
25
30
35
40
45
50
55
60
subsecuencias 204 y 208, mediante la composicion individualmente de cada elemento de sintaxis a partir de un numero entero respectivo de sfmbolos fuente perteneciendo uno de los s^bolos fuente del numero entero de sfmbolos fuente a la primera subsecuencia 204 y perteneciendo otro de los sfmbolos fuente del numero entero de sfmbolos fuente del mismo elemento de sintaxis a la segunda subsecuencia 208. Con esta medida, ciertos elementos de sintaxis pueden haberse descompuesto en el lado del codificador de modo que separen componentes adecuados para la decodificacion VLC de un componente restante que haya de ser pasado a traves de una trayectoria de decodificacion PIPE. De modo similar a la explicacion anterior, el elemento de sintaxis puede ser un tipo diferente y el componedor 224 puede configurarse para realizar la composicion individual dependiendo del tipo de elementos de sintaxis. En particular, el componedor 224 puede configurarse para obtener los elementos de sintaxis respectivos mediante la combinacion logica o matematicamente del numero entero de sfmbolos fuente del elemento de sintaxis respectivo. Por ejemplo, el componedor 224 puede configurarse, para aplicar, a cada elemento de sintaxis, +, -. : o ■ al primer y segundo sfmbolos fuente de un elemento de sintaxis.
Como se ha descrito anteriormente, las realizaciones descritas en el presente documento a continuacion, sin embargo, se concentran sobre elementos de sintaxis que se descomponen por el descomponedor 136 de acuerdo con las Figs. 1b y 1c y las alternativas descritas en relacion a las mismas. La Fig. 2a muestra como puede funcionar el componedor 224 para reconstruir estos elementos de sintaxis a partir de sus sfmbolos fuente 218.
Como se muestra en la Fig. 2b, el componedor 224 se configura para componer dichos elementos de sintaxis z en etapas a partir de los sfmbolos fuente incidentes si a sx, siendo x cualquiera de 1 a 3 en el ejemplo presente. Pueden existir dos o mas etapas. Como se muestra en la Fig. 2b, el componedor 224 fija preliminarmente z como el primer sfmbolo s1 y comprueba si z es igual al primer Ifmite lfmite1. Si no es este el caso, se ha encontrado z. En caso contrario, el componedor 224 anade el siguiente sfmbolo fuente s2 del flujo de sfmbolos fuente 218 a z y comprueba de nuevo si esta z es igual a Ifmite2. Si no, se ha encontrado z. Si no, el componedor 224 anade el siguiente sfmbolo fuente s3 del flujo de sfmbolos fuente 218 a z, para obtener z en su forma final. Generalizaciones sobre un numero maximo mayor o menor de sfmbolos fuente es facilmente deducible de la descripcion anterior, y dichas alternativas tambien se describiran en lo que sigue.
En cualquier caso, todos estos diferentes componentes o sfmbolos fuente o resultantes estan de acuerdo con la descripcion a continuacion, codificados con entre las alternativas de codificacion. Al menos uno de ellos se envfa por el subdivisor al codificador PIPE 104, y al menos otro de los mismos se envfa al codificador VLC 102.
Detalles ventajosos particulares se describen con mas detalle a continuacion. Estos detalles se concentran sobre las posibilidad favorables de dividir el intervalo de valores de los elementos de sintaxis y los esquemas de codificacion VLC y PIPE entropicos que pueden usarse para codificar los sfmbolos fuente.
Adicionalmente, como se ha descrito tambien anteriormente con respecto a la Fig. 1, el aparato decodificador entropico de la Fig. 2a puede configurarse para recibir el primer flujo de bits 206 asf como la pluralidad de segundos flujos de bits 216 por separado o en una forma intercalada por medio de un flujo de bits 228 intercalado. En este ultimo caso, el aparato de decodificacion entropica de la Fig. 2a puede comprender un desintercalador 230 configurado para desintercalar el flujo de bits 228 intercalado para obtener el primer flujo de bits 206 por un lado y la pluralidad de segundos flujos de bits 216 por otro lado. De modo similar a la explicacion anterior de la Fig. 1, el desintercalador 230 puede subdividirse en dos etapas, concretamente un desintercalador 232 para el desintercalado del flujo de bits 228 intercalado en dos partes, concretamente el flujo de bits 206 por un lado y una forma intercalada 234 del segundo flujos de bits 216 por otro lado, y un desintercalador 236 para el desintercalado de este ultimo flujo de bits 234 para obtener los flujos de bits 216 individuales.
Asf, la Fig. 1a y la Fig. 2a mostraron un aparato de codificacion entropica por un lado y un aparato de decodificacion entropica adecuado para la decodificacion del resultado de codificacion obtenido por el aparato de codificacion entropica de la Fig. 1, por otro lado. Detalles con relacion a muchos de los elementos mostrados en la Fig. 1a y la Fig. 2 se describen con mas detalle con relacion a las figuras adicionales. En consecuencia, se hace referencia a estos detalles en la descripcion que sigue y estos detalles deberan considerarse aplicables tambien a la Fig. 1a y la Fig. 2 individualmente, siempre que estos detalles puedan implementarse por separado en los codificadores y decodificadores anteriormente descritos. Meramente con respecto a los intercaladores y desintercaladores 132 y 234, se realiza aqrn una indicacion adicional. En particular, el intercalado de los flujos de bits 112 y 118 puede ser favorable en caso de que los flujos de bits hayan de ser multiplexados en un canal para ser transmitidos. En este caso, puede ser favorable intercalar el flujo de bits VLC 112 por un lado y los flujos de bits de codificacion PIPE 118 por otro lado de modo que obedezcan a ciertas condiciones a ser satisfechas tal como obedecer a algun retardo maximo de decodificacion. Dicho en otras palabras, puede ser necesario que el desplazamiento de tiempo relativo entre los tiempos de los elementos de sintaxis y sfmbolos fuente, respectivamente, sean recuperables en el lado de decodificacion por un lado y el desplazamiento relativo en el tiempo de acuerdo con su posicion en el flujo de bits que puede realizarse por otro lado, no supere un cierto retardo maximo. Se describen a continuacion muchas alternativas para resolver este problema. Una de estas posibilidades implica que los codificadores entropicos 116 sean un tipo de codificador de longitud variable configurado para mapear secuencias de sfmbolos de alfabeto a palabras de codigo, y los decodificadores entropicos 210 hacer el mapeado inverso. Las palabras de codigo del flujo
5
10
15
20
25
30
35
40
45
50
55
60
de bits VLC 112 y los flujos de bits PIPE 118 pueden ser, pero no han de ser, seleccionadas de modo que ninguna palabra de codigo de ninguno de estos flujos de bits sea el prefijo de ninguna palabra de codigo de ninguno de los otros flujos de bits, de modo que los bordes de las palabras de codigo permanecen unicamente determinates en el lado del decodificador. En cualquier caso, el intercalador 128 puede configurarse para reservar y almacenar en memoria intermedia una secuencia de entradas de palabras de codigo para la palabra de codigo dentro del primer flujo de bits 112 y del segundo flujo de bits 118 en un orden secuencial dependiendo de un orden en el que los sfmbolos de alfabeto de la secuencia 124 de sfmbolos de alfabeto enviados por el selector 120 a la pluralidad de codificadores entropicos 116 dan como resultado un inicio de una nueva secuencia de sfmbolos de alfabeto a ser mapeada a una palabra de codigo respectiva en el codificador entropico 116 respectivo y se mapee un nuevo sfmbolo fuente del segundo subflujo 108 por el codificador VLC 102, respectivamente. En otras palabras, el intercalador 128 inserta las palabras de codigo del flujo de bits 112 dentro del flujo de bits 126 comun en el orden de los sfmbolos fuente a partir de los que se han obtenido mediante la codificacion VLC, en su orden dentro del subflujo 108 y la corriente de sfmbolos fuente 106, respectivamente. Las palabras de codigo producidas por los codificadores entropicos 116 se insertan dentro del flujo de bits 126 comun entre las palabras de codigo consecutivas del flujo de bits VLC 112. Debido a la categorizacion de la codificacion PIPE de los sfmbolos de alfabeto por el asignador 114 y selector 120, respectivamente, cada una de las palabras de codigo de los codificadores entropicos 116 tiene sfmbolos de alfabeto de diferentes sfmbolos fuente del subflujo 110 codificado en ella. La posicion de las palabras de codigo de los flujos de bits 118 codificados PIPE dentro del flujo de bits 126 comun entre ellos y con relacion a la palabra de codigo VLC del flujo de bits 112 se determina por el primer sfmbolo de alfabeto codificado en cada palabra de codigo, respectivamente, es decir el mas antiguo en el tiempo. El orden de estos sfmbolos de alfabeto primarios codificados dentro de las palabras de codigo de los flujos de bits 118 en el flujo de los sfmbolos de alfabeto 124 determina al orden de las palabras de codigo de los flujos de bits 118 dentro del flujo de bits 126 comun entre ellos, con relacion a las palabras de codigo VLC del flujo de bits 112 el sfmbolo fuente al cual pertenece este sfmbolo de alfabeto primario codificado dentro de las palabras de codigo del flujo de bits 118, determinan entre que palabras de codigo consecutivas del flujo de bits 112 se posiciona la palabra de codigo respectiva de cualquiera de los flujos de bits 118. En particular, las palabras de codigo VLC consecutivas entre las que se han de posicionar las palabras de codigo respectivas de cualquiera de los flujos de bits 118, son aquellas entre las que el sfmbolo fuente del subflujo 110 se posiciona de acuerdo con el orden original de un flujo de sfmbolos fuente no subdividido 106, al que pertenece el sfmbolo de alfabeto primero respectivo codificado en las palabras de codigo respectiva del flujo de bits 118. El intercalador 128 puede configurarse para eliminar las palabras de codigo introducidas dentro de las entradas de palabras de codigo anteriormente mencionadas en el orden secuencial para obtener el flujo de bits 126 comun de palabras de codigo intercaladas. Como ya se ha descrito anteriormente, los codificadores entropicos 116 pueden configurarse para introducir secuencialmente sus palabras de codigo en las entradas de palabras de codigo reservadas para el codificador entropico 116 respectivo y el selector 120 puede configurarse para enviar los sfmbolos de alfabeto que representan los sfmbolos fuente del segundo subflujo 110 en un orden que mantiene un orden en el que los sfmbolos fuente del primer subflujo 108 y el segundo subflujo 110 se intercalaron dentro de la secuencia 106 de sfmbolos fuente.
Pueden proporcionarse medidas adicionales para hacer frente a situaciones en las que ciertos de los codificadores entropicos 116 se seleccionan tan aleatoriamente que lleva mucho tiempo obtener una palabra de codigo valida dentro de ese codificador entropico 116 raramente usado. Ejemplos de dichas medidas se describen con mas detalle a continuacion. En particular, el intercalador 128 junto con el codificador entropico 116 pueden, en este caso, configurarse para purgar sus sfmbolos de alfabeto recogidos hasta el momento y las palabras de codigo que se han introducido dentro de las entradas de palabras de codigo anteriormente mencionadas, respectivamente, de tal manera que el tiempo del procedimiento de purga puede predecirse o emularse en el lado de decodificacion.
En el lado de decodificacion, el desintercalador 230 pueda actuar en el sentido inverso: siempre que, de acuerdo con el esquema de analisis anteriormente mencionado, el siguiente sfmbolo fuente a ser decodificado, sea un sfmbolo codificado en VLC, una palabra de codigo actual dentro del flujo de bits 228 comun se considera como una palabra de codigo VLC y se envfa dentro del flujo de bits 206 al decodificador VLC 200. Por otro lado, siempre que cualquiera de los sfmbolos de alfabeto que pertenecen a cualquiera de los sfmbolos codificados PIPE del subflujo 208 sea un sfmbolo de alfabeto primario, es decir necesite un nuevo mapeado de una palabra de codigo de uno respectivo de los flujos de bits 216 a una secuencia de sfmbolos de alfabeto respectiva por el decodificador entropico 210 respectivo, la palabra de codigo actual del flujo de bits 228 comun se considera como una palabra de codigo codificada PIPE y se envfa al decodificador entropico 210 respectivo. La deteccion del siguiente borde de palabra de codigo, es decir la deteccion de la extension de la siguiente palabra de codigo desde el extremo de la palabra de codigo que se acaba de enviar a cualquiera de los decodificadores 200 y 202, respectivamente, hasta su fin dentro del flujo de bits 228 intercalado entrante puede aplazarse, y realizarse bajo el conocimiento de, el decodificador 200 y 202 siendo el receptor dedicado de esta siguiente palabra de codigo de acuerdo con la regla anteriormente descrita: basandose en este conocimiento, el libro de codigos usado por el decodificador receptor es conocido y la palabra de codigo respectiva detectable. Si, por otro lado, los libros de codigos se disenaran de modo que los bordes de la palabra de codigo fueran detectables sin un conocimiento a priori acerca del decodificador receptor entre 200 y 202, entonces la separacion de palabras de codigo serie se realizana en paralelo. En cualquier caso, debido al intercalado, los sfmbolos fuente estan disponibles en el decodificador en una forma entropica
5
10
15
20
25
30
35
40
45
decodificada, es decir como sfmbolos fuente, en su orden correcto con un retardo razonable.
Despues de haber descrito las realizaciones anteriores para un aparato de codificacion entropica y el aparato de decodificacion entropica respectivo, a continuacion se describen mas detalles de los codificadores PIPE y decodificadores PIPE anteriormente mencionados.
Un codificador PIPE se ilustra en la Fig. 3. El mismo puede usarse como codificador PIPE en la Fig. 1a. El codificador PIPE convierte sin perdidas un flujo de sfmbolos fuente 1 en un conjunto de dos o mas flujos de bits 12 parciales. Cada sfmbolo fuente 1 puede asociarse con una categona o tipo entre un conjunto de una o mas categonas o tipos. Como un ejemplo, las categonas pueden especificar el tipo de sfmbolo fuente. En el contexto de la codificacion de video tnbrida, una categona separada puede asociarse con modos de codificacion de macrobloque, modos de codificacion de bloque, indices de imagen de referencia, diferencias del vector de movimiento, indicadores de subdivision, indicadores de bloque codificado, parametros de cuantificacion, niveles de coeficiente de transformacion, etc. En otras areas de aplicacion tales como audio, voz, texto, documentos, o codificacion de datos en general, son posibles diferentes categorizaciones de sfmbolos fuente.
En general, cada sfmbolo fuente puede tomar un valor de un conjunto finito o contable infinito de valores, en donde el conjunto de posibles valores del sfmbolo fuente puede diferir para diferentes categonas de sfmbolos fuente. Para reducir la complejidad del algoritmo de codificacion y decodificacion y para permitir un diseno de codificacion y decodificacion general para diferentes sfmbolos fuente y categonas de sfmbolos fuente, los sfmbolos fuente 1 se convierten en conjuntos ordenados de decisiones binarias y estas decisiones binarias se procesan a continuacion mediante algoritmos de codificacion binaria simples. Por lo tanto, el binarizador 2 mapea de modo biyectivo el valor de cada sfmbolo fuente 1 en una secuencia (o cadena) de bins 3. La secuencia de bins 3 representa un conjunto de decisiones binarias ordenadas. Cada bin 3 o decision binaria puede tomar un valor de un conjunto de dos valores, por ejemplo, uno de los valores 0 y 1. El esquema de binarizacion puede ser diferente para diferentes categonas de sfmbolos fuente. El esquema de binarizacion para una categona de sfmbolos fuente particular puede depender del conjunto de posibles valores del sfmbolo fuente y/u otras propiedades de los sfmbolos fuente para la categona particular. La Tabla 1 ilustra tres ejemplos de esquemas de binarizacion para conjuntos infinitos contables. Los esquemas de binarizacion para conjuntos infinitos contables pueden aplicarse tambien para conjuntos finitos de valores de sfmbolos. En particular para conjuntos finitos grandes de valores de sfmbolos, la ineficiencia (resultante de secuencias de bins no usadas), puede ser despreciable, pero la universalidad de dichos esquemas de binarizacion proporciona una ventaja en terminos de complejidad y requisitos de memoria. Para conjuntos finitos pequenos de valores de sfmbolos, es frecuentemente preferible (en terminos de eficiencia de codificacion) adaptar el esquema de binarizacion al numero de posibles valores de sfmbolos. La Tabla 2 ilustra tres esquemas de binarizacion de ejemplo para conjuntos finitos de 8 valores. Los esquemas de binarizacion para conjuntos finitos pueden deducirse de los esquemas de binarizacion universales para conjuntos infinitos contables mediante la modificacion de algunas secuencias de bins en una forma en que los conjuntos finitos de secuencias de bins representan un codigo libre de redundancias (y potencialmente reordenacion de las secuencias de bins). Como un ejemplo, el esquema de binarizacion unario truncado en la Tabla 2 se creo mediante la modificacion de la secuencia de bins para el sfmbolo fuente 7 de la binarizacion unaria universal (vease la Tabla 1). La binarizacion Exp-Golomb truncada y reordenada de orden 0 en la Tabla 2 se creo mediante la modificacion de la secuencia de bins para el sfmbolo fuente 7 de la binarizacion unaria universal Exp-Golomb de orden 0 (vease Tabla 1) y mediante la reordenacion de las secuencias de bins (la secuencia de bins truncada para el sfmbolo 7 se asigno al sfmbolo 1). Para conjuntos finitos de sfmbolos, es posible tambien usar esquemas de binarizacion no sistematicos / no universales, tal como se ejemplifica en la ultima columna de la Tabla 2.
Tabla 1: Ejemplos de binarizacion para conjuntos infinitos contables (o conjuntos finitos grandes).
Valor del sfmbolo
binarizacion unaria binarizacion Exp-Golomb de orden 0 binarizacion Exp-Golomb de orden 1
0
1 1 10
1
01 010 11
2
001 011 0100
3
0001 0010 0 0101
4
0000 1 0010 1 0110
5
0000 01 0011 0 0111
6
0000 001 0011 1 0010 00
7
0000 0001 0001 000 0010 01
Tabla 2: Ejemplos de binarizacion para conjuntos finitos.
Valor del
binarizacion unaria binarizacion Exp-Golomb de orden 0 truncada binarizacion no
sfmbolo
truncada y reordenada sistematica
0
1 1 000
5
10
15
20
25
30
35
40
45
50
55
Valor del sfmbolo
binarizacion unaria truncada binarizacion Exp-Golomb de orden 0 truncada y reordenada binarizacion no sistematica
1
01 000 001
2
001 010 01
3
0001 011 1000
4
0000 1 0010 0 1001
5
0000 01 0010 1 1010
6
0000 001 0011 0 1011 0
7
0000 000 0011 1 1011 1
Cada bin 3 de la secuencia de bins creada por el binarizador 2 se suministra al interior de un asignador de parametros 4 en orden secuencial. El asignador de parametros asigna un conjunto de uno o mas parametros a cada bin 3 y produce la salida del bin con el conjunto de parametros 5 asociadado. El conjunto de parametros se determina en exactamente la misma forma en el codificador y decodificador. El conjunto de parametros puede consistir en uno o mas de los siguientes parametros:
- una medida de una estimacion de la probabilidad de uno de los dos posibles valores de bin para el bin actual,
- una medida de la estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin
actual,
- un identificador que especifica una estimacion de cual de los dos posibles valores de bin representa el valor de bin mas probable o menos probable para el bin actual,
- la categona del sfmbolo fuente asociado,
- una medida de la importancia del sfmbolo fuente asociado,
- una medida de la localizacion del sfmbolo asociado (por ejemplo, en conjuntos de datos temporales, espaciales o volumetricos),
- un identificador que especifica la proteccion del codigo de canal para el bin o el sfmbolo fuente asociado,
- un identificador que especifica el esquema de cifrado para el bin o el sfmbolo fuente asociado,
- un identificador que especifica una clase para el sfmbolo asociado,
- el numero de bin en la secuencia de bins para el sfmbolo fuente asociado.
El asignador de parametros 4 puede asociar cada bin 3, 5 con una medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin para el bin actual. El asignador de parametros 4 asocia cada bin 3, 5 con una medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin actual y un identificador que especifica la estimacion de cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable para el bin actual. Debena tomarse nota de que la probabilidad para el valor de bin menos probable o mas probable y el indicador que especifica cual de los dos valores de bin posibles representa el valor de bin menos probable o mas probable son medidas equivalentes de la probabilidad de uno de los dos valores de bin posibles.
El asignador de parametros 4 puede asociar cada bin 3, 5 con una medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin para el bin actual y uno o mas parametros adicionales (que pueden ser uno o mas de los parametros listados anteriormente). Adicionalmente, el asignador de parametros 4 puede asociar cada bin 3, 5 con una medida de la estimacion de la probabilidad del valor de bin menos probable o mas probable para el bin actual, un identificador que especifica la estimacion para cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable para el bin actual, y uno o mas parametros adicionales (que pueden ser uno o mas de los parametros listados anteriormente).
El asignador de parametros 4 puede determinar una o mas de las medidas de probabilidad mencionadas anteriormente (medida de una estimacion de la probabilidad de uno o mas valores de bin posibles para el bin actual, medida de la estimacion de la probabilidad del valor de bin menos probable o mas probable para el bin actual, identificador que especifica la estimacion de cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable para el bin actual) basandose en un conjunto de uno o mas sfmbolos ya codificados. Los sfmbolos codificados que se usan para determinar las medidas de probabilidad pueden incluir uno o mas sfmbolos ya codificados de la misma categona de sfmbolos, uno o mas sfmbolos ya codificados de la misma categona de sfmbolos que corresponden al conjunto de datos (tales como bloques o grupos de muestras) de localizaciones espaciales y/o temporales (en relacion al conjunto de datos asociado con el sfmbolo fuente actual), o uno o mas sfmbolos ya codificados de diferentes categonas de sfmbolos que corresponden a conjuntos de datos de la misma y/o contiguas localizaciones espaciales y/o temporales (en relacion al conjunto de datos asociado con el sfmbolo fuente actual).
Cada bin con un conjunto asociado de parametros 5 que sale del asignador de parametros 4 se alimenta al interior de un selector 6 de memoria intermedia de bin. El selector 6 de memoria intermedia de bin modifica potencialmente el valor del bin de entrada 5 basandose en el valor del bin de entrada y los parametros asociados 5 y suministra el bin 7 de salida —con un valor potencialmente modificado— a una de dos o mas memorias intermedias de bin 8. La
5
10
15
20
25
30
35
40
45
50
55
60
memoria intermedia de bin 8 a la que se envfa el bin de salida 7 se determina basandose en el valor del bin de entrada 5 y/o el valor de los parametros asociados 5.
El selector 6 de memoria intermedia de bin no puede modificar el valor del bin, es decir el bin de salida 7 tiene siempre el mismo valor que el bin de entrada 5.
El selector 6 de memoria intermedia de bin puede determinar el valor del bin de salida 7 basandose en el valor de bin de entrada 5 y la medida asociada para una estimacion de la probabilidad para uno de los dos valores de bin posibles para el bin actual. El valor del bin de salida 7 puede fijarse igual al valor del bin de entrada 5 si la medida de la probabilidad para uno de los dos valores posibles de bin para el bin actual es menor que (o menor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos posibles valores de bin para el bin actual es mayor que o igual a (o mayor que) un umbral particular, el valor del bin de salida 7 se modifica (es decir, se fija opuesto al valor del bin de entrada). El valor del bin de salida 7 puede fijarse igual al valor del bin de entrada 5 si la medida de la probabilidad para uno de los dos valores de bin posible para el bin actual es mayor que (o mayor que o igual a) un umbral particular; si la medida de la probabilidad de uno de los dos valores de bin posibles para el bin actual es menor que o igual a (o menor que) un umbral particular, el valor del bin de salida 7 se modifica (es decir, se fija opuesto al valor del bin de entrada). El valor del umbral puede corresponder a un valor de 0,5 para la probabilidad estimada de ambos posibles valores de bin.
El selector 6 de memoria intermedia de bin puede determinar el valor del bin de salida 7 basandose en el valor del bin de entrada 5 y el identificador asociado que especifica la estimacion para cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable para el bin actual. El valor de bin de salida 7 puede fijarse igual al valor de bin de entrada 5 si el identificador especifica que el primero de los dos posibles valores de bin representa el valor de bin menos probable (o mas probable) para el bin actual, y el valor de bin de salida 7 se modifica (es decir se fija en oposicion al valor del bin de entrada) si el identificador especifica que el segundo de los dos posibles valores de bin representa el valor de bin menos probable (o mas probable) para el bin actual.
El selector 6 de la memoria intermedia de bin puede determinar la memoria intermedia de bin 8 a la que se envfa el bin de salida 7 basandose en la medida asociada para una estimacion de la probabilidad para uno de los dos posibles valores de bin para el bin actual. El conjunto de valores posibles para la medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin puede ser finita y el selector 6 de memoria intermedia de bin contener una tabla que asocia exactamente una memoria intermedia de bin 8 con cada valor posible para la estimacion de la probabilidad de uno de los dos posibles valores de bin, en el que pueden asociarse diferentes valores para la medida de la estimacion de la probabilidad de uno de los dos posibles valores de bin con la misma memoria intermedia de bin 8. Adicionalmente, el intervalo de posibles valores para la medicion de una estimacion de la probabilidad para uno de los dos posibles valores de bin puede particionarse en un numero de intervalos, el selector 6 de memoria intermedia de bin determina el mdice del intervalo para la medicion actual para una estimacion de la probabilidad para uno de los dos posibles valores de bin, y el selector 6 de la memoria intermedia de bin contiene una tabla que asocia exactamente una memoria intermedia de bin 8 con cada valor posible para el mdice del intervalo, en el que pueden asociarse diferentes valores para el mdice de intervalo con la misma memoria intermedia de bin 8. Los bins de entrada 5 con medidas opuestas para una estimacion de la probabilidad para uno de los dos posibles valores de bin (medicion opuesta a aquella que representa las estimaciones de probabilidad P y 1 - P), pueden suministrarse a la misma memoria intermedia de bin 8. Adicionalmente, la asociacion de la medida para la estimacion de la probabilidad para uno de los dos posibles valores de bin para el bin actual con una memoria intermedia de bin particular se adapta a lo largo del tiempo, por ejemplo para asegurar que los flujos de bits parciales creados tienen similares tasas de bits.
El selector 6 de la memoria intermedia de bin puede determinar la memoria intermedia de bin 8 a la que se envfa el bin de salida 7 basandose en la medida asociada para una estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin actual. El conjunto de valores posibles para la medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable de ser finita y el selector 6 de memoria intermedia de bin contener una tabla que asocia exactamente una memoria intermedia de bin 8 con cada valor posible de la estimacion de la probabilidad para el valor de bin menos probable o mas probable, en el que valores diferentes para la medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable puede asociarse con la misma memoria intermedia de bin 8. Adicionalmente, el rango de posibles valores para la medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable puede particionarse en un numero de intervalos, el selector 6 de memoria intermedia de bin determina el mdice del intervalo para la medicion actual de una estimacion de la probabilidad para el valor de bin menos probable o mas probable, y el selector 6 de la memoria intermedia de bin contiene una tabla que asocia exactamente una memoria intermedia de bin 8 con cada posible valor para el mdice del intervalo, en donde valores diferentes para el mdice del intervalo pueden asociarse con la misma memoria intermedia de bin 8. La asociacion de la medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin actual con una memoria intermedia de bin particular puede adaptarse a lo largo del tiempo, por ejemplo para asegurar que los flujos de bits parciales creados tienen similares tasas de bits.
5
10
15
20
25
30
35
40
45
50
55
60
Cada una de las dos o mas memorias intermedias de bin 8 se conecta con exactamente un codificador de bin 10 y cada codificador de bin se conecta solamente con una memoria intermedia de bin 8. Cada codificador de bin 10 lee bins desde la memoria intermedia de bin 8 asociada y convierte una secuencia de bins 9 en una palabra de codigo 11, que representa una secuencia de bits. La memoria intermedia de bin 8 representa memorias intermedias primero en entrar primero en salir; los bins que se suministran mas tarde (en el orden secuencial) al interior de la memoria intermedia de bin 8 no se codifican antes de los bin que se suministran antes (en orden secuencial) dentro de la memoria intermedia de bin. Las palabras de codigo 11 que salen de un codificador de bin 10 particular se escriben en un flujo de bits 12 parcial particular. El algoritmo de codificacion global convierte los sfmbolos fuente 1 en dos o mas flujos de bits parciales 12, en donde el numero de flujos de bits parciales es igual al numero de memorias intermedias de bin y codificadores de bin. Un codificador de bin 10 puede convertir un numero variable de bins 9 en una palabra de codigo 11 de un numero de bits variable. Una ventaja de la codificacion PIPE descrita anteriormente y a continuacion es que la codificacion de bins puede realizarse en paralelo (por ejemplo, para diferentes grupos de medidas de probabilidad), lo que reduce el tiempo de procesamiento para varias implementaciones.
Otra ventaja de la codificacion PIPE es que la codificacion bin, que se realiza por los codificadores de bin 10, puede disenarse espedficamente para diferentes conjuntos de parametros 5. En particular, la codificacion y decodificacion de bin puede optimizarse (en terminos de eficiencia de codificacion y/o complejidad) para diferentes grupos de probabilidades estimadas. Por otro lado, esto permite una reduccion de la complejidad de codificacion/decodificacion con relacion a los algoritmos de codificacion aritmetica con similar eficiencia de codificacion. Por otro lado, permite una mejora de la eficiencia de codificacion con relacion a los algoritmos de codificacion VLC con complejidad de codificacion/decodificacion similar. Los codificadores de bin 10 pueden implementar diferentes algoritmos de codificacion (es decir mapeado de secuencias de bin en palabras de codigo) para diferentes grupos de medidas para la estimacion de la probabilidad para uno de los dos posibles valores de bin 5 para el bin actual. Los codificadores de bin 10 pueden implementar diferentes algoritmos de codificacion para diferentes grupos de medidas para una estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin actual. Alternativamente, los codificadores de bin 10 pueden implementar diferentes algoritmos de codificacion para diferentes codigos de proteccion de canal. Los codificadores de bin 10 pueden implementar diferentes algoritmos de codificacion para diferentes esquemas de cifrado. Los codificadores de bin 10 pueden implementar diferentes algoritmos de codificacion para diferentes combinaciones de codigos de proteccion de canal y grupos de medidas para una estimacion de la probabilidad para uno de los dos posibles valores de bin 5 para el bin actual. Los codificadores de bin 10 implementan diferentes algoritmos de codificacion para diferentes combinaciones de codigos de proteccion de canal y grupos de medidas para una estimacion de la probabilidad para el valor de bin 5 menos probable o mas probable para el bin actual. Los codificadores de bin 10 pueden implementar diferentes algoritmos de codificacion para diferentes combinaciones de esquemas de cifrado y grupos de medidas para una estimacion de la probabilidad para uno de los dos posibles valores de bin 5 para el bin actual. Los codificadores de bin 10 pueden implementar diferentes algoritmos de codificacion para diferentes combinaciones de esquemas de cifrado y grupos de medidas para una estimacion de la probabilidad para el valor de bin 5 menos probable o mas probable para el bin actual.
Los codificadores de bin 10 —o uno mas de los codificadores de bin— pueden representar motores de codificacion aritmetica binaria. Uno o mas de los codificadores de bin puede representar un motor de codificacion aritmetico binario, en el que el mapeado desde la probabilidad LPS/LPB representativa plps de una memoria intermedia de bin dada a un ancho de intervalo de codigo correspondiente Rlps —es decir, la subdivision de intervalos del estado de intervalos del motor de codificacion aritmetica binaria, que se define por el ancho del intervalo actual R y el desplazamiento del intervalo actual L, que identifica, por ejemplo, la delimitacion inferior del intervalo de codigo— se realiza mediante el uso de una tabla de busqueda. Para cada motor de codificacion aritmetica binaria basado en tabla asociado con una memoria intermedia de bin dada, pueden usarse K valores representativos del ancho de intervalo {Q0, ..., Qk-1} para la representacion de Rlps siendo la eleccion de Ky los valores representativos del ancho de intervalo {Q0, ..., Qk-1} dependientes de la memoria intermedia de bin. Para una eleccion de K > 1, la codificacion aritmetica de un bin puede implicar las subetapas de mapeado del ancho de intervalo actual R a un mdice de cuantificacion q con valores en {0, ..., K-1} y realizando la subdivision de intervalos accediendo al valor del ancho de intervalo parcial Qq correspondiente desde una tabla de busqueda usando q como un mdice. Para una eleccion de K=1, es decir, para el caso en donde solo se da un valor del ancho de intervalo representativo Q0, este valor Q0 puede elegirse como una potencia de dos para permitir la decodificacion de multiples valores de MPS/MPB que entran en la memoria intermedia de bin correspondiente dentro de un ciclo de normalizacion unico. Las palabras de codigo resultantes para cada motor de codificacion aritmetica pueden transmitirse por separado, en paquetes, o almacenarse, o pueden intercalarse con la finalidad de transmision o almacenamiento tal como se describe en el presente documento a continuacion.
Esto es, un motor de codificacion aritmetica binaria 10 podna realizar las siguientes etapas en la codificacion de los bins en su memoria intermedia de bin 8:
1. Recibir valLPS, bins desde la memoria intermedia de bin (recordatorio: el motor de codificacion aritmetica
5
10
15
20
25
30
35
40
45
50
55
60
binaria 10 respectivo considerado aqrn se ha elegido para recibir “bin” (o, en otras palabras, se asocia “bin” con el motor de codificacion aritmetica binaria 10 respectivo) debido a que la estimacion de la distribucion de probabilidad, tal como p_estado[bin], se asocia con ese motor de codificacion aritmetica binaria 10)
2. Cuantificacion de R:
qjndice = Qtab[R>>q]
(o alguna otra forma de cuantificacion)
3. Determinacion de Rlps y R: Rlps = Rtab [q_mdice] (notese que p_estado no se ha mencionado aqrn, dado que se fija para el motor de codificacion de aritmetica binaria 10 considerado, es decir p_estado[codificador], y Rtab ha almacenado en el los valores calculados para p[p_estado[codificador]]Q[q_mdice] R = R - Rlps [esto es, R se preactualiza preliminarmente como si “bin” fuese MpS]
4. Calculo del nuevo intervalo parcial: si (bin = I - valMPS) entonces
L ^ L + R R ^ RLPS
5. Renormalizacion de L y R, escribiendo bits, en el que
q_mdice describe el mdice de un valor de cuantificacion lefdo de Qtab,
p_estado describe el estado actual (fijado por el motor de codificacion de aritmetica binaria 10),
Rlps describe el ancho de intervalo correspondiente al LPS y
valMPS describe el valor del bit que corresponde al MPS.
En consecuencia, un motor de decodificacion aritmetica binaria 22 podna realizar las siguientes etapas en la decodificacion de los bins de salida de la memoria intermedia 20 de bin:
1. Recibir la solicitud de un bin (recordatorio: el motor de decodificacion aritmetica binaria 22 respectivo considerado aqrn se ha elegido para decodificar “bin” (o, en otras palabras, se asocia “bin” con el motor de decodificacion aritmetica binaria 22 respectivo) debido a que la estimacion de la distribucion de probabilidad, tal como p_estado[bin], se asocia con ese motor de decodificacion aritmetica binaria 22)
2. Cuantificacion de R:
q_mdice = Qtab[R>>q]
(o alguna otra forma de cuantificacion)
3. Determinacion de Rlps y R:
Rlps = Rtab [qjndice]
(notese que p_estado no se ha mencionado aqrn, dado que se fija para el motor de decodificacion de aritmetica binaria 22 considerado, es decir p_estado[codificador], y Rtab ha almacenado en el los valores precalculados para p[p_estado[codificador]]Q[q_mdice] R = R - Rlps [esto es, R se preactualiza preliminarmente como si “bin” fuese MPS]
4. Determinacion de bin dependiendo de la posicion del intervalo parcial: si (V > R) entonces
bin ^ 1 - valMPS (bin se decodifica como LPS; el selector 18 de memoria intermedia de bin obtendra el valor de bin real mediante el uso de esta informacion de bin y valMPS)
V ^ V - R R ^ RLPS en caso contrario
bin ^ valMPS (bin se decodifica como MPS; el selector 18 de memoria intermedia de bin obtendra el valor de bin real mediante el uso de esta informacion de bin y valMPS)
5. Renormalizacion de R, leyendo un bit y actualizando V,
en el que
el mdice de un valor de cuantificacion lefdo de Qtab,
el estado actual (fijado por el motor de decodificacion de aritmetica binaria 22), el ancho de intervalo correspondiente al LPS, el valor del bit que corresponde al MPS, y un valor desde el interior del intervalo parcial actual.
q_indice describe
p_estado describe
Rlps describe
valMPS describe
V describe
5
10
15
20
25
30
35
Los codificadores de bin 10 —o uno o mas de los codificadores de bin— puedan representar codificadores entropicos que directamente mapean secuencias de bins de entrada 9 sobre palabras de codigo 10. Dichos mapeados pueden implementarse eficientemente y no requieren un motor de codificacion aritmetica complejo. El mapeado inverso de palabras de codigo sobre secuencias de bins (como se realiza en el decodificador) debena ser unico para garantizar una decodificacion perfecta de la secuencia de entrada, pero al mapeado de las secuencias de bin 9 sobre palabras de codigo 10 no precisa necesariamente ser unico, es decir, es posible que una secuencia particular de bins pueda mapearse sobre mas de una secuencia de palabras de codigo. El mapeado de secuencias de bins de entrada 9 sobre palabras de codigo 10 puede ser tambien biyectiva. Preferentemente, los codificadores de bin 10 —o uno o mas de los codificadores de bin— pueden representar codificadores entropicos que directamente mapean secuencias de longitud variable de bins de entrada 9 sobre palabras de codigo 10 de longitud variable. Las palabras de codigo de salida pueden representar codigos libres de redundancia tal como los codigos Huffman general o codigos Huffman canonicos.
Dos ejemplos de mapeado biyectivo de secuencias de bin a codigos libres de redundancia se ilustran en la Tabla 3. Las palabras de codigo de salida pueden representar codigos redundantes adecuados para deteccion de error y recuperacion de error. Las palabras de codigo de salida pueden representar codigos de cifrado adecuados para el cifrado de los sfmbolos fuente.
Tabla 3: Ejemplos de mapeados entre secuencias de bin y palabras de codigo.
secuencias de bins (el orden del bin es de izquierda a derecha)
palabras de codigo (el orden de bits es de izquierda a derecha)
00000000
1
0000 0001
0000
0000 001
0001
0000 01
0010
00001
0011
0001
0100
001
0101
01
0110
1
0111
secuencias de bins (el orden del bin es de
palabras de codigo (el orden de bits es de izquierda a
izquierda a derecha)
derecha)
000
10
01
11
001
010
11
011
1000 0
0001
1001
0010
1010
0011
1000 1
0000 0
1011
0000 1
Los codificadores de bin 10 —o uno o mas de los codificadores de bin— pueden representar codificadores entropicos que mapean directamente secuencias de longitud variable de bins de entrada 9 en palabras de codigo 10 de longitud fija. Los codificadores de bin 10 —o uno o mas de los codificadores de bin— representan codificadores entropicos que mapean directamente secuencias de longitud fija de bins de entrada 9 en palabras de codigo 10 de longitud variable.
Se ilustra un decodificador PIPE en la Figura 4. El decodificador realiza basicamente las operaciones inversas del codificador de la Fig. 3, de modo que la secuencia de sfmbolos fuente 27 (previamente codificada) se decodifica a partir de un conjunto de dos o mas flujos de bits 24 parciales. El decodificador incluye dos flujos de proceso diferentes: un flujo para las solicitudes de datos, que replica el flujo de datos del codificador, y un flujo de datos que representa la inversa del flujo de datos del codificador. En la ilustracion de la Fig. 4, las flechas discontinuas representan el flujo de solicitud de datos, mientras que las flechas continuas representan el flujo de datos. Los bloques de construccion del decodificador replican basicamente los bloques de construccion del codificador, pero implementan las operaciones inversas.
5
10
15
20
25
30
35
40
45
50
55
60
La decodificacion de un sfmbolo fuente se activa mediante una solicitud de un nuevo sfmbolo fuente 13 decodificado que se envfa al binarizador 14. Cada solicitud de un nuevo sfmbolo fuente 13 decodificado puede asociarse con una categona de un conjunto de una o mas categonas. La categona que se asocia con una solicitud de un sfmbolo fuente es la misma que la categona que se asocio con el sfmbolo fuente correspondiente durante la codificacion.
El binarizador 14 mapea la solicitud de un sfmbolo fuente 13 en una o mas solicitudes para un bin que se envfa al asignador de parametros 16. Como la respuesta final a una solicitud para un bin que se envfa al asignador de parametros 16 por el binarizador 14, el binarizador 14 recibe un bin decodificado 26 desde el selector 18 de memoria intermedia de bin. El binarizador 14 compara la secuencia recibida de los bins decodificados 26 con las secuencias de bins de un esquema de binarizacion particular para el sfmbolo fuente solicitado y, si la secuencia recibida de bins decodificados 26 coincide con la binarizacion de un sfmbolo fuente, el binarizador vada su memoria intermedia de bins y produce la salida de sfmbolos fuente decodificados como respuesta final a la solicitud de un nuevo sfmbolo decodificado. Si la secuencia ya recibida de bins decodificados no coincide con cualquiera de las secuencias de bins del esquema de binarizacion para el sfmbolo fuente solicitado, el binarizador envfa otra solicitud de un bin al asignador de parametros hasta que la secuencia de bins decodificados coincida con una de las secuencias de bins del esquema de binarizacion para el sfmbolo fuente solicitado. Para cada solicitud de un sfmbolo fuente, el decodificador usa el mismo esquema de binarizacion que se uso para la codificacion del sfmbolo fuente correspondiente. El esquema de binarizacion puede ser diferente para diferentes categonas de sfmbolos fuente. El esquema de binarizacion para una categona de sfmbolos fuente particular puede depender del conjunto de posibles valores de sfmbolos fuente y/u otras propiedades de los sfmbolos fuente para la categona particular.
El asignador de parametros asigna un conjunto de uno o mas parametros a cada solicitud de un bin y envfa la solicitud para un bin con el conjunto asociado de parametros al selector de memoria intermedia de bin. El conjunto de parametros que se asignan al bin solicitado por el asignador de parametros es el mismo que se asigno al bin correspondiente durante la codificacion. El conjunto de parametros puede consistir en uno o mas de los parametros que se mencionaron en la descripcion del codificador.
El asignador de parametros 16 puede asociar cada solicitud de un bin con una medida de una estimacion de la probabilidad de uno o mas de los posibles valores de bin para el bin solicitado actual. En particular, el asignador de parametros 16 puede asociar cada solicitud de un bin con una medida de una estimacion de la probabilidad del valor de bin menos probable o mas probable para el bin solicitado actual y un identificador que espedfica la estimacion para cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable para el bin solicitado actual.
El asignador de parametros 16 puede asociar cada solicitud de un bin 15, 17 con una medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin para el bin solicitado actual y uno o mas parametros adicionales. El asignador de parametros 16 puede asociar cada solicitud de un bin 15, 17 con una medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin solicitado actual, un identificador que espedfica la estimacion para cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable para el bin solicitado actual y uno o mas parametros adicionales (que pueden ser uno o mas de los parametros anteriormente listados).
El asignador de parametros 16 puede determinar una o mas de las medidas de probabilidad anteriormente mencionadas (medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin para el bin solicitado actual, medida para una estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin solicitado actual, identificador que espedfica una estimacion para cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable para el bin solicitado actual) basandose en un conjunto de uno o mas sfmbolos ya decodificados. La determinacion de las medidas de probabilidad para una solicitud particular de un bin replica el proceso en el codificador para el bin correspondiente. Los sfmbolos decodificados que se usan para la determinacion de las medidas de probabilidad pueden incluir uno o mas sfmbolos ya decodificados de la misma categona de sfmbolos, uno o mas sfmbolos ya decodificados de la misma categona de sfmbolos que corresponden a conjuntos de datos (tales como bloques o grupos de muestras) de localizaciones vecinas espaciales y/o temporales (en relacion al conjunto de datos asociado con la solicitud actual de un sfmbolo fuente), o uno o mas sfmbolos ya decodificados de diferentes categonas de sfmbolos que corresponden a conjuntos de datos de las mismas y/o vecinas localizaciones espaciales y/o temporales (en relacion al conjunto de datos asociado con la solicitud actual de un sfmbolo fuente).
Cada solicitud de un bin con un conjunto asociado de parametros 17 que es la salida del asignador de parametros 16 se proporciona al interior de un selector 18 de memoria intermedia de bins. Basandose en el conjunto de parametros 17 asociado, el selector 18 de memoria intermedia de bin envfa una solicitud de un bin 19 a una de dos o mas memorias intermedias 20 de bins y recibe un bin decodificado 25 desde la memoria intermedia 20 de bins seleccionada. El bin de entrada 25 decodificado se modifica potencialmente y el bin de salida 26 decodificado — potencialmente con un valor modificado— se envfa al binarizador 14 como respuesta final a la solicitud de un bin con un conjunto de parametros 17 asociado.
5
10
15
20
25
30
35
40
45
50
55
60
La memoria intermedia 20 de bin a la que se envfa la solicitud de un bin se selecciona de la misma manera que la memoria intermedia de bin a la que se envio el bin de salida del selector de memoria intermedia de bin en el lado del codificador.
El selector 18 de memoria intermedia de bin puede determinar la memoria intermedia 20 de bin a la que se envfa la solicitud de un bin 19 basandose en la medida asociada para una estimacion de la probabilidad para uno de los dos posibles valores de bin para el bin solicitado actual. El conjunto de posibles valores para la medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin puede ser finita y el selector 18 de memoria intermedia de bin contener una tabla que asocia exactamente una memoria intermedia de bin 20 con cada posible valor de la estimacion de la probabilidad para uno de los dos posibles valores de bin, en la que diferentes valores de la medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin puede asociarse con la misma memoria intermedia 20 de bin. El rango de valores posibles para la medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin puede particionarse en un numero de intervalos, el selector 18 de memoria intermedia de bin determina el mdice del intervalo para la medida actual de una estimacion de la probabilidad para uno de los dos posibles valores de bin, y el selector 18 de memoria intermedia de bin contiene una tabla que asocia exactamente una memoria intermedia 20 de bin con cada posible valor para el mdice de intervalo, en donde valores diferentes para el mdice de intervalo pueden asociarse con la misma memoria intermedia 20 de bin. Solicitudes para bins 17 con medidas opuestas de una estimacion de la probabilidad para uno de los dos posibles valores de bin (medidas opuestas son aquellas que representan estimaciones de probabilidad P y 1 - P) pueden enviarse a la misma memoria intermedia 20 de bin. Adicionalmente, puede adaptarse a lo largo del tiempo la asociacion de la medida de una estimacion de la probabilidad para uno de los dos posibles valores de bin para la solicitud de bin actual con una memoria intermedia de bin particular.
El selector 18 de memoria intermedia de bin puede determinar la memoria intermedia 20 de bin a la que se envfa la solicitud de un bin 19 basandose en la medida asociada de una estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin solicitado actual. El conjunto de posibles valores para la medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable puede ser finita y el selector 18 de memoria intermedia de bin puede contener una tabla que asocia exactamente una memoria intermedia 20 de bin con cada posible valor de la estimacion de la probabilidad para el valor de bin menos probable o mas probable, en donde pueden asociarse diferentes valores para la medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable con la misma memoria intermedia 20 de bin. El rango de posibles valores para la medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable puede particionarse en un numero de intervalos, el selector 18 de memoria intermedia de bin determina el mdice del intervalo para la medida actual de una estimacion de la probabilidad para el valor de bin menos probable o mas probable, y el selector 18 de memoria intermedia de bin contiene una tabla que asocia exactamente una memoria intermedia 20 de bin con cada valor posible para el mdice de intervalo, en donde pueden asociarse diferentes valores para el mdice de intervalo con la misma memoria intermedia 20 de bin. La asociacion de la medida de una estimacion de la probabilidad para el valor de bin menos probable o mas probable para la solicitud de bin actual con una memoria intermedia de bin particular se adapta a lo largo del tiempo.
Despues de recibir un bin decodificado 25 desde la memoria intermedia 20 de bin seleccionada, el selector 18 de memoria intermedia de bin modifica potencialmente el bin de entrada 25 y envfa el bin de salida 26 —con un valor potencialmente modificado— al binarizador 14. El mapeado de entrada/salida de bin del selector 18 de memoria intermedia de bin en el inverso que el mapeado de entrada/salida de bin del selector de memoria intermedia de bin en el lado del codificador.
El selector 18 de memoria intermedia de bin puede configurarse para no modificar el valor del bin, es decir, el bin de salida 26 tiene siempre el mismo valor que el bin de entrada 25.
El selector 18 de memoria intermedia de bin puede determinar el valor del bin de salida 26 basandose en el valor del bin de entrada 25 y la medida de una estimacion de la probabilidad para uno de los dos valores de bin posibles para el bin solicitado actual que se asocia con la solicitud para un bin 17. El valor del bin de salida 26 puede fijarse igual al valor del bin de entrada 25 si la medida de la probabilidad para uno de los dos valores de bin posibles para la solicitud de bin actual es menor que (o menor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos posibles valores de bin para la solicitud de bin actual es mayor que o igual a (o mayor que) un umbral particular, el valor del bin de salida 26 se modifica (es decir, se fija opuesto al valor del bin de entrada). El valor del bin de salida 26 puede fijarse igual al valor del bin de entrada 25 si la medida de la probabilidad para uno de los dos valores de bin posibles para la solicitud de bin actual es mayor que (o mayor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos posibles valores de bin para la solicitud de bin actual es menor que o igual a (o menor que) un umbral particular, el valor del bin de salida 26 se modifica (es decir, se fija en oposicion al valor del bin de entrada). El valor del umbral puede corresponder a un valor de 0,5 para la probabilidad estimada para ambos posibles valores de bin.
5
10
15
20
25
30
35
40
45
50
55
60
El selector 18 de memoria intermedia de bin puede determinar el valor del bin de salida 26 basandose en el valor del bin de entrada 25 y el identificador, que espedfica la estimacion de cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable para la solicitud de bin actual, que se asocia con la solicitud de un bin 17. El valor del bin de salida 26 puede fijarse igual al valor de bin de entrada 25 si el identificador espedfica que el primero de dos posibles valores de bin representa el valor de bin menos probable (o mas probable) para la solicitud de bin actual, y el valor de bin de salida 26 se modifica (es decir, se fija opuesto al valor del bin de entrada) si el identificador espedfica que el segundo de los dos valores de bin posibles representa el valor de bin menos probable (o mas probable) para la solicitud de bin actual.
Como se ha descrito anteriormente, el selector de memoria intermedia de bin envfa una solicitud un bin 19 a una de las dos o mas memorias intermedias de bin 20. Las memorias intermedias de bin 20 representan memorias intermedias primero en entrar primero en salir, que se alimentan con secuencias de bin decodificadas 21 desde los decodificadores de bin 22 conectados. Como respuesta a una solicitud de un bin 19 que se envfa a una memoria intermedia 20 de bin desde el selector 18 de memoria intermedia de bin, la memoria intermedia 20 de bin elimina de su contenido el bin que se suministro primero al interior de la memoria intermedia 20 de bin y lo envfa al selector 18 de memoria intermedia de bin. Los bins que se enviaron antes a la memoria intermedia 20 de bin se retiran antes y se envfan al selector 18 de memoria intermedia de bin.
Cada una de las dos o mas memorias intermedias de bin 20 se conecta con exactamente un decodificador de bin 22 y cada decodificador de bin se conecta solamente con una memoria intermedia 20 de bin. Cada decodificador de bin 22 lee palabras de codigo 23, que representan secuencias de bits, desde un flujo de bits 24 parcial separado. El decodificador de bin convierte una palabra de codigo 23 en una secuencia de bins 21 que se envfa a la memoria intermedia 20 de bin conectada. El algoritmo de decodificacion global convierte dos o mas flujos de bits 24 parciales en un numero de sfmbolos fuente decodificados, en donde el numero de flujos de bits parciales es igual al numero de memorias intermedias de bin y decodificadores de bin y la decodificacion de sfmbolos fuente se activa por las solicitudes de nuevos sfmbolos fuente. Un decodificador de bin 22 puede convertir palabras de codigo 23 de un numero variable de bits en una secuencia de un numero variable de bins 21. Una ventaja de la configuracion PIPE anterior es que la decodificacion de bins desde dos o mas flujos de bits parciales puede realizarse en paralelo (por ejemplo, para diferentes grupos de medidas de probabilidad), lo que reduce el tiempo de procesamiento para varias implementaciones.
Otra ventaja de la decodificacion PIPE anterior es que la decodificacion de bin, que se realiza por los decodificadores de bin 22, puede disenarse espedficamente para diferentes conjuntos de parametros 17. En particular, la codificacion y decodificacion de bin puede optimizarse (en terminos de eficiencia de codificacion y/o complejidad) para diferentes grupos de probabilidades estimadas. Por un lado, esto permite una reduccion de la complejidad de codificacion/decodificacion con relacion a los algoritmos de codificacion aritmetica con similar eficiencia de codificacion. Por otro lado, permite una mejora de la eficiencia de codificacion con relacion a los algoritmos de codificacion VLC con complejidad de codificacion/decodificacion similar. Los decodificadores de bin 22 pueden implementar diferentes algoritmos de decodificacion (es decir mapeados de secuencias de bin sobre palabras de codigo) para diferentes grupos de medidas de una estimacion de la probabilidad para uno de los dos posibles valores de bin 17 para la solicitud de bin actual. Los decodificadores de bin 22 pueden implementar diferentes algoritmos de decodificacion para diferentes grupos de medidas de una estimacion de la probabilidad para el valor de bin menos probable o mas probable para el bin solicitado actual. Los decodificadores de bin 22 pueden implementar diferentes algoritmos de decodificacion para diferentes codigos de proteccion de canal. Los decodificadores de bin 22 pueden implementar diferentes algoritmos de decodificacion para diferentes esquemas de cifrado. Los decodificadores de bin 22 pueden implementar diferentes algoritmos de decodificacion para diferentes combinaciones de codigos de proteccion de canal y grupos de medidas de la estimacion de la probabilidad para uno de los dos posibles valores de bin 17 para el bin solicitado actual. Los decodificadores de bin 22 pueden implementar diferentes algoritmos de decodificacion para diferentes combinaciones de codigos de proteccion de canal y grupos de medidas de una estimacion de la probabilidad para el valor de bin 17 menos probable o mas probable para el bin solicitado actual. Los decodificadores de bin 22 pueden implementar diferentes algoritmos de decodificacion para diferentes combinaciones de esquemas de cifrado y grupos de medidas de una estimacion de la probabilidad para uno de los dos posibles valores de bin 17 para el bin solicitado actual. Los decodificadores de bin 22 pueden implementar diferentes algoritmos de decodificacion para diferentes combinaciones de esquemas de cifrado y grupos de medidas de una estimacion de la probabilidad para el valor de bin 17 menos probable o mas probable para el bin solicitado actual.
Los decodificadores de bin 22 realizan el mapeado inverso de los codificadores de bin correspondientes en el lado del codificador.
Los decodificadores de bin 22 —o uno o mas de los decodificadores de bin— pueden representar motores de decodificacion aritmetica binaria.
Los decodificadores de bin 22 —o uno o mas de los decodificadores de bin— pueden representar decodificadores
5
10
15
20
25
30
35
40
45
50
55
60
entropicos que mapean directamente palabras de codigo 23 en secuencias de bins 21. Dichos mapeados pueden implementarse eficientemente y no requieren un motor de codificacion aritmetica complejo. El mapeado de palabras de codigo en secuencias de bin ha de ser unico. El mapeado de palabras de codigo 23 en secuencias de bin 21 puede ser biyectivo. Los decodificadores de bin 10 —o uno o mas de los decodificadores de bin— pueden representar decodificadores entropicos que mapean directamente palabras de codigo 23 de longitud variable en secuencias de bins 21 de longitud variable. Las palabras de codigo de entrada pueden representar codigos libres de redundancia tales como los codigos Huffman generales o los codigos Huffman canonicos. Se ilustran en la Tabla 3 dos ejemplos de mapeado biyectivo de codigos libres de redundancia en secuencias de bins. Las palabras de codigo de entrada pueden representar codigos redundantes adecuados para deteccion de error y recuperacion de error. Las palabras de codigo de entrada pueden representar codigos cifrados.
Los decodificadores de bin 22 —o uno o mas de los decodificadores de bin— pueden representar decodificadores entropicos que mapean directamente palabras de codigo 23 de longitud fija en secuencias de bins 21 de longitud variable. Alternativamente los decodificadores de bin 22 —o uno o mas de los decodificadores de bin— representan decodificadores entropicos que mapean directamente palabras de codigo 23 de longitud variable en secuencias de bins 21 de longitud fija.
Asf, la Fig. 3 y la Fig. 4 muestran un codificador PIPE para la codificacion de una secuencia de sfmbolos fuente 1 y un decodificador PIPE para la reconstruccion de la misma. Esto es, el codificador PIPE de la Fig. 3 puede usarse como el codificador PIPE 104 en la Fig. 1a actuando un binarizador 2 como el simbolizador 122, actuando el asignador de parametros 4 como el asignador 114, actuando el selector de memoria intermedia de bin 6 como el selector 120, y actuando el par de memorias intermedias de bin 8 y el codificador de bin 10 conectados en serie como uno respectivo de los codificadores entropicos 116 cada uno de los cuales produce flujos de bits 12 correspondientes a los flujos de bits 118 en la Fig. 1a. Como queda claro a partir de la comparacion de la Fig. 3 y la Fig. 1, el asignador 114 de la Fig. 1a puede tener sus entradas conectadas alternativamente al lado de entrada del simbolizador 122 en lugar de al lado de salida de este ultimo. De modo similar, el decodificador PIPE de la Fig. 4 puede usarse como el decodificador PIPE 202 de la Fig. 2a correspondiendo los flujos de bits 24 parciales a los flujos de bits 216 en la Fig. 2, correspondiendo los pares de memorias intermedias 20 y decodificador de bin 22 conectados en serie a los decodificadores entropicos 210 individuales, actuando el selector 18 de memoria intermedia de bin como el selector 214, actuando el asignador de parametros 16 como el asignador 212 y actuando el binarizador 14 como el desimbolizador 222. De nuevo, una comparacion entre la Fig. 2a y la Fig. 4 deja claro que la interconexion entre el desimbolizador 222, asignador 212 y selector 214 puede configurarse de modo diferente, de modo que, alternativamente, las conexiones de la Fig. 2a se anaden a las correspondientes mostradas en la Fig. 4.
El codificador PIPE de la Fig. 3 comprende un asignador 4 configurado para asignar un numero de parametros 5 a cada sfmbolo de alfabeto de la secuencia de sfmbolos de alfabeto 3. La asignacion se basa en informacion contenida dentro de los sfmbolos de alfabeto previos de la secuencia de sfmbolos de alfabeto de modo que la categona del elemento de sintaxis 1 a cuya representacion —tal como binarizacion— pertenece el sfmbolo de alfabeto actual y que, de acuerdo con la estructura de sintaxis de los elementos de sintaxis 1, se espera actualmente con expectacion, a su vez, es deducible de la historia de los elementos de sintaxis 1 previos y sfmbolos de alfabeto 3. Adicionalmente, el codificador comprende una pluralidad de codificadores entropicos 10 cada uno de los cuales se configura para convertir los sfmbolos de alfabeto 3 enviados al codificador entropico respectivo en un flujo de bits 12 respectivo, y un selector 6 configurado para enviar cada sfmbolo de alfabeto 3 a uno seleccionado de la pluralidad de codificadores entropicos 10, dependiendo la seleccion del numero de parametros 5 asignado al sfmbolo de alfabeto respectivo 3. El decodificador PIPE de la Fig. 4 comprende una pluralidad de decodificadores entropicos 22, cada uno de los cuales se configura para convertir un flujo de bits 23 respectivo en sfmbolos de alfabeto 21; un asignador 16 configurado para asignar un cierto numero de parametros 17 a cada sfmbolo 15 del alfabeto de una secuencia de sfmbolos de alfabeto a ser reconstruida basandose en informacion contenida dentro de sfmbolos de alfabeto previamente reconstruidos de la secuencia de sfmbolos de alfabeto (vease 26 y 27 en la Fig. 4); y un selector 18 configurado para recuperar cada sfmbolo de alfabeto de la secuencia de sfmbolos de alfabeto a ser reconstruida a partir de uno seleccionado de la pluralidad de decodificadores entropicos 22, dependiendo la seleccion del numero de parametros definidos para el sfmbolo de alfabeto respectivo. El asignador 16 puede configurarse de modo que el numero de parametros asignados a cada sfmbolo de alfabeto comprende, o es, una medida de una estimacion de una probabilidad de distribucion entre los posibles valores de sfmbolos de alfabeto que puede asumir un sfmbolo de alfabeto respectivo. La secuencia de sfmbolos de alfabeto a ser reconstruida puede ser de un alfabeto binario y el asignador 16 puede configurarse de modo que la estimacion de la distribucion de probabilidad consiste en una medicion de una estimacion de una probabilidad de un valor de bin menos probable o mas probable de los dos posibles valores de bin del alfabeto binario y un identificador que espedfica la estimacion de cual de los dos posibles valores de bin representa el valor de bin menos probable o mas probable. El asignador 16 puede configurarse adicionalmente para asignar internamente un contexto a cada sfmbolo de alfabeto de la secuencia de sfmbolos de alfabeto 15 a ser reconstruida basandose en la informacion contenida dentro de los sfmbolos de alfabeto previamente reconstruidos de la secuencia de sfmbolos de alfabeto a ser reconstruida teniendo cada contexto una estimacion de distribucion de probabilidad respectiva asociada con el, y adaptar la estimacion de distribucion de probabilidad para cada contexto a una estadfstica de sfmbolos actuales basandose en valores de sfmbolos de sfmbolos de alfabeto previamente reconstruidos a los que se asigna el contexto respectivo. El contexto
5
10
15
20
25
30
35
40
45
50
55
60
puede tener en cuenta una relacion espacial o vecindad de posiciones a las que los elementos de sintaxis pertenecen tal como en codificacion de video o imagen, o incluso en tablas en caso de aplicaciones financieras. A continuacion, la medicion de la estimacion de la distribucion de probabilidad para cada s^bolo de alfabeto puede determinarse basandose en la estimacion de distribucion de probabilidad asociada con el contexto asignado al sfmbolo de alfabeto respectivo tal como mediante cuantificacion de la estimacion de distribucion de probabilidad asociada con el contexto asignado con el sfmbolo de alfabeto respectivo a uno de una pluralidad de estimaciones de distribucion de probabilidad representativas para obtener la medicion para la estimacion de la distribucion de probabilidad. El selector puede configurarse de modo que se define una asociacion sobreyectiva entre la pluralidad de codificadores entropicos y la pluralidad de estimaciones de distribucion de probabilidades representativas, es decir cada codificador entropico tiene al menos una estimacion de distribucion de probabilidad representativa asociada con el, pero puede asociarse mas de una estimacion de distribucion de probabilidad representativa con un codificador entropico. La asociacion puede ser incluso biyectiva. El selector 18 puede configurarse para cambiar un mapeado de cuantificacion desde un rango en las estimaciones de distribucion de probabilidad a la pluralidad de estimaciones de distribucion de probabilidad representativas en una forma determinista predeterminada dependiendo de sfmbolos de alfabeto previamente reconstruidos de la secuencia de sfmbolos de alfabeto, a lo largo del tiempo. Esto es, el selector 18 puede cambiar los tamanos de la etapa de cuantificacion, es decir los intervalos de distribuciones de probabilidad mapeados en indices de probabilidad individuales que, a su vez, pueden asociarse sobreyectivamente con los decodificadores entropicos individuales. La pluralidad de decodificadores entropicos 22, a su vez, puede configurarse para adaptar su forma de conversion de sfmbolos de alfabeto en flujos de bits en respuesta a un cambio en el mapeado de cuantificacion. Por ejemplo, cada decodificador entropico 22 puede optimizarse para, es decir puede tener una tasa de compresion optima para, una cierta estimacion de distribucion de probabilidad dentro del intervalo de cuantificacion de la estimacion de distribucion de probabilidad, y puede cambiar su mapeado de palabras de codigo/ secuencias de sfmbolos de modo que adapte la posicion de esta cierta estimacion de distribucion de probabilidad dentro del intervalo de cuantificacion de estimacion de distribucion de la probabilidad respectivo tras un cambio de este ultimo, de modo que se optimice. El selector puede configurarse para cambiar el mapeado de cuantificacion de modo que las tasas a las que se recuperan los sfmbolos de alfabeto desde la pluralidad de decodificadores entropicos, se hace menos dispersa. Como con el binarizador 14 se hace notar que el mismo puede suprimirse si los elementos de sintaxis ya son binarios. Adicionalmente, dependiendo del tipo del decodificador 22, la existencia de las memorias intermedias 20 no es necesaria. Adicionalmente, las memorias intermedias pueden integrarse dentro de los decodificadores.
Hasta el momento, se han descrito mas detalles para el codificador PIPE 104 y el decodificador PIPE 202 en las Figs. 1a y 2 anteriores, con respecto a las Figs. 3 y 4, lo que, si se implementa claramente en los aparatos de las Figs. 1a y 2, conduce a una produccion de un flujo de bits paralelo en el que los flujos de bits parciales VLC y PIPE se transmiten en paralelo. En lo que sigue, se describen posibilidades sobre como combinar los flujos de bits parciales PIPE para que se transmitan, a continuacion, junto con flujos de bits VLC en paralelo, o intercalando en segundo lugar ambos flujos de bits, es decir el flujo de bits VLC y el flujo de bits PIPE intercalado.
Finalizacion de secuencias de simbolos fuente finitos
En los codificadores y decodificadores PIPE, la codificacion y decodificacion puede realizarse para un conjunto finito de sfmbolos fuente. Frecuentemente se codifica una cierta cantidad de datos tal como una imagen fija, un cuadro o campo de una secuencia de video, un fragmento de imagen, un fragmento de un cuadro o un campo de una secuencia de video, un conjunto de muestras de audio sucesivas, etc. Para conjuntos finitos de sfmbolos fuente, en general, los flujos de bits parciales que se crean en el lado del codificador han de finalizarse, es decir, ha de asegurarse que todos los sfmbolos fuente pueden decodificarse a partir de los flujos de bits parciales transmitidos o almacenados. Despues de que se inserte el ultimo bin dentro de la memoria intermedia de bin 8 correspondiente, el codificador de bin 10 tiene que asegurar que se escribe una palabra de codigo completa en el flujo de bits 12 parcial. Si el codificador de bin 10 representa un motor de codificacion aritmetico binario, la palabra de codigo aritmetica ha de finalizarse. El codificador de bin 10 representa un codificador entropico que implementa un mapeado directo de secuencias de bin sobre palabras de codigo, la secuencia de bins que se almacena en la memoria intermedia de bin despues de escribir el ultimo bin en la memoria intermedia de bin podna no representar una secuencia de bins que se asocia con una palabra de codigo (es decir, podna representar un prefijo de dos o mas secuencias de bin que se asocian con palabras de codigo). En dicho caso, cualquiera de las palabras de codigo asociadas con una secuencia de bins que contenga una secuencia de bins en la memoria intermedia de bin como prefijo ha de escribirse en el flujo de bits parcial (la memoria intermedia de bin ha de purgarse). Esto podna realizarse mediante la insercion de bins con un valor particular o uno arbitrario dentro de la memoria intermedia de bin hasta que se escriba una palabra de codigo. El codificador de bin puede seleccionar una de las palabras de codigo con longitud minima (ademas de la propiedad de que la secuencia de bin asociada debe contener la secuencia de bins en la memoria intermedia de bin como prefijo). En el lado del decodificador, el decodificador de bin 22 puede decodificar mas bins que los requeridos para la ultima palabra de codigo en un flujo de bits parcial; estos bins no son solicitados por el selector 18 de memoria intermedia de bin y se descartan e ignoran. La decodificacion del conjunto finito de sfmbolos se controla mediante solicitudes de sfmbolos fuente decodificados; si no se solicitan sfmbolos fuente adicionales para la cantidad de datos, la decodificacion se finaliza.
5
10
15
20
25
30
35
40
45
50
55
60
Transmision y multiplexado de flujos de bits parciales
Los flujos de bits 12 parciales que se crean por el codificador PIPE pueden transmitirse por separado, o pueden multiplexarse en un unico flujo de bits, o las palabras de codigo de los flujos de bits parciales pueden intercalarse en un unico flujo de bits.
Cada flujo de bits parcial para una cantidad de datos puede escribirse en un paquete de datos. La cantidad de datos puede ser un conjunto arbitrario de sfmbolos fuente tal como una imagen fija, un campo o cuadro de una secuencia de video, un fragmento de una imagen fija, un fragmento de un campo o cuadro de una secuencia de video, o un cuadro de muestras de audio, etc.
Dos o mas de los flujos de bits parciales para la cantidad de datos o todos los flujos de bits parciales para una cantidad de datos pueden multiplexarse en un paquete de datos. La estructura de un paquete de datos que contenga flujos de bits parciales multiplexados se ilustra en la Figura 5. Esto es, el paquete de datos mostrado en la Fig. 5 podfa ser parte del flujo intercalado 132 y 234 intermedio, respectivamente.
El paquete de datos 300 consiste en una cabecera y una particion de los datos para cada flujo de bits parcial (para la cantidad de datos considerada). La cabecera 300 del paquete de datos contiene indicaciones para la particion del (resto del) paquete de datos en segmentos de datos de flujo de bits 302. Junto a las indicaciones para la particion, la cabecera puede contener informacion adicional. Los indicadores para la particion del paquete de datos pueden ser localizaciones del inicio de los segmentos de datos en unidades de bits o bytes o multiplos de bits o multiplos de bytes. Las localizaciones del inicio de los segmentos de datos pueden codificarse como valores absolutos en la cabecera del paquete de datos. O bien con relacion al inicio del paquete de datos o en relacion al final de la cabecera o en relacion al inicio del paquete de datos previo. Las localizaciones del inicio de los segmentos de datos pueden codificarse diferencialmente, es decir, solo se codifica la diferencia entre el inicio real del paquete de un segmento de datos y una prediccion para el inicio del segmento de datos. La prediccion pueden deducirse basandose en informacion ya conocida o transmitida tal como el tamano global del paquete de datos, el tamano de la cabecera, el numero de segmentos de datos en el paquete de datos, la localizacion del inicio de los segmentos de datos precedentes. La localizacion del inicio del primer paquete de datos puede no estar codificada, sino deducirse basandose en el tamano de la cabecera del paquete de datos. En el lado del decodificador, las indicaciones de particion trasmitidas se usan para deducir el inicio de los segmentos de datos. Los segmentos de datos se usan entonces como flujos de bits parciales y los datos contenidos en los segmentos de datos se proporcionan al interior de los decodificadores de bin correspondientes en orden secuencial.
Hay varias alternativas para multiplexado de los flujos de bits 12 parciales en un paquete de datos. Una alternativa, que puede reducir el requisito de informacion lateral, en particular para casos en los que los tamanos de los flujos de bits parciales son muy similares, se ilustra en la Fig. 6. La carga util del paquete de datos, es decir, el paquete de datos 310 sin su cabecera 311, se particiona en segmentos 312 en una forma predefinida. Como un ejemplo, la carga util del paquete de datos puede particionarse en segmentos del mismo tamano. Entonces se asocia cada segmento con un flujo de bits parcial o con la primera parte de un flujo de bits parcial 313. Si un flujo de bits parcial es mayor que el segmento de datos asociado, su resto 314 se coloca dentro del espacio no usado en el extremo de los otros elementos de datos. Esto puede realizarse en una forma en la que la parte restante de un flujo de bits se inserta en orden inverso (comenzando desde el final del segmento de datos), lo que reduce la informacion lateral. La asociacion de los restos de los flujos de bits parciales a segmentos de datos y, cuando se anade mas de un resto al segmento de datos, el punto de inicio para uno mas de los restos han de senalizarse dentro del flujo de bits, por ejemplo en la cabecera del paquete de datos.
Intercalado de palabras de codigo de longitud variable
Para algunas aplicaciones, el multiplexado anteriormente descrito de flujos de bits 12 parciales (para una cantidad de sfmbolos fuente) en un paquete de datos puede tener las siguientes desventajas: por un lado, para pequenos paquetes de datos, el numero de bits de la informacion lateral que se requiere para senalizacion de la particion puede convertirse en significativo en relacion a los datos reales en el flujo de bits parcial, lo que finalmente reduce la eficiencia de codificacion. Por otro lado, el multiplexado puede no ser adecuado para aplicaciones que requieran un bajo retardo (por ejemplo, para aplicaciones de videoconferencia). Con el multiplexado descrito, el codificador PIPE no puede iniciar la transmision de un paquete de datos antes de que los flujos de bits parciales se hayan creado completamente, dado que las localizaciones de inicio de las particiones no son conocidas antes. Adicionalmente, en general, el decodificador PIPE ha de esperar hasta que reciba el inicio del ultimo segmento de datos antes de que pueda iniciar la decodificacion de un paquete de datos. Para aplicaciones tales como sistemas de videoconferencia, estos retardos pueden anadirse a un retardo global adicional del sistema de varias imagenes de video (en particular para tasas de bits que esten proximas a la tasa de bits de transmision y para codificadores/decodificadores que requieran practicamente el intervalo de tiempo entre dos imagenes para codificacion/decodificacion de una imagen), lo que es cntico para dichas aplicaciones. Para superar las desventajas para ciertas aplicaciones, el codificador
5
10
15
20
25
30
35
40
45
50
55
60
PIPE puede configurarse en una forma en la que las palabras de codigo que se generen por los dos o mas codificadores de bin se intercalan en un unico flujo de bits. El flujo de bits con las palabras de codigo intercaladas pueden enviarse directamente al decodificador (cuando se desprecia un pequeno retardo de la memoria intermedia, vease a continuacion). En el lado del decodificador PIPE, los dos o mas decodificadores de bin leen las palabras de codigo directamente desde el flujo de bits en orden de decodificacion; la decodificacion puede iniciarse con el primer bit recibido. Ademas, no se requiere ninguna informacion lateral para senalizacion del multiplexado (o intercalado) de los flujos de bits parciales.
La estructura basica de un codificador PIPE con intercalado de palabras de codigo se muestra en la Fig. 7. Los codificadores de bin 10 no escriben las palabras de codigo directamente en los flujos de bits parciales, sino que se conectan con una unica memoria intermedia 29 de palabras de codigo, desde la que se escriben las palabras de codigo en el flujo de bits 34 en orden de codificacion. Los codificadores de bin 10 envfan solicitudes de una o mas entradas 28 en la memoria intermedia de palabras de codigo a la memoria intermedia 29 de palabras de codigo y posteriormente envfan las palabras de codigo 30 a la memoria intermedia 29 de palabras de codigo, que se almacenan en entradas de la memoria intermedia reservadas. Se accede a las palabras de codigo 31 (en general de longitud variable) de la memoria intermedia 29 de palabras de codigo por un escritor 32 de palabras de codigo, que escribe los bits correspondientes 33 en el flujo de bits 34 producido. La memoria intermedia 29 de palabras de codigo opera como una memoria intermedia primero en entrar primero en salir; las entradas de palabras de codigo que se reservan antes se escriben antes en el flujo de bits.
En una generalizacion adicional, son posibles multiples memorias intermedias de palabras de codigo y flujos de bits 12 parciales, en donde el numero de memorias intermedias de palabras de codigo es menor que el numero de codificadores de bin. Un codificador de bin 10 reserva una o mas palabras de codigo en la memoria intermedia 29 de palabras de codigo, mediante lo que la reserva de una o mas palabras de codigo en la memoria intermedia de palabras de codigo es activada por ciertos eventos en la memoria intermedia de bin 8 conectada. La memoria intermedia 29 de palabras de codigo puede funcionar en una manera en la que el decodificador PIPE puede decodificar instantaneamente el flujo de bits 34 que corresponde a 132 en la Fig. 1a y 134 en la Fig. 2, respectivamente. El orden de codificacion en el que se escriben las palabras de codigo en el flujo de bits es el mismo que el orden en el que se reservan las palabras de codigo correspondientes en la memoria intermedia de palabras de codigo. Cada codificador de bin 10 puede reservar una palabra de codigo, siendo activada la reserva por un cierto evento en la memoria intermedia de bin conectada. Cada codificador de bin 10 puede reservar mas de una palabra de codigo, siendo activada la reserva por un cierto evento en la memoria intermedia de bin conectada. Los codificadores de bin 10 pueden reservar una cantidad diferente de palabras de codigo, en donde la cantidad de palabras de codigo que se reserva por un codificador de bin particular puede depender del codificador de bin particular y/u otras propiedades del codificador de bin/memoria intermedia de bin particular (tal como la medida de probabilidad asociada, el numero de bits ya escritos, etc.).
La memoria intermedia de palabras de codigo puede funcionar como sigue. Si se envfa un nuevo bin 7 a una memoria intermedia de bin 8 particular y el numero de bins ya almacenado en la memoria intermedia de bin es cero y no hay actualmente reservada ninguna palabra de codigo en la memoria intermedia de palabras de codigo para el codificador de bin que esta conectado con la memoria intermedia de bin particular, el codificador de bin 10 conectado envfa una solicitud a la memoria intermedia de palabras de codigo, mediante la que se reservan una o mas entradas de palabras de codigo en la memoria intermedia 29 de palabras de codigo para el codificador de bin particular. Las entradas de palabras de codigo pueden tener un numero variable de bits; un umbral superior para el numero de bits en una entrada de memoria intermedia viene dado normalmente por el tamano maximo de la palabra de codigo para el codificador de bin correspondiente. La siguiente palabra de codigo o las siguientes palabras de codigo que se producen por el codificador de bin (para el que se ha reservado la entrada de palabras de codigo o las entradas de palabras de codigo) se almacenan en la entrada o entradas reservadas de la memoria intermedia de palabras de codigo. Si todas las entradas de memoria intermedia reservadas en la memoria intermedia de palabras de codigo para un codificador de bin particular se llenan con palabras de codigo y se envfa el siguiente bin a la memoria intermedia de bin que esta conectada con el codificador de bin particular, se reservan una o mas palabras de codigo nuevas en la memoria intermedia de palabras de codigo para el codificador de bin particular, etc. La memoria intermedia 29 de palabras de codigo representa una memoria intermedia primero en entrar primero en salir en una cierta forma. Las entradas a la memoria intermedia se reservan en orden secuencial. Las palabras de codigo para las que se han reservado antes las entradas de memoria intermedia correspondientes se escriben antes en el flujo de bits. El escritor 32 de palabras de codigo comprueba el estado de la memoria intermedia 29 de palabras de codigo, tanto continuamente como despues de que se escriba una palabra de codigo 30 en la memoria intermedia 29 de palabras de codigo. Si la primera entrada a la memoria intermedia contiene una palabra de codigo completa (es decir, la entrada de la memoria intermedia no esta reservada, pero incluye una palabra de codigo), la correspondiente palabra de codigo 31 y la correspondiente entrada de la memoria intermedia se eliminan de la memoria intermedia 20 de palabras de codigo y los bits de la palabra de codigo 33 se escriben en el flujo de bits. Este proceso se repite hasta que la primera entrada de la memoria intermedia no contiene una palabra de codigo (es decir, esta reservada o libre). Al final del proceso de decodificacion, es decir, si se han procesado todos los sfmbolos fuente de la cantidad de datos considerada, la memoria intermedia de palabras de codigo debe purgarse. Para ese
5
10
15
20
25
30
35
40
45
50
55
60
proceso de purga, se aplica lo siguiente para cada memoria intermedia de bin/codificador de bin como una primera etapa: si la memoria intermedia de bin no contienen bins, se anade un bin con un valor particular o un valor arbitrario hasta que la secuencia de bins resultante representa una secuencia de bins que esta asociada con una palabra de codigo (como se hecho notar anteriormente, una forma preferida de anadir bins es anadir dichos valores de bin que producen la palabra de codigo mas corta posible —o una de ellas— que se asocia con una secuencia de bins que contiene el contenido original de la memoria intermedia de bin como prefijo), entonces se escribe la palabra de codigo en la siguiente entrada de la memoria intermedia reservada para el codificador de bin correspondiente y se vada la (correspondiente) memoria intermedia de bin. Si se ha reservado mas de una entrada de memoria intermedia para uno o mas codificadores de bin, la memoria intermedia de palabras de codigo puede contener aun entradas de palabras de codigo reservadas. En ese caso, estas entradas de palabras de codigo se rellenan con palabras de codigo arbitrarias, pero validas, para los codificadores de bin correspondientes. Preferentemente, se inserta la palabra de codigo valida mas corta o una de las palabras de codigo validas mas cortas (si hay multiples). Finalmente, todas las palabras de codigo restantes en la memoria intermedia de palabras de codigo se escriben en el flujo de bits.
Se ilustran en la Fig. 8 dos ejemplos para el estado de la memoria intermedia de palabras de codigo. En el ejemplo (a), la memoria intermedia de palabras de codigo contiene 2 entradas que se llenan con una palabra de codigo y 5 entradas reservadas. Ademas, se marca la siguiente entrada de la memoria intermedia libre. La primera entrada se llena con una palabra de codigo (es decir, el codificador de bin 2 solo escribe una palabra de codigo en una entrada previamente reservada). En la siguiente etapa, esta palabra de codigo se eliminara de la memoria intermedia de palabras de codigo y se escribe en el flujo de bits. A continuacion, la primera palabra de codigo reservada para el codificador de bin 3 es la primera entrada de memoria intermedia, pero esta entrada no puede eliminarse de la memoria intermedia de palabras de codigo, dado que solo esta reservada, pero no se ha escrito ninguna palabra de codigo en esta entrada. En el ejemplo (b), la memoria intermedia de palabras de codigo contiene 3 entradas que se llenan con una palabra de codigo y 4 entradas reservadas. La primera entrada se marca como reservada y por ello el escritor de palabras de codigo no puede escribir una palabra de codigo al flujo de bits. Aunque estan contenidas 3 palabras de codigo en la memoria intermedia de palabras de codigo, el escritor de palabras de codigo ha de esperar hasta que se escribe la palabra de codigo en la primera entrada de memoria intermedia reservada para el codificador de bin 3. Observese que las palabras de codigo deben escribirse en el orden en que se reservaron. Para ser capaz de invertir el proceso en el lado del decodificador (vease a continuacion).
La estructura basica de un decodificador PIPE con intercalado de palabras de codigo se muestra en la Fig. 9. Los decodificadores bin 10 no leen las palabras de codigo directamente de flujos de bits parciales separados, sino que se conectan a una memoria intermedia 38 de bits, desde la que se leen las palabras de codigo 37 en el orden de codificacion. Debena tomarse nota que no se requiere necesariamente la memoria intermedia 38 de bits, dado que las palabras de codigo podnan leerse directamente desde el flujo de bits. La memoria intermedia 38 de bits se incluye principalmente en la ilustracion para separar claramente aspectos diferentes de la cadena de procesamiento. Los bits 39 del flujo de bits 40 con palabras de codigo intercaladas, que por ello corresponden al flujo de bits 234 en la Fig. 2, se insertan secuencialmente en la memoria intermedia 38 de bits, que representa una memoria intermedia primero en entrar primero en salir. Si un decodificador de bin 22 particular recibe una solicitud de una o mas secuencias de bin 35, el decodificador de bin 22 lee una o mas palabras de codigo 37 de la memoria intermedia 38 de bits a traves de la solicitud de bits 36. El decodificador PIPE puede decodificar instantaneamente los sfmbolos fuente. Observese que el codificador PIPE (tal como se ha descrito anteriormente) debe asegurar mediante la operacion en forma adecuada de la memoria intermedia de palabras de codigo que las palabras de codigo se escriben en el mismo orden al flujo de bits en el que se solicitan por los decodificadores de bin. En el decodificador PIPE, todo el proceso de decodificacion se activa mediante solicitudes de sfmbolos fuente. Parametros tales como el numero de palabras de codigo que se reservan en el lado del codificador por un codificador de bin particular y el numero de palabras de codigo que se leen por el decodificador de bin correspondiente deben ser los mismos.
En una generalizacion adicional, son posibles multiples memorias intermedias de palabras de codigo y flujos de bits parciales, en donde el numero de memorias intermedias de bit es menor que el numero de decodificadores de bin. Un decodificador de bin 22 lee una o mas palabras de codigo para la memoria intermedia 38 de bits en un instante de tiempo, mediante lo que la lectura de las una o mas palabras de codigo de la memoria intermedia de bits es activada por ciertos eventos en la memoria intermedia 20 de bin conectada. El decodificador puede hacerse funcionar en una forma en la que una o mas palabras de codigo se leen cuando se envfa una solicitud de un bin 19 a una memoria intermedia 20 de bin particular y la memoria intermedia de bin no contiene ningun bin. Pero es posible tambien activar la lectura de las palabras de codigo por otros eventos, por ejemplo si el numero de bins en la memoria intermedia de bin esta por debajo de un umbral predefinido. Cada decodificador de bin 22 puede leer una palabra de codigo, siendo activada la lectura por un cierto evento en la memoria intermedia de bin conectada. Alternativamente, cada decodificador de bin 22 debe leer mas de una palabra de codigo, siendo activada la lectura por un cierto evento en la memoria intermedia de bin conectada. Los decodificadores de bin 22 puede leer una cantidad diferente de palabras de codigo, en donde la cantidad de palabras de codigo que se lee por un decodificador de bin particular puede depender del decodificador de bin particular y/u otras propiedades del decodificador de bin / memoria intermedia de bin particular (tal como la medida de probabilidad asociada, el numero
5
10
15
20
25
30
35
40
45
50
55
60
de bits ya lefdos, etc.).
La lectura de palabras de codigo desde la memoria intermedia de bits puede funcionar como sigue. Si se envfa una nueva solicitud de bin 19 desde el selector 18 de memoria intermedia de bin a una memoria intermedia 20 de bin particular y el numero de bin en la memoria intermedia de bin es cero, el decodificador de bin 22 conectado lee una o mas palabras de codigo 37 de la memoria intermedia 38 de bits, a traves de la solicitud de bits 36 a la memoria intermedia 38 de bits. El decodificador de bin 22 convierte las palabras de codigo lefdas 37 en secuencias de bins 21 y almacena estas secuencias de bin en la memoria intermedia 20 de bin conectada. Como respuesta final a la solicitud de un bin 19, el primer bin insertado se elimina de la memoria intermedia 20 de bin y se envfa al selector 18 de memoria intermedia de bin. Como respuesta a solicitudes de bin adicionales, los bin restantes en la memoria intermedia de bin se eliminan hasta que se vada la memoria intermedia de bin. Una solicitud de bin adicional activa el decodificador de bin para leer una o mas nuevas palabras de codigo desde la memoria intermedia de bits, etc. La memoria intermedia 38 de bits representa una memoria intermedia primero en entrar primero en salir de un tamano predefinido y se llena continuamente con bits 39 del flujo de bits 40. Para asegurar que las palabras de codigo se escriben en el flujo de bits en la misma forma en la que se solicitan por el proceso de decodificacion, la memoria intermedia de palabras de codigo en el lado del codificador puede funcionar en la forma descrita anteriormente.
De ese modo, cada uno de la pluralidad de decodificadores entropicos puede ser un decodificador de longitud variable configurado para mapear palabras de codigo de longitudes fijas en secuencias de sfmbolos de longitudes variables, y puede proporcionarse una entrada de palabra de codigo tal como la salida de la memoria intermedia de palabras de codigo 43 para la recepcion de un unico flujo de palabras de codigo intercaladas. La pluralidad de decodificadores 22 entropicos puede configurarse para recuperar las palabras de codigo de la entrada de palabras de codigo en un orden secuencial que depende de un orden en el que se recuperan los sfmbolos de la secuencia de sfmbolos a ser reconstruidos por el selector 18 de la pluralidad de decodificadores entropicos dando como resultado una nueva secuencia de sfmbolos a ser mapeada a partir de una palabra de codigo nueva en los decodificadores entropicos respectivos.
Intercalado de palabras de codigo de longitud variable con restriccion de bajo retardo
El intercalado de palabras de codigo descrito para la codificacion PIPE no requiere que se envfe ninguna informacion de particion como informacion lateral. Y dado que las palabras de codigo se intercalan en el flujo de bits, el retardo es en general pequeno. Sin embargo, no se garantiza que se obedezca a una restriccion de retardo particular (por ejemplo especificada por un numero maximo de bits que se almacenan en la memoria intermedia de palabras de codigo). Adicionalmente, el tamano de la memoria intermedia requerido para memoria intermedia de palabras de codigo puede hacerse teoricamente muy grande. Cuando se considera el ejemplo de la Fig. 8(b), sena posible que no se envfen bins adicionales a la memoria intermedia 3 de bin y por ello el codificador de bin 3 no enviara ninguna nueva palabra de codigo a la memoria intermedia de palabras de codigo hasta que se aplique el proceso de purgado al final del paquete de datos. Entonces todas las palabras de codigo para los codificadores de bin 1 y 2 tendnan que esperar hasta el final del paquete de datos, antes de que puedan escribirse en el flujo de bits. Este inconveniente puede sortearse anadiendo un mecanismo adicional al proceso de codificacion PIPE (y tambien al proceso de decodificacion PIPE tal como se describe mas adelante). El concepto basico de ese mecanismo adicional es que si una medida en relacion al retardo o a una delimitacion superior del retardo (vease a continuacion) supera un umbral especificado, la primera entrada en la memoria intermedia reservada se llena mediante el purgado de la memoria intermedia de bin correspondiente (usando un mecanismo similar al del final del paquete de datos). Mediante dicho mecanismo, el numero de entradas de memoria intermedia en espera se reduce hasta que la medida del retardo asociada sea menor que el umbral especificado. En el lado del decodificador, los bin que se han insertado en el lado del codificador para obedecer a la recepcion de retardo deben descartarse. Para este descarte de los bins puede usarse basicamente el mismo mecanismo que en el lado del codificador. En lo que sigue se describen dos posibilidades para dicho control del retardo.
En una posibilidad, la medida para el retardo (o una delimitacion superior del retardo) es el numero de entradas de memoria intermedia activas en la memoria intermedia de palabras de codigo, en donde el numero de entradas de memoria intermedia activas es el numero de entradas de memoria intermedia reservadas mas el numero de entradas de memoria intermedia que contienen palabras de codigo. Observese que la primera entrada de memoria intermedia es siempre una entrada de memoria intermedia reservada o una entrada de memoria intermedia libre, dado que si la primera entrada de memoria intermedia contiene una palabra de codigo, esta palabra de codigo se escribe en el flujo de bits. Si, por ejemplo, el retardo maximo de memoria intermedia permitido (tal como se determina por la aplicacion) es D bits y el tamano de palabra de codigo maximo para todos los codificadores bin es L, una delimitacion inferior para el numero maximo de palabras de codigo que puede contenerse en la memoria intermedia de palabras de codigo sin violar la restriccion de retardo puede calcularse por N = D/L. La media del retardo D en bits no es requerida por el sistema, pero el numero maximo de palabras de codigo N debe ser conocido tanto para el codificador como para el decodificador. El numero maximo de entradas de memoria intermedia de palabras de codigo N puede fijarse con la aplicacion. Alternativamente, el numero maximo de entradas de memoria intermedia de palabras de codigo N puede senalizarse en el interior del flujo de bits, por ejemplo, en la cabecera del
5
10
15
20
25
30
35
40
45
50
55
60
paquete de datos (o cabecera del fragmento) o en un conjunto de parametros, que se incluye en un flujo de bits. Si un codificador de bin 10 envfa una solicitud para la reserva de una o mas nuevas entradas de memoria intermedia a la memoria intermedia 29 de palabras de codigo, se ejecuta el proceso siguiente antes de que se reserve una nueva entrada de memoria intermedia de palabras de codigo (es decir, se ejecutan multiples veces si se reservan multiples entradas de memoria intermedia de palabras de codigo mediante una solicitud): si el numero de entradas de memoria intermedia actualmente activas mas 1 (teniendo en cuenta la entrada de memoria intermedia que se reservara a continuacion) es mayor que el numero maximo de entradas de memoria intermedia de palabras de codigo N, la primera entrada del memoria intermedia (que se reserva) se purga mediante los procesos descritos a continuacion hasta que el numero de entradas de memoria intermedia actualmente activas mas 1 sea menor que o igual a el numero maximo de entradas de memoria intermedia de palabras de codigo N. El purgado de una entrada de memoria intermedia de palabras de codigo es similar al purgado al final de un paquete de datos. El codificador de bin 10 que ha reservado la primera entrada de memoria intermedia correspondiente es purgado mediante la adicion de bins con valores particulares o arbitrarios a la memoria intermedia 8 de bin conectada hasta que la secuencia de bins resultante represente una secuencia de bin que esta asociada con una palabra de codigo, la palabra de codigo se escribe a continuacion a la entrada de memoria intermedia reservada y se anade finalmente al flujo de bits (mientras se vacfa la memoria intermedia de bins y se eliminan las entradas de memoria intermedia previamente reservadas). Como se ha mencionado anteriormente, una forma preferida para anadir bins a la memoria intermedia de bin es anadir aquellos bins que producen la palabra de codigo mas corta posible. En el lado del decodificador, se ejecuta un proceso similar para descartar los bin que se han anadido para obedecer a la restriccion de retardo. Por lo tanto, el decodificador mantiene un contador C que cuenta las palabras de codigo que se han lefdo desde la memoria intermedia de bits (este contador puede mantenerse en la memoria intermedia de bits). El contador C se inicializa (por ejemplo, a cero) al inicio de la decodificacion de un paquete de datos se incrementa en uno despues de que se lea una palabra de codigo. Ademas, cada decodificador de bin 22 contiene un contador Cx, que almacena el valor del contador de palabras de codigo C antes de que se lea la ultima palabra de codigo por el decodificador de bin 22 correspondiente. Es decir, cuando un decodificador de bin 22 particular lee una nueva palabra de codigo, su contador Cx se fija igual a C como una primera etapa y a continuacion la palabra de codigo se lee desde la memoria intermedia de bits. Cuando se envfa una solicitud de un bin 19 a una memoria intermedia 20 de bin particular y la diferencia (C - Cx) entre el contador de palabras de codigo global C y el contador Cx del decodificador de bin 22 conectado es mayor que el numero maximo de entradas de memoria intermedia de palabras de codigo N, todos los bin que se almacenan actualmente en la memoria intermedia 20 de bin particular se descartan e ignoran. Junto a esa etapa adicional, la decodificacion se hace funcionar como se ha descrito anteriormente. Si la memoria intermedia 20 de bin a la que se envfa una solicitud de un bin 19 esta vacfa (bien porque todos los bin que se han eliminado o porque un mecanismo de bajo retardo descarto todos los bin en la primera etapa despues de que se haya recibido la solicitud del bin), el decodificador de bin 22 conectado lee una o mas palabras de codigo desde la memoria intermedia 38 de bits, etc.
La medida del retardo (o una delimitacion superior del retardo) puede ser la suma de las longitudes maximas de palabras de codigo para las entradas de memoria intermedia activas en la memoria intermedia de palabras de codigo, en donde una longitud maxima de palabras de codigo para una entrada de memoria intermedia particular depende del bin decodificado que se asocia con esa entrada de memoria intermedia. Como ilustracion, las longitudes maximas de palabra de codigo para las entradas de memoria intermedia se indican en los ejemplos en 6. Observese de nuevo que la primera entrada de memoria intermedia es siempre una entrada de memoria intermedia reservada o una entrada de memoria intermedia libre, dado que si la primera entrada de memoria intermedia
contiene una palabra de codigo, esta palabra de codigo se escribe al flujo de bits. Sea el retardo maximo de
memoria intermedia permitido (tal como se determina por la aplicacion) de D bits. El retardo maximo de memoria intermedia D debe ser conocido tanto para el codificador como para el decodificador. El retardo maximo de memoria intermedia D puede fijarse por la aplicacion. El retardo maximo de memoria intermedia D puede senalizarse en el interior del flujo de bits, por ejemplo, en la cabecera del paquete de datos (o cabecera del fragmento) o en un conjunto de parametros, que se incluye en el flujo de bits. Puede senalizarse en unidades de bits, o bytes, o un multiplo de bits, o un multiplo de bytes. Si un codificador de bin 10 envfa una solicitud para la reserva de una o mas nuevas entradas de memoria intermedia a la memoria intermedia 29 de palabras de codigo, se ejecuta el proceso siguiente antes de que se reserve una nueva entrada de memoria intermedia de palabras de codigo (es decir, se
ejecuta multiples veces si se reservan multiples entradas de memoria intermedia de palabras de codigo mediante
una solicitud).
Si la suma de las longitudes maximas de palabras de codigo para todas las entradas de memoria intermedia actualmente activas mas la longitud maxima de palabra de codigo para la entrada de memoria intermedia que se reservara es mayor que el retardo maximo de memoria intermedia D, la primera entrada de memoria intermedia (que se reserva) es purgada por el proceso descrito anteriormente hasta que la suma de las longitudes maximas de palabras de codigo para todas las entradas de memoria intermedia activas mas la longitud maxima de palabra de codigo para la entrada de memoria intermedia que se reservara sea menor que o igual al retardo maximo de memoria intermedia D. Como un ejemplo, considerese el ejemplo en la Fig. 8(b). La suma de las longitudes maximas de palabras de codigo para todas las entradas de memoria intermedia actualmente activas es 29. Supongase que el retardo maximo de memoria intermedia D se fija igual a 32. Si la siguiente entrada de memoria intermedia se reserva
5
10
15
20
25
30
35
40
45
50
55
60
por el codificador de bin 2 para el que la longitud maxima de palabra de codigo es igual a 3, la primera entrada de la memoria intermedia no se purga, dado que 29 + 3 no es mayor que 32. Pero si la siguiente entrada de memoria intermedia es reservada por el codificador de bin 1 para el que la longitud maxima de palabra de codigo es igual a 7, la primera entrada de memoria intermedia se purga, dado que 29 + 7 es mayor que 32. El purgado de la entrada de memoria intermedia reservada se realiza tal como se ha descrito anteriormente (mediante la adicion de bin con valores particulares o arbitrarios desde la memoria intermedia de bin correspondiente).
En el lado del decodificador, se ejecuta un proceso similar para descartar los bin que ya se han anadido para obedecer a la restriccion de retardo. Por lo tanto, el decodificador mantiene un contador C que cuenta la longitud maxima de palabras de codigo para las palabras de codigo que se han lefdo desde la memoria intermedia de bits (este contador puede mantenerse en la memoria intermedia de bits). Observese que las longitudes maximas de palabra de codigo que se asocian con decodificadores de bin diferentes pueden ser diferentes. El contador C se inicializa (por ejemplo con cero) al inicio de la decodificacion de un paquete de datos y se incrementa despues de que se lea una palabra de codigo. Este contador no se incrementa en la longitud real de las palabras de codigo lefdas, sino por su longitud maxima. Es decir, si una palabra de codigo es lefda por un decodificador de bin particular y la longitud maxima de palabra de codigo que se asocia con la tabla de palabras de codigo usada por el decodificador de bin particular es Lx (un decodificador de bin diferente puede asociarse con una longitud maxima de palabra de codigo diferente), el contador C se incrementa por Lx. Ademas del contador global C, cada decodificador de bin 22 contiene un contador Cx, que almacena al valor del contador de palabras de codigo C antes de que se lea la ultima palabra de codigo por el decodificador de bin 22 correspondiente. Es decir, cuando un decodificador de bin 22 particular lee una nueva palabra de codigo, su contador Cx se fija igual a C como una primera etapa y a continuacion la palabra de codigo se lee desde la memoria intermedia de bits. Cuando se envfa una solicitud para un bin 19 a una memoria intermedia de bin 20 particular y la diferencia (C - Cx) entre el contador global C y el contador Cx del decodificador de bin 22 conectados es mayor que el retardo de memoria intermedia maximo D, todos los bins que estan almacenados actualmente en la memoria intermedia 20 de bin particular se descartan e ignoran. Junto a esa etapa adicional, la decodificacion funciona como se ha descrito anteriormente. Si la memoria intermedia 20 de bin a la que se envfa la solicitud de un bin 19 esta vada (porque todos los bin ya se han eliminado o porque el mecanismo de bajo retardo descarto todos los bin en la primera etapa despues de que se haya recibido la solicitud de bin), el decodificador de bin 22 conectado lee una o mas nuevas palabras de codigo desde la memoria intermedia 38 de bits, etc.
Ademas, la pluralidad de decodificadores entropicos 22 y el selector 18 pueden configurarse para descartar intermitentemente sufijos de secuencias de sfmbolos de modo que no participen en la formacion de la secuencia de sfmbolos a ser reconstruida 29. El descarte de modo intermitente puede realizarse en eventos en donde un numero de palabras de codigo que se hayan recuperado desde la entrada de palabras de codigo por la pluralidad de decodificadores entropicos entre dos recuperaciones de palabras de codigo consecutivas de un decodificador entropico respectivo desde la entrada de palabras de codigo, cumple con un criterio predeterminado. La pluralidad de codificadores entropicos y la memoria intermedia de palabras de codigo pueden, a su vez, configurarse para extender de modo intermitente sfmbolos actualmente enviados pero aun no mapeados a secuencias de sfmbolos validas mediante no tener en cuenta los sfmbolos actualmente enviados pero aun no mapeados como prefijo, mapear las secuencias de sfmbolos asf extendidas en palabras de codigo, introducir las palabras de codigo asf obtenidas en las entradas de palabras de codigo reservadas y purgar las entradas de palabras de codigo. La extension, introduccion y purgado en forma intermitente puede tener lugar con eventos en donde un numero de entradas de palabras de codigo reservadas mas un numero de entradas de palabras de codigo que tengan palabras de codigo introducidas en el cumpla con un criterio predeterminado. El criterio predeterminado puede tener en cuenta las longitudes maximas de palabras de codigo de la pluralidad de pares codificador/decodificador.
Para algunas arquitecturas, la forma anteriormente descrita de intercalado de palabras de codigo podna dar como resultado un inconveniente en terminos de complejidad de decodificacion. Como se ilustra en la Fig. 9, todos los decodificadores de bin 22 leen palabras de codigo (en el caso general, palabras de codigo de longitud variable) desde una unica memoria intermedia 38 de bits. La lectura de las palabras de codigo no puede realizarse en paralelo, dado que las palabras de codigo deben leerse en el orden correcto. Esto significa que, un decodificador de bin particular debe esperar hasta que otros decodificadores de bin acaben la lectura de palabras de codigo. Y cuando la complejidad de la lectura de las palabras de codigo de longitud variable es significativa en relacion al resto de los procesos de decodificacion (parcialmente en paralelo), este acceso de las palabras de codigo de longitud variable puede ser un cuello de botella para todo el proceso de decodificacion. Hay algunas variaciones que pueden emplearse para la reduccion de la complejidad del acceso desde la unica memoria intermedia de bits, unas pocas de las cuales se describiran en lo que sigue. En este caso, por ejemplo, existe un unico conjunto de palabras de codigo (que representa por ejemplo un codigo de prefijo no redundante) y el conjunto de palabras de codigo que se usa para cada decodificador de bin 22 es un subconjunto de un unico conjunto de palabras de codigo. Observese que diferentes decodificadores de bin 22 pueden usar diferentes subconjuntos del unico conjunto de palabras de codigo. Incluso si los conjuntos de palabras de codigo que se usan por algunos de los decodificadores de bin 22 son el mismo, su asociacion con las secuencias de bin es diferente para diferentes decodificadores de bin 22. El mismo conjunto de palabras de codigo puede usarse para todos los decodificadores de bin 22. Si se tiene un unico conjunto
5
10
15
20
25
30
35
40
45
50
55
60
de palabras de codigo que incluye los conjuntos de palabras de codigo para todos los decodificadores de bin como subconjuntos, el analisis de las palabras de codigo puede realizarse fuera de los decodificadores de bin, lo que puede reducir la complejidad del acceso a la palabra de codigo. El proceso de codificacion PIPE no se cambia en relacion con el proceso anteriormente descrito. El proceso de decodificacion PIPE modificado se ilustra en la Fig. 10. Un unico lector de palabras de codigo es alimentado con los bits 46 desde el flujo de bits 40 y analiza las palabras de codigo —en general de longitud variable—. Las palabras de codigo 44 lefdas se insertan dentro de una memoria intermedia 43 de palabras de codigo, que representa una memoria intermedia primero en entrar primero en salir. Un decodificador de bin 22 envfa una solicitud para una o mas palabras de codigo 41 a la memoria intermedia 43 de palabras de codigo y como respuesta a esta solicitud, las una o mas palabras de codigo se eliminan de la memoria intermedia de palabras de codigo (en orden secuencial) y se envfan al decodificador de bin 22 correspondiente. Observese que en este caso, el analisis de palabras de codigo potencialmente complejo puede realizarse en un proceso en segundo plano y no necesita esperar a los decodificadores de bin. Los decodificadores de bin acceden a palabras de codigo ya analizadas, el analisis de palabras de codigo potencialmente complejo no es parte de una solicitud a la memoria intermedia global. En su lugar las palabras de codigo ya analizadas se envfan a los decodificadores de bin, que pueden implementarse tambien en una forma en que solo se envfan los indices de las palabras de codigo a los decodificadores de bin.
Intercalado de secuencias de bits de longitud fija
Una forma adicional de reducir la complejidad del decodificador PIPE puede conseguirse cuando los decodificadores de bin 22 no leen palabras de codigo de longitud variable desde la memoria intermedia de bits 38 global, sino en su lugar siempre leen secuencias de bits de longitud fija desde la memoria intermedia de bits 38 global y anaden estas secuencias de bits de longitud fija a una memoria intermedia de bits local, en donde cada decodificador de bin 22 se conecta con una memoria intermedia de bits local separada. Las palabras de codigo de longitud variable se leen a continuacion desde la memoria intermedia de bits local. Por ello, el analisis de las palabras de codigo de longitud variable puede realizarse en paralelo, solo el acceso de secuencias de bits de longitud fija ha de realizarse en una forma sincronizada, pero dicho acceso de secuencias de bits de longitud fija es normalmente muy rapido, de modo que la complejidad de decodificacion global puede reducirse para algunas arquitecturas. El numero fijo de bins que se envfan a una memoria intermedia de bits local particular puede ser diferente para diferentes memorias intermedias de bits locales y tambien pueden variar a lo largo del tiempo, dependiendo de ciertos parametros como eventos en el decodificador de bin, memoria intermedia de bin, o memoria intermedia de bits. Sin embargo, el numero de bits que se leen en un acceso particular no depende de los bits reales que se hayan lefdo durante el acceso particular, lo que es la diferencia importante respecto a la lectura de palabras de codigo de longitud variable. La lectura de secuencias de bits de longitud fija se activa por ciertos eventos en las memorias intermedias de bin, decodificadores de bin, o memorias intermedias de bits locales. Como un ejemplo, es posible solicitar la lectura de una nueva secuencia de bits de longitud fija cuando el numero de bits que estan presentes en una memoria intermedia de bits conectada cae por debajo de un umbral predefinido, en donde pueden usarse diferentes valores de umbral para diferentes memorias intermedias de bits. En el codificador, ha de asegurarse que las secuencias de longitud fija de bin se insertan en el mismo orden dentro del flujo de bits, en el que se leen desde el flujo de bits en el lado del decodificador. Es posible tambien combinar este intercalado de secuencias de longitud fija con un control de bajo retardo similar al explicado anteriormente. En lo que sigue, se describe una forma para intercalado de secuencias de bits de longitud fija.
La Fig. 11 muestra una realizacion de una estructura de codificador PIPE que intercala secuencias de bits de longitud fija para dos o mas codificadores de bin. A diferencia de la Fig. 7, los codificadores de bin 10 no se conectan con una unica memoria intermedia de palabras de codigo. En su lugar, cada codificador de bin 10 se conecta con una memoria intermedia de bits 48 separada, que almacena bits para el flujo de bits parcial correspondiente. Todas las memorias intermedias 48 de bits se conectan a una memoria intermedia de bit 51 global. La memoria intermedia de bits 51 global se conecta a un escritor de bits 53, que elimina los bits 52 en el orden de codificacion/decodificacion desde la memoria intermedia de bits global y escribe los bits eliminados 54 en el flujo de bits 55. En un cierto evento en una memoria intermedia de bits 48 particular o el codificador de bin 10 conectado o la memoria intermedia de bin 8, la memoria intermedia de bits 48 envfa una solicitud 49 a la memoria intermedia de bits 51 global mediante la que se reservan un cierto numero de bits en la memoria intermedia de bit 51 global. La solicitud para la reserva de secuencias de bits 49 de longitud fija se procesa en orden secuencial. La memoria intermedia de bit 51 global representa una memoria intermedia primero en entrar primero en salir en una cierta forma; los bits que se reservan antes se escriben antes en el flujo de bits. Debena tomarse nota que diferentes memorias intermedias de bit 48 pueden reservar una cantidad diferente de bits, lo que tambien puede variar a lo largo del tiempo basandose en sfmbolos ya codificados; pero el numero de bits que se reservan para una solicitud particular es conocido en el momento en el que se envfa la solicitud a la memoria intermedia de bits global.
En una particular, las memorias intermedias de bit 48 y la memoria intermedia de bit 51 global se hacen funcionar como se describe en lo que sigue. La cantidad de bits que se reserva por una memoria intermedia de bits 48 particular se indica por Nx. Este numero de bits Nx puede ser diferente para diferentes memorias intermedias de bits 48 y puede tambien variar a lo largo del tiempo. El numero de bits Nx que se reserva para una memoria intermedia
5
10
15
20
25
30
35
40
45
50
55
60
de bits particular 48 puede ser fijo a lo largo del tiempo. Las reservas para un numero fijo Nx de bits 49 se activan basandose en el numero de bits Mx en la memoria intermedia de bits 48, el numero de bits Nx para las solicitudes de reserva, y la longitud maxima de palabras de codigo Lx asociada. Observese que cada codificador de bin 10 puede asociarse con una longitud maxima de palabra de codigo Lx diferente. Si un bin 7 se envfa a una memoria intermedia de bin 8 particular, y la memoria intermedia de bin 8 particular esta vacfa, y no se reserva mas de una secuencia de Nx bits en la memoria intermedia de bits global para la memoria intermedia de bits 48 que se conecta con la memoria intermedia de bin particular (a traves de un codificador de bin), y la diferencia Nx - Mx entre el numero Nx de bits que se reservan mediante una solicitud de reserva de la memoria intermedia de bits 48 que esta conectada (a traves de un codificador de bin) con la memoria intermedia de bin 8 particular y el numero de bits Mx que esta actualmente presente en esta memoria intermedia de bits 48 es menor que la longitud maxima de palabra de codigo Lx que esta asociada con el codificador de bin 10 correspondiente, la memoria intermedia de bits 49 conectada envfa una solicitud 49 para la reserva de Nx bits a la memoria intermedia de bit 51 global. La memoria intermedia de bits 51 global reserva Nx bits para la memoria intermedia de bits 48 particular e incrementa su puntero para la siguiente reserva. Despues de que se hayan reservado los Nx bits en la memoria intermedia de bits global, el bin 7 se almacena en la memoria intermedia de bin 8. Si este unico bin no representa ya una secuencia de bins que esta asociada con una palabra de codigo, el codificador de bin 10 elimina este bin de la memoria intermedia de bin 8 y escribe la palabra de codigo 47 correspondiente en la memoria intermedia de bits 48 conectada. En caso contrario (este unico documento de bin ya presente en una secuencia de bins que esta asociada con una palabra de codigo), se aceptan bins 7 adicionales por la memoria intermedia de bin 8 particular hasta que la memoria intermedia de bin 8 contenga una secuencia de bin que esta asociada con una palabra de codigo. En este caso, el codificador de bin 10 conectado elimina la secuencia de bins 9 de la memoria intermedia de bin 8 y escribe la palabra de codigo 47 correspondiente en la memoria intermedia de bits 48 conectada. Si el numero resultante de bits Mx en la memoria intermedia de bits 48 es mayor que o igual a el numero de bits Nx reservado, los Nx bits que se escribieron primero en la memoria intermedia de bits 48 se insertan en el espacio previamente reservado en la memoria intermedia de bits 51 global. Para el siguiente bin 7 que se envfa a la memoria intermedia de bin 8 particular, se ejecuta el mismo proceso especificado anteriormente; es decir, se comprueba primero si debe reservarse un nuevo numero de Nx bits en la memoria intermedia de bits global (si Nx - Mx es menor que Lx) y a continuacion se inserta el bin en la memoria intermedia de bin 8, etc. El escritor de bits escribe las secuencias de bits de longitud fija de la memoria intermedia de bits global en el orden en que se han reservado. Si la primera entrada de longitud fija en la memoria intermedia de bit 51 global contiene una secuencia de bits de longitud fija que ya se ha insertado realmente en la memoria intermedia de bits global (es decir, no esta solo reservada), el escritor de bits 53 elimina los bits de esta secuencia de bits 52 de la memoria intermedia de bits 51 global y escribe los bits 54 en el flujo de bits. Este proceso se repite hasta que la primera entrada de longitud fija en la memoria intermedia de bits global representa una entrada reservada o una libre. Si la primera entrada de longitud fija en la memoria intermedia de bits global representa una entrada reservada, el escritor de bits 53 espera hasta que esta entrada esta llena con los bits reales antes de escribir bits adicionales 54 en el flujo de bits 55.
Al final de un paquete de datos, las memorias intermedias de bin se purgan tal como se ha descrito anteriormente. Ademas, las memorias intermedias de bits deben purgarse mediante la adicion de bits con un valor particular o uno arbitrario hasta que todas las entradas de memoria intermedia reservadas en la memoria intermedia de bits global se llenan y escriben hacia el flujo de bits.
Se ilustran en la Fig. 12 dos ejemplos de estados posibles de la memoria intermedia de bits 51 global. En el ejemplo (a), se ilustra un caso en el que diferentes memorias intermedias de bits/codificadores de bin reservan un numero diferente de bits. Las memorias intermedias de bit globales contienen 3 entradas con secuencias de bits de longitud fija realmente escritas y 4 entradas con secuencias de bits de longitud fija reservadas. La primera entrada de longitud fija ya contiene bits reales (que se deben haber insertado recientemente por la memoria intermedia de bit/codificador de bin 2); esta entrada (es decir los 8 bits correspondientes) pueden eliminarse y escribirse en el flujo de bits. La siguiente entrada reserva 10 bits para el codificador de bin 3, pero los bits reales no se han insertado aun. Esta entrada no puede escribirse en el flujo de bits; debe esperarse hasta que se inserten los bits reales; en el segundo ejemplo (b), todas las memorias intermedias de bits/codificadores de bin reservaron el mismo numero de bits (8 bits). La memoria intermedia de bits global contiene 4 reservas para secuencias de bits 8 y 3 secuencias de bits 8 realmente escritas. La primera entrada contiene una reserva para 8 bits para el codificador de bin 3. Antes de que puedan escribirse nuevos bits al flujo de bits, el escritor de bits ha de esperar hasta que la memoria intermedia de bits/codificador de bin 3 escriba los valores reales de los 8 bits en la entrada reservada.
La Fig. 13 muestra una ilustracion de una estructura de decodificador PIPE que intercala secuencias de bits de longitud fija. A diferencia de la Fig. 9, los decodificadores de bin 22 no estan conectados con una unica memoria intermedia de bits. En su lugar, cada decodificador de bin 22 se conecta con una memoria intermedia 58 de bits separada, que almacena los bits desde el flujo de bits parcial correspondiente. Todas las memorias intermedias de bits 58 se conectan a una memoria intermedia 61 de bits global. Los bits 62 desde el flujo de bits 63 se insertan en la memoria intermedia 61 de bits global. En ciertos eventos, en una memoria intermedia 58 de bits particular o codificador de bin 22 conectado o memoria intermedia 20 de bin, la memoria intermedia 58 de bits envfa una solicitud 59 a la memoria intermedia 61 de bits global mediante la que se elimina una secuencia de bits 60 de
5
10
15
20
25
30
35
40
45
50
55
60
longitud fija de la memoria intermedia 61 de bits global y se inserta dentro de la memoria intermedia 58 de bits particular. La solicitud para las secuencias de bits 59 de longitud fija se procesa en orden secuencial. La memoria intermedia 61 de bits global representa una memoria intermedia primero en entrar primero en salir; los bits que se insertan antes dentro de la memoria intermedia de bits global se eliminan antes. Debena tomarse nota que diferentes memorias intermedias de bits 58 pueden solicitar una cantidad diferente de bits, lo que tambien puede variar a lo largo del tiempo basandose en sfmbolos ya decodificados; pero el numero de bits que se solicita mediante una solicitud particular es conocido en el momento en el que la solicitud se envfa a la memoria intermedia de bits global. Debena tomarse nota que la memoria intermedia 61 de bits global no se requiere realmente, dado que las palabras de codigo podnan leerse tambien directamente desde el flujo de bits. La memoria intermedia 61 de bits global se incluye principalmente en la ilustracion para separar claramente diferentes aspectos de la cadena de procesamiento.
Las memorias intermedias de bits 58 y la memoria intermedia 61 de bits global pueden hacerse funcionar como se describe en lo que sigue. La cantidad de bits que se solicitan y leen mediante una memoria intermedia 58 de bits particular se indica como Nx, es igual a la cantidad de bits que se escriben en la memoria intermedia de bits global por la memoria intermedia de bits correspondiente en el lado del codificador. Este numero de bits Nx puede ser diferente para diferentes memorias intermedias 58 de bits y puede variar tambien a lo largo del tiempo. Preferentemente, el numero de bits Nx que se solicitan y leen por una memoria intermedia 58 de bits particular puede ser fijo a lo largo del tiempo. La lectura de un numero fijo Nx de bits 60 se activa basandose en el numero de bits Mx en la memoria intermedia 58 de bits y la longitud maxima de la palabra de codigo Lx asociada. Observese que cada decodificador de bin 22 puede asociarse con una longitud maxima de palabra de codigo Lx diferente. Si se envfa una solicitud para un bin 19 a una memoria intermedia 20 de bin particular, y la memoria intermedia 20 de bin particular esta vacfa, y el numero Mx de bits de la memoria intermedia 58 de bits que se conecta (a traves de un decodificador de bin) con la memoria intermedia 20 de bin particular es menor que la longitud maxima de palabra de codigo Lx que se asocia con el decodificador de bin 22 correspondiente, la memoria intermedia 58 de bits conectada envfa una solicitud 59 para unas nuevas secuencias de Nx bits a la memoria intermedia 61 de bits global. Como respuesta a esta solicitud, se eliminan los primeros Nx bits de la memoria intermedia de bits global 61 y esta secuencia de Nx bits 60 se envfa a la memoria intermedia 58 de bits desde la que se envio la solicitud. Finalmente, esta secuencia de Nx bits se anade a la memoria intermedia 58 de bits correspondiente. A continuacion se lee la siguiente palabra de codigo 57 desde esta memoria intermedia de bits, y el decodificador de bin 22 conectado inserta la secuencia de bins 21 asociada dentro de la memoria intermedia 20 de bin conectada. Como respuesta final a la solicitud original de un bin 19, el primer bin se elimina de la memoria intermedia 20 de bin y este bin 25 decodificado se envfa al selector 18 de memoria intermedia de bin. Cuando se envfa la siguiente solicitud de bin 19 a la memoria intermedia 20 de bin particular y la memoria intermedia de bin no esta vacfa, se elimina el siguiente bit de la memoria intermedia 20 de bin. Si la memoria intermedia de bin esta vacfa pero el numero Mx de bits de la memoria intermedia 58 de bits conectada es mayor que o igual a la longitud maxima de palabra de codigo Lx asociada, la siguiente palabra de codigo se lee desde la memoria intermedia de bits y se inserta una nueva secuencia de bins en la memoria intermedia de bin, a partir de la que se elimina el primer bits y se envfa al selector de memoria intermedia de bin. Si la memoria intermedia de bin esta vacfa y el numero Mx de bits en la memoria intermedia 58 de bits conectada es menor que la longitud maxima de la palabra de codigo Lx conectada, la siguiente secuencia de Nx bits se lee desde la memoria intermedia 61 de bits global y se inserta dentro de la memoria intermedia 58 de bits local conectada, se lee la siguiente palabra de codigo de la memoria intermedia de bits, se inserta una nueva secuencia de bin en la memoria intermedia de bin, el primer bin de la secuencia se elimina y envfa al selector de memoria intermedia de bin. Este proceso se repite hasta que todos los sfmbolos fuente se decodifican.
Al final de un paquete de datos, podna insertarse mas bin y/o bits que los requeridos para la decodificacion de los sfmbolos fuente requeridos dentro de la memoria intermedia de bin y/o memoria intermedia de bits. Los bin restantes en la memoria intermedia de bin y los bits restantes en la memoria intermedia de bits se descartan e ignoran.
Intercalado de secuencias de bits de longitud fija con restriccion de bajo retardo
El codificador y decodificador PIPE con intercalado de secuencias de bits de longitud fija puede combinarse tambien con el esquema para el control del retardo de memoria intermedia del codificador, que se ha descrito anteriormente, el concepto de codificacion PIPE es el mismo en el caso que implica el control del retardo descrito anteriormente. Si una medida en relacion con el retardo o una delimitacion superior del retardo (vease a continuacion) excede un umbral especificado, la primera entrada de memoria intermedia reservada se llena mediante la purga de la memoria intermedia de bin correspondiente (usando un mecanismo similar como al final de un paquete de datos) y escribiendo potencialmente bits adicionales para el llenado de todos los bits de la entrada de memoria intermedia de longitud fija reservada. Mediante dicho mecanismo, el numero de entradas de memoria intermedia en espera se reduce hasta que la medida del retardo asociado es menor que el umbral especificado. En el lado del decodificador, los bin y bits que se han insertado en el lado del codificador en orden para obedecer a la restriccion de retardo deben descartarse. Para este descarte de bin y bits puede usarse basicamente el mismo mecanismo que en el lado del codificador.
5
10
15
20
25
30
35
40
45
50
55
60
La medicion para el retardo (o una delimitacion superior del retardo) puede ser el numero de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global, en donde el numero de entradas de memoria intermedia activa es el numero de entradas de memoria intermedia de longitud fija reservada mas el numero de entradas de memoria intermedia de longitud fija que contienen bits ya escritos. Observese que la primera entrada de memoria intermedia es siempre una entrada de memoria intermedia de longitud fija reservada o una entrada de memoria intermedia libre, dado que si la primera entrada de memoria intermedia contiene bits escritos, estos bits se escriben al flujo de bits. Sea el retardo maximo de memoria intermedia permitida (tal como se determina por la aplicacion) de D bits. Este retardo maximo de memoria intermedia D debe ser conocido tanto para el codificador como para el decodificador. El retardo maximo de memoria intermedia D puede fijarse por la aplicacion. El retardo maximo de memoria intermedia D puede senalizarse en el interior del flujo de bits, por ejemplo en la cabecera del paquete de datos (o cabecera del fragmento) o en un conjunto de parametros, que se incluye en el flujo de bits. Puede senalizarse en unidades de bits, o bytes, o un multiplo de bits, o un multiplo de bytes. Si un codificador de bin 10 envfa una solicitud para la reserva de una nueva secuencia de bits de longitud fija a la memoria intermedia de bits 51 global, se ejecuta el siguiente proceso antes de que se reserve una nueva entrada en la memoria intermedia de longitud fija.
Si el numero de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global mas el numero de bits que se reservaran por la solicitud de reserva actual es mayor que el retardo maximo de memoria intermedia D, la primera entrada de memoria intermedia (que se reserva) se purga por el proceso descrito en lo que sigue hasta que el numero de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global mas el numero de bits que se reservaran por la solicitud de reserva actual sea menor que o igual al retardo maximo de memoria intermedia D. La purga de una entrada de memoria intermedia de longitud fija reservada es similar a la purga al final de un paquete de datos: El codificador de bin 10 que se conecta con la memoria intermedia de bits 48 que ha reservado la primera entrada de memoria intermedia correspondiente es purgada mediante la adicion de bins con valores particulares o arbitrarios a la memoria intermedia de bin 8 conectada hasta que la secuencias de bin resultantes representen una secuencia de bin que se asocia con una palabra de codigo, la palabra de codigo se inserta entonces en la memoria intermedia de bits 48 correspondiente. Como se ha mencionado anteriormente, una forma preferida para anadir bins a la memoria intermedia de bins es anadir aquellos bins que producen la palabra de codigo mas corta posible. Si, despues de la escritura de la palabra de codigo a la memoria intermedia de bits conectada y la insercion potencial de una secuencia de bits de longitud fija dentro de la memoria intermedia de bits global, hay aun bits en la memoria intermedia de bits (es decir, la escritura de palabras de codigo no llena completamente la secuencia de bits de longitud fija reservada), se anaden bits adicionales con valores particulares o arbitrarios a la memoria intermedia de bits hasta que se eliminen todos los bits de la memoria intermedia de bits y se escriban en la entrada de memoria intermedia reservada. Finalmente, al final de este proceso, la entrada de memoria intermedia completada (la primera entrada de longitud fija en la memoria intermedia de bits global) se elimina de la memoria intermedia de bits global y se escribe en el flujo de bits.
En el lado del decodificador, se ejecuta un proceso similar para descartar los bin y bits que se han anadido para obedecer a la restriccion de retardo. Por lo tanto, el decodificador mantiene un contador C que cuenta los bits que se han lefdo desde la memoria intermedia de bits global (este contador puede mantenerse en la memoria intermedia de bits global). El contador C se inicializa (por ejemplo con cero) al comienzo de la decodificacion de un paquete de datos y se incrementa despues de que se lea una secuencia de longitud fija. Si se lee una secuencia de Nx bits de longitud fija desde la memoria intermedia 61 de bits global, el contador C se incrementa en Nx. Ademas del contador global C, cada memoria intermedia 58 de bits contiene un contador Cx, que almacena al valor del contador de bits C antes de que se lea la ultima secuencia de bits de longitud fija dentro de la memoria intermedia 58 de bits correspondiente. Cuando una memoria intermedia 58 de bits particular lee una nueva secuencia de bits de longitud fija, su contador Cx se fija igual a C como una primera etapa y a continuacion la secuencia de bits de longitud fija se lee desde la memoria intermedia 61 de bits global. Cuando se envfa una solicitud de un bin 19 a una memoria intermedia 20 de bin particular y la diferencia (C - Cx) entre el contador global C y el contador Cx de la memoria intermedia 58 de bits conectada es mayor que el retardo maximo de memoria intermedia D, todos los bin que estan actualmente almacenados en la memoria intermedia 20 de bin particular y todos los bits que estan almacenados en la memoria intermedia 58 de bits conectada se descartan e ignoran. Junto a esa etapa adicional, la decodificacion se hace funcionar como se ha descrito anteriormente. Si la memoria intermedia 20 de bin a la que se envfa una solicitud de un bin 19 esta vacfa (o bien porque todos los bin ya se han eliminado o porque un mecanismo de bajo retardo descarto todos los bin en la primera etapa despues de que se haya recibido la solicitud de bin), el decodificador de bin 22 conectado intenta leer una nueva palabra de codigo desde la memoria intermedia 58 de bits conectada. Si el numero de bits en la memoria intermedia 58 de bits es mayor que la longitud de palabra de codigo maxima, se lee una nueva secuencia de bits de longitud fija desde la memoria intermedia 61 de bits global, antes de que se lea la palabra de codigo, etc.
Las Figs. 7 a 13 se refieren a posibilidades para conseguir una trayectoria de flujo de bits intercalada entre el codificador PIPE 104 por un lado y el decodificador PIPE 202 por otro lado. Como se ha descrito anteriormente con respecto a las Figs. 1 y 2, los aparatos de codificacion y decodificacion entropica pueden conectarse entre sf mediante dos canales separados, uno de los cuales transporta el flujo de bits VLC 112 y el otro de los cuales
5
10
15
20
25
30
35
40
45
50
55
60
transporta el flujo de bits codificado segun PIPE intercalado. Sin embargo, hay tambien posibilidades de intercalar incluso ambos flujos de bits VLC 112 asf como los flujos de bits codificados PIPE 118, y dichas posibilidades se describiran a continuacion con respeto a las Figs. 20 a 24. Sin embargo, antes de eso, se proporciona una base matematica con relacion al esquema de codificacion PIPE asf como detalles con relacion a como subdividir de modo optimo el intervalo de probabilidades con la asignacion de los resultados parciales individuales resultantes a los codificadores entropicos 116 y decodificadores entropicos 210 individuales, respectivamente.
Como ya se ha hecho notar, en la codificacion PIPE el espacio uniforme de la secuencia de entrada de sfmbolos discretos se mapea sobre un pequeno conjunto de intervalos de probabilidad binaria. Los modelos de probabilidad para los sfmbolos fuente pueden ser fijos o adaptativos mientras que la codificacion entropica que usa los intervalos de probabilidad permanece fija y se desacoplan de la etapa de modelizado. Cada uno de los intervalos de probabilidad puede codificarse usando un codigo de entropfa muy simple que tiene el nivel de complejidad de los codigos Huffman. La tasa en exceso del codigo de entropfa de probabilidad del intervalo de particion (PIPE, del ingles “Probability Interval Partitioning Entropy”) es similar al de la codificacion aritmetica pura.
La codificacion entropica, en general, puede considerarse como la forma mas generica de compresion de datos sin perdida. La compresion de datos sin perdida se dirige a representar datos discretos con menos bits que los necesarios para la representacion de datos original pero sin ninguna perdida de informacion. Los datos discretos pueden darse en la forma de texto, graficos, imagenes, video, audio, voz, facsfmil, datos medicos, datos meteorologicos, datos financieros o cualquier otra forma de datos digitales. En muchas aplicaciones de codificacion, los datos fuente originales se mapean primero en los denominados sfmbolos de codificacion y estos sfmbolos de codificacion se codifican a continuacion de modo entropico. El mapeado en sfmbolos de codificacion puede incluir la cuantificacion, en cuyo caso el esquema de codificacion global es con perdidas. Un sfmbolo de codificacion s puede tomar cualquier valor desde un alfabeto M-ario (M > 2) A = {ao,...,aM-1}. Para la finalidad de codificacion del sfmbolo s, el alfabeto se asocia con una funcion de masa de probabilidad (pmf) estimada {ps(ao),...,Ps(aM-1)} y todas las dependencias entre sfmbolos de codificacion que no se consideran en esta pmf se desprecian. Para estos ajustes abstractos, la entropfa
M-1
Hs = -X Ps (a,- )log2 Ps (a,.)
i=0
(B1)
es la delimitacion inferior mas grande para la longitud de palabra esperada en bits por sfmbolo, para la codificacion de los sfmbolos s, que puede conseguirse con tecnicas de codificacion entropica. Durante decadas, la codificacion Huffman, y la codificacion aritmetica han dominado la codificacion entropica practica. Hay ejemplos bien conocidos de codigos practicos capaces de aproximarse al Kmite entropico (en un cierto sentido).
Para una distribucion de probabilidad fija, los codigos de Huffman son relativamente faciles de construir. La propiedad mas atractiva de los codigos de Huffman es que su implementacion puede realizarse de modo eficiente mediante el uso de tablas de codigos de longitud variable (VLC). Sin embargo, cuando se trata con estadfsticas fuente variables en el tiempo, es decir, probabilidades de sfmbolos cambiantes, la adaptacion del codigo Huffman y sus tablas VLC correspondientes es bastante exigente, tanto en terminos de complejidad algontmica asf como en terminos de costes de implementacion. Tambien, en el caso de tener un valor de alfabeto dominante con Ps(a,) > 0,5, la redundancia del codigo de Huffman correspondiente (sin el uso de ninguna extension de alfabeto tal como la ejecucion de codificacion de tirada) puede ser bastante sustancial. Otros inconvenientes de los codigos Huffman viene dado por el hecho de que en caso de tratar con modelizados de probabilidad de orden mas alto, pueden requerirse multiples conjuntos de tablas VLC.
La codificacion aritmetica, por otro lado, aunque es sustancialmente mas compleja que la VLC, ofrece la ventaja de un manejo mas consistente y adecuado cuando se maneja un modelizado de probabilidad adaptativo y de orden mas alto asf como con el caso de distribuciones de probabilidad altamente sesgadas. Realmente, esta caractenstica es el resultado basicamente del hecho de que la codificacion aritmetica proporciona un mecanismo, al menos conceptualmente, para mapear cualquier valor dado de estimacion de probabilidad en una forma mas o menos directa a una parte de la palabra de codigo resultante. Estando provista con dicha interfaz, la codificacion aritmetica permite una clara separacion entre las tareas de modelizado de probabilidad y estimacion de probabilidad, por un lado, y la codificacion entropica real, es decir el mapeado de sfmbolos a palabras de codigo, por otro lado.
A diferencia de los esquemas de codificacion entropica convencional recien explicados, la codificacion PIPE usa particionado de los intervalos de probabilidad, cuya base matematica se describe con mas detalle a continuacion.
Considerese la secuencia de sfmbolos de codificacion {s0,...,s«-1}. Cada sfmbolo se extrae de un alfabeto si e A,. Los alfabetos A, = {a0, a,,...} contienen dos o mas letras estando cada una asociada con una estimacion de probabilidad ps (am). Las estimaciones de probabilidad ps (a'm) son conocidas para codificador y decodificador y pueden ser fijas
5
10
15
20
25
30
35
40
45
50
o variables. Se supone que las probabilidades variables se estiman simultaneamente en el codificador y decodificador. Los alfabetos Ai pueden ser tanto identicos para la secuencia de sfmbolos como asociarse tipos de sfmbolos diferentes con diferentes alfabetos. En este ultimo caso, se supone que el decodificador conoce el alfabeto de cada sfmbolo en la secuencia. Esta suposicion se justifica dado que las descripciones de codec fuente practicas contienen una sintaxis que estipula el orden de los sfmbolos y sus alfabetos.
La secuencia de sfmbolos {so,...,sw-i} se convierte en una secuencia de sfmbolos binarios, que tambien se denominan como bins. Para cada sfmbolo s, la binarizacion
bi = {b0...} = Yb(Si) (B2)
representa un mapeado biyectivo de letras del alfabeto a'm en conjuntos de bins ordenados b'm. El mapeado de binarizacion Yb puede ser diferente para diferentes sfmbolos si o categorias de srnbolos. Cada secuencia de bins i para un sfmbolo particular si consiste en uno o mas bins b'k. En el lado del decodificador, puede reconstruirse un sfmbolo si mediante el mapeado inverso si = (Yb )-1(b') dada la secuencia de bins b'. Como resultado de la binarizacion, se obtiene una secuencia de bins {bo, ..., bs-i} que representa la secuencia de sfmbolos fuente {so, ...,sw-i}.
Todos los bins bj se asocian con el mismo alfabeto binario B = {0,1}, pero las pmfs binarias correspondientes {p‘0, pi} siendo pj = p0, son normalmente diferentes. Una pmf binaria {p0, pi} puede describirse por el valor del bin menos probable (LPB) bjPB y su probabilidad pj_FB (siendo pj_FB < 0,5). Esta descripcion de probabilidad binaria {b[pB, p[PB} puede deducirse directamente de estimaciones de probabilidad ps(a'm) para los alfabetos de sfmbolos dados los mapeados de binarizacion Yb. Es posible tambien (y frecuentemente preferible) estimar directamente {b[PB , p[PB } simultaneamente en el lado del codificador y del decodificador. Por lo tanto, los bins pueden asociarse
con un modelo de probabilidad (al que tambien se hace referencia como un contexto) basandose en la sintaxis y sfmbolos o bins realmente codificados. Y para cada modelo de probabilidad, la descripcion de probabilidad {b[PB , p[PB } puede estimarse basandose en los valores de los bins que se codifican con el modelo de probabilidad. Un ejemplo de dicho modelizado de probabilidad binario se describe con respecto a CABAC de H.264.
Dado que la funcion entropica binaria
H(p) = -p log2(p) - (1 - p) log2(1 - p) (B3)
es simetrica alrededor de p=0,5, el mismo codificador binario puede usarse para la codificacion de todos los bin que se asocian con la misma probabilidad LPB p[PB , independientemente del valor de b[PB . Por lo tanto la secuencia de
bins {bo...,bB-i} se convierte en una secuencia de bins de codificacion {bj , ..., bcB_1}. Para cada bin bj, se especifica el mapeado biyectivo correspondiente Yj mediante
bj = yj (bj) = bt ® b
j
LPB
(B4)
en la que © indica el operador O exclusiva. En el lado del decodificador, los bins bj pueden reconstruirse dados los bins de codificacion bj y el valor LPB correspondiente bJLPB mediante el mapeado inverso bt = (Yj )-1(bj) =
bj ©bj^ . Un bin codificado bj = 0 especifica que el valor de bin correspondiente bj es igual al valor LPB b‘LB y un bin codificado bj = 1 especifica que el valor del bin correspondiente bj es igual al valor del bin mas probable (MPB)
1 - b
j
LPB ■
La secuencia de bins codificados {bj , ..., bB-1} unicamente representa la secuencia de sfmbolos fuente {s0, ..., s«-1} y las estimaciones de probabilidad correspondientes, que pueden emplearse para codificacion entropica, se describen completamente por las probabilidades LPB pLPB (siendo pLPB < 0,5). Por ello, solo necesitan considerarse las probabilidades en el intervalo semiabierto (0, 0,5] para el diseno del codificador entropico binario para la codificacion de bins bj.
5
10
15
20
25
30
35
40
45
Para la codificacion entropica binaria real, la secuencia de bins de codificacion {bc0 , ..., b°B_1} se proyecta sobre un numero pequeno de intervalos de probabilidad Ik. El intervalo de probabilidad LPB (0, 0,5] se particiona en K intervalos Ik = (pk, pk+1]
R_1
UIk = (0, 0,5] y Ik n Ij = 0 para k t j (B5)
El conjunto de K se caracteriza por K-1 bordes de intervalo pk siendo k = 1,...,K-1. Sin perdida de generalidad suponemos que pk < pk+1 para k = 0, ..., K. Los bordes de intervalo exteriores se fijan y dan por p0 = 0 y pk = 0,5. Un codificador entropico binario no adaptativo simple se designa para cada intervalo Ik. Todos los bins de codificacion bC con probabilidades LPB asociadas pjPB e Ik se asignan al intervalo Ik y se codifican con el codificador entropico fijo correspondiente.
En la descripcion que sigue, todos los bins bc representan bins de codificacion y todas las probabilidades p son probabilidades LPB p[PB .
Para investigar el impacto del esquematizado en el intervalo de probabilidad sobre la eficiencia de codificacion, suponemos que podemos disenar un codificador entropico optimo para una probabilidad fija que alcanza la delimitacion entropica. Cada intervalo de probabilidad Ik = (pk, pk+1] se asocia con una probabilidad representativa pIk e Ik y el codificador entropico optimo correspondiente debena conseguir el lfmite de entropfa para su probabilidad representativa. Bajo esta suposicion, la tasa de codificacion de un bin con probabilidad p que use el codificador entropico optimo para el intervalo representativo pIk viene dado por
R(p, pIk) = -p log2(pk - (1 - p) log2(1 - pIk)
= H(pIk) + (p - pk) H’(pIk) (B6)
en la que H(p) representa la funcion de entropfa binaria 3 y
H(p) = log2
(B7)
En su primera derivada. Suponemos adicionalmente que la distribucion de probabilidades en el intervalo (0, 0,5]
1-0,5
viene dada por /(p), siendo J f (p)dp = 1. A continuacion, la tasa esperada, en bits por bin, para un conjunto dado de K intervalos {Ik} con probabilidades representativas correspondientes p} puede describirse como
R = R({Ik}, {pIk}) =
£ JR(p, p<k )f(p)dp
k=0 1 pk
(B8)
La primera derivada parcial con respecto a cualquier probabilidad representativa pIk, con k = 0, ..., K-1, viene dada por
dp>k
-R =
pk JPk+1 f (p)dp _JP‘+1 pf (p)dp
k Jpu Jpk
pik (1_ pik )ln2
d
(B9)
La ecuacion
-R = 0 tiene una solucion unica
d
JPt+1 pf (p)dp
JPk________
p 1f(p)dp
^pk
(B10)
para la probabilidad representativa pik dentro del dominio de definicion Ik. La segunda derivada parcial para esta solucion
5
10
15
20
25
30
35
40
45
50
_d!
f+1 Pf (P)dp
JPk________
Plk (1-Pi )ln2
es siempre mayor que cero si
f+1 pf(p)dp > 0
JPk
(B12)
Por ello, si se cumple la condicion B12, el valor p,* dado por la ecuacion B10 es la probabilidad representativa para
un intervalo Ik que minimiza la tasa global R esperada dadas las fronteras del intervalo pk y pk+1. En caso contrario, no se proyecta ningun bin en el intervalo Ik y la probabilidad representativa pik e Ik puede elegirse arbitrariamente sin ningun impacto en la tasa global R; pero dicha configuracion debena evitarse, dado que el intervalo Ik no debena emplearse para codificacion entropica.
Para hallar una condicion para los bordes de intervalo optimos, investigamos las primeras derivadas de la tasa global R esperada con respecto a los bordes de intervalo pk con k = 1,..., K-1. Si /(p) > 0 para todo p e [p/k-1,PIk), la
d
ecuacion -----R = 0 tiene una unica solucion.
dpk
pk =
H( plt) - p,H'(plt) - H( plkJ + p,t_H'(plkJ H'(pk-1) - H'(pk )
(B13)
para el borde de intervalo pk dentro del dominio de definicion [pIk-1, pIk) y la segunda derivada parcial para esta solucion
d2 dp2k
R(pk ) = f (pk )(H'(plk-1) - H'(plk))
(B14)
es siempre mayor que cero, de modo que p^ es el borde del intervalo pk e [pIk-1, pIk) que minimiza la tasa global R esperada dados los intervalos representativos pkk_1 y pIk. Si existen probabilidades p e [pIk-1, pIk) con f(p)=0, la
d
ecuacion -----R = 0 tiene multiples soluciones, pero pk tal como se da por la ecuacion B13 es aun optimo incluso
dpk k
aunque puedan existir soluciones optimas adicionales.
Dado el numero de intervalos K y la probabilidad de distribucion /(p), los bordes de intervalo pk, con k=1,...,K-1, y las representaciones del intervalo pIk, con k = 0,..., K-1, que minimizan la tasa global R esperada pueden obtenerse mediante la resolucion del sistema de ecuaciones dado por las ecuaciones B10 y B13 sometido a las condiciones B12 para k = 0,...,K-1. Esto puede conseguirse con el siguiente algoritmo iterativo.
Algoritmo 1:
1) Particionar el intervalo (0, 0,5] en K intervalos arbitrarios Ik = (pk, pk+1] con p0 = 0, pk = 0.5, y pk < pk+1 para todo k = 0,...,K-1 de tal forma que las condiciones B12 se obedezcan para todo k = 0,...,K-1.
2) Actualizar los representantes pIk con k = 0,...,K-1 de acuerdo con la ecuacion B10
3) Actualizar los bordes de intervalo pk con k = 1,..., K-1 de acuerdo con la ecuacion B13
4) Repetir las dos etapas previas hasta convergencia
La Figura 14 muestra un ejemplo para el discretizado del intervalo optimo usando el algoritmo descrito. Para este ejemplo, suponemos una distribucion de probabilidad uniforme f(p) = 2 para 0 < p > 0,5 y se particiona el intervalo de probabilidad (0, 0,5] en K = 4 intervalos. Puede verse que el discretizado del intervalo de probabilidad conduce a una aproximacion lineal en forma de piezas A(p) de la funcion de entropfa binaria H(p) siendo A(p) > H(p) para todo p e (0, 0,5].
Como medida para el impacto del discretizado del intervalo sobre la eficiencia de codificacion puede usarse la tasa global esperada de incremento con relacion al lfmite de entropfa
5
10
15
20
25
30
35
40
45
50
55
R
1-0,5
J0 H(p) f (p) dp
Para el ejemplo de la Figura 14, el valor esperado de la entropfa es igual a 1/(2ln2) bit por bin y la sobrecarga de la tasa p es igual al 1,01 %. La Tabla 4 lista las sobrecargas de tasa puni y pm para la distribucion de probabilidad
uniforme y una distribucion de probabilidad de incremento lineal fp)=8p con p e (0, 0,5], respectivamente, para numeros seleccionados de intervalos K.
Tabla 4: Sobrecarga de tasa respecto al numero de intervalos de probabilidad para la distribucion de probabilidad ________________________________uniforme y de incremento lineal_______________________________
K
1 2 4 8 12 16
Pn [%]
12,47 3,67 1,01 0,27 0,12 0,07
Pin [%]
5,68 1,77 0,50 0,14 0,06 0,04
Las investigaciones en esta seccion mostraron que el discretizado del intervalo de probabilidad LPB (0, 0,5] en un numero pequeno de intervalos con una probabilidad fija (por ejemplo, 8 a 10 intervalos) tiene muy poco impacto sobre la eficiencia de codificacion.
La codificacion de entropfa anteriormente explicada para intervalos de probabilidad, permite asf codificadores individuales que usen probabilidades fijas.
En lo que sigue, primero se muestra como puede disenarse un codigo simple para probabilidades fijas. Dados estos resultados, se desarrollan unos algoritmos que optimizan conjuntamente el diseno del codigo y la particion del intervalo de probabilidad LPB (0, 0,5].
Una codificacion entropica para probabilidades fijas p = pik puede realizarse usando codificacion aritmetica o codificacion de longitud variable. Para este ultimo caso, el siguiente enfoque parece ser simple y muy eficiente.
Se considera un esquema de codificacion entropica binaria para el que se mapea un numero variable de bins sobre unas palabras de codigo de longitud variable. Para una capacidad de decodificacion unica, el mapeado inverso de una palabra de codigo a una secuencia de bins debe ser unico. Y dado que se desea disenar un codigo que enfoque el Kmite de entropfa tan proximo como sea posible, restringimos las consideraciones a mapeados biyectivos. Dicho mapeado biyectivo puede representarse por un arbol binario en donde todos los nodos de hoja se asocian con palabras de codigo, tal como se representa en la Figura 15. Los tres bordes representan eventos binarios. En el ejemplo de la Figura 15, los Kmites inferiores representan el valor de bin LPB y los Kmites superiores representan el valor de bin MPB. El arbol binario representa un codigo de prefijo para los bins si es un arbol binario completo, es decir, si cada nodo es o bien una hoja o tiene dos descendientes. Cada nodo de hoja se asocia con una probabilidad basandose en una probabilidad LPB p dada. El nodo rafz tienen la probabilidad praiz = 1. La probabilidad para todos los otros nodos se obtiene multiplicando la probabilidad del ascendiente correspondiente por p para los descendientes LPB y q = 1 - p para los descendientes MPB. Cada nodo de hoja L1 se caracteriza por el numero de Kmites LPB a1 y el numero de Kmites MPB b desde el nodo rafz al nodo hoja. Para una probabilidad LPB p particular, la probabilidad p1 para el nodo hoja L1 = {a1, b} es igual a
pi = pai (1 - p)bl (B16)
El arbol binario T se caracteriza totalmente por el numero de nodos hoja L y los pares {a1, b} asociados siendo I = 0, ..., L-1.
Dado el arbol binario T completo y una probabilidad LPB p, la asignacion optima de palabras de codigo a nodos hoja puede obtenerse mediante el algoritmo de Huffman. El numero variable resultante de mapeado C de bits a palabras de codigo de longitud variable (V2V) se caracteriza por el numero de palabras de codigo L, que es identico al numero de nodos hoja, y de tuplas {a1, b, /1} para I = 0, ..., L-1, en donde I1 representa la longitud de la palabra de codigo que se asocia con el nodo hoja L1 = {a1, b} correspondiente. Deberia tomarse nota que hay multiples posibilidades para la asignacion de palabras de codigo dadas por las longitudes de palabra de codigo {/1} y las asignacion de palabras de codigo real no es importante siempre que las palabras de codigo representen un codigo de prefijo decodificable unicamente. La tasa esperada R(p, C) en bits por bin para un codigo C dado y una probabilidad LPB p es la relacion de longitud de palabra de codigo esperada y el numero esperado de bins por palabra de codigo
5
10
15
20
25
30
35
40
45
R(p, C) =
L-1
Z PI
i=0__________
L-1
Z Pi (ai + bi)
i=0
L-1
Z pqi (i- p)blii
i=0_____________
L-1
Z Pqi(1- P)bIi (ai + bi)
i=0
(B17)
El diseno del codigo esta frecuentemente limitado por factores como el numero maximo de palabras de codigo L, el numero maximo de bins por palabra de codigo, o la longitud maxima de la palabra de codigo, o esta restringido a codigos de estructuras particulares (por ejemplo, para permitir un analisis optimizado). Si suponemos que se da el conjunto Sc de codigos utilizable para una aplicacion particular, el codigo optimo C* e Sc para una probabilidad LPB p particular puede hallarse minimizando la tasa esperada R(p, C)
C
(p) = arg min R(p,C)
V Ce Sc
(B18)
Como alternativa mas rapida, el minimizado tambien puede proceder sobre un conjunto dado de arboles binarios St y para cada arbol solo se considera un codigo V2V C que se obtiene mediante el algoritmo Huffman. Como un ejemplo, se disenan codigos V2V para varias probabilidades LPB p mediante la consideracion de todos los arboles binarios T para los que el numerode nodos hoja L es menor que o igual a un maximo dado Lm. En la Figura 16, el incremento de tasa relativo p(p, C (p)) = R(p, C (p))/N(p) se trata sobre la probabilidad LPB p para tamanos de tabla maximo Lm seleccionados. El incremento de tasa p(p) puede reducirse normalmente permitiendo tamanos de tabla mayores. Para probabilidades LPB mayores, es normalmente suficiente un tamano de tabla L pequeno de 8 a 16 palabras de codigo para mantener el incremento de tasa p(p) razonablemente pequeno, pero para probabilidades LPB mas pequenas (por ejemplo, p < 0,1), se requieren tamanos de tabla L mayores.
En las secciones previas, se considero el discretizado de probabilidad optimo suponiendo codigos optimos y el diseno de codigo para probabilidades LPB fijas. Pero dado que, en general, no se puede conseguir el lfmite de entropfa con codigos V2V reales de tamanos de tabla limitados, debe considerarse el diseno de codigo y la particion del intervalo de probabilidad LPB (0, 0,5] conjuntamente para la obtencion de un diseno de codigo entropico optimizado.
Para un intervalo dado Ik = p pk+1], un codigo Ck de un conjunto Sc dado es un codigo c; optimo si minimiza la tasa esperada R = P+1 R(p,Ck) f(p) dp para el intervalo dado.
Wk
C; = arg mm P+1 R(p,Ck) f(p) dp
V Ce Sc * pk
(B19)
Para disenos practicos, el minimizado de la integral en la ecuacion B19 puede simplificarse, con un impacto mmimo en la eficiencia de codificacion, determinando primero una probabilidad representativa optima p; para el intervalo Ik
de acuerdo con la ecuacion B10 y eligiendo a continuacion el codigo C; optimo del conjunto dado Sc para la probabilidad representativa p; de acuerdo con la ecuacion B18.
Bordes de intervalo optimos pk, con k = 1, ..., K-1, dado el conjunto de codigos Ck, con k = 0, ..., K-1, pueden deducirse minimizando la tasa global esperada
R = R({pk}, {Ck}) =
Z jR(p,Ck) f(p) dp
k=0 V pk J
(B20)
d
Establecer las primeras derivadas con respecto a los bordes de intervalos iguales a cero, -----R = 0, para k = 1,
fyk
K-1, conduce a
p; = pk con R(pk, Ck-1) = R(pk, Ck) (B21)
De modo similar que para la conexion B13, se puede mostrar que p; es siempre una solucion optima, pero dependiendo de la distribucion de probabilidad /(p) pudieran existir soluciones optimas adicionales. Por ello, un borde de intervalo optimo p; entre dos intervalos Ik-1 e Ik con codigos asociados Ck-1 y Ck dados, respectivamente,
5
10
15
20
25
30
35
40
45
50
55
60
es el punto de interseccion de las funciones R(p, Ck-1) y R(p, Ck).
En consecuencia, puede usarse el siguiente algoritmo interactivo para deducir conjuntamente la particion del intervalo de probabilidad y los codigos asociados dado el numero K de intervalos de probabilidad, el conjunto de codigos Sc posibles y la distribucion de probabilidad /(p), con p e (0, 0,5].
Algoritmo 2:
1) Deducir las fronteras iniciales de intervalo de probabilidad pk, con k = 0, ..., K, especificado en la seccion 3
2) Deducir las representaciones pik para los intervalos de probabilidad Ik, con k = 0, ..., ecuacion B10
3) Deducir los codigos Ck e Sc para las representaciones de intervalo pik, con k = 0, ..., ecuacion B18
4) Actualizar los bordes de intervalo pk, con k = 1,...,K-1, de acuerdo con la ecuacion B21
5) Repetir las tres etapas previas hasta convergencia
Las etapas 2 y 3 en el algoritmo 2 podnan sustituirse tambien por una deduccion directa de los codigos Ck e Sc, con k = 0, ..., K-1, basandose en los bordes del intervalo pk, con k = 0, ..., K, de acuerdo con la ecuacion B19. Y, como se menciona en la seccion 4.1, el minimizado en la etapa 3 puede proseguir tambien sobre un conjunto dado de arboles binarios Sr en donde para cada arbol binario T solo se considera un codigo V2V Ck obtenido mediante el algoritmo de Huffman.
Como un ejemplo, se deduce conjuntamente la particion en K = 12 intervalos de probabilidad y codigos V2V correspondientes usando el algoritmo 2. Para ello, el minimizado en la etapa 3 del algoritmo se sustituyo con un minimizado equivalente sobre un conjunto dado de arboles binarios Sr en donde el codigo evaluado C para cada arbol T se obtuvo mediante el algoritmo de Hoffman. Wc arboles T considerados con un numero maximo de Lm = 65 nodos de hoja y por ello C codigos con hasta 65 entradas de tabla. Todos los arboles binarios T con hasta 16 nodos de hoja se han evaluado en el minimizado; para arboles con mas de 16 nodos de hoja, se empleo una busqueda suboptima dados los mejores resultados para los arboles con un numero mas pequeno de nodos de hoja.
En la Figura 17, el incremento esperado de tasa con relacion al lfmite de entropfa AR(p) = R(p) - H(p) para el diseno de codigo de ejemplo se traza sobre la probabilidad LPB p. Como comparacion, tambien se trazo dentro del diagrama el incremento de tasa AR esperado para el discretizado del intervalo de probabilidad teoricamente optimo (tal como se desarrolla en la seccion 3) y el discretizado de probabilidad teoricamente optimo con la restriccion adicional pik-1 = 0,5. Puede verse que el discretizado del intervalo de probabilidad conjunto y el diseno del codigo V2V conduce a un desplazamiento de los bordes del intervalo (los bordes del intervalo pk, con k = 1, ..., K-1, vienen dados por el maximo local de las curvas AR(p)). El incremento de tasa global esperado relativo con relacion al lfmite
de entropfa para el ejemplo del diseno con codigos V2V reales es p = 0,24 %, cuando se asume una distribucion de probabilidad uniforme /(p). Los incrementos de tasa relativos correspondientes para el discretizado de intervalo de probabilidad teoricamente optimo y el discretizado de probabilidad teoricamente optimo con la restriccion adicional
pik = 0,5 son p = 0,12 % y p = 0,13 %, respectivamente.
La finalizacion de la palabra de codigo puede realizarse como sigue. Cuando se codifica una secuencia finita de sfmbolos {S0,..., sN-1}, cada uno de los K. codificadores binarios procesa una secuencia finita de bins de codificacion b bC = {bc, ..., bcB_1 }k, con k = 0,..., K-1. Y se ha asegurado que, para cada uno de los K codificadores binarios, todos los bin de codificacion de la secuencia bck = {bC , ..., bcB_1 }k puedan reconstruirse dada la palabra de codigo o secuencia de palabras de codigo Ck( b°k ).
Cuando se emplea codificacion aritmetica, la palabra de codigo aritmetica para la secuencia de bins de codificacion ha de finalizarse en una forma, en la que todos los bin de codificacion puedan decodificarse dada la palabra de codigo. Para los codigos V2V descritos anteriormente, los bins al final de la secuencia bC pueden no representar
una secuencia de bins que este asociada con una palabra de codigo. En dicho caso, puede escribirse cualquier palabra de codigo que contenga el resto de la secuencia de bins como prefijo. La sobrecarga puede minimizarse, si se elige la palabra de codigo correspondiente (o una de esas palabras de codigo) que tenga la longitud minima. En el lado del decodificador, los bins lefdos adicionalmente al final de la secuencia de bins, que pueden identificarse dada la sintaxis del flujo de bits y esquemas de binarizacion, se descartan.
Se presenta a continuacion un diseno de codigo simple de ejemplo. Con finalidades de ilustracion, se considera el ejemplo simple de una fuente {s} con tres letras y probabilidades asociadas fijas de ps(aa) = 0,7, ps(a1) = 0,18, y ps(a2) = 0,12. El arbol de eleccion ternaria correspondiente puede convertirse en un arbol binario completo como se
38
usando el algoritmo 1 K-1, de acuerdo con la K-1, de acuerdo con la
5
10
15
20
25
30
35
40
muestra en la Fig. 18.
Una binarizacion para el arbol binario completo en la Fig. 18 se da en la Tabla 5. El sfmbolo ternario pmf ps se convierte en dos pmfs binarios pb0 = (0,7, 0,3) y pb1 = (0,6, 0,4). Para cada s^bolo s en el flujo de bits, esta presente el bin b0. Cuando ba es igual a 0, tambien esta presente bi. Observese que la binarizacion dada en la Tabla 2 es identica a un codigo de Huffman de letra simple optimo para la fuente s.
Tabla 5: Binarizacion de una fuente de tres letras. Las probabilidades LPB plpb son 0,3 para el primer bin y 0,4 para ____________________________________el segundo bin____________________________________
Sfmbolo ai
Probabilidad P(ai) Bin b0 Bin b1
a0
0,7 1
a1
0,18 0 1
a2
0,12 0 0
LPB Prob.
Plpb = P(bj = 0) 0,3 0,4
La entropfa para la fuente s es
H(0,7, 0,18, 0,12) = H(0,7, 0,3) + 0,3 H(0,6, 0,4) = 1,1726 bit/sfmbolo (B22)
La longitud media de la palabra de codigo del codigo Huffman de letra unica viene dado como
_ M-1
Lhc = ^ Pi tHC = 1,3 bits/sfmbolo
i=0
(B23)
Correspondiente a una redundancia de pHC = 0,1274 bit/sfmbolo o 10,87 % de sobrecarga de tasa esperado.
Para el ejemplo de binarizacion particular con pmfs fijas, los bins b0 y b1 ya representan codificacion de bins, dado que para ambos bins el valor LPB bjPB es igual a 0. La distribucion f(s) de las probabilidades LPB es discreta, con
/(p) = 0 excepto para p = 0,3 y p = 0,4. En consecuencia, el discretizado de probabilidad optimo conduce a K = 2 intervalos con representantes pi0 = 0,3 y pi1 = 0,4. El borde del intervalo p1 ente estos intervalos puede elegirse arbitrariamente en [0,3, 0,4).
Para la codificacion de la fuente, la secuencia de sfmbolos fuente se binariza en una secuencia de bins. El bin b0 se transmite para cada sfmbolo fuente. El bin b1 solo se transmite cuando b0 = 0. Los bins b0 y b1 se codifican por separado con probabilidades LPB constantes de pi0 = 0,3 y bi1 = 0,4, respectivamente.
Una codificacion eficiente de un alfabeto binario con probabilidad fija puede conseguirse simplemente mapeando un V2V. Ejemplos de mapeados para V2V con pequenas tablas de codificacion para las probabilidades LPB Plpb = 0,3 y Plpb = 0,4 se dan en la Tabla 6 y la Tabla 7, respectivamente. El mapeado V2V para Plpb = 0,3 conduce a una redundancia de 0,0069 bit/bin o 0,788 %. Para la probabilidad LPB de Plpb = 0,4, la redundancia es 0,0053 bit/bin o 0,548 %.
Tabla 6: Arbol y codigos de bin para una probabilidad LPB de Plpb = 0,3. La redundancia de este codigo es 0,788 %
Arbol de bin
Probabilidad Codigos
'11'
0,72 = 0,49 '1'
'01'
0,70,3 = 0,21
'01'
'0'
0,3 O o
Tabla 7: Arbol y codigos de bin para una probabilidad LPB de Plpb = 0,4. La redundancia de este codigo es 0,548 %
Arbol de bin
Probabilidad Arbol de codigo
'111'
0,63 = 0,216 '11'
'110'
'001'
0,62 0,4 = 0,144
'10'
0,60,4 = 0,24 '11'
'01'
0,40,6 = 0,24
'01'
o o
0,42 = 0,16 '000'
La tasa esperada global incurrida por el nuevo metodo de codificacion es
39
5
10
15
20
25
30
35
40
45
50
55
La redundancia global es del 0,73 % con relacion al Ifmite de entrc^a, lo que representa una mejora significativa en comparacion con el codigo de Huffman de letra unica.
Se podna argumentar que podna obtenerse una mejora de eficiencia de codificacion similar mediante la creacion de un codigo de longitud de tirada. Para el ejemplo anterior, podemos construir un codigo de longitud de tirada para el sfmbolo mas probable considerando las tiradas de hasta dos sfmbolos. Cada uno de los eventos {aoao, aoa-i, aoa2, ai, a2} se asociana con un la palabra de codigo separada. Dicho codigo conduce a la redundancia de 1,34 % con relacion al lfmite de entropfa. Realmente, los codigos V2V pueden considerarse como una generalizacion de los codigos de longitud de tirada para sfmbolos binarios (el codigo V2V en la Tabla 3 representa efectivamente un codigo de longitud de tirada). Para un alfabeto de sfmbolos unico con probabilidades fijas, puede conseguirse una eficiencia de codificacion similar que para el enfoque presentado creando un codigo que mapee un numero variable de sfmbolos fuente a palabras de codigo de longitud variable. La ventaja principal del enfoque presentado es su flexibilidad en el mapeado de secuencias de sfmbolos fuente arbitrarias con estimaciones de probabilidad fija o adaptativa a un numero pequeno de codificadores binarios simples que funcionan con probabilidades LPB fijas.
Se considera a continuacion como conseguir una capacidad de decodificacion unica.
Con el esquema de codificacion entropico presentado, la codificacion de una secuencia de sfmbolos fuente s = {s0,...,sN-1} consiste en las siguientes tres etapas basicas.
• binarizacion del sfmbolo b = {bo,...,bs-1} = Yb(s) que conducen la secuencia de bins b = {bo,...,bs-1}
• conversion de la secuencia de bins en una secuencia de bins de codificacion bc = {b£, ..., bcB_1} = yc(b)
• codificacion entropica binaria de la secuencia de bins de codificacion bc = {b£, ..., bB_1} usando discretizado del intervalo de probabilidad y K codificadores binarios fijos
La secuencia de sfmbolos s = {so,...,sw-1} puede decodificarse unicamente, si la secuencia de bins de codificacion bc = {bo , ..., bcB_1} puede decodificarse unicamente y los mapeados Yb y Yc pueden invertirse.
Dejemos que Ye notifique el mapeado del codificador de una secuencia de uno o mas bins de codificacion bc = {b£, ...} sobre una secuencia de una o mas palabras de codigo c(bc) = {co,...}
c(bc) = Ye(bc) (B25)
Para una capacidad de decodificacion unica de una secuencia de bins de codificacion bc dada la secuencia de palabras de codigo c(bc), el mapeado del codificador Ye debe tener la propiedad de que se asigna una unica palabra de codigo c(bc) a cada posible secuencia de bins de codificacion bc:
ybc, bc bc t bc ^ c( bc) t c( bc) (B26)
Esta propiedad se satisface siempre que se usan codigos aritmeticos o codigos de prefijo. Se satisface particularmente para los codigos v2v descritos en la seccion 4.1 (incluyendo la palabra de codigo, finalizacion descrita en la seccion 4.3), dado que los codigos V2V representan codigos de prefijo para numeros variables de bins.
Sin embargo, en el enfoque de codificacion entropica presentado, la secuencia de bins de codificacion bc se particiona en K subsecuencias bl, con k = o,... ,K-1,
{b0c , ..., bK_1} = Yp(bc) (B27)
y se asigna a cada una de las subsecuencias bc , una secuencia de palabras de codigo ck( bc ) que usa un mapeado de codificador yl particular. En consecuencia, la condicion de capacidad de decodificacion unica ha de extenderse. Una secuencia de bins de codificacion bc es decodificable unicamente dadas K secuencias de palabras de codigo ck(bc ), con k = o,...,K-1, si cada subsecuencia de bins de codificacion bc es unicamente decodificable dada la palabra de codigo ck( bc ) correspondiente y la regla de particion Ye es conocida para el decodificador. La regla de
5
10
15
20
25
30
35
40
45
50
particion Ye viene dada por el discretizado del intervalo de probabilidad LPB {Ik} y las probabilidades LPB pj_PB que se asocian con los bins de codificacion bc, con j = 0,..., B-1. Por ello, el discretizado del intervalo de probabilidad LPB {Ik} ha de ser conocido en el lado del decodificador y la probabilidad LPB pjPB para cada bin de codificacion bC, con j = 0,..., B-1, ha de deducirse de la misma manera en el lado del codificador y del decodificador.
Para el mapeado Yc de una secuencia de bins en una secuencia de bins de codificacion bc, cada unico bj, con j = 0,., B-1, se convierte mediante el mapeado binario bc = yC(bj) = b © bjPB. En el lado del decodificador, la secuencia de bins puede deducirse mediante los mapeados binarios
bj = (YC )-1(bC) = bC ©b‘pB (B28)
con j = 0,., B-1. Si el valor LPB b‘LPB para cada bin bj se deduce de la misma manera en el lado del codificador y del decodificador, estos mapeados (yC )-1 representan los inversos de los mapeados del codificador yC correspondientes y por ello
bC ©bLpB = b ©bjpB ©bjpB = b ©0 = bj (B29)
y por ello, la conversion Yb de una secuencia de bins b en una secuencia de bins de codificacion bC es invertible.
Finalmente, se investiga la capacidad de inversion de la binarizacion b= Yb(s) mediante la que cada sfmbolo s, con i = 0,., N-1, se mapea sobre una secuencia de bin b = Yb(si). Un sfmbolo si puede decodificarse unicamente dada
la correspondiente secuencia de bin b si el mapeado de binarizacion Yb asigna una secuencia de bin b‘m diferente a cada letra a'm del alfabeto A para el sfmbolo s. Sin embargo, esta condicion no es suficiente, dado que la particion de la secuencia de bins b = {b0, ..., bs-i} en secuencias de bin b que corresponden a los sfmbolos s, con i = 0, ..., N-1, no es conocida para el decodificador. Una condicion suficiente se da cuando para cada sfmbolo s, las secuencias de bin b‘m que se asocian con las letras a'm del alfabeto A correspondiente forman un codigo de prefijo y los mapeados de binarizacion Yb para cada sfmbolo s, con i = 0, ..., N-1, son conocidos en el lado del decodificador.
Las condiciones de capacidad de decodificacion unica para el enfoque de codificacion entropico presentado pueden resumirse como sigue:
• los mapeados de binarizacion Yb representan codigos de prefijo y son conocidos para el decodificador (en el orden de codificacion de sfmbolos)
• los modelos de probabilidad (b‘LPB, p[PB ) para todos los bins bj se deducen en la misma forma en el lado del codificador y del decodificador
• la particion del intervalo de probabilidad LPB (0, 0,5] en K intervalos Ik, con k = 0, ..., K-1, es conocida para el decodificador
• el mapeado Yk para cada intervalo de probabilidad Ik, con k = 0, ..., K-1, representa un codigo unicamente decodificable
En lo que sigue, se describen ejemplos del diseno global del codificador y decodificador con mas detalle. Se concentrara sobre esquemas de codificacion, en los que los modelos de probabilidad {bLPB, Plpb} para los bins se estiman directamente en el lado del codificador y del decodificador y los K codificadores binarios usan mapeados V2V descritos anteriormente. Cada sfmbolo fuente s se debera asociar con una categona de sfmbolos Cs, que determina el tipo de sfmbolo incluyendo su rango de valores. El orden de los sfmbolos y las categonas de sfmbolos asociadas deberan darse por la sintaxis, que se presume es conocida en el lado del codificador y del decodificador.
El diagrama de bloques para un ejemplo de diseno de codificador PIPE y de decodificador PIPE se ilustra en la Figura 19. En el lado del codificador, los sfmbolos s con categonas de sfmbolos Cs asociadas se suministran al interior del binarizador, que convierte cada sfmbolo s en una secuencia de bins bs = Yb (s).
El esquema de binarizacion Yb usado se determina basandose en la categona de sfmbolos Cs. Ademas, el binarizador asocia cada bin b a una secuencia de bins, con una indicacion Cb del modelo de probabilidad, que
5
10
15
20
25
30
35
40
45
50
55
60
espedfica el modelo de probabilidad que se usa para la codificacion del bin b. La indicacion Cb del modelo de probabilidad puede deducirse basandose en la categona del sfmbolo cs, el numero de bin del bin actual en el interior de la secuencia s de bins, y/o los valores de bins y sfmbolos ya codificados.
El estimador de probabilidad y asignador mantiene multiples modelos de probabilidad, que se caracterizan por pares de valores {dpe, Plpb}. Recibe bins b e indicaciones Cb del modelo de probabilidad del binarizador, y envfa el valor LPB biPB y la probabilidad LPB Plpb del modelo de probabilidad indicado a la parte que deduce el bin de codificacion y al cuantificador de probabilidad, respectivamente. Posteriormente, se actualiza el modelo de probabilidad {bLPB, Plpb} correspondiente usando el valor del bin b recibido.
La parte que deduce el bin recibe bins b y valores de LPB bLPB asociados del binarizador y el estimador de probabilidad y asignador, respectivamente, y envfa bins de codificacion bc, que se deducen mediante bc = b © bLPB, al cuantificador de probabilidad. El cuantificador de probabilidad envfa cada bin de codificacion bc a uno de los K codificadores binarios. Contiene informacion acerca de la cuantificacion {Ik} del intervalo de probabilidad LPB. La probabilidad LPB Plpb, que se asocia con un bin de codificacion bc y se recibe desde el estimador de probabilidad y asignador, se compara con los bordes del intervalo {pk} y el mdice del intervalo de probabilidad k, para el que se deduce Plpb e Ik. A continuacion, se envfa el bin de codificacion bc al codificador binario asociado.
Cada uno de los K codificadores binarios consiste en una memoria intermedia de bin y un codificador de bin. Cada memoria intermedia de bin recibe bins de codificacion bc desde el cuantificador de probabilidad y los almacena en el orden de codificacion. El codificador de bin implementa un mapeado V2V particular y compara la secuencia de bins en la memoria intermedia de bin con las secuencias de bin que se asocian con palabras de codigo. Si la secuencia de bin en la memoria intermedia de bin es igual a una de aquellas secuencias de bin, el codificador de bin elimina la secuencia de bin {bc} de la memoria intermedia de bin y escribe la palabra de codigo asociada ({bc}) en el flujo de palabras de codigo correspondiente. Al final del proceso de codificacion para una secuencia de sfmbolos, para todos los codificadores binarios para los que las memorias intermedias de bin estan vadas, se escribe una palabra de codigo de finalizacion tal como se describe en la seccion 4.3.
Los K flujos de palabras de codigo resultantes pueden transmitirse por separado, empaquetarse o almacenarse, o pueden intercalarse (comparese con la seccion 6.2) con la finalidad de transmision o almacenamiento.
En el lado del decodificador, cada uno de los K decodificadores binarios que consiste en un decodificador de bin y una memoria intermedia de bin recibe un flujo de palabras de codigo. El decodificador de bin lee las palabras de codigo ({bc}) desde el flujo de palabras de codigo e inserta la secuencia de bin asociada {bc} en el orden de codificacion, en la memoria intermedia de bin.
La decodificacion de la secuencia de sfmbolos es impulsada por la sintaxis subyacente. Se envfan solicitudes para un sfmbolo s junto con la categona del sfmbolo cs al binarizador. El binarizador convierte esta solicitud de este sfmbolo en solicitudes de bins. Una solicitud de un bin se asocia con una indicacion cb del modelo de probabilidad, que se deduce de la misma manera que en el codificador, y se envfa al estimador de probabilidad y asignador. El estimador de probabilidad y asignador funciona de manera similar a su contraparte en el lado del codificador. Basandose en la indicacion cb del modelo de probabilidad, identifica un modelo de probabilidad y envfa su valor LPB bLPB y probabilidad LPB Plpb a la parte que deduce el bin y al cuantificador de probabilidad, respectivamente.
El cuantificador de probabilidad determina uno de los K decodificadores binarios basandose en la probabilidad LPB Plpb, en la misma manera que el codificador binario lo determina en el lado del codificador, elimina el primer bin de codificacion bc en el orden de codificacion, de la memoria intermedia de bin correspondiente, y lo envfa a la parte que deduce el bin. La parte que deduce el bin recibe los bin bc de codificacion y valores LPB bLPB asociados del cuantificador de probabilidad y estimador de probabilidad y asignador, respectivamente, y determina los valores de bin b = bc © bLPB. Como respuesta final a la solicitud de bin enviada por el binarizador, la parte que deduce el bin envfa el valor de bin decodificado b al binarizador y al estimador de probabilidad y asignador.
En el estimador de probabilidad y asignador, el valor del bin decodificado b se usa para actualizar el modelo de probabilidad {bLPB, Plpb}, que se eligio mediante el valor cb asociado, en la misma manera que en el lado del codificador. Finalmente, el binarizador anade el bin b recibido a la secuencia de bins s que ya se ha recibido para una solicitud de sfmbolo y compara esta secuencia de bin s con las secuencias de bin que se asocian con valores del sfmbolo por el esquema de binarizacion ycbs. Si la secuencia de bin s coincide con una de esas secuencias de bin, el sfmbolo decodificado s correspondiente se produce como salida como respuesta final a la solicitud de sfmbolo. En caso contrario, el binarizador envfa solicitudes de bin adicionales hasta que se decodifica el sfmbolo s.
La decodificacion de una secuencia de sfmbolos se finaliza si no se reciben mas solicitudes de sfmbolos adicionales, lo que es condicionado por la sintaxis. Los bins de codificacion bc que puedan estar contenidos en las memorias intermedias de bin al final del proceso de decodificacion entropica (como resultado de las palabras de codigo de
5
10
15
20
25
30
35
40
45
50
55
60
finalizacion) se descartan.
Despues de haber descrito ciertos codificadores PIPE y decodificadores PIPE con relacion a las Figs. 3 a 13 y habiendo proporcionado una base matematica con relacion a la codificacion PIPE en general con relacion a las Figs. 14 a 19, se describen mas detalles para los aparatos de codificacion y decodificacion entropica, con relacion a las Figs. 20 a 24. Los siguientes ejemplos de las Figs. 22 a 24 intercalan entre sf no solo flujos de bits codificados PIPE, sino que intercalan el flujo de bits VLC y los flujos de bits codificados PIPE conjuntamente. En comparacion con ello, los codificadores PIPE y decodificadores PIPE con intercalado de flujos de bits codificados PIPE, mostrados en las Figs. 7 a 13, meramente proporcionan un intercalado separado de los flujos de bits codificados PIPE. Como ya se ha mencionado anteriormente, incluso esto mismo puede servir como base para conseguir un flujo de bits completamente intercalado mediante el uso de otro par de intercalador/desintercalador 134 y 228, respectivamente (veanse las Figs. 1 y 2), tal como, por ejemplo, mediante el uso del intercalador de flujos de bits tal como se muestra en las Figs. 5 y 6. Sin embargo, las posibilidades descritas a continuacion realizan el intercalado de una vez tanto en el flujo de bits VLC como en los flujos de bits codificados PIPE con el uso, en otras palabras, de un intercalador/desintercalador en una etapa 128 y 230, respectivamente.
Antes de describir en detalle casos en donde se intercalan sfmbolos codificados VLC y PIPE dentro de un flujo de bits, para conseguir un compromiso mas adecuado entre la complejidad y la eficiencia de codificacion, se describe una estructura basica de los mismos sin intercalado con respecto a las Figs. 20 y 21.
La estructura del aparato de codificacion entropica de la Fig. 1a se muestra en la Fig. 20. El aparato de codificacion entropica convierte un flujo de sfmbolos fuente 1a, que corresponden a la combinacion de sfmbolos fuente codificados VLC y codificados PIPE de las Figs. 1 y 2, concretamente 106 y 218, respectivamente, en un conjunto de dos o mas flujos de bits parciales 12, 12a, correspondiendo el flujo de bits 12a a los flujos de bits 112 y 206 de las Figs. 1 y 2.
Como ya se hecho notar anteriormente, cada sfmbolo fuente 1a puede tener asociado con el una indicacion que espedfica si el sfmbolo fuente esta codificando usando codigos vLc estandar dentro del codificador VLC 22a, que se corresponde con el codificador VLC 102 en la Fig. 1, o si el sfmbolo fuente se ha de codificar con un concepto de codificacion PIPE. Como ya se ha descrito anteriormente con respecto a las Figs. 1 y 2, esta indicacion no puede transmitirse explfcitamente al lado de decodificacion. Por el contrario, la indicacion de asociado puede proceder del tipo o categona del sfmbolo fuente en sr
Los sfmbolos 1b codificados VLC se codifican con codigos VLC estandar, que a su vez, pueden depender de la categona de sfmbolos recientemente mencionada o tipo de sfmbolo usando un codificador VLC 22a. Las palabras de codigo 11a correspondientes se escriben en un flujo de bits parcial 12a diferente. Los sfmbolos 1 de codigo no VLC se codifican usando codificacion PIPE como se ha descrito anteriormente con respecto a las Figs. 1 y 3, por ejemplo, con lo que se obtienen multiples flujos de bits 12 parciales. Algunos de los sfmbolos fuente 1a pueden haberse binarizado ya en una forma en la que consiste la binarizacion en dos partes ya anteriormente mencionada con respecto a la Fig. 1a. Otras de estas partes pueden codificarse con el enfoque PIPE y escribirse en los flujos de bits 12 parciales correspondientes. La otra parte de la secuencia de bin puede codificarse con los codigos VLC estandar y escribirse en el flujo de bits parcial 12a correspondiente.
El aparato de decodificacion entropica basico que se ajusta a la Fig. 20 se muestra en la Fig. 21.
El decodificador realiza basicamente las operaciones inversas del codificador de la Fig. 20, de modo que la secuencia previamente codificada de sfmbolos fuente 27, 27a se decodifica a partir de un conjunto de dos o mas flujos de bits parciales (24, 24a). El decodificador incluye dos flujos de proceso diferentes: un flujo para las solicitudes de datos, que replica el flujo de datos del codificador, y un flujo de datos, que representa la inversa del flujo de datos del codificador. En la ilustracion de la Fig. 21, las flechas discontinuas representan el flujo de solicitudes de datos, mientras que las flechas continuas representan el flujo de datos. Los bloques de construccion del decodificador replican basicamente los bloques de construccion del codificador, pero implementan las operaciones inversas.
Cada solicitud de sfmbolo 13a puede asociarse con una indicacion que espedfica si el sfmbolo fuente se codifica usando codigos VLC estandar o con el concepto de codificacion PIPE. Como ya se ha mencionado anteriormente con respecto a la Fig. 20, Este indicacion puede proceder de la regla de analisis o la sintaxis de los elementos de sintaxis representados por el sfmbolo fuente en sr Por ejemplo, con respecto a las Figs. 1 y 2, se ha descrito que diferentes tipos de elementos de sintaxis pueden asociarse con diferentes esquemas de codificacion, concretamente codificacion VLC o codificacion PIPE. Lo mismo se puede aplicar para diferentes partes de binarizaciones, o mas generalmente, otras simbolizaciones de los elementos de sintaxis. Si un sfmbolo se codifica VLC, la solicitud se pasa al decodificador VLC 22a y se lee una palabra de codigo VLC 23a desde un flujo de bits parcial 24a distinto. Se produce la salida del sfmbolo de decodificacion 27a correspondiente. Si el sfmbolo se codifica con PIPE, el sfmbolo 27 se decodifica a partir de un conjunto de flujos de bits 24 parciales tal como se ha descrito anteriormente con
5
10
15
20
25
30
35
40
45
50
55
60
respecto a la Fig. 4, por ejemplo.
Algunos de los sfmbolos fuente pueden binarizarse en una forma tal que la binarizacion consiste en dos partes. Una de estas partes se codifica con el enfoque PIPE y se decodifica correspondientemente a partir de los flujos de bits parciales 24 asociados. Y la otra parte de la secuencia de bins se codifica con codigos VLC estandar y se decodifica con un decodificador VLC 22a que lee las palabras de codigo 23a correspondientes a partir de un flujo de bits parcial 24a distinto.
Transmision y multiplexado de flujos de bits parciales (codificados VLC y codificados PIPE)
Los flujos de bits parciales 12, 12a que se crean por el codificador pueden transmitirse por separado, o pueden multiplexarse en un unico flujo de bits, o las palabras de codigo de los flujos de bits parciales pueden intercalarse en un unico flujo de bits.
Cada flujo de bits parcial para una cantidad de datos puede escribirse en un paquete de datos. La cantidad de datos puede ser un conjunto arbitrario de sfmbolos fuente tal como una imagen fija, un campo o un cuadro de una secuencia de video, un fragmento de una imagen fija, un fragmento de un campo o cuadro de una secuencia de video, o una trama de muestras de audio, etc.
Dos o mas de los flujos de bits 12, 12a parciales para una cantidad de datos o todos los flujos de bits parciales para una cantidad de datos pueden multiplexarse en un paquete de datos. La estructura de un paquete de datos que contiene flujos de bits parciales multiplexados puede ser tal como se ilustra en la Fig. 5.
El paquete de datos 300 consiste en una cabecera y una particion para los datos de cada flujo de bits parcial (para la cantidad de datos considerada). La cabecera 301 del paquete de datos contiene indicaciones para la particion del (resto del) paquete de datos en segmentos de datos 302 del flujo de bits. Junto a las indicaciones para la particion, la cabecera puede contener informacion adicional. Las indicaciones para la particion del paquete de datos pueden ser las localizaciones del comienzo de los segmentos de datos en unidades de bits o bytes o multiplos de bits o multiplos de bytes. Las localizaciones del comienzo de los segmentos de datos pueden codificarse como valores absolutos en la cabecera del paquete de datos, tanto con relacion al comienzo del paquete de datos como con relacion al final de la cabecera o con relacion al comienzo del paquete de datos previo. Las localizaciones del comienzo de los segmentos de datos pueden codificarse diferencialmente, es decir, solamente se codifica la diferencia entre el comienzo real de un segmento de datos y una prediccion para el comienzo del segmento de datos. La prediccion pueden deducirse basandose en informacion ya conocida o transmitida tal como el tamano global del paquete de datos, el tamano de la cabecera, el numero de segmentos de datos en el paquete de datos, la localizacion del comienzo de los segmentos de datos precedentes. La localizacion del comienzo del primer paquete de datos puede no estar codificada, sino deducirse basandose en el tamano de la cabecera del paquete de datos. En el lado del decodificador, las indicaciones de particion transmitidas se usan para deducir el comienzo de los segmentos de datos. Los segmentos de datos se usan entonces como flujos de bits parciales 12, 12a y los datos contenidos en los segmentos de datos se suministran al interior de los decodificadores de bin correspondientes y decodificadores VLC en orden secuencial.
Intercalado de palabras de codigo (palabras de codigo VLC y PIPE)
Para algunas aplicaciones, el multiplexado anteriormente descrito de los flujos de bits parciales (para una cantidad de sfmbolos fuente) en un paquete de datos puede tener las siguientes desventajas: por un lado, para pequenos paquetes de datos, el numero de bits para la informacion lateral que se requiere para senalizacion de la particion puede convertirse en significativo con relacion a los datos reales en los flujos de bits parciales, lo que finalmente reduce la eficiencia de codificacion. Por otro lado, el multiplexado puede no ser adecuado para aplicaciones que requieren un bajo retardo (por ejemplo, para aplicaciones de videoconferencia). Con el multiplexado descrito, el codificador no puede iniciar la transmision de un paquete de datos antes de que se hayan creado completamente los flujos de bits parciales, dado que las localizaciones del inicio de las particiones no son conocidas antes. Adicionalmente, en general, el decodificador ha de esperar hasta que recibe el comienzo del ultimo segmento de datos antes de que pueda comenzar la decodificacion de un paquete de datos. Para aplicaciones tales como sistemas de videoconferencia, estos retardos pueden anadirse a un retardo global adicional del sistema de varias imagenes de video (en particular, para tasas de bits que se aproximan a la tasa de bits de transmision y para codificadores/decodificadores que requieran practicamente el intervalo de tiempo entre dos imagenes para codificacion/decodificacion de una imagen), lo que es cntico para dichas aplicaciones. Para superar las desventajas para ciertas aplicaciones, el codificador puede configurarse en una forma tal que las palabras de codigo que se generan por los dos o mas codificadores de bin y el codificador VLC se intercalan en un unico flujo de bits. El flujo de bits con las palabras de codigo intercaladas, puede enviarse directamente al decodificador (cuando se desprecia un pequeno retardo de la memoria intermedia, vease a continuacion). En el lado del decodificador, los dos o mas decodificadores de bin y el decodificador VLC leen las palabras de codigo directamente del flujo de bits en el orden de decodificacion; la decodificacion puede iniciarse con el primer bit recibido. Ademas, no se requiere ninguna
5
10
15
20
25
30
35
40
45
50
55
60
informacion lateral para senalizacion del multiplexado (o intercalado) de los flujos de bits parciales.
La estructura basica de un codificador con intercalado de palabras de codigo se muestra en la Fig. 22. Los codificadores de bin 10 y el codificador VLC 10a no escriben las palabras de codigo directamente en los flujos de bits parciales, sino que se conectan con una unica memoria intermedia 29 de palabras de codigo, a partir de la que se escriben las palabras de codigo al flujo de bits 34 en orden de codificacion. Los codificadores de bin 10 envfan solicitudes de una o mas entradas de palabras de codigo 28 a la memoria intermedia 29 de palabras de codigo y posteriormente envfa las palabras de codigo 30 a la memoria intermedia 29, que se almacenan en las entradas de memoria intermedia reservadas. El codificador VLC 10a escribe directamente las palabras de codigo VLC 30a en la memoria intermedia 29 de palabras de codigo. Se accede a palabras de codigo 31 (en general de longitud variable) de la memoria intermedia 29 de palabras de codigo mediante un escritor 32 de palabras de codigo, que escribe los bits 33 correspondientes en el flujo de bits 34 producido. La memoria intermedia 29 de palabras de codigo funciona como una memoria primero en entrar primero en salir; las entradas de palabras de codigo que se reservan antes se escriben antes en el flujo de bits.
La memoria intermedia de palabras de codigo puede funcionar como sigue. Si se envfa un nuevo bin 7 a una memoria intermedia de bin 8 particular y el numero de bins ya almacenados en la memoria intermedia de bin es cero y no hay actualmente reservada ninguna palabra de codigo en la memoria intermedia de palabras de codigo para el codificador de bin que esta conectado con la memoria intermedia de bin particular, el codificador de bin 10 conectado envfa una solicitud a la memoria intermedia de palabras de codigo, mediante la que se reservan una o mas entradas de palabras de codigo en la memoria intermedia 29 de palabras de codigo para el codificador de bin 10 particular. Las entradas de palabras de codigo pueden tener un numero variable de bits; un umbral superior para el numero de bits en una entrada de memoria intermedia viene dado normalmente por el tamano maximo de la palabra de codigo para el codificador de bin correspondiente. La siguiente palabra de codigo o las siguientes palabras de codigo que se producen por el codificador de bin (para el que se ha reservado la entrada de palabras de codigo o las entradas de palabras de codigo) se almacenan en la entrada o entradas reservadas de la memoria intermedia de palabras de codigo. Si todas las entradas de memoria intermedia reservadas en la memoria intermedia de palabras de codigo para un codificador de bin particular se llenan con palabras de codigo y se envfa el siguiente bin a la memoria intermedia de bin que esta conectada con el codificador de bin particular, se reservan una o mas palabras de codigo nuevas en la memoria intermedia de palabras de codigo para el codificador de bin particular, etc. El codificador VLC 10a escribe directamente las palabras de codigo VLC 30a en la siguiente entrada libre de la memoria intermedia 29 de palabras de codigo, es decir para el codificador VLC la reserva de palabras de codigo y la escritura de las palabras de codigo se realiza de una vez. La memoria intermedia 29 de palabras de codigo representa una memoria intermedia primero en entrar primero en salir en una cierta forma. Las entradas a la memoria intermedia se reservan en orden secuencial. Las palabras de codigo para las que se han reservado antes las entradas de memoria intermedia correspondientes se escriben antes en el flujo de bits. El escritor 32 de palabras de codigo comprueba el estado de la memoria intermedia 29 de palabras de codigo, tanto continuamente como despues de que se escriba una palabra de codigo 30 en la memoria intermedia 29 de palabras de codigo. Si la primera entrada a la memoria intermedia contiene una palabra de codigo completa (es decir, la entrada de la memoria intermedia no esta reservada, pero incluye una palabra de codigo), la correspondiente palabra de codigo 31 y la correspondiente entrada de la memoria intermedia se eliminan de la memoria intermedia 20 de palabras de codigo y los bits de la palabra de codigo 33 se escriben en el flujo de bits. Este proceso se repite hasta que la primera entrada de la memoria intermedia no contiene una palabra de codigo (es decir, esta reservada o libre). Al final del proceso de decodificacion, es decir, si se han procesado todos los sfmbolos fuente de la cantidad de datos considerada, la memoria intermedia de palabras de codigo debe purgarse. Para ese proceso de purga, se aplica lo siguiente para cada memoria intermedia de bin/codificador de bin como una primera etapa: si la memoria intermedia de bin no contienen bins, se anade un bin con un valor particular o un valor arbitrario hasta que la secuencia de bin resultante representa una secuencia de bins que esta asociada con una palabra de codigo (como se hecho notar anteriormente, una forma preferida de anadir bins es anadir dichos valores de bin que producen la palabra de codigo mas corta posible —o una de ellas— que se asocia con una secuencia de bins que contiene el contenido original de la memoria intermedia de bin como prefijo), entonces se escribe la palabra de codigo en la siguiente entrada de la memoria intermedia reservada para el codificador de bin correspondiente y se vacfa (la correspondiente) memoria intermedia de bin. Si se ha reservado mas de una entrada de memoria intermedia para uno o mas codificadores de bin, la memoria intermedia de palabras de codigo puede contener aun entradas de palabras de codigo reservadas. En ese caso, estas entradas de palabras de codigo se rellenan con palabras de codigo arbitrarias, pero validas, para los codificadores de bin correspondientes. Puede insertarse la palabra de codigo valida mas corta o una de las palabras de codigo validas mas cortas (si hay multiples). El codificador VLC no requiere ninguna finalizacion. Finalmente, todas las palabras de codigo restantes en la memoria intermedia de palabras de codigo se escriben en el flujo de bits.
Se ilustran en la Fig. 23 dos ejemplos para el estado de la memoria intermedia de palabras de codigo. En el ejemplo (a), la memoria intermedia de palabras de codigo contiene 4 entradas que se llenan con una palabra de codigo (dos de ellas son entradas VLC) y 3 entradas reservadas. Ademas, se marca la siguiente entrada de la memoria intermedia libre. La primera entrada se llena con una palabra de codigo (es decir, el codificador de bin 2 justamente escribe una palabra de codigo en una entrada previamente reservada). En la siguiente etapa, esta palabra de codigo
5
10
15
20
25
30
35
40
45
50
55
60
se eliminara de la memoria intermedia de palabras de codigo y se escribe en el flujo de bits. A continuacion, la primera palabra de codigo reservada para el codificador de bin 3 es la primera entrada de memoria intermedia, pero esta entrada no puede eliminarse de la memoria intermedia de palabras de codigo, dado que solo esta reservada, pero no se ha escrito ninguna palabra de codigo en esta entrada. En el ejemplo (b), la memoria intermedia de palabras de codigo contiene 4 entradas que se llenan con una palabra de codigo (una de ellas es una entrada de memoria intermedia VLC) y 4 entradas reservadas. La primera entrada se marca como reservada y por ello el escritor de palabras de codigo no puede escribir una palabra de codigo al flujo de bits. Aunque estan contenidas 4 palabras de codigo en la memoria intermedia de palabras de codigo, el escritor de palabras de codigo ha de esperar hasta que se escribe la palabra de codigo en la primera entrada de memoria intermedia reservada para el codificador de bin 3. Observese que las palabras de codigo deben escribirse en el orden en que se reservaron, para ser capaz de invertir el proceso en el lado del decodificador (vease a continuacion). Y adicionalmente observese que una entrada de memoria intermedia VLC esta siempre completa, dado que la reserva y escritura de la palabra de codigo se realiza de una vez.
La estructura basica de un decodificador con intercalado de palabras de codigo se muestra en la Fig. 24. Los decodificadores bin 22 y el decodificador VLC 2a no leen las palabras de codigo directamente de flujos de bits parciales separados, sino que se conectan a una memoria intermedia 38 de bits, desde la que se leen las palabras de codigo 37, 37a en el orden de codificacion. Debena tomarse nota que no se requiere necesariamente la memoria intermedia 38 de bits, dado que las palabras de codigo podnan leerse tambien directamente desde el flujo de bits. La memoria intermedia 38 de bits se incluye principalmente en la ilustracion para separar claramente aspectos diferentes de la cadena de procesamiento. Los bits 39 del flujo de bits 40 con palabras de codigo intercaladas se insertan secuencialmente en la memoria intermedia 38 de bits, que representa una memoria intermedia primero en entrar primero en salir. Si un decodificador de bin 22 particular recibe una solicitud de una o mas secuencias de bin 35, el decodificador de bin 22 lee una o mas palabras de codigo 37 de la memoria intermedia 38 de bits a traves de la solicitud de bits 36. El decodificador puede decodificar instantaneamente los sfmbolos fuente. De modo similar, si el decodificador VLC 22a recibe una solicitud de un nuevo sfmbolo 19a lee la palabra de codigo VLC 37a correspondiente desde la memoria intermedia 38 de bits y devuelve el sfmbolo decodificado 27a. Observese que el codificador (como se ha descrito anteriormente) debe asegurar mediante la operacion en forma adecuada de la memoria intermedia de palabras de codigo que las palabras de codigo se escriben en el mismo orden al flujo de bits en el que se solicitan por los decodificadores de bin. En el decodificador, todo el proceso de decodificacion se activa mediante solicitudes de sfmbolos fuente. Parametros tales como el numero de palabras de codigo que se reservan en el lado del codificador por un codificador de bin particular y el numero de palabras de codigo que se leen por el decodificador de bin correspondiente deben ser los mismos.
Intercalado de palabras de codigo de longitud variable con restricciones de bajo retardo
El intercalado de palabras de codigo descrito no requiere que se envfe ninguna informacion de particion como informacion lateral. Y dado que las palabras de codigo se intercalan en el flujo de bits, el retardo es en general pequeno. Sin embargo, no se garantiza que se obedezca a una restriccion de retardo particular (por ejemplo especificada por un numero maximo de bits que se almacenan en la memoria intermedia de palabras de codigo). Adicionalmente, el tamano de la memoria intermedia requerido para memoria intermedia de palabras de codigo puede hacerse teoricamente muy grande. Cuando se considera el ejemplo de la Fig. 23(b), sena posible que no se envfen bins adicionales a la memoria intermedia 3 de bin y por ello el codificador de bin 3 no enviara ninguna nueva palabra de codigo a la memoria intermedia de palabras de codigo hasta que se aplique el proceso de purgado al final del paquete de datos. Entonces todas las palabras de codigo para los codificadores de bin 1 y 2 tendnan que esperar hasta el final del paquete de datos, antes de puedan escribirse en el flujo de bits. Este inconveniente puede sortearse anadiendo un mecanismo adicional al proceso de codificacion (y tambien al proceso de decodificacion tal como se describe mas adelante). El concepto basico de ese mecanismo adicional es que si una medida en relacion al retardo o a una delimitacion superior del retardo (vease a continuacion) supera un umbral especificado, la primera entrada en la memoria intermedia reservada se llena mediante el purgado de la memoria intermedia de bin correspondiente (usando un mecanismo similar al del final del paquete de datos). Mediante dicho mecanismo, el numero de entradas de memoria intermedia en espera se reduce hasta que la medida del retardo asociada sea menor que el umbral especificado. En el lado del decodificador, los bin que se han insertado en el lado del codificador para obedecer a la restriccion de retardo deben descartarse. Para este descarte de los bins puede usarse basicamente el mismo mecanismo que en el lado del codificador.
Despues de haber descrito en detalle posibilidades para intercalado de los flujos de bits de codificacion VLC y PIPE, en lo que sigue, la descripcion se enfoca de nuevo en los elementos de sintaxis ya mencionados anteriormente descompuestos en sfmbolos fuente tal como se ha mencionado con respecto a las Figs. 1b, 1c y 2b. Con finalidades de ilustracion, la siguiente descripcion asume que los elementos de sintaxis asf descompuestos son niveles de coeficiente de transformada absoluta. Sin embargo, esto es solamente un ejemplo, y pueden manejarse de la misma manera otros tipos de elementos de sintaxis. En particular, en lo que sigue se describe la codificacion de niveles absolutos mediante la particion y el uso de diferentes codigos de entrop^a en codificadores de imagen y video basados en bloques.
5
10
15
20
25
30
35
40
45
50
55
60
Por ejemplo, las imagenes de la secuencia de video se descomponen normalmente en bloques. Los bloques o los componentes de color de los bloques se predicen mediante o bien prediccion de movimiento compensado o intra prediccion. Los bloques pueden tener diferentes tamanos y pueden ser o bien cuadraticos o bien rectangulares. Todas las muestras de un bloque o un componente de color de bloque se predicen usando el mismo conjunto de parametros de prediccion, tales como indices de referencia (que identifican una imagen de referencia en el conjunto de imagenes ya codificadas), parametros de movimiento (que especifican una medicion para el movimiento de los bloques entre una imagen de referencia y la imagen actual), parametros para la especificacion del filtro de interpolacion, modos de prediccion intra, etc. Los parametros de movimiento pueden representarse por vectores de desplazamiento con un componente horizontal y vertical o mediante parametros de movimiento de orden mas alto tales como parametros de movimiento afinados que consisten en 6 componentes. Es posible tambien que se asocie mas de un conjunto de parametros de prediccion (tales como indices de referencia y parametros de movimiento) con un unico bloque. En ese caso, para cada conjunto de parametros de prediccion, se genera una unica senal de prediccion intermedia para el bloque o el componente de color de un bloque, y la senal de prediccion final se construye mediante una suma ponderada de las senales de prediccion intermedias. Los parametros de ponderacion y potencialmente tambien un desplazamiento constante (que se anade a la suma ponderada) pueden ser o bien fijos para una imagen, o una imagen de referencia, o un conjunto de imagenes de referencia, o pueden incluirse en el conjunto de parametros de prediccion para el bloque correspondiente. De modo similar, las imagenes fijas tambien se descomponen frecuentemente en bloques, y los bloques se predicen por un metodo de prediccion intra (que puede ser un metodo de prediccion intra espacial o un metodo de prediccion intra simple que predice el componente continuo de bloque). En el caso de una esquina, la senal de prediccion puede ser tambien cero.
La diferencia entre los bloques originales o los componentes de color de los bloques originales y las senales de prediccion correspondientes, que tambien se denominan como senales residuales, se transforman y cuantifican usualmente. Se aplica una transformada bidimensional a la senal residual y se cuantifican los coeficientes de transformada resultantes. Para esta codificacion de transformada, los bloques o los componentes de color de los bloques, para los que se ha usado un conjunto particular de parametros de prediccion, pueden repartirse adicionalmente antes de la aplicacion de la transformada. Los bloques de transformada pueden ser iguales o mas pequenos que los bloques que se usan para prediccion. Es posible tambien que un bloque de transformada incluya mas de uno de los bloques que se usan para prediccion. Diferentes bloques de transformada en una imagen fija o un cuadro de una secuencia de video pueden tener diferentes tamanos y los bloques de transformada pueden representar bloques cuadraticos o rectangulares.
Todos estos parametros de prediccion y residuales pueden formar el flujo de elementos de sintaxis 138 y 226, respectivamente.
Los coeficientes de transformada cuantificados resultantes, tambien denominados como niveles de coeficiente de transformada, pueden transmitirse a continuacion usando codificacion entropica mediante uno de los esquemas de codificacion anteriores. Con este fin, puede mapearse un bloque de niveles de coeficiente de transformada sobre un vector (es decir, un conjunto ordenado) de valores de coeficiente de transformada usando un escaneado, en donde pueden usarse diferentes escaneados para diferentes bloques. Frecuentemente se usa un escaneado en zigzag. Para bloques que contienen solo muestras de un campo de un cuadro entrelazado (estos bloques pueden ser bloques en campos codificados o bloques de campos en cuadros codificados), es comun tambien usar un escaneado diferente disenado espedficamente para bloques de campos. Un posible esquema de codificacion para la codificacion de la secuencia ordenada resultante de coeficientes de transformada es codificacion a nivel de tirada. Normalmente, un gran numero de niveles de coeficiente de transformada son cero, y un conjunto de niveles de coeficiente de transformada sucesivos que sean iguales a cero puede representarse eficientemente mediante la codificacion del numero de niveles de coeficiente de transformada sucesivos que son iguales a cero (la tirada) por un elemento de sintaxis respectivo. Para los coeficientes de transformada restantes (no cero), el nivel real se codifica en la forma de elementos de sintaxis respectivos. Hay varias alternativas de codigos a nivel de tirada. La tirada antes de un coeficiente no cero y el nivel del coeficiente de transformada no cero pueden codificarse juntos usando un elemento de sintaxis unico. Frecuentemente, se incluyen elementos de sintaxis especiales para el final del bloque, que se envfa despues del ultimo coeficiente de transformada no cero. O es posible codificar primero el numero de niveles de coeficiente de transformada no cero, y dependiendo de este numero, se codifican los niveles y tiradas.
Se usa un enfoque en alguna forma diferente para la codificacion entropica CABAC altamente eficiente en H.264/AVC. En este caso, la codificacion de los niveles de coeficiente de transformada se reparte en tres etapas. En la primera etapa, se transmite para cada bloque de transformada un elemento de sintaxis binario indicador_ coeficiente_codificado, lo que senaliza si el bloque de transformada contiene niveles de coeficiente de transformada significativos (es decir, coeficientes de transformada que sean no cero). Si este elemento de sintaxis indica que estan presentes elementos de coeficiente de transformada significativos, se codifica un mapa de significacion evaluado en binario, que espedfica cual de los niveles de coeficiente de transformada tiene valores no cero. Y a continuacion, en un orden de escaneado inverso, se codifican los valores de los niveles de coeficiente de transformada no cero. El mapeado de significacion se codifica en un flujo de elemento de sintaxis 138 como sigue.
5
10
15
20
25
30
35
40
45
50
55
60
Para cada coeficiente en el orden de escaneado, se codifica un elemento de sintaxis binario indicador_coeficiente_ significativo, que espedfica si el nivel de coeficiente de transformada correspondiente no es igual a cero. Si el bin del indicador_coeficiente_significativo es igual a uno, es decir, si existe un nivel de coeficiente de transformada no cero en esta posicion de escaneado, se codifica un elemento de sintaxis binario adicional ultimo_indicador_coeficiente_ significativo. Este bin indica si el nivel de coeficiente de transformada significativo es el ultimo nivel de coeficiente de transformada significativo dentro del bloque o si niveles de coeficiente de transformada significativos adicionales siguen en el orden de escaneado. Si ultimo_indicador_coeficiente_significativo indica que no hay ningun coeficiente de transformada significativo adicional que siga, no se codifican elementos de sintaxis adicionales para la especificacion del mapa de significacion para el bloque. En la siguiente etapa, se codifican los valores de los niveles de coeficiente de transformada significativos, cuyas localizaciones dentro del bloque ya se han determinado por el mapa de significacion. Los valores de los niveles de coeficiente de transformada significativo se codifican en orden de escaneado inverso mediante el uso de los siguientes tres elementos de sintaxis. El elemento de sintaxis binario coeficiente_absoluto_mayor_uno indica si el valor absoluto del nivel de coeficiente de transformada significativo es mayor que uno. Si el elemento de sintaxis binario coeficiente_absoluto_mayor_uno indica que el valor absoluto es mayor que uno, se envfa un elemento de sintaxis adicional coeficiente_absoluto_nivel_menos_dos que espedfica el valor absoluto del nivel de coeficiente de transformada menos dos. Esta es la clase de elementos de sintaxis cuyo procesamiento puede realizarse de acuerdo con la Fig. 1b, 1c y 2b. Finalmente, se codifica el elemento de sintaxis binario indicador_signo_coeficiente, que espedfica el signo del valor del coeficiente de transformada, para cada nivel de coeficiente de transformada significativo. Debena tomarse nota de nuevo que los elementos de sintaxis que se refieren al mapa de significacion se codifican en orden de escaneado, mientas que los elementos de sintaxis que se refieren a los valores actuales de los niveles de coeficientes de transformada se codifican en orden de escaneado inverso permitiendo el uso de modelos de contexto mas adecuados. Es posible tambien que se use un patron de escaneado adaptativo para el mapa de significacion como en el primer modelo de prueba de H.265/HEVC. Otro concepto se usa para la codificacion de los niveles de coeficiente de transformada absoluta para la transformada de bloques mayores de 4x4 en el primer modelo de prueba de H.265/HEVC. En caso de bloques de transformada mayores de 4x4, el bloque de transformada mayor se particiona en bloques de 4x4 y los bloques de 4x4 se codifican en el orden de escaneado mientras que se usa el orden de escaneado inverso para cada uno de los bloques 4x4.
En la codificacion entropica CABAC en H.264/AVC, todos los elementos de sintaxis para los niveles de coeficiente de transformada se codifican usando un modelizado de probabilidad binaria. El elemento de sintaxis no binario coeficiente_absoluto_nivel_menos_dos, por ejemplo, se binariza primero, es decir, se mapea sobre una secuencia de decisiones binarias (bins), y estos bins se codifican secuencialmente. El elemento de sintaxis binaria indicador_ coeficiente_significativo, ultimo_indicador_coeficiente_significativo, coeficiente_absoluto_mayor_uno, e indicador_ signo_coeficiente se codifican directamente. Cada bin codificado (que incluye los elementos de sintaxis binaria) se asocia con un contexto. Un contexto representa un modelo de probabilidad para una clase de bins codificados. Una medida con relacion a la probabilidad para uno de los dos posibles valores de bin se estima para cada contexto basandose en los valores de los bins que ya se han codificado con el contexto correspondiente. Para varios bins relativos a la codificacion de transformada, el contexto que se usa para la codificacion se selecciona basandose en elementos de sintaxis ya transmitidos o basandose en la posicion dentro de un bloque.
Despues de la codificacion del mapa de significacion, los bloques se procesan en orden de escaneado inverso. Como se ha mencionado anteriormente, otro concepto se usa en el primer modelo de prueba de H.265/HEVC. Los bloques de transformada mayores de 4x4 se particionan en bloques de 4x4 y los bloques de 4x4 resultantes se procesan en orden de escaneado, mientras que los coeficientes de los bloques de 4x4 se codifican en orden de escaneado inverso. La siguiente descripcion es valida para todos los bloques de 4x4 en el primer modelo de prueba de H.265/HEVC y en H.264/AVC y tambien para bloques 8x8 en H.264/AVC y esta descripcion puede aplicarse tambien a la construccion del flujo de elementos de sintaxis 138 y 226, respectivamente.
Si una posicion de escaneado significativa, es decir, el coeficiente es diferente de cero, se transmite el elemento de sintaxis binaria coeficiente_absoluto_mayor_uno dentro del flujo 138. Inicialmente (dentro de un bloque), se selecciona el segundo modelo de contexto del conjunto de modelos de contexto correspondientes para el elemento de sintaxis coeficiente_absoluto_mayor_uno. Si el valor codificado de cualquier elemento de sintaxis coeficiente_ absoluto_mayor_uno dentro del bloque es igual a uno (es decir, el coeficiente absoluto es mayor de 2), el modelizado de contexto conmuta de vuelta al primer modelo de contexto del conjunto y usa este modelo de contexto hasta el final del bloque. En caso contrario (todos los valores codificados de coeficiente_absoluto_mayor_uno dentro del bloque son cero y los niveles de coeficiente absoluto correspondientes son iguales a uno), el modelo de contexto se elige dependiendo del numero de elementos de sintaxis coeficiente_absoluto_mayor_uno iguales a cero que ya se han procesado en el escaneado inverso del bloque considerado. La seleccion del modelo de contexto para el elemento de sintaxis coeficiente_absoluto_mayor_uno puede resumirse por la ecuacion siguiente, en donde el mdice modelo de contexto actual C,+1, se selecciona basandose en el mdice del modelo de contexto previo C, y el valor del elemento de sintaxis previamente codificado coeficiente_absoluto_mayor_uno, que se representa por bint en la ecuacion. Para el primer elemento de sintaxis coeficiente_absoluto_mayor_uno dentro del bloque, el mdice del modelo de contexto se fija igual a C1 = 1.
5
10
15
20
25
30
35
40
45
50
55
60
C+i(Ct, bint) =
0 bin, = 1
min(Ct +1,4) bin, = 0
El segundo elemento de sintaxis para codificacion de los niveles de coeficiente de transformada absoluta, coeficiente_absoluto_nivel_menos_dos solo se codifica, cuando el elemento de sintaxis coeficiente_absoluto_ mayor_uno para la misma posicion de escaneado es igual a uno. El elemento de sintaxis no binaria coeficiente_ absoluto_nivel_menos_dos se binariza en una secuencia de bins y para el primer bin de esta binarizacion; se selecciona un mdice de modelo de contexto tal como se describe en lo que sigue. Los bin restantes de la binarizacion se codifican con contextos fijos. El contexto para el primer bin de la binarizacion se selecciona como sigue. Para el primer elemento de sintaxis coeficiente_absoluto_nivel_menos_dos, se selecciona el primer modelo de contexto del conjunto de modelo de contextos para el primer bin del elemento de sintaxis coeficiente_absoluto_ nivel_menos_dos, el mdice del modelo de contexto correspondientes se fija igual a Ci = 0. Para cada primer bin adicional del elemento de sintaxis coeficiente_absoluto_nivel_menos_dos, el modelizado de contexto conmuta al siguiente modelo de contexto en el conjunto, en donde el numero de modelos de contexto en el conjunto se limita 5. La seleccion del modelo de contexto puede expresarse por la formula siguiente, en donde el mdice de modelo de contexto actual Cr+i se selecciona basandose en el mdice de modelo de contexto previo Cr.
Cr+i(Cr) = min(Cr + 1,4)
Como se ha mencionado anteriormente, para el primer elemento de sintaxis coeficiente_absoluto_permanece_ menos_dos dentro de un bloque, el mdice de modelo de contexto se fija igual a Cr = 0. Observese que pueden definirse diferentes conjuntos de modelos de contexto para los elementos de sintaxis coeficiente_absoluto_ mayor_uno y coeficiente_absoluto_permanece_menos_dos. Observese tambien que para el primer modelo de prueba de H.265/HEVC, los bloques de transformada mayores de 4x4 pueden particionarse en bloques de 4x4. Los bloques de 4x4 particionados pueden procesarse en orden de escaneado y para cada bloque de 4x4 particionado, puede deducirse un conjunto de contexto basandose en el numero de coeficientes mayores que uno en el bloque de 4x4 previo. Para el primer bloque de 4x4 de un bloque de transformada mayor de 4x4 y para bloques de transformada de 4x4 de origen puede usarse un conjunto de contexto separado.
Esto es, en cualquier caso que se use en la siguiente descripcion codificacion basada en contexto para cualquiera de los sfmbolos fuente en los que coeficiente_absoluto_mayor_uno y coeficiente_absoluto_permanece_menos_dos pueden descomponerse como sigue, entonces esta deduccion de contexto puede usarse por el asignador 114 y 212 y el codificador/decodificador VLC 102 y 202, por ejemplo.
Para reducir la complejidad en terminos de numero de bins procesados por CABAC o PIPE en comparacion con las tecnicas del estado de la tecnica y tambien en terminos de complejidad de calculo o tambien para incrementar la eficiencia de codificacion, la explicacion a continuacion describe un enfoque para la codificacion de niveles absolutos mediante el uso de codigos de longitud variable diferentes para diferentes particiones 1401 a 1403 en codificadores y decodificadores de imagen y video. La posibilidad descrita a continuacion puede ser, sin embargo, aplicada a cualquier clase de niveles absolutos para codificadores de imagen y video, como diferencias del vector de movimiento o coeficientes del filtro de bucle adaptativo. Aunque la codificacion de niveles de coeficiente de transformada se realiza como se describe a continuacion, la codificacion del mapa de significacion puede permanecer como en el primer modelo de prueba de H.265/HEVC o como se ha descrito anteriormente, o la codificacion del mapa de significacion puede realizarse como en H.264/AVC o en otra forma.
Como se ha descrito anteriormente, la codificacion de los niveles de transformada absoluta se realizan en multiples particiones 1401-3. El esquema de codificacion se ha ilustrado como ejemplo la Figura 1b con tres particiones 1401-3. Las delimitaciones 142 y 144 del esquema son variables dando como resultado tamanos de particion variables. El esquema de codificacion se realiza como sigue.
Se usa un primer codigo de entropfa para codificar el primer componente o sfmbolo fuente, es decir el nivel de coeficiente de transformada absoluta (z) en caso igual es mas pequeno que lfmite1, o lfmite1 si no es igual. Si el nivel de coeficiente de transformada absoluta es mayor que o igual a la delimitacion lfmite1 de la primera particion
1401, que la delimitacion lfmite1 (142) de la primera particion (1401) se resta del nivel de coeficiente de transformada absoluta y el valor resultante z' se codifica con un segundo codigo de entropfa. Si el nivel del coeficiente de transformada absoluta restante z' es mayor que o igual a una delimitacion Kmite2-Kmite1 para la segunda particion
1402, entonces la delimitacion Kmite2-Kmite1 de la segunda particion se resta de nuevo del nivel de coeficiente de transformada absoluta z' y el valor resultante se codifica con un tercer codigo de entropfa. Hablando en general, cuando se alcanza la delimitacion de una particion, se usa el codigo de entropfa para la siguiente particion en la delimitacion para codificar el valor resultante de los niveles de coeficiente de transformada absoluta menos la delimitacion de la particion correspondiente.
Los codigos de entropfa pueden ser codigos de longitud variable simples tales como codigos de longitud de tirada o
5
10
15
20
25
30
35
40
45
50
55
60
tablas de busqueda (por ejemplo codigo Huffman) o codigos de entrc^a mas complejos que empleen modelos de probabilidad como CABAC o PIPE. El numero de particiones y la delimitacion de las particiones pueden ser variables o dependientes del elemento de sintaxis real. El concepto de particion mostrado en la Fig. 1b tiene los siguientes beneficios. En lo que sigue, se usan los coeficientes de transformada absoluta como un ejemplo, pero se debena entender que pueden sustituirse con cualquier otro elemento de sintaxis. Como un ejemplo, la distribucion de probabilidad de los niveles de coeficiente de transformada absoluta puede tener aproximadamente una distribucion geometrica. Por lo tanto, los codigos de entropfa optimizados para distribuciones geometricas pueden emplearse para codificacion de los niveles de coeficiente de transformada absoluta. Pero dicho modelo no es siempre optimo localmente, incluso si se emplean el modelizado del contexto y la seleccion del modelo de probabilidad. Por ejemplo, para un bloque de transformada, los niveles de coeficiente de transformada absoluta locales siguen una distribucion que no es geometrica en absoluto si contiene la misma cantidad de niveles de coeficiente de transformada de rango bajo y medio, en tanto que el modelo puede mantenerse cierto (con una cierta precision) para una cantidad espedfica de bloques en imagen o video debido a la ley de los grandes numeros. Para dicho caso, la distribucion geometrica no es un modelo adecuado. Tambien, cuando se consideran los niveles de coeficiente de transformada absoluta con grandes valores, la distribucion de estos grandes valores es frecuentemente uniforme. El concepto de particion permite diferentes modelos de probabilidad para diferentes niveles del coeficiente de transformada absoluta. Para valores absolutos mas bajos, pueden aplicarse codigos de entropfa mas complejos para una eficiencia mayor, mientras para niveles absolutos mayores pueden emplearse codigos de entropfa menos complejos para reducir la complejidad.
Como se ha mencionado anteriormente, se usan codigos de entropfa adecuados para diferentes particiones. Pueden emplearse tres tipos de codigos de entropfa. El primer codigo de entropfa usa PIPE. Sin embargo, debena tomarse nota que, de acuerdo con una alternativa, puede usarse alternativamente un metodo de codificacion entropica como CABAC o cualquier otro codificador aritmetico. Esto es, los primeros sfmbolos si (vease la Fig. 2b) pueden codificarse a traves de la trayectoria de codificacion PIPE. El subdivisor 100 y el recombinador 220 actuan en consecuencia.
Para el segundo tipo, pueden usarse los codigos Golomb y algunas variantes truncadas que incluyen subconjuntos (por ejemplo, codigos Golomb-Rice). Esto es, los segundos sfmbolos s2 (vease la Fig. 2b) pueden codificarse a traves de dichos codigos VLC en el codificador/decodificador VLC 102/202. El subdivisor 100 y el recombinador 220 actuan en consecuencia.
Los codigos exponencial-Golomb se usan como el tercer tipo. Esto es, los terceros sfmbolos s3 (vease la Fig. 2b) pueden codificarse a traves de dichos codigos VLC en el codificador/decodificador VLC 102/202. El subdivisor 100 y el recombinador 220 actuan en consecuencia. Son posibles diferentes codigos VLC y diferentes combinaciones de codigos VLC y PIPE o VLC y aritmeticos.
Mientras que el primer codigo es mas complejo pero conduce a un mejor rendimiento de compresion, el segundo codigo entropico representa un compromiso razonable entre complejidad y rendimiento. Los ultimos codigos de entropfa, por ejemplo codigos Exponencial-Golomb, tienen una complejidad muy baja. En lo que sigue, se describe la codificacion de diferentes particiones.
En una particion tal como la particion 1401, tal como el sfmbolo s1, ha de ser codificado por entropfa usando un codificador entropico que emplee modelos de probabilidad como el codificador PIPE 104 (de nuevo, puede usarse CABAC o cualquier codificador aritmetico en un alternativa no descrita adicionalmente en el presente documento), el subdivisor 120 dirige la misma hacia el codificador PIPE 104. En primer lugar, los niveles de coeficiente de transformada absoluta evaluados no binarios pueden binarizarse en el simbolizador 122 usando un metodo de binarizacion. La binarizacion mapea los niveles de coeficiente de transformada absoluta evaluados no binarios en una secuencia de bins binarios. Cada bin de la cadena de bins se codifica con un contexto elegido por un asignador 114. El modelizado de contexto puede realizarse por el primer bin y fijarse para los bins siguientes de la secuencia de bin dado que puede usarse coeficiente_absoluto_nivel_menos_dos en H.264/AVC o un modelizado de contexto diferente para cada bin de la cadena de bins. Observese que la binarizacion puede ser un codigo de longitud variable como los codigos Golomb o codigos exponencial-Golomb u otros codigos de longitud variable.
A continuacion, una particion tal como la particion 1402 o sfmbolos s2 puede codificarse con un codigo Golomb, en este caso en el codificador VLC 102 y decodificarse respectivamente en el decodificador VLC. Los codigos Golomb son un conjunto de codigos de entropfa disenados para una fuente distribuida geometricamente. Si el orden del codigo Golomb es cero, el codigo Golomb es conocido tambien como codigo unario. El codigo unario se refiere a la binarizacion de coeficiente_absoluto_nivel_menos_dos en H.264/AVC. Los codigos Golomb se construyen como sigue. Para un parametro Golomb espedfico k, el valor n se divide por el parametro Golomb k usando division entera y se calcula el resto r.
P =
n
~k
5
10
15
20
25
30
35
40
r = n - pk
Despues de deducir los parametros especificados por las formulas anteriores, puede codificarse el valor n con dos partes. La primera parte, tambien denominada como parte prefijo, es un codigo unario. El valor resultante p+1 especifica el numero de unos y un cero de finalizacion o viceversa. El valor de resto, tambien denominado como parte resto e indicada por r, se representa con un codigo binario truncado. Los codigos Golomb-Rice se emplean para codificacion de sfmbolos fuente tales como los sfmbolos fuente s2 siendo los codigos Golomb-Rice un subconjunto de los codigos Golomb. Tambien, cuando se usan dichos codigos de entropfa para particiones 140i-3 que contienen una delimitacion, tal como la particion 1402, el alfabeto de los sfmbolos fuente respectivos (tal como los sfmbolos fuente s2) esta limitado y el codigo Golomb-Rice puede modificarse de modo que pueda mejorarse la eficiencia de codificacion. El parametro del codigo Golomb-Rice puede ser fijo o variable. Si el parametro es variable, el parametro puede estimarse como una parte de la etapa de modelizado de contexto. Por ejemplo, si un sfmbolo fuente s2 entra en el decodificador VLC 102, este ultimo puede determinar el parametro del codigo Golomb-Rice a partir de un contexto de s2. Los codigos Golomb-Rice son codigos Golomb con parametros a la potencia de dos. De modo que se basan en division y multiplicacion por dos y por lo tanto pueden implementarse eficientemente en una arquitectura binaria con operaciones de desplazamiento y adicion. La relacion entre el parametro Golomb-Rice y el parametro Golomb es por lo tanto kGOLOMB = 2kRICE. En caso del codigo Golomb-Rice, la parte de resto es exactamente la representacion binaria del valor del resto. Para el parametro Golomb-Rice de cero, el codigo resultante es identico al codigo unario y no tiene una parte de resto. Para el parametro igual a uno, la parte de resto consiste en un bin con dos sfmbolos de entrada que comparten el mismo prefijo unario. En lo que sigue, se ilustran algunas tablas de ejemplo para parametros Golomb-Rice seleccionados.
Valor
Prefijo Resto Prefijo Resto Prefijo Resto Prefijo Resto
k=0 k=1 k=2 k=3
0
0
0 0 0 00 0 000
1
10 0 1 0 01 0 001
2
110 10 0 0 10 0 010
3
1110 10 1 0 11 0 011
4
11110 110 0 10 00 0 100
5
111110 110 1 10 01 0 101
6
1111110 1110 0 10 10 0 110
7
11111110 1110 1 10 11 0 111
8
111111110 11110 0 110 00 10 000
9
1111111110 11110 1 110 01 10 001
10
11111111110 111110 0 110 10 10 010
11
111111111110 111110 1 110 11 10 011
12
1111111111110 1111110 0 1110 00 10 100
13
11111111111110 1111110 1 1110 01 10 101
Dado el rango de la particion tal como por ejemplo lfmite2-lfmite1 en caso de la particion 1402 y el parametro del codigo Golomb-Rice, el truncado puede realizarse como sigue. El parametro Golomb-Rice describe el numero de bins requeridos para representar la parte de resto y el dos a la potencia del valor de parametro describe el numero de valores, que puede representarse con el mismo prefijo. Estos valores forman un grupo de prefijo. Por ejemplo, para el parametro cero, un prefijo solo puede representar un valor espedfico, mientras que para el parametro tres, ocho valores de entrada comparten el mismo prefijo y por lo tanto un grupo de prefijo contiene ocho valores para el parametro tres. Para un alfabeto fuente limitado y un codigo Golomb-Rice dado, el ultimo bin del prefijo puede dejarse fuera de los valores en el ultimo grupo de prefijo dando como resultado un codigo de prefijo con longitud fija.
En el caso de que el rango sea nueve y el parametro Golomb-Rice sea dos, el numero de valores que pueden representarse con el mismo prefijo es cuatro. El valor maximo es nueve, lo que tambien indica que el borde se ha superado y ha de usarse el siguiente codigo de entropfa de la siguiente particion. En este caso de ejemplo, los valores desde 0 - 3 tienen el prefijo 0, los valores desde 4 - 7 tienen el prefijo 10 y 8 - 9 el prefijo 110. Debido a que los valores 8 - 9 forman el ultimo grupo de prefijo, su cero de la izquierda puede quitarse y los valores 8 - 9 pueden representarse por 11. En otras palabras, se puede imaginar un sfmbolo fuente s2 introducido en el codificador VLC 102 siendo el numero de valores posibles de s2 de 9 (=lfmite2-lfmite1) y siendo el parametro Golomb-Rice para ese sfmbolo fuente dos. A continuacion, se producina una palabra de codigo Golomb-Rice respectiva por el codificador VLC 102 para ese sfmbolo fuente, que tiene un prefijo segun se acaba de describir. Para la parte de resto de la palabra de codigo, el codigo truncado puede deducirse como sigue por el codificador VLC 102. Normalmente, el
5
10
15
20
25
30
35
40
45
50
55
60
parametro de los codigos Golomb-Rice indica el numero de bins de la parte de resto. En un caso truncado, no todos los bins del resto necesitan codificarse. Para un caso truncado, se cuentan todos los valores con prefijo fijo (por ejemplo un bin del prefijo se extrae). Observese que el valor contado es siempre mas pequeno que o igual al numero maximo de valores para un prefijo debido a que el codigo se trunca. Si es posible un truncado de la parte de resto, la deduccion de la parte de resto truncada para el ultimo grupo de prefijo puede proseguir en las siguientes etapas. Primero, se deduce el mayor numero l a la potencia de dos mas pequeno o igual que el numero encontrado. A continuacion, en la segunda etapa, se deduce el numero mas pequeno h a la potencia de dos mayor que el numero encontrado. El primer valor l escribe el numero de valores en el grupo de prefijo con un resto de h bins. Todos los restos de estos valores comienzan con un 0 seguido por la representacion binaria del resto limitada al numero de valores en el grupo del resto. Para los valores restantes del ultimo grupo de prefijo, ahora tratados como un nuevo grupo de prefijo, se realiza el mismo procedimiento excepto para los valores resultantes formados por el primer grupo de resto, el resto comienza con un 1. Este procedimiento se realiza hasta que se deducen todos los restos. Como un ejemplo, el rango es 14 y el parametro es tres. El primer grupo de prefijo contiene valores desde 0 - 7 y el segundo grupo de prefijo valores desde 8 - 13. El segundo grupo de prefijo contiene seis valores. Los parametros son l = 2 y h = 3. De ese modo, los primeros cuatro valores de los grupos de prefijo se representan por un resto con tres bins (un cero a la izquierda y la representacion binaria para distinguir los cuatro valores). Para los ultimos dos valores, se realiza de nuevo el mismo procedimiento. Los parametros son l = 1 y h = 2. El resto de los dos ultimos valores puede representarse ahora como 10 y 11. Otro ejemplo para demostrar el metodo es un parametro de Golomb-Rice de cuatro y un rango de diez. Para este ejemplo, los parametros son l = 3 y h = 4. Con estos parametros, la parte de resto truncada para los primeros ocho valores se representa mediante cuatro bins. Los dos valores restantes tienen la misma parte de resto que en el ejemplo anterior. Si el rango es nueve para el ejemplo previo, el parametro para la segunda tirada es l = 0 y h = 1. La parte de resto del unico valor que permanece es 1.
El tercer tipo de codigos de entropfa pueden ser codigos Exponencial-Golomb. Pueden emplearse para distribuciones igualmente probables (por ejemplo con parametro cero) tales como los sfmbolos fuente s3. Esto es, el par de codificador/decodificador VLC puede ser responsable de su codificacion. Como se ha mencionado anteriormente, los niveles de coeficiente de transformada absoluta mayores frecuentemente se distribuyen uniformemente. Mas precisamente, el codigo Exponencial-Golomb de orden cero puede usarse para codificar la ultima particion 1403. El comienzo y por lo tanto el borde 144 de la particion previa 1402 puede ser variable. La posicion del borde 144 puede controlarse por el codificador/decodificador VLC 102-200 dependiendo de los sfmbolos fuente codificados/decodificados 106, 108 precisamente y/o 110 o los elementos de sintaxis 138 (o 218, 204 y/o 208 o elementos de sintaxis 226).
En una realizacion preferida, el numero de particiones es tres como se muestra en la Fig. 1b y las delimitaciones 142 y 144 pueden ser variables. Para la primera particion 1401, puede emplearse codificacion PIPE como se ha explicado anteriormente. Sin embargo, puede usarse alternativamente asimismo CABAC. En ese caso, el par codificador/decodificador PIPE se sustituina por un par codificador/decodificador de codificacion aritmetica. Los codigos Golomb-Rice truncados pueden usarse para la segunda particion 1402 y el codigo Exponencial-Golomb de orden cero puede usarse para la ultima particion 1403.
En otra realizacion preferida, el numero de particiones 1401-3 es tres y la primera delimitacion 142 es fija, mientras que la segunda delimitacion 144 es variable. Para la primera particion 1401, se emplea CABAC o PIPE. Los codigos Golomb-Rice truncados pueden usarse para la segunda particion 1402, y el codigo Exponencial-Golomb de orden cero puede usarse para la ultima particion 1403.
En otra realizacion preferida, el numero de particiones es igual a tres mientras que ambos bordes 142 y 144 son variables. Por ejemplo, para la primera particion 1401, se emplea CABAC o PIPE, mientras la segunda particion 1402 puede usar el codigo Golomb-Rice truncado y la tercera particion 1403 usa el codigo Exponencial-Golomb de orden cero.
La delimitacion 142 de la primera particion 1401 que usa CABAC o PIPE, que emplea modelos de probabilidad adaptativos puede ser dos. El modelizado de contexto para el primer bin puede realizarse como se ha descrito para coeficiente_absoluto_mayor_uno tal como se ha descrito anteriormente y el modelizado de contexto para el segundo bin puede realizarse como se ha descrito para coeficiente_absoluto_nivel_menos_dos en H.264/AVC, como tambien se ha descrito anteriormente. La ultima determinacion de contexto se determinana por los asignadores 114 y 212, respectivamente. La delimitacion 142 de la primera particion 1401 que usa codificacion de entropfa que emplea modelizado de probabilidad (por ejemplo PIPE o CABAC) puede ser dos y el modelizado de contexto para tanto el primero como el segundo bin puede realizarse como se ha descrito para coeficiente_absoluto_mayor_uno en H.264/AVC como se ha descrito anteriormente. La valoracion del conjunto de contexto como se ha descrito para coeficiente_absoluto_ mayor_uno puede realizarse por separado para el segundo bin.
La delimitacion 142 para la primera particion 1401 que usa codificacion entropica que emplea modelizado de probabilidad (por ejemplo CABAC o PIPE) puede ser igual a uno. Para el unico bin (o sfmbolo de alfabeto) de la cadena de bins del sfmbolo fuente respectivo, el modelizado de contexto puede realizarse como se ha descrito para
5
10
15
20
25
30
35
40
45
50
55
coeficiente_ absoluto_mayor_uno en H.264/AVC previamente descrito.
La delimitacion 142 de la primera particion 140i que usa codificacion entropica que emplea modelizado de probabilidad (por ejemplo CABAC o PIPE) puede ser igual a tres. El modelizado de contexto del primer y segundo bins de la cadena de bins del sfmbolo fuente respectivo puede realizarse como coeficiente_absoluto_mayor_uno en H.264/AVC. El modelizado de contexto para el tercer bin puede realizarse como coeficiente_absoluto_nivel_menos_ dos en H.264/AVC. La evaluacion del conjunto de contexto como se ha descrito para coeficiente_absoluto_mayor_ uno puede realizarse por separado para el segundo bin.
Un conjunto de codigos Golomb-Rice truncados puede usarse como codigos de entropfa de la segunda particion 1402. La delimitacion 144 de la segunda particion que espedfica el comienzo de la tercera particion 1403 que depende del parametro del codigo de entropfa puede ser variable. Tambien, el parametro Golomb-Rice puede limitarse por tres y la seleccion del parametro puede realizarse como el modelizado de contexto para coeficiente_ absoluto_nivel_menos_dos en H.264/AVC. El rango lfmite-lfmite2 puede ser variable y puede depender del parametro Golomb-Rice. Si el parametro es cero, el rango es 8. Para el parametro uno, el rango es 10. En caso de parametro dos, el rango es 12 y para el parametro tres, el rango es igual a 16. En este ejemplo, el parametro Golomb-Rice puede fijarse a cero al comienzo de un bloque de coeficientes de transformada. Para cada nivel de coeficiente de transformada de codigo en el bloque mayor o igual que la primera delimitacion, se usa el correspondiente codigo Golomb-Rice. Despues de la codificacion (o decodificacion) del nivel, se realiza la siguiente evaluacion para actualizar el parametro Golomb-Rice para codificacion (o decodificacion) del siguiente nivel mayor que o igual a la primera delimitacion. Observese que el parametro Golomb-Rice no puede disminuirse mediante el uso de esta forma de adaptacion.
La regla de adaptacion del parametro puede resumirse como sigue, en donde k+1 indica el parametro de Golomb- Rice a ser usado para codificacion del siguiente valor de nivel y valori indica el valor previamente codificado con el parametro Golomb-Rice ki correspondiente
ki+1
0
valor. e [0, 1]a k, < 1
1
valor. e [2, 3] a k, < 2
2
valor. e [4, 5] a k, < 3
3
valor. V cn > jsr A 4^
ki
en caso contrario
(QQ)
En una realizacion preferida, puede usarse un conjunto de codigos Golomb-Rice truncados como codigos de entropla de una segunda particion 1402. La delimitacion 144 de la segunda particion 1402 que especlfica el comienzo de la tercera particion 1403 dependiendo del parametro del codigo de entropla puede ser variable. Tambien en esta realizacion preferida, el parametro Golomb-Rice puede estar limitado a tres y la seleccion del parametro puede realizarse como modelizado de contexto para coeficiente_absoluto_nivel_menos_dos en H.264/AVC. El rango puede ser variable y depende del parametro Golomb-Rice. Si el parametro es cero, el rango es 8. Para el parametro uno, el rango es 10. En caso de parametro dos, el rango 12 y para el parametro tres, el rango es igual a 16. En esta realizacion preferida, el parametro Golomb-Rice se fija en cero al comienzo del bloque. La adaptacion del parametro Golomb-Rice se realiza como se describe por la ecuacion (QQ). Observese que el parametro no puede disminuirse mediante el uso de esta forma de adaptacion.
En otra realizacion preferida, puede usarse un conjunto de codigos Golomb-Rice truncado como codigos de entropla de la segunda particion 1402. La delimitacion 144 de la segunda particion 1402 que especifica el comienzo de la tercera particion 1403 dependiendo del parametro del codigo de entropla puede ser fija. Tambien en esta realizacion preferida, el parametro Golomb-Rice puede estar limitado a tres y la seleccion del parametro puede realizarse como modelizado de contexto para coeficiente_absoluto_nivel_menos_dos en H.264/AVC. El rango de la segunda particion 1402 puede fijarse en 14. En esta realizacion preferida, el parametro Golomb-Rice puede fijarse a cero al comienzo del bloque. La adaptacion del parametro Golomb-Rice se realiza como se describe por la ecuacion (QQ). Observese que el parametro no puede disminuirse mediante el uso de esta forma de adaptacion.
En otra realizacion preferida, puede usarse un conjunto de codigos Golomb-Rice truncados como codigos de entropia de una segunda particion 1402. La delimitacion 144 de la segunda particion 1402 que especifica el comienzo de la tercera particion 1403 dependiendo del parametro del codigo de entropia puede ser variable. Tambien en esta realizacion preferida, el parametro Golomb-Rice puede estar limitado a tres y la seleccion del parametro puede realizarse como modelizado de contexto para coeficiente_absoluto_nivel_menos_dos en H.264/AVC. El rango puede ser variable y depende del parametro Golomb-Rice. Si el parametro puede ser cero, el rango puede ser 8. Para el parametro uno, el rango puede ser 10. En caso de parametro dos el rango puede ser 12 y para el parametro tres, el rango puede ser igual a 16. En esta realizacion preferida, el parametro Golomb-Rice puede fijarse a cero al comienzo del bloque. La adaptacion del parametro Golomb-Rice se realiza como se describe por la ecuacion (QQ).
5
10
15
20
25
30
35
40
45
50
55
60
Observese que el parametro no puede disminuirse mediante el uso de esta forma de adaptation. Y tomese tambien nota que es posible una conmutacion directa, por ejemplo desde cero a tres. En esta realization preferida, la parte de prefijo de los codigos Golomb-Rice se codifica con codigos de entropia que emplean modelos de probabilidad. El modelizado de contexto puede realizarse como para coeficiente_absoluto_nivel_menos_dos en H.264/AVC.
En otra realizacion preferida, se evalua si la vecindad ya codificada (o decodificada) del indice de escaneado actual contiene niveles de coeficiente de transformada absoluta mayores que la delimitation previa. Para esta realizacion preferida, el mejor parametro puede deducirse mediante el uso de vecinos en una plantilla causal local.
De ese modo, las realizaciones anteriormente mencionadas describen entre otros, un aparato de codification entropica que comprende un descomponedor 136 configurado para convertir una secuencia 138 de elementos de sintaxis en una secuencia 106 de simbolos fuente 106 mediante la descomposicion individualmente de al menos un subgrupo de los elementos de sintaxis en un numero respectivo n de simboios fuente si, con i = 1,...,n, dependiendo el numero respectivo n de simbolos fuente de cual de entre una secuencia de n particiones 1401-3 dentro de las que se subdivide un rango de valores de los elementos de sintaxis respectivos, cae un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del numero respectivo de simbolos fuente si conduce a z y, si n>1, para todo i = 1,...,n-1, el valor de si corresponde a un rango de la partition ia; un subdivisor 100 configurado para subdividir la secuencia 106 de simbolos fuente en una primera subsecuencia 108 de simbolos fuente y una segunda subsecuencia 110 de simbolos fuente de modo que todos los simbolos fuente sx siendo x miembro de un primer subconjunto de {1 ...n} estan contenidos dentro de la primera subsecuencia 108 y todos los simbolos fuente sy siendo y un miembro del segundo subconjunto de {1...n} que es disjunto respecto al primer subconjunto, estan contenidos dentro de la segunda subsecuencia 110; un codificador VLC 102 configurado para codificar acertadamente con relation a simbolos los simbolos fuente de la primera subsecuencia 108, y un codificador PIPE o aritmetico 104 configurado para codificar la segunda subsecuencia 110 de simbolos fuente.
Los valores z del subgrupo de los elementos de sintaxis pueden ser valores absolutos. El segundo subconjunto puede ser {1} estando dispuesta la secuencia de n particiones de modo que una particion pa cubre valores mas altos del rango de valores que una particion qa para todo p, q e {1...n} siendo p>q. n puede ser 3. El primer subconjunto puede ser {2, 3} configurado el codificador VLC (102) para usar un codigo Golomb-Rice para codificar acertadamente con relacion a simbolos los simbolos fuente s2, y un codigo Exp-Golomb para codificar acertadamente con relacion a simbolos los simbolos fuente s3. Mas generalmente, 2 pueden ser elementos del primer subconjunto con un codificador VLC (102) configurado para usar un codigo Golomb-Rice para codificar acertadamente con relacion a simbolos los simbolos fuente s2 y adaptar un parametro Golomb-Rice, es decir k, del codigo Golomb-Rice de acuerdo con los simbolos fuente previamente codificados. El descomponedor puede configurarse para adaptar uno o mas de los llmites entre las particiones de acuerdo con los simbolos fuente previamente codificados. Ambas adaptaciones pueden combinarse. Esto es, las posiciones de los llmites que limitan la segunda particion pueden adaptarse de modo que esten separados entre si de modo que la longitud del codigo Golomb-Rice, es decir el numero de palabras de codigo del mismo, corresponda a (o prescriba) la longitud del ancho de la segunda particion. El limite para la separation de la primera de la segunda particion puede definirse en otra forma tal como ser fijo por definition o adaptado de acuerdo con otra dependencia de contexto, en cuyo caso la adaptacion de k puede definir la position de la separacion limite de la segunda y tercera particion a traves de la longitud del codigo de Golomb-Rice y el ancho de la segunda particion, respectivamente. Al acoplar la adaptacion de k de modo que el ancho de la segunda particion corresponda a la longitud del codigo Golomb-Rice, la eficiencia del codigo se usa de modo optimo. Adaptar k a las estadisticas del elemento de sintaxis permite adaptar el ancho de la segunda particion de modo que la tercera particion pueda cubrir tanto como sea posible de modo que reduzca la complejidad de codificacion global dado que puede haberse usado un codigo menos complejo para la tercera particion tal como el codigo Exp-Golomb. Adicionalmente, la longitud de la primera particion puede restringirse a j e {1, 2, 3} posibles valores de elementos de sintaxis, tal como los tres niveles mas bajos. Los elementos de sintaxis bajo consideration pueden codificarse diferencialmente o representar una prediction residual tal como es el caso con los niveles de coeficiente de transformada ejemplificados anteriormente que representan una prediccion residual. Los primeros simbolos fuente s1 pueden simbolizarse/desimbolizarse mediante el uso de un codigo unario truncado siendo codificados los j bins resultantes —parcialmente o todos ellos— adaptativamente al contexto o no como se ha mencionado anteriormente.
El subgrupo de los elementos de sintaxis puede englobar niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de bloques de transformada de la imagen con los niveles de coeficiente de transformada absoluta de un bloque de transformada respectivo que se dispone dentro de la secuencia (138) de elementos de sintaxis de acuerdo con una trayectoria de barrido que conduce a traves de los coeficientes de transformada absoluta de los bloques de transformada respectivos, en el que el descomponedor puede configurarse para adaptar uno o mas llmites entre las particiones durante la descomposicion de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un bloque de transformada respectivo dependiendo de los niveles de coeficiente de transformada absoluta ya codificados de los coeficientes de transformada absoluta de los bloques de transformada respectivos que preceden en el orden de escaneado o dependen de una posicion del nivel de coeficiente de transformada absoluta actualmente a ser descompuesto en el
5
10
15
20
25
30
35
40
45
50
55
60
orden de escaneado, o basado en una evaluacion de los niveles de coeficiente de transformada absoluta a ser reconstruidos de coeficientes de transformada vecinos —tanto espacialmente como en orden de escaneado— la posicion del nivel del coeficiente de transformada absoluta a ser descompuesta actualmente.
Adicionalmente, las realizaciones mencionadas anteriormente describen entre otros un aparato de decodificacion entropica que comprende un decodificador VLC 200 configurado para reconstruir acertadamente con relacion a las palabras de codigo s^bolos fuente de una primera subsecuencia 204 de simbolos fuente a partir de palabras de codigo de un primer flujo de bits 206; un decodificador PIPE o aritmetico 202 configurado para reconstruir una segunda subsecuencia 208 de simbolos fuente; un componedor 224 configurado para componer una secuencia 226 de elementos de sintaxis a partir de la primera subsecuencia 204 de simbolos fuente y la segunda subsecuencia 208 de simbolos fuente mediante la composicion individualmente de cada elemento de sintaxis a partir de un numero respectivo de simbolos fuente, en el que el componedor se configura para, en al menos un subgrupo de los elementos de sintaxis, determinar el numero respectivo n de simbolos fuente si con i = 1...n dependiendo de en cual de una secuencia de n particiones 140i-3 dentro de la que se subdivide un rango de valores de los elementos de sintaxis respectivo, cae dentro un valor z de los elementos de sintaxis respectivos, mediante la suma de los valores del numero respectivo de simbolos fuente si desde 1 a n siempre que el valor de si corresponda a un rango en la particion i-esima de modo que obtenga el valor del elemento de sintaxis z, en el que el componedor 224 se configura para recuperar todos los simbolos fuente sx siendo x miembro de un primer subconjunto de {1...n} de la primera subsecuencia (204) y todos los simbolos fuente sy siendo y miembro de un segundo subconjunto de {1..n} que es disjunto respecto al primer subconjunto, a partir de la segunda subsecuencia 208. Los valores z del subgrupo de los elementos de sintaxis pueden ser valores absolutos. El segundo subconjunto puede ser {1} estando dispuesta la secuencia de n particiones de modo que una particion pa cubre valores mas altos del rango de valores que una particion qa para todo p, q e {1...n} siendo p>q. n puede ser 3. El primer subconjunto puede ser {2, 3} estando configurado el decodificador VLC 200 para usar un codigo Golomb-Rice para reconstruir acertadamente con relacion a palabras de codigo los simbolos fuente s2, y un codigo Exp-Golomb para reconstruir acertadamente con relacion a palabras de codigo los simbolos fuente s3. Mas generalmente, 2 pueden ser elemento del primer subconjunto con el decodificador VLC 102 configurado para usar un codigo Golomb-Rice para reconstruir acertadamente con relacion a palabras de codigo los simbolos fuente s2 y adaptar un parametro Golomb-Rice del codigo Golomb-Rice de acuerdo con los simbolos fuente previamente reconstruidos. El aparato de decodificacion entropica puede comprender adicionalmente un recombinador 220 configurado para recombinar la primera subsecuencia 204 de simbolos fuente y la segunda subsecuencia de simbolos fuente para obtener la secuencia 218 de simbolos fuente. Los elementos de sintaxis pueden ser de diferente tipo y el componedor puede configurarse para realizar la composicion individual dependiendo del tipo de elementos de sintaxis. El subgrupo de los elementos de sintaxis pueden englobar niveles de coeficiente de transformada absoluta de coeficientes de transformada absoluta de los bloques de transformada de una imagen con los niveles de coeficiente de transformada absoluta de un bloque de transformada respectivo que se dispone dentro de la secuencia 138 de elementos de sintaxis de acuerdo con una trayectoria de escaneado que conduce a traves de los coeficientes de transformada absoluta de los bloques de transformada respectivos, en el que el componedor puede configurarse para adaptar uno o mas de los limites entre las particiones durante la composicion de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un bloque de transformada respectivo dependiendo de niveles de coeficiente de transformada absoluta ya reconstruidos de coeficientes de transformada absoluta de los bloques de transformada respectivos que preceden en el orden de escaneado o dependen de una posicion del nivel de coeficiente de transformada absoluta actualmente a ser compuesto en el orden de escaneado, o basandose en una evaluacion de niveles de coeficientes de transformada absoluta ya reconstruidos de los coeficientes de transformada vecinos —tanto espacialmente como en orden de escaneado— la posicion del nivel de coeficiente de transformada absoluta a ser compuesto actualmente.
En relacion a la combinacion de codificacion PIPE con codificacion VLC usando la descomposicion de acuerdo con la Fig. 1b, se observa lo siguiente para repetir algunos aspectos de los mismos en otras palabras.
Se ha descrito el mapeado de una secuencia de simbolos en un flujo de bits y el mapeado inverso. Cada simbolo lleva un(os) parametro(s) asociado(s) con el que son conocidos simultaneamente en codificador y decodificador. El codec de entropia contiene multiples memorias intermedias primero en entrar primero en salir (FIFO) cada una de ellas asignada a subconjuntos de parametro(s) que se asocian a los simbolos. Para parametro(s) dado(s) de un simbolo, el codificador asigna el simbolo a la memoria intermedia FIFO correspondiente. Dado que la regla de asignacion del codificador es conocida en el lado del decodificador, el decodificador lee de la memoria intermedia FIFO a la que el codificador ha asignado al simbolo.
Algunos elementos de sintaxis se codifican usando codigos de longitud variable estandar y se escriben en una memoria intermedia particular. Otros elementos de sintaxis se codifican usando el concepto de codificacion de entropia de probabilidad del intervalo de particion (PIPE). En esto, los simbolos se binarizan primero y los bins resultantes se clasifican basandose en estimaciones de probabilidad asociadas. La estimacion de probabilidad puede darse o deducirse a partir de la medicion que puede realizarse simultaneamente en codificador y decodificador. Una memoria intermedia FIFO particular contiene simbolos con valores de probabilidad estimados
5
10
15
20
25
30
35
40
45
50
55
60
que caen dentro del subconjunto de probabilidades que se eligen, de modo que pueda mejorarse la codificacion entropica. La mejora conseguida mediante la combinacion del concepto PIPE con VLC es una reduccion de complejidad en tanto aun se proporciona una alta eficiencia de codificacion. Los simbolos para los es adecuado un codigo VLC estandar se codifican con un enfoque VLC simple y baja complejidad, mientras otros simbolos para los que la tasa de bits se incrementaria significativamente mediante su codificacion con un codigo VLC se codifican con el concepto PIPE mas sofisticado.
Asi, para reducir adicionalmente la complejidad de la codificacion entropica, los simbolos se han repartido en dos categorias. Simbolos de una primera categoria pueden representarse bien con codigos VLC y no requieren la codificacion PIPE mas compleja, mientras que los simbolos de una segunda categoria no pueden representarse eficientemente con codigos VLC y una codificacion PIPE para estos simbolos reduce significativamente la tasa de bits requerida.
Aunque algunos aspectos se han descrito en el contexto de un aparato, es claro que estos aspectos tambien representan una description de un metodo correspondiente, en donde un bloque o dispositivo corresponde a una etapa del metodo o una caracteristica de una etapa del metodo. Analogamente, aspectos descritos en el contexto de una etapa del metodo tambien representan una descripcion de un bloque o apartado o caracteristica correspondiente de un aparato correspondiente. Algunas o todas de las etapas del metodo pueden ejecutarse mediante (o usando) un aparato de hardware, como por ejemplo un microprocesador, un ordenador programable o un circuito electronico. En algunas realizaciones, algunas o mas de las etapas del metodo mas importantes pueden ejecutarse mediante un aparato de ese tipo.
Las senales codificadas/comprimidas inventivas pueden almacenarse en un medio de almacenamiento digital o pueden transmitirse sobre un medio de transmision tal como un medio de transmision inalambrico o un medio de transmision por cable tal como Internet.
Dependiendo de ciertos requisitos de implementation, las realizaciones de la invention pueden implementarse en hardware o software. La implementacion puede realizarse usando un medio de almacenamiento digital, por ejemplo un disco flexible, un DVD, un Blue-Ray, un CD, un ROM, un PROM, un EPROM, un EEPROM o una memoria FLASH, que tenga senales de control legibles electronicamente almacenadas en el, que coopere (o sea capaz de cooperar) con un sistema informatico programable de modo que se realice el metodo respectivo. Por lo tanto, el medio de almacenamiento digital puede ser legible por ordenador.
Algunas realizaciones de acuerdo con la invencion comprenden un portador de datos que tiene senales de control legibles electronicamente, que es capaz de cooperar con un sistema informatico programable, de modo se realice uno de los metodos descritos en el presente documento.
Generalmente, realizaciones de la presente invencion pueden implementarse como un producto de programa informatico con un codigo de programa, siendo operativo el codigo de programa para la realization de uno de los metodos cuando el producto de programa informatico se ejecuta en un ordenador. El codigo de programa puede almacenarse por ejemplo sobre un portador legible por maquina.
Otras realizaciones comprenden el programa informatico para la realizacion de uno de los metodos descritos en el presente documento, almacenado en un portador legible por maquina.
En otras palabras, una realizacion del metodo inventivo es, por lo tanto, un programa informativo que tiene un codigo de programa para la realizacion de uno de los metodos descritos en el presente documento, cuando el programa informatico se ejecuta en un ordenador.
Una realizacion adicional de los metodos inventivos es, por lo tanto, un portador de datos (o un medio de almacenamiento digital, o un medio legible por ordenador) que comprende, registrado en el, el programa informatico para la realizacion de uno de los metodos descritos en el presente documento.
Una realizacion adicional del metodo inventivo es, por lo tanto, un flujo de datos o una secuencia de senales que representan el programa informatico para la realizacion de uno de los metodos descritos en el presente documento. El flujo de datos o la secuencia de senales pueden configurarse por ejemplo para transferirse a traves de una conexion de comunicacion de datos, por ejemplo a traves de la Internet.
Una realizacion adicional comprende un medio de procesamiento, por ejemplo un ordenador, o un dispositivo logico programable, configurado para o adaptado para realizar uno de los metodos descritos en el presente documento.
Una realizacion adicional comprende un ordenador que tiene instalado en el el programa informatico para la realizacion de uno de los metodos descritos en el presente documento.
En algunas realizaciones, puede usarse un dispositivo logico programable (por ejemplo una matriz de puertas
programable en campo) para realizar algunas o todas las funcionalidades de los metodos descritos en el presente documento. En algunas realizaciones, una matriz de puertas programable en campo puede cooperar con un microprocesador para realizar uno de los metodos descritos en el presente documento. Generalmente, los metodos se realizan preferentemente mediante un aparato de hardware.
5
Las realizaciones descritas anteriormente son meramente ilustrativas de los principios de la presente invencion. Se entiende que seran evidentes para los expertos en la materia modificaciones y variaciones de las disposiciones y los detalles descritos en el presente documento. Es la intencion, por lo tanto, limitarse solamente por el alcance de las reivindicaciones de patente inminentes y no por los detalles especificos presentados a modo de descripcion y 10 explicacion de las realizaciones del presente documento.

Claims (6)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    REIVINDICACIONES
    1. Aparato de codificacion entropica que comprende
    un descomponedor (136) configurado para convertir una secuencia (138) de elementos de sintaxis que tienen un rango de valores que se subdivide en una secuencia de N particiones (140i-3) en una secuencia (106) de simbolos fuente (106) mediante la descomposicion individualmente de al menos un subgrupo de los elementos de sintaxis en un numero respectivo n de simbolos fuente si con i = 1...n, dependiendo el numero respectivo n de simbolos fuente de en cual de las secuencias de N particiones (140i-3) cae un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del numero respectivo de simbolos fuente si conduzca a z y, si n>1, para todo i = 1 ...n-1, el valor de si corresponda a un rango de la particion i-esima;
    un subdivisor (100) configurado para subdividir la secuencia (106) de simbolos fuente en una primera subsecuencia (108) de simbolos fuente y una segunda subsecuencia (110) de simbolos fuente de modo que todos los simbolos fuente sx, siendo x un miembro de un primer subconjunto de {1...N}, esten contenidos dentro de la primera subsecuencia (108) y todos los simbolos fuente sy, siendo y un miembro de un segundo subconjunto de {1 ...N} que es disyunto respecto al primer subconjunto, esten contenidos dentro de la segunda subsecuencia (110); un codificador VLC (102) configurado para codificar acertadamente con relacion a simbolos los simbolos fuente de la primera subsecuencia (108); y
    un codificador aritmetico (104) configurado para codificar la segunda subsecuencia (110) de simbolos fuente, en el que el segundo subconjunto es {1} estando dispuesta la secuencia de N particiones de modo que una p-esima particion cubra valores mas altos del rango de valores que una q-esima particion para todo p,q e {1 ...N} con p>q, caracterizado porque N = 3, y
    en el que el primer subconjunto es {2, 3} con el codificador VLC (102) configurado para usar un codigo Golomb-Rice para codificar acertadamente con relacion a simbolos los simbolos fuente s2, y un codigo Exp-Golomb para codificar acertadamente con relacion a simbolos los simbolos fuente s3,
    en el que los valores z del subgrupo de los elementos de sintaxis son valores absolutos, y
    en el que el codificador VLC (102) se configura para adaptar un parametro Golomb-Rice del codigo Golomb-Rice de acuerdo con simbolos previamente codificados.
  2. 2. Aparato de decodificacion entropica que comprende
    un decodificador VLC (200) configurado para reconstruir acertadamente con relacion a palabras de codigo simbolos fuente de una primera subsecuencia (204) de simbolos fuente a partir de palabras de codigo de un primer flujo de bits (206);
    un decodificador aritmetico (202) configurado para reconstruir una segunda subsecuencia (208) de simbolos fuente; un componedor (224) configurado para componer una secuencia (226) de elementos de sintaxis que tienen un rango de valores que se subdivide en una secuencia de N particiones (140i-3) a partir de la primera subsecuencia (204) de simbolos fuente y la segunda subsecuencia (208) de simbolos fuente mediante la composicion individualmente de cada elemento de sintaxis a partir de un numero respectivo de simbolos fuente mediante, para al menos un subgrupo de elementos de sintaxis, la determinacion del numero respectivo n de simbolos fuente si con i = 1...n dependiendo de en cual de la secuencia de N particiones (140i-3) en la que se subdivide un rango de valores de los elementos de sintaxis respectivo, cae dentro un valor z de los elementos de sintaxis respectivos, mediante la suma de los valores del numero respectivo de simbolos fuente si desde 1 a n siempre que el valor de si corresponde a un rango de la particion i-esima de modo que obtenga el valor del elemento de sintaxis z, en el que el componedor (224) se configura para recuperar todos los simbolos fuente sx siendo x un miembro de un primer subconjunto de {l ...N} a partir de la primera subsecuencia (204) y todos los simbolos fuente sy siendo y un miembro de un segundo subconjunto de {1 ...N} que es disyunto respecto al primer subconjunto, a partir de la segunda subsecuencia (208); en el que el segundo subconjunto es {1} estando dispuesta la secuencia de N particiones de modo que una p-esima particion cubra valores mas altos del rango de valores que una q-esima particion para todo p,q e {1 ...N} con p>q, caracterizado porque N = 3,
    en el que el primer subconjunto es {2, 3} con el decodificador VLC (200) configurado para usar un codigo Golomb- Rice para reconstruir acertadamente con relacion a las palabras de codigo los simbolos fuente s2, y un codigo Exp- Golomb para reconstruir acertadamente con relacion a las palabras de codigo los simbolos fuente s3, en el que los valores z del subgrupo de los elementos de sintaxis son valores absolutos, y
    en el que el decodificador VLC (102) se configura para adaptar un parametro Golomb-Rice del codigo Golomb-Rice de acuerdo con simbolos fuente previamente reconstruidos.
  3. 3. Aparato de decodificacion entropica de acuerdo con la reivindicacion 2 que comprende adicionalmente un recombinador (220) configurado para recombinar la primera subsecuencia (204) de simbolos fuente y la segunda subsecuencia de simbolos fuente para obtener la secuencia (218) de simbolos fuente.
  4. 4. Metodo de codificacion entropica que comprende
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    convertir una secuencia (138) de elementos de sintaxis que tienen un rango de valores que se subdivide en una secuencia de N particiones (1401-3) en una secuencia (106) de simbolos fuente (106) mediante la descomposicion individualmente de al menos un subgrupo de los elementos de sintaxis en un numero respectivo n de simbolos fuente si con i = 1...n, dependiendo el numero respectivo n de simbolos fuente de en cual de las secuencias de N particiones (14O1-3) cae un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del numero respectivo de simbolos fuente si conduzca a z y, si n>1, para todo i = 1...n-1, el valor de si corresponda a un rango de la particion i-esima; subdividir la secuencia (106) de simbolos fuente en una primera subsecuencia (108) de simbolos fuente y una segunda subsecuencia (110) de simbolos fuente de modo que todos los simbolos fuente sx, siendo x un miembro de un primer subconjunto de {1 ...N}, esten contenidos dentro de la primera subsecuencia (108) y todos los simbolos fuente sy, siendo y un miembro de un segundo subconjunto de {1 ...N} que es disyunto respecto al primer subconjunto, esten contenidos dentro de la segunda subsecuencia (110);
    mediante codificacion VLC, la codificacion acertadamente con relacion a simbolos de los simbolos fuente de la primera subsecuencia (108); y
    mediante configuracion aritmetica, codificar la segunda subsecuencia (110) de simbolos fuente, en el que el segundo subconjunto es {1} estando dispuesta la secuencia de N particiones de modo que una p-esima particion cubra valores mas altos del rango de valores que una q-esima particion para todo p,q e {1 ...N} con p>q, caracterizado porque N = 3, y
    en el que el primer subconjunto es {2, 3} usando la codificacion VLC (102) un codigo Golomb-Rice para codificar acertadamente con relacion a simbolos los simbolos fuente s2, y una codificacion Exp-Golomb para codificar acertadamente con relacion a simbolos los simbolos fuente s3,
    en el que los valores z del subgrupo de los elementos de sintaxis son valores absolutos, y
    en el que el codificador VLC (102) se configura para adaptar un parametro Golomb-Rice del codigo Golomb-Rice de acuerdo con simbolos previamente codificados.
  5. 5. Metodo de decodificacion entropica que comprende
    mediante decodificacion VLC, reconstruir acertadamente con relacion a palabras de codigo simbolos fuente de una primera subsecuencia (204) de simbolos fuente a partir de palabras de codigo de un primer flujo de bits (206); mediante decodificacion aritmetica, reconstruir una segunda subsecuencia (208) de simbolos fuente; componer una secuencia (226) de elementos de sintaxis a partir de la primera subsecuencia (204) de simbolos fuente y la segunda subsecuencia (208) de simbolos fuente mediante la composicion individualmente de cada elemento de sintaxis a partir de un numero respectivo n de simbolos fuente mediante, para al menos un subgrupo de elementos de sintaxis, la determinacion del numero respectivo n de simbolos fuente si con i = 1...n dependiendo de en cual de la secuencia de N particiones (1401-3) en la que se subdivide un rango de valores de los elementos de sintaxis respectivo, cae dentro un valor z de los elementos de sintaxis respectivos, mediante la suma de los valores del numero respectivo de simbolos fuente si desde 1 a n siempre que el valor de si corresponde a un rango de la particion i-esima de modo que obtenga el valor del elemento de sintaxis z, en el que la composicion comprende la recuperacion de todos los simbolos fuente sx, siendo x un miembro de un primer subconjunto de {1 ...N} a partir de la primera subsecuencia (204), y de todos los simbolos fuente sy, siendo y un miembro de un segundo subconjunto de {1 ...N} que es disyunto respecto al primer subconjunto, a partir de la segunda subsecuencia (208); en el que el segundo subconjunto es {1} estando dispuesta la secuencia de N particiones de modo que una p-esima particion cubra valores mas altos del rango de valores que una q-esima particion para todo p,q e {1 ...N} con p>q, caracterizado porque N = 3,
    en el que el primer subconjunto es {2, 3} usando la decodificacion VLC (200) un codigo Golomb-Rice para reconstruir acertadamente con relacion a las palabras de codigo los simbolos fuente s2, y un codigo Exp-Golomb para reconstruir acertadamente con relacion a las palabras de codigo los simbolos fuente s3, en el que los valores z del subgrupo de los elementos de sintaxis son valores absolutos, y
    en el que el decodificador VLC (102) se configura para adaptar un parametro Golomb-Rice del codigo Golomb-Rice de acuerdo con simbolos fuente previamente reconstruidos.
  6. 6. Un programa informatico que tiene un codigo de programa para la realizacion, cuando se ejecuta en un ordenador, de un metodo de acuerdo con la reivindicacion 4 o 5.
ES12700329.1T 2011-01-14 2012-01-12 Esquema de codificación y decodificación entrópica Active ES2607982T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161432884P 2011-01-14 2011-01-14
US201161432884P 2011-01-14
PCT/EP2012/050431 WO2012095488A2 (en) 2011-01-14 2012-01-12 Entropy encoding and decoding scheme

Publications (1)

Publication Number Publication Date
ES2607982T3 true ES2607982T3 (es) 2017-04-05

Family

ID=45491598

Family Applications (5)

Application Number Title Priority Date Filing Date
ES18160276T Active ES2759513T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y decodificación entrópica
ES12700329.1T Active ES2607982T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y decodificación entrópica
ES14160511.3T Active ES2566917T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y descodificación por entropía
ES14160496.7T Active ES2566916T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y descodificación por entropía
ES14160512.1T Active ES2671482T3 (es) 2011-01-14 2012-01-12 Esquema de codificación entrópica

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES18160276T Active ES2759513T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y decodificación entrópica

Family Applications After (3)

Application Number Title Priority Date Filing Date
ES14160511.3T Active ES2566917T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y descodificación por entropía
ES14160496.7T Active ES2566916T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y descodificación por entropía
ES14160512.1T Active ES2671482T3 (es) 2011-01-14 2012-01-12 Esquema de codificación entrópica

Country Status (15)

Country Link
US (16) US9083374B2 (es)
EP (7) EP3349360B1 (es)
JP (8) JP5809292B2 (es)
KR (12) KR20230145538A (es)
CN (7) CN107342770B (es)
DK (5) DK2768145T3 (es)
ES (5) ES2759513T3 (es)
HK (4) HK1202000A1 (es)
HU (5) HUE037749T2 (es)
NO (1) NO2956175T3 (es)
PL (5) PL3349360T3 (es)
PT (3) PT3349360T (es)
TR (1) TR201807771T4 (es)
TW (7) TWI640169B (es)
WO (1) WO2012095488A2 (es)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9277245B2 (en) * 2010-03-10 2016-03-01 Thomson Licensing Methods and apparatus for constrained transforms for video coding and decoding having transform selection
PL3349360T3 (pl) * 2011-01-14 2020-03-31 Ge Video Compression, Llc Schemat kodowania i dekodowania entropijnego
CN103797803A (zh) * 2011-06-28 2014-05-14 三星电子株式会社 用于熵编码/解码的方法和设备
US20130083856A1 (en) * 2011-06-29 2013-04-04 Qualcomm Incorporated Contexts for coefficient level coding in video compression
EP2740263B1 (en) * 2011-09-16 2019-02-27 HFI Innovation Inc. Method and apparatus for prediction mode and partition mode syntax coding for coding units in hevc
CN109120927B (zh) * 2011-11-04 2021-05-18 夏普株式会社 图像解码装置、图像解码方法以及图像编码装置
CN103918273B (zh) 2011-11-08 2017-11-17 谷歌技术控股有限责任公司 确定用于变换系数的二进制码字的方法
WO2013070970A2 (en) 2011-11-08 2013-05-16 General Instrument Corporation Method of determining binary codewords for transform coefficients
EP2803190B1 (en) * 2012-01-09 2017-10-25 Dolby Laboratories Licensing Corporation Hybrid reference picture reconstruction method for multiple layered video coding systems
UA120434C2 (uk) 2012-01-20 2019-12-10 ДЖ.І. ВІДІЕУ КЕМПРЕШН, ЛЛСі Кодування коефіцієнтів перетворення
WO2013109993A1 (en) * 2012-01-21 2013-07-25 General Instrument Corporation Method of determining binary codewords for transform coefficients
EP2805497A1 (en) 2012-01-21 2014-11-26 Motorola Mobility LLC Method of determining binary codewords for transform coefficients
WO2013110000A1 (en) * 2012-01-21 2013-07-25 General Instrument Corporation Method of determining binary codewords for transform coefficients
US9479780B2 (en) 2012-02-01 2016-10-25 Google Technology Holdings LLC Simplification of significance map coding
EP2810440A1 (en) 2012-02-04 2014-12-10 General Instrument Corporation Devices and methods for context reduction in last significant coefficient position coding
WO2013116874A1 (en) 2012-02-05 2013-08-08 General Instrument Corporation Method of determining binary codewords for transform coefficients
US11039138B1 (en) 2012-03-08 2021-06-15 Google Llc Adaptive coding of prediction modes using probability distributions
US9654777B2 (en) 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
WO2014186542A1 (en) * 2013-05-15 2014-11-20 Vid Scale, Inc. Single loop decoding based inter layer prediction
US10021419B2 (en) 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
US9558567B2 (en) * 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US9648330B2 (en) * 2013-07-15 2017-05-09 Qualcomm Incorporated Inter-color component residual prediction
US9485222B2 (en) * 2013-08-20 2016-11-01 Hewlett-Packard Development Company, L.P. Data stream traffic control
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
BR112016007151A2 (pt) 2013-10-14 2017-09-12 Microsoft Tech Licensing recursos de modo de predição de cópia intrabloco para codificação e decodificação de vídeo e de imagem
AU2013403225B2 (en) 2013-10-14 2018-06-14 Microsoft Technology Licensing, Llc Features of base color index map mode for video and image coding and decoding
WO2015100726A1 (en) 2014-01-03 2015-07-09 Microsoft Corporation Block vector prediction in video and image coding/decoding
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US10142636B2 (en) * 2014-06-09 2018-11-27 Sony Corporation Communication system with coding mechanism and method of operation thereof
CN105493505B (zh) 2014-06-19 2019-08-06 微软技术许可有限责任公司 统一的帧内块复制和帧间预测模式
US10505826B2 (en) * 2014-09-26 2019-12-10 Oracle International Corporation Statistical pattern correlation of events in cloud deployments using codebook approach
RU2679201C2 (ru) 2014-09-30 2019-02-06 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Правила для режимов внутрикадрового прогнозирования, когда активируется волновая параллельная обработка данных
WO2016072744A1 (ko) * 2014-11-04 2016-05-12 삼성전자 주식회사 이진 산술 부호화/복호화를 위한 확률 갱신 방법 및 이를 이용한 엔트로피 부호화/복호화 장치
US9712848B2 (en) * 2014-11-10 2017-07-18 Vixs Systems Inc. Frame buffer compression using separate aggregation of fixed-length and variable-length components of codewords
US9781424B2 (en) 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
CN110557631B (zh) * 2015-03-10 2023-10-20 华为技术有限公司 图像预测方法和相关设备
CN106664405B (zh) 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
GB2542707B (en) * 2015-07-03 2020-02-12 Sisp Tech Ltd Data processing method and apparatus
KR102469145B1 (ko) * 2015-10-13 2022-11-21 삼성전자주식회사 영상을 부호화 또는 복호화하는 방법 및 장치
US10098093B2 (en) * 2015-12-15 2018-10-09 Qualcomm Incorporated Partitioned control channel techniques for time division duplexing subframe processing
US10142635B2 (en) * 2015-12-18 2018-11-27 Blackberry Limited Adaptive binarizer selection for image and video coding
US11463113B2 (en) * 2016-01-29 2022-10-04 Massachusetts Institute Of Technology Apparatus and method for multi-code distributed storage
US9792044B2 (en) * 2016-02-12 2017-10-17 Oracle International Corporation Decompression history buffer read/write pipelines
EP3220305B1 (en) * 2016-02-22 2018-10-31 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
WO2017216711A1 (en) * 2016-06-13 2017-12-21 KARTUN, Edmund Hilton An electronic computer device and method for encoding a sequence of characters
US10536163B2 (en) 2016-07-04 2020-01-14 Sisp Technologies Ltd. Data processing method and apparatus
JP6336524B2 (ja) 2016-07-25 2018-06-06 株式会社高速屋 データ圧縮符号化方法、その装置、及び、そのプログラム
CN106507111B (zh) * 2016-11-17 2019-11-15 上海兆芯集成电路有限公司 使用残差补偿的视频编码方法以及使用该方法的装置
GB2559200A (en) 2017-01-31 2018-08-01 Nokia Technologies Oy Stereo audio signal encoder
KR20180089290A (ko) 2017-01-31 2018-08-08 세종대학교산학협력단 영상의 부호화/복호화 방법 및 장치
BR122021018343B1 (pt) * 2017-04-13 2022-10-25 Lg Electronics Inc Método para reconstruir uma imagem incluindo um bloco não quadrado, método para codificar uma imagem e mídia de armazenamento digital legível por computador
CN107483059B (zh) * 2017-07-31 2020-06-12 广东工业大学 一种基于动态霍夫曼树的多路数据编解码方法及装置
WO2019039806A1 (ko) * 2017-08-21 2019-02-28 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN108062779B (zh) * 2017-12-26 2021-11-23 杭州健培科技有限公司 一种用于胸部断层扫描放射影像的无损压缩方法
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10707996B2 (en) * 2018-04-06 2020-07-07 International Business Machines Corporation Error correcting codes with bayes decoder and optimized codebook
CN108599931A (zh) * 2018-04-12 2018-09-28 深圳市易迈数据技术有限公司 基于大数据的安全码生成方法及其校验方法
US10630990B1 (en) * 2018-05-01 2020-04-21 Amazon Technologies, Inc. Encoder output responsive to quality metric information
CN112154662B (zh) * 2018-05-22 2022-05-10 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法、解码方法及图片压缩程序
KR20210018254A (ko) * 2018-06-06 2021-02-17 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 삼차원 데이터 부호화 방법, 삼차원 데이터 복호 방법, 삼차원 데이터 부호화 장치, 및 삼차원 데이터 복호 장치
US20220109455A1 (en) * 2018-06-29 2022-04-07 Zenotta Holding Ag Apparatus and method for providing authentication, non-repudiation, governed access and twin resolution for data utilizing a data control signature
JP7320927B2 (ja) * 2018-07-02 2023-08-04 ルネサスエレクトロニクス株式会社 半導体装置及び通信システム
US10877835B2 (en) * 2018-07-19 2020-12-29 Micron Technology, Inc. Write buffer management
US11720997B2 (en) 2018-10-19 2023-08-08 Samsung Electronics Co.. Ltd. Artificial intelligence (AI) encoding device and operating method thereof and AI decoding device and operating method thereof
WO2020080873A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Method and apparatus for streaming data
WO2020080665A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Methods and apparatuses for performing artificial intelligence encoding and artificial intelligence decoding on image
KR102525578B1 (ko) 2018-10-19 2023-04-26 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
WO2020080827A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Ai encoding apparatus and operation method of the same, and ai decoding apparatus and operation method of the same
WO2020080765A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Apparatuses and methods for performing artificial intelligence encoding and artificial intelligence decoding on image
WO2020080623A1 (ko) 2018-10-19 2020-04-23 삼성전자 주식회사 영상의 ai 부호화 및 ai 복호화 방법, 및 장치
WO2020080698A1 (ko) 2018-10-19 2020-04-23 삼성전자 주식회사 영상의 주관적 품질을 평가하는 방법 및 장치
US10728555B1 (en) * 2019-02-06 2020-07-28 Sony Corporation Embedded codec (EBC) circuitry for position dependent entropy coding of residual level data
US10587286B1 (en) * 2019-03-18 2020-03-10 Blackberry Limited Methods and devices for handling equiprobable symbols in entropy coding
US11070229B1 (en) * 2019-05-19 2021-07-20 Pliops Codeword generator
CN110365346B (zh) * 2019-07-22 2021-07-06 浙江大华技术股份有限公司 一种算术熵编码方法及系统
KR102138892B1 (ko) * 2019-09-24 2020-07-28 심인보 데이터 무손실 압축 장치 및 그 방법
US12015779B2 (en) 2019-10-07 2024-06-18 Lg Electronics Inc. Method and apparatus for deriving rice parameter in video/image coding system
WO2021071188A1 (ko) * 2019-10-07 2021-04-15 엘지전자 주식회사 비디오/영상 코딩 시스템에서 엔트로피 코딩 방법 및 장치
KR102436512B1 (ko) 2019-10-29 2022-08-25 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
KR20210056179A (ko) 2019-11-08 2021-05-18 삼성전자주식회사 Ai 부호화 장치 및 그 동작방법, 및 ai 복호화 장치 및 그 동작방법
US11095311B2 (en) * 2019-11-27 2021-08-17 Qualcomm Incorporated Quantization codeword selection for low cost parity checking
US11468601B2 (en) 2020-01-13 2022-10-11 Samsung Display Co., Ltd. Systems and methods for scalable throughput entropy coder
TWI741919B (zh) * 2020-01-15 2021-10-01 瑞鼎科技股份有限公司 串流解壓縮電路
KR102287942B1 (ko) 2020-02-24 2021-08-09 삼성전자주식회사 전처리를 이용한 영상의 ai 부호화 및 ai 복호화 방법, 및 장치
CN111787326B (zh) * 2020-07-31 2022-06-28 广州市百果园信息技术有限公司 一种熵编码及熵解码的方法和装置
US11496289B2 (en) 2020-08-05 2022-11-08 Microsoft Technology Licensing, Llc Cryptography using varying sized symbol sets
JP7521603B2 (ja) 2020-12-15 2024-07-24 日本電気株式会社 符号化装置、復号装置、符号化方法、復号方法およびプログラム
KR20220090887A (ko) 2020-12-23 2022-06-30 삼성전자주식회사 이미지 처리 장치 및 이미지 처리 장치의 동작 방법
KR20220121747A (ko) * 2021-02-25 2022-09-01 주식회사 케이티 비디오 신호 부호화/복호화 방법 및 상기 부호화 방법에 의해 생성된 데이터 스트림을 저장하는 기록 매체
CN116965028A (zh) * 2021-03-11 2023-10-27 创峰科技 用于视频编码的剩余等级二值化
WO2023137540A1 (en) * 2022-01-19 2023-07-27 The Governing Council Of The University Of Toronto System and method for off-chip data compression and decompression for machine learning networks
US20230254493A1 (en) * 2022-02-08 2023-08-10 Synaptics Incorporated Lossless compression for low-latency video transmission in resource-constrained encoding environment
CN117082257A (zh) * 2022-05-10 2023-11-17 华为技术有限公司 子流交织方法
WO2023236128A1 (en) * 2022-06-09 2023-12-14 Huawei Technologies Co., Ltd. Apparatus and methods for source coding and channel coding of low entropy signals
CN114928747B (zh) * 2022-07-20 2022-12-16 阿里巴巴(中国)有限公司 基于av1熵编码的上下文概率处理电路、方法及相关装置
CN115882867B (zh) * 2023-03-01 2023-05-12 山东水发紫光大数据有限责任公司 一种基于大数据的数据压缩存储方法

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0799812B2 (ja) * 1990-03-26 1995-10-25 株式会社グラフイックス・コミュニケーション・テクノロジーズ 信号符号化装置および信号復号化装置、並びに信号符号化復号化装置
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
CN1064773C (zh) * 1993-06-30 2001-04-18 索尼公司 数字信号的编码方法和解码方法
JP3125543B2 (ja) * 1993-11-29 2001-01-22 ソニー株式会社 信号符号化方法及び装置、信号復号化方法及び装置、並びに記録媒体
FR2722041B1 (fr) * 1994-06-30 1998-01-02 Samsung Electronics Co Ltd Decodeur de huffman
CA2156889C (en) * 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
US5473376A (en) 1994-12-01 1995-12-05 Motorola, Inc. Method and apparatus for adaptive entropy encoding/decoding of quantized transform coefficients in a video compression system
EP0777387B1 (en) 1995-12-06 2003-08-13 Harman/Becker Automotive Systems (XSYS Division) GmbH Method and apparatus for encoding digital video signals
KR100196874B1 (ko) * 1995-12-23 1999-06-15 전주범 선택적 윤곽선 근사화 장치
JP3346204B2 (ja) * 1996-12-26 2002-11-18 富士ゼロックス株式会社 可変長符号復号装置
CN1103911C (zh) 1997-10-27 2003-03-26 刘北英 全“位置数和”等分定位装置的组合使用方法
US6661839B1 (en) * 1998-03-24 2003-12-09 Advantest Corporation Method and device for compressing and expanding data pattern
US6735249B1 (en) * 1999-08-11 2004-05-11 Nokia Corporation Apparatus, and associated method, for forming a compressed motion vector field utilizing predictive motion coding
US20020152436A1 (en) * 2001-02-05 2002-10-17 O'dea James Orrin Digital error mapping circuit and method
US6650784B2 (en) * 2001-07-02 2003-11-18 Qualcomm, Incorporated Lossless intraframe encoding using Golomb-Rice
JP4125565B2 (ja) * 2001-08-31 2008-07-30 松下電器産業株式会社 画像符号化方法、画像復号化方法及びその装置
ES2733117T3 (es) * 2001-08-31 2019-11-27 Panasonic Ip Corp America Procedimiento de descodificación de imágenes y dispositivo de descodificación
US6882685B2 (en) * 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
US7436329B2 (en) 2003-04-17 2008-10-14 Droplet Technology, Inc. Multiple technique entropy coding system and method
US6825782B2 (en) * 2002-09-20 2004-11-30 Ntt Docomo, Inc. Method and apparatus for arithmetic coding and termination
JP4240283B2 (ja) * 2002-10-10 2009-03-18 ソニー株式会社 復号装置及び復号方法
CN1209925C (zh) * 2003-01-10 2005-07-06 李春林 基于信源高阶熵的数据压缩方法
JP2005130099A (ja) * 2003-10-22 2005-05-19 Matsushita Electric Ind Co Ltd 算術復号装置、算術符号化装置、算術符号化・復号装置、携帯端末装置、動画像撮影装置、及び、動画像記録・再生装置
CN101247129B (zh) * 2004-09-17 2012-05-23 广州广晟数码技术有限公司 用于音频信号编码的码书分配方法
DE102004056446A1 (de) 2004-11-23 2006-06-29 Siemens Ag Verfahren zur Transcodierung sowie Transcodiervorrichtung
KR100636229B1 (ko) * 2005-01-14 2006-10-19 학교법인 성균관대학 신축형 부호화를 위한 적응적 엔트로피 부호화 및 복호화방법과 그 장치
US7599840B2 (en) 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
US7565018B2 (en) * 2005-08-12 2009-07-21 Microsoft Corporation Adaptive coding and decoding of wide-range coefficients
US7221296B2 (en) * 2005-08-22 2007-05-22 Streaming Networks (Pvt.) Ltd. Method and system for fast context based adaptive binary arithmetic coding
JP2007116501A (ja) * 2005-10-21 2007-05-10 Victor Co Of Japan Ltd 算術符号復号化装置。
KR100873636B1 (ko) * 2005-11-14 2008-12-12 삼성전자주식회사 단일 부호화 모드를 이용하는 영상 부호화/복호화 방법 및장치
GB0524983D0 (en) * 2005-12-07 2006-01-18 Imagination Tech Ltd Recompression and decompression of a data stream for rate smoothing
AU2007261457A1 (en) * 2006-06-16 2007-12-27 Droplet Technology, Inc. System, method and apparatus of video processing and applications
CN100596198C (zh) * 2006-12-05 2010-03-24 华为技术有限公司 一种编码方法及编码器
US7573405B2 (en) * 2006-12-29 2009-08-11 Texas Instruments Incorporated System updating accumulated statistics coding variable values after multiple encodings
GB0706240D0 (en) 2007-03-30 2007-05-09 Concept 2 Manufacture Design O A valve means for gas control devices
EP2147557B1 (en) * 2007-04-18 2012-04-18 Gottfried Wilhelm Leibniz Universität Hannover Scalable compression of time-consistend 3d mesh sequences
JP2008289125A (ja) * 2007-04-20 2008-11-27 Panasonic Corp 算術復号化装置及びその方法
US8150172B2 (en) * 2007-05-04 2012-04-03 Qualcomm Incorporated Video coding mode selection using estimated coding costs
EP2150061A4 (en) * 2007-05-21 2011-07-20 Nec Corp VIDEO CODING DEVICE, VIDEO CODING METHOD, AND VIDEO CODING PROGRAM
NO326724B1 (no) * 2007-09-03 2009-02-02 Tandberg Telecom As Metode for entropikoding av transformasjonskoeffisienter i videokomprimeringssystemer
US8483282B2 (en) 2007-10-12 2013-07-09 Qualcomm, Incorporated Entropy coding of interleaved sub-blocks of a video block
US8634457B2 (en) * 2008-09-26 2014-01-21 Qualcomm Incorporated Determining availability of video data units
EP2182732A1 (en) * 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
US8892983B2 (en) * 2008-11-04 2014-11-18 Alcatel Lucent Method and apparatus for error detection in a communication system
MX2011004850A (es) * 2008-11-07 2011-05-30 Mitsubishi Electric Corp Codificador de imagenes y decodificador de imagenes.
JP5180782B2 (ja) * 2008-11-11 2013-04-10 日本電信電話株式会社 並列分散情報源符号化システム及び並列分散情報源符号化・復号化方法
WO2011013192A1 (ja) * 2009-07-27 2011-02-03 株式会社東芝 画像符号化方法および画像復号方法
US8410959B2 (en) * 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data
WO2012031628A1 (en) * 2010-09-09 2012-03-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy encoding and decoding scheme
PL3349360T3 (pl) * 2011-01-14 2020-03-31 Ge Video Compression, Llc Schemat kodowania i dekodowania entropijnego
US9871537B2 (en) * 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
EP2810371B1 (en) * 2012-01-30 2017-12-20 Fraunhofer Gesellschaft zur Förderung der angewandten Forschung e.V. Binary arithmetic coding scheme
JP2014120615A (ja) * 2012-12-17 2014-06-30 Fujitsu Semiconductor Ltd 容量素子、容量アレイおよびa/d変換器
JP2017522839A (ja) * 2014-06-20 2017-08-10 シャープ株式会社 整合パレット符号化
US10368072B2 (en) * 2015-05-29 2019-07-30 Qualcomm Incorporated Advanced arithmetic coder
US10826514B1 (en) * 2019-10-15 2020-11-03 Ciena Corporation Noise-shaping enhanced gated ring oscillator based analog-to-digital converters

Also Published As

Publication number Publication date
WO2012095488A2 (en) 2012-07-19
HUE027907T2 (en) 2016-11-28
CN107317586B (zh) 2020-11-06
KR20190021501A (ko) 2019-03-05
US10224953B2 (en) 2019-03-05
PL2768145T3 (pl) 2016-07-29
HUE037749T2 (hu) 2018-09-28
JP2020102873A (ja) 2020-07-02
KR101955143B1 (ko) 2019-03-06
JP2016007074A (ja) 2016-01-14
EP2768145B1 (en) 2016-03-23
TWI505650B (zh) 2015-10-21
KR20200127272A (ko) 2020-11-10
JP2020099077A (ja) 2020-06-25
US9698818B2 (en) 2017-07-04
US11405050B2 (en) 2022-08-02
JP2019041406A (ja) 2019-03-14
US9806738B2 (en) 2017-10-31
US20130300591A1 (en) 2013-11-14
EP2760138A2 (en) 2014-07-30
KR101785898B1 (ko) 2017-10-16
ES2671482T3 (es) 2018-06-06
TR201807771T4 (tr) 2018-06-21
CN107425855B (zh) 2021-02-02
KR20170117216A (ko) 2017-10-20
KR20230145538A (ko) 2023-10-17
TW202029746A (zh) 2020-08-01
CN107395212A (zh) 2017-11-24
US20190097649A1 (en) 2019-03-28
US10826524B2 (en) 2020-11-03
US20210028794A1 (en) 2021-01-28
KR101955142B1 (ko) 2019-03-06
EP2768145A2 (en) 2014-08-20
EP3703263A1 (en) 2020-09-02
CN107196662B (zh) 2021-07-30
KR20130140840A (ko) 2013-12-24
NO2956175T3 (es) 2018-03-03
EP2664070A2 (en) 2013-11-20
US20190334546A1 (en) 2019-10-31
US10581454B2 (en) 2020-03-03
US20160308555A1 (en) 2016-10-20
KR20200034808A (ko) 2020-03-31
TW201236380A (en) 2012-09-01
WO2012095488A3 (en) 2012-12-13
US10090856B2 (en) 2018-10-02
TWI679878B (zh) 2019-12-11
PT2760138T (pt) 2018-06-05
PT3349360T (pt) 2019-12-09
ES2759513T3 (es) 2020-05-11
KR20150054013A (ko) 2015-05-19
KR102438562B1 (ko) 2022-08-31
EP2768144B1 (en) 2016-03-23
US20190013822A1 (en) 2019-01-10
CN107317585A (zh) 2017-11-03
JP6990730B2 (ja) 2022-01-12
EP2768144A3 (en) 2014-10-08
CN107395212B (zh) 2020-09-29
DK2760138T3 (en) 2018-06-06
US10855309B2 (en) 2020-12-01
KR102393305B1 (ko) 2022-05-02
TWI640169B (zh) 2018-11-01
JP6849835B2 (ja) 2021-03-31
CN103404035B (zh) 2017-05-10
TW202315401A (zh) 2023-04-01
JP2017118547A (ja) 2017-06-29
EP2760138B1 (en) 2018-03-07
US10404272B2 (en) 2019-09-03
PL2768144T3 (pl) 2016-07-29
EP2768144A2 (en) 2014-08-20
TW202211683A (zh) 2022-03-16
US20150270850A1 (en) 2015-09-24
JP6676731B2 (ja) 2020-04-08
KR102095172B1 (ko) 2020-03-31
HUE028417T2 (en) 2016-12-28
CN107317585B (zh) 2020-09-29
PL2760138T3 (pl) 2018-08-31
US10419017B2 (en) 2019-09-17
KR20200045578A (ko) 2020-05-04
US9473169B2 (en) 2016-10-18
TWI747091B (zh) 2021-11-21
JP6479060B2 (ja) 2019-03-06
US9083374B2 (en) 2015-07-14
HK1202000A1 (zh) 2015-09-11
DK2768145T3 (da) 2016-04-04
TW201624928A (zh) 2016-07-01
CN107317586A (zh) 2017-11-03
EP3349360B1 (en) 2019-09-04
US20220416810A1 (en) 2022-12-29
TWI575886B (zh) 2017-03-21
HK1201384A1 (zh) 2015-08-28
HUE030952T2 (en) 2017-06-28
US20170207797A1 (en) 2017-07-20
EP2664070B1 (en) 2016-11-02
DK2664070T3 (en) 2017-01-09
US20160373131A1 (en) 2016-12-22
CN107342770A (zh) 2017-11-10
KR20170117217A (ko) 2017-10-20
US20190305795A1 (en) 2019-10-03
ES2566917T3 (es) 2016-04-18
TWI753434B (zh) 2022-01-21
CN103404035A (zh) 2013-11-20
DK2768144T3 (da) 2016-04-04
EP3349360A1 (en) 2018-07-18
EP3644516A1 (en) 2020-04-29
JP7247244B2 (ja) 2023-03-28
JP2023063501A (ja) 2023-05-09
US10644719B2 (en) 2020-05-05
JP5809292B2 (ja) 2015-11-10
KR20220123748A (ko) 2022-09-08
US9647683B2 (en) 2017-05-09
TWI789089B (zh) 2023-01-01
JP6077615B2 (ja) 2017-02-08
KR102222957B1 (ko) 2021-03-04
ES2566916T3 (es) 2016-04-18
KR102175762B1 (ko) 2020-11-09
CN107425855A (zh) 2017-12-01
JP2014502827A (ja) 2014-02-03
US20180019762A1 (en) 2018-01-18
US20200186164A1 (en) 2020-06-11
TW202037154A (zh) 2020-10-01
HK1259972A1 (zh) 2019-12-13
CN107342770B (zh) 2020-11-03
KR102588145B1 (ko) 2023-10-12
TW201731224A (zh) 2017-09-01
US20160149588A1 (en) 2016-05-26
KR20210024684A (ko) 2021-03-05
PL2664070T3 (pl) 2017-03-31
HUE046377T2 (hu) 2020-03-30
PL3349360T3 (pl) 2020-03-31
EP2768145A3 (en) 2014-10-08
US20180034472A1 (en) 2018-02-01
EP2760138A3 (en) 2014-10-08
HK1201999A1 (en) 2015-09-11
KR101648688B1 (ko) 2016-08-16
TW201924337A (zh) 2019-06-16
PT2664070T (pt) 2016-12-22
US9252806B2 (en) 2016-02-02
KR101741296B1 (ko) 2017-05-29
DK3349360T3 (da) 2019-12-09
US20200228135A1 (en) 2020-07-16
CN107196662A (zh) 2017-09-22
JP2021100266A (ja) 2021-07-01
KR20170060169A (ko) 2017-05-31

Similar Documents

Publication Publication Date Title
ES2607982T3 (es) Esquema de codificación y decodificación entrópica