[go: up one dir, main page]

ES2566916T3 - Esquema de codificación y descodificación por entropía - Google Patents

Esquema de codificación y descodificación por entropía Download PDF

Info

Publication number
ES2566916T3
ES2566916T3 ES14160496.7T ES14160496T ES2566916T3 ES 2566916 T3 ES2566916 T3 ES 2566916T3 ES 14160496 T ES14160496 T ES 14160496T ES 2566916 T3 ES2566916 T3 ES 2566916T3
Authority
ES
Spain
Prior art keywords
container
symbols
sequence
buffer
origin
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
ES14160496.7T
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 ES2566916T3 publication Critical patent/ES2566916T3/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 codificacion por entropia que comprende una unidad de descomposicion (136) que esta configurada para convertir una secuencia (138) de elementos de sintaxis que tienen un intervalo de valores el cual esta subdividido en una secuencia de N particiones (1401-3) en una secuencia (106) de simbolos de origen (106) mediante la descomposicion de forma individual de por lo menos un subgrupo de los elementos de sintaxis en un numero respectivo n de simbolos de origen si con i >= 1 ... n, el numero respectivo n de simbolos de origen dependiendo de en cual de la secuencia de N particiones (1401-3) cae un valor z de los elementos de sintaxis respectivos, de tal modo que una suma de valores del numero respectivo de simbolos de origen si da z, y, si n > 1, para todo i >= 1 ... n-1, el valor de si se corresponde con un intervalo de la i-esima particion; un subdivisor (100) que esta configurado para subdividir la secuencia (106) de simbolos de origen en una primera subsecuencia (108) de simbolos de origen y una segunda subsecuencia (110) de simbolos de origen de tal modo que todos los simbolos de origen sx con x siendo miembro de un primer subconjunto de {1 ... N} estan contenidos dentro de la primera subsecuencia (108) y todos los simbolos de origen sy con y siendo miembro de un segundo subconjunto de {1 ... N} que es disjunto con respecto al primer subconjunto, estan contenidos dentro de la segunda subsecuencia (110); un codificador de VLC (102) que esta configurado para codificar por simbolos los simbolos de origen de la primera subsecuencia (108); y un codificador aritmetico (104) que esta codificado para codificar la segunda subsecuencia (110) de simbolos de origen, caracterizado por que el subgrupo de los elementos de sintaxis abarca unos niveles de coeficiente de transformada absolutos de coeficientes de transformada absolutos de los bloques de transformada de una imagen con los niveles de coeficiente de transformada absolutos de un bloque de transformada respectivo estando dispuestos dentro de la secuencia (138) de elementos de sintaxis de acuerdo con una trayectoria de exploracion que conduce a traves de los coeficientes de transformada absolutos de los bloques de transformada respectivos, en el que la unidad de descomposicion esta configurada para adaptar uno o mas de los limites entre las particiones durante la descomposicion de los niveles de coeficiente de transformada absolutos de los coeficientes de transformada absolutos de un bloque de transformada respectivo dependiendo de unos niveles de coeficiente de transformada absolutos ya codificados de coeficientes de transformada absolutos de los bloques de transformada respectivos precedentes en el orden de exploracion o dependiendo de una posicion del nivel de coeficiente de transformada absoluto que se va a descomponer en la actualidad en el orden de exploracion, o sobre la base de una evaluacion de los niveles de coeficiente de transformada absolutos ya reconstruidos de coeficientes de transformada en las proximidades - o bien espacialmente o bien en el orden de exploracion - de la posicion del nivel de coeficiente de transformada absoluto que se va a descomponer en la actualidad.

Description

imagen1
Esquema de codificación y descodificación por entropía
DESCRIPCIÓN
5 La presente invención se refiere a una codificación y descodificación por entropía y se puede usar en aplicaciones tales como, por ejemplo, compresión de vídeo y de audio.
La codificación por entropía, en general, se puede considerar como la forma más genérica de compresión de datos sin pérdida. La compresión sin pérdida tiene por objeto representar unos datos discretos con menos bits de los
10 necesarios para la representación de datos original pero sin pérdida alguna de información. Los datos discretos se pueden dar en forma de texto, gráficos, imágenes, vídeo, audio, habla, fax, datos médicos, datos meteorológicos, datos financieros, o cualquier otra forma de datos digitales.
En la codificación por entropía, se descuidan las características de alto nivel específicas del origen de datos
15 discretos subyacente a menudo. En consecuencia, se considera que cualquier origen de datos se da como una secuencia de símbolos de origen que adopta valores en un alfabeto mario dado y que se caracteriza por una distribución de probabilidad (discreta) correspondiente {p1, ... , pm}. En estos escenarios abstractos, el límite inferior de cualquier método de codificación por entropía en términos de la longitud de palabra de código esperada en bits por símbolos viene dado por la entropía
20
imagen2
Los códigos de Huffman y los códigos aritméticos son ejemplos bien conocidos de códigos prácticos capaces de aproximarse al límite de entropía (en un cierto sentido). Para una distribución de probabilidad fija, los códigos de 25 Huffman son relativamente sencillos de construir. La propiedad más atractiva de los códigos de Huffman es que su implementación puede ser realizada de forma eficiente mediante el uso de tablas de códigos de longitud variable (VLC, variable length code). No obstante, cuando se abordan unas estadísticas de origen variables en el tiempo, es decir, unas probabilidades de símbolo cambiantes, la adaptación del código de Huffman y sus tablas de VLC correspondientes es bastante exigente, tanto en términos de la complejidad algorítmica así como en términos de los 30 costes de implementación. Asimismo, en el caso de tener un valor de alfabeto dominante con pk > 0,5, la redundancia del código de Huffman correspondiente (sin usar ampliación de alfabeto alguna tal como la codificación de longitud de series) puede ser bastante sustancial. Otra deficiencia de los códigos de Huffman viene dada por el hecho de que en el caso de tratar con un modelado de probabilidad de orden superior, se pueden requerir múltiples conjuntos de tablas de VLC. La codificación aritmética, por otro lado, a pesar de ser sustancialmente más compleja 35 que VLC, ofrece la ventaja de una manipulación más consistente y adecuada cuando se hace frente a un modelado de probabilidad adaptativo y de orden superior así como con el caso de unas distribuciones de probabilidad muy sesgadas. En la práctica, esta característica básicamente resulta del hecho de que la codificación aritmética proporciona un mecanismo, por lo menos conceptualmente, para poner en correspondencia cualquier valor dado de estimada de probabilidad de una forma más o menos directa con una porción de la palabra de código resultante.
40 Estando provista con una interconexión de este tipo, la codificación aritmética permite una separación limpia entre las tareas de modelado de probabilidad y de estimación de probabilidad, por un lado, y la codificación por entropía real, es decir, la puesta en correspondencia de unos símbolos con palabras de código, por otro lado.
Una alternativa a la codificación aritmética y la codificación de VLC es la codificación de PIPE. Para ser más
45 precisos, en la codificación de PIPE, el intervalo unitario se subdivide en particiones para dar un pequeño conjunto de intervalos de probabilidad disjuntos para canalizar el procesamiento de codificación a lo largo de las estimadas de probabilidad de variables de símbolo aleatorias. De acuerdo con esta subdivisión en particiones, una secuencia de entrada de símbolos de origen discretos con tamaños de alfabeto arbitrarios se puede poner en correspondencia con una secuencia de símbolos alfabéticos y cada uno de los símbolos alfabéticos se asigna a un intervalo de
50 probabilidad particular que es, a su vez, codificado por un proceso de codificación por entropía especialmente dedicado. Con cada uno de los intervalos estando representado por una probabilidad fija, el proceso de codificación de entropía de subdivisión en particiones de intervalos de probabilidad (PIPE, probability interval partitioning entropy) se puede basar en el diseño y la aplicación de códigos de longitud de variable a variable. El modelado de probabilidad puede o bien ser fijo o bien ser adaptativo. No obstante, a pesar de que la codificación de PIPE es
55 significativamente menos compleja que la codificación aritmética, esta sigue teniendo una complejidad más alta que la codificación de VLC.
Por lo tanto, sería favorable tener a mano un esquema de codificación por entropía el cual posibilite lograr una mejor compensación recíproca entre la complejidad de codificación por un lado y la eficiencia de compresión por otro lado,
60 incluso cuando se compara con la codificación de PIPE la cual ya combina ventajas tanto de la codificación aritmética como de la codificación de VLC.
imagen3
Además, en general, sería favorable tener a mano un esquema de codificación por entropía el cual posibilite lograr una mejor eficiencia de compresión de por sí, con una complejidad de codificación moderada. El documento WO 2008/129021 A2 se refiere a la compresión escalonable de secuencias de estructura reticular en 3D temporalmente consistentes. En lo que respecta a la cuantificación y la codificación por entropía, el documento
5 describe que los errores de predicción de los vectores de estructura reticular se comprimen componente a componente. En particular, las componentes se ponen en correspondencia con la cantidad de números enteros, es decir con signo, y un máximo para la cantidad, es decir imax, se usa para definir un intervalo dentro de la cantidad de números enteros para el cual las componentes que caen dentro de este intervalo se codifican por entropía. La cantidad residual, es decir la distancia al extremo más cercano del intervalo, se codifica mediante el uso de códigos
10 de Golomb.
Un objeto de la presente invención es la provisión de un concepto de codificación por entropía el cual satisface la demanda que se ha identificado en lo que antecede, es decir permite conseguir una mejor compensación recíproca entre la complejidad de codificación por un lado y la eficiencia de compresión por otro lado.
15 Este objeto se logra mediante la materia objeto de las reivindicaciones independientes.
La presente invención se basa en la idea de que la descomposición de un intervalo de valores de los elementos de sintaxis respectivos en una secuencia de n particiones con codificación de las componentes de los valores de
20 elemento de sintaxis z encontrándose dentro de las particiones respectivas por separado con por lo menos una mediante codificación de VLC y con por lo menos una mediante codificación aritmética. Por consiguiente, de acuerdo con realizaciones de la presente invención, elementos de sintaxis se descomponen en un número respectivo n de símbolos de origen si con i = 1 ... n, el número respectivo n de símbolos de origen dependiendo de en cual de una secuencia de n particiones (14013) en las cuales está subdividido un intervalo de valores de los
25 elementos de sintaxis respectivos, cae un valor z de los elementos de sintaxis respectivos, de tal modo que una suma de valores del número respectivo de símbolos de origen si da z, y, si n > 1, para todo i = 1 ... n1, el valor de si se corresponde con un intervalo de la iésima partición.
Aspectos preferidos de la presente invención son el objeto de las reivindicaciones dependientes incluidas.
30 Realizaciones preferidas de la presente invención se describen en lo sucesivo con respecto a las figuras. Estas realizaciones representan ejemplos, en la medida en la que estas no usen codificación aritmética junto a la codificación de VLC. Entre las figuras,
35 la figura 1a muestra un diagrama de bloques de un aparato de codificación por entropía;
la figura 1b muestra un diagrama esquemático que ilustra una posible descomposición de elementos de sintaxis en símbolos de origen;
40 la figura 1c muestra un diagrama de flujo que ilustra un posible modo de funcionamiento de la unidad de descomposición de la figura 1a en la descomposición de elementos de sintaxis en símbolos de origen;
la figura 2a muestra un diagrama de bloques de un aparato de descodificación por entropía;
45 la figura 2b muestra un diagrama de flujo que ilustra un posible modo de funcionamiento de la unidad de composición de la figura 2a en la composición de elementos de sintaxis a partir de símbolos de origen;
la figura 3 muestra un diagrama de bloques de un codificador de PIPE de acuerdo con una realización de comparación el cual se puede usar en la figura 1; 50
la figura 4 muestra un diagrama de bloques de un descodificador de PIPE adecuado para descodificar un tren de bits generado por el codificador de PIPE de la figura 3, de acuerdo con una realización de comparación, el cual se puede usar en la figura 2;
55 la figura 5 muestra un diagrama esquemático que ilustra un paquete de datos con trenes de bits parciales multiplexados;
la figura 6 muestra un diagrama esquemático que ilustra un paquete de datos con una segmentación alternativa que usa unos segmentos de tamaño fijo; 60 la figura 7 muestra un diagrama de bloques de un codificador de PIPE usando una intercalación de trenes de bits parciales;
la figura 8 muestra un diagrama esquemático que ilustra ejemplos para el estatus de una memoria intermedia de palabras de código en el lado de codificador de la figura 7;
imagen4
la figura 9 muestra un diagrama de bloques de un descodificador de PIPE que usa una intercalación de trenes de bits parciales; 5 la figura 10 muestra un diagrama de bloques de un descodificador de PIPE usando una intercalación de palabras de código que usa un único conjunto de palabras de código;
la figura 11 muestra un diagrama de bloques de un codificador de PIPE usando una intercalación de secuencias de bits de longitud fija; 10 la figura 12 muestra un diagrama esquemático que ilustra ejemplos para el estatus de una memoria intermedia de bits global en el lado de codificador de la figura 11;
la figura 13 muestra un diagrama de bloques de un descodificador de PIPE usando una intercalación de 15 secuencias de bits de longitud fija;
la figura 14 muestra una gráfica para ilustrar una discretización de intervalo de probabilidad óptima en K= 4 intervalos suponiendo una distribución de probabilidad uniforme en (0, 0,5];
20 la figura 15 muestra un diagrama esquemático que ilustra un árbol de eventos binarios para una probabilidad de LPB de p = 0,38 y un código de longitud variable asociado obtenido mediante el algoritmo de Huffman;
la figura 16 muestra una gráfica a partir de la cual se puede reunir el aumento relativo de tasa de bits ρ(p, C) para unos códigos óptimos C dado un número máximo de entradas de tabla Lm; 25
la figura 17 muestra una gráfica que ilustra el aumento de tasa para la subdivisión en particiones de intervalos de probabilidad teóricamente óptima en K = 12 intervalos y un diseño real con códigos de V2V con un número máximo de Lm = 65 entradas de tabla;
30 la figura 18 muestra un diagrama esquemático que ilustra un ejemplo para la conversión de un árbol de elección ternario en un árbol de elección binario completo;
la figura 19 muestra un diagrama de bloques de un sistema que comprende un codificador (parte izquierda) y un descodificador (parte derecha); 35 la figura 20 muestra un diagrama de bloques de un aparato de codificación por entropía;
la figura 21 muestra un diagrama de bloques de un aparato de descodificación por entropía;
40 la figura 22 muestra un diagrama de bloques de un aparato de codificación por entropía;
la figura 23 muestra un diagrama esquemático que ilustra ejemplos para el estatus de una memoria intermedia de bits global en el lado de codificador de la figura 22;
45 la figura 24 muestra un diagrama de bloques de un aparato de descodificación por entropía.
Antes de que se describan varias realizaciones de la presente solicitud en lo sucesivo con respecto a las figuras, se hace notar que se usan signos de referencia iguales por la totalidad de las figuras con el fin de indicar unos elementos iguales o equivalentes en estas figuras, y la descripción de estos elementos presentada con cualquiera
50 de las figuras previas también será de aplicación a cualquiera de las siguientes figuras siempre que la descripción anterior no entre en conflicto con la descripción de las figuras actuales.
La figura 1a muestra un aparato de codificación por entropía. El aparato comprende un subdivisor 100, un codificador de VLC 102 y un codificador de PIPE 104.
55 El subdivisor 100 está configurado para subdividir una secuencia de símbolos de origen 106 en una primera subsecuencia 108 de símbolos de origen y una segunda subsecuencia 110 de símbolos de origen. El codificador de VLC 102 tiene una entrada del mismo que está conectada con una primera salida del subdivisor 100 y está configurado para convertir por símbolos los símbolos de origen de la primera subsecuencia 108 en unas palabras de
60 código formando un primer tren de bits 112. El codificador de VLC 102 puede comprender una tabla de consulta y usar, de forma individual, los símbolos de origen como un índice con el fin de consulta, por símbolos de origen, una palabra de código respectiva en la tabla de consulta. El codificador de VLC emite esta última palabra de código, y prosigue con el siguiente símbolo de origen en la subsecuencia 110 con el fin de emitir una secuencia de palabras de código en la que cada palabra de código está asociada con exactamente uno de los símbolos de origen dentro de la subsecuencia 110. Las palabras de código pueden tener diferentes longitudes y se pueden definir de tal modo que ninguna palabra de código forma un prefijo con cualquiera de las otras palabras de código. Adicionalmente, la tabla de consulta puede ser estática.
imagen5
5 El codificador de PIPE 104 tiene una entrada del mismo que está conectada con una segunda salida del subdivisor 100 y está configurado para codificar la segunda subsecuencia 110 de símbolos de origen, que se representa en la forma de una secuencia de símbolos alfabéticos, y comprende una unidad de asignación 114 que está configurada para asignar una medida para una estimada de una distribución de probabilidad entre los posibles valores que pueden asumir los símbolos alfabéticos respectivos, a cada símbolo alfabético de la secuencia de símbolos
10 alfabéticos sobre la base de la información contenida dentro de símbolos alfabéticos previos de la secuencia de símbolos alfabéticos, una pluralidad de codificadores por entropía 116 cada uno de los cuales está configurado para convertir los símbolos alfabéticos reenviados al codificador por entropía respectivo en un segundo tren de bits 118 respectivo, y un selector 120 que está configurado para reenviar cada símbolo alfabético de la segunda subsecuencia 110 a uno seleccionado de la pluralidad de codificadores por entropía 116, dependiendo la selección
15 de la medida que se ha mencionado en lo que antecede para la estimada de la distribución de probabilidad asignada al símbolo alfabético respectivo. La asociación entre símbolos de origen y símbolos alfabéticos puede ser de tal modo que cada símbolo alfabético se asocia de forma única con exactamente un símbolo de origen de la subsecuencia 110 con el fin de representar, junto con símbolos alfabéticos posiblemente adicionales de la secuencia de símbolos alfabéticos los cuales pueden seguir inmediatamente unos a otros, este mismo símbolo de origen.
20 Tal como se describe con más detalle en lo sucesivo, la secuencia 106 de símbolos de origen puede ser una secuencia de elementos de sintaxis de un tren de bits que se puede analizar sintácticamente. El tren de bits que se puede analizar sintácticamente puede representar, por ejemplo, contenido de vídeo y / o de audio de una forma escalonable o no escalonable con los elementos de sintaxis representando, por ejemplo, niveles de coeficiente de
25 transformada, vectores de movimiento, índices de referencia de imágenes de movimiento, factores de escala, valores de energía de envolvente de audio o similares. Los elementos de sintaxis pueden, en particular, ser de diferente tipo o categoría con elementos de sintaxis del mismo tipo, por ejemplo, teniendo el mismo significado dentro del tren de bits que se puede analizar sintácticamente pero con respecto a diferentes porciones del mismo, tal como diferentes imágenes, diferentes macrobloques, diferentes componentes espectrales o similares, mientras que
30 elementos de sintaxis de diferente tipo pueden tener un significado diferente dentro del tren de bits, tal como un vector de movimiento tiene un significado diferente al de un elemento de sintaxis que representa un nivel de coeficiente de transformada que representa el residuo de predicción de movimiento.
El subdivisor 100 se puede configurar para realizar la subdivisión dependiendo del tipo de los elementos de sintaxis.
35 Es decir, el subdivisor 100 puede reenviar elementos de sintaxis de un primer grupo de tipos a la primera subsecuencia 108 y reenviar elementos de sintaxis de un segundo grupo de tipos distinto del primer grupo, a la segunda subsecuencia 110. La subdivisión que es realizada por el subdivisor 100 se puede diseñar de tal modo que las estadísticas de símbolos de los elementos de sintaxis dentro de la subsecuencia 108 son adecuadas para someterse a codificación de VLC por el codificador de VLC 102, es decir da como resultado, de hecho, casi una
40 mínima entropía posible a pesar del uso de la codificación de VLC y su restricción con respecto a su idoneidad para determinadas estadísticas de símbolos tal como se bosqueja en la porción introductoria de la memoria descriptiva de la presente solicitud. Por otro lado, el subdivisor 100 puede reenviar todos los otros elementos de sintaxis a la segunda subsecuencia 110 de tal modo que estos elementos de sintaxis que tienen unas estadísticas de símbolos que no son adecuadas para la codificación de VLC, son codificados por el codificador de PIPE más complejo, pero
45 más eficiente en términos de la relación de compresión 104.
Tal como es también el caso con el mayor detalle con respecto a las siguientes figuras, el codificador de PIPE 104 puede comprender un simbolizador 122 que está configurado para poner en correspondencia de forma individual cada elemento de sintaxis de la segunda subsecuencia 110 con una secuencia parcial respectiva de símbolos 50 alfabéticos, formando en conjunto la secuencia 124 que se ha mencionado en lo que antecede de símbolos alfabéticos. Dicho de otra forma, el simbolizador 122 puede no estar presente si, por ejemplo, los símbolos de origen de la subsecuencia 110 ya están representados como secuencias parciales respectivas de símbolos alfabéticos. El simbolizador 122 es, por ejemplo, ventajoso en el caso de que los símbolos de origen dentro de la subsecuencia 110 sean de diferentes alfabetos y, en especial, alfabetos que tienen diferentes números de símbolos alfabéticos
55 posibles. En concreto, en este caso, el simbolizador 122 puede armonizar los alfabetos de los símbolos que llegan al interior del subtren 110. El simbolizador 122 se puede realizar, por ejemplo, como una unidad de binarización que está configurada para binarizar los símbolos que llegan dentro de la subsecuencia 110.
Tal como se ha mencionado antes, los elementos de sintaxis pueden ser de diferente tipo. Esto también puede ser
60 cierto para los elementos de sintaxis en el interior del subtren 110. Entonces, el simbolizador 122 se puede configurar para realizar la puesta en correspondencia individual de los elementos de sintaxis de la subsecuencia 110 usando un esquema de puesta en correspondencia de simbolización, tal como un esquema de binarización, diferente para elementos de sintaxis de diferente tipo. En la siguiente descripción se presentan ejemplos para esquemas de binarización específicos, tal como un esquema de binarización unaria, un esquema de binarización de Golomb Exponencial de orden 0 o de orden 1, por ejemplo, o un esquema de binarización unaria truncada, un esquema de binarización de orden 0 de Golomb Exponencial truncada y reordenada o un esquema de binarización no sistemática.
imagen6
5 Por consiguiente, los codificadores por entropía 116 se podrían configurar para operar sobre un alfabeto binario. Por último, se debería hacer notar que el simbolizador 122 se puede considerar como que es parte del codificador de PIPE 104 en sí tal como se muestra en la figura 1a. Como alternativa, no obstante, la unidad de binarización se puede considerar como que es externa con respecto al codificador de PIPE. De forma similar a lo que se ha hecho indicado anteriormente, se debería hacer notar que la unidad de asignación
10 114, a pesar de que se muestra que está conectado en serie entre el simbolizador 122 y el selector 120, como alternativa se puede considerar como que está conectada entre una salida del simbolizador 124 y una primera entrada del selector 120, con una salida de la unidad de asignación 114 estando conectada con otra entrada del selector 120 tal como se describe posteriormente con respecto a la figura 3. En efecto, la unidad de asignación 114 acompaña cada símbolo alfabético con la medida que se ha mencionado en lo que antecede para una estimación de
15 la distribución de probabilidad.
En lo que respecta a la salida del aparato de codificación por entropía de la figura 1a, la misma está compuesta por el primer tren de bits 112 que es emitido por el codificador de VLC 102 y la pluralidad de segundos trenes de bits 118 que son emitidos por la pluralidad de codificadores por entropía 116. Tal como se describe adicionalmente en lo 20 sucesivo, la totalidad de estos trenes de bits se pueden transmitir en paralelo. Como alternativa, los mismos se pueden intercalar para dar un tren de bits común 126 mediante el uso de un intercalador 128. Las figuras 22 a 24 muestran ejemplos con tal intercalación de trenes de bits. Tal como se muestra adicionalmente en la figura 1, el codificador de PIPE 104 en sí puede comprender su propio intercalador 130 con el fin de intercalar la pluralidad de segundos trenes de bits 118 en un tren de bits codificado de PIPE común 132. A partir de la descripción de las
25 figuras 5 a 13 se pueden obtener posibilidades para tal intercalador 130. El tren de bits 132 y el tren de bits 112 pueden representar, en una configuración en paralelo, la salida del aparato de codificación por entropía de la figura 1a. Como alternativa, otro intercalador 134 puede intercalar ambos trenes de bits, caso en el cual, el intercalador 130 y 134 formaría dos fases de un intercalador de dos fases 128.
30 Tal como se ha descrito en lo que antecede, el subdivisor 100 puede realizar la subdivisión por elementos de sintaxis, es decir los símbolos de origen sobre los que opera el subdivisor 100 pueden ser elementos de sintaxis completos o, hablando de forma alternativa, el subdivisor 100 puede operar en unidades de elementos de sintaxis.
No obstante, el aparato de codificación por entropía de la figura 1a puede comprender la unidad de descomposición
35 136 con el fin de descomponer elementos de sintaxis dentro de un tren de bits que se puede analizar sintácticamente 138 de forma individual en uno o más de los símbolos de origen de la secuencia de símbolos de origen 106 que entran en el subdivisor 100.
En particular, la unidad de descomposición 136 se puede configurar para convertir la secuencia 138 de elementos
40 de sintaxis en la secuencia 106 de símbolos de origen mediante la descomposición de forma individual de cada elemento de sintaxis en un número entero respectivo de símbolos de origen. El número entero puede variar entre los elementos de sintaxis. En particular, algunos de los elementos de sintaxis incluso pueden ser dejados sin cambios por la unidad de descomposición 136, mientras que otros elementos de sintaxis se descomponen en exactamente dos, o por lo menos dos, símbolos de origen. El subdivisor 100 se puede configurar para reenviar uno de los
45 símbolos de origen de tales elementos de sintaxis descompuestos a la primera subsecuencia 108 de símbolos de origen y otro de los símbolos de origen del mismo elemento de sintaxis descompuesto a la segunda subsecuencia 110 de símbolos de origen. Tal como se ha mencionado en lo que antecede, los elementos de sintaxis en el interior del tren de bits 138 pueden ser de diferente tipo, y la unidad de descomposición 136 se puede configurar para realizar la descomposición individual dependiendo del tipo del elemento de sintaxis. La unidad de descomposición
50 136 preferiblemente realiza la descomposición individual de los elementos de sintaxis de tal modo que existe una puesta en correspondencia inversa única previamente determinada que se usa más adelante en el lado de descodificación, a partir del número entero de símbolos de origen hasta el elemento de sintaxis respectivo, común para todos los elementos de sintaxis.
55 Por ejemplo, la unidad de descomposición 136 se puede configurar para descomponer los elementos de sintaxis z en el tren de bits que se puede analizar sintácticamente 138, en dos símbolos de origen x e y de tal modo que z = x
+ y, z = x—y, o z = x : y. Mediante esta medida, el subdivisor 100 puede descomponer los elementos de sintaxis en dos componentes, en concreto los símbolos de origen del tren de símbolos de origen 106, uno de los cuales es adecuado para someterse a codificación de VLC en términos de la eficiencia de compresión, tal como x, y el otro de
60 los cuales no es adecuado para la codificación de VLC y se pasa, por lo tanto, al segundo subtren 110 en lugar del primer subtren 108, tal como y. No es necesario que la descomposición usada por la unidad de descomposición 136 sea biyectiva. No obstante, tal como se ha mencionado antes, debería existir una puesta en correspondencia inversa que permita una única recuperación de los elementos de sintaxis de las posibles descomposiciones entre las cuales puede elegir la unidad de descomposición 136 si la descomposición no es biyectiva.
imagen7
Hasta la fecha, se han descrito diferentes posibilidades para la manipulación de diferentes elementos de sintaxis. En lo que respecta a si existen tales elementos de sintaxis o casos, es opcional. La descripción adicional, no obstante, se centra en los elementos de sintaxis que se descomponen por la unidad de descomposición 136 de acuerdo con el
5 siguiente principio.
Tal como se muestra en la figura 1b, la unidad de descomposición 136 está configurada para descomponer determinados elementos de sintaxis z en el tren de bits que se puede analizar sintácticamente 138 en fases. Pueden existir dos o más fases. Las fases son para dividir el intervalo de valores de elemento de sintaxis z en dos o más 10 subintervalos o subrangos adyacentes tal como se muestra en la figura 1c. El intervalo de valores de elemento de sintaxis puede tener dos puntos de extremo infinitos, meramente uno o puede tener unos puntos de extremo definidos. En la figura 1c, el intervalo de valores de elemento de sintaxis se subdivide a modo de ejemplo en tres particiones 14013. Tal como se muestra en la figura 1b, si el elemento de sintaxis es mayor o igual que el límite 142 de la primera partición 1401, es decir el límite superior que separa las particiones 1401 y 1402, entonces al elemento 15 de sintaxis se le sustrae el límite límite1 de la primera partición 1401 y z se comprueba de nuevo en lo que respecta a si la misma es incluso mayor o igual que el límite 144 de la segunda partición 1402, es decir el límite superior que separa las particiones 1402 y 1403. Si z’ es mayor o igual que el límite 144, entonces a z’ se le sustrae el límite límite2 de la segunda partición 1402 lo que da como resultado z”. En el primer caso en el que z es más pequeño que límite1, el elemento de sintaxis z se envía al subdivisor 100 en lenguaje claro. En el caso de que z se encuentre 20 entre el límite1 y el límite2, el elemento de sintaxis z se envía al subdivisor 100 en como una tupla (límite1, z’) con z = límite1 + z’, y en el caso de que z se encuentre por encima de límite2, el elemento de sintaxis z se envía al subdivisor 100 en como una tripleta (límite1, límite2 límite1, z’) con z = límite1 + límite2 + z’. La primera (o la única) componente, es decir z o límite1, forma un primer símbolo de origen que va a codificarse por el subdivisor 100, la segunda componente, es decir z’ o límite2 límite1 forma un segundo símbolo de origen que va a codificarse por el
25 subdivisor 100, de encontrarse presente, y la tercera componente, es decir z”, forma un tercer símbolo de origen que va a codificarse por el subdivisor 100, de encontrarse presente. Por lo tanto, de acuerdo con la figura 1b y 1c, el elemento de sintaxis se pone en correspondencia con cualquiera de 1 a 3 símbolos de origen, pero se pueden obtener fácilmente generalizaciones acerca de un número más o menos máximo de símbolos de origen a partir de la descripción anterior, y tales alternativas también se describirán en lo sucesivo.
30 En cualquier caso, la totalidad de estas diferentes componentes o símbolos de origen resultantes son de acuerdo con las realizaciones posteriores, codificados con alternativas de codificación de entre las mismas. Por lo menos uno de estos se reenvía por el subdivisor al codificador de PIPE 104, y por último otro de los mismos se envía al codificador de VLC 102.
35 En lo sucesivo se esbozan con más detalle realizaciones ventajosas particulares.
Después de haber descrito en lo que antecede un aparato de codificación por entropía, un aparato de descodificación por entropía se describe con respecto a la figura 2a. El aparato de descodificación por entropía de la 40 figura 2a comprende un descodificador de VLC 200 y un descodificador de PIPE 202. El descodificador de VLC 200 está configurado para reconstruir por códigos los símbolos de origen de una primera subsecuencia 204 a partir de palabras de código de un primer tren de bits 206. El primer tren de bits 206 es igual a un tren de bits 112 de la figura 1, y lo mismo es de aplicación a la subsecuencia 204 en lo que respecta a la subsecuencia 108 de la figura 1a. El descodificador de PIPE 202 está configurado para reconstruir una segunda subsecuencia 208 de símbolos de 45 origen, que se representa en la forma de una secuencia de símbolos alfabéticos, y comprende una pluralidad de descodificadores por entropía 210, una unidad de asignación 212 y un selector 214. La pluralidad de descodificadores por entropía 210 están configurados para convertir uno respectivo de los segundos trenes de bits 216 en símbolos alfabéticos de la secuencia de símbolos alfabéticos. La unidad de asignación 212 está configurada para asignar una medida de una estimada de una distribución de probabilidad entre los posibles valores que pueden 50 asumir los símbolos alfabéticos respectivos, a cada símbolo alfabético de la secuencia de símbolos alfabéticos que representa la segunda subsecuencia 208 de símbolos de origen que se va a reconstruir, sobre la base de la información que está contenida dentro de símbolos alfabéticos previamente reconstruidos de la secuencia de símbolos alfabéticos. Con este fin, la unidad de asignación 212 se puede conectar en serie entre una salida del selector 214 y una entrada del mismo, mientras que entradas adicionales del selector 214 tienen salidas de los 55 descodificadores por entropía 210 conectadas a los mismos de forma respectiva. El selector 214 está configurado para recuperar cada símbolo alfabético de la secuencia de símbolos alfabéticos a partir de uno seleccionado de la pluralidad de descodificadores por entropía 210, dependiendo la selección de la medida asignada al símbolo alfabético respectivo. Dicho de otra forma, el selector 214 junto con la unidad de asignación 212 es operativo para recuperar los símbolos alfabéticos obtenidos mediante los descodificadores por entropía 210 en un orden entre los 60 descodificadores por entropía 210 obtenidos mediante información de prospección contenida dentro de símbolos alfabéticos previos de la secuencia de símbolos alfabéticos. Dicho incluso de otra forma, la unidad de asignación 212 y el selector 214 son capaces de reconstruir el orden original de los símbolos alfabéticos de símbolo alfabético a símbolo alfabético. Junto con el pronóstico del siguiente símbolo alfabético, la unidad de asignación 212 es capaz de determinar la medida que se ha mencionado en lo que antecede de la estimada de la distribución de probabilidad para el símbolo alfabético respectivo mediante el uso del cual el selector 214 selecciona entre los descodificadores por entropía 210 para recuperar el valor real de este símbolo alfabético. Para ser incluso más precisos, tal como se describirá con más detalle en lo sucesivo, el descodificador de PIPE 202 se puede configurar para reconstruir la subsecuencia 208 de símbolos de origen, que se representa en la forma de la secuencia de símbolos alfabéticos, 5 sensible a solicitudes de símbolo alfabético que solicitan de forma secuencial los símbolos alfabéticos, y la unidad de asignación 212 se puede configurar para asignar a cada solicitud para un símbolo alfabético de la secuencia de símbolos alfabéticos que representa la segunda subsecuencia (208) de símbolos de origen que se va a reconstruir, la medida que se ha mencionado en lo que antecede de una estimada de una distribución de probabilidad entre los posibles valores que puede asumir el símbolo alfabético respectivo. Por consiguiente, el selector 214 se puede 10 configurar para recuperar, para cada solicitud para un símbolo alfabético de la secuencia de símbolos alfabéticos que representa la segunda subsecuencia (208) de símbolos de origen que se va a reconstruir, el símbolo alfabético respectivo de la secuencia de símbolos alfabéticos a partir de uno seleccionado de la pluralidad de descodificadores por entropía 210, dependiendo la selección de la medida asignada a la solicitud respectiva del símbolo alfabético respectivo. La concordancia entre solicitudes en el lado de descodificación por un lado, y la codificación o flujo de
imagen8
15 datos en el lado de codificación por otro lado se bosquejará con más detalle con respecto a la figura 4.
Como la primera subsecuencia 214 de símbolos de origen y la segunda subsecuencia 208 de símbolos de origen comúnmente a partir de una secuencia común 210 de símbolos de origen, el aparato de descodificación por entropía de la figura 2a puede comprender de forma opcional un recombinador 220 que está configurado para recombinar la
20 primera subsecuencia 204 y la segunda subsecuencia 208 para obtener la secuencia común 218 de símbolos de origen. Esta secuencia común 208 de símbolos de origen da una reconstrucción de la secuencia 106 de la figura 1a.
De acuerdo con la descripción que se ha presentado en lo que antecede con respecto a la figura 1, los símbolos de origen de la primera y la segunda subsecuencias 204 y 208 pueden ser elementos de sintaxis de un tren de bits que 25 se puede analizar sintácticamente. En este caso, el recombinador 220 se podría configurar para reconstruir este tren de bits que se puede analizar sintácticamente de la secuencia 218 de elementos de sintaxis mediante la intercalación de los símbolos de origen que llegan por medio de la primera y la segunda subsecuencias 204 y 208 en un orden que es dictado por una cierta regla de análisis sintáctico que define un orden entre los elementos de sintaxis. En particular, los elementos de sintaxis pueden ser, tal como se ha descrito en lo que antecede, de 30 diferente tipo y el recombinador 220 se puede configurar para recuperar o solicitar elementos de sintaxis de un primer grupo de tipos a partir del descodificador de VLC 200 por medio del subtren 204, y elementos de sintaxis de un segundo tipo a partir del descodificador de PIPE 202 por medio del subtren 208. Por consiguiente, siempre que la regla de análisis sintáctico recién mencionada indique que un elemento de sintaxis de un tipo dentro del primer grupo es el siguiente en línea, el recombinador 202 inserta un símbolo de origen real de la subsecuencia 204 en la
35 secuencia común 218, y a partir de la subsecuencia 208 de lo contrario.
De forma similar, el descodificador de PIPE 202 podría comprender un desimbolizador 222 conectado entre la salida del selector 214 y una entrada del recombinador 220. De forma similar a la descripción en lo que antecede con respecto a la figura 1, el desimbolizador 222 se podría considerar como que es externo con respecto al 40 descodificador de PIPE 202 e incluso se podría disponer por detrás del recombinador 202, es decir en el lado de salida del recombinador 220, como alternativa. El desimbolizador 222 se podría configurar para volver a establecer una correspondencia, en unidades de secuencias parciales de símbolos alfabéticos, de la secuencia de símbolos alfabéticos 224 que es emitida por el selector 214 con los símbolos de origen, es decir elementos de sintaxis de la subsecuencia 208. De forma similar al recombinador 220, el desimbolizador 222 tiene conocimiento sobre la 45 construcción de secuencias parciales posibles de símbolos alfabéticos. En particular, el desimbolizador 222 puede analizar símbolos alfabéticos recientemente recibidos a partir del selector 214 con el fin de determinar en lo que respecta a si estos símbolos alfabéticos recientemente recibidos dan una secuencia parcial válida de símbolos alfabéticos asociados con un valor respectivo del elemento de sintaxis respectivo, o en lo que respecta a si este no es el caso, y qué símbolo alfabético es el siguiente que está ausente. Dicho incluso de otra forma, el simbolizador 50 222 tiene conocimiento, en cualquier instante, en lo que respecta a si se han de recibir símbolos alfabéticos adicionales a partir del selector 214 con el fin de acabar la recepción de un elemento de sintaxis respectivo o no, y por consiguiente, a qué elemento de sintaxis pertenece uno respectivo de los símbolos alfabéticos que son emitidos por el selector 214. Con este fin, el desimbolizador 222 puede usar un esquema de puesta en correspondencia de (de)simbolización que difiere para elementos de sintaxis de diferente tipo. De forma similar, la unidad de asignación 55 212 tiene conocimiento sobre la asociación de un símbolo alfabético actual que va a recuperarse a partir de cualquiera de los descodificadores por entropía 210 por el selector 214, hasta uno respectivo de los elementos de sintaxis y puede establecer la medida que se ha mencionado en lo que antecede de estimación de una distribución de probabilidad de este símbolo alfabético en consecuencia, es decir dependiendo del tipo de elemento de sintaxis asociado. Lo que es más, la unidad de asignación 212 puede diferenciar entre diferentes símbolos alfabéticos que 60 pertenecen a la misma secuencia parcial de un símbolo alfabético actual y puede establecer la medida de la estimada de distribución de probabilidad de forma diferente para estos símbolos alfabéticos. En lo sucesivo se describen con más detalle detalles a este respecto. Tal como se ha descrito en los mismos, la unidad de asignación 212 se puede configurar para asignar contextos a los símbolos alfabéticos. La asignación puede ser dependiente del tipo de elemento de sintaxis y / o la posición dentro de la secuencia parcial de símbolos alfabéticos del elemento de
imagen9
sintaxis actual. Tan pronto como la unidad de asignación 212 ha asignado un contexto a un símbolo alfabético actual que va a recuperarse a partir de cualquiera de los descodificadores por entropía 210 por el selector 214, el símbolo alfabético puede tener de forma inherente la medida de la estimada de distribución de probabilidad asociada al mismo debido a que cada contexto tiene su medida de estimada asociada al mismo. Además, el contexto y su
5 medida asociada de la estimada de distribución de probabilidad – puede adaptarse de acuerdo con las estadísticas reales de los símbolos alfabéticos del contexto respectivo que se ha recuperado a partir de los descodificadores por entropía 210 hasta el momento. En lo sucesivo se presentan con más detalle detalles a este respecto.
De forma similar al análisis anterior de la figura 1, puede ser posible que la correspondencia entre los símbolos de
10 origen que se han mencionado en lo que antecede de las subsecuencias 204 y 208 en los elementos de sintaxis no sea una correspondencia biunívoca. En su lugar, los elementos de sintaxis se pueden haber descompuesto en un número entero de símbolos de origen con el número variando, con el tiempo, entre los elementos de sintaxis, pero que es, en cualquier caso, mayor que uno por lo menos para un elemento de sintaxis. Tal como se ha hecho notar en lo que antecede, la siguiente descripción se centra en la manipulación de estos tipos de elementos de sintaxis, e
15 incluso puede que no se encuentren presentes elementos de sintaxis de otros tipos.
Para manipular los elementos de sintaxis recién mencionados, el aparato de descodificación por entropía de la figura 2a puede comprender una unidad de composición 224 que está configurada para volver a hacer la descomposición que es realizada por la unidad de descomposición 136 de la figura 1a. En particular, la unidad de composición 224 20 se puede configurar para componer la secuencia 226 de elementos de sintaxis a partir de los símbolos de origen de la secuencia 218 o, si el recombinador 220 está ausente, las subsecuencias 204 y 208, mediante la composición de forma individual de cada elemento de sintaxis a partir de un número entero respectivo de símbolos de origen con uno de los símbolos de origen del número entero de símbolos de origen que pertenecen a la primera subsecuencia 204 y otro de los símbolos de origen del número entero de símbolos de origen del mismo elemento de sintaxis que 25 pertenece a la segunda subsecuencia 208. Mediante esta medida, determinados elementos de sintaxis se pueden haber descompuesto en el lado de codificador con el fin de separar componentes adecuadas para la descodificación de VLC a partir de una componente restante que tienen que pasarse a través de la trayectoria de descodificación de PIPE. De forma similar al análisis anterior, el elemento de sintaxis puede ser de diferente tipo y la unidad de composición 224 se puede configurar para realizar la composición individual dependiendo del tipo de los elementos
30 de sintaxis. En particular, la unidad de composición 224 se puede configurar para obtener los elementos de sintaxis respectivos al combinar de forma lógica o matemática el número entero de símbolos de origen del elemento de sintaxis respectivo. Por ejemplo, la unidad de composición 224 puede configurarse, para cada elemento de sintaxis, para aplicar +, , : o — a un primer y un segundo símbolos de origen de un elemento de sintaxis.
35 Tal como se ha descrito en lo que antecede, las realizaciones que se describen en lo sucesivo en el presente documento, no obstante, se centran en elementos de sintaxis que se descomponen por la unidad de descomposición 136 de acuerdo con la figura 1b y 1c y las alternativas que se describen en lo que respecta a las mismas. La figura 2a muestra lo que respecta a cómo puede funcionar la unidad de composición 224 para reconstruir estos elementos de sintaxis a partir de sus símbolos de origen 218.
40 Tal como se muestra en la figura 2b, la unidad de composición 224 está configurada para componer tales elementos de sintaxis z en fases a partir de unos símbolos de origen entrantes s1 a sx con x siendo cualquiera de 1 a 3 en el presente ejemplo. Pueden existir dos o más fases. Tal como se muestra en la figura 2b, la unidad de composición 224 establece preliminarmente que z es el primer símbolo s1 y comprueba en lo que respecta a si z es igual al primer
45 límite1. Si este no es el caso, se ha hallado z. De lo contrario, la unidad de composición 224 añade el siguiente símbolo de origen s2 del tren de símbolos de origen 218 a z y comprueba de nuevo en lo que respecta a si esta z es igual al límite2. De no ser así, se ha hallado z. De no ser así, la unidad de composición 224 añade el siguiente símbolo de origen s3 del tren de símbolos de origen 218 a z, con el fin de obtener z en su forma final. Se pueden obtener fácilmente generalizaciones acerca de un número más o menos máximo de símbolos de origen a partir de la
50 descripción anterior, y tales alternativas también se describirán en lo sucesivo.
En cualquier caso, la totalidad de estas diferentes componentes o símbolos de origen resultantes son de acuerdo con la descripción posterior, codificados con alternativas de codificación de entre las mismas. Por lo menos uno de estos se reenvía por el subdivisor al codificador de PIPE 104, y por último otro de los mismos se envía al codificador
55 de VLC 102.
En lo sucesivo se esbozan con más detalle detalles ventajosos particulares. Estos detalles se centran en posibilidades favorables de dividir el intervalo de valores de los elementos de sintaxis y los esquemas de codificación de VLC y de PIPE por entropía los cuales se pueden usar para codificar los símbolos de origen.
60 Además, tal como se ha descrito también en lo que antecede con respecto a la figura 1, el aparato de descodificación por entropía de la figura 2a se puede configurar para recibir el primer tren de bits 206 así como la pluralidad de segundos trenes de bits 216 por separado o en una forma intercalada por medio de un tren de bits intercalado 228. En este último caso, el aparato de descodificación por entropía de la figura 2a puede comprender un desintercalador 230 que está configurado para desintercalar el tren de bits intercalado 228 para obtener el primer tren de bits 206 por un lado y la pluralidad de segundos trenes de bits 216 por otro lado. De forma similar al análisis anterior de la figura 1, el desintercalador 230 se puede subdividir en dos fases, en concreto un desintercalador 232 para desintercalar el tren de bits intercalado 228 en dos partes, en concreto el tren de bits 206 por un lado y una
imagen10
5 forma intercalada 234 del segundo tren de bits 216 por otro lado, y un desintercalador 236 para desintercalar este último tren de bits 234 para obtener los trenes de bits individuales 216.
Por lo tanto, la figura 1a y la figura 2a mostraron un aparato de codificación por entropía por un lado y un aparato de descodificación por entropía adecuado para descodificar el resultado de codificación que se obtiene por el aparato 10 de codificación por entropía de la figura 1, por otro lado. Detalles en lo que respecta a muchos de los elementos que se muestran en la figura 1a y 2 se describen con más detalle con respecto a las figuras adicionales. Por consiguiente, se hace referencia a estos detalles en la siguiente descripción y estos detalles se deberían considerar como que también son de aplicación a la figura 1a y 2 de forma individual, siempre que estos detalles se puedan implementar por separado en los codificadores y los descodificadores que se han descrito en lo que antecede. 15 Meramente con respecto a los intercaladores y desintercaladores 132 y 234, se realiza en el presente caso alguna notificación adicional. En particular, una intercalación de los trenes de bits 112 y 118 puede ser favorable en el caso de que los trenes de bits hayan de multiplexarse en un canal con el fin de transmitirse. En este caso, puede ser favorable intercalar el tren de bits de VLC 112 por un lado y los trenes de bits de codificación de PIPE 118 por otro lado con el fin de obedecer determinadas condiciones que se han de satisfacer tales como obedecer un cierto 20 retardo de descodificación máximo. Dicho incluso de otra forma, puede ser necesario que el desplazamiento de tiempo relativo entre los instantes en los que los elementos de sintaxis y los símbolos de origen, de forma respectiva, se pueda recuperar en el lado de descodificación por un lado y el desplazamiento relativo en el tiempo de acuerdo con su posición en el tren de bits que se puede analizar sintácticamente por otro lado, no supere un cierto retardo máximo. Muchas alternativas para resolver este problema se describen en lo sucesivo. Una de estas posibilidades 25 comporta que los codificadores por entropía 116 sean de un tipo de codificador de longitud variable que está configurado para poner en correspondencia secuencias de símbolos alfabéticos con palabras de código, y los descodificadores por entropía 210 para realizar la puesta en correspondencia inversa. Las palabras de código del tren de bits de VLC 112 y los trenes de bits de PIPE 118 pueden estar, pero no tienen que estar, seleccionadas de tal modo que ninguna palabra de código de alguno de estos trenes de bits es un prefijo de cualquier palabra de 30 código de cualquiera de los otros trenes de bits, de tal modo que las fronteras de palabra de código siguen pudiendo determinarse de forma única en el lado de descodificador. En cualquier caso, el intercalador 128 puede configurarse para reservar y almacenar en memoria intermedia una secuencia de entradas de palabra de código para la palabra de código dentro del primer tren de bits 112 y el segundo tren de bits 118 en un orden secuencial dependiendo de un orden en el cual los símbolos alfabéticos de la secuencia 124 de símbolos alfabéticos reenviados por el selector 120 35 a la pluralidad de codificadores por entropía 116 dan como resultado un comienzo de una nueva secuencia de símbolos alfabéticos que van a ponerse en correspondencia con una palabra de código respectiva en el codificador por entropía respectivo 116 y un nuevo símbolo de origen del segundo subtren 108 se pone en correspondencia por el codificador de VLC 102, de forma respectiva. Dicho de otra forma, el intercalador 128 inserta las palabras de código del tren de bits 112 en el tren de bits común 126 en el orden de los símbolos de origen del que se han 40 obtenido mediante codificación de VLC, en su orden en el interior del subtren 108 y el tren de símbolos de origen 106, de forma respectiva. Las palabras de código que son emitidas por los codificadores por entropía 116 se insertan en el tren de bits común 126 entre unas consecutivas de las palabras de código del tren de bits de VLC 112. Debido a la categorización de la codificación de PIPE de los símbolos alfabéticos por la unidad de asignación 114 y el selector 120, de forma respectiva, cada una de las palabras de código de los codificadores por entropía 116 tiene 45 símbolos alfabéticos de diferentes símbolos de origen del subtren 110 codificados en las mismas. La posición de las palabras de código de los trenes de bits codificados de PIPE 118 dentro del tren de bits común 126 entre estos y en relación con la palabra de código de VLC del tren de bits 112 se determina mediante el primer símbolo alfabético codificado en cada palabra de código, de forma respectiva, es decir el más antiguo en el tiempo. El orden de estos símbolos alfabéticos primarios codificados en las palabras de código de los trenes de bits 118 en el tren de símbolos 50 alfabéticos 124 determina el orden de las palabras de código de los trenes de bits 118 dentro del tren de bits común 126 entre estos; en relación con las palabras de código de VLC del tren de bits 112, el símbolo de origen al cual pertenecen estos símbolos alfabéticos primarios codificados en las palabras de código de los trenes de bits 118, determina entre qué palabras de código consecutivas del tren de bits 112 ha de situarse la palabra de código respectiva de cualquiera de los trenes de bits 118. En particular, las palabras de código de VLC consecutivas entre 55 las cuales se ha de situar la palabra de código respectiva de cualquiera de los trenes de bits 118, son aquellas entre las cuales se sitúa el símbolo de origen del subtren 110 de acuerdo con el orden original del tren de símbolos de origen sin subdividir 106, al cual pertenece el símbolo alfabético primario respectivo codificado en la palabra de código respectiva de los trenes de bits 118. El intercalador 128 se puede configurar para retirar palabras de código introducidas en las entradas de palabra de código que se han mencionado en lo que antecede en orden secuencial 60 para obtener el tren de bits común 126 de palabras de código intercaladas. Tal como ya se ha descrito en lo que antecede, los codificadores por entropía 116 se pueden configurar para introducir de forma secuencial sus palabras de código en las entradas de palabra de código que se han reservado para el codificador por entropía respectivo 116 y el selector 120 se puede configurar para reenviar los símbolos alfabéticos que representan los símbolos de origen del segundo subtren 110 en un orden manteniendo un orden en el cual los símbolos de origen del primer subtren
imagen11
108 y el segundo subtren 110 se intercalaron dentro de la secuencia 106 de símbolos de origen.
Se pueden proporcionar medidas adicionales con el fin de hacer frente a situaciones en las que unos determinados de los codificadores por entropía 116 se seleccionan tan raramente que lleva demasiado tiempo obtener una palabra 5 de código válida dentro de ese codificador por entropía 116 muy raramente usado. En lo sucesivo se describen con más detalle ejemplos para tales medidas. En particular, el intercalador 128 junto con el codificador por entropía 116 puede configurarse, en este caso, para evacuar sus símbolos alfabéticos recogidos hasta el momento y las palabras de código que se han introducido en las entradas de palabra de código que se han mencionado en lo que antecede, de forma respectiva, de una forma de tal modo que el tiempo de este procedimiento de evacuación se puede
10 pronosticar o emular en el lado de descodificación.
En el lado de descodificación, el desintercalador 230 puede actuar en el sentido inverso: siempre que, de acuerdo con el esquema de análisis sintáctico que se ha mencionado en lo que antecede, el siguiente símbolo de origen que va a ser descodificado, sea un símbolo codificado de VLC, una palabra de código actual dentro del tren de bits 15 común 228 se considera como una palabra de código VLC y se reenvía en el interior del tren de bits 206 al descodificador de VLC 200. Por otro lado, siempre que cualquiera de los símbolos alfabéticos que pertenecen a cualquiera de los símbolos codificados de PIPE del subtren 208 sea un símbolo alfabético primario, es decir necesite una nueva puesta en correspondencia de una palabra de código de uno respectivo de los trenes de bits 216 con una secuencia de símbolos alfabéticos respectiva por el descodificador por entropía respectivo 210, la palabra de código 20 actual del tren de bits común 228 se considera como una palabra de código codificada de PIPE y se reenvía al descodificador por entropía respectivo 210. La detección de la siguiente frontera de palabra de código, es decir la detección de la extensión de la siguiente palabra de código desde el final de la palabra de código que acaba de reenviarse a cualquiera de los descodificadores 200 y 202, de forma respectiva, hasta su extremo dentro del tren de bits intercalado entrante 228 se puede aplazar, y realizarse con el conocimiento del descodificador 200 y 202 siendo 25 el destinatario dedicado de esta siguiente palabra de código de acuerdo con la regla que se ha bosquejado en lo que antecede: sobre la base de este conocimiento, el libro de códigos que es usado por el descodificador destinatario es conocido y la palabra de código respectiva es detectable. Si, por otro lado, los libros de códigos se diseñaran de tal modo que las fronteras de palabra de código fueran detectables sin el conocimiento a priori acerca del descodificador destinatario entre 200 y 202, entonces la separación de palabras de código se podría realizar en
30 paralelo. En cualquier caso, debido a la intercalación, los símbolos de origen se encuentran disponibles en el descodificador en una forma descodificada por entropía, es decir como símbolos de origen, en su orden correcto con un retardo razonable.
Después de haber descrito en lo que antecede realizaciones para un aparato de codificación por entropía y un
35 aparato de descodificación por entropía respectivo, a continuación se describen más detalles para los codificadores de PIPE y los descodificadores de PIPE que se han mencionado en lo que antecede.
Un codificador de PIPE se ilustra en la figura 3. El mismo se puede usar como codificador de PIPE en la figura 1a. El codificador de PIPE convierte de una forma sin pérdida un tren de símbolos de origen 1 en un conjunto de dos o más 40 trenes de bits parciales 12. Cada símbolo de origen 1 puede estar asociado con una categoría o tipo de un conjunto de una o más categorías o tipos. Como un ejemplo, las categorías pueden especificar el tipo del símbolo de origen. En el contexto de la codificación de vídeo híbrida, una categoría separada puede estar asociada con modos de codificación de macrobloques, modos de codificación de bloques, índices de imágenes de referencia, diferencias de vector de movimiento, indicadores de subdivisión, indicadores de bloques codificados, parámetros de cuantificación,
45 niveles de coeficiente de transformada, etc. En otras áreas de aplicación tales como la codificación de audio, de habla, de textos, de documentos o de datos generales, son posibles diferentes categorizaciones de símbolos de origen.
En general, cada símbolo de origen puede adoptar un valor de un conjunto finito o infinito contable de valores, en
50 donde el conjunto de posibles valores de símbolo de origen puede diferir para diferentes categorías de símbolos de origen. Para reducir la complejidad del algoritmo de codificación y de descodificación y para permitir un diseño de codificación y de descodificación general para diferentes símbolos de origen y categorías de símbolos de origen, los símbolos de origen 1 se convierten en unos conjuntos ordenados de decisiones binarias y estas decisiones binarias se procesan entonces mediante unos algoritmos de codificación binarios simples. Por lo tanto, la unidad de
55 binarización 2 pone en correspondencia de forma biyectiva el valor de cada símbolo de origen 1 con una secuencia (o cadena) de contenedores 3. La secuencia de contenedores 3 representa un conjunto de decisiones binarias ordenadas. Cada contenedor 3 o decisión binaria puede adoptar un valor de un conjunto de dos valores, por ejemplo uno de los valores 0 y 1. El esquema de binarización puede ser diferente para diferentes categorías de símbolos de origen. El esquema de binarización para una categoría de símbolos de origen particular puede depender del
60 conjunto de posibles valores de símbolo de origen y / u otras propiedades de los símbolos de origen para la categoría particular. La tabla 1 ilustra tres esquemas de binarización a modo de ejemplo para conjuntos infinitos contables. Los esquemas de binarización para conjuntos infinitos contables también se pueden aplicar para conjuntos finitos grandes de valores de símbolo. En particular para conjuntos finitos grandes de valores de símbolo, la falta de eficiencia (resultante de secuencias sin usar de contenedores) puede ser despreciable, pero la
imagen12
universalidad de tales esquemas de binarización proporciona una ventaja en términos de la complejidad y de los requisitos de memoria. Para conjuntos finitos pequeños de valores de símbolo, a menudo es preferible (en términos de la eficiencia de codificación) adaptar el esquema de binarización al número de valores de símbolo posibles. La tabla 2 ilustra tres esquemas de binarización a modo de ejemplo para conjuntos finitos de 8 valores. Los esquemas 5 de binarización para conjuntos finitos se pueden obtener a partir de los esquemas de binarización universales para conjuntos infinitos contables modificando algunas secuencias de contenedores de una forma tal que los conjuntos finitos de secuencias de contenedores representan un código libre de redundancia (y potencialmente mediante la reordenación de las secuencias de contenedores). Como un ejemplo, el esquema de binarización unaria truncada en la tabla 2 se creó modificando la secuencia de contenedores para el símbolo de origen 7 de la binarización unaria 10 universal (véase la tabla 1). La binarización de Golomb Exponencial truncada y reordenada de orden 0 en la tabla 2 se creó modificando la secuencia de contenedores para el símbolo de origen 7 de la binarización de orden 0 de Golomb Exponencial universal (véase la tabla 1) y mediante la reordenación de las secuencias de contenedores (la secuencia de contenedores truncada para el símbolo 7 se asignó al símbolo 1). Para conjuntos finitos de símbolos, también es posible usar unos esquemas de binarización no sistemática / no universal, tal como se ejemplifica en la
15 última columna de la tabla 2.
Tabla 1: Ejemplos de binarización para conjuntos infinitos contables (o conjuntos finitos grandes).
valor de símbolo
binarización unaria binarización de orden 0 de Golomb Exponencial binarización de orden 1 de Golomb Exponencial
0 1 2 3 4 5 6 7 ...
1 01 001 0001 0000 1 0000 01 0000 001 0000 0001 ... 1 010 011 0010 0 0010 1 0011 0 0011 1 0001 000 ... 10 11 0100 0101 0110 0111 0010 00 0010 01 ...
Tabla 2: Ejemplos de binarización para conjuntos finitos.
valor de símbolo
binarización unaria truncada binarización de orden 0 de Golomb Exponencial truncada y reordenada binarización no sistemática
0 1 2 3 4 5 6 7
1 01 001 0001 0000 1 0000 01 0000 001 0000 000 1 000 010 011 0010 0 0010 1 0011 0 0011 1 000 001 01 1000 1001 1010 1011 0 1011 1
20 Cada contenedor 3 de la secuencia de contenedores creado por la unidad de binarización 2 se alimenta a la unidad de asignación de parámetros 4 en orden secuencial. La unidad de asignación de parámetros asigna un conjunto de uno o más parámetros a cada contenedor 3 y emite el contenedor con el conjunto asociado de parámetros 5. El conjunto de parámetros se determina exactamente de la misma forma en el codificador y en el descodificador. El
25 conjunto de parámetros puede consistir en uno o más de los siguientes parámetros:
una medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual,
una medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable 30 para el contenedor actual,
un identificador que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable para el contenedor actual,
la categoría del símbolo de origen asociado,
una medida para la importancia del símbolo de origen asociado,
35 una medida para la ubicación del símbolo asociado (por ejemplo, en conjuntos de datos temporales, espaciales o volumétricos),
un identificador que especifica la protección de código de canal para el contenedor o el símbolo de origen asociado,
un identificador que especifica el esquema de cifrado para el contenedor o el símbolo de origen asociado,
un identificador que especifica una clase para el símbolo asociado,
imagen13
el número de contenedor en la secuencia de contenedores para el símbolo de origen asociado.
5 La unidad de asignación de parámetros 4 puede asociar cada contenedor 3, 5 con una medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual. La unidad de asignación de parámetros 4 asocia cada contenedor 3, 5 con una medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor actual y un identificador que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos
10 probable o más probable para el contenedor actual. Se debería hacer notar que la probabilidad para el valor de contenedor menos probable o más probable y el identificador que especifica cuál de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable son unas medidas equivalentes para la probabilidad de uno de los dos valores de contenedor posibles.
15 La unidad de asignación de parámetros 4 puede asociar cada contenedor 3, 5 con una medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual y uno o más parámetros adicionales (que puede ser uno o más de los parámetros que se han enumerado en lo que antecede). Además, la unidad de asignación de parámetros 4 puede asociar cada contenedor 3, 5 con una medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor actual,
20 un identificador que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable para el contenedor actual, y uno o más parámetros adicionales (que puede ser uno o más de los parámetros que se han enumerado en lo que antecede).
La unidad de asignación de parámetros 4 puede determinar una o más de las medidas de probabilidad que se han
25 mencionado en lo que antecede (una medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual, una medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor actual, un identificador que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable para el contenedor actual) sobre la base de un conjunto de uno o más símbolos ya codificados. Los
30 símbolos codificados que se usan para determinar las medidas de probabilidad pueden incluir uno o más símbolos ya codificados de la misma categoría de símbolos, uno o más símbolos ya codificados de la misma categoría de símbolos que se corresponden con conjuntos de datos (tales como bloques o grupos de muestras) de unas ubicaciones espaciales y / o temporales cercanas (en relación con el conjunto de datos que está asociado con el símbolo de origen actual), o uno o más símbolos ya codificados de diferentes categorías de símbolos que se
35 corresponden con conjuntos de datos de las mismas ubicaciones espaciales y / o temporales y / o unas cercanas (en relación con el conjunto de datos que está asociado con el símbolo de origen actual).
Cada contenedor con un conjunto asociado de parámetros 5 que es una salida de la unidad de asignación de parámetros 4 se alimenta en un selector de memoria intermedia de contenedores 6. El selector de memoria
40 intermedia de contenedores 6 potencialmente modifica el valor del contenedor de entrada 5 sobre la base del valor de contenedor de entrada y los parámetros asociados 5 y alimenta el contenedor de salida 7 con un valor potencialmente modificado – en una de dos o más memorias intermedias de contenedores 8. La memoria intermedia de contenedores 8 a la que se envía el contenedor de salida 7 se determinar sobre la base del valor del contenedor de entrada 5 y / o el valor de los parámetros asociados 5.
45 El selector de memoria intermedia de contenedores 6 puede no modificar el valor del contenedor, es decir, el contenedor de salida 7 tiene siempre el mismo valor que el contenedor de entrada 5.
El selector de memoria intermedia de contenedores 6 puede determinar el valor de contenedor de salida 7 sobre la
50 base del valor de contenedor de entrada 5 y la medida asociada para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual. El valor de contenedor de salida 7 puede establecerse igual al valor de contenedor de entrada 5 si la medida para la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual es menor que (o menor que o igual a) un umbral particular; si la medida para la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual es mayor
55 que o igual a (o mayor que) un umbral particular, el valor de contenedor de salida 7 se modifica (es decir, se establece en el opuesto del valor de contenedor de entrada). El valor de contenedor de salida 7 puede establecerse igual al valor de contenedor de entrada 5 si la medida para la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual es mayor que (o mayor que o igual a) un umbral particular; si la medida para la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual es menor
60 que o igual a (o menor que) un umbral particular, el valor de contenedor de salida 7 se modifica (es decir, se establece en el opuesto del valor de contenedor de entrada). El valor del umbral se puede corresponder con un valor de 0,5 para la probabilidad estimada para ambos valores de contenedor posibles.
El selector de memoria intermedia de contenedores 6 puede determinar el valor de contenedor de salida 7 sobre la base del valor de contenedor de entrada 5 y el identificador asociado que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable para el contenedor actual. El valor de contenedor de salida 7 puede establecerse igual al valor de contenedor de entrada 5 si el identificador especifica que el primero de los dos valores de contenedor posibles representa el valor de
imagen14
5 contenedor menos probable (o más probable) para el contenedor actual, y el valor de contenedor de salida 7 se modifica (es decir, se establece en el opuesto del valor de contenedor de entrada) si el identificador especifica que el segundo de los dos valores de contenedor posibles representa el valor de contenedor menos probable (o más probable) para el contenedor actual.
10 El selector de memoria intermedia de contenedores 6 puede determinar la memoria intermedia de contenedores 8 a la que se envía el contenedor de salida 7 sobre la base de la medida asociada para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual. El conjunto de valores posibles para la medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles puede ser finito y el selector de memoria intermedia de contenedores 6 contiene una tabla que asocia exactamente una memoria
15 intermedia de contenedores 8 con cada valor posible para la estimada de la probabilidad para uno de los dos valores de contenedor posibles, en donde diferentes valores para la medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles pueden asociarse con la misma memoria intermedia de contenedores 8. Además, el intervalo de valores posibles para la medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles se puede subdividir en particiones para dar un número de intervalos, el selector de
20 memoria intermedia de contenedores 6 determina el índice de intervalo para la medida actual para una estimada de la probabilidad para uno de los dos valores de contenedor posibles, y el selector de memoria intermedia de contenedores 6 contiene una tabla que asocia exactamente una memoria intermedia de contenedores 8 con cada valor posible para el índice de intervalo, en donde diferentes valores para el índice de intervalo pueden asociarse con la misma memoria intermedia de contenedores 8. Los contenedores de entrada 5 con medidas opuestas para
25 una estimada de la probabilidad para uno de los dos valores de contenedor posibles (son medidas opuestas aquellas que representan unas estimadas de probabilidad P y 1 P) pueden alimentarse a la misma memoria intermedia de contenedores 8. Además, la asociación de la medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor actual con una memoria intermedia de contenedores particular se adapta con el tiempo, por ejemplo con el fin de asegurar que los trenes de bits parciales creados tienen
30 unas tasas de bits similares.
El selector de memoria intermedia de contenedores 6 puede determinar la memoria intermedia de contenedores 8 a la que se envía el contenedor de salida 7 sobre la base de la medida asociada para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor actual. El conjunto de valores 35 posibles para la medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable puede ser finito y el selector de memoria intermedia de contenedores 6 contiene una tabla que asocia exactamente una memoria intermedia de contenedores 8 con cada valor posible de la estimada de la probabilidad para el valor de contenedor menos probable o más probable, en donde diferentes valores para la medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable pueden asociarse con la 40 misma memoria intermedia de contenedores 8. Además, el intervalo de valores posibles para la medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable se puede subdividir en particiones para dar un número de intervalos, el selector de memoria intermedia de contenedores 6 determina el índice de intervalo para la medida actual para una estimada de la probabilidad para el valor de contenedor menos probable o más probable, y el selector de memoria intermedia de contenedores 6 contiene una tabla que asocia 45 exactamente una memoria intermedia de contenedores 8 con cada valor posible para el índice de intervalo, en donde diferentes valores para el índice de intervalo pueden asociarse con la misma memoria intermedia de contenedores 8. La asociación de la medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor actual con una memoria intermedia de contenedores particular puede adaptarse con el tiempo, por ejemplo con el fin de asegurar que los trenes de bits parciales creados tienen
50 unas tasas de bits similares.
Cada una de las dos o más memorias intermedias de contenedores 8 se conecta con exactamente un codificador de contenedores 10 y cada codificador de contenedores solo se conecta con una memoria intermedia de contenedores
8. Cada codificador de contenedores 10 lee contenedores a partir de la memoria intermedia de contenedores
55 asociada 8 y convierte una secuencia de contenedores 9 en una palabra de código 11, la cual representa una secuencia de bits. Las memorias intermedias de contenedores 8 representan unas memorias intermedias de tipo primero en entrar primero en salir; los contenedores que se alimentan posteriormente (en orden secuencial) a una memoria intermedia de contenedores 8 no se codifican antes que los contenedores que se alimentan con anterioridad (en orden secuencial) a la memoria intermedia de contenedores. Las palabras de código 11 que son
60 una salida de un codificador de contenedores particular 10 se escriben en un tren de bits parcial particular 12. El algoritmo de codificación global convierte los símbolos de origen 1 en dos o más trenes de bits parciales 12, en donde el número de trenes de bits parciales es igual al número de memorias intermedias de contenedores y codificadores de contenedores. Un codificador de contenedores 10 puede convertir un número variable de contenedores 9 en una palabra de código 11 de un número variable de bits. Una ventaja de la codificación de PIPE que se ha bosquejado en lo que antecede y que se bosqueja en lo sucesivo es que la codificación de contenedores se puede realizar en paralelo (por ejemplo, para diferentes grupos de medidas de probabilidad), que reduce el tiempo de procesamiento para varias implementaciones.
imagen15
5 Otra ventaja de la codificación de PIPE es que la codificación de contenedores, la cual es realizada por los codificadores de contenedores 10, se puede diseñar de forma específica para diferentes conjuntos de parámetros 5. En particular, la codificación y la codificación de contenedores se puede optimizar (en términos de la complejidad y /
o la eficiencia de codificación) para diferentes grupos de probabilidades estimadas. Por un lado, esto permite una reducción de la complejidad de codificación / descodificación en relación con algoritmos de codificación aritmética 10 con una eficiencia de codificación similar. Por otro lado, esto permite una mejora de la eficiencia de codificación en relación con los algoritmos de codificación de VLC con una complejidad de codificación / descodificación similar. Los codificadores de contenedores 10 pueden implementar diferentes algoritmos de codificación (es decir una puesta en correspondencia de secuencias de contenedores con palabras de código) para diferentes grupos de medidas para una estimada de la probabilidad para uno de los dos valores de contenedor posibles 5 para el contenedor actual. Los 15 codificadores de contenedores 10 pueden implementar diferentes algoritmos de codificación para diferentes grupos de medidas para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor actual. Como alternativa, los codificadores de contenedores 10 pueden implementar diferentes algoritmos de codificación para diferentes códigos de protección de canal. Los codificadores de contenedores 10 pueden implementar diferentes algoritmos de codificación para diferentes esquemas de cifrado. Los codificadores de 20 contenedores 10 pueden implementar diferentes algoritmos de codificación para diferentes combinaciones de códigos de protección de canal y grupos de medidas para una estimada de la probabilidad para uno de los dos valores de contenedor posibles 5 para el contenedor actual. Los codificadores de contenedores 10 implementan diferentes algoritmos de codificación para diferentes combinaciones de códigos de protección de canal y grupos de medidas para una estimada de la probabilidad para el valor de contenedor menos probable o más probable 5 para el 25 contenedor actual. Los codificadores de contenedores 10 pueden implementar diferentes algoritmos de codificación para diferentes combinaciones de esquemas de cifrado y grupos de medidas para una estimada de la probabilidad para uno de los dos valores de contenedor posibles 5 para el contenedor actual. Los codificadores de contenedores 10 pueden implementar diferentes algoritmos de codificación para diferentes combinaciones de esquemas de cifrado y grupos de medidas para una estimada de la probabilidad para el valor de contenedor menos probable o más
30 probable 5 para el contenedor actual.
Los codificadores de contenedores 10 o uno o más de los codificadores de contenedores pueden representar motores de codificación aritmética binaria. Uno o más de los codificadores de contenedores pueden representar un motor de codificación aritmética binaria, en el que la puesta en correspondencia a partir de la probabilidad de LPS / 35 LPB representativa p LPS de una memoria intermedia de contenedores dada con una anchura de intervalo de código correspondiente R LPS es decir la subdivisión en intervalos del estado interno del motor de codificación aritmética binaria, la cual se define mediante la anchura de intervalo actual R y el desplazamiento de intervalo actual L, que identifica, por ejemplo, el límite inferior del intervalo de código se realiza mediante el uso de una consulta de tabla. Para cada motor de codificación aritmética binaria basado en tabla que está asociado con una memoria intermedia 40 de contenedores dada, se pueden usar K valores de anchura de intervalo representativos {Q0, ... , QK1} para representar R LPS con la elección de K y los valores de anchura de intervalo representativos {Q0, ... , QK1} siendo dependientes de la memoria intermedia de contenedores. Para una elección de K> 1, la codificación aritmética de un contenedor puede implicar las subetapas de puesta en correspondencia de la anchura de intervalo actual R con un índice de cuantificación q con valores en {0, ... , K 1} y de realización de la subdivisión en intervalos accediendo 45 al valor de anchura de intervalo parcial correspondiente Qq a partir una tabla de consulta usando q como un índice. Para una elección de K= 1, es decir, para el caso en el que solo se da un valor de anchura de intervalo representativo Q0, este valor Q0 se puede elegir como una potencia de dos con el fin de permitir la descodificación de múltiples valores de MPS / MPB que entran en la memoria intermedia de contenedores correspondiente dentro de un único ciclo de renormalización. Las palabras de código resultantes de cada motor de codificación aritmética se
50 pueden transmitir, paquetizar o almacenar por separado, o estas se pueden intercalar para el fin de transmisión o almacenamiento tal como se describe en lo sucesivo en el presente documento.
Es decir, un motor de codificación aritmética binaria 10 podría realizar las siguientes etapas en la codificación de los contenedores en su memoria intermedia de contenedores 8:
55
1. Recibir el contenedor valLPS a partir de una memoria intermedia de contenedores (recuérdese: el motor de codificación aritmética binaria respectivo 10 considerado en el presente caso se había elegido para recibir “contenedor” debido a que (o, dicho de otra forma, “contenedor” estaba asociado con el motor de codificación aritmética binaria respectivo 10) la estimada de distribución de probabilidad, tal como p_state[contenedor],
60 estaba asociada con ese motor de codificación aritmética binaria 10)
2.
Cuantificación de R: q_index = Qtab[R>>q] (o alguna otra forma de cuantificación)
3.
Determinación de R LPS y R: R LPS = Rtab [q_index] (obsérvese que p_state no se menciona en el presente caso, debido a que este es fijo
para el motor de codificación aritmética binaria 10 considerado, es decir p_state[codificador], y Rtab tiene almacenado en la misma unos valores previamente calculados para p[p_state[codificador]] — Q[q_index] R = R R LPS [es decir, R se preactualiza preliminarmente como si “contenedor” fuera MPS]
4.
Cálculo del nuevo intervalo parcial:
imagen16
5 si (contenedor = 1 vaIMPS) entonces L←L+R R ← R LPS
5. Renormalización de L y R, escribiendo bits, en donde
10 q_index describe el índice de un valor de cuantificación leído de Qtab, p_state describe el estado actual (fijo para el motor de codificación aritmética binaria 10), R LPS describe la anchura de intervalo que se corresponde con el LPS y vaIMPS describe el valor del bit que se corresponde con el MPS.
15 Por consiguiente, un motor de descodificación aritmética binaria 22 podría realizar las siguientes etapas en la descodificación de los contenedores que se emiten a la memoria intermedia de contenedores 20:
1. Recibir la solicitud para un contenedor (recuérdese: el motor de descodificación aritmética binaria respectivo 22 considerado en el presente caso se había elegido para descodificar “contenedor” debido a que (o, dicho de otra forma, “contenedor” estaba asociado con el motor de descodificación aritmética binaria respectivo 22) la
20 estimada de distribución de probabilidad, tal como p_state[contenedor], estaba asociada con ese motor de descodificación aritmética binaria 22)
2.
Cuantificación de R: q_index = Qtab[R>>q] (o alguna otra forma de cuantificación)
3.
Determinación de R LPS y R:
25 R LPS = Rtab [q_index] (obsérvese que p_state no se menciona en el presente caso, debido a que este es fijo para el motor de descodificación aritmética binaria 22 considerado, es decir p_state[codificador], y Rtab tiene almacenado en la misma unos valores previamente calculados para p[p_state[codificador]] — Q[q_index] R = R R LPS [es decir, R se reactualiza preliminarmente como si “contenedor” fuera MPS]
4. Determinación de contenedor dependiendo de la posición del intervalo parcial:
30 si (V ≥ R) entonces contenedor ← 1 vaIMPS (contenedor se descodifica como LPS; el selector de memoria intermedia de contenedores 18 obtendrá el valor de contenedor real mediante el uso de esta información de contenedor y vaIMPS) V←V R
35 R←R LPS
o bien contenedor ← vaIMPS (contenedor se descodifica como MPS; el selector de memoria intermedia de contenedores 18 obtendrá el valor de contenedor real mediante el uso de esta información de contenedor y valMPS)
40 5. Renormalización de R, lectura de un bit y actualización de V, en donde q_index describe el índice de un valor de cuantificación leído de Qtab, p_state describe el estado actual (fijo para el motor de descodificación aritmética binaria 22), R LPS describe la anchura de intervalo que se corresponde con el LPS,
45 vaIMPS describe el valor del bit que se corresponde con el MPS, y V describe un valor procedente del interior del intervalo parcial actual.
Los codificadores de contenedores 10 o uno o más de los codificadores de contenedores pueden representar unos codificadores por entropía que ponen en correspondencia directamente las secuencias de contenedores de 50 entrada 9 con las palabras de código 10. Tales puestas en correspondencia se pueden implementar de forma eficiente y no requieren un motor de codificación aritmética compleja. La puesta en correspondencia inversa de palabras de código con unas secuencias de contenedores (al igual que se hace en el descodificador) debería ser única con el fin de garantizar una descodificación perfecta de la secuencia de entrada, pero no se necesita que la puesta en correspondencia de secuencias de contenedores 9 con las palabras de código 10 sea necesariamente 55 única, es decir, es posible que una secuencia de contenedores particular se pueda poner en correspondencia con más de una secuencia de palabras de código. La puesta en correspondencia de las secuencias de contenedores de entrada 9 con las palabras de código 10 también puede ser biyectiva. Preferiblemente, los codificadores de contenedores 10 o uno o más de los codificadores de contenedores pueden representar unos codificadores por entropía que ponen en correspondencia directamente unas secuencias de longitud variable de los contenedores de
60 entrada 9 con unas palabras de código de longitud variable 10. Las palabras de código de salida pueden representar unos códigos libres de redundancia tales como códigos de Huffman generales o códigos de Huffman canónicos.
En la tabla 3 se ilustran dos ejemplos para la puesta en correspondencia biyectiva de secuencias de contenedores con unos códigos libres de redundancia. Las palabras de código de salida pueden representar unos códigos redundantes adecuados para la detección de errores y la recuperación de errores. Las palabras de código de salida pueden representar unos códigos de cifrado adecuados para cifrar los símbolos de origen.
imagen17
Tabla 3: Ejemplos para puestas en correspondencia entre secuencias de contenedores y palabras de código.
secuencia de contenedores (el orden de los contenedores es de izquierda a derecha)
palabras de código (el orden de los bits es de izquierda a derecha)
0000 0000 0000 0001 0000 001 0000 01 0000 1 0001 001 01 1
1 0000 0001 0010 0011 0100 0101 0110 0111
secuencia de contenedores (el orden de los contenedores es de izquierda a derecha)
palabras de código (el orden de los bits es de izquierda a derecha)
000 01 001 11 1000 0 1001 1010 1000 1 1011
10 11 010 011 0001 0010 0011 0000 0 0000 1
Los codificadores de contenedores 10 o uno o más de los codificadores de contenedores pueden representar unos codificadores por entropía que ponen en correspondencia directamente unas secuencias de longitud variable
10 de los contenedores de entrada 9 con unas palabras de código de longitud fija 10. Los codificadores de contenedores 10 o uno o más de los codificadores de contenedores representan unos codificadores por entropía que ponen en correspondencia directamente unas secuencias de longitud fija de los contenedores de entrada 9 con las palabras de código de longitud variable 10.
15 Un descodificador de PIPE se ilustra en la figura 4. El descodificador realiza básicamente las operaciones inversas del codificador de la figura 3, de tal modo que la secuencia (previamente codificada) de símbolos de origen 27 se descodifica a partir de un conjunto de dos o más trenes de bits parciales 24. El descodificador incluye dos flujos de proceso diferentes: Un flujo para solicitudes de datos, el cual reproduce el flujo de datos del codificador, y un flujo de datos, el cual representa la inversa del flujo de datos de codificador. En la ilustración en la figura 4, las flechas de
20 trazo discontinuo representan el flujo de solicitudes de datos, mientras que las flechas de trazo continuo representan el flujo de datos. Los bloques básicos del descodificador básicamente reproducen los bloques básicos del codificador, pero implementan las operaciones inversas.
La descodificación de un símbolo de origen es desencadenada por una solicitud para un nuevo símbolo de origen
25 descodificado 13 que se envía a la unidad de binarización 14. Cada solicitud para un nuevo símbolo de origen descodificado 13 puede asociarse con una categoría de un conjunto de una o más categorías. La categoría que está asociada con una solicitud para un símbolo de origen es la misma que la categoría que estaba asociada con el símbolo de origen correspondiente durante la codificación.
30 La unidad de binarización 14 pone en correspondencia la solicitud para un símbolo de origen 13 con una o más solicitudes para un contenedor que se envían a la unidad de asignación de parámetros 16. Como respuesta final a una solicitud para un contenedor que se envía a la unidad de asignación de parámetros 16 por la unidad de binarización 14, la unidad de binarización 14 recibe un contenedor descodificado 26 a partir del selector de memoria intermedia de contenedores 18. La unidad de binarización 14 compara la secuencia recibida de contenedores
35 descodificados 26 con las secuencias de contenedores de un esquema de binarización particular para el símbolo de
imagen18
origen solicitado y, si la secuencia recibida de contenedores descodificados 26 coincide con la binarización de un símbolo de origen, la unidad de binarización vacía su memoria intermedia de contenedores y emite el símbolo de origen descodificado como respuesta final a la solicitud para un nuevo símbolo descodificado. Si la secuencia ya recibida de contenedores descodificados no coincide con cualquiera de las secuencias de contenedores para el 5 esquema de binarización para el símbolo de origen solicitado, la unidad de binarización envía otra solicitud para un contenedor a la unidad de asignación de parámetros hasta que la secuencia de contenedores descodificados coincide con una de las secuencias de contenedores del esquema de binarización para el símbolo de origen solicitado. Para cada solicitud para un símbolo de origen, el descodificador usa el mismo esquema de binarización que se usó para codificar el símbolo de origen correspondiente. El esquema de binarización puede ser diferente para
10 diferentes categorías de símbolos de origen. El esquema de binarización para una categoría de símbolos de origen particular puede depender del conjunto de posibles valores de símbolo de origen y / u otras propiedades de los símbolos de origen para la categoría particular.
La unidad de asignación de parámetros asigna un conjunto de uno o más parámetros a cada solicitud para un
15 contenedor y envía la solicitud para un contenedor con el conjunto asociado de parámetros al selector de memoria intermedia de contenedores. El conjunto de parámetros que se asignan a un contenedor solicitado por la unidad de asignación de parámetros es el mismo que se asignó al contenedor correspondiente durante la codificación. El conjunto de parámetros puede consistir en uno o más de los parámetros que se mencionan en la descripción de codificador.
20 La unidad de asignación de parámetros 16 puede asociar cada solicitud para un contenedor con una medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor solicitado actual. En particular, la unidad de asignación de parámetros 16 puede asociar cada solicitud para un contenedor con una medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para
25 el contenedor solicitado actual y un identificador que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable para el contenedor solicitado actual.
La unidad de asignación de parámetros 16 puede asociar cada solicitud para un contenedor 15, 17 con una medida
30 para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para el contenedor solicitado actual y uno o más parámetros adicionales. La unidad de asignación de parámetros 16 puede asociar cada solicitud para un contenedor 15, 17 con una medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor solicitado actual, un identificador que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o
35 más probable para el contenedor solicitado actual, y uno o más parámetros adicionales (que puede uno o más de los parámetros que se han enumerado en lo que antecede).
La unidad de asignación de parámetros 16 puede determinar una o más de las medidas de probabilidad que se han mencionado en lo que antecede (una medida para una estimada de la probabilidad para uno de los dos valores de 40 contenedor posibles para el contenedor solicitado actual, una medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor solicitado actual, un identificador que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable para el contenedor solicitado actual) sobre la base de un conjunto de uno o más símbolos ya descodificados. La determinación de las medidas de probabilidad para a particular solicitud para un 45 contenedor reproduce el proceso en el codificador para el contenedor correspondiente. Los símbolos descodificados que se usan para determinar las medidas de probabilidad pueden incluir uno o más símbolos ya descodificados de la misma categoría de símbolos, uno o más símbolos ya descodificados de la misma categoría de símbolos que se corresponden con conjuntos de datos (tal como bloques o grupos de muestras) de unas ubicaciones espaciales y / o temporales cercanas (en relación con el conjunto de datos que está asociado con la solicitud actual para un símbolo
50 de origen), o uno o más símbolos ya descodificados de diferentes categorías de símbolos que se corresponden con conjuntos de datos de las mismas y / o unas ubicaciones espaciales y / o temporales cercanas (en relación con el conjunto de datos que está asociado con la solicitud actual para un símbolo de origen).
Cada solicitud para un contenedor con un conjunto asociado de parámetros 17 que es una salida de la unidad de
55 asignación de parámetros 16 se alimenta a un selector de memoria intermedia de contenedores 18. Sobre la base del conjunto asociado de parámetros 17, el selector de memoria intermedia de contenedores 18 envía una solicitud para un contenedor 19 a una de dos o más memorias intermedias de contenedores 20 y recibe un contenedor descodificado 25 a partir de la memoria intermedia de contenedores seleccionada 20. El contenedor de entrada descodificado 25 se modifica potencialmente y el contenedor de salida descodificado 26 con un valor
60 potencialmente modificado se envía a la unidad de binarización 14 como respuesta final a la solicitud para un contenedor con un conjunto asociado de parámetros 17.
La memoria intermedia de contenedores 20 a la cual se reenvía la solicitud para un contenedor se selecciona de la misma forma que la memoria intermedia de contenedores a la que se envió el contenedor de salida del selector de
imagen19
memoria intermedia de contenedores en el lado de codificador.
El selector de memoria intermedia de contenedores 18 puede determinar la memoria intermedia de contenedores 20 a la que se envía la solicitud para un contenedor 19 sobre la base de la medida asociada para una estimada de la 5 probabilidad para uno de los dos valores de contenedor posibles para el contenedor solicitado actual. El conjunto de valores posibles para la medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles puede ser finito y el selector de memoria intermedia de contenedores 18 contiene una tabla que asocia exactamente una memoria intermedia de contenedores 20 con cada valor posible de la estimada de la probabilidad para uno de los dos valores de contenedor posibles, en donde diferentes valores para la medida para una estimada 10 de la probabilidad para uno de los dos valores de contenedor posibles pueden asociarse con la misma memoria intermedia de contenedores 20. El intervalo de valores posibles para la medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles se puede subdividir en particiones para dar un número de intervalos, el selector de memoria intermedia de contenedores 18 determina el índice de intervalo para la medida actual para una estimada de la probabilidad para uno de los dos valores de contenedor posibles, y el selector de 15 memoria intermedia de contenedores 18 contiene una tabla que asocia exactamente una memoria intermedia de contenedores 20 con cada valor posible para el índice de intervalo, en donde diferentes valores para el índice de intervalo pueden asociarse con la misma memoria intermedia de contenedores 20. Solicitudes para unos contenedores 17 con medidas opuestas para una estimada de la probabilidad para uno de los dos valores de contenedor posibles (son medidas opuestas aquellas que representan unas estimadas de probabilidad P y 1 P)
20 puede reenviarse a la misma memoria intermedia de contenedores 20. Además, la asociación de la medida para una estimada de la probabilidad para uno de los dos valores de contenedor posibles para la solicitud de contenedor actual con una memoria intermedia de contenedores particular puede adaptarse con el tiempo.
El selector de memoria intermedia de contenedores 18 puede determinar la memoria intermedia de contenedores 20
25 a la que se envía la solicitud para un contenedor 19 sobre la base de la medida asociada para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor solicitado actual. El conjunto de valores posibles para la medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable puede ser finito y el selector de memoria intermedia de contenedores 18 puede contener una tabla que asocia exactamente una memoria intermedia de contenedores 20 con cada valor posible de
30 la estimada de la probabilidad para el valor de contenedor menos probable o más probable, en donde diferentes valores para la medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable pueden asociarse con la misma memoria intermedia de contenedores 20. El intervalo de valores posibles para la medida para una estimada de la probabilidad para el valor de contenedor menos probable o más probable se puede subdividir en particiones para dar un número de intervalos, el selector de memoria intermedia de
35 contenedores 18 determina el índice de intervalo para la medida actual para una estimada de la probabilidad para el valor de contenedor menos probable o más probable, y el selector de memoria intermedia de contenedores 18 contiene una tabla que asocia exactamente una memoria intermedia de contenedores 20 con cada valor posible para el índice de intervalo, en donde diferentes valores para el índice de intervalo pueden asociarse con la misma memoria intermedia de contenedores 20. En la asociación de la medida para una estimada de la probabilidad para el
40 valor de contenedor menos probable o más probable para la solicitud de contenedor actual con una memoria intermedia de contenedores particular se adapta con el tiempo.
Después de recibir un contenedor descodificado 25 a partir de la memoria intermedia de contenedores seleccionada 20, el selector de memoria intermedia de contenedores 18 potencialmente modifica el contenedor de entrada 25 y
45 envía el contenedor de salida 26 con un valor potencialmente modificado a la unidad de binarización 14. La puesta en correspondencia de contenedores de entrada / salida del selector de memoria intermedia de contenedores 18 es la inversa de la puesta en correspondencia de contenedores de entrada / salida del selector de memoria intermedia de contenedores en el lado de codificador.
50 El selector de memoria intermedia de contenedores 18 se puede configurar para no modificar el valor del contenedor, es decir, el contenedor de salida 26 tiene siempre el mismo valor que el contenedor de entrada 25.
El selector de memoria intermedia de contenedores 18 puede determinar el valor de contenedor de salida 26 sobre la base del valor de contenedor de entrada 25 y la medida para una estimada de la probabilidad para uno de los dos 55 valores de contenedor posibles para el contenedor solicitado actual que se asocia con la solicitud para un contenedor 17. El valor de contenedor de salida 26 puede establecerse igual al valor de contenedor de entrada 25 si la medida para la probabilidad para uno de los dos valores de contenedor posibles para la solicitud de contenedor actual es menor que (o menor que o igual a) un umbral particular; si la medida para la probabilidad para uno de los dos valores de contenedor posibles para la solicitud de contenedor actual es mayor que o igual a (o mayor que) un 60 umbral particular, el valor de contenedor de salida 26 se modifica (es decir, se establece en el opuesto del valor de contenedor de entrada). El valor de contenedor de salida 26 puede establecerse igual al valor de contenedor de entrada 25 si la medida para la probabilidad para uno de los dos valores de contenedor posibles para la solicitud de contenedor actual es mayor que (o mayor que o igual a) un umbral particular; si la medida para la probabilidad para uno de los dos valores de contenedor posibles para la solicitud de contenedor actual es menor que o igual a (o
imagen20
menor que) un umbral particular, el valor de contenedor de salida 26 se modifica (es decir, se establece en el opuesto del valor de contenedor de entrada). El valor del umbral se puede corresponder con un valor de 0,5 para la probabilidad estimada para ambos valores de contenedor posibles.
5 El selector de memoria intermedia de contenedores 18 puede determinar el valor de contenedor de salida 26 sobre la base del valor de contenedor de entrada 25 y el identificador, que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable para la solicitud de contenedor actual, que se asocia con la solicitud para un contenedor 17. El valor de contenedor de salida 26 puede establecerse igual al valor de contenedor de entrada 25 si el identificador especifica que el primero de los dos
10 valores de contenedor posibles representa el valor de contenedor menos probable (o más probable) para la solicitud de contenedor actual, y el valor de contenedor de salida 26 se modifica (es decir, se establece en el opuesto del valor de contenedor de entrada) si el identificador especifica que el segundo de los dos valores de contenedor posibles representa el valor de contenedor menos probable (o más probable) para la solicitud de contenedor actual.
15 Tal como se ha descrito en lo que antecede, el selector de memoria intermedia de contenedores envía una solicitud para un contenedor 19 a una de las dos o más memorias intermedias de contenedores 20. Las memorias intermedias de contenedores 20 representan unas memorias intermedias de tipo primero en entrar primero en salir, que se alimentan con unas secuencias de contenedores descodificados 21 a partir de los descodificadores de contenedores conectados 22. Como respuesta a una solicitud para un contenedor 19 que se envía a una memoria
20 intermedia de contenedores 20 a partir del selector de memoria intermedia de contenedores 18, la memoria intermedia de contenedores 20 retira el contenedor de su contenido que en primer lugar se alimentó a la memoria intermedia de contenedores 20 y lo envía al selector de memoria intermedia de contenedores 18. Los contenedores que se envían con anterioridad a la memoria intermedia de contenedores 20 se retiran con anterioridad y se envían al selector de memoria intermedia de contenedores 18.
25 Cada una de las dos o más memorias intermedias de contenedores 20 se conecta con exactamente un descodificador de contenedores 22 y cada descodificador de contenedores solo se conecta con una memoria intermedia de contenedores 20. Cada descodificador de contenedores 22 lee las palabras de código 23, las cuales representan unas secuencias de bits, a partir de un tren de bits parcial separado 24. El descodificador de
30 contenedores convierte una palabra de código 23 en una secuencia de contenedores 21 que se envía a la memoria intermedia de contenedores conectada 20. El algoritmo de descodificación global convierte dos o más trenes de bits parciales 24 en un número de símbolos de origen descodificados, en donde el número de trenes de bits parciales es igual al número de memorias intermedias de contenedores y de descodificadores de contenedores y la descodificación de símbolos de origen es desencadenada por solicitudes para nuevos símbolos de origen. Un
35 descodificador de contenedores 22 puede convertir las palabras de código 23 de un número variable de bits en una secuencia de un número variable de contenedores 21. Una ventaja de la configuración de PIPE anterior es que la descodificación de contenedores a partir de los dos o más trenes de bits parciales se puede realizar en paralelo (por ejemplo, para diferentes grupos de medidas de probabilidad), que reduce el tiempo de procesamiento para varias implementaciones.
40 Otra ventaja de la descodificación de PIPE anterior es que la descodificación de contenedores, la cual es realizada por los descodificadores de contenedores 22, se puede diseñar de forma específica para diferentes conjuntos de parámetros 17. En particular, la codificación y la descodificación de contenedores se puede optimizar (en términos de la complejidad y / o la eficiencia de codificación) para diferentes grupos de probabilidades estimadas. Por un lado,
45 esto permite una reducción de la complejidad de codificación / descodificación en relación con algoritmos de codificación aritmética con una eficiencia de codificación similar. Por otro lado, esto permite una mejora de la eficiencia de codificación en relación con los algoritmos de codificación de VLC con una complejidad de codificación / descodificación similar. Los descodificadores de contenedores 22 pueden implementar diferentes algoritmos de descodificación (es decir la puesta en correspondencia de secuencias de contenedores con palabras de código)
50 para diferentes grupos de medidas para una estimada de la probabilidad para uno de los dos valores de contenedor posibles 17 para la solicitud de contenedor actual. Los descodificadores de contenedores 22 pueden implementar diferentes algoritmos de descodificación para diferentes grupos de medidas para una estimada de la probabilidad para el valor de contenedor menos probable o más probable para el contenedor solicitado actual. Los descodificadores de contenedores 22 pueden implementar diferentes algoritmos de descodificación para diferentes
55 códigos de protección de canal. Los descodificadores de contenedores 22 pueden implementar diferentes algoritmos de descodificación para diferentes esquemas de cifrado. Los descodificadores de contenedores 22 pueden implementar diferentes algoritmos de descodificación para diferentes combinaciones de códigos de protección de canal y grupos de medidas para una estimada de la probabilidad para uno de los dos valores de contenedor posibles 17 para el contenedor solicitado actual. Los descodificadores de contenedores 22 pueden implementar diferentes
60 algoritmos de descodificación para diferentes combinaciones de códigos de protección de canal y grupos de medidas para una estimada de la probabilidad para el valor de contenedor menos probable o más probable 17 para el contenedor solicitado actual. Los descodificadores de contenedores 22 pueden implementar diferentes algoritmos de descodificación para diferentes combinaciones de esquemas de cifrado y grupos de medidas para una estimada de la probabilidad para uno de los dos valores de contenedor posibles 17 para el contenedor solicitado actual. Los descodificadores de contenedores 22 pueden implementar diferentes algoritmos de descodificación para diferentes combinaciones de esquemas de cifrado y grupos de medidas para una estimada de la probabilidad para el valor de contenedor menos probable o más probable 17 para el contenedor solicitado actual.
imagen21
5 Los descodificadores de contenedores 22 do la puesta en correspondencia inversa de los codificadores de contenedores correspondientes en el lado de codificador.
Los descodificadores de contenedores 22 o uno o más de los descodificadores de contenedores pueden representar motores de descodificación aritmética binaria.
10 Los descodificadores de contenedores 22 o uno o más de los descodificadores de contenedores pueden representar unos descodificadores por entropía que ponen en correspondencia directamente las palabras de código 23 con las secuencias de contenedores 21. Tales puestas en correspondencia se pueden implementar de forma eficiente y no requieren un motor de codificación aritmética compleja. La puesta en correspondencia de palabras de
15 código con secuencias de contenedores ha de ser única. La puesta en correspondencia de las palabras de código 23 con las secuencias de contenedores 21 puede ser biyectiva. Los descodificadores de contenedores 10 o uno o más de los descodificadores de contenedores pueden representar unos descodificadores por entropía que ponen en correspondencia directamente unas palabras de código de longitud variable 23 con unas secuencias de longitud variable de contenedores 21. Las palabras de código de entrada pueden representar unos códigos libres de
20 redundancia tales como códigos de Huffman generales o códigos de Huffman canónicos. En la tabla 3 se ilustran dos ejemplos para la puesta en correspondencia biyectiva de unos códigos libres de redundancia con unas secuencias de contenedores. Las palabras de código de entrada pueden representar unos códigos redundantes adecuados para la detección de errores y la recuperación de errores. Las palabras de código de entrada pueden representar códigos de cifrado.
25 Los descodificadores de contenedores 22 o uno o más de los descodificadores de contenedores pueden representar unos descodificadores por entropía que ponen en correspondencia directamente unas palabras de código de longitud fija 23 con unas secuencias de longitud variable de contenedores 21. Como alternativa, los descodificadores de contenedores 22 o uno o más de los descodificadores de contenedores representan unos
30 descodificadores por entropía que ponen en correspondencia directamente las palabras de código de longitud variable 23 con unas secuencias de longitud fija de contenedores 21.
Por lo tanto, la figura 3 y 4 mostraron un codificador de PIPE para codificar una secuencia de símbolos de origen 1 y un descodificador de PIPE para reconstruir la misma. Es decir, el codificador de PIPE de la figura 3 se puede usar 35 como el codificador de PIPE 104 en la figura 1a con la unidad de binarización 2 que actúa como el simbolizador 122, la unidad de asignación de parámetros 4 que actúa como la unidad de asignación 114, el selector de memoria intermedia de contenedores 6 que actúa como selector 120, y el par de la memoria intermedia de contenedores 8 y el codificador de contenedores 10 conectado en serie que actúa como uno respectivo de los codificadores por entropía 116 cada uno de los cuales emite unos trenes de bits 12 que se corresponden con los trenes de bits 118 en 40 la figura 1a. Como queda claro a partir de la comparación de la figura 3 y la figura 1, la unidad de asignación 114 de la figura 1a puede tener su entrada como alternativa conectada con el lado de entrada del simbolizador 122 en lugar del lado de salida de este último. De forma similar, el descodificador de PIPE de la figura 4 se puede usar como el descodificador de PIPE 202 en la figura 2a con unos trenes de bits parciales 24 que se corresponden con los trenes de bits 216 en la figura 2, los pares de la memoria intermedia 20 y el descodificador de contenedores 22 conectado 45 en serie que se corresponden con los descodificadores por entropía individuales 210, el selector de memoria intermedia de contenedores 18 que actúa como selector 214, la unidad de asignación de parámetros 16 que actúa como la unidad de asignación 212 y la unidad de binarización 14 que actúa como el desimbolizador 222. De nuevo, una comparación entre la figura 2a y la figura 4 deja claro que la interconexión entre el desimbolizador 222, la unidad de asignación 212 y el selector 214 puede configurarse de forma diferente, de tal modo que como alternativa, las
50 conexiones de la figura 2a se modifican para corresponderse con las que se muestran en la figura 4.
El codificador de PIPE de la figura 3 comprende una unidad de asignación 4 configurada para asignar un número de parámetros 5 a cada símbolo alfabético de la secuencia de símbolos alfabéticos 3. La asignación se basa en información contenida dentro de símbolos alfabéticos previos de la secuencia de símbolos alfabéticos tales como la 55 categoría del elemento de sintaxis 1 a la cual pertenece la representación tal como binarización del símbolo alfabético actual y la cual, de acuerdo con la estructura sintáctica de los elementos de sintaxis 1, es de esperar en la actualidad, expectativa que, a su vez, es deducible a partir de la historia de los elementos de sintaxis 1 y los símbolos alfabéticos 3 previos. Además, el codificador comprende una pluralidad de codificadores por entropía 10 cada uno de los cuales está configurado para convertir los símbolos alfabéticos 3 reenviados al codificador por 60 entropía respectivo en un tren de bits respectivo 12, y un selector 6 configurado para reenviar cada símbolo alfabético 3 a uno seleccionado de la pluralidad de codificadores por entropía 10, dependiendo la selección del número de parámetros 5 asignado al símbolo alfabético respectivo 3. El descodificador de PIPE de la figura 4 comprende una pluralidad de descodificadores por entropía 22, cada uno de los cuales está configurado para convertir un tren de bits respectivo 23 en símbolos alfabéticos 21; una unidad de asignación 16 configurada para asignar un número de parámetros 17 a cada símbolo alfabético 15 de una secuencia de símbolos alfabéticos que se va a reconstruir sobre la base de información contenida dentro de símbolos alfabéticos previamente reconstruidos de la secuencia de símbolos alfabéticos (véanse 26 y 27 en la figura 4); y un selector 18 que está configurado para recuperar cada símbolo alfabético de la secuencia de símbolos alfabéticos que se va a reconstruir a partir de uno 5 seleccionado de la pluralidad de descodificadores por entropía 22, dependiendo la selección del número de parámetros que se definen para el símbolo alfabético respectivo. La unidad de asignación 16 puede configurarse de tal modo que el número de parámetros asignado a cada símbolo alfabético comprende, o es, una medida para una estimada de una probabilidad de distribución entre los posibles valores de símbolo alfabético que puede asumir un símbolo alfabético respectivo. La secuencia de símbolos alfabéticos que se va a reconstruir puede ser de un alfabeto 10 binario y la unidad de asignación 16 puede configurarse de tal modo que la estimada de la distribución de probabilidad consiste en una medida para una estimada de una probabilidad de un valor de contenedor menos probable o más probable de los dos valores de contenedor posibles del alfabeto binario y un identificador que especifica una estimada para cual de los dos valores de contenedor posibles representa el valor de contenedor menos probable o más probable. La unidad de asignación 16 puede configurarse adicionalmente para asignar de 15 forma interna un contexto a cada símbolo alfabético de la secuencia de símbolos alfabéticos 15 que se va a reconstruir sobre la base de la información contenida dentro de símbolos alfabéticos previamente reconstruidos de la secuencia de símbolos alfabéticos que se va a reconstruir con cada contexto teniendo una estimada de distribución de probabilidad respectiva asociado a ello, y adaptar la estimada de distribución de probabilidad para cada contexto a una estadística de símbolos real sobre la base de los valores de símbolo de símbolos alfabéticos previamente 20 reconstruidos a los que se asigna el contexto respectivo. El contexto puede tener en cuenta una relación espacial o proximidades de posiciones a las cuales pertenecen los elementos de sintaxis tal como en la codificación de vídeo o de imágenes, o incluso en tablas en el caso de las aplicaciones financieras. Entonces, la medida para la estimada de la distribución de probabilidad para cada símbolo alfabético puede determinarse sobre la base de la estimada de distribución de probabilidad asociada con el contexto asignado al símbolo alfabético respectivo tal como mediante la 25 cuantificación de la estimada de distribución de probabilidad asociada con el contexto asignado con el símbolo alfabético respectivo a una de una pluralidad de representantes de estimada de distribución de probabilidad con el fin de obtener la medida para la estimada de la distribución de probabilidad. El selector puede configurarse de tal modo que se define una asociación sobreyectiva entre la pluralidad de codificadores por entropía y la pluralidad de representantes de estimada de distribución de probabilidad, es decir cada codificador por entropía tiene por lo 30 menos una representante de estimada de distribución de probabilidad asociado con el mismo, pero más de una representante de estimada de distribución de probabilidad se pueden asociar con un codificador por entropía. La asociación incluso puede ser biyectiva. El selector 18 se puede configurar para cambiar una puesta en correspondencia de cuantificación de un intervalo de las estimadas de distribución de probabilidad a la pluralidad de representantes de estimada de distribución de probabilidad de una forma determinista previamente determinada 35 dependiendo de símbolos alfabéticos previamente reconstruidos de la secuencia de símbolos alfabéticos, con el tiempo. Es decir, el selector 18 puede cambiar los tamaños de paso de cuantificación, es decir los intervalos de distribuciones de probabilidad puestos en correspondencia con los índices de probabilidad individuales los cuales, a su vez, pueden asociarse de forma sobreyectiva con los descodificadores por entropía individuales. La pluralidad de descodificadores por entropía 22, a su vez, se pueden configurar para adaptar su forma de convertir símbolos 40 alfabéticos en unos trenes de bits sensibles a un cambio en la puesta en correspondencia de cuantificación. Por ejemplo, cada descodificador por entropía 22 se puede optimizar para, es decir puede tener una tasa de compresión óptima para, una determinada estimada de distribución de probabilidad dentro del intervalo de cuantificación de estimadas de distribución de probabilidad respectivo, y puede cambiar su correspondencia de secuencia de símbolos / palabras de código con el fin de adaptar la posición de esta determinada estimada de distribución de 45 probabilidad dentro del intervalo de cuantificación de estimadas de distribución de probabilidad respectivo con un cambio de este último con el fin de optimizarse. El selector se puede configurar para cambiar la puesta en correspondencia de cuantificación de tal modo que las tasas mediante las cuales se recuperan los símbolos alfabéticos a partir de la pluralidad de descodificadores por entropía, se hacen menos dispersas. En lo que respecta a la unidad de binarización 14 se hace notar que el mismo puede no usarse si los elementos de sintaxis ya son
imagen22
50 binarios. Además, dependiendo del tipo de descodificador 22, no es necesaria la existencia de las memorias intermedias 20. Además, las memorias intermedias pueden estar integradas dentro de los descodificadores.
Hasta el momento, se han descrito en lo que antecede más detalles para el codificador de PIPE 104 y el descodificador de PIPE 202 en la figura 1a y 2, con respecto a la figura 3 y 4, que, si se implementa fácilmente en
55 los aparatos de la figura 1a y 2, conducen a una salida de tren de bits en paralelo en la cual los trenes de bits parciales de VLC y de PIPE se transportan en paralelo. En lo sucesivo, se describen posibilidades, cómo combinar los trenes de bits parciales de PIPE para transmitirse, entonces, a lo largo del tren de bits de VLC en paralelo, o con una intercalación en segundo lugar de ambos trenes de bits, es decir el tren de bits de VLC y el tren de bits de PIPE intercalado.
60
Terminación de secuencias de símbolos de origen finitas
En los codificadores y descodificadores de PIPE, la codificación y la descodificación se pueden realizar para un conjunto finito de símbolos de origen. A menudo una cierta cantidad de datos tal como una imagen fija, una trama o
imagen23
campo de una secuencia de vídeo, una rebanada de una imagen, una rebanada de una trama o un campo de una secuencia de vídeo, o un conjunto de muestras de audio sucesivas, etc. se codifica. Para conjuntos finitos de símbolos de origen, en general, han de determinarse los trenes de bits parciales que se crean en el lado de codificador, es decir, se ha de asegurar que todos los símbolos de origen se pueden descodificar a partir de los 5 trenes de bits parciales transmitidos o almacenados. Después de que el último contenedor se haya insertado en la memoria intermedia de contenedores 8 correspondiente, el codificador de contenedores 10 ha de asegurar que una palabra de código completa se escribe en el tren de bits parcial 12. Si el codificador de contenedores 10 representa un motor de codificación aritmética binaria, la palabra de código aritmética ha de determinarse. Si el codificador de contenedores 10 representa un codificador por entropía que implementa una puesta en correspondencia directa de 10 secuencias de contenedores con palabras de código, la secuencia de contenedores que se almacena en la memoria intermedia de contenedores después de la escritura del último contenedor en la memoria intermedia de contenedores podría no representar una secuencia de contenedores que se asocia con una palabra de código (es decir, esta podría representar un prefijo de dos o más secuencias de contenedores que están asociadas con palabras de código). En caso de este tipo, cualquiera de las palabras de código que están asociadas con una 15 secuencia de contenedores que contiene la secuencia de contenedores en la memoria intermedia de contenedores como prefijo ha de escribirse en el tren de bits parcial (se ha de evacuar la memoria intermedia de contenedores). Esto se podría realizar mediante la inserción de contenedores con un valor particular o uno arbitrario en la memoria intermedia de contenedores hasta que se escribe una palabra de código. El codificador de contenedores puede seleccionar una de las palabras de código con una longitud mínima (además de la propiedad de que la secuencia de 20 contenedores asociada debe contener la secuencia de contenedores en la memoria intermedia de contenedores como prefijo). En el lado de descodificador, el descodificador de contenedores 22 puede descodificar más contenedores de los que se requieren para la última palabra de código en un tren de bits parcial; estos contenedores no son solicitados por el selector de memoria intermedia de contenedores 18 y se descartan y se ignoran. La descodificación del conjunto finito de símbolos se controla mediante solicitudes para símbolos de origen
25 descodificados; si no se solicita símbolo de origen adicional alguno para una cantidad de datos, la descodificación se termina.
Transmisión y multiplexación de los trenes de bits parciales
30 Los trenes de bits parciales 12 que se crean por el codificador de PIPE se pueden transmitir por separado, o estos se pueden multiplexar para dar un único tren de bits, o las palabras de código de los trenes de bits parciales se pueden intercalar en un único tren de bits.
Cada tren de bits parcial para una cantidad de datos se puede escribir en un paquete de datos. La cantidad de datos
35 puede ser un conjunto arbitrario de símbolos de origen tales como una imagen fija, un campo o trama de una secuencia de vídeo, una rebanada de una imagen fija, una rebanada de un campo o trama de una secuencia de vídeo, o una trama de muestras de audio, etc.
Dos o más de los trenes de bits parciales para una cantidad de datos o todos los trenes de bits parciales para una
40 cantidad de datos se pueden multiplexar para dar un paquete de datos. La estructura de un paquete de datos que contiene unos trenes de bits parciales multiplexados se ilustra en la figura 5. Es decir, el paquete de datos que se muestra en la figura 5 podría ser parte del tren intercalado intermedio 132 y 234, de forma respectiva.
El paquete de datos 300 consiste en un encabezamiento y una partición para los datos de cada tren de bits parcial
45 (para la cantidad considerada de datos). El encabezamiento 300 del paquete de datos contiene indicaciones para la subdivisión en particiones de (el resto de) el paquete de datos en segmentos de los datos de tren de bits 302. Además de las indicaciones para la subdivisión en particiones, el encabezamiento puede contener una información adicional. Las indicaciones para la subdivisión en particiones del paquete de datos pueden ser las ubicaciones del comienzo de los segmentos de datos en unidades de bits o bytes o múltiples de bits o múltiples de bytes. Las
50 ubicaciones del comienzo de los segmentos de datos se pueden codificar como valores absolutos en el encabezamiento del paquete de datos, o bien en relación con el comienzo del paquete de datos o bien en relación con el final del encabezamiento o en relación con el comienzo del paquete de datos previo. Las ubicaciones del comienzo de los segmentos de datos se pueden codificar de forma diferencial, es decir, solo la diferencia entre el comienzo real de un segmento de datos y una predicción para el comienzo del segmento de datos se codifica. La
55 predicción se puede obtener sobre la base de una información ya conocida o transmitida tal como el tamaño global del paquete de datos, el tamaño del encabezamiento, el número de segmentos de datos en el paquete de datos, la ubicación del comienzo de segmentos de datos precedentes. La ubicación del comienzo del primer paquete de datos puede no codificarse, sino inferirse sobre la base del tamaño del encabezamiento de paquete de datos. En el lado de descodificador, las indicaciones de partición transmitidas se usan para obtener el comienzo de los segmentos de
60 datos. Los segmentos de datos se usan entonces como trenes de bits parciales y los datos que están contenidos en los segmentos de datos se alimentan a los descodificadores de contenedores correspondientes en orden secuencial.
Hay varias alternativas para multiplexar los trenes de bits parciales 12 en un paquete de datos. Una alternativa, la cual puede reducir la información conexa requerida, en particular para los casos en los que los tamaños de los
imagen24
trenes de bits parciales son muy similares, se ilustra en la figura 6. La cabida útil del paquete de datos, es decir, el paquete de datos 310 sin su encabezamiento 311, se subdivide en particiones para dar unos segmentos 312 de una forma previamente definida. Como un ejemplo, la cabida útil de paquete de datos se puede subdividir en particiones para dar unos segmentos del mismo tamaño. Entonces cada segmento se asocia con un tren de bits parcial o con la 5 primera parte de un tren de bits parcial 313. Si un tren de bits parcial es mayor que el segmento de datos asociado, su resto 314 se coloca en el espacio sin usar al final de otros segmentos de datos. Esto se puede realizar de una forma tal que la parte restante de un tren de bits se inserta en el orden inverso (comenzando a partir del final del segmento de datos), que reduce la información conexa. La asociación de los restos de los trenes de bits parciales con unos segmentos de datos y, cuando más de un resto se añade a un segmento de datos, el punto de inicio para
10 uno o más de los restos se ha de señalizar en el interior del tren de bits, por ejemplo en el encabezamiento de paquete de datos.
Intercalación de palabras de código de longitud variable
15 Para algunas aplicaciones, la multiplexación que se ha descrito en lo que antecede de los trenes de bits parciales 12 (para una cantidad de símbolos de origen) en un paquete de datos puede tener las siguientes desventajas: Por un lado, para unos paquetes de datos pequeños, el número de bits para la información conexa que se requiere para señalizar la subdivisión en particiones se puede volver significativa en relación con los datos reales en los trenes de bits parciales, lo que en última instancia reduce la eficiencia de codificación. Por otro lado, la multiplexación puede
20 no ser adecuada para las aplicaciones que requieren un bajo retardo (por ejemplo, para aplicaciones de videoconferencia). Con la multiplexación descrita, el codificador de PIPE no puede iniciar la transmisión de un paquete de datos antes de que los trenes de bits parciales se hayan creado completamente, debido a que las ubicaciones del comienzo de las particiones no se conocían con anterioridad. Además, en general, el descodificador de PIPE ha de esperar hasta que este recibe el comienzo del último segmento de datos antes de que este pueda
25 iniciar la descodificación de un paquete de datos. Para aplicaciones como sistemas de videoconferencia, estos retardos pueden sumarse a un retardo global adicional del sistema de varias imágenes de vídeo (en particular para unas tasas de bits que se encuentran cerca de la tasa de bits de transmisión y para codificadores / descodificadores que requieren casi el intervalo de tiempo entre dos imágenes para codificar / descodificar una imagen), que es crítico para tales aplicaciones. Con el fin de superar las desventajas para determinadas aplicaciones, el codificador de
30 PIPE puede configurarse de una forma tal que las palabras de código que se generan mediante los dos o más codificadores de contenedores se intercalan para dar un único tren de bits. El tren de bits con las palabras de código intercaladas puede enviarse directamente al descodificador (cuando se desprecia un pequeño retardo de memoria intermedia, véase en lo sucesivo). En el lado de descodificador de PIPE, los dos o más descodificadores de contenedores leen las palabras de código directamente a partir del tren de bits en el orden de descodificación; la
35 descodificación se puede iniciar con el primer bit recibido. Además, no se requiere información conexa alguna para señalizar la multiplexación (o intercalación) de los trenes de bits parciales.
La estructura básica de un codificador de PIPE con una intercalación de palabras de código se muestra en la figura
7. Los codificadores de contenedores 10 no escriben las palabras de código directamente en los trenes de bits
40 parciales, sino que se conectan con una única memoria intermedia de palabras de código 29, a partir de las cual se escriben palabras de código en el tren de bits 34 en el orden de codificación. Los codificadores de contenedores 10 envían solicitudes para una o más nuevas entradas de memoria intermedia de palabras de código 28 a la memoria intermedia de palabras de código 29 y posteriormente envían las palabras de código 30 a la memoria intermedia de palabras de código 29, que se almacenan en las entradas de memoria intermedia reservadas. Las palabras de
45 código (en general de longitud variable) 31 de la memoria intermedia de palabras de código 29 se acceden por una unidad de escritura de palabras de código 32, que escribe los bits 33 correspondientes en el tren de bits producido
34. La memoria intermedia de palabras de código 29 opera como una memoria intermedia de tipo primero en entrar primero en salir; las entradas de palabra de código que se reservan con anterioridad se escriben con anterioridad en el tren de bits.
50 En una generalización adicional, son posibles múltiples memorias intermedias de palabras de código y trenes de bits parciales 12, en donde el número de memorias intermedias de palabras de código es menor que el número de codificadores de contenedores. Un codificador de contenedores 10 reserva una o más palabras de código en la memoria intermedia de palabras de código 29, mediante lo cual la reserva de las una o más palabras de código en la
55 memoria intermedia de palabras de código es desencadenada por determinados eventos en la memoria intermedia de contenedores conectada 8. La memoria intermedia de palabras de código 29 se puede operar de una forma tal que el descodificador de PIPE puede descodificar de forma instantánea el tren de bits 34 el cual se corresponde con 132 en la figura 1a y 134 en la figura 2, de forma respectiva. El orden de codificación en el cual las palabras de código se escriben en el tren de bits es el mismo que el orden en el cual las palabras de código correspondientes se
60 reservan en la memoria intermedia de palabras de código. Cada codificador de contenedores 10 puede reservar una palabra de código, con la reserva siendo desencadenado por un determinado evento en la memoria intermedia de contenedores conectada. Cada codificador de contenedores 10 puede reservar más de una palabra de código, con la reserva siendo desencadenado por un determinado evento en la memoria intermedia de contenedores conectada. Los codificadores de contenedores 10 pueden reservar una cantidad diferente de palabras de código, en donde la cantidad de palabras de código que son reservadas por un codificador de contenedores particular puede ser dependiente del codificador de contenedores particular y / u otras propiedades del codificador de contenedores / memoria intermedia de contenedores particular (tal como la medida de probabilidad asociada, el número de bits ya escritos, etc.).
imagen25
5 La memoria intermedia de palabras de código puede operar tal como sigue. Si un nuevo contenedor 7 se envía a una memoria intermedia de contenedores particular 8 y el número de contenedores ya almacenados en la memoria intermedia de contenedores es cero y en la actualidad no hay palabra de código alguna reservada en la memoria intermedia de palabras de código para el codificador de contenedores que se conecta con la memoria intermedia de
10 contenedores particular, el codificador de contenedores conectado 10 envía una solicitud a la memoria intermedia de palabras de código, mediante lo cual una o más entradas de palabra de código se reservan en la memoria intermedia de palabras de código 29 para el codificador de contenedores particular. Las entradas de palabra de código pueden tener un número variable de bits; un umbral superior para el número de bits en una entrada de memoria intermedia viene dado por lo general por el tamaño de palabra de código máximo para el codificador de
15 contenedores correspondiente. La siguiente palabra de código o las siguientes palabras de código que se producen por el codificador de contenedores (para lo cual la entrada de palabra de código o entradas de palabra de código se han reservado) se almacenan en la entrada o entradas reservadas de la memoria intermedia de palabras de código. Si todas las entradas de memoria intermedia reservadas en la memoria intermedia de palabras de código para un codificador de contenedores particular se llenan con palabras de código y el siguiente contenedor se envía a la
20 memoria intermedia de contenedores que se conecta con el codificador de contenedores particular, una o más nuevas palabras de código se reservan en la memoria intermedia de palabras de código para el codificador de contenedores particular, etc. La memoria intermedia de palabras de código 29 representa una memoria intermedia de tipo primero en entrar primero en salir de una cierta forma. Las entradas de memoria intermedia se reservan en orden secuencial. Las palabras de código para las que las entradas de memoria intermedia correspondientes se han
25 reservado con anterioridad se escriben con anterioridad en el tren de bits. La unidad de escritura de palabras de código 32 comprueba el estatus de la memoria intermedia de palabras de código 29, o bien de forma continua o bien después de que una palabra de código 30 se escriba en la memoria intermedia de palabras de código 29. Si la primera entrada de memoria intermedia contiene una palabra de código completa (es decir, la entrada de memoria intermedia no está reservada, sino que incluye una palabra de código), la palabra de código 31 correspondiente y la
30 entrada de memoria intermedia correspondiente se retiran de la memoria intermedia de palabras de código 20 y los bits de la palabra de código 33 se escriben en el tren de bits. Este proceso se repite hasta que la primera entrada de memoria intermedia no contiene una palabra de código (es decir, esta está reservada o es libre). Al final del proceso de descodificación, es decir, si se han procesado todos los símbolos de origen de la cantidad considerada de datos, se ha de evacuar la memoria intermedia de palabras de código. Para ese proceso de evacuación, lo sucesivo es de
35 aplicación para cada memoria intermedia de contenedores / codificador de contenedores como primera etapa: Si la memoria intermedia de contenedores contiene, de hecho, unos contenedores, un contenedor con un valor particular
o uno arbitrario se añade hasta que la secuencia de contenedores resultante representa una secuencia de contenedores que se asocia con una palabra de código (tal como se ha hecho notar en lo que antecede, una forma preferida de adición de contenedores es añadir aquellos valores de contenedor que producen la palabra de código 40 posible más corta o una de ellas que se asocia con una secuencia de contenedores que contiene el para el contenido original de la memoria intermedia de contenedores como prefijo), entonces la palabra de código se escribe en la siguiente entrada de memoria intermedia reservada para el codificador de contenedores correspondiente (y la correspondiente) memoria intermedia de contenedores se vacía. Si se ha reservado más de una entrada de memoria intermedia para uno o más codificadores de contenedores, la memoria intermedia de palabras de código
45 puede seguir conteniendo entradas de palabra de código reservadas. En ese caso, estas entradas de palabra de código se llenan con unas palabras de código arbitrarias pero válidas para los codificadores de contenedores correspondientes. Preferiblemente, se inserta la palabra de código válida más corta o una de las palabras de código válidas más cortas (de haber una multitud). Por último, todas las palabras de código restantes en la memoria intermedia de palabras de código se escriben en el tren de bits.
50 En la figura 8 se ilustran dos ejemplos para el estatus de la memoria intermedia de palabras de código. En el ejemplo (a), la memoria intermedia de palabras de código contiene 2 entradas que se llenan con una palabra de código y 5 entradas reservadas. Además, se marca la siguiente entrada de memoria intermedia libre. La primera entrada se llena con una palabra de código (es decir, el codificador de contenedores 2 acababa de escribir una
55 palabra de código en una entrada previamente reservada). En la siguiente etapa, esta palabra de código se retirará de la memoria intermedia de palabras de código y se escribirá en el tren de bits. Entonces, la primera palabra de código reservada para el codificador de contenedores 3 es la primera entrada de memoria intermedia, pero esta entrada no se puede retirar de la memoria intermedia de palabras de código, debido a que esta solo está reservada, pero no se ha escrito palabra de código alguna en esta entrada. En el ejemplo (b), la memoria intermedia de
60 palabras de código contiene 3 entradas que se llenan con una palabra de código y 4 entradas reservadas. La primera entrada se marca como reservada y, por lo tanto, la unidad de escritura de palabras de código no puede escribir una palabra de código en el tren de bits. A pesar de que 3 palabras de código están contenidas en la memoria intermedia de palabras de código, la unidad de escritura de palabras de código ha de esperar hasta que se escriba una palabra de código en la primera entrada de memoria intermedia reservada para el codificador de contenedores 3. Obsérvese que las palabras de código deben escribirse en el orden en el cual fueron reservadas, con el fin de ser capaces de invertir el proceso en el lado de descodificador (véase en lo sucesivo).
imagen26
La estructura básica de un descodificador de PIPE con una intercalación de palabras de código se muestra en la
5 figura 9. Los descodificadores de contenedores 10 no leen las palabras de código directamente a partir de trenes de bits parciales separados, sino que están conectados con una memoria intermedia de bits 38, a partir de la que las palabras de código 37 se leen en el orden de codificación. Se debería hacer notar que la memoria intermedia de bits 38 no se requiere necesariamente, debido a que las palabras de código también se podrían leer directamente a partir del tren de bits. La memoria intermedia de bits 38 se incluye principalmente en la ilustración para separar
10 claramente diferentes aspectos de la cadena de procesamiento. Los bits 39 del tren de bits 40 con palabras de código intercaladas, lo que por lo tanto se corresponde con el tren de bits 234 en la figura 2, se insertan de forma secuencial en la memoria intermedia de bits 38, la cual representa una memoria intermedia de tipo primero en entrar primero en salir. Si un descodificador de contenedores particular 22 recibe una solicitud para una o más secuencias de contenedores 35, el descodificador de contenedores 22 lee una o más palabras de código 37 a partir de la
15 memoria intermedia de bits 38 por medio de solicitudes para bits 36. El descodificador de PIPE puede descodificar de forma instantánea los símbolos de origen. Obsérvese que el codificador de PIPE (tal como se ha descrito en lo que antecede) ha de asegurar, al operar de forma conveniente la memoria intermedia de palabras de código, que las palabras de código se escriben en el mismo orden en el tren de bits en el que estas son solicitadas por los descodificadores de contenedores. En el descodificador de PIPE, la totalidad del proceso de descodificación es
20 desencadenado por solicitudes para símbolos de origen. Parámetros como el número de palabras de código que son reservados en el lado de codificador por un codificador de contenedores particular y el número de palabras de código que se leen por el descodificador de contenedores correspondiente han de ser los mismos.
En una generalización adicional, son posibles múltiples memorias intermedias de palabras de código y trenes de bits
25 parciales, en donde el número de memorias intermedias de bits es menor que el número de descodificadores de contenedores. Un descodificador de contenedores 22 lee una o más palabras de código a partir de la memoria intermedia de bits 38 en un instante en el tiempo, mediante lo cual la lectura de las una o más palabras de código a partir de la memoria intermedia de bits es desencadenada por determinados eventos en la memoria intermedia de contenedores conectada 20. El descodificador se puede operar de una forma tal que una o más palabras de código
30 se leen cuando una solicitud para un contenedor 19 se envía a una memoria intermedia de contenedores particular 20 y la memoria intermedia de contenedores no contiene contenedor alguno. Pero también es posible desencadenar la lectura de palabras de código mediante otros eventos, por ejemplo si el número de contenedores en la memoria intermedia de contenedores se encuentra por debajo de un umbral previamente definido. Cada descodificador de contenedores 22 puede leer una palabra de código, con la lectura siendo desencadenado por un determinado
35 evento en la memoria intermedia de contenedores conectada. Como alternativa, cada descodificador de contenedores 22 puede leer más de una palabra de código, con la lectura siendo desencadenado por un determinado evento en la memoria intermedia de contenedores conectada. Los descodificadores de contenedores 22 pueden ser leídos una cantidad diferente de palabras de código, en donde la cantidad de palabras de código que se leen por un descodificador de contenedores particular puede ser dependiente del descodificador de contenedores
40 particular y / u otras propiedades del descodificador de contenedores / memoria intermedia de contenedores particular (tal como la medida de probabilidad asociada, el número de bits ya leídos, etc.).
La lectura de palabras de código a partir de la memoria intermedia de bits se puede operar tal como sigue. Si una nueva solicitud de contenedor 19 se envía a partir del selector de memoria intermedia de contenedores 18 a una 45 memoria intermedia de contenedores particular 20 y el número de contenedores en la memoria intermedia de contenedores es cero, el descodificador de contenedores conectado 22 lee una o más palabras de código 37 a partir de la memoria intermedia de bits 38, por medio de solicitud de bit 36 en la memoria intermedia de bits 38. El descodificador de contenedores 22 convierte las palabras de código 37 leídas en las secuencias de contenedores 21 y almacena estas secuencias de contenedores en la memoria intermedia de contenedores conectada 20. Como 50 respuesta final a la solicitud para un contenedor 19, el contenedor insertado en primer lugar se retira de la memoria intermedia de contenedores 20 y se envía al selector de memoria intermedia de contenedores 18. Como respuesta a las solicitudes de contenedor adicionales, los contenedores restantes en la memoria intermedia de contenedores son removed hasta que la memoria intermedia de contenedores está vacía. Una solicitud de contenedor adicional desencadena que el descodificador de contenedores lea una o más nuevas palabras de código a partir de la
55 memoria intermedia de bits, etc. La memoria intermedia de bits 38 representa una memoria intermedia de tipo primero en entrar primero en salir de un tamaño previamente definido y se llena continuamente con los bits 39 a partir del tren de bits 40. Con el fin de asegurar que las palabras de código se escriben en el tren de bits de la misma forma que estas son solicitadas por el proceso de descodificación, la memoria intermedia de palabras de código en el lado de codificador se puede operar de la forma que se ha descrito en lo que antecede.
60 Por lo tanto, cada uno de la pluralidad de descodificadores por entropía puede ser un descodificador de longitud variable que está configurado para poner en correspondencia palabras de código de longitudes fijas con unas secuencias de símbolos de longitudes variables, y una entrada de palabra de código tal como la salida de la memoria intermedia de palabras de código 43 puede proporcionarse para recibir un único tren de palabras de código intercaladas. La pluralidad de descodificadores por entropía 22 se pueden configurar para recuperar las palabras de código de la entrada de palabra de código en un orden secuencial dependiendo de un orden en el cual los símbolos de la secuencia de símbolos que se va a reconstruir como recuperada por el selector 18 a partir de la pluralidad de descodificadores por entropía dan como resultado una nueva secuencia de símbolos que va a ponerse en
imagen27
5 correspondencia a partir de una nueva palabra de código en los descodificadores por entropía respectivos.
Intercalación de palabras de código de longitud variable con una restricción de retardo baja
La intercalación de palabras de código descrita para la codificación de PIPE no requiere que se envíe información
10 alguna de subdivisión en particiones como información conexa. Y debido a que las palabras de código se intercalan en el tren de bits, el retardo es en general pequeño. No obstante, no se garantiza que se obedezca una restricción de retardo particular (por ejemplo, especificada por un número máximo de bits que se almacenan en la memoria intermedia de palabras de código). Además, el tamaño de memoria intermedia requerido para la memoria intermedia de palabras de código se puede volver, en teoría, muy grande. Cuando se considera el ejemplo en la figura 8(b),
15 podría ser posible que no se enviara contenedor adicional alguno a la memoria intermedia de contenedores 3 y, por lo tanto, el codificador de contenedores 3 no enviará palabra de código nueva alguna a la memoria intermedia de palabras de código hasta que se aplique el proceso de evacuación al final del paquete de datos. Entonces todas las palabras de código para los codificadores de contenedores 1 y 2 tendrían que esperar hasta el final del paquete de datos, antes de que estas se puedan escribir en el tren de bits. Este inconveniente puede sortearse mediante la
20 adición de un mecanismo adicional al proceso de codificación de PIPE (y también al proceso de descodificación de PIPE tal como se describe posteriormente). El concepto básico de ese mecanismo adicional es que si una medida en relación con el retardo o un límite superior del retardo (véase en lo sucesivo) supera un umbral especificado, la primera entrada de memoria intermedia reservada se llena mediante la evacuación de la memoria intermedia de contenedores correspondiente (usando un mecanismo similar al del final de un paquete de datos). Mediante un
25 mecanismo de este tipo, el número de entradas de memoria intermedia en espera se reduce hasta que la medida de retardo asociada es menor que el umbral especificado. En el lado de descodificador, se han de descartar los contenedores que se han insertado en el lado de codificador con el fin de obedecer la restricción de retardo. Para este descarte de contenedores se puede usar básicamente el mismo mecanismo que en el lado de codificador. En lo sucesivo se describen dos posibilidades para un control de retardo de este tipo.
30 En una posibilidad, la medida para el retardo (o un límite superior del retardo) es el número de entradas de memoria intermedia activas en la memoria intermedia de palabras de código, en donde el número de entradas de memoria intermedia activas es el número de entradas de memoria intermedia reservadas más el número de entradas de memoria intermedia que contienen palabras de código. Obsérvese que la primera entrada de memoria intermedia es
35 siempre una entrada de memoria intermedia reservada o una entrada de memoria intermedia libre, debido a que si la primera entrada de memoria intermedia contiene una palabra de código, esta palabra de código se escribe en el tren de bits. Si por ejemplo, el máximo retardo de memoria intermedia admitido (según sea determinado por la aplicación) es D bits y el tamaño de palabra de código máximo para todos los codificadores de contenedores es L, un límite inferior para el número máximo de palabras de código que puede estar contenido en la memoria intermedia de
40 palabras de código sin violar la restricción de retardo se puede calcular por N=D / L. La medida de retardo D en bits no se requiere por el sistema, pero el número máximo de palabras de código N ha de ser conocido tanto por el codificador como por el descodificador. El número máximo de entradas de memoria intermedia de palabras de código N puede estar fijado por la aplicación. Como alternativa, el número máximo de entradas de memoria intermedia de palabras de código N se puede señalizar en el interior del tren de bits, por ejemplo, en el
45 encabezamiento del paquete de datos (o el encabezamiento de rebanada) o en un conjunto de parámetros, el cual se incluye en el tren de bits. Si un codificador de contenedores 10 envía una solicitud para la reserva de una o más nuevas entradas de memoria intermedia a la memoria intermedia de palabras de código 29, el siguiente proceso se ejecuta antes de que se reserve una nueva entrada de memoria intermedia de palabras de código (es decir, se ejecuta múltiples veces si múltiples entradas de memoria intermedia de palabras de código son reservadas por una
50 solicitud): Si el número de entradas de memoria intermedia activas en la actualidad más 1 (teniendo en cuenta la entrada de memoria intermedia que se reservará a continuación) es mayor que el número máximo de entradas de memoria intermedia de palabras de código N, la primera entrada de memoria intermedia (la cual está reservada) se evacúa por el proceso que se describe en lo sucesivo hasta que el número de entradas de memoria intermedia activas en la actualidad más 1 sea menor que o igual al número máximo de entradas de memoria intermedia de
55 palabras de código N. La evacuación de una entrada de memoria intermedia reservada es similar a la evacuación al final de un paquete de datos: El codificador de contenedores 10 que ha reservado la primera entrada de memoria intermedia correspondiente se evacúa mediante la adición de contenedores con unos valores particulares o arbitrarios a la memoria intermedia de contenedores conectada 8 hasta que la secuencia de contenedores resultante representa una secuencia de contenedores que se asocia con una palabra de código, entonces la palabra de código
60 se escribe en la entrada de memoria intermedia reservada y, en última instancia, se añade al tren de bits (al tiempo que se vacía la memoria intermedia de contenedores y se retira la entrada de memoria intermedia previamente reservada). Tal como se ha mencionado en lo que antecede, una forma preferida para añadir contenedores a la memoria intermedia de contenedores es añadir aquellos contenedores que producen la palabra de código posible más corta. En el lado de descodificador, se ejecuta un proceso similar para descartar los contenedores que se han
imagen28
añadido para obedecer la restricción de retardo. Por lo tanto, el descodificador mantiene un contador C que recuenta las palabras de código que se han leído a partir de la memoria intermedia de bits (este contador puede mantenerse en la memoria intermedia de bits). Este contador C se inicializa (por ejemplo, con cero) en el comienzo de la descodificación de un paquete de datos y se incrementa en uno después de que se lea una palabra de código. 5 Además, cada descodificador de contenedores 22 contiene un contador Cx, que almacena el valor del contador de palabras de código C antes de que la última palabra de código sea leída por el descodificador de contenedores 22 correspondiente. Es decir, cuando un descodificador de contenedores particular 22 lee una nueva palabra de código, su contador Cx se establece igual a C como una primera etapa y entonces la palabra de código se lee a partir de la memoria intermedia de bits. Cuando una solicitud para un contenedor 19 se envía a una memoria intermedia de 10 contenedores particular 20 y la diferencia (C Cx) entre el contador de palabras de código global C y el contador Cx del descodificador de contenedores conectado 22 es mayor que el número máximo de entradas de memoria intermedia de palabras de código N, todos los contenedores que se almacenan en la actualidad en la memoria intermedia de contenedores particular 20 se descartan y se ignoran. Además de esa etapa adicional, la descodificación se opera tal como se ha descrito en lo que antecede. Si la memoria intermedia de contenedores 20 a
15 la cual se envía una solicitud para un contenedor 19 está vacía (o bien debido a que ya se han retirado todos los contenedores o bien debido a que el mecanismo de bajo retardo descartó todos los contenedores en la primera etapa después de que se haya recibido la solicitud de contenedor), el descodificador de contenedores conectado 22 lee una o más nuevas palabras de código a partir de la memoria intermedia de bits 38 etc.
20 La medida para el retardo (o un límite superior del retardo) puede ser la suma de las longitudes de palabra de código máximas para las entradas de memoria intermedia activas en la memoria intermedia de palabras de código, en donde la longitud de palabra de código máxima para una entrada de memoria intermedia particular depende del contenedor descodificado que se asocia con esa entrada de memoria intermedia. Como ilustración, las longitudes de palabra de código máximas para las entradas de memoria intermedia están indicadas en los ejemplos en 6.
25 Obsérvese de nuevo que la primera entrada de memoria intermedia es siempre una entrada de memoria intermedia reservada o una entrada de memoria intermedia libre, debido a que si la primera entrada de memoria intermedia contiene una palabra de código, esta palabra de código se escribe en el tren de bits. Sea el máximo retardo de memoria intermedia admitido (según sea determinado por la aplicación) de D bits. Este máximo retardo de memoria intermedia D ha de ser conocido tanto por el codificador como por el descodificador. El máximo retardo de memoria
30 intermedia D puede estar fijado por la aplicación. El máximo retardo de memoria intermedia D se puede señalizar en el interior del tren de bits, por ejemplo, en el encabezamiento del paquete de datos (o el encabezamiento de rebanada) o en un conjunto de parámetros, el cual se incluye en el tren de bits. Este se puede señalizar en unidades de bits, o bytes, o un múltiplo de bits, o un múltiplo de bytes. Si un codificador de contenedores 10 envía una solicitud para la reserva de una o más nuevas entradas de memoria intermedia a la memoria intermedia de palabras
35 de código 29, el siguiente proceso se ejecuta antes de que se reserve una nueva entrada de memoria intermedia de palabras de código (es decir, se ejecuta múltiples veces si múltiples entradas de memoria intermedia de palabras de código son reservadas por una solicitud).
Si la suma de las longitudes de palabra de código máximas para todas las entradas de memoria intermedia activas
40 en la actualidad más la longitud de palabra de código máxima para la entrada de memoria intermedia que se reservará es mayor que el máximo retardo de memoria intermedia D, la primera entrada de memoria intermedia (la cual está reservada) se evacúa por el proceso que se ha descrito en lo que antecede hasta que la suma de las longitudes de palabra de código máximas para todas las entradas de memoria intermedia activas más la longitud de palabra de código máxima para la entrada de memoria intermedia que se reservará es menor que o igual al máximo
45 retardo de memoria intermedia D. Como un ejemplo, considérese el ejemplo en la figura 8(b). La suma de las longitudes de palabra de código máximas para todas las entradas de memoria intermedia activas en la actualidad es
29. Supóngase que el máximo retardo de memoria intermedia D se establece igual a 32. Si la siguiente entrada de memoria intermedia es reservada por el codificador de contenedores 2 para el que la longitud de palabra de código máxima es igual a 3, la primera entrada de memoria intermedia no se evacúa, debido a que 29 + 3 no es mayor que
50 32. Pero si la siguiente entrada de memoria intermedia es reservada por el codificador de contenedores 1 para el que la longitud de palabra de código máxima es igual a 7, la primera entrada de memoria intermedia se evacúa, debido a que 29 + 7 es mayor que 32. La evacuación de la entrada de memoria intermedia reservada se realiza tal como se ha descrito en lo que antecede (mediante la adición de un contenedor con unos valores particulares o arbitrarios a la memoria intermedia de contenedores correspondiente).
55 En el lado de descodificador, se ejecuta un proceso similar para descartar los contenedores que se han añadido para obedecer la restricción de retardo. Por lo tanto, el descodificador mantiene un contador C que recuenta la longitud de palabra de código máxima para las palabras de código que se han leído a partir de la memoria intermedia de bits (este contador puede mantenerse en la memoria intermedia de bits). Obsérvese que las
60 longitudes de palabra de código máximas que están asociadas con diferentes descodificadores de contenedores pueden ser diferentes. El contador C se inicializa (por ejemplo, con cero) en el comienzo de la descodificación de un paquete de datos y este se incrementa después de que se lea una palabra de código. Este contador no se incrementa en la longitud real de las palabras de código leídas, sino en su longitud máxima. Es decir, si una palabra de código se lee por un descodificador de contenedores particular y la longitud de palabra de código máxima que se
imagen29
asocia con la tabla de palabras de código que es usada por el descodificador de contenedores particular es Lx (un descodificador de contenedores diferente puede asociarse con una longitud de palabra de código máxima diferente), el contador C se incrementa en Lx. Además del contador global C, cada descodificador de contenedores 22 contiene un contador Cx, que almacena el valor del contador de palabras de código C antes de que la última palabra de 5 código sea leída por el descodificador de contenedores 22 correspondiente. Es decir, cuando un descodificador de contenedores particular 22 lee una nueva palabra de código, su contador Cx se establece igual a C como una primera etapa y entonces la palabra de código se lee a partir de la memoria intermedia de bits. Cuando una solicitud para un contenedor 19 se envía a una memoria intermedia de contenedores particular 20 y la diferencia (C Cx) entre el contador global C y el contador Cx del descodificador de contenedores conectado 22 es mayor que el 10 máximo retardo de memoria intermedia D, todos los contenedores que están almacenados en la actualidad en la memoria intermedia de contenedores particular 20 se descartan y se ignoran. Además de esa etapa adicional, la descodificación se opera tal como se ha descrito en lo que antecede. Si la memoria intermedia de contenedores 20 a la cual se envía una solicitud para un contenedor 19 está vacía (o bien debido a que ya se han retirado todos los contenedores o debido a que el mecanismo de bajo retardo descartó todos los contenedores en la primera etapa
15 después de que se haya recibido la solicitud de contenedor), el descodificador de contenedores conectado 22 lee una o más nuevas palabras de código a partir de la memoria intermedia de bits 38 etc.
Por lo tanto, la pluralidad de descodificadores por entropía 22 y el selector 18 se pueden configurar para descartar de forma intermitente sufijos de secuencias de símbolos con el fin de no participar en la formación de la secuencia 20 de símbolos que se va a reconstruir 29. El descarte de forma intermitente se puede realizar en unos eventos en los que un número de palabras de código que se han recuperado a partir de la entrada de palabra de código por la pluralidad de descodificadores por entropía entre dos recuperaciones de palabra de código consecutivas de un descodificador por entropía respectivo a partir de la entrada de palabra de código, satisface un criterio previamente determinado. La pluralidad de codificadores por entropía y la memoria intermedia de palabras de código, a su vez, 25 puede configurarse para ampliar de forma intermitente unos símbolos reenviados en la actualidad pero aún no puestos en correspondencia a unas secuencias de símbolos válidas mediante unos símbolos de “no importa” que tienen los símbolos reenviados en la actualidad pero aún no puestos en correspondencia como prefijo, poner en correspondencia las secuencias de símbolos así ampliadas con palabras de código, introducir las palabras de código así obtenidas en las entradas de palabra de código reservadas y evacuar las entradas de palabra de código. La
30 ampliación de forma intermitente, la entrada y la evacuación pueden tener lugar en unos eventos en los que un número de entradas de palabra de código reservadas más un número de entradas de palabra de código que tienen palabras de código introducidas en las mismas satisface un criterio previamente determinado. Los criterios previamente determinados pueden tener en cuenta las longitudes máximas de palabras de código de la pluralidad de pares de codificador / descodificador.
35 Para algunas arquitecturas, la forma que se ha descrito en lo que antecede de intercalación de palabras de código podría dar como resultado un inconveniente en términos de la complejidad de descodificación. Tal como se ilustra en la figura 9, todos los descodificadores de contenedores 22 leen palabras de código (en el caso general, palabras de código de longitud variable) a partir de una única memoria intermedia de bits 38. La lectura de las palabras de
40 código no se puede realizar en paralelo, debido a que la palabra de código debe leerse en el orden correcto. Eso quiere decir que un descodificador de contenedores particular ha de esperar hasta que otros descodificadores de contenedores acaban la lectura de palabras de código. Y cuando la complejidad de la lectura de las palabras de código de longitud variable es significativa en relación con el resto del proceso de descodificación (parcialmente paralelizado), este acceso de las palabras de código de longitud variable puede ser un cuello de botella para la
45 totalidad del proceso de descodificación. Hay algunas variaciones que pueden emplearse para reducir la complejidad del acceso a partir de la única memoria intermedia de bits, unas pocas de estas se describirán en lo sucesivo. Existe, por ejemplo, un único conjunto de palabras de código (que representa por ejemplo un código de prefijo libre de redundancia) y el conjunto de palabras de código que se usa para cada descodificador de contenedores 22 es un subconjunto del único conjunto de palabras de código. Obsérvese que diferentes
50 descodificadores de contenedores 22 pueden usar diferentes subconjuntos del único conjunto de palabras de código. Incluso si los conjuntos de palabras de código que se usan por algunos de los descodificadores de contenedores 22 son los mismos, su asociación con secuencias de contenedores es diferente para diferentes descodificadores de contenedores 22. El mismo conjunto de palabras de código se puede usar para todos los descodificadores de contenedores 22. Si se tiene un único conjunto de palabras de código que incluye los conjuntos
55 de palabras de código para todos los descodificadores de contenedores como subconjuntos, el análisis sintáctico de las palabras de código se puede realizar fuera de los descodificadores de contenedores, lo que puede reducir la complejidad del acceso a palabras de código. El proceso de codificación de PIPE no se modifica en relación con el proceso que se ha descrito en lo que antecede. El proceso de descodificación de PIPE modificado se ilustra en la figura 10. Un único lector de palabras de código se alimenta con los bits 46 a partir del tren de bits 40 y analiza
60 sintácticamente las palabras de código en general de longitud variable. Las palabras de código leídas 44 se insertan en una memoria intermedia de palabras de código 43, la cual representa una memoria intermedia de tipo primero en entrar primero en salir. Un descodificador de contenedores 22 envía una solicitud para una o más palabras de código 41 a la memoria intermedia de palabras de código 43 y como respuesta a esta solicitud, las una
o más palabras de código se retiran de la memoria intermedia de palabras de código (en orden secuencial) y se envían al descodificador de contenedores 22 correspondiente. Obsérvese que en este caso, el potencialmente complejo análisis sintáctico de palabras de código se puede realizar en un proceso de segundo plano y no es necesario que este espere a los descodificadores de contenedores. Los descodificadores de contenedores acceden a unas palabras de código ya analizadas sintácticamente, el potencialmente complejo análisis sintáctico de palabras
imagen30
5 de código ha dejado de ser parte de una solicitud a la memoria intermedia global. En su lugar, unas palabras de código ya analizadas sintácticamente se envían a los descodificadores de contenedores, que también pueden implementarse de una forma tal que solo se envían índices de palabras de código a los descodificadores de contenedores.
10 Intercalación de secuencias de bits de longitud fija
Una forma adicional de reducir la complejidad del descodificador de PIPE puede conseguirse cuando los descodificadores de contenedores 22 no leen palabras de código de longitud variable a partir de la memoria intermedia de bits global 38 sino que, en su lugar, siempre leen unas secuencias de longitud fija de bits a partir de la 15 memoria intermedia de bits global 38 y añaden estas secuencias de longitud fija de bits a una memoria intermedia de bits local, en donde cada descodificador de contenedores 22 está conectado con una memoria intermedia de bits local separada. Las palabras de código de longitud variable se leen entonces a partir de la memoria intermedia de bits local. Por lo tanto, el análisis sintáctico de palabras de código de longitud variable se puede realizar en paralelo, solo el acceso de secuencias de longitud fija de bits se ha de realizar de una forma sincronizada, pero un acceso de 20 este tipo de secuencias de longitud fija de bits es por lo general muy rápido, de tal modo que la complejidad de descodificación global puede reducirse para algunas arquitecturas. El número fijado de contenedores que se envían a una memoria intermedia de bits local particular puede ser diferente para diferentes memorias intermedias de bits locales y también puede variar con el tiempo, dependiendo de determinados parámetros como eventos en el descodificador de contenedores, la memoria intermedia de contenedores o la memoria intermedia de bits. No 25 obstante, el número de bits que se leen por un proceso particular no depende de los bits reales que se leen durante el acceso particular, que es la diferencia importante para la lectura de palabras de código de longitud variable. La lectura de las secuencias de longitud fija de bits es desencadenada por determinados eventos en las memorias intermedias de contenedores, los descodificadores de contenedores o las memorias intermedias de bits locales. Como un ejemplo, es posible solicitar la lectura de una nueva secuencia de longitud fija de bits cuando el número de 30 bits que se encuentran presentes en una memoria intermedia de bits conectada cae por debajo de un umbral previamente definido, en donde se pueden usar diferentes valores de umbral para diferentes memorias intermedias de bits. En el codificador, se ha de asegurar que las secuencias de longitud fija de contenedores se insertan en el mismo orden en el tren de bits, en el que se leen a partir del tren de bits en el lado de descodificador. También es posible combinar esta intercalación de secuencias de longitud fija con un control de retardo bajo similar a los que se
35 han explicado en lo que antecede. En lo sucesivo, se describe una forma para la intercalación de secuencias de longitud fija de bits.
La figura 11 muestra una ilustración de una estructura de codificador de PIPE que intercala secuencias de longitud fija de bits para dos o más codificadores de contenedores. En contraste con la figura 7, los codificadores de 40 contenedores 10 no están conectados con una única memoria intermedia de palabras de código. En su lugar, cada codificador de contenedores 10 está conectado con una memoria intermedia de bits 48 separada, que almacena bits para el tren de bits parcial correspondiente. Todas las memorias intermedias de bits 48 están conectadas con una memoria intermedia de bits global 51. La memoria intermedia de bits global 51 está conectada con una unidad de escritura de bits 53, la cual retira los bits 52 en el orden de codificación / descodificación de la memoria intermedia 45 de bits global y escribe los bits retirados 54 en el tren de bits 55. Tras un determinado evento en una memoria intermedia de bits particular 48 o el codificador de contenedores conectado 10 o la memoria intermedia de contenedores 8, la memoria intermedia de bits 48 envía una solicitud 49 a la memoria intermedia de bits global 51 mediante la cual se reserva un determinado número de bits en la memoria intermedia de bits global 51. Las solicitudes para la reserva de las secuencias de bits de longitud fija 49 se procesan en orden secuencial. La 50 memoria intermedia de bits global 51 representa una memoria intermedia de tipo primero en entrar primero en salir de una cierta forma; los bits que se reservan con anterioridad se escriben con anterioridad en el tren de bits. Se debería hacer notar que diferentes memorias intermedias de bits 48 pueden reservar una cantidad diferente de bits, que también puede variar con el tiempo sobre la base de unos símbolos ya codificados; pero el número de bits que son reservados por una solicitud particular se conoce en el momento en el que se envía la solicitud a la memoria
55 intermedia de bits global.
En particular, las memorias intermedias de bits 48 y la memoria intermedia de bits global 51 se operan tal como se describe en lo sucesivo. La cantidad de bits que es reservada por una memoria intermedia de bits particular 48 se indica como Nx. Este número de bits Nx puede ser diferente para diferentes memorias intermedias de bits 48 y 60 también puede variar con el tiempo. El número de bits Nx que son reservados por una memoria intermedia de bits particular 48 puede ser fijo con el tiempo. Las reservas para un número fijado Nx de bits 49 se desencadenan sobre la base del número de bits Mx en las memorias intermedias de bits 48, el número de bits Nx para las solicitudes de reserva, y la longitud de palabra de código máxima Lx asociada. Obsérvese que cada codificador de contenedores 10 puede asociarse con una longitud de palabra de código máxima Lx diferente. Si un contenedor 7 se envía a una

Claims (3)

  1. imagen1
    dependiendo de una posición del nivel de coeficiente de transformada absoluto que se va a descomponer en la actualidad en el orden de exploración, o sobre la base de una evaluación de los niveles de coeficiente de transformada absolutos ya reconstruidos de coeficientes de transformada en las proximidades o bien espacialmente o bien en el orden de exploración de la posición del nivel de coeficiente de transformada absoluto que se va a componer en la actualidad.
  2. 13. Método de descodificación por entropía que comprende mediante descodificación de VLC, reconstruir por palabras de código los símbolos de origen de una primera subsecuencia (204) de símbolos de origen a partir de palabras de código de un primer tren de bits (206); mediante descodificación aritmética, reconstruir una segunda subsecuencia (208) de símbolos de origen; componer una secuencia (226) de elementos de sintaxis que tienen un intervalo de valores el cual está subdividido en una secuencia de N particiones (14013) a partir de la primera subsecuencia (204) de símbolos de origen y la segunda subsecuencia (208) de símbolos de origen mediante la composición de forma individual de cada elemento de sintaxis a partir de un número respectivo n de símbolos de origen, mediante, para por lo menos un subgrupo de los elementos de sintaxis, la determinación del número respectivo n de símbolos de origen si con i = 1 ... n dependiendo de en cual de la secuencia de N particiones (14013) en las cuales está subdividido un intervalo de valores de los elementos de sintaxis respectivos, cae un valor z de los elementos de sintaxis respectivos, mediante la adición de los valores del número respectivo de símbolos de origen si de 1 a n siempre que el valor de si se corresponda con un intervalo de la iésima partición con el fin de obtener el valor del elemento de sintaxis z, en el que la composición (224) comprende recuperar todos los símbolos de origen sx con x siendo miembro de un primer subconjunto de {1 ... N} a partir de la primera subsecuencia (204) y todos los símbolos de origen sy con y siendo miembro de un segundo subconjunto de {1 ... N} que es disjunto con respecto al primer subconjunto, a partir de la segunda subsecuencia (208), caracterizado por que el subgrupo de los elementos de sintaxis abarca unos niveles de coeficiente de transformada absolutos de coeficientes de transformada absolutos de los bloques de transformada de una imagen con los niveles de coeficiente de transformada absolutos de un bloque de transformada respectivo estando dispuestos dentro de la secuencia
    (138) de elementos de sintaxis de acuerdo con una trayectoria de exploración que conduce a través de los coeficientes de transformada absolutos de los bloques de transformada respectivos, en el que la composición comprende adaptar uno o más de los límites entre las particiones durante la composición de los niveles de coeficiente de transformada absolutos de los coeficientes de transformada absolutos de un bloque de transformada respectivo dependiendo de unos niveles de coeficiente de transformada absolutos ya reconstruidos de coeficientes de transformada absolutos de los bloques de transformada respectivos precedentes en el orden de exploración o dependiendo de una posición del nivel de coeficiente de transformada absoluto que se va a componer en la actualidad en el orden de exploración, o sobre la base de una evaluación de los niveles de coeficiente de transformada absolutos ya reconstruidos de coeficientes de transformada en las proximidades o bien espacialmente o bien en el orden de exploración de la posición del nivel de coeficiente de transformada absoluto que se va a componer en la actualidad.
  3. 14. Un programa informático que tiene un código de programa para realizar, cuando se ejecuta en un ordenador, un método de acuerdo con la reivindicación 12 o 13.
    63
ES14160496.7T 2011-01-14 2012-01-12 Esquema de codificación y descodificación por entropía Active ES2566916T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161432884P 2011-01-14 2011-01-14
US201161432884P 2011-01-14

Publications (1)

Publication Number Publication Date
ES2566916T3 true ES2566916T3 (es) 2016-04-18

Family

ID=45491598

Family Applications (5)

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

Family Applications After (4)

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
ES14160512.1T Active ES2671482T3 (es) 2011-01-14 2012-01-12 Esquema de codificación entrópica
ES12700329.1T Active ES2607982T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y decodificación entrópica
ES18160276T Active ES2759513T3 (es) 2011-01-14 2012-01-12 Esquema de codificación y decodificación entrópica

Country Status (14)

Country Link
US (17) US9083374B2 (es)
EP (7) EP3349360B1 (es)
JP (8) JP5809292B2 (es)
KR (13) KR102393305B1 (es)
CN (7) CN103404035B (es)
DK (5) DK3349360T3 (es)
ES (5) ES2566916T3 (es)
HU (5) HUE046377T2 (es)
NO (1) NO2956175T3 (es)
PL (5) PL2768145T3 (es)
PT (3) PT2760138T (es)
TR (1) TR201807771T4 (es)
TW (9) TWI505650B (es)
WO (1) WO2012095488A2 (es)

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101753273B1 (ko) * 2010-03-10 2017-07-03 톰슨 라이센싱 변환 선택을 갖는 비디오 코딩 및 디코딩을 위한 제약 변환 방법 및 장치
EP3349360B1 (en) * 2011-01-14 2019-09-04 GE Video Compression, LLC Entropy encoding and decoding scheme
US9661326B2 (en) * 2011-06-28 2017-05-23 Samsung Electronics Co., Ltd. Method and apparatus for entropy encoding/decoding
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 夏普株式会社 图像解码装置、图像解码方法以及图像编码装置
US9270988B2 (en) 2011-11-08 2016-02-23 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients
WO2013070974A2 (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
CN107302702B (zh) 2012-01-20 2020-06-23 Ge视频压缩有限责任公司 从数据流解码具有变换系数级别的多个变换系数的装置
US9635358B2 (en) 2012-01-21 2017-04-25 Google Technology Holdings LLC Method of determining binary codewords for transform coefficients
WO2013109997A1 (en) 2012-01-21 2013-07-25 General Instrument Corporation Method of determining binary codewords for transform coefficients
US20130188729A1 (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
CN110602509A (zh) 2012-02-04 2019-12-20 谷歌技术控股有限责任公司 用于最末重要系数位置编码中的上下文减少的设备和方法
US9167245B2 (en) 2012-02-05 2015-10-20 Google Technology Holdings LLC 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
US11259020B2 (en) 2013-04-05 2022-02-22 Qualcomm Incorporated Determining palettes 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
CA2928495C (en) 2013-10-14 2020-08-18 Microsoft Technology Licensing, Llc Features of intra block copy prediction mode for video and image coding and decoding
EP3058740B1 (en) 2013-10-14 2020-06-03 Microsoft Technology Licensing, LLC Features of base color index map mode for video and image coding and decoding
WO2015054813A1 (en) 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Encoder-side options for intra block copy prediction mode for video and image coding
KR102258427B1 (ko) 2014-01-03 2021-06-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
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
EP4354856A3 (en) 2014-06-19 2024-06-19 Microsoft Technology Licensing, LLC Unified intra block copy and inter prediction modes
US10505826B2 (en) * 2014-09-26 2019-12-10 Oracle International Corporation Statistical pattern correlation of events in cloud deployments using codebook approach
WO2016049839A1 (en) 2014-09-30 2016-04-07 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US10432945B2 (en) 2014-11-04 2019-10-01 Samsung Electronics Co., Ltd. Probability update method for binary arithmetic coding/decoding, and entropy coder/decoder using the same
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
AU2015385634B2 (en) * 2015-03-10 2019-07-18 Huawei Technologies Co., Ltd. Picture prediction method and related apparatus
CN106664405B (zh) 2015-06-09 2020-06-09 微软技术许可有限责任公司 用调色板模式对经逸出编码的像素的稳健编码/解码
GB2542707B (en) * 2015-07-03 2020-02-12 Sisp Tech Ltd Data processing method and apparatus
US10939104B2 (en) * 2015-10-13 2021-03-02 Samsung Electronics Co., Ltd. Method and device for encoding or decoding image
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
CN108432170B (zh) * 2016-01-29 2021-08-17 麻省理工学院 用于多码分布式存储的装置和方法
US9792044B2 (en) * 2016-02-12 2017-10-17 Oracle International Corporation Decompression history buffer read/write pipelines
EP3208789B1 (en) * 2016-02-22 2020-08-05 Eshard Method of protecting a circuit against a side-channel analysis
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 세종대학교산학협력단 영상의 부호화/복호화 방법 및 장치
KR102257829B1 (ko) * 2017-04-13 2021-05-28 엘지전자 주식회사 영상의 부호화/복호화 방법 및 이를 위한 장치
CN107483059B (zh) * 2017-07-31 2020-06-12 广东工业大学 一种基于动态霍夫曼树的多路数据编解码方法及装置
US11831910B2 (en) * 2017-08-21 2023-11-28 Electronics And Telecommunications Research Institute Method and apparatus for encoding/decoding video, and recording medium storing bit stream
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
CA3100839C (en) * 2018-05-22 2022-06-21 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, decoding method, and picture compression program
WO2019235366A1 (ja) * 2018-06-06 2019-12-12 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
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
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
WO2020080698A1 (ko) 2018-10-19 2020-04-23 삼성전자 주식회사 영상의 주관적 품질을 평가하는 방법 및 장치
KR102285738B1 (ko) 2018-10-19 2021-08-05 삼성전자주식회사 영상의 주관적 품질을 평가하는 방법 및 장치
KR102525578B1 (ko) 2018-10-19 2023-04-26 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
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
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
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
WO2020080873A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Method and apparatus for streaming data
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 심인보 데이터 무손실 압축 장치 및 그 방법
US20240080480A1 (en) * 2019-10-07 2024-03-07 Lg Electronics Inc. Entropy coding method and device in video/image coding system
WO2021071187A1 (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 복호화 방법, 및 장치
US10931303B1 (en) * 2020-03-04 2021-02-23 Arm Limited Data processing system
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
FR3114717B1 (fr) * 2020-09-30 2023-10-13 Fond B Com Procédé et dispositif électronique de décodage d’un flux de données, programme d’ordinateur et flux de données associés
JP7521603B2 (ja) 2020-12-15 2024-07-24 日本電気株式会社 符号化装置、復号装置、符号化方法、復号方法およびプログラム
KR20220090887A (ko) 2020-12-23 2022-06-30 삼성전자주식회사 이미지 처리 장치 및 이미지 처리 장치의 동작 방법
CN116918328A (zh) * 2021-02-25 2023-10-20 株式会社Kt 视频信号编码/解码方法和存储由编码方法生成的数据流的记录介质
WO2022192902A1 (en) * 2021-03-11 2022-09-15 Innopeak Technology, Inc. Remaining level binarization for video coding
US11928566B2 (en) 2022-01-19 2024-03-12 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熵编码的上下文概率处理电路、方法及相关装置
AU2023320877A1 (en) * 2022-08-09 2025-02-20 Nokia Technologies Oy Security key management in dual connectivity operation
CN115882867B (zh) * 2023-03-01 2023-05-12 山东水发紫光大数据有限责任公司 一种基于大数据的数据压缩存储方法
US20250070832A1 (en) * 2023-08-25 2025-02-27 Samsung Display Co., Ltd. System and method for group probability-based prefix modification of known symbol probability distributions
US12308037B2 (en) * 2023-10-18 2025-05-20 Cisco Technology, Inc. Reduced multidimensional indices compression for audio codec system
CN118118033B (zh) * 2024-01-22 2024-08-16 北京邮电大学 基于语义信源的算术编译码方法及相关设备
CN118518676A (zh) * 2024-07-09 2024-08-20 深圳市鹏乐智能系统有限公司 基于人工智能的led芯片缺陷检测方法及系统

Family Cites Families (59)

* 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
WO1995001633A1 (fr) * 1993-06-30 1995-01-12 Sony Corporation Procede et appareil de codage de signaux numeriques, procede et appareil de decodage des signaux codes, et support d'enregistrement des signaux codes
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 松下電器産業株式会社 画像符号化方法、画像復号化方法及びその装置
EP3490154B1 (en) * 2001-08-31 2021-03-17 Panasonic Intellectual Property Corporation of America Picture decoding method and decoding device
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
JP4313757B2 (ja) * 2002-05-02 2009-08-12 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン 画像および/またはビデオ符号器と復号器における変換係数を符号化するための方法と装置および対応するコンピュータプログラムと対応するコンピュータによる読み出し可能な記憶媒体
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 算術復号装置、算術符号化装置、算術符号化・復号装置、携帯端末装置、動画像撮影装置、及び、動画像記録・再生装置
CN101055719B (zh) * 2004-09-17 2011-02-02 广州广晟数码技术有限公司 编码和发送多声道数字音频信号的方法
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
US20080072261A1 (en) * 2006-06-16 2008-03-20 Ralston John D 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
WO2008129021A2 (en) 2007-04-18 2008-10-30 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
KR101375668B1 (ko) * 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
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
JPWO2010052833A1 (ja) * 2008-11-07 2012-03-29 三菱電機株式会社 画像符号化装置及び画像復号装置
JP5180782B2 (ja) * 2008-11-11 2013-04-10 日本電信電話株式会社 並列分散情報源符号化システム及び並列分散情報源符号化・復号化方法
JP5492206B2 (ja) * 2009-07-27 2014-05-14 株式会社東芝 画像符号化方法および画像復号方法、ならびに、画像符号化装置および画像復号装置
US8410959B2 (en) * 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data
EP2614592B1 (en) * 2010-09-09 2018-06-27 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy encoding and decoding scheme
EP3349360B1 (en) * 2011-01-14 2019-09-04 GE Video Compression, LLC Entropy encoding and decoding scheme
US9871537B2 (en) * 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
KR101647244B1 (ko) * 2012-01-30 2016-08-09 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 이진 산술 코딩 방식
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
HUE037749T2 (hu) 2018-09-28
EP3644516A1 (en) 2020-04-29
US20130300591A1 (en) 2013-11-14
JP2020099077A (ja) 2020-06-25
PT3349360T (pt) 2019-12-09
KR102393305B1 (ko) 2022-05-02
TWI640169B (zh) 2018-11-01
US10826524B2 (en) 2020-11-03
EP2768144A3 (en) 2014-10-08
US20180019762A1 (en) 2018-01-18
KR102095172B1 (ko) 2020-03-31
JP2021100266A (ja) 2021-07-01
US20160308555A1 (en) 2016-10-20
HK1202000A1 (en) 2015-09-11
KR102438562B1 (ko) 2022-08-31
TW202315401A (zh) 2023-04-01
CN107196662B (zh) 2021-07-30
TW201624928A (zh) 2016-07-01
TWI753434B (zh) 2022-01-21
HUE027907T2 (en) 2016-11-28
US9083374B2 (en) 2015-07-14
TW202029746A (zh) 2020-08-01
KR20130140840A (ko) 2013-12-24
PT2760138T (pt) 2018-06-05
EP2664070A2 (en) 2013-11-20
EP2664070B1 (en) 2016-11-02
US20240413836A1 (en) 2024-12-12
PL2760138T3 (pl) 2018-08-31
TWI575886B (zh) 2017-03-21
JP2019041406A (ja) 2019-03-14
US20200228135A1 (en) 2020-07-16
JP2016007074A (ja) 2016-01-14
CN107342770B (zh) 2020-11-03
JP6990730B2 (ja) 2022-01-12
US9473169B2 (en) 2016-10-18
CN107317586B (zh) 2020-11-06
EP3349360A1 (en) 2018-07-18
TWI789089B (zh) 2023-01-01
EP2768145B1 (en) 2016-03-23
TWI679878B (zh) 2019-12-11
KR101785898B1 (ko) 2017-10-16
JP2020102873A (ja) 2020-07-02
US20210028794A1 (en) 2021-01-28
JP2023063501A (ja) 2023-05-09
DK2768144T3 (da) 2016-04-04
EP3349360B1 (en) 2019-09-04
KR101955143B1 (ko) 2019-03-06
DK2768145T3 (da) 2016-04-04
KR20210024684A (ko) 2021-03-05
KR20200034808A (ko) 2020-03-31
ES2759513T3 (es) 2020-05-11
TW202446063A (zh) 2024-11-16
KR20170060169A (ko) 2017-05-31
KR102175762B1 (ko) 2020-11-09
US20160373131A1 (en) 2016-12-22
HUE028417T2 (en) 2016-12-28
KR20250079245A (ko) 2025-06-04
EP2768145A3 (en) 2014-10-08
TW201731224A (zh) 2017-09-01
JP2017118547A (ja) 2017-06-29
KR20230145538A (ko) 2023-10-17
JP6849835B2 (ja) 2021-03-31
KR101741296B1 (ko) 2017-05-29
EP2760138B1 (en) 2018-03-07
US10855309B2 (en) 2020-12-01
TWI849597B (zh) 2024-07-21
KR20190021501A (ko) 2019-03-05
US20190305795A1 (en) 2019-10-03
KR101648688B1 (ko) 2016-08-16
US10581454B2 (en) 2020-03-03
TW202037154A (zh) 2020-10-01
US10419017B2 (en) 2019-09-17
DK3349360T3 (da) 2019-12-09
CN103404035A (zh) 2013-11-20
CN107395212A (zh) 2017-11-24
US9647683B2 (en) 2017-05-09
JP2014502827A (ja) 2014-02-03
NO2956175T3 (es) 2018-03-03
US10224953B2 (en) 2019-03-05
US20200186164A1 (en) 2020-06-11
WO2012095488A2 (en) 2012-07-19
ES2671482T3 (es) 2018-06-06
US20160149588A1 (en) 2016-05-26
JP7247244B2 (ja) 2023-03-28
KR20200127272A (ko) 2020-11-10
ES2607982T3 (es) 2017-04-05
EP2768144B1 (en) 2016-03-23
PL2768144T3 (pl) 2016-07-29
PL2768145T3 (pl) 2016-07-29
US20150270850A1 (en) 2015-09-24
CN107425855A (zh) 2017-12-01
TW201236380A (en) 2012-09-01
HK1201384A1 (en) 2015-08-28
PT2664070T (pt) 2016-12-22
US10644719B2 (en) 2020-05-05
KR102588145B1 (ko) 2023-10-12
EP2760138A2 (en) 2014-07-30
DK2664070T3 (en) 2017-01-09
KR20150054013A (ko) 2015-05-19
US9806738B2 (en) 2017-10-31
DK2760138T3 (en) 2018-06-06
US9698818B2 (en) 2017-07-04
JP6479060B2 (ja) 2019-03-06
EP2760138A3 (en) 2014-10-08
HK1201999A1 (en) 2015-09-11
US10404272B2 (en) 2019-09-03
US20190334546A1 (en) 2019-10-31
KR20220123748A (ko) 2022-09-08
TW201924337A (zh) 2019-06-16
TWI747091B (zh) 2021-11-21
CN107425855B (zh) 2021-02-02
US20220416810A1 (en) 2022-12-29
TR201807771T4 (tr) 2018-06-21
PL3349360T3 (pl) 2020-03-31
WO2012095488A3 (en) 2012-12-13
US11405050B2 (en) 2022-08-02
EP2768145A2 (en) 2014-08-20
US9252806B2 (en) 2016-02-02
ES2566917T3 (es) 2016-04-18
CN103404035B (zh) 2017-05-10
JP5809292B2 (ja) 2015-11-10
HUE046377T2 (hu) 2020-03-30
JP6676731B2 (ja) 2020-04-08
US20170207797A1 (en) 2017-07-20
PL2664070T3 (pl) 2017-03-31
CN107317585B (zh) 2020-09-29
EP3703263A1 (en) 2020-09-02
TW202211683A (zh) 2022-03-16
US20190013822A1 (en) 2019-01-10
KR20170117217A (ko) 2017-10-20
HK1259972A1 (en) 2019-12-13
US20180034472A1 (en) 2018-02-01
TWI505650B (zh) 2015-10-21
KR20200045578A (ko) 2020-05-04
KR101955142B1 (ko) 2019-03-06
US10090856B2 (en) 2018-10-02
KR20170117216A (ko) 2017-10-20
JP6077615B2 (ja) 2017-02-08
CN107196662A (zh) 2017-09-22
CN107342770A (zh) 2017-11-10
HUE030952T2 (en) 2017-06-28
KR102815709B1 (ko) 2025-06-02
KR102222957B1 (ko) 2021-03-04
US20190097649A1 (en) 2019-03-28
CN107395212B (zh) 2020-09-29
EP2768144A2 (en) 2014-08-20
CN107317585A (zh) 2017-11-03
CN107317586A (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
ES2566916T3 (es) Esquema de codificación y descodificación por entropía
EP2614592B1 (en) Entropy encoding and decoding scheme
HK1244114B (zh) 熵編碼設備和方法、熵解碼設備和方法、及存儲介質