ES2759513T3 - Entropic Encoding and Decoding Scheme - Google Patents

Entropic Encoding and Decoding Scheme Download PDF

Info

Publication number
ES2759513T3
ES2759513T3 ES18160276T ES18160276T ES2759513T3 ES 2759513 T3 ES2759513 T3 ES 2759513T3 ES 18160276 T ES18160276 T ES 18160276T ES 18160276 T ES18160276 T ES 18160276T ES 2759513 T3 ES2759513 T3 ES 2759513T3
Authority
ES
Spain
Prior art keywords
binary
buffer
sequence
source symbols
absolute
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
ES18160276T
Other languages
Spanish (es)
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 ES2759513T3 publication Critical patent/ES2759513T3/en
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

Abstract

Aparato de codificación entrópica que comprende un descomponedor (136) configurado para convertir una secuencia (138) de elementos de sintaxis que tienen un rango de valores que se subdivide en una secuencia de N particiones (1401-3) en una secuencia (106) de símbolos fuente (106) descomponiendo individualmente al menos un subgrupo de los elementos de sintaxis en un número respectivo n de símbolos fuente si con i = 1...n, dependiendo el número respectivo n de símbolos fuente de en cuál de las secuencias de N particiones (1401-3) cae un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del número respectivo de símbolos fuente si produce z, y, si n>1, para todo i = 1...n-1, el valor de si corresponde a un rango de la i-ésima partición; un subdivisor (100) configurado para subdividir la secuencia (106) de símbolos fuente en una primera subsecuencia (108) de símbolos fuente y una segunda subsecuencia (110) de símbolos fuente de modo que todos los símbolos fuente sx, siendo x un miembro de un primer subconjunto de {1...N}, estén contenidos dentro de la primera subsecuencia (108) y todos los símbolos fuente sy, siendo y un miembro de un segundo subconjunto de {1...N} que es disjunto respecto al primer subconjunto, estén contenidos dentro de la segunda subsecuencia (110); un codificador VLC (102) configurado para codificar de una manera a nivel de símbolos los símbolos fuente de la primera subsecuencia (108); y un codificador aritmético (104) configurado para codificar la segunda subsecuencia (110) de símbolos fuente, caracterizado porque el subgrupo de los elementos de sintaxis abarca niveles de coeficiente de transformada absoluta de coeficientes de transformada absoluta de bloques de transformada de una imagen con los niveles de coeficiente de transformada absoluta de un bloque respectivo de transformada que representa un residual de predicción y está dispuesto dentro de la secuencia (138) de elementos de sintaxis de acuerdo con una trayectoria de escaneo que conduce a través de los coeficientes de transformada absoluta de los respectivos bloques de transformada, en donde el descomponedor se configura para adaptar uno o más de límites entre las divisiones durante la descomposición de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un respectivo bloque de transformada dependiendo de niveles de coeficiente de transformada absoluta ya codificados de coeficientes de transformada absoluta de los respectivos bloques de transformada precedentes en el orden de escaneo o dependiendo de una posición del nivel de coeficiente de transformada absoluta a descomponer actualmente en el orden de escaneo, o basado en una evaluación de los niveles de coeficientes de transformada absoluta ya reconstruidos de coeficientes de transformada cercanos, ya sea espacialmente o en orden de escaneo, a la posición del nivel de coeficiente de transformada absoluta a descomponer actualmente.Entropic coding apparatus comprising a decomposer (136) configured to convert a sequence (138) of syntax elements having a range of values that is subdivided into a sequence of N partitions (1401-3) into a sequence (106) of source symbols (106) individually decomposing at least a subset of the syntax elements into a respective number n of source symbols if with i = 1 ... n, the respective number n of source symbols depending on which of the sequences in N partitions (1401-3) drops a value z of the respective syntax elements, so that a sum of values of the respective number of source symbols if it produces z, and, if n> 1, for all i = 1 ... n -1, the value of if corresponds to a rank of the i-th partition; a subdivider (100) configured to subdivide the source symbol sequence (106) into a first source symbol subsequence (108) and a second source symbol subsequence (110) such that all source symbols sx, x being a member of a first subset of {1 ... N}, are contained within the first subsequence (108) and all source symbols sy, where y is a member of a second subset of {1 ... N} that is disjoint with respect to first subset, are contained within the second subsequence (110); a VLC encoder (102) configured to encode in a symbol level manner the source symbols of the first subsequence (108); and an arithmetic encoder (104) configured to encode the second subsequence (110) of source symbols, characterized in that the subgroup of the syntax elements encompasses absolute transform coefficient levels of absolute transform coefficients of image transform blocks with the Absolute transform coefficient levels of a respective transform block representing a prediction residual and arranged within the sequence (138) of syntax elements according to a scanning path leading through the absolute transform coefficients of the respective transform blocks, where the decomposer is configured to adapt one or more of the boundaries between the divisions during the decomposition of the absolute transform coefficient levels of the absolute transform coefficients of a respective transform block depending on coefficient levels of absolute transformation already codi Absolute transform coefficient plots of the respective preceding transform blocks in the scanning order or depending on a position of the absolute transform coefficient level to be currently decomposed in the scanning order, or based on an evaluation of the coefficient levels of Absolute transform already reconstructed from close transform coefficients, either spatially or in scanning order, to the position of the absolute transform coefficient level to be decomposed currently.

Description

DESCRIPCIÓNDESCRIPTION

Esquema de codificación y decodificación entrópicaEntropic Encoding and Decoding Scheme

La presente invención se refiere a codificación y decodificación entrópica y puede usarse en aplicaciones tales como, por ejemplo, compresión de vídeo y audio.The present invention relates to entropic encoding and decoding and can be used in applications such as, for example, video and audio compression.

La codificación entrópica, en general, puede considerarse como la forma más genérica de compresión de datos sin pérdida. La compresión sin pérdida se dirige a representar datos discretos con menos bits que los necesarios para la representación de los datos originales pero sin ninguna pérdida de información. Los datos discretos pueden proporcionarse en forma de texto, gráficos, imágenes, vídeo, audio, voz, facsímil, datos médicos, datos meteorológicos, datos financieros o cualquier otra forma de datos digitales.Entropic encoding, in general, can be considered as the most generic form of lossless data compression. Lossless compression is intended to represent discrete data with fewer bits than is required to represent the original data but without any loss of information. Discrete data can be provided in the form of text, graphics, images, video, audio, voice, facsimile, medical data, weather data, financial data, or any other form of digital data.

En la codificación entrópica, las características de alto nivel específicas de la fuente de datos discreta subyacente frecuentemente se desprecian. Consecuentemente, cualquier fuente de datos se considera para proporcionarse como una secuencia de símbolos de fuente que toman valores en un alfabeto m-ario dado y que se caracteriza por una distribución de probabilidad (discreta) correspondiente {p- ..., pm}. En estos ajustes abstractos, la delimitación inferior de cualquier método de codificación entrópica en términos de longitud de palabra de código esperada en bits por símbolo se proporciona por la entropíaIn entropic encoding, the high-level characteristics specific to the underlying discrete data source are often neglected. Consequently, any data source is considered to be provided as a sequence of font symbols taking values in a given m-ary alphabet and characterized by a corresponding (discrete) probability distribution {p- ..., pm}. In these abstract settings, the lower bounding of any entropic encoding method in terms of expected codeword length in bits per symbol is provided by entropy

- Z Pi lo^2 Pi - Z P i lo ^ 2 P i

H = i =1 (A1) Los códigos de Huffman y 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 Huffman son relativamente fáciles de construir. La propiedad más atractiva de los códigos de Huffman es que su implementación puede realizarse eficientemente mediante el uso de tablas de código de longitud variable (VLC). Sin embargo, cuando se trabaja con estadísticas de origen variable en el tiempo, es decir, probabilidades de símbolos cambiantes, la adaptación del código de Huffman y sus tablas de VLC correspondientes es bastante exigente, tanto en términos de complejidad algorítmica como en términos de costes de implementación. También, en el caso de tener un valor de alfabeto dominante con pk > 0,5, la redundancia del código de Huffman correspondiente (sin el uso de ninguna extensión de alfabeto tal como codificación por longitud de serie) puede ser bastante sustancial. Otros inconvenientes de los códigos de Huffman vienen dados por el hecho de que en caso de tratar con modelación de probabilidad de orden superior, pueden requerirse múltiples conjuntos de tablas de VLC. La codificación aritmética, por otro lado, aunque es sustancialmente más compleja que la VLC, ofrece la ventaja de un manejo más consistente y adecuado cuando se trata con modelación de probabilidad adaptativa y de orden superior así como con el caso de distribuciones de probabilidad altamente sesgadas. Realmente, esta característica básicamente es el resultado del hecho de que la codificación aritmética proporciona un mecanismo, al menos conceptualmente, para mapear cualquier valor dado de probabilidad estimado en una forma más o menos directa a una parte de la palabra de código resultante. Proporcionándose con una interfaz de este tipo, la codificación aritmética permite una separación limpia entre las tareas de modelación de probabilidad y estimación de probabilidad, por un lado, y la codificación entrópica real, es decir, mapeados de unos símbolos a palabras de código, por otro lado. H = i = 1 (A1) Huffman codes and arithmetic codes are well-known examples of practical codes capable of approaching the entropy limit (in a certain sense). For a fixed probability distribution, Huffman codes are relatively easy to construct. The most attractive property of Huffman codes is that they can be implemented efficiently using variable length code tables (VLC). However, when working with statistics of variable origin over time, that is, probabilities of changing symbols, the adaptation of the Huffman code and its corresponding VLC tables is quite demanding, both in terms of algorithmic complexity and in terms of costs. of implementation. Also, in the case of having a dominant alphabet value with pk > 0.5, the redundancy of the corresponding Huffman code (without the use of any alphabet extension such as string length encoding) can be quite substantial. Other drawbacks to Huffman codes come from the fact that in dealing with higher order probability modeling, multiple sets of VLC tables may be required. Arithmetic coding, on the other hand, while substantially more complex than VLC, offers the advantage of more consistent and appropriate handling when dealing with adaptive and higher-order probability modeling as well as highly skewed probability distributions. . Actually, this feature is basically the result of the fact that arithmetic coding provides a mechanism, at least conceptually, to map any given estimated probability value in a more or less direct way to a part of the resulting codeword. Providing itself with such an interface, arithmetic coding allows a clean separation between probability modeling and probability estimation tasks, on the one hand, and actual entropic coding, that is, mapping from symbols to codewords, by other side.

Una alternativa a la codificación aritmética y a la codificación VLC es la codificación PIPE. Para ser más precisos, en la codificación PIPE, el intervalo unitario se particiona en un pequeño conjunto de intervalos de probabilidad disjuntos para canalizar el proceso de codificación junto con las estimaciones de probabilidad de variables de símbolos aleatorios. De acuerdo con este particionamiento, una secuencia de entrada de símbolos fuente discretos con tamaños de alfabeto arbitrarios puede mapearse a una secuencia de símbolos de alfabeto y cada uno de los símbolos de alfabeto se asigna a un intervalo de probabilidad particular que se codifica, a su vez, mediante un proceso de codificación entrópico especialmente dedicado. Estando representado cada uno de los intervalos por una probabilidad fija, el proceso de codificación de entropía de particionamiento de intervalo de probabilidad (PIPE) puede basarse en el diseño y aplicación de códigos de longitud simples de variable a variable. La modelación de probabilidad puede ser fija o adaptativa. Sin embargo, aunque la codificación PIPE es significativamente menos compleja que la codificación aritmética, tiene aún una complejidad más alta que la codificación VLC.An alternative to arithmetic coding and VLC coding is PIPE coding. To be more precise, in PIPE coding, the unit interval is partitioned into a small set of discrete probability intervals to channel the coding process along with the probability estimates of random symbol variables. According to this partitioning, an input sequence of discrete source symbols with arbitrary alphabet sizes can be mapped to a sequence of alphabet symbols, and each of the alphabet symbols is assigned to a particular probability range that is encoded, its time, through a specially dedicated entropic coding process. With each interval represented by a fixed probability, the probability interval partitioning entropy (PIPE) encoding process can be based on the design and application of simple variable-to-variable length codes. Probability modeling can be either fixed or adaptive. However, although PIPE encoding is significantly less complex than arithmetic encoding, it still has a higher complexity than VLC encoding.

Por lo tanto, sería favorable tener disponible un esquema de codificación entrópico que permita conseguir un compromiso mejor entre la complejidad de codificación por un lado y la eficiencia de compresión por otro lado, incluso cuando se compara con la codificación PIPE que ya combina las ventajas tanto de la codificación aritmética como de la codificación VLC.Therefore, it would be favorable to have an entropic encoding scheme available that allows a better compromise between the encoding complexity on the one hand and the compression efficiency on the other hand, even when compared to PIPE encoding which already combines the advantages of both arithmetic coding as well as VLC coding.

Además, en general, sería favorable tener un esquema de codificación entrópica disponible que posibilite conseguir una mejor eficiencia de compresión per sé, a una complejidad de codificación moderada. In addition, in general, it would be favorable to have an entropic coding scheme available that allows achieving a better compression efficiency per se, at a moderate coding complexity.

El documento WO 2008/129021 A2 se refiere a la compresión escalable de secuencias en malla en 3D consistentes en el tiempo. En relación a la cuantificación y codificación entrópica, el documento describe que los errores de previsión de los vectores de la malla se comprimen componente a componente. En particular, los componentes se mapean a la cantidad de números enteros, es decir con signo, y un valor. Si el valor es mayor que imax, el valor se descompone en dos partes, en concreto imax y valor-imax. imax y el valor, siempre y cuando sea menor que imax, se codifica por codificación aritmética. La cantidad-imax se codifica por codificación Golomb.WO 2008/129021 A2 relates to scalable compression of time-consistent 3D mesh sequences. Regarding the quantification and entropic coding, the document describes that the forecast errors of the mesh vectors are compressed component by component. In particular, the components are mapped to the number of integers, that is, signed, and a value. If the value is greater than imax, the value is decomposed into two parts, namely imax and imax-value. imax and the value, as long as it is less than imax, is encoded by arithmetic encoding. The imax-quantity is encoded by Golomb encoding.

Así, es un objeto de la presente invención proporcionar un concepto de codificación entrópico que satisfaga la demanda anteriormente identificada, es decir permita conseguir un mejor compromiso entre la complejidad de codificación por un lado y la eficiencia de compresión por otro lado.Thus, it is an object of the present invention to provide an entropic coding concept that satisfies the previously identified demand, that is, allows to achieve a better compromise between the coding complexity on the one hand and the compression efficiency on the other hand.

Este objeto se consigue por un aparato según la reivindicación 1 o 3 y un método según la reivindicación 5 o 6. La presente invención se basa en la idea de la descomposición de un intervalo de valores de los elementos de sintaxis respectivos en una secuencia de n particiones con codificación de los componentes de los z valores del elemento de sintaxis que caen dentro de las particiones respectivas por separado con al menos una por codificación VLC y con al menos una por codificación aritmética.This object is achieved by an apparatus according to claim 1 or 3 and a method according to claim 5 or 6. The present invention is based on the idea of decomposing a range of values of the respective syntax elements into a sequence of n encoded partitions of the components of the z syntax element values that fall within the respective partitions separately with at least one by VLC encoding and at least one by arithmetic encoding.

En consecuencia, de acuerdo con las realizaciones de la presente invención, los elementos de sintaxis se descomponen en un número respectivo de n símbolos fuente si, siendo i=1...n, dependiendo el número n respectivo de símbolos fuente de en cuál de una secuencia de n particiones (140i -3) dentro de la que se subdivide un intervalo de valores de los elementos de sintaxis respectivos, cae dentro un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del número respectivo de símbolos fuente si produce z, y, si n>1, para todo i=1.n-1, el valor de si corresponde a un intervalo de la i-ésima partición.Accordingly, in accordance with the embodiments of the present invention, the syntax elements are decomposed into a respective number of n source symbols if, where i = 1 ... n, the respective number n of source symbols depending on which of a sequence of n partitions (140i -3) into which a range of values of the respective syntax elements is subdivided, falls within a z-value of the respective syntax elements, such that a sum of values of the respective number of source symbols if it produces z, and, if n> 1, for all i = 1.n-1, the value of si corresponds to an interval of the i-th partition.

Los aspectos preferidos de la presente invención son el objeto de las reivindicaciones dependientes adjuntas.Preferred aspects of the present invention are the subject of the appended dependent claims.

Se describen a continuación realizaciones preferidas de la presente invención con respecto a las figuras. Estas realizaciones representan, en la medida en que su materia objeto no está cubierta por las reivindicaciones, únicamente ejemplos útiles para entender la invención. Entre las figuras,Preferred embodiments of the present invention are described below with respect to the figures. These embodiments represent, insofar as their subject matter is not covered by the claims, only useful examples to understand the invention. Among the figures,

La Fig. 1a muestra un diagrama de bloques de un aparato de codificación entrópica de acuerdo con una realización;Fig. 1a shows a block diagram of an entropic coding apparatus according to one embodiment;

La Fig. 1b muestra un diagrama esquemático que ilustra una descomposición posible de elementos de sintaxis en símbolos fuente de acuerdo con una realización;Fig. 1b shows a schematic diagram illustrating a possible decomposition of syntax elements into source symbols according to one embodiment;

La Fig. 1c muestra un diagrama de flujo que ilustra un modo posible de funcionamiento del descomponedor de la Fig. 1a en la descomposición de elementos de sintaxis en símbolos fuente de acuerdo con una realización;Fig. 1c shows a flow diagram illustrating a possible mode of operation of the decomposer of Fig. 1a in decomposing syntax elements into source symbols according to one embodiment;

La Fig. 2a muestra un diagrama de bloques de un aparato de decodificación entrópica de acuerdo con una realización;Fig. 2a shows a block diagram of an entropic decoding apparatus according to one embodiment;

La Fig. 2b muestra un diagrama de flujo que ilustra un modo posible de funcionamiento del componedor de la Fig. 2a en la composición de elementos de sintaxis a partir de símbolos fuente de acuerdo con una realización;Fig. 2b shows a flow chart illustrating a possible mode of operation of the composer of Fig. 2a in composing syntax elements from source symbols according to one embodiment;

La Fig. 3 muestra un diagrama de bloques de un codificador PIPE de acuerdo con una realización que puede usarse en la Fig. 1;Fig. 3 shows a block diagram of a PIPE encoder according to an embodiment that can be used in Fig. 1;

La Fig. 4 muestra un diagrama de bloques de un decodificador PIPE adecuado para la decodificación de un flujo de bits generado por el codificador PIPE de la Fig. 3, de acuerdo con una realización que puede usarse en la Fig. 2;Fig. 4 shows a block diagram of a PIPE decoder suitable for decoding a bit stream generated by the PIPE encoder of Fig. 3, according to an embodiment that can be used in Fig. 2;

La Fig. 5 muestra un diagrama esquemático que ilustra un paquete de datos con flujos de bits parciales multiplexados de acuerdo con una realización;Fig. 5 shows a schematic diagram illustrating a data packet with multiplexed partial bit streams according to one embodiment;

La Fig. 6 muestra un diagrama esquemático que ilustra un paquete de datos con una segmentación alternativa usando segmentos de tamaño fijo de acuerdo con una realización adicional;Fig. 6 shows a schematic diagram illustrating a data packet with alternative segmentation using fixed-size segments according to a further embodiment;

La Fig. 7 muestra un diagrama de bloques de un codificador PIPE que usa intercalado de flujos de bits parcial de acuerdo con una realización; Fig. 7 shows a block diagram of a PIPE encoder using partial bitstream interleaving according to one embodiment;

La Fig. 8 muestra ejemplos de ilustración esquemática para el estado de una memoria intermedia de palabras de código en el lado del codificador de la Fig. 7 de acuerdo con una realización;Fig. 8 shows schematic illustration examples for the status of a codeword buffer on the encoder side of Fig. 7 according to one embodiment;

La Fig. 9 muestra un diagrama de bloques de un decodificador PIPE que usa un intercalado de flujos de bits parcial de acuerdo con una realización;Fig. 9 shows a block diagram of a PIPE decoder using partial bitstream interleaving according to one embodiment;

La Fig. 10 muestra un diagrama de bloques de un decodificador PIPE de acuerdo con una realización que usa un intercalado de palabras de código usando un conjunto simple de palabras de código;Fig. 10 shows a block diagram of a PIPE decoder according to an embodiment that uses codeword interleaving using a simple set of codewords;

La Fig. 11 muestra un diagrama de bloques de un codificador PIPE de acuerdo con una realización que usa intercalado de secuencias de bits de longitud fija;Fig. 11 shows a block diagram of a PIPE encoder according to an embodiment using fixed-length bitstream interleaving;

La Fig. 12 muestra un esquema que ilustra ejemplos para el estado de una memoria intermedia de bits global en el lado del codificador de la Fig. 11 de acuerdo con una realización;Fig. 12 shows a schematic illustrating examples for the status of a global bit buffer on the encoder side of Fig. 11 according to one embodiment;

La Fig. 13 muestra un diagrama de bloques de un decodificador PIPE de acuerdo con una realización que usa intercalado de secuencias de bits de longitud fija;Fig. 13 shows a block diagram of a PIPE decoder according to an embodiment using fixed length bitstream interleaving;

La Fig. 14 muestra un gráfico para la ilustración de un intervalo de probabilidad óptimo esquematizado en K =Fig. 14 shows a graph for the illustration of an optimal probability interval outlined in K =

4 intervalos suponiendo una distribución de probabilidad uniforme en (0, 0,5];4 intervals assuming a uniform probability distribution at (0, 0.5];

La Fig. 15 muestra un diagrama esquemático que ilustra un árbol de eventos binarios para una probabilidad LPB de P = 0,38 y un código de longitud variable asociado obtenido mediante el algoritmo de Huffman;Fig. 15 shows a schematic diagram illustrating a binary event tree for an LPB probability of P = 0.38 and an associated variable length code obtained by the Huffman algorithm;

La Fig. 16 muestra un gráfico a partir del que pueden recogerse el incremento relativo en la tasa de bits p(p,Fig. 16 shows a graph from which the relative increase in bit rate p (p,

C) para códigos C óptimos dado un número máximo de entradas de tabla Lm; C) for optimal C codes given a maximum number of table entries Lm;

La Fig. 17 muestra un gráfico que ilustra el incremento de la tasa para el particionamiento del intervalo de probabilidad teóricamente óptimo en K = 12 intervalos y un diseño real con códigos V2V con un número máximo de entradas de tabla Lm = 65;Fig. 17 shows a graph illustrating the rate increase for partitioning the theoretically optimal probability interval into K = 12 intervals and a real design with V2V codes with a maximum number of table entries Lm = 65;

La Fig. 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;Fig. 18 shows a schematic diagram illustrating an example for converting a ternary choice tree to a full binary choice tree;

La Fig. 19 muestra un diagrama de bloques de un sistema que comprende un codificador (parte izquierda) y decodificador (parte derecha) de acuerdo con una realización;Fig. 19 shows a block diagram of a system comprising an encoder (left side) and decoder (right side) according to one embodiment;

La Fig. 20 muestra un diagrama de bloques de un aparato de codificación entrópica de acuerdo con una realización;Fig. 20 shows a block diagram of an entropic coding apparatus according to one embodiment;

La Fig. 21 muestra un diagrama de bloques de un aparato de decodificación entrópica de acuerdo con una realización;Fig. 21 shows a block diagram of an entropic decoding apparatus according to one embodiment;

La Fig. 22 muestra un diagrama de bloques de un aparato de codificación entrópica de acuerdo con una realización adicional;Fig. 22 shows a block diagram of an entropic coding apparatus according to a further embodiment;

La Fig. 23 muestra un diagrama esquemático que ilustra ejemplos del estado de una memoria intermedia de bits global en el lado del codificador de la Fig. 22 de acuerdo con una realización;Fig. 23 shows a schematic diagram illustrating examples of the state of a global bit buffer on the encoder side of Fig. 22 according to one embodiment;

La Fig. 24 muestra un diagrama de bloques de un aparato de decodificación entrópica de acuerdo con una realización adicional de la presente solicitud.Fig. 24 shows a block diagram of an entropic decoding apparatus according to a further embodiment of the present application.

Antes de que se describan varias realizaciones de la presente solicitud a continuación con respeto a las figuras, se observa que se usan iguales signos de referencia a lo largo de todas las figuras para indicar elementos iguales o equivalentes en estas figuras, y la descripción de estos elementos presentada en cualquiera de las figuras previas puede aplicarse también a cualquiera de las figuras siguientes siempre que la descripción previa no entre en conflicto con la descripción de las figuras actuales.Before various embodiments of the present application are described below with respect to the figures, it is noted that the same reference signs are used throughout all the figures to indicate the same or equivalent elements in these figures, and the description of these Elements presented in any of the previous figures can also be applied to any of the following figures as long as the previous description does not conflict with the description of the current figures.

La Fig. 1a muestra un aparato de codificación entrópica de acuerdo con una realización de la presente solicitud. El aparato comprende un subdivisor 100, un codificador VLC 102 y un codificador PIPE 104.Fig. 1a shows an entropic coding apparatus according to an embodiment of the present application. The apparatus comprises a subdivider 100, a VLC 102 encoder and a PIPE 104 encoder.

El subdivisor 100 está configurado para subdividir una secuencia de símbolos fuente 106 en una primera subsecuencia 108 de símbolos fuente y una segunda subsecuencia 110 de símbolos fuente. El codificador VLC 102 tiene una entrada del mismo conectada a una primera salida del subdivisor 100 y está configurado para convertir de una manera a nivel de símbolos, los símbolos fuente de la primera subsecuencia 108 en palabras de código que forman un primer flujo de bits 112. El codificador VLC 102 puede comprender una tabla de búsqueda y uso, individualmente, los símbolos fuente como un índice para la búsqueda, por símbolo fuente, de una palabra de código respectiva en la tabla de búsqueda. El codificador VLC produce la última palabra de código, y prosigue con el siguiente símbolo fuente en la subsecuencia 110 para producir una secuencia de palabras de código en la que cada palabra de código está asociada con exactamente uno de los símbolos fuente dentro de la subsecuencia 110. Las palabras de código pueden tener longitudes diferentes y pueden definirse de modo que ninguna palabra de código forme un prefijo con cualquiera de las otras palabras de código. Adicionalmente, la tabla de búsqueda puede ser estática.Subdivider 100 is configured to subdivide a source symbol sequence 106 into a first source symbol subsequence 108 and a second source symbol subsequence 110. The VLC 102 Encoder it has an input thereof connected to a first output of subdivider 100 and is configured to convert in a symbol level manner, the source symbols of the first subsequence 108 into code words that form a first bit stream 112. The VLC encoder 102 may comprise a lookup table and individually use the source symbols as an index for searching, by source symbol, for a respective code word in the lookup table. The VLC encoder produces the last codeword, and proceeds to the next source symbol in subsequence 110 to produce a sequence of codewords in which each codeword is associated with exactly one of the source symbols within subsequence 110 Codewords can be of different lengths and can be defined so that no codeword prefixes any of the other codewords. Additionally, the lookup table can be static.

El codificador PIPE 104 tiene una entrada del mismo conectada a una segunda salida del subdivisor 100 y está configurado para codificar la segunda subsecuencia 110 de símbolos fuente, representados en la forma de una secuencia de símbolos de alfabeto, y comprende un asignador 114 configurado para asignar una medida para una estimación de una distribución de probabilidad entre valores posibles que pueden asumir los símbolos de alfabeto respectivos, a cada símbolo de alfabeto de la secuencia de símbolos de alfabeto basándose en la información contenida dentro de los símbolos de alfabeto previos de la secuencia de símbolos de alfabeto, una pluralidad de codificadores entrópicos 116 cada uno de los cuales está configurado para convertir los símbolos de alfabeto dirigidos al codificador entrópico respectivo en un segundo flujo de bits 118 respectivo, y un selector 120 configurado para dirigir cada símbolo de alfabeto de la segunda subsecuencia 110 a uno seleccionado de la pluralidad de codificadores entrópicos 116, dependiendo la selección de la medida mencionada anteriormente para la estimación de la distribución de probabilidad asignada al símbolo de alfabeto respectivo. La asociación entre símbolos fuente y símbolos de alfabeto puede ser tal que cada símbolo de alfabeto se asocie únicamente con exactamente un símbolo fuente de la subsecuencia 110 para representar, posiblemente junto con símbolos de alfabeto adicionales de la secuencia de símbolos de alfabeto que pueden seguirse inmediatamente entre sí, este símbolo fuente.The PIPE encoder 104 has an input thereof connected to a second output of the subdivider 100 and is configured to encode the second subsequence 110 of source symbols, represented in the form of an alphabet symbol sequence, and comprises an allocator 114 configured to assign a measure for an estimate of a probability distribution among possible values that the respective alphabet symbols can assume, for each alphabet symbol in the sequence of alphabet symbols based on the information contained within the previous alphabet symbols in the sequence of alphabet symbols, a plurality of entropic encoders 116 each of which is configured to convert the alphabet symbols directed to the respective entropic encoder into a respective second bitstream 118, and a selector 120 configured to direct each alphabet symbol of the second subsequence 110 to one selected from the plurality of codi entropic factors 116, the selection of the aforementioned measure depending on the estimation of the probability distribution assigned to the respective alphabet symbol. The association between source symbols and alphabet symbols may be such that each alphabet symbol is associated with only exactly one source symbol of the subsequence 110 to be represented, possibly together with additional alphabet symbols from the sequence of alphabet symbols that can be followed immediately. each other, this source symbol.

Como se describe más en detalle a continuación, la secuencia 106 de símbolos fuente puede ser una secuencia de elementos de sintaxis de un flujo de bits que puede analizarse. El flujo de bits que puede analizarse puede, por ejemplo, representar contenido de vídeo y/o audio en una forma escalable o no escalable representando los elementos de sintaxis, por ejemplo, niveles del coeficiente de transformada, vectores de movimiento, índices de referencia de imagen en movimiento, factores de escala, valores de energía de la envolvente de audio o similares. Los elementos de sintaxis pueden, en particular, ser de tipo o categoría diferente teniendo los elementos de sintaxis del mismo tipo, por ejemplo, el mismo significado dentro del flujo de bits que puede analizarse pero con respecto a diferentes partes del mismo, tal como diferentes imágenes, diferentes macrobloques, diferentes componentes espectrales o similares, mientras que los elementos de sintaxis de tipo diferente pueden tener un significado diferente dentro del flujo de bits, tal como un vector de movimiento tiene un significado diferente que un elemento de sintaxis que representa un nivel de coeficiente de transformada que representa la predicción de movimiento residual. As described in more detail below, source symbol sequence 106 may be a bitstream syntax element sequence that can be parsed. The bitstream that can be parsed can, for example, represent video and / or audio content in a scalable or non-scalable form by representing the syntax elements, for example, transform coefficient levels, motion vectors, reference indices of motion picture, scale factors, energy values of the audio envelope or the like. The syntax elements may, in particular, be of a different type or category with the syntax elements having the same type, for example, the same meaning within the bitstream that can be parsed but with respect to different parts of it, such as different images, different macroblocks, different spectral components, or the like, while different type syntax elements may have a different meaning within the bit stream, such as a motion vector has a different meaning than a syntax element representing a level transform coefficient representing the prediction of residual motion.

El subdivisor 100 puede estar configurado para realizar la subdivisión dependiendo del tipo de elementos de sintaxis. Esto es, el subdivisor 100 puede dirigir elementos de sintaxis de un primer grupo de tipos a la primera subsecuencia 108 y dirigir elementos de sintaxis de un segundo grupo de tipos distintos del primer grupo, a la segunda subsecuencia 110. La subdivisión realizada por el subdivisor 100 puede diseñarse de modo que las estadísticas de símbolos de los elementos de sintaxis dentro de la subsecuencia 108 sea adecuada para codificarse por VLC por el codificador VLC 102, es decir, dé como resultado casi una mínima entropía posible a pesar del uso de la codificación VLC y su restricción con relación a su adecuación para ciertas estadísticas de símbolo tal como se ha descrito en la parte introductoria de la memoria de la presente solicitud. Por otro lado, el subdivisor 100 puede dirigir todos los otros elementos de sintaxis en la segunda subsecuencia 110 de modo que estos elementos de sintaxis que tienen estadísticas de símbolos que no son adecuadas para la codificación VLC, se codifican mediante un codificador PIPE 104 más complejo, pero más eficiente - en términos de la relación de compresión-.Subdivider 100 may be configured to subdivide depending on the type of syntax elements. That is, subdivider 100 can direct syntax elements from a first group of types to the first subsequence 108 and direct syntax elements from a second group of types other than the first group, to the second subsequence 110. The subdivision made by the subdivider 100 can be designed such that the symbol statistics of the syntax elements within the subsequence 108 is suitable to be encoded by VLC by encoder VLC 102, i.e. results in almost as little entropy as possible despite the use of encoding VLC and its restriction regarding its suitability for certain symbol statistics as described in the introductory part of the memory of the present application. On the other hand, subdivider 100 can direct all other syntax elements in second subsequence 110 so that these syntax elements that have symbol statistics that are not suitable for VLC encoding, are encoded by a more complex PIPE 104 encoder , but more efficient - in terms of the compression ratio.

Como es también el caso con las realizaciones descritas en mayor detalle de las figuras siguientes, el codificador PIPE 104 puede comprender un simbolizador 122 configurado para mapear individualmente cada elemento de sintaxis de la segunda subsecuencia 110 en una secuencia parcial respectiva de símbolos de alfabeto, junto con la formación de la secuencia 124 anteriormente mencionada de símbolos de alfabeto. En otras palabras, el simbolizador 122 puede no estar presente si, por ejemplo, el símbolo fuente de la subsecuencia 110 está ya representado como secuencias parciales respectivas de símbolos de alfabeto. El simbolizador 122 es, por ejemplo, ventajoso en caso de que los símbolos fuente dentro de la subsecuencia 110 sean de diferentes alfabetos, y especialmente, alfabetos que tengan diferentes números de símbolos de alfabeto posibles. Concretamente, en este caso, el simbolizador 122 es capaz de armonizar los alfabetos de los símbolos que llegan dentro del subflujo 110. El simbolizador 122 puede, por ejemplo, realizarse como un conversor a binario configurado para convertir a binario los símbolos que llegan dentro de la subsecuencia 110.As is also the case with the embodiments described in greater detail in the following figures, the PIPE encoder 104 may comprise a symbolizer 122 configured to individually map each syntax element of the second subsequence 110 into a respective partial sequence of alphabet symbols, together with the formation of the above-mentioned sequence 124 of alphabet symbols. In other words, symbolizer 122 may not be present if, for example, the subsequence 110 source symbol is already represented as respective partial sequences of alphabet symbols. Symbolizer 122 is, for example, advantageous if the source symbols within subsequence 110 are of different alphabets, and especially, alphabets having different numbers of possible alphabet symbols. Specifically, in this case, symbolizer 122 is capable of harmonizing the alphabets of symbols arriving within subflow 110. Symbolizer 122 can, for example, be performed as a binary converter configured to convert symbols arriving within binary to binary. the subsequence 110.

Como se ha mencionado anteriormente, los elementos de sintaxis pueden ser de tipo diferente. Esto puede cumplirse también para los elementos de sintaxis dentro del subflujo 110. El simbolizador 122 puede configurarse entonces para realizar el mapeado individual de los elementos de sintaxis de la subsecuencia 110 usando un esquema de mapeado de simbolización, tal como un esquema de conversión a binario, diferente para elementos de sintaxis de tipo diferente. Ejemplos para esquemas de conversión a binario específicos se presentan en la descripción siguiente, tal como un esquema de conversión a binario unario, un esquema de conversión a binario exp-Golomb de orden 0 u orden 1, por ejemplo, o un esquema de conversión a binario unario truncado, un esquema de conversión a binario truncado y reordenado exp-Golomb de orden 0 o un esquema de conversión a binario no sistemático.As mentioned above, syntax elements can be of a different type. This can also be true for syntax elements within subflow 110. Symbolizer 122 can be configured then to perform individual mapping of the subsequence 110 syntax elements using a symbolization mapping scheme, such as a different binary conversion scheme for different type syntax elements. Examples for specific binary conversion schemes are presented in the following description, such as a unary binary conversion scheme, an order 0 or order 1 exp-Golomb binary conversion scheme, for example, or a conversion scheme to truncated unary binary, a 0-order exp-Golomb rearranged and truncated binary conversion scheme, or an unsystematic binary conversion scheme.

En consecuencia, los codificadores entrópicos 116 podrían configurarse para funcionar sobre un alfabeto binario. Finalmente, debería observarse que el simbolizador 122 puede considerarse como parte del mismo codificador PIPE 104 tal como se muestra en la Fig. 1a. Como alternativa, sin embargo, el conversor a binario puede considerarse como externo al codificador PIPE.Accordingly, entropic encoders 116 could be configured to operate on a binary alphabet. Finally, it should be noted that symbolizer 122 can be considered as part of the same PIPE encoder 104 as shown in Fig. 1a. As an alternative, however, the binary converter can be considered external to the PIPE encoder.

De modo similar a la última nota, debería observarse que el asignador 114, aunque se muestra conectado en serie entre el simbolizador 122 y el selector 120, puede considerarse como alternativa como conectado entre una salida del simbolizador 124 y una primera entrada del selector 120, estando conectada una salida del asignador 114 a otra entrada del selector 120 como se describe posteriormente con respecto a la Fig. 3. En efecto, el asignador 114 acompaña cada símbolo de alfabeto con la medida anteriormente mencionada para una estimación de la distribución de probabilidad.Similar to the last note, it should be noted that allocator 114, while shown connected in series between symbolizer 122 and selector 120, can alternatively be viewed as connected between an output of symbolizer 124 and a first input of selector 120, an output of allocator 114 being connected to another input of selector 120 as described below with respect to FIG. 3. Indeed, allocator 114 accompanies each alphabet symbol with the aforementioned measurement for an estimate of the probability distribution.

En lo que se refiere a la salida del aparato de codificación entrópica de la Fig. 1a, la misma se compone del primer flujo de bits 112 producido por el codificador VLC 102 y la pluralidad de segundos flujos de bits 118 producidos por la pluralidad de codificadores entrópicos 116. Como se describe adicionalmente a continuación, todos estos flujos de bits pueden transmitirse en paralelo. Como alternativa, los mismos pueden intercalarse en un flujo de bits 126 común mediante el uso de un intercalador 128. Las realizaciones de las Figs. 22 a 24 muestran ejemplos de un intercalado de flujos de bits de este tipo. Como se muestra adicionalmente en la Fig. 1, el mismo codificador PIPE 104 puede incluir su propio intercalador 130 para intercalar la pluralidad de segundos flujos de bits 118 en un flujo de bits 132 codificado PIPE común. Las posibilidades para dicho intercalador 130 pueden deducirse de las siguientes realizaciones descritas con respecto a las Figs. 5 a 13. El flujo de bits 132 y el flujo de bits 112 pueden, en una configuración paralela, representar la salida del aparato de codificación entrópica de la Fig. 1a. Como alternativa, otro intercalador 134 puede intercalar ambos flujos de bits en cuyo caso el intercalador 130 y 134 formarían dos etapas de un intercalador 128 de dos etapas.As regards the output of the entropic encoding apparatus of Fig. 1a, it is composed of the first bitstream 112 produced by the VLC encoder 102 and the plurality of second bitstreams 118 produced by the plurality of encoders Entropics 116. As described further below, all of these bit streams can be transmitted in parallel. Alternatively, they can be interleaved into a common bitstream 126 through the use of an interleaver 128. The embodiments of Figs. 22-24 show examples of such bitstream interleaving. As further shown in FIG. 1, the same PIPE encoder 104 may include its own interleaver 130 to interleave the plurality of second bit streams 118 into a common PIPE encoded bit stream 132. The possibilities for said interleaver 130 can be deduced from the following embodiments described with respect to Figs. 5 to 13. Bit stream 132 and bit stream 112 may, in a parallel configuration, represent the output of the entropic encoding apparatus of Fig. 1a. Alternatively, another interleaver 134 may interleave both bitstreams in which case interleaver 130 and 134 would form two stages of a two stage interleaver 128.

Como se ha descrito anteriormente, el subdivisor 100 puede realizar la subdivisión a nivel de elementos de sintaxis, es decir, los símbolos fuente sobre los que opera el subdivisor 100 pueden ser elementos de sintaxis completos, o dicho de otro modo, el subdivisor 100 puede operar en unidades de elementos de sintaxis.As described above, subdivider 100 can perform subdivision at the level of syntax elements, that is, the source symbols on which subdivider 100 operates can be complete syntax elements, or in other words, subdivider 100 can operate on syntax element units.

Sin embargo, de acuerdo con una realización alternativa, el aparato de codificación entrópica de la Fig. 1a puede incluir el descomponedor 136 para descomponer elementos de sintaxis dentro de un flujo de bits 138 que puede analizarse individualmente en uno o más símbolos fuente de la secuencia de símbolos fuente 106 que entra en el subdivisor 100. En particular, el descomponedor 136 puede configurarse para convertir la secuencia 138 de elementos de sintaxis en la secuencia 106 de símbolos fuente descomponiendo individualmente cada elemento de sintaxis en un número entero respectivo de símbolos fuente. El número entero puede variar entre los elementos de sintaxis. En particular, alguno de los elementos de sintaxis puede incluso dejarse sin cambiar por el descomponedor 136, mientras que otros elementos de sintaxis se descomponen exactamente en dos, o al menos dos, símbolos fuente. El subdivisor 100 puede configurarse para dirigir uno de los símbolos fuente de dichos elementos de sintaxis descompuestos a la primera subsecuencia 108 de los símbolos fuente y otro de los símbolos fuente del mismo elemento de sintaxis descompuesto a la segunda subsecuencia 110 de símbolos fuente. Como se ha mencionado anteriormente, los elementos de sintaxis dentro del flujo de bits 138 pueden ser de tipo diferente, y el descomponedor 136 puede configurarse para realizar la descomposición individual dependiendo del tipo del elemento de sintaxis. El descomponedor 136 realiza preferentemente la descomposición individual de los elementos de sintaxis de modo que existe un mapeado inverso único predeterminado usado posteriormente en el lado de la decodificación, desde el número entero de símbolos fuente al elemento de sintaxis respectivo, común para todos los elementos de sintaxis.However, in accordance with an alternate embodiment, the entropic encoding apparatus of FIG. 1a may include decomposer 136 to decompose syntax elements into bitstream 138 that can be individually parsed into one or more source symbols in the sequence. source symbol 106 entering subdivider 100. In particular, decomposer 136 can be configured to convert syntax element sequence 138 to source symbol sequence 106 by individually decomposing each syntax element into a respective integer number of source symbols. The integer can vary between syntax elements. In particular, some of the syntax elements may even be left unchanged by decomposer 136, while other syntax elements are decomposed into exactly two, or at least two, source symbols. Subdivider 100 can be configured to direct one of the source symbols of said decomposed syntax elements to the first subsequence 108 of the source symbols and another of the source symbols of the same decomposed syntax element to the second subsequence 110 of source symbols. As mentioned above, the syntax elements within bit stream 138 can be of a different type, and decomposer 136 can be configured to perform individual decomposition depending on the type of the syntax element. The decomposer 136 preferably performs the individual decomposition of the syntax elements so that there is a predetermined unique inverse mapping used later on the decoding side, from the integer number of source symbols to the respective syntax element, common to all elements of syntax.

Por ejemplo, el descomponedor 136 puede configurarse para descomponer elementos de sintaxis z en el flujo de bits 138 que puede analizarse, en dos símbolos fuente x e y de modo que z = x y, z = x - y, z = x ■ y o z = x : y. Con esta medida, el subdivisor 100 puede descomponer los elementos de sintaxis en dos componentes, concretamente símbolos fuente del flujo de símbolos fuente 106, uno de los cuales es adecuado para codificarse por VLC en términos de eficiencia de compresión, tal como x, y el otro de los cuales no es adecuado para la codificación por VLC y se pasa, por lo tanto, al segundo subflujo 110 en lugar de al primer subflujo 108, tal como y. La descomposición usada por el descomponedor 136 no necesita ser biyectiva. Sin embargo, como se ha mencionado anteriormente existiría un mapeado inverso que permita una recuperación única de los elementos de sintaxis de las posibles descomposiciones entre las que el descomponedor 136 puede elegir si la descomposición no es biyectiva. For example, decomposer 136 can be configured to decompose z syntax elements in parsable stream 138, into two source symbols x and y so that z = xy, z = x - y, z = x ■ yoz = x: and. With this measure, the subdivider 100 can decompose the syntax elements into two components, namely source symbols of the source symbol stream 106, one of which is suitable to be encoded by VLC in terms of compression efficiency, such as x, and the another of which is not suitable for VLC encoding and is therefore passed to the second subflow 110 instead of the first subflow 108, such as and. The decomposition used by decomposer 136 need not be bijective. However, as mentioned above there would be an inverse mapping that would allow a unique recovery of the syntax elements from possible decompositions among which decomposer 136 can choose if the decomposition is not bijective.

Hasta ahora, se han descrito diferentes posibilidades para el manejo de diferentes elementos de sintaxis. Si existen dichos elementos de sintaxis o casos, es opcional. Las realizaciones descritas aquí a continuación, sin embargo, se concentra en elementos de sintaxis que se descomponen por el descomponedor 136 de acuerdo con el siguiente principio.So far, different possibilities for handling different syntax elements have been described. If such syntax or case elements exist, it is optional. The embodiments described hereinafter, however, focus on syntax elements that are decomposed by decomposer 136 according to the following principle.

Como se muestra en la Fig. 1b, el descomponedor 136 está configurado para descomponer ciertos elementos de sintaxis z en el flujo de bits 138 que puede analizarse en etapas. Pueden existir dos o más etapas. Las etapas son para la división del intervalo de valores del elemento de sintaxis z en dos o más subintervalos adyacentes o subrangos tal como se muestra en la Fig. 1c. El rango de valores del elemento de sintaxis puede tener dos puntos extremos infinitos, simplemente uno o puede tener puntos extremos definidos. En la Fig. 1c, el rango de valores del elemento de sintaxis se subdivide ejemplarmente en tres particiones 1401-3. Tal como se muestra en la Fig. 1b, si el elemento de sintaxis es mayor que o igual que la delimitación 142 de la primera partición 1401, es decir el límite superior que separa las particiones 1401 y 1402, entonces el elemento de sintaxis se resta de la delimitación límite1 de la primera partición 1403 y z se comprueba de nuevo para comprobar si el mismo es incluso mayor o igual que la delimitación 144 de la segunda partición 1402, es decir el límite superior que separa las particiones 1402 y 1403. Si z' es mayor que o igual que la delimitación 144, entonces z' se resta la delimitación límite2 de la segunda partición 1402 dando como resultado z''. En el primer caso donde z es más pequeño que límite1, el elemento de sintaxis z se envía al subdivisor 100 de manera clara, en caso de que z esté entre límite1 y límite2, el elemento de sintaxis z se envía al subdivisor 100 en una tupla (límite1, z') siendo z=límite1+z', y en caso de que z esté por encima de límite2, el elemento de sintaxis z se envía al subdivisor 100 como un triplete (límite1, límite2-límite1, z') siendo z = límite1+límite2 z'. El primer (o único) componente, es decir z o límite1, forma un primer símbolo fuente a codificarse por el subdivisor 100, el segundo componente, es decir z' o límite2-límite1, forman un segundo símbolo fuente a codificarse por el subdivisor 100, si está presente, y el tercer componente, es decir z'', forma un tercer símbolo fuente a codificarse por el subdivisor 100, si está presente. Por lo tanto, de acuerdo con la realización de la Fig. 1b y 1c, el elemento de sintaxis se mapea a cualquiera de 1 a 3 símbolos fuente, pero las generalizaciones sobre un número máximo menor o mayor de símbolos fuente es fácilmente deducible de la descripción anterior, y dichas alternativas también se describirán a continuación.As shown in Fig. 1b, decomposer 136 is configured to decompose certain z-syntax elements into bit stream 138 that can be parsed in stages. There may be two or more stages. The steps are for dividing the z-syntax element value range into two or more adjacent sub-ranges or sub-ranges as shown in Fig. 1c. The syntax element value range can have two infinite endpoints, just one or it can have defined endpoints. In Fig. 1c, the range of syntax element values is subdivided exemplary into three 1401-3 partitions. As shown in Fig. 1b, if the syntax element is greater than or equal to the delimitation 142 of the first partition 1401, ie the upper limit that separates partitions 1401 and 1402, then the syntax element is subtracted delimitation limit1 of the first partition 1403 and z is checked again to see if it is even greater than or equal to the delimitation 144 of the second partition 1402, that is, the upper limit that separates partitions 1402 and 1403. If z ' is greater than or equal to the bounding 144, then z 'subtracts the bounding bound2 from the second partition 1402 resulting in z' '. In the first case where z is smaller than limit1, the z syntax element is sent to subdivider 100 clearly, in case z is between limit1 and limit2, the z syntax element is sent to subdivider 100 in a tuple (limit1, z ') where z = limit1 + z', and in case z is above limit2, the syntax element z is sent to subdivider 100 as a triplet (limit1, limit2-limit1, z ') being z = limit1 + limit2 z '. The first (or only) component, that is to say zo limit1, forms a first source symbol to be encoded by subdivisor 100, the second component, that is to say z 'or limit2-limit1, forms a second source symbol to be encoded by subdivider 100, if present, and the third component, i.e. z '', forms a third source symbol to be encoded by subdivider 100, if present. Therefore, according to the embodiment of Fig. 1b and 1c, the syntax element maps to any of 1 to 3 source symbols, but the generalizations about a smaller or larger maximum number of source symbols is easily deducible from the description above, and such alternatives will also be described below.

En cualquier caso, todos estos diferentes componentes o símbolos fuente resultantes están de acuerdo con las realizaciones a continuación, codificadas con codificación entre las alternativas. Al menos una de ellas se reenvía por el subdivisor al codificador PIPE 104, y al menos otra de las mismas se envía al codificador VLC 102.In any case, all of these different different components or source symbols are in accordance with the embodiments below, encoded with encoding among the alternatives. At least one of them is forwarded by the subdivider to the PIPE encoder 104, and at least one of them is sent to the VLC 102 encoder.

Se describen con más detalle a continuación realizaciones ventajosas particulares.Particular advantageous embodiments are described in more detail below.

Después de haber descrito anteriormente una realización para un aparato de codificación entrópica, se describe una realización para un aparato de decodificación entrópica con respecto a la Fig. 2a. El aparato de decodificación entrópica de la Fig. 2a comprende un decodificador VLC 200 y un decodificador PIPE 202. El decodificador VLC 200 está configurado para reconstruir de una manera a nivel de código los símbolos fuente de una primera subsecuencia 204 de palabras de código de un primer flujo de bits 206. El primer flujo de bits 206 es igual al flujo de bits 112 de la Fig. 1, y lo mismo se aplica a la subsecuencia 204 en lo que se refiere a la subsecuencia 108 de la Fig. 1a. El decodificador PIPE 202 está configurado para reconstruir una segunda subsecuencia 208 de símbolos fuente, representados en forma de una secuencia de símbolos de alfabeto, y comprende una pluralidad de decodificadores entrópicos 210, un asignador 212 y un selector 214. La pluralidad de decodificadores entrópicos 210 están configurados para convertir uno respectivo de los segundos flujos de bits 216 en símbolos de alfabeto de la secuencia de símbolos de alfabeto. El asignador 212 está configurado para asignar una medida de una estimación de una distribución de probabilidad entre valores posibles que pueden asumir los símbolos de alfabeto respectivos, a cada símbolo de alfabeto de la secuencia de símbolos de alfabeto que representan la segunda subsecuencia 208 de símbolos fuente a reconstruirse, basándose en la información contenida dentro de los símbolos de alfabeto previamente reconstruidos de la secuencia de símbolos de alfabeto. Con este fin, el asignador 212 puede conectarse en serie entre una salida del selector 214 y una entrada del mismo, en tanto que las entradas adicionales del selector 214 tienen salidas de los decodificadores entrópicos 210 respectivamente conectadas al mismo. El selector 214 está configurado para recuperar cada símbolo de alfabeto de la secuencia de símbolos de alfabeto desde uno seleccionado de la pluralidad de decodificadores entrópicos 210, dependiendo la selección de la medida asignada al símbolo de alfabeto respectivo. En otras palabras, el selector 214 junto con el asignador 212 es operativo para recuperar los símbolos de alfabeto obtenidos por los decodificadores entrópicos 210 en un orden entre los decodificadores entrópicos 210 obtenidos mediante el estudio de la información contenida dentro de símbolos de alfabeto previos de la secuencia de símbolos de alfabeto. Incluso en otras palabras, el asignador 212 y el selector 214 son capaces de reconstruir el orden original de los símbolos de alfabeto de símbolo de alfabeto a símbolo de alfabeto. Junto con la predicción del siguiente símbolo de alfabeto, el asignador 212 es capaz de determinar la medida anteriormente mencionada de la estimación de la distribución de probabilidad para el símbolo de alfabeto respectivo mediante el uso del cual el selector 214 selecciona entre los decodificadores entrópicos 210 a recuperar el valor real de este símbolo de alfabeto. Para ser incluso más preciso, y tal como se describirá con más detalle a continuación, el decodificador PIPE 202 puede configurarse para reconstruir la secuencia 208 de símbolos fuente, representada en la forma de la secuencia de símbolos de alfabeto, en respuesta a las solicitudes de símbolos de alfabeto que solicitan secuencialmente los símbolos de alfabeto, y el asignador 212 puede configurarse para asignar cada solicitud de un símbolo de alfabeto de la secuencia de símbolos de alfabeto que representan la segunda subsecuencia (208) de símbolos fuente a reconstruirse, la medida anteriormente mencionada de una estimación de una distribución de probabilidad entre los valores posibles que pueden asumir los símbolos de alfabeto respectivos. En consecuencia, el selector 214 puede configurarse para recuperar, para cada solicitud de un símbolo de alfabeto de la secuencia de símbolos de alfabeto que representa la segunda subsecuencia (208) de símbolos fuente a reconstruirse, el símbolo de alfabeto respectivo de la secuencia de símbolos de alfabeto de uno seleccionado de la pluralidad de decodificadores entrópicos 210, dependiendo la selección de la medida asignada a la solicitud respectiva del símbolo de alfabeto respectivo. La concordancia entre solicitudes en el lado de la decodificación por un lado, y el flujo de datos o codificación en el lado de la codificación por otro lado, se describirá con más detalle con respecto a la Fig. 4.Having previously described an embodiment for an entropic encoding apparatus, an embodiment for an entropic decoding apparatus is described with respect to FIG. 2a. The entropic decoding apparatus of FIG. 2a comprises a VLC 200 decoder and a PIPE 202 decoder. The VLC 200 decoder is configured to reconstruct in a code level manner the source symbols of a first codeword subsequence 204 of a first bitstream 206. The first bitstream 206 is equal to bitstream 112 of FIG. 1, and the same applies to subsequence 204 as it relates to subsequence 108 of FIG. 1a. The PIPE decoder 202 is configured to reconstruct a second subsequence 208 of source symbols, represented in the form of an alphabet symbol sequence, and comprises a plurality of entropic decoders 210, an allocator 212, and a selector 214. The plurality of entropic decoders 210 they are configured to convert a respective one of the second bitstreams 216 into alphabet symbols of the alphabet symbol sequence. The allocator 212 is configured to assign a measure of an estimate of a probability distribution among possible values that the respective alphabet symbols can assume, to each alphabet symbol in the sequence of alphabet symbols representing the second subsequence 208 of source symbols to be reconstructed, based on the information contained within the previously reconstructed alphabet symbols of the alphabet symbol sequence. To this end, allocator 212 may be connected in series between an output of selector 214 and an input thereof, while additional inputs of selector 214 have outputs from entropy decoders 210 respectively connected thereto. Selector 214 is configured to retrieve each alphabet symbol in the sequence of alphabet symbols from one selected from the plurality of entropic decoders 210, the selection of measurement assigned to the respective alphabet symbol depending. In other words, selector 214 together with allocator 212 is operative to retrieve the alphabet symbols obtained by the entropic decoders 210 in an order among the entropic decoders 210 obtained by studying the information contained within previous alphabet symbols of the alphabet symbols sequence. In other words, mapper 212 and selector 214 are able to reconstruct the original order of the alphabet symbols from alphabet symbol to alphabet symbol. In conjunction with predicting the next alphabet symbol, the allocator 212 is able to determine the aforementioned measure of the probability distribution estimate for the respective alphabet symbol by using which selector 214 selects among entropic decoders 210 to retrieve the actual value of this alphabet symbol. To be even more precise, and as will be described in more detail below, PIPE decoder 202 can be configured to reconstruct symbol sequence 208 font, represented in the form of the alphabet symbol sequence, in response to requests for alphabet symbols that sequentially request the alphabet symbols, and allocator 212 can be configured to assign each request for an alphabet symbol in the sequence of alphabet symbols representing the second subsequence (208) of source symbols to be reconstructed, the aforementioned measure of an estimate of a probability distribution among the possible values that the respective alphabet symbols can assume. Accordingly, selector 214 can be configured to retrieve, for each request for an alphabet symbol from the alphabet symbol sequence representing the second subsequence (208) of source symbols to be reconstructed, the respective alphabet symbol from the symbol sequence of alphabet from one selected from the plurality of entropic decoders 210, the selection of the size assigned to the respective request depending on the respective alphabet symbol. The match between requests on the decoding side on the one hand, and data flow or encoding on the coding side on the other hand, will be described in more detail with respect to Fig. 4.

Como la primera subsecuencia 214 de símbolos fuente y la segunda subsecuencia 208 de símbolos fuente forman comúnmente una secuencia común 210 de símbolos fuente, el aparato de decodificación entrópica de la Fig. 2a puede, opcionalmente, comprender un recombinador 220 configurado para recombinar la primera subsecuencia 204 y la segunda subsecuencia 208 para obtener la secuencia común 218 de símbolos fuente. Esta secuencia común 208 de símbolos fuente produce una reconstrucción de la secuencia 106 de la Fig. 1a.Since the first source symbol subsequence 214 and the second source symbol subsequence 208 commonly form a common source symbol sequence 210, the entropic decoding apparatus of FIG. 2a may optionally comprise a recombiner 220 configured to recombine the first subsequence 204 and the second subsequence 208 to obtain the common sequence 218 of source symbols. This common sequence 208 of source symbols produces a reconstruction of sequence 106 of FIG. 1a.

De acuerdo con la descripción presentada anteriormente con respecto a la Fig. 1, los símbolos fuente de la primera y segunda subsecuencias 204 y 208 pueden ser elementos de sintaxis de un flujo de bits que puede analizarse. En este caso, el recombinador 220 podría configurarse para reconstruir este flujo de bits que puede analizarse de la secuencia 218 de los elementos de sintaxis mediante el intercalado de los símbolos fuente que llegan a través de la primera y segunda subsecuencias 204 y 208 en un orden prescrito mediante alguna regla de análisis que define un orden entre los elementos de sintaxis. En particular, los elementos de sintaxis pueden ser, como se ha descrito anteriormente, de tipo diferente y el recombinador 220 puede configurarse para recuperar o solicitar elementos de sintaxis de un primer grupo de tipos desde el decodificador VLC 200 a través del subflujo 204, y elementos de sintaxis de un segundo tipo desde el decodificador PIPE 202 a través del subflujo 208. En consecuencia, siempre que la regla de análisis 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 fuente actual de la subsecuencia 204 en la secuencia común 218 y en caso contrario de la subsecuencia 208.In accordance with the description presented above with respect to Fig. 1, the source symbols of the first and second subsequences 204 and 208 may be syntax elements of a bitstream that can be parsed. In this case, the recombiner 220 could be configured to reconstruct this bitstream that can be parsed from sequence 218 of the syntax elements by interleaving the source symbols arriving through the first and second subsequences 204 and 208 in an order prescribed by some parsing rule that defines an order between the syntax elements. In particular, the syntax elements can be, as described above, of a different type and the recombiner 220 can be configured to retrieve or request syntax elements of a first group of types from the VLC decoder 200 through subflow 204, and syntax elements of a second type from the PIPE decoder 202 through subflow 208. Accordingly, as long as the parser rule indicates that a syntax element of a type within the first group is inline next, the recombiner 202 inserts a current source symbol from subsequence 204 into common sequence 218 and otherwise from subsequence 208.

De la misma manera, el decodificador PIPE 202 podría comprender un desimbolizador 222 conectado entre la salida del selector 214 y una entrada del recombinador 220. De modo similar a la descripción anterior con respecto a la Fig. 1, el desimbolizador 222 podría considerarse como externo al decodificador PIPE 202 y podría disponerse incluso detrás del recombinador 202, es decir en el lado de salida del recombinador 220, como alternativa. El desimbolizador 222 podría configurarse para volver a mapear, en unidades de secuencias parciales de símbolos de alfabeto, la secuencia de símbolos de alfabeto 224 producida por el selector 214 en los símbolos fuente, es decir elementos de sintaxis de la subsecuencia 208. De modo similar al recombinador 220, el desimbolizador 222 tiene conocimiento acerca de la construcción de posibles secuencias parciales de símbolos de alfabeto. En particular, el desimbolizador 222 puede analizar símbolos de alfabeto recientemente recibidos desde el selector 214 para determinar en cuanto a si estos símbolos de alfabeto recientemente recibidos producen una secuencia parcial válida de símbolos de alfabeto asociada con un valor respectivo del elemento de sintaxis respectivo, o si este no es el caso, y qué símbolo de alfabeto falta a continuación. Incluso en otras palabras, el simbolizador 222 tiene conocimiento, en cualquier momento, si han de recibirse símbolos de alfabeto adicionales desde el selector 214 para finalizar la recepción de un elemento de sintaxis respectivo o no, y en consecuencia, a qué elemento de sintaxis pertenece uno respectivo de los símbolos de alfabeto producidos por el selector 214. Con este fin, el desimbolizador 222 puede usar un esquema de (des)mapeado de la simbolización que diferencie los elementos de sintaxis de tipo diferente. De modo similar, el asignador 212 tiene conocimiento acerca de la asociación de un símbolo de alfabeto actual a recuperarse desde cualquiera de los decodificadores entrópicos 210 por el selector 214, a uno respectivo de los elementos de sintaxis y puede fijar la medida anteriormente mencionada de estimación de una distribución de probabilidad de este símbolo de alfabeto en consecuencia, es decir depende del tipo de elemento de sintaxis asociado. Aún más, el asignador 212 puede diferenciar entre diferentes símbolos de alfabeto que pertenezcan a la misma secuencia parcial de un símbolo de alfabeto actual y puede fijar la medida de la estimación de distribución de probabilidad de modo diferente para estos símbolos de alfabeto. Se describen con más detalle a continuación detalles en este sentido. Como se describe en la presente memoria, el asignador 212 puede configurarse para asignar contextos a los símbolos de alfabeto. La asignación puede depender del tipo de elemento de sintaxis y/o de la posición dentro de la secuencia parcial de los símbolos de alfabeto del elemento de sintaxis actual. Tan pronto como el asignador 212 haya asignado un contexto al símbolo de alfabeto actual a recuperarse desde cualquiera de los decodificadores entrópicos 210 por el selector 214, el símbolo de alfabeto puede tener intrínsecamente la media de la estimación de la distribución de probabilidad asociada con el mismo dado que cada contexto tiene su medida de estimación asociada con el mismo. Adicionalmente, el contexto - y su medida asociada de estimación de la distribución de probabilidad - pueden adaptarse de acuerdo con las estadísticas actuales de los símbolos de alfabeto del contexto respectivo que se han recuperado desde los decodificadores entrópicos 210 hasta el momento. Se presentan con más detalle a continuación detalles en este sentido.In the same way, the PIPE decoder 202 could comprise a de-symbolizer 222 connected between the output of the selector 214 and an input of the recombiner 220. Similarly to the previous description with respect to Fig. 1, the de-symbolizer 222 could be considered as external to the PIPE decoder 202 and could even be arranged behind the recombiner 202, ie on the output side of the recombiner 220, as an alternative. The de-symbolizer 222 could be configured to remap, in units of partial alphabet symbol sequences, the alphabet symbol sequence 224 produced by selector 214 into the source symbols, ie, subsequence 208 syntax elements. Similarly to recombiner 220, deimbolizer 222 is aware of the construction of possible partial sequences of alphabet symbols. In particular, the de-symbolizer 222 can analyze recently received alphabet symbols from selector 214 to determine as to whether these recently received alphabet symbols produce a valid partial sequence of alphabet symbols associated with a respective value of the respective syntax element, or if this is not the case, and what alphabet symbol is missing next. Even in other words, symbolizer 222 is aware, at any time, whether additional alphabet symbols are to be received from selector 214 to end reception of a respective syntax element or not, and consequently, to which syntax element it belongs. a respective one of the alphabet symbols produced by selector 214. To this end, the de-symbolizer 222 can use a symbolization (de) mapping scheme that differentiates syntax elements of different type. Similarly, mapper 212 is aware of the association of a current alphabet symbol to be retrieved from any of the entropic decoders 210 by selector 214, to a respective one of the syntax elements, and can set the aforementioned measure of estimation of a probability distribution of this alphabet symbol accordingly, i.e. it depends on the type of associated syntax element. Still further, allocator 212 can differentiate between different alphabet symbols belonging to the same partial sequence of a current alphabet symbol and can set the measure of the probability distribution estimate differently for these alphabet symbols. Details in this regard are described in more detail below. As described herein, mapper 212 can be configured to assign contexts to alphabet symbols. The assignment may depend on the type of syntax element and / or the position within the partial sequence of the alphabet symbols of the current syntax element. As soon as allocator 212 has assigned a context to the current alphabet symbol to be retrieved from any of the entropy decoders 210 by selector 214, the alphabet symbol may intrinsically have the mean of the estimate of the probability distribution associated with it. since each context has its estimation measure associated with it. Additionally, the context - and its associated probability distribution estimation measure - can be adapted according to the current statistics of the respective context alphabet symbols that have been retrieved from the entropic decoders 210 thus far. I know They present in more detail below details in this regard.

De modo similar a la explicación anterior de la Fig. 1, puede ser posible que la correspondencia entre los símbolos fuente anteriormente mencionados de las subsecuencias 204 y 208 en elementos de sintaxis no sea una correspondencia uno a uno. Por el contrario, los elementos de sintaxis pueden haberse descompuesto en un número entero de símbolos fuente variando el número, eventualmente, entre los elementos de sintaxis pero siendo, en cualquier caso, mayor que uno al menos para un elemento de sintaxis. Como se ha indicado anteriormente, las realizaciones a continuación se centran en el manejo de esta clase de elementos de sintaxis, y elementos de sintaxis de otras clases pueden incluso no estar presentes.Similar to the explanation above in Fig. 1, it may be possible that the correspondence between the aforementioned source symbols of subsequences 204 and 208 in syntax elements is not a one-to-one correspondence. Rather, the syntax elements may have been decomposed into an integer number of source symbols by varying the number, eventually, between the syntax elements but in any case being greater than one at least for one syntax element. As noted above, the embodiments below focus on handling this class of syntax elements, and syntax elements from other classes may not even be present.

Para el manejo de los elementos de sintaxis recién mencionados, el aparato de decodificación entrópica de la Fig. 2a puede comprender un componedor 224 configurado para rehacer la descomposición realizada por el descomponedor 136 de la Fig. 1a. En particular, el componedor 224 puede configurarse para componer la secuencia 226 de elementos de sintaxis desde los símbolos fuente de la secuencia 218 o, si el recombinador 220 está ausente, las subsecuencias 204 y 208, componiendo individualmente cada elemento de sintaxis a partir de un número entero respectivo de símbolos fuente perteneciendo uno de los símbolos fuente del número entero de símbolos fuente a la primera subsecuencia 204 y perteneciendo otro de los símbolos fuente del número entero de símbolos fuente del mismo elemento de sintaxis a la segunda subsecuencia 208. Con esta medida, ciertos elementos de sintaxis pueden haberse descompuesto en el lado del codificador para separar componentes adecuados para la decodificación VLC de un componente restante que haya de pasarse a través de una trayectoria de decodificación PIPE. De modo similar a la explicación anterior, el elemento de sintaxis puede ser un tipo diferente y el componedor 224 puede configurarse para realizar la composición individual dependiendo del tipo de elementos de sintaxis. En particular, el componedor 224 puede configurarse para obtener los elementos de sintaxis respectivos mediante la combinación lógica o matemática del número entero de símbolos fuente del elemento de sintaxis respectivo. Por ejemplo, el componedor 224 puede configurarse, para aplicar, a cada elemento de sintaxis, , -. : o ■ al primer y segundo símbolos fuente de un elemento de sintaxis.For handling the aforementioned syntax elements, the entropic decoding apparatus of Fig. 2a may comprise a composer 224 configured to redo the decomposition performed by the decomposer 136 of Fig. 1a. In particular, the composer 224 can be configured to compose the sequence 226 of syntax elements from the source symbols of the sequence 218 or, if the recombiner 220 is absent, the subsequences 204 and 208, composing each syntax element individually from a respective integer number of source symbols one of the source symbols of the integer number of source symbols belonging to the first subsequence 204 and another of the source symbols belonging to the integer number of source symbols of the same syntax element to the second subsequence 208. With this measure , certain syntax elements may have been decomposed on the encoder side to separate components suitable for VLC decoding from a remaining component to be passed through a PIPE decoding path. Similar to the explanation above, the syntax element can be a different type and composer 224 can be configured to perform individual composition depending on the type of syntax elements. In particular, the composer 224 can be configured to obtain the respective syntax elements by logical or mathematical combination of the integer number of source symbols of the respective syntax element. For example, Composer 224 can be configured to apply, to each syntax element, -. : or ■ to the first and second source symbols of a syntax element.

Como se ha descrito anteriormente, las realizaciones descritas en el presente documento a continuación, sin embargo, se concentran en elementos de sintaxis que se descomponen por el descomponedor 136 de acuerdo con las Figs. 1b y 1c y las alternativas descritas en relación a las mismas. La Fig. 2a muestra cómo puede funcionar el componedor 224 para reconstruir estos elementos de sintaxis a partir de sus símbolos fuente 218.As described above, the embodiments described herein below, however, focus on syntax elements that are decomposed by decomposer 136 according to Figs. 1b and 1c and the alternatives described in relation to them. Fig. 2a shows how composer 224 can work to reconstruct these syntax elements from their source symbols 218.

Como se muestra en la Fig. 2b, el componedor 224 está configurado para componer dichos elementos de sintaxis z en etapas a partir de los símbolos fuente entrantes s1 a sx, siendo x cualquiera de 1 a 3 en el ejemplo presente. Pueden existir dos o más etapas. Como se muestra en la Fig. 2b, el componedor 224 fija preliminarmente z como el primer símbolo s1 y comprueba si z es igual al primer límite límite1. Si no es este el caso, se ha encontrado z. En caso contrario, el componedor 224 añade el siguiente símbolo fuente s2 del flujo de símbolos fuente 218 a z y comprueba de nuevo si esta z es igual a límite2. Si no, se ha encontrado z. Si no, el componedor 224 añade el siguiente símbolo fuente s3 del flujo de símbolos fuente 218 a z, para obtener z en su forma final. Son fácilmente deducibles generalizaciones sobre un número máximo mayor o menor de símbolos fuente a partir de la descripción anterior, y dichas alternativas también se describirán a continuación.As shown in Fig. 2b, the composer 224 is configured to compose said z syntax elements in stages from the incoming source symbols s1 to sx, x being any 1 to 3 in the present example. There may be two or more stages. As shown in Fig. 2b, the composer 224 preliminarily sets z as the first symbol s1 and checks whether z equals the first limit limit1. If this is not the case, z has been found. Otherwise, composer 224 adds the following source symbol s2 from source symbol stream 218 to z and checks again whether this z equals limit2. If not, z has been found. If not, the composer 224 adds the following source symbol s3 from the source symbol stream 218 to z, to obtain z in its final form. Generalizations about a larger or smaller maximum number of source symbols are easily deducible from the above description, and such alternatives will also be described below.

En cualquier caso, todos estos diferentes componentes o símbolos fuente o resultantes están de acuerdo con las realizaciones a continuación, codificados entre las alternativas de codificación. Al menos uno de ellos se envía por el subdivisor al codificador PIPE 104, y al menos otro de los mismos se envía al codificador VLC 102.In any case, all these different components or resulting or source symbols are in accordance with the following embodiments, coded among the coding alternatives. At least one of them is sent by the subdivider to the PIPE encoder 104, and at least one of them is sent to the VLC 102 encoder.

Las realizaciones ventajosas particulares se describen con más detalle a continuación. Estos detalles se concentran sobre las posibilidad favorables de dividir el intervalo de valores de los elementos de sintaxis y los esquemas de codificación VLC y PIPE entrópicos que pueden usarse para codificar los símbolos fuente.Particular advantageous embodiments are described in more detail below. These details focus on the favorable possibilities of dividing the range of values of the syntax elements and the entropy VLC and PIPE encoding schemes that can be used to encode the source symbols.

Adicionalmente, como se ha descrito también anteriormente con respecto a la Fig. 1, el aparato de decodificación entrópica de la Fig. 2a puede configurarse para recibir el primer flujo de bits 206 así como la pluralidad de segundos flujos de bits 216 por separado o en una forma intercalada por medio de un flujo de bits 228 intercalado. En este último caso, el aparato de decodificación entrópica de la Fig. 2a puede comprender un desintercalador 230 configurado para desintercalar el flujo de bits 228 intercalado para obtener el primer flujo de bits 206 por un lado y la pluralidad de segundos flujos de bits 216 por otro lado. De modo similar a la explicación anterior de la Fig. 1, el desintercalador 230 puede subdividirse en dos etapas, concretamente un desintercalador 232 para la desintercalación del flujo de bits 228 intercalado en dos partes, concretamente el flujo de bits 206 por un lado y una forma intercalada 234 del segundo flujo de bits 216 por otro lado, y un desintercalador 236 para la desintercalación de este último flujo de bits 234 para obtener los flujos de bits 216 individuales.Additionally, as also described above with respect to Fig. 1, the entropic decoding apparatus of Fig. 2a can be configured to receive the first bit stream 206 as well as the plurality of second bit streams 216 separately or in an interleaved shape by means of an interleaved bitstream 228. In the latter case, the entropic decoding apparatus of Fig. 2a may comprise a deinterleaver 230 configured to deinterleale the interleaved bitstream 228 to obtain the first bitstream 206 on one side and the plurality of second bitstreams 216 on the one hand other side. Similar to the explanation above in Fig. 1, deinterleaver 230 can be subdivided into two stages, namely deinterleaver 232 for deinterleaving bitstream 228 interleaved into two parts, specifically bitstream 206 on one side and one interleaved form 234 of the second bitstream 216 on the other hand, and a deinterleaver 236 for deinterleaving of the latter bitstream 234 to obtain the individual bitstreams 216.

Así, la Fig. 1a y la Fig. 2a mostraron un aparato de codificación entrópica por un lado y un aparato de decodificación entrópica adecuado para la decodificación del resultado de codificación obtenido por el aparato de codificación entrópica de la Fig. 1, por otro lado. Detalles con relación a muchos de los elementos mostrados en la Fig. 1a y la Fig. 2 se describen con más detalle con relación a las figuras adicionales. En consecuencia, se hace referencia a estos detalles en la descripción que sigue y estos detalles deberán considerarse que se aplican también a las realizaciones de la Fig. 1a y la Fig. 2 individualmente, siempre que estos detalles puedan implementarse por separado en las realizaciones anteriormente descritas. Simplemente con respecto a los intercaladores y desintercaladores 132 y 234, se realiza aquí alguna indicación adicional. En particular, la intercalación de los flujos de bits 112 y 118 puede ser favorable en caso de que los flujos de bits hayan de multiplexarse en un canal para transmitirse. En este caso, puede ser favorable intercalar el flujo de bits VLC 112 por un lado y los flujos de bits de codificación PIPE 118 por otro lado de modo que obedezcan a ciertas condiciones a satisfacerse tal como obedecer algún retardo máximo de decodificación. Dicho en otras palabras, puede ser necesario que el desplazamiento de tiempo relativo entre los tiempos de los elementos de sintaxis y símbolos fuente, respectivamente, sean recuperables en el lado de decodificación por un lado y el desplazamiento relativo en el tiempo de acuerdo con su posición en el flujo de bits que puede analizarse por otro lado, no supere un cierto retardo máximo. Se describen a continuación muchas alternativas para resolver este problema. Una de estas posibilidades implica que los codificadores entrópicos 116 sean un tipo de codificador de longitud variable configurado para mapear secuencias de símbolos de alfabeto a palabras de código, y que los decodificadores entrópicos 210 hagan el mapeado inverso. Las palabras de código del flujo de bits VLC 112 y los flujos de bits PIPE 118 pueden seleccionarse, aunque no tienen que hacerlo, de modo que ninguna palabra de código de ninguno de estos flujos de bits sea el prefijo de ninguna palabra de código de ninguno de los otros flujos de bits, de modo que los bordes de las palabras de código permanezcan únicamente determinables en el lado del decodificador. En cualquier caso, el intercalador 128 puede configurarse para reservar y almacenar en memoria intermedia una secuencia de entradas de palabras de código para la palabra de código dentro del primer flujo de bits 112 y del segundo flujo de bits 118 en un orden secuencial dependiendo de un orden en el que los símbolos de alfabeto de la secuencia 124 de símbolos de alfabeto enviados por el selector 120 a la pluralidad de codificadores entrópicos 116 dan como resultado un inicio de una nueva secuencia de símbolos de alfabeto a mapearse a una palabra de código respectiva en el codificador entrópico 116 respectivo y se mapee un nuevo símbolo fuente del segundo subflujo 108 por el codificador v Lc 102, respectivamente. En otras palabras, el intercalador 128 inserta las palabras de código del flujo de bits 112 dentro del flujo de bits 126 común en el orden de los símbolos fuente a partir de los que se han obtenido mediante la codificación VLC, en su orden dentro del subflujo 108 y el flujo de símbolos fuente 106, respectivamente. Las palabras de código producidas por los codificadores entrópicos 116 se insertan dentro del flujo de bits 126 común entre las consecutivas de las palabras de código del flujo de bits VLC 112. Debido a la categorización de la codificación PIPE de los símbolos de alfabeto por el asignador 114 y selector 120, respectivamente, cada una de las palabras de código de los codificadores entrópicos 116 tiene símbolos de alfabeto de diferentes símbolos fuente del subflujo 110 codificado en las mismas. La posición de las palabras de código de los flujos de bits 118 codificados PIPE dentro del flujo de bits 126 común entre sí y con relación a la palabra de código VLC del flujo de bits 112, se determina por el primer símbolo de alfabeto codificado en cada palabra de código, respectivamente, es decir el más antiguo en el tiempo. El orden de estos símbolos de alfabeto primarios codificados dentro de las palabras de código de los flujos de bits 118 en el flujo de los símbolos de alfabeto 124 determina al orden de las palabras de código de los flujos de bits 118 dentro del flujo de bits 126 común entre sí, con relación a las palabras de código VLC del flujo de bits 112 el símbolo fuente al cual pertenece estos símbolos de alfabeto primario codificados dentro de las palabras de código del flujo de bits 118, determinan entre qué palabras de código consecutivas del flujo de bits 112 se ha de posicionar la palabra de código respectiva de cualquiera de los flujos de bits 118. En particular, las palabras de código VLC consecutivas entre las que se han de posicionar las palabras de código respectivas de cualquiera de los flujos de bits 118, son aquellas entre las que el símbolo fuente del subflujo 110 se posiciona de acuerdo con el orden original de un flujo de símbolos fuente no subdividido 106, al que pertenece el símbolo de alfabeto primario respectivo codificado en la palabra de código respectiva del flujo de bits 118. El intercalador 128 puede configurarse para eliminar las palabras de código introducidas dentro de las entradas de palabras de código anteriormente mencionadas en orden secuencial para obtener el flujo de bits 126 común de palabras de código intercaladas. Como ya se ha descrito anteriormente, los codificadores entrópicos 116 pueden configurarse para introducir secuencialmente sus palabras de código en las entradas de palabras de código reservadas para el codificador entrópico 116 respectivo y el selector 120 puede configurarse para enviar los símbolos de alfabeto que representan los símbolos fuente del segundo subflujo 110 en un orden que mantiene un orden en el que los símbolos fuente del primer subflujo 108 y del segundo subflujo 110 se intercalaron dentro de la secuencia 106 de símbolos fuente.Thus, Fig. 1a and Fig. 2a showed an entropic encoding apparatus on the one hand and an entropic decoding apparatus suitable for decoding the encoding result obtained by the entropic encoding apparatus of Fig. 1, on the other hand. . Details regarding many of the elements shown in Fig. 1a and the Fig. 2 are described in more detail in relation to additional figures. Accordingly, these details are referred to in the description that follows, and these details should be considered to apply to the Fig. 1a and Fig. 2 embodiments individually as well, provided that these details can be implemented separately in the above embodiments. described. Simply with regard to interleavers and deinterleavers 132 and 234, some further indication is made here. In particular, the interleaving of bit streams 112 and 118 may be favorable if the bit streams are to be multiplexed into a channel to be transmitted. In this case, it may be favorable to interleaving the VLC bitstream 112 on the one hand and the PIPE encoding bitstreams 118 on the other hand so that they obey certain conditions to be satisfied such as obeying some maximum decoding delay. In other words, it may be necessary for the relative time offset between the times of the syntax elements and source symbols, respectively, to be recoverable on the one hand decoding side and the relative time offset according to their position in the bitstream that can be parsed on the other hand, do not exceed a certain maximum delay. Many alternatives to solve this problem are described below. One such possibility involves that entropic encoders 116 be a type of variable length encoder configured to map sequences of alphabet symbols to codewords, and that entropic decoders 210 do the reverse mapping. The code words for the VLC 112 bit stream and the PIPE 118 bit streams can be selected, but do not have to be selected, so that no code word for any of these bit streams is prefixed for any code word for any of the other bit streams, so that the edges of the codewords remain uniquely determinable on the decoder side. In either case, the interleaver 128 may be configured to reserve and buffer a sequence of codeword entries for the codeword within the first bitstream 112 and the second bitstream 118 in sequential order depending on a order in which the alphabet symbols in sequence 124 of alphabet symbols sent by selector 120 to the plurality of entropic encoders 116 result in a start of a new sequence of alphabet symbols to be mapped to a respective code word in the respective entropic encoder 116 and a new source symbol of the second subflow 108 is mapped by the encoder v L c 102, respectively. In other words, the interleaver 128 inserts the code words from the bit stream 112 into the common bit stream 126 in the order of the source symbols from which they were derived by VLC encoding, in their order within the subflow 108 and source symbol stream 106, respectively. Codewords produced by entropic encoders 116 are inserted into bitstream 126 common among consecutive codewords in bitstream VLC 112. Due to the categorization of the PIPE encoding of alphabet symbols by the allocator 114 and selector 120, respectively, each of the code words of the entropy encoders 116 have alphabet symbols of different source symbols of the subflow 110 encoded therein. The position of the code words of the PIPE encoded bitstreams 118 within the common bitstream 126 and relative to the VLC codeword of the bitstream 112, is determined by the first encoded alphabet symbol in each code word, respectively, ie the oldest in time. The order of these primary alphabet symbols encoded within the codewords of the bitstreams 118 in the alphabet symbol stream 124 determines the order of the codewords of the bitstreams 118 within the bitstream 126 Common to each other, relative to the VLC codewords in bit stream 112, the source symbol to which these primary alphabet symbols coded within the bitstream codewords 118 belong, determine which consecutive codewords in the stream bit 112 the respective code word of any of the bit streams 118 is to be positioned. In particular, the consecutive VLC codewords among which the respective codewords of any of the bitstreams 118 are to be positioned , are those among which the source symbol of subflow 110 is positioned according to the original order of a non-subdivided source symbol stream 106, to which the symbol belongs respective primary alphabet bolus encoded in the respective codeword of bit stream 118. Interleaver 128 can be configured to remove the codewords entered within the aforementioned codeword entries in sequential order to obtain bitstream 126 common interspersed codeword. As already described above, the entropic encoders 116 can be configured to sequentially enter their codewords into the reserved codeword entries for the respective entropic encoder 116, and selector 120 can be configured to output the alphabet symbols representing the symbols. source of the second subflow 110 in an order that maintains an order in which the source symbols of the first subflow 108 and of the second subflow 110 were interleaved within the source symbol sequence 106.

Pueden proporcionarse medidas adicionales para hacer frente a situaciones en las que ciertos de los codificadores entrópicos 116 se seleccionan tan aleatoriamente que lleva mucho tiempo obtener una palabra de código válida dentro de ese codificador entrópico 116 raramente usado. Ejemplos de dichas medidas se describen con más detalle a continuación. En particular, el intercalador 128 junto con el codificador entrópico 116 pueden, en este caso, configurarse para purgar sus símbolos de alfabeto recogidos hasta el momento y las palabras de código que se han introducido dentro de las entradas de palabras de código anteriormente mencionadas, respectivamente, de tal manera que el tiempo del procedimiento de purga puede predecirse o emularse en el lado de decodificación.Additional measures can be provided to deal with situations where certain of the entropic encoders 116 are selected so randomly that it takes a long time to obtain a valid codeword within that rarely used entropic encoder 116. Examples of such measures are described in more detail below. In particular, the interleaver 128 together with the entropic encoder 116 can, in this case, be configured to purge their alphabet symbols collected so far and the code words that have been entered into the aforementioned code word entries, respectively , such that the purge procedure time can be predicted or emulated on the decoding side.

En el lado de decodificación, el desintercalador 230 puede actuar en el sentido inverso: siempre que, de acuerdo con el esquema de análisis anteriormente mencionado, el siguiente símbolo fuente a decodificarse, sea un símbolo codificado en VLC, una palabra de código actual dentro del flujo de bits 228 común se considera como una palabra de código VLC y se envía dentro del flujo de bits 206 al decodificador VLC 200. Por otro lado, siempre que cualquiera de los símbolos de alfabeto que pertenecen a cualquiera de los símbolos codificados PIPE del subflujo 208 sea un símbolo de alfabeto primario, es decir necesite un nuevo mapeado de una palabra de código de uno respectivo de los flujos de bits 216 a una secuencia de símbolos de alfabeto respectiva por el decodificador entrópico 210 respectivo, la palabra de código actual del flujo de bits 228 común se considera como una palabra de código codificada PIPE y se envía al decodificador entrópico 210 respectivo. La detección del siguiente borde de palabra de código, es decir la detección de la extensión de la siguiente palabra de código desde el extremo de la palabra de código que se acaba de enviar a cualquiera de los decodificadores 200 y 202, respectivamente, hasta su fin dentro del flujo de bits 228 intercalado entrante puede aplazarse, y realizarse bajo el conocimiento de que el decodificador 200 y 202 es el receptor especializado de esta siguiente palabra de código de acuerdo con la regla anteriormente descrita: basándose en este conocimiento, el libro de códigos usado por el decodificador receptor es conocido y la palabra de código respectiva detectable. Si, por otro lado, los libros de códigos se diseñaran de modo que los bordes de la palabra de código fueran detectables sin un conocimiento a priori acerca del decodificador receptor entre 200 y 202, entonces la separación de palabras de código podría realizarse en paralelo. En cualquier caso, debido a la intercalación, los símbolos fuente están disponibles en el decodificador en una forma entrópica decodificada, es decir como símbolos fuente, en su orden correcto con un retardo razonable.On the decoding side, the deinterleaver 230 can act in the reverse direction: provided that, according to the aforementioned analysis scheme, the next source symbol to be decoded is a VLC-encoded symbol, a current code word within the common 228 bit stream is considered as a word of VLC code and is sent within bitstream 206 to VLC decoder 200. On the other hand, as long as any of the alphabet symbols belonging to any of the PIPE encoded symbols in subflow 208 is a primary alphabet symbol, ie need a new mapping of a codeword from a respective one of bit streams 216 to a respective alphabet symbol sequence by the respective entropic decoder 210, the current codeword of common bitstream 228 is considered as a PIPE encoded code and sent to the respective entropic decoder 210. Detecting the next codeword edge, i.e. detecting the extension of the next codeword from the end of the codeword that has just been sent to any of the decoders 200 and 202, respectively, to its end within the incoming interleaved bitstream 228 may be deferred, and performed under the knowledge that decoder 200 and 202 is the specialized receiver of this next codeword according to the rule described above: based on this knowledge, the codebook used by the receiving decoder is known and the respective code word detectable. If, on the other hand, the codebooks were designed so that the edges of the codeword were detectable without a priori knowledge of the receiving decoder between 200 and 202, then codeword separation could be performed in parallel. In any case, due to interleaving, the source symbols are available in the decoder in a decoded entropic form, ie as source symbols, in their correct order with reasonable delay.

Después de haber descrito las realizaciones anteriores para un aparato de codificación entrópica y el aparato de decodificación entrópica respectivo, a continuación se describen realizaciones más en detalle de los codificadores PIPE y decodificadores PIPE anteriormente mencionados.Having described the above embodiments for an entropic encoding apparatus and the respective entropic decoding apparatus, the following describes more detailed embodiments of the aforementioned PIPE encoders and PIPE decoders.

Un codificador PIPE de acuerdo con una realización se ilustra en la Fig. 3. El mismo puede usarse como codificador PIPE en la Fig. 1a. El codificador PIPE convierte sin pérdidas un flujo de símbolos fuente 1 en un conjunto de dos o más flujos de bits parciales 12. Cada símbolo fuente 1 puede asociarse con una categoría o tipo entre un conjunto de una o más categorías o tipos. Como un ejemplo, las categorías pueden especificar el tipo de símbolo fuente. En el contexto de la codificación de vídeo híbrida, una categoría separada puede asociarse con modos de codificación de macrobloque, modos de codificación de bloque, índices de imagen de referencia, diferencias de vector de movimiento, indicadores de subdivisión, indicadores de bloque codificado, parámetros de cuantificación, niveles de coeficiente de transformada, etc. En otras áreas de aplicación tales como audio, voz, texto, documentos, o codificación de datos en general, son posibles diferentes categorizaciones de símbolos fuente.A PIPE encoder according to one embodiment is illustrated in Fig. 3. It can be used as a PIPE encoder in Fig. 1a. The PIPE encoder losslessly converts a stream of source symbols 1 to a set of two or more partial bit streams 12. Each source symbol 1 can be associated with a category or type among a set of one or more categories or types. As an example, categories can specify the type of font symbol. In the context of hybrid video encoding, a separate category can be associated with macroblock encoding modes, block encoding modes, reference image indices, motion vector differences, subdivision flags, code block flags, parameters quantification, transform coefficient levels, etc. In other application areas such as audio, voice, text, documents, or data encoding in general, different categorizations of source symbols are possible.

En general, cada símbolo fuente puede tomar un valor de un conjunto finito o contable infinito de valores, donde el conjunto de posibles valores del símbolo fuente puede diferir para diferentes categorías de símbolos fuente. Para reducir la complejidad del algoritmo de codificación y decodificación y para permitir un diseño de codificación y decodificación general para diferentes símbolos fuente y categorías de símbolos fuente, los símbolos fuente 1 se convierten en conjuntos ordenados de decisiones binarias y estas decisiones binarias se procesan a continuación mediante algoritmos de codificación binaria sencillos. Por lo tanto, el conversor a binario 2 mapea de manera biyectiva el valor de cada símbolo fuente 1 en una secuencia (o cadena) de binarios 3. La secuencia de binarios 3 representa un conjunto de decisiones binarias ordenadas. Cada binario 3 o decisión binaria puede tomar un valor de un conjunto de dos valores, por ejemplo, uno de los valores 0 y 1. El esquema de conversión a binario puede ser diferente para diferentes categorías de símbolos fuente. El esquema de conversión a binario para una categoría de símbolos fuente particular puede depender del conjunto de posibles valores del símbolo fuente y/u otras propiedades de los símbolos fuente para la categoría particular. La Tabla 1 ilustra tres ejemplos de esquemas de conversión a binario para conjuntos infinitos contables. Los esquemas de conversión a binario para conjuntos infinitos contables pueden aplicarse también para conjuntos finitos de valores de símbolos. En particular para conjuntos finitos grandes de valores de símbolos, la ineficiencia (resultante de secuencias de binarios no usadas), puede ser despreciable, pero la universalidad de dichos esquemas de conversión a binario proporciona una ventaja en términos de complejidad y requisitos de memoria. Para conjuntos finitos pequeños de valores de símbolos, es frecuentemente preferible (en términos de eficiencia de codificación) adaptar el esquema de conversión a binario al número de posibles valores de símbolos. La Tabla 2 ilustra tres esquemas de conversión a binario de ejemplo para conjuntos finitos de 8 valores. Los esquemas de conversión a binario para conjuntos finitos pueden deducirse de los esquemas de conversión a binario universales para conjuntos infinitos contables mediante la modificación de algunas secuencias de binarios en una forma en que los conjuntos finitos de secuencias de binarios representan un código sin redundancias (y potencialmente reordenación de las secuencias de binarios). Como un ejemplo, el esquema de conversión a binario unario truncado en la Tabla 2 se creó mediante la modificación de la secuencia de binarios para el símbolo fuente 7 de la conversión a binario unaria universal (véase la Tabla 1). La conversión a binario Exp-Golomb truncada y reordenada de orden 0 en la Tabla 2 se creó mediante la modificación de la secuencia de binarios para el símbolo fuente 7 de la conversión a binario unaria universal Exp-Golomb de orden 0 (véase Tabla 1) y mediante la reordenación de las secuencias de binarios (la secuencia de binarios truncada para el símbolo 7 se asignó al símbolo 1). Para conjuntos finitos de símbolos, es posible también usar esquemas de conversión a binario no sistemáticos / no universales, tal como se ejemplifica en la última columna de la Tabla 2.In general, each source symbol can take a value from an infinite or countable set of values, where the set of possible values of the source symbol can differ for different categories of source symbols. To reduce the complexity of the encoding and decoding algorithm and to allow a general encoding and decoding design for different source symbols and source symbol categories, source symbols 1 are converted to ordered sets of binary decisions and these binary decisions are processed below using simple binary coding algorithms. Therefore, the binary converter 2 bijectively maps the value of each source symbol 1 into a sequence (or chain) of binaries 3. Binary sequence 3 represents a set of ordered binary decisions. Each binary 3 or binary decision can take a value from a set of two values, for example, one of the values 0 and 1. The binary conversion scheme may be different for different categories of source symbols. The binary conversion scheme for a particular source symbol category may depend on the set of possible values of the source symbol and / or other properties of the source symbols for the particular category. Table 1 illustrates three examples of binary conversion schemes for infinite accounting sets. The binary conversion schemes for countable infinite sets can also be applied for finite sets of symbol values. In particular for large finite sets of symbol values, inefficiency (resulting from unused binary sequences) may be negligible, but the universality of such binary conversion schemes provides an advantage in terms of complexity and memory requirements. For small finite sets of symbol values, it is often preferable (in terms of coding efficiency) to adapt the binary conversion scheme to the number of possible symbol values. Table 2 illustrates three example binary conversion schemes for finite sets of 8 values. Binary conversion schemes for finite sets can be deduced from universal binary conversion schemes for countable infinite sets by modifying some binary sequences in a way that finite sets of binary sequences represent code without redundancy (and potentially rearranging binary sequences). As an example, the truncated unary binary conversion scheme in Table 2 was created by modifying the binary sequence for source symbol 7 of conversion to universal unary binary (see Table 1). Conversion to truncated and rearranged Exp-Golomb binary of order 0 in Table 2 was created by modifying the sequence of binaries for source symbol 7 of conversion to universal unary binary Exp-Golomb of order 0 (see Table 1) and by reordering the binary sequences (the truncated binary sequence for symbol 7 was assigned to symbol 1). For finite sets of symbols, it is also possible to use unsystematic / non-universal conversion to binary schemes, as exemplified in the last column of Table 2.

Tabla 1: Ejemplos de conversión a binario para conjuntos infinitos contables (o conjuntos finitos grandes). Table 1: Examples of conversion to binary for countable infinite sets (or large finite sets).

Figure imgf000012_0001
Figure imgf000012_0001

Figure imgf000012_0002
Figure imgf000012_0002

continuacióncontinuation

Figure imgf000012_0003
Figure imgf000012_0003

Cada binario 3 de la secuencia de binarios creada por el conversor a binario 2 se suministra en el asignador de parámetros 4 en orden secuencial. El asignador de parámetros asigna un conjunto de uno o más parámetros a cada binario 3 y produce la salida del binario con el conjunto de parámetros 5 asociado. El conjunto de parámetros se determina en exactamente la misma forma en el codificador y decodificador. El conjunto de parámetros puede consistir en uno o más de los siguientes parámetros:Each binary 3 of the binary sequence created by converter to binary 2 is supplied in parameter mapper 4 in sequential order. The parameter mapper assigns a set of one or more parameters to each binary 3 and produces the output of the binary with the associated parameter set 5. The set of parameters is determined in exactly the same way in the encoder and decoder. The parameter set can consist of one or more of the following parameters:

- una medida de una estimación de la probabilidad de uno de los dos posibles valores de binario para el binario actual,- a measure of an estimate of the probability of one of the two possible binary values for the current binary,

- una medida de una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario actual,- a measure of a probability estimate for the least likely or most likely binary value for the current binary,

- un identificador que especifica una estimación de cuál de los dos posibles valores de binario representa el valor de binario más probable o menos probable para el binario actual,- an identifier that specifies an estimate of which of the two possible binary values represents the most likely or least likely binary value for the current binary,

- la categoría del símbolo fuente asociado,- the category of the associated source symbol,

- una medida de la importancia del símbolo fuente asociado,- a measure of the importance of the associated source symbol,

- una medida de la localización del símbolo asociado (por ejemplo, en conjuntos de datos temporales, espaciales o volumétricos),- a measure of the location of the associated symbol (eg in temporal, spatial or volumetric data sets),

- un identificador que especifica la protección del código de canal para el binario o el símbolo fuente asociado, - un identificador que especifica el esquema de cifrado para el binario o el símbolo fuente asociado,- an identifier that specifies the protection of the channel code for the binary or associated source symbol, - an identifier that specifies the encryption scheme for the binary or associated source symbol,

- un identificador que especifica una clase para el símbolo asociado,- an identifier that specifies a class for the associated symbol,

- el número de binario en la secuencia de binarios para el símbolo fuente asociado.- the binary number in the binary sequence for the associated source symbol.

En una realización, el asignador de parámetros 4 asocia cada binario 3, 5 con una medida de una estimación de la probabilidad para uno de los dos posibles valores de binario para el binario actual. El asignador de parámetros 4 asocia cada binario 3, 5 con una medida de una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario actual y un identificador que especifica una estimación de cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable para el binario actual. Debería observarse de que la probabilidad para el valor de binario menos probable o más probable y el indicador que especifica cuál de los dos valores de binario posibles representa el valor de binario menos probable o más probable son medidas equivalentes de la probabilidad de uno de los dos valores de binario posibles.In one embodiment, the parameter mapper 4 associates each binary 3, 5 with a measure of a probability estimate for one of the two possible binary values for the current binary. Parameter mapper 4 associates each binary 3, 5 with a measure of a probability estimate for the least likely or most likely binary value for the current binary and an identifier that specifies an estimate of which of the two possible binary values represents the least likely or most likely binary value for the current binary. It should be noted that the probability for the least likely or most probable binary value and the indicator specifying which of the two possible binary values represents the least probable or most probable binary value are equivalent measures of the probability of one of the two possible binary values.

En una realización adicional, el asignador de parámetros 4 asocia cada binario 3, 5 con una medida de una estimación de la probabilidad para uno de los dos posibles valores de binario para el binario actual y uno o más parámetros adicionales (que pueden ser uno o más de los parámetros listados anteriormente). En una realización adicional, el asignador de parámetros 4 asocia cada binario 3, 5 con una medida de la estimación de la probabilidad del valor de binario menos probable o más probable para el binario actual, un identificador que especifica la estimación para cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable para el binario actual, y uno o más parámetros adicionales (que pueden ser uno o más de los parámetros listados anteriormente).In a further embodiment, the parameter mapper 4 associates each binary 3, 5 with a measure of a probability estimate for one of the two possible binary values for the current binary and one or more additional parameters (which may be one or more than the parameters listed above). In a further embodiment, the parameter mapper 4 associates each binary 3, 5 with a measure of the probability estimate of the least likely or most probable binary value for the current binary, an identifier that specifies the estimate for which of the two possible binary values represents the least likely or most binary value probable for the current binary, and one or more additional parameters (which may be one or more of the parameters listed above).

En una realización, el asignador de parámetros 4 determina una o más de las medidas de probabilidad mencionadas anteriormente (medida de una estimación de la probabilidad de uno o más valores de binario posibles para el binario actual, medida de una estimación de la probabilidad del valor de binario menos probable o más probable para el binario actual, identificador que especifica una estimación de cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable para el binario actual) basándose en un conjunto de uno o más símbolos ya codificados. Los 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 corresponden al conjunto de datos (tales como bloques o grupos de muestras) de localizaciones espaciales y/o temporales vecinas (en relación al conjunto de datos asociado con el símbolo fuente actual), o uno o más símbolos ya codificados de diferentes categorías de símbolos que corresponden a conjuntos de datos de la misma y/o localizaciones espaciales y/o temporales vecinas (en relación al conjunto de datos asociado con el símbolo fuente actual).In one embodiment, the parameter mapper 4 determines one or more of the above-mentioned probability measures (measure of an estimate of the probability of one or more possible binary values for the current binary, measure of an estimate of the probability of the value binary least likely or most likely for current binary, identifier specifying an estimate of which of the two possible binary values represents the least likely or most likely binary value for the current binary) based on a set of one or more symbols already coded. The coded symbols that are used to determine the probability measures may include one or more already coded symbols from the same symbol category, one or more already coded symbols from the same symbol category that correspond to the data set (such as blocks or groups of samples) from neighboring spatial and / or temporal locations (relative to the data set associated with the current source symbol), or one or more symbols already coded from different symbol categories that correspond to data sets of the same and / or or neighboring spatial and / or temporal locations (relative to the dataset associated with the current source symbol).

Cada binario con un conjunto asociado de parámetros 5 que se emite del asignador de parámetros 4 se alimenta a un selector de memoria intermedia de binario 6. El selector de memoria intermedia de binario 6 modifica potencialmente el valor del binario de entrada 5 basándose en el valor del binario de entrada y los parámetros asociados 5 y alimenta el binario de salida 7 - con un valor potencialmente modificado - a una de dos o más memorias intermedias de binario 8. La memoria intermedia de binario 8 a la que se envía el binario de salida 7 se determina basándose en el valor del binario de entrada 5 y/o el valor de los parámetros asociados 5.Each binary with an associated set of parameters 5 that is output from parameter mapper 4 is fed to a binary buffer selector 6. Binary buffer selector 6 potentially modifies the value of input binary 5 based on the value of the input binary and associated parameters 5 and feeds the output binary 7 - with a potentially modified value - to one of two or more binary 8 buffers. The binary 8 buffer to which the output binary is sent 7 is determined based on the value of input binary 5 and / or the value of associated parameters 5.

En una realización, el selector de memoria intermedia de binario 6 no modifica el valor del binario, es decir el binario de salida 7 tiene siempre el mismo valor que el binario de entrada 5.In one embodiment, the binary buffer selector 6 does not modify the binary value, that is, the output binary 7 always has the same value as the input binary 5.

En una realización adicional, el selector de memoria intermedia de binario 6 determina el valor del binario de salida 7 basándose en el valor de binario de entrada 5 y la medida asociada para una estimación de la probabilidad para uno de los dos valores de binario posibles para el binario actual. En una realización, el valor del binario de salida 7 se fija igual al valor del binario de entrada 5 si la medida de la probabilidad para uno de los dos valores posibles de binario para el binario actual es menor que (o menor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos posibles valores de binario para el binario actual es mayor que o igual a (o mayor que) un umbral particular, el valor del binario de salida 7 se modifica (es decir, se fija opuesto al valor del binario de entrada). En una realización adicional, el valor del binario de salida 7 se fija igual al valor del binario de entrada 5 si la medida de la probabilidad para uno de los dos valores de binario posible para el binario actual es mayor que (o mayor que o igual a) un umbral particular; si la medida de la probabilidad de uno de los dos valores de binario posibles para el binario actual es menor que o igual a (o menor que) un umbral particular, el valor del binario de salida 7 se modifica (es decir, se fija opuesto al valor del binario de entrada). En una realización, el valor del umbral corresponde a un valor de 0,5 para la probabilidad estimada de ambos posibles valores de binario.In a further embodiment, the binary buffer selector 6 determines the value of the output binary 7 based on the input binary value 5 and the associated measure for a probability estimate for one of the two possible binary values for the current binary. In one embodiment, the value of the output binary 7 is set equal to the value of the input binary 5 if the probability measure for one of the two possible binary values for the current binary is less than (or less than or equal to ) a particular threshold; if the probability measure for one of the two possible binary values for the current binary is greater than or equal to (or greater than) a particular threshold, the output binary 7 value is modified (i.e. set opposite to the value of the input binary). In a further embodiment, the value of the output binary 7 is set equal to the value of the input binary 5 if the probability measure for one of the two possible binary values for the current binary is greater than (or greater than or equal to) a) a particular threshold; if the measure of the probability of one of the two possible binary values for the current binary is less than or equal to (or less than) a particular threshold, the output binary value 7 is modified (i.e. set opposite to the value of the input binary). In one embodiment, the threshold value corresponds to a value of 0.5 for the estimated probability of both possible binary values.

El selector de memoria intermedia de binario 6 puede determinar el valor del binario de salida 7 basándose en el valor del binario de entrada 5 y el identificador asociado que especifica una estimación para cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable para el binario actual. En una realización, el valor de binario de salida 7 se fija igual al valor de binario de entrada 5 si el identificador especifica que el primero de los dos posibles valores de binario representa el valor de binario menos probable (o más probable) para el binario actual, y el valor de binario de salida 7 se modifica (es decir se fija al opuesto del valor del binario de entrada) si el identificador especifica que el segundo de los dos posibles valores de binario representa el valor de binario menos probable (o más probable) para el binario actual.The binary buffer selector 6 can determine the value of the output binary 7 based on the value of the input binary 5 and the associated identifier that specifies an estimate for which of the two possible binary values represents the least likely binary value. or more likely for the current binary. In one embodiment, the output binary value 7 is set equal to the input binary value 5 if the identifier specifies that the first of the two possible binary values represents the least likely (or most likely) binary value for the binary current, and the output binary value 7 is modified (i.e. set to the opposite of the input binary value) if the identifier specifies that the second of the two possible binary values represents the least likely binary value (or more probable) for the current binary.

El selector de memoria intermedia de binario 6 puede determinar la memoria intermedia de binario 8 a la que se envía el binario de salida 7 basándose en la medida asociada para una estimación de la probabilidad para uno de los dos posibles valores de binario para el binario actual. En una realización, el conjunto de valores posibles para la medida de una estimación de la probabilidad para uno de los dos posibles valores de binario es finita y el selector de memoria intermedia de binario 6 contiene una tabla que asocia exactamente una memoria intermedia de binario 8 con cada valor posible para la estimación de la probabilidad de uno de los dos posibles valores de binario, donde pueden asociarse diferentes valores para la medida de una estimación de la probabilidad de uno de los dos posibles valores de binario con la misma memoria intermedia de binario 8. En una realización adicional, el intervalo de posibles valores para la medida de una estimación de la probabilidad para uno de los dos posibles valores de binario se particiona en un número de intervalos, el selector de memoria intermedia de binario 6 determina el índice del intervalo para la medida actual para una estimación de la probabilidad para uno de los dos posibles valores de binario, y el selector de memoria intermedia de binario 6 contiene una tabla que asocia exactamente una memoria intermedia de binario 8 con cada valor posible para el índice del intervalo, donde pueden asociarse diferentes valores para el índice de intervalo con la misma memoria intermedia de binario 8. En una realización preferente, los binarios de entrada 5 con medidas opuestas para una estimación de la probabilidad para uno de los dos posibles valores de binario (medida opuesta a aquella que representa las estimaciones de probabilidad P y 1 - P), se alimentan a la misma memoria intermedia de binario 8. En una realización adicional preferente, la asociación de la medida para una estimación de la probabilidad para uno de los dos posibles valores de binario para el binario actual con una memoria intermedia de binario particular se adapta a lo largo del tiempo, por ejemplo para asegurar que los flujos de bits parciales creados tienen similares tasas de bits.The binary buffer selector 6 can determine the binary buffer 8 to which the output binary 7 is sent based on the associated measure for an estimate of the probability for one of the two possible binary values for the current binary . In one embodiment, the set of possible values for the measurement of a probability estimate for one of the two possible binary values is finite and the binary buffer selector 6 contains a table that exactly associates a binary buffer 8 with each possible value for estimating the probability of one of the two possible binary values, where different values for the measurement of an estimation of the probability of one of the two possible binary values can be associated with the same binary buffer 8. In a further embodiment, the range of possible values for the measurement of a probability estimate for one of the two possible binary values is partitioned into a number of intervals, the binary buffer selector 6 determines the index of the interval for the current measurement for an estimate of the probability for one of the two possible binary values, and the memo selector Binary buffer 6 contains a table that exactly associates a binary 8 buffer with every possible value for the interval index, where different values for the interval index can be associated with the same binary 8 buffer. In a preferred embodiment , input binaries 5 with opposite measures for an estimate of the probability for one of the two possible binary values (measure opposite to that representing probability estimates P and 1 - P), are fed to the same binary buffer 8. In a further preferred embodiment, associating the measure for an estimate of the probability for one of the two possible binary values for the current binary with a particular binary buffer is adapted over time, for example to ensure that the created partial bit streams have similar bit rates.

El selector de memoria intermedia de binario 6 puede determinar la memoria intermedia de binario 8 a la que se envía el binario de salida 7 basándose en la medida asociada para una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario actual. En una realización preferente, el conjunto de valores posibles para la medida de una estimación de la probabilidad para el valor de binario menos probable o más probable es finita y el selector de memoria intermedia de binario 6 contiene una tabla que asocia exactamente una memoria intermedia de binario 8 con cada valor posible de la estimación de la probabilidad para el valor de binario menos probable o más probable, donde valores diferentes para la medida de una estimación de la probabilidad para el valor de binario menos probable o más probable puede asociarse con la misma memoria intermedia de binario 8. En una realización adicional, el rango de posibles valores para la medida de una estimación de la probabilidad para el valor de binario menos probable o más probable se particiona en un número de intervalos, el selector de memoria intermedia de binario 6 determina el índice del intervalo para la medida actual de una estimación de la probabilidad para el valor de binario menos probable o más probable, y el selector de memoria intermedia de binario 6 contiene una tabla que asocia exactamente una memoria intermedia de binario 8 con cada posible valor para el índice del intervalo, donde valores diferentes para el índice del intervalo pueden asociarse con la misma memoria intermedia de binario 8. En una realización adicional, la asociación de la medida de una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario actual con una memoria intermedia de binario particular se adapta a lo largo del tiempo, por ejemplo para asegurar que los flujos de bits parciales creados tienen similares tasas de bits.The binary buffer selector 6 can determine the binary buffer 8 to which the output binary 7 is sent based on the associated measure for an estimate of the probability for the least likely or most probable binary value for the binary current. In a preferred embodiment, the set of possible values for the measurement of a probability estimate for the least likely or most likely binary value is finite and the binary buffer selector 6 contains a table that exactly associates a buffer of binary 8 with each possible value of the probability estimate for the least likely or most likely binary value, where different values for the measure of an estimate of probability for the least likely or most likely binary value can be associated with it Binary buffer 8. In a further embodiment, the range of possible values for the measurement of a probability estimate for the least likely or most likely binary value is partitioned over a number of intervals, the binary buffer selector 6 determines the index of the interval for the current measure of an estimate of the probability for the binary value minus proba ble or more likely, and the binary buffer 6 selector contains a table that exactly associates a binary buffer 8 with each possible value for the interval index, where different values for the interval index can be associated with the same memory binary buffer 8. In a further embodiment, associating the measure of a probability estimate for the least likely or most likely binary value for the current binary with a particular binary buffer is tailored over time, for example to ensure that created partial bit streams have similar bit rates.

Cada una de las dos o más memorias intermedias de binario 8 se conecta con exactamente un codificador de binario 10 y cada codificador de binario se conecta solamente con una memoria intermedia de binario 8. Cada codificador de binario 10 lee binarios desde la memoria intermedia de binario 8 asociada y convierte una secuencia de binarios 9 en una palabra de código 11, que representa una secuencia de bits. Las memorias intermedias de binario 8 representan memorias intermedias de primero en entrar primero en salir; los binarios que se alimentan más tarde (en orden secuencial) en una memoria intermedia de binario 8 no se codifican antes de los binarios que se alimentan antes (en orden secuencial) en la memoria intermedia de binario. Las palabras de código 11 que se emiten de un codificador de binario 10 particular se escriben en un flujo de bits 12 parcial particular. El algoritmo de codificación global convierte los símbolos fuente 1 en dos o más flujos de bits parciales 12, donde el número de flujos de bits parciales es igual al número de memorias intermedias de binario y codificadores de binario. En una realización preferente un codificador de binario 10 convierte un número variable de binarios 9 en una palabra de código 11 de un número de bits variable. Una ventaja de las realizaciones de codificación PIPE descrita anteriormente y a continuación es que la codificación de binarios puede realizarse en paralelo (por ejemplo, para diferentes grupos de medidas de probabilidad), lo que reduce el tiempo de procesamiento para varias implementaciones.Each of the two or more binary buffers 8 connects to exactly one binary encoder 10 and each binary encoder connects only to one binary buffer 8. Each binary encoder 10 reads binaries from the binary buffer 8 associates and converts a sequence of binaries 9 into a code word 11, which represents a sequence of bits. Binary 8 buffers represent first-in-first-out buffers; binaries that are fed later (in sequential order) into binary buffer 8 are not encoded before binaries that are fed before (in sequential order) into binary buffer. Codewords 11 that are output from a particular binary encoder 10 are written to a particular partial bitstream 12. The global encoding algorithm converts the source symbols 1 into two or more partial bitstreams 12, where the number of partial bitstreams is equal to the number of binary buffers and binary encoders. In a preferred embodiment a binary encoder 10 converts a variable number of binaries 9 into a code word 11 of a variable number of bits. An advantage of the PIPE encoding embodiments described above and below is that the binary encoding can be performed in parallel (for example, for different sets of probability measures), which reduces processing time for various implementations.

Otra ventaja de la codificación PIPE es que la codificación binaria, que se realiza por los codificadores de binario 10, puede diseñarse específicamente para diferentes conjuntos de parámetros 5. En particular, la codificación y decodificación de binario puede optimizarse (en términos de eficiencia de codificación y/o complejidad) para diferentes grupos de probabilidades estimadas. Por otro lado, esto permite una reducción de la complejidad de codificación/decodificación con relación a los algoritmos de codificación aritmética con similar eficiencia de codificación. Por otro lado, permite una mejora de la eficiencia de codificación con relación a los algoritmos de codificación VLC con complejidad de codificación/decodificación similar. En una realización, los codificadores de binario 10 implementan diferentes algoritmos de codificación (es decir mapeado de secuencias de binario en palabras de código) para diferentes grupos de medidas para una estimación de la probabilidad para uno de los dos posibles valores de binario 5 para el binario actual. En una realización adicional, los codificadores de binario 10 implementan diferentes algoritmos de codificación para diferentes grupos de medidas para una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario actual. En una realización adicional, los codificadores de binario 10 implementan diferentes algoritmos de codificación para diferentes códigos de protección de canal. En una realización adicional, los codificadores de binario 10 implementan diferentes algoritmos de codificación para diferentes esquemas de cifrado. En una realización adicional, los codificadores de binario 10 implementan diferentes algoritmos de codificación para diferentes combinaciones de códigos de protección de canal y grupos de medidas para una estimación de la probabilidad para uno de los dos posibles valores de binario 5 para el binario actual. En una realización adicional, los codificadores de binario 10 implementan diferentes algoritmos de codificación para diferentes combinaciones de códigos de protección de canal y grupos de medidas para una estimación de la probabilidad para el valor de binario 5 menos probable o más probable para el binario actual. En una realización adicional, los codificadores de binario 10 implementan diferentes algoritmos de codificación para diferentes combinaciones de esquemas de cifrado y grupos de medidas para una estimación de la probabilidad para uno de los dos posibles valores de binario 5 para el binario actual. En una realización adicional, los codificadores de binario 10 implementan diferentes algoritmos de codificación para diferentes combinaciones de esquemas de cifrado y grupos de medidas para una estimación de la probabilidad para el valor de binario 5 menos probable o más probable para el binario actual.Another advantage of PIPE encoding is that binary encoding, which is performed by binary encoders 10, can be specifically designed for different sets of parameters 5. In particular, binary encoding and decoding can be optimized (in terms of encoding efficiency and / or complexity) for different groups of estimated probabilities. On the other hand, this allows a reduction of the coding / decoding complexity in relation to the arithmetic coding algorithms with similar coding efficiency. On the other hand, it allows an improvement of the coding efficiency in relation to the VLC coding algorithms with similar coding / decoding complexity. In one embodiment, the binary encoders 10 implement different encoding algorithms (i.e. mapping binary sequences to codewords) for different sets of measurements for an estimate of the probability for one of the two possible binary values 5 for the current binary. In a further embodiment, the binary encoders 10 implement different encoding algorithms for different sets of measurements for an estimate of the probability for the least likely or most probable binary value for the current binary. In a further embodiment, the binary encoders 10 implement different encoding algorithms for different channel protection codes. In a further embodiment, the binary encoders 10 implement different encoding algorithms for different encryption schemes. In a further embodiment, the binary encoders 10 implement different encoding algorithms for different combinations of channel protection codes and measurement groups for an estimate of the probability for one of the two possible binary values 5 for the current binary. In a further embodiment, the binary encoders 10 implement different encoding algorithms for different combinations of channel protection codes and groups of measurements for an estimate of the probability for the binary value 5 less likely or more probable for the current binary. In a further embodiment, the binary encoders 10 implement different encoding algorithms for different combinations of encryption schemes and groups of measures for an estimate of the probability for one of the two possible binary values 5 for the current binary. In a further embodiment, the Binary encoders 10 implement different encoding algorithms for different combinations of encryption schemes and groups of measures for an estimate of the probability for the least probable or most probable binary value 5 for the current binary.

Los codificadores de binario 10 - o uno más de los codificadores de binario - pueden representar motores de codificación aritmética binaria. En una realización adicional, uno o más de los codificadores de binario representan un motor de codificación aritmética binaria, en el que el mapeado desde la probabilidad LPS/LPB representativa plps de una memoria intermedia de binario dada a un ancho de intervalo de código correspondiente Rlps - es decir, la subdivisión de intervalos del estado interno del motor de codificación aritmética binaria, que se define por la anchura del intervalo actual R y el desplazamiento del intervalo actual L, que identifica, por ejemplo, la delimitación inferior del intervalo de código - se realiza mediante el uso de una tabla de búsqueda. En una realización adicional preferente, para cada motor de codificación aritmética binaria basado en tabla asociado con una memoria intermedia de binario dada, se usan K valores representativos de la anchura de intervalo {Qo, ..., Qk-i } para la representación de Rlps siendo la elección de K y los valores representativos de la anchura de intervalo {Qo, ..., Qk-i } dependientes de la memoria intermedia de binario. Para una elección de K > 1, la codificación aritmética de un binario puede implicar las subetapas de mapeado de la anchura de intervalo actual R a un índice de cuantificación q con valores en {0, ..., K-1} y realizar la subdivisión de intervalos accediendo al valor de la anchura de intervalo parcial Qq correspondiente desde una tabla de búsqueda usando q como un índice. Para una elección de K=1, es decir, para el caso donde solo se da un valor de la anchura de intervalo representativo Qo, este valor Qo puede elegirse como una potencia de dos para permitir la decodificación de múltiples valores de MPS/MPB que entran en la memoria intermedia de binario correspondiente dentro de un ciclo de normalización único. Las palabras de código resultantes para cada motor de codificación aritmética pueden transmitirse por separado, en paquetes, o almacenarse, o pueden intercalarse con la finalidad de transmisión o almacenamiento tal como se describe en el presente documento a continuación.The binary encoders 10 - or one of the binary encoders - can represent binary arithmetic encoding engines. In a further embodiment, one or more of the binary encoders represent a binary arithmetic encoding engine, in which the mapping from the representative LPS / LPB probability plps of a given binary buffer to a corresponding code interval width Rlps - that is, the interval subdivision of the internal state of the binary arithmetic coding engine, which is defined by the width of the current interval R and the offset of the current interval L, which identifies, for example, the lower bound of the code interval - It is done through the use of a lookup table. In a further preferred embodiment, for each table-based binary arithmetic coding engine associated with a given binary buffer, K values representative of the interval width {Qo, ..., Q k - i } are used for the representation of R lps with the choice of K and the representative values of the interval width {Qo, ..., Q k - i } dependent on the binary buffer. For a choice of K > 1, arithmetic coding of a binary may involve mapping sub-steps of the current interval width R to a quantization index q with values of {0, ..., K-1} and perform the subdivision of intervals by accessing the value of the corresponding partial interval width Qq from a lookup table using q as an index. For a choice of K = 1, that is, for the case where only a representative interval width value Qo is given, this Qo value may be chosen as a power of two to allow decoding of multiple MPS / MPB values that they enter the corresponding binary buffer within a single normalization cycle. The resulting codewords for each arithmetic coding engine can be transmitted separately, in packets, or stored, or can be interleaved for the purpose of transmission or storage as described herein below.

Esto es, un motor de codificación aritmética binaria 10 podría realizar las siguientes etapas en la codificación de los binarios en su memoria intermedia de binario 8:That is, a binary arithmetic encoding engine 10 could perform the following steps in encoding the binaries into its binary 8 buffer:

1. Recibir valLPS, binarios desde la memoria intermedia de binario (recordatorio: el motor de codificación aritmética binaria 10 respectivo considerado aquí se ha elegido para recibir “binario” (o, en otras palabras, se asocia “binario” con el motor de codificación aritmética binaria 10 respectivo) debido a que la estimación de la distribución de probabilidad, tal como p_estado[binario], se asocia con ese motor de codificación aritmética binaria 10)1. Receive valLPS, binaries from the binary buffer (reminder: the respective 10 binary arithmetic encoding engine considered here has been chosen to receive "binary" (or, in other words, "binary" is associated with the encoding engine respective binary arithmetic 10) because the estimate of the probability distribution, such as p_state [binary], is associated with that binary arithmetic coding engine 10)

2. Cuantificación de R:2. Quantification of R:

q_índice = Qtab[R>>q] (o alguna otra forma de cuantificación)q_index = Qtab [R >> q] (or some other form of quantification)

(o alguna otra forma de cuantificación)(or some other form of quantification)

3. Determinación de RLPsy R:3. Determination of RLPsy R:

Rlps = Rtab [q_índice] (obsérvese que p_estado no se ha mencionado aquí, dado que se fija para el motor de codificación de aritmética binaria 10 considerado, es decir p_estado[codificador], y Rtab ha almacenado en el los valores calculados para p[p_estado[codificador]]Q[q_índice] R = R - Rlps [esto es, R se pre-actualiza preliminarmente como si “binario” fuese MPS]Rlps = Rtab [q_index] (note that p_status has not been mentioned here, since it is set for the binary arithmetic coding engine 10 considered, ie p_status [encoder], and Rtab has stored in it the calculated values for p [ p_status [encoder]] Q [q_index] R = R - Rlps [that is, R is preliminarily pre-updated as if "binary" were MPS]

4. Cálculo del nuevo intervalo parcial:4. Calculation of the new partial interval:

si (binario = I - valMPS) entoncesif (binary = I - valMPS) then

L ^ L RL ^ L R

R ^ RlpsR ^ Rlps

5. Renormalización de L y R, escribiendo bits,5. Renormalization of L and R, writing bits,

en el quein which

q_índice describe el índice de un valor de cuantificación leído de Qtab,q_index describes the index of a quantized value read from Qtab,

p_estado describe el estado actual (fijado para el motor de codificación de aritmética binaria 10),p_status describes the current state (set for binary arithmetic coding engine 10),

Rlps describe la anchura de intervalo correspondiente al LPS yRlps describes the interval width corresponding to LPS and

valMPS describe el valor del bit que corresponde al MPS.valMPS describes the bit value that corresponds to the MPS.

En consecuencia, un motor de decodificación aritmética binaria 22 podría realizar las siguientes etapas en la decodificación de los binarios de salida de la memoria intermedia de binario 20:Accordingly, a binary arithmetic decoding engine 22 could perform the following steps in decoding the binary buffer 20 output binaries:

1. Recibir la solicitud de un binario (recordatorio: el motor de decodificación aritmética binaria 22 respectivo considerado aquí se ha elegido para decodificar “binario” (o, en otras palabras, se asocia “binario” con el motor de decodificación aritmética binaria 22 respectivo) debido a que la estimación de la distribución de probabilidad, tal como p_estado[binario], se asocia con ese motor de decodificación aritmética binaria 22)1. Receive the request for a binary (reminder: the respective binary 22 arithmetic decoding engine considered here has been chosen to decode “binary” (or, in other words, “binary” is associated with the respective binary arithmetic decoding engine 22) because the estimate of the probability distribution, such as p_state [binary], is associated with that binary arithmetic decoding engine 22)

2. Cuantificación de R:2. Quantification of R:

q_índice = Qtab[R>>q] (o alguna otra forma de cuantificación)q_index = Qtab [R >> q] (or some other form of quantification)

(o alguna otra forma de cuantificación)(or some other form of quantification)

3. Determinación de RlpsY R:3. Determination of RlpsY R:

Rlps = Rtab [q_índice] (obsérvese que p_estado no se ha mencionado aquí, dado que se fija para el motor de decodificación de aritmética binaria 22 considerado, es decir p_estado[codificador], y Rtab ha almacenado en el mismo los valores precalculados para p[p_estado[codificador]]Q[q_índice]Rlps = Rtab [q_index] (note that p_status has not been mentioned here, since it is set for the binary arithmetic decoding engine 22 considered, that is p_status [encoder], and Rtab has stored in it the pre-calculated values for p [p_state [encoder]] Q [q_index]

R = R - Rlps [esto es, R se preactualiza preliminarmente como si “binario” fuese MPS]R = R - Rlps [that is, R is preliminary pre-updated as if "binary" were MPS]

4. Determinación de binario dependiendo de la posición del intervalo parcial:4. Determination of binary depending on the position of the partial interval:

si (V > R) entoncesif (V> R) then

binario ^ 1 - valMPS (binario se decodifica como LPS; el selector de memoria intermedia de binario 18 obtendrá el valor de binario real mediante el uso de esta información de binario y valMPS)binary ^ 1 - valMPS (binary is decoded as LPS; binary buffer selector 18 will get the actual binary value by using this binary and valMPS information)

V ^ V -RV ^ V -R

R ^ RlpsR ^ Rlps

en caso contrariootherwise

binario ^ valMPS (binario se decodifica como MPS; el selector de memoria intermedia de binario 18 obtendrá el valor de binario real mediante el uso de esta información de binario y valMPS)binary ^ valMPS (binary is decoded as MPS; binary buffer selector 18 will get the actual binary value by using this binary and valMPS information)

5. Renormalización de R, leyendo un bit y actualizando V,5. Renormalization of R, reading a bit and updating V,

en el quein which

q_índice describe el índice de un valor de cuantificación leído de Qtab,q_index describes the index of a quantized value read from Qtab,

p_estado describe el estado actual (fijado para el motor de decodificación aritmética binaria 22),p_status describes the current state (set for binary arithmetic decoding engine 22),

Rlps describe la anchura de intervalo correspondiente al LPS,Rlps describes the interval width corresponding to the LPS,

valMPS describe el valor del bit que corresponde al MPS, y V describe un valor desde el interior del intervalo parcial actual.valMPS describes the value of the bit that corresponds to the MPS, and V describes a value from within the current partial interval.

Los codificadores de binario 10 - o uno o más de los codificadores de binario - pueden representar codificadores entrópicos que directamente mapean secuencias de binarios de entrada 9 sobre palabras de código 10. Dichos mapeados pueden implementarse eficientemente y no requieren un motor de codificación aritmética complejo. El mapeado inverso de palabras de código sobre secuencias de binarios (como se realiza en el decodificador) debería ser único para garantizar una decodificación perfecta de la secuencia de entrada, pero al mapeado de las secuencias de binario 9 sobre palabras de código 10 no precisa necesariamente ser único, es decir, es posible que una secuencia particular de binarios pueda mapearse sobre más de una secuencia de palabras de código. En una realización, el mapeado de secuencias de binarios de entrada 9 sobre palabras de código 10 es biyectivo. En una realización preferente adicional, los codificadores de binario 10 - o uno o más de los codificadores de binario -representan codificadores entrópicos que directamente mapean secuencias de longitud variable de binarios de entrada 9 en palabras de código de longitud variable 10. En una realización, las palabras de código de salida representan códigos sin redundancia tal como los códigos Huffman general o códigos Huffman canónicos.Binary encoders 10 - or one or more of the binary encoders - can represent entropy encoders that directly map sequences of input binaries 9 over codewords 10. Such mappings can be implemented efficiently and do not require a complex arithmetic encoding engine. Reverse mapping of code words over binary sequences (as performed in the decoder) should be unique to ensure perfect decoding of the input sequence, but mapping of binary 9 sequences over code words 10 does not necessarily require being unique, that is, it is possible that a particular sequence of binaries can be mapped over more than one sequence of codewords. In one embodiment, the mapping of input binary sequences 9 to codewords 10 is bijective. In a further preferred embodiment, the binary encoders 10 - or one or more of the binary encoders - represent entropy encoders that directly map variable length sequences of input binaries 9 into variable length codewords 10. In one embodiment, exit code words represent non-redundant codes such as general Huffman codes or canonical Huffman codes.

Dos ejemplos de mapeado biyectivo de secuencias de binario a códigos sin redundancia se ilustran en la Tabla 3. En una realización adicional, las palabras de código de salida representan códigos redundantes adecuados para detección de error y recuperación de error. En una realización preferente adicional, las palabras de código de salida representan códigos de cifrado adecuados para el cifrado de los símbolos fuente.Two examples of bijective mapping of binary sequences to codes without redundancy are illustrated in Table 3. In a further embodiment, the exit code words represent redundant codes suitable for error detection and error recovery. In a further preferred embodiment, the exit code words represent encryption codes suitable for encryption of the source symbols.

T l : E m l m nr n i in ri l r i .T l: E m l m nr n i in ri l r i.

Figure imgf000016_0001
Figure imgf000016_0001

Figure imgf000017_0001
Figure imgf000017_0001

En una realización adicional, los codificadores de binario 10 - o uno o más de los codificadores de binario -representan codificadores entrópicos que mapean directamente secuencias de longitud variable de binarios de entrada 9 en palabras de código de longitud fija 10. En una realización adicional, los codificadores de binario 10 - o uno o más de los codificadores de binario - representan codificadores entrópicos que mapean directamente secuencias de longitud fija de binarios de entrada 9 en palabras de código de longitud variable 10.In a further embodiment, the binary encoders 10 - or one or more of the binary encoders - represent entropy encoders that directly map variable length sequences of input binaries 9 into fixed length codewords 10. In a further embodiment, binary encoders 10 - or one or more of the binary encoders - represent entropy encoders that directly map fixed-length sequences of input binaries 9 into variable-length codewords 10.

Se ilustra un decodificador PIPE de acuerdo con una realización en la Figura 4. El decodificador realiza básicamente las operaciones inversas del codificador de la Fig. 3, de modo que la secuencia de símbolos fuente 27 (previamente codificada) se decodifica a partir de un conjunto de dos o más flujos de bits 24 parciales. El decodificador incluye dos flujos de proceso diferentes: un flujo para las solicitudes de datos, que replica el flujo de datos del codificador, y un flujo de datos que representa la inversa del flujo de datos del codificador. En la ilustración de la Fig. 4, las flechas discontinuas representan el flujo de solicitud de datos, mientras que las flechas continuas representan el flujo de datos. Los bloques de construcción del decodificador replican básicamente los bloques de construcción del codificador, pero implementan las operaciones inversas.A PIPE decoder according to an embodiment is illustrated in Figure 4. The decoder basically performs the inverse operations of the encoder of Fig. 3, so that the source symbol sequence 27 (previously encoded) is decoded from a set of two or more partial 24 bit streams. The decoder includes two different process streams: a stream for data requests, which replicates the encoder's data stream, and a data stream that represents the inverse of the encoder's data stream. In the illustration in Fig. 4, the dashed arrows represent the data request flow, while the solid arrows represent the data flow. The decoder building blocks basically replicate the encoder building blocks, but implement the inverse operations.

La decodificación de un símbolo fuente se activa mediante una solicitud de un nuevo símbolo fuente 13 decodificado que se envía al conversor a binario 14. En una realización, cada solicitud de un nuevo símbolo fuente 13 decodificado se asocia con una categoría de un conjunto de una o más categorías. La categoría que se asocia con una solicitud de un símbolo fuente es la misma que la categoría que se asoció con el símbolo fuente correspondiente durante la codificación.Decoding a source symbol is triggered by a request for a new decoded source symbol 13 that is sent to the binary converter 14. In one embodiment, each request for a new decoded source symbol 13 is associated with a category of a set of a or more categories. The category that is associated with a request for a source symbol is the same as the category that was associated with the corresponding source symbol during encoding.

El conversor a binario 14 mapea la solicitud de un símbolo fuente 13 en una o más solicitudes para un binario que se envía al asignador de parámetros 16. Como la respuesta final a una solicitud para un binario que se envía al asignador de parámetros 16 por el conversor a binario 14, el conversor a binario 14 recibe un binario decodificado 26 desde el selector de memoria intermedia de binario 18. El conversor a binario 14 compara la secuencia recibida de los binarios decodificados 26 con las secuencias de binarios de un esquema de conversión a binario particular para el símbolo fuente solicitado y, si la secuencia recibida de binarios decodificados 26 coincide con la conversión a binario de un símbolo fuente, el conversor a binario vacía su memoria intermedia de binarios y produce la salida de símbolos fuente decodificados como respuesta final a la solicitud de un nuevo símbolo decodificado. Si la secuencia ya recibida de binarios decodificados no coincide con ninguna de las secuencias de binarios del esquema de conversión a binario para el símbolo fuente solicitado, el conversor a binario envía otra solicitud de un binario al asignador de parámetros hasta que la secuencia de binarios decodificados coincida con una de las secuencias de binarios del esquema de conversión a binario para el símbolo fuente solicitado. Para cada solicitud de un símbolo fuente, el decodificador usa el mismo esquema de conversión a binario que se usó para la codificación del símbolo fuente correspondiente. El esquema de conversión a binario puede ser diferente para diferentes categorías de símbolos fuente. El esquema de conversión a binario para una categoría de símbolos fuente particular puede depender del conjunto de posibles valores de símbolos fuente y/u otras propiedades de los símbolos fuente para la categoría particular.Converter to binary 14 maps the request for a source symbol 13 into one or more requests for a binary that is sent to parameter mapper 16. As the final response to a request for a binary that is sent to parameter mapper 16 by the converter to binary 14, converter to binary 14 receives a decoded binary 26 from binary buffer selector 18. Converter to binary 14 compares the received sequence of decoded binaries 26 with the binary sequences of a conversion scheme to particular binary for the requested source symbol and, if the received sequence of decoded binaries 26 matches the conversion to binary of a source symbol, the binary converter empties its binary buffer and produces the output of decoded source symbols as a final response to the request for a new decoded symbol. If the already received sequence of decoded binaries does not match any of the binary sequences in the binary conversion scheme for the requested source symbol, the binary converter sends another request for a binary to the parameter mapper until the decoded binary sequence match one of the binary sequences in the binary conversion scheme for the requested source symbol. For each request for a source symbol, the decoder uses the same binary conversion scheme that was used for encoding the corresponding source symbol. The binary conversion scheme may be different for different categories of source symbols. The binary conversion scheme for a particular source symbol category may depend on the set of possible source symbol values and / or other properties of the source symbols for the particular category.

El asignador de parámetros asigna un conjunto de uno o más parámetros a cada solicitud de un binario y envía la solicitud para un binario con el conjunto asociado de parámetros al selector de memoria intermedia de binario. El conjunto de parámetros que se asignan al binario solicitado por el asignador de parámetros es el mismo que se asignó al binario correspondiente durante la codificación. El conjunto de parámetros puede consistir en uno o más de los parámetros que se mencionaron en la descripción del codificador.The parameter mapper assigns a set of one or more parameters to each request for a binary and sends the request for a binary with the associated set of parameters to the binary buffer selector. The set of parameters that are assigned to the binary requested by the parameter mapper is the same as that set assigned the corresponding binary during encoding. The parameter set may consist of one or more of the parameters that were mentioned in the encoder description.

El asignador de parámetros 16 puede asociar cada solicitud de un binario con una medida de una estimación de la probabilidad de uno o más de los posibles valores de binario para el binario solicitado actual. En particular, el asignador de parámetros 16 puede asociar cada solicitud de un binario con una medida de una estimación de la probabilidad del valor de binario menos probable o más probable para el binario solicitado actual y un identificador que específica una estimación para cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable para el binario solicitado actual.Parameter mapper 16 can associate each request for a binary with a measure of an estimate of the probability of one or more of the possible binary values for the current requested binary. In particular, parameter allocator 16 can associate each request for a binary with a measure of an estimate of the probability of the least likely or most probable binary value for the current requested binary and an identifier that specifies an estimate for which of the two Possible Binary Values represents the least likely or most likely binary value for the current requested binary.

En una realización adicional, el asignador de parámetros 16 asocia cada solicitud de un binario 15, 17 con una medida de una estimación de la probabilidad para uno de los dos posibles valores de binario para el binario solicitado actual y uno o más parámetros adicionales. En una realización adicional preferente, el asignador de parámetros 16 asocia cada solicitud de un binario 15, 17 con una medida de una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario solicitado actual, un identificador que específica una estimación para cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable para el binario solicitado actual y uno o más parámetros adicionales (que pueden ser uno o más de los parámetros anteriormente listados).In a further embodiment, the parameter mapper 16 associates each request for a binary 15, 17 with a measure of a probability estimate for one of the two possible binary values for the current requested binary and one or more additional parameters. In a further preferred embodiment, the parameter mapper 16 associates each request for a binary 15, 17 with a measure of a probability estimate for the least likely or most likely binary value for the current requested binary, an identifier that specifies a estimate for which of the two possible binary values represents the least likely or most probable binary value for the current requested binary and one or more additional parameters (which may be one or more of the parameters listed above).

En una realización, el asignador de parámetros 16 determina una o más de las medidas de probabilidad anteriormente mencionadas (medida de una estimación de la probabilidad para uno de los dos posibles valores de binario para el binario solicitado actual, medida para una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario solicitado actual, identificador que específica una estimación para cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable para el binario solicitado actual) basándose en un conjunto de uno o más símbolos ya decodificados. La determinación de las medidas de probabilidad para una solicitud particular de un binario replica el proceso en el codificador para el binario correspondiente. Los símbolos decodificados que se usan para la determinación de las medidas de probabilidad pueden incluir uno o más símbolos ya decodificados de la misma categoría de símbolos, uno o más símbolos ya decodificados de la misma categoría de símbolos que corresponden a conjuntos de datos (tales como bloques o grupos de muestras) de localizaciones espaciales y/o temporales vecinas (en relación al conjunto de datos asociado con la solicitud actual de un símbolo fuente), o uno o más símbolos ya decodificados de diferentes categorías de símbolos que corresponden a conjuntos de datos de las mismas y/o localizaciones espaciales y/o temporales vecinas (en relación al conjunto de datos asociado con la solicitud actual de un símbolo fuente).In one embodiment, the parameter mapper 16 determines one or more of the aforementioned probability measures (measure of a probability estimate for one of the two possible binary values for the current requested binary, measure for a probability estimate for the least likely or most likely binary value for the current requested binary, identifier that specifies an estimate for which of the two possible binary values represents the least likely or most likely binary value for the current requested binary) based on a set of one or more already decoded symbols. Determining the probability measures for a particular request for a binary replicates the process in the encoder for the corresponding binary. Decoded symbols that are used for the determination of probability measures may include one or more already decoded symbols of the same symbol category, one or more already decoded symbols of the same symbol category that correspond to data sets (such as blocks or groups of samples) from neighboring spatial and / or temporal locations (relative to the data set associated with the current request for a source symbol), or one or more already decoded symbols from different symbol categories corresponding to data sets from the same and / or neighboring spatial and / or temporal locations (relative to the dataset associated with the current request for a source symbol).

Cada solicitud de un binario con un conjunto asociado de parámetros 17 que es la salida del asignador de parámetros 16 se proporciona a un selector de memoria intermedia de binario 18. Basándose en el conjunto de parámetros 17 asociado, el selector de memoria intermedia de binario 18 envía una solicitud de un binario 19 a una de dos o más memorias intermedias 20 de binarios y recibe un binario decodificado 25 desde la memoria intermedia de binario 20 seleccionada. El binario de entrada 25 decodificado se modifica potencialmente y el binario de salida 26 decodificado - potencialmente con un valor modificado - se envía al conversor a binario 14 como respuesta final a la solicitud de un binario con un conjunto de parámetros 17 asociado.Each request for a binary with an associated set of parameters 17 which is the output of parameter mapper 16 is provided to a binary buffer selector 18. Based on the associated parameter set 17, the binary buffer selector 18 sends a request for a binary 19 to one of two or more binary buffers 20 and receives a decoded binary 25 from the selected binary buffer 20. The decoded input binary 25 is potentially modified and the decoded output binary 26 - potentially with a modified value - is sent to the binary converter 14 as a final response to the request for a binary with an associated set of parameters 17.

La memoria intermedia de binario 20 a la que se envía la solicitud de un binario se selecciona de la misma manera que la memoria intermedia de binario a la que se envió el binario de salida del selector de memoria intermedia de binario en el lado del codificador.The binary buffer 20 to which the request for a binary is sent is selected in the same way as the binary buffer to which the output binary of the binary buffer selector on the encoder side was sent.

En una realización, el selector de memoria intermedia de binario 18 determina la memoria intermedia de binario 20 a la que se envía la solicitud de un binario 19 basándose en la medida asociada para una estimación de la probabilidad para uno de los dos posibles valores de binario para el binario solicitado actual. En una realización, el conjunto de posibles valores para la medida de una estimación de la probabilidad para uno de los dos posibles valores de binario es finito y el selector de memoria intermedia de binario 18 contiene una tabla que asocia exactamente una memoria intermedia de binario 20 con cada posible valor de la estimación de la probabilidad para uno de los dos posibles valores de binario, en la que diferentes valores de la medida de una estimación de la probabilidad para uno de los dos posibles valores de binario puede asociarse con la misma memoria intermedia de binario 20. En una realización, el rango de valores posibles para la medida de una estimación de la probabilidad para uno de los dos posibles valores de binario se particiona en un número de intervalos, el selector de memoria intermedia de binario 18 determina el índice del intervalo para la medida actual de una estimación de la probabilidad para uno de los dos posibles valores de binario, y el selector de memoria intermedia de binario 18 contiene una tabla que asocia exactamente una memoria intermedia de binario 20 con cada posible valor para el índice de intervalo, donde valores diferentes para el índice de intervalo pueden asociarse con la misma memoria intermedia de binario 20. Las solicitudes para binarios 17 con medidas opuestas de una estimación de la probabilidad para uno de los dos posibles valores de binario (medidas opuestas son aquellas que representan estimaciones de probabilidad P y 1 - P) pueden enviarse a la misma memoria intermedia de binario 20. Adicionalmente, puede adaptarse a lo largo del tiempo la asociación de la medida de una estimación de la probabilidad para uno de los dos posibles valores de binario para la solicitud de binario actual con una memoria intermedia de binario particular.In one embodiment, the binary buffer selector 18 determines the binary buffer 20 to which the request for a binary 19 is sent based on the associated measure for an estimate of the probability for one of the two possible binary values. for the current requested binary. In one embodiment, the set of possible values for the measurement of a probability estimate for one of the two possible binary values is finite and the binary buffer selector 18 contains a table that exactly associates a binary buffer 20 with each possible value of the probability estimate for one of the two possible binary values, in which different measurement values of a probability estimate for one of the two possible binary values can be associated with the same buffer binary 20. In one embodiment, the range of possible values for the measurement of a probability estimate for one of the two possible binary values is partitioned over a number of intervals, the binary buffer selector 18 determines the index of the interval for the current measurement of an estimate of the probability for one of the two possible binary values, and the internal memory selector Binary mean 18 contains a table that exactly associates a binary buffer 20 with each possible value for the interval index, where different values for the interval index can be associated with the same binary buffer 20. Requests for binaries 17 with opposite measures of a probability estimate for one of the two possible binary values (opposite measures are those representing probability estimates P and 1 - P) can be sent to the same binary buffer 20. Additionally, it can be adapted to over time the association of the measure of an estimate of the probability for one of the two possible values of binary for the current binary request with a particular binary buffer.

El selector de memoria intermedia de binario 18 puede determinar la memoria intermedia de binario 20 a la que se envía la solicitud de un binario 19 basándose en la medida asociada de una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario solicitado actual. En una realización, el conjunto de posibles valores para la medida de una estimación de la probabilidad para el valor de binario menos probable o más probable puede se finito y el selector de memoria intermedia de binario 18 contiene una tabla que asocia exactamente una memoria intermedia de binario 20 con cada posible valor de la estimación de la probabilidad para el valor de binario menos probable o más probable, donde pueden asociarse diferentes valores para la medida de una estimación de la probabilidad para el valor de binario menos probable o más probable con la misma memoria intermedia de binario 20. En una realización, el rango de posibles valores para la medida de una estimación de la probabilidad para el valor de binario menos probable o más probable se particiona en un número de intervalos, el selector de memoria intermedia de binario 18 determina el índice del intervalo para la medida actual de una estimación de la probabilidad para el valor de binario menos probable o más probable, y el selector de memoria intermedia de binario 18 contiene una tabla que asocia exactamente una memoria intermedia de binario 20 con cada valor posible para el índice de intervalo, donde pueden asociarse diferentes valores para el índice de intervalo con la misma memoria intermedia de binario 20. En una realización adicional preferente, la asociación de la medida de una estimación de la probabilidad para el valor de binario menos probable o más probable para la solicitud de binario actual con una memoria intermedia de binario particular se adapta a lo largo del tiempo.The binary buffer selector 18 can determine the binary buffer 20 to which the request for a binary 19 is sent based on the associated measure of a probability estimate for the least likely or most likely binary value for the current requested binary. In one embodiment, the set of possible values for the measurement of a probability estimate for the least likely or most likely binary value can be finite and the binary buffer selector 18 contains a table that exactly associates a buffer of binary 20 with each possible probability estimate value for the least likely or most likely binary value, where different values for the measurement of a probability estimate for the least likely or most likely binary value may be associated with the same Binary buffer 20. In one embodiment, the range of possible values for the measurement of a probability estimate for the least likely or most likely binary value is partitioned over a number of intervals, the binary buffer selector 18 determines the interval index for the current measure of a probability estimate for the least likely or most binary value probable, and the binary buffer selector 18 contains a table that exactly associates a binary buffer 20 with each possible value for the interval index, where different values for the interval index can be associated with the same binary buffer 20. In a further preferred embodiment, associating the measurement of a probability estimate for the least likely or most likely binary value for the current binary request with a particular binary buffer is tailored over time.

Después de recibir un binario decodificado 25 desde la memoria intermedia de binario 20 seleccionada, el selector de memoria intermedia de binario 18 modifica potencialmente el binario de entrada 25 y envía el binario de salida 26 - con un valor potencialmente modificado - al conversor a binario 14. El mapeado de entrada/salida de binario del selector de memoria intermedia de binario 18 es la inversa del mapeado de entrada/salida de binario del selector de memoria intermedia de binario en el lado del codificador.After receiving a decoded binary 25 from the selected binary buffer 20, the binary buffer selector 18 potentially modifies the input binary 25 and sends the output binary 26 - with a potentially modified value - to the binary converter 14 The binary input / output mapping of the binary buffer selector 18 is the inverse of the binary input / output mapping of the binary buffer selector on the encoder side.

El selector de memoria intermedia de binario 18 puede configurarse para no modificar el valor del binario, es decir, el binario de salida 26 tiene siempre el mismo valor que el binario de entrada 25.The binary buffer selector 18 can be configured not to modify the binary value, that is, the output binary 26 always has the same value as the input binary 25.

El selector de memoria intermedia de binario 18 puede determinar el valor del binario de salida 26 basándose en el valor del binario de entrada 25 y la medida de una estimación de la probabilidad para uno de los dos valores de binario posibles para el binario solicitado actual que se asocia con la solicitud para un binario 17. En una realización, el valor del binario de salida 26 se fija igual al valor del binario de entrada 25 si la medida de la probabilidad para uno de los dos valores de binario posibles para la solicitud de binario actual es menor que (o menor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos posibles valores de binario para la solicitud de binario actual es mayor que o igual a (o mayor que) un umbral particular, el valor del binario de salida 26 se modifica (es decir, se fija opuesto al valor del binario de entrada). En una realización adicional, el valor del binario de salida 26 se fija igual al valor del binario de entrada 25 si la medida de la probabilidad para uno de los dos valores de binario posibles para la solicitud de binario actual es mayor que (o mayor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos posibles valores de binario para la solicitud de binario actual es menor que o igual a (o menor que) un umbral particular, el valor del binario de salida 26 se modifica (es decir, se fija al opuesto del valor del binario de entrada). En una realización preferente, el valor del umbral se corresponde a un valor de 0,5 para la probabilidad estimada para ambos posibles valores de binario.The binary buffer selector 18 can determine the value of the output binary 26 based on the value of the input binary 25 and the measurement of a probability estimate for one of the two possible binary values for the current requested binary that is associated with the request for a binary 17. In one embodiment, the value of the output binary 26 is set equal to the value of the input binary 25 if the measure of the probability for one of the two possible binary values for the request for current binary is less than (or less than or equal to) a particular threshold; if the probability measure for one of the two possible binary values for the current binary request is greater than or equal to (or greater than) a particular threshold, the value of the output binary 26 is modified (i.e., it is fixed opposite the input binary value). In a further embodiment, the value of the output binary 26 is set equal to the value of the input binary 25 if the probability measure for one of the two possible binary values for the current binary request is greater than (or greater than or equal to) a particular threshold; if the probability measure for one of the two possible binary values for the current binary request is less than or equal to (or less than) a particular threshold, the value of the output binary 26 is modified (i.e., it is sets to the opposite of the input binary value). In a preferred embodiment, the threshold value corresponds to a value of 0.5 for the estimated probability for both possible binary values.

En una realización adicional, el selector de memoria intermedia de binario 18 determina el valor del binario de salida 26 basándose en el valor del binario de entrada 25 y el identificador, que específica la estimación de cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable para la solicitud de binario actual, que se asocia con la solicitud de un binario 17. En una realización preferente, el valor del binario de salida 26 se fija igual al valor de binario de entrada 25 si el identificador específica que el primero de dos posibles valores de binario representa el valor de binario menos probable (o más probable) para la solicitud de binario actual, y el valor de binario de salida 26 se modifica (es decir, se fija al opuesto del valor del binario de entrada) si el identificador específica que el segundo de los dos valores de binario posibles representa el valor de binario menos probable (o más probable) para la solicitud de binario actual.In a further embodiment, the binary buffer selector 18 determines the value of the output binary 26 based on the value of the input binary 25 and the identifier, which specifies the estimation of which of the two possible binary values the value represents. less likely or more likely binary for the current binary request, which is associated with the request for a binary 17. In a preferred embodiment, the value of the output binary 26 is set equal to the input binary value 25 if the identifier specifies that the first of two possible binary values represents the least likely (or most likely) binary value for the current binary request, and the output binary value 26 is modified (i.e. set to the opposite of the value of the input binary) if the identifier specifies that the second of the two possible binary values represents the least likely (or most likely) binary value for the current binary request l.

Como se ha descrito anteriormente, el selector de memoria intermedia de binario envía una solicitud un binario 19 a una de las dos o más memorias intermedias de binario 20. Las memorias intermedias de binario 20 representan memorias intermedias primero en entrar primero en salir, que se alimentan con secuencias de binario decodificadas 21 desde los decodificadores de binario 22 conectados. Como respuesta a una solicitud de un binario 19 que se envía a una memoria intermedia de binario 20 desde el selector de memoria intermedia de binario 18, la memoria intermedia de binario 20 elimina de su contenido el binario que se alimentó primero en la memoria intermedia de binario 20 y lo envía al selector de memoria intermedia de binario 18. Los binarios que se enviaron antes a la memoria intermedia de binario 20 se eliminan antes y se envían al selector de memoria intermedia de binario 18. As described above, the binary buffer selector sends a request for a binary 19 to one of the two or more binary buffers 20. Binary buffers 20 represent first-in-first-out buffers, which are they feed decoded binary streams 21 from the connected binary decoders 22. In response to a request for a binary 19 that is sent to a binary buffer 20 from the binary buffer selector 18, the binary buffer 20 removes from its content the binary that was first fed into the binary 20 and sends it to binary buffer selector 18. Binaries that were previously sent to binary buffer 20 are removed earlier and sent to binary buffer selector 18.

Cada una de las dos o más memorias intermedias de binario 20 se conecta con exactamente un decodificador de binario 22 y cada decodificador de binario se conecta solamente con una memoria intermedia de binario 20. Cada decodificador de binario 22 lee palabras de código 23, que representan secuencias de bits, desde un flujo de bits 24 parcial separado. El decodificador de binario convierte una palabra de código 23 en una secuencia de binarios 21 que se envía a la memoria intermedia de binario conectada 20. El algoritmo de decodificación global convierte dos o más flujos de bits 24 parciales en un número de símbolos fuente decodificados, donde el número de flujos de bits parciales es igual al número de memorias intermedias de binario y decodificadores de binario y la decodificación de símbolos fuente se activa por las solicitudes de nuevos símbolos fuente. En una realización, un decodificador de binario 22 convierte palabras de código 23 de un número variable de bits en una secuencia de un número variable de binarios 21. Una ventaja de las realizaciones PIPE anteriores es que la decodificación de binarios desde dos o más flujos de bits parciales puede realizarse en paralelo (por ejemplo, para diferentes grupos de medidas de probabilidad), lo que reduce el tiempo de procesamiento para varias implementaciones.Each of the two or more binary buffers 20 connects to exactly one decoder. Binary 22 and each binary decoder connects only to a binary buffer 20. Each binary decoder 22 reads code words 23, representing bit streams, from a separate partial bit stream 24. The binary decoder converts a code word 23 into a sequence of binaries 21 that is sent to the connected binary buffer 20. The global decoding algorithm converts two or more partial bit streams 24 into a number of decoded source symbols, where the number of partial bitstreams equals the number of binary buffers and binary decoders and the decoding of source symbols is triggered by requests for new source symbols. In one embodiment, a binary decoder 22 converts code words 23 of a variable number of bits into a sequence of a variable number of binaries 21. An advantage of the above PIPE embodiments is that decoding of binaries from two or more streams of Partial bits can be done in parallel (for example, for different sets of probability measures), reducing processing time for multiple implementations.

Otra ventaja de las realizaciones de decodificación PIPE anteriores es que la decodificación de binario, que se realiza por los decodificadores de binario 22, puede diseñarse específicamente para diferentes conjuntos de parámetros 17. En particular, la codificación y decodificación de binario puede optimizarse (en términos de eficiencia de codificación y/o complejidad) para diferentes grupos de probabilidades estimadas. Por un lado, esto permite una reducción de la complejidad de codificación/decodificación con relación a los algoritmos de codificación aritmética con similar eficiencia de codificación. Por otro lado, permite una mejora de la eficiencia de codificación con relación a los algoritmos de codificación VLC con complejidad de codificación/decodificación similar. En una realización, los decodificadores de binario 22 implementan diferentes algoritmos de decodificación (es decir mapeados de secuencias de binario en palabras de código) para diferentes grupos de medidas de una estimación de la probabilidad para uno de los dos posibles valores de binario 17 para la solicitud de binario actual. En una realización adicional, los decodificadores de binario 22 implementan diferentes algoritmos de decodificación para diferentes grupos de medidas de una estimación de la probabilidad para el valor de binario menos probable o más probable para el binario solicitado actual. En una realización adicional, los decodificadores de binario 22 implementan diferentes algoritmos de decodificación para diferentes códigos de protección de canal. En una realización adicional, los decodificadores de binario 22 implementan diferentes algoritmos de decodificación para diferentes esquemas de cifrado. En una realización adicional, los decodificadores de binario 22 implementan diferentes algoritmos de decodificación para diferentes combinaciones de códigos de protección de canal y grupos de medidas de una estimación de la probabilidad para uno de los dos posibles valores de binario 17 para el binario solicitado actual. En una realización adicional, los decodificadores de binario 22 implementan diferentes algoritmos de decodificación para diferentes combinaciones de códigos de protección de canal y grupos de medidas de una estimación de la probabilidad para el valor de binario 17 menos probable o más probable para el binario solicitado actual. En una realización adicional, los decodificadores de binario 22 implementan diferentes algoritmos de decodificación para diferentes combinaciones de esquemas de cifrado y grupos de medidas de una estimación de la probabilidad para uno de los dos posibles valores de binario 17 para el binario solicitado actual. En una realización adicional, los decodificadores de binario 22 implementan diferentes algoritmos de decodificación para diferentes combinaciones de esquemas de cifrado y grupos de medidas de una estimación de la probabilidad para el valor de binario 17 menos probable o más probable para el binario solicitado actual.Another advantage of the above PIPE decoding embodiments is that the binary decoding, which is performed by the binary decoders 22, can be specifically designed for different sets of parameters 17. In particular, the binary encoding and decoding can be optimized (in terms of coding efficiency and / or complexity) for different groups of estimated probabilities. On the one hand, this allows a reduction of the coding / decoding complexity in relation to arithmetic coding algorithms with similar coding efficiency. On the other hand, it allows an improvement of the coding efficiency in relation to the VLC coding algorithms with similar coding / decoding complexity. In one embodiment, the binary decoders 22 implement different decoding algorithms (i.e. mapping binary streams into codewords) for different sets of measures of a probability estimate for one of the two possible binary values 17 for the current binary request. In a further embodiment, the binary decoders 22 implement different decoding algorithms for different sets of measurements of an estimate of the probability for the least probable or most probable binary value for the current requested binary. In a further embodiment, the binary decoders 22 implement different decoding algorithms for different channel protection codes. In a further embodiment, the binary decoders 22 implement different decoding algorithms for different encryption schemes. In a further embodiment, the binary decoders 22 implement different decoding algorithms for different combinations of channel protection codes and groups of measurements of a probability estimate for one of the two possible binary values 17 for the current requested binary. In a further embodiment, the binary decoders 22 implement different decoding algorithms for different combinations of channel protection codes and groups of measures of an estimate of the probability for the binary value 17 less likely or more likely for the current requested binary . In a further embodiment, the binary decoders 22 implement different decoding algorithms for different combinations of encryption schemes and groups of measures of a probability estimate for one of the two possible binary values 17 for the current requested binary. In a further embodiment, the binary decoders 22 implement different decoding algorithms for different combinations of encryption schemes and groups of measures of an estimate of the probability for the binary value 17 less likely or more probable for the current requested binary.

Los decodificadores de binario 22 realizan el mapeado inverso de los codificadores de binario correspondientes en el lado del codificador.The binary decoders 22 reverse map the corresponding binary encoders on the encoder side.

En una realización adicional, los decodificadores de binario 22 - o uno o más de los decodificadores de binario -representan motores de decodificación aritmética binaria.In a further embodiment, the binary decoders 22 - or one or more of the binary decoders - represent binary arithmetic decoding engines.

En una realización adicional, los decodificadores de binario 22 - o uno o más de los decodificadores de binario -pueden representar decodificadores entrópicos que mapean directamente palabras de código 23 en secuencias de binarios 21. Dichos mapeados pueden implementarse eficientemente y no requieren un motor de codificación aritmética complejo. El mapeado de palabras de código en secuencias de binario ha de ser único. En una realización, el mapeado de palabras de código 23 en secuencias de binario 21 es biyectivo. En una realización adicional, los decodificadores de binario 10 - o uno o más de los decodificadores de binario - representan decodificadores entrópicos que mapean directamente palabras de código 23 de longitud variable en secuencias de binarios 21 de longitud variable. En una realización, las palabras de código de entrada representan códigos sin redundancia tales como los códigos Huffman generales o los códigos Huffman canónicos. Se ilustran en la Tabla 3 dos ejemplos de mapeado biyectivo de códigos sin redundancia en secuencias de binarios. En una realización adicional, las palabras de código de entrada representan códigos redundantes adecuados para detección de error y recuperación de error. En una realización adicional, las palabras de código de entrada representan códigos cifrados. In a further embodiment, the binary decoders 22 - or one or more of the binary decoders - can represent entropy decoders that directly map codewords 23 into binary sequences 21. Such mappings can be implemented efficiently and do not require an encoding engine. complex arithmetic. The mapping of codewords into binary sequences must be unique. In one embodiment, the mapping of code words 23 into binary sequences 21 is bijective. In a further embodiment, the binary decoders 10 - or one or more of the binary decoders - represent entropy decoders that directly map codewords 23 of variable length into binary sequences 21 of variable length. In one embodiment, the input codewords represent non-redundant codes such as general Huffman codes or canonical Huffman codes. Two examples of bijective code mapping without redundancy in binary sequences are illustrated in Table 3. In a further embodiment, the input code words represent redundant codes suitable for error detection and error recovery. In a further embodiment, the input code words represent encrypted codes.

Los decodificadores de binario 22 - o uno o más de los decodificadores de binario - pueden representar decodificadores entrópicos que mapean directamente palabras de código 23 de longitud fija en secuencias de binarios 21 de longitud variable. Como alternativa los decodificadores de binario 22 - o uno o más de los decodificadores de binario - representan decodificadores entrópicos que mapean directamente palabras de código 23 de longitud variable en secuencias de binarios 21 de longitud fija. The binary decoders 22 - or one or more of the binary decoders - can represent entropy decoders that directly map fixed-length codewords 23 into variable length binary sequences 21. Alternatively, the binary decoders 22 - or one or more of the binary decoders - represent entropic decoders that directly map variable length codewords 23 into fixed length binary sequences 21.

Así, la Fig. 3 y la Fig. 4 muestran una realización para un codificador PIPE para la codificación de una secuencia de símbolos fuente 1 y un decodificador PIPE para la reconstrucción de la misma. Esto es, el codificador PIPE de la Fig. 3 puede usarse como el codificador PIPE 104 en la Fig. 1a actuando un conversor a binario 2 como el simbolizador 122, actuando el asignador de parámetros 4 como el asignador 114, actuando el selector de memoria intermedia de binario 6 como el selector 120, y actuando el par de memorias intermedias de binario 8 y el codificador de binario 10 conectados en serie como uno respectivo de los codificadores entrópicos 116 cada uno de los cuales produce flujos de bits 12 correspondientes a los flujos de bits 118 en la Fig. 1a. Como queda claro a partir de la comparación de la Fig. 3 y la Fig. 1, el asignador 114 de la Fig. 1a puede tener su entrada conectada de manera alternativa al lado de entrada del simbolizador 122 en lugar de al lado de salida de este último. De modo similar, el decodificador PIPE de la Fig. 4 puede usarse como el decodificador PIPE 202 de la Fig. 2a correspondiendo los flujos de bits 24 parciales a los flujos de bits 216 en la Fig. 2, correspondiendo los pares de memorias intermedias 20 y decodificador de binario 22 conectados en serie a los decodificadores entrópicos 210 individuales, actuando el selector de memoria intermedia de binario 18 como el selector 214, actuando el asignador de parámetros 16 como el asignador 212 y actuando el conversor a binario 14 como el desimbolizador 222. De nuevo, una comparación entre la Fig. 2a y la Fig. 4 deja claro que la interconexión entre el desimbolizador 222, asignador 212 y selector 214 puede configurarse de modo diferente, de modo que, de acuerdo con una realización alternativa, las conexiones de la Fig. 2a se modifican para corresponder a aquellas mostradas en la Fig. 4.Thus, Fig. 3 and Fig. 4 show an embodiment for a PIPE encoder for encoding a source symbol sequence 1 and a PIPE decoder for reconstruction thereof. That is, the PIPE encoder of Fig. 3 can be used as the PIPE encoder 104 in Fig. 1a with a binary converter 2 acting as the symbolizer 122, the parameter allocator 4 acting as the allocator 114, the memory selector acting binary buffer 6 as selector 120, and the pair of binary buffers 8 and binary encoder 10 acting in series as one of the respective entropic encoders 116 each producing bitstreams 12 corresponding to the streams of bits 118 in Fig. 1a. As is clear from the comparison of FIG. 3 and FIG. 1, the mapper 114 in FIG. 1a may have its input alternatively connected to the input side of the symbolizer 122 instead of the output side of the latter. Similarly, the PIPE decoder of Fig. 4 can be used as the PIPE decoder 202 of Fig. 2a with partial bitstreams 24 corresponding to bitstreams 216 in Fig. 2, buffer pairs 20 corresponding. and binary decoder 22 connected in series to the individual entropic decoders 210, the binary buffer selector 18 acting as the selector 214, the parameter mapper 16 acting as the mapper 212 and the converter to binary 14 acting as the de-symbolizer 222 Again, a comparison between Fig. 2a and Fig. 4 makes it clear that the interconnection between the de-symbolizer 222, allocator 212 and selector 214 can be configured differently, so that, according to an alternative embodiment, the connections of Fig. 2a are modified to correspond to those shown in Fig. 4.

El codificador PIPE de la Fig. 3 comprende un asignador 4 configurado para asignar un número de parámetros 5 a cada símbolo de alfabeto de la secuencia de símbolos de alfabeto 3. La asignación se basa en información contenida dentro de los símbolos de alfabeto previos de la secuencia de símbolos de alfabeto de modo que la categoría del elemento de sintaxis 1 a cuya representación - tal como conversión a binario - pertenece el símbolo de alfabeto actual y que, de acuerdo con la estructura de sintaxis de los elementos de sintaxis 1, se espera actualmente, expectación que, a su vez, es deducible del historial de los elementos de sintaxis 1 previos y símbolos de alfabeto 3. Adicionalmente, el codificador comprende una pluralidad de codificadores entrópicos 10 cada uno de los cuales está configurado para convertir los símbolos de alfabeto 3 enviados al codificador entrópico respectivo en un flujo de bits 12 respectivo, y un selector 6 configurado para enviar cada símbolo de alfabeto 3 a uno seleccionado de la pluralidad de codificadores entrópicos 10, dependiendo la selección del número de parámetros 5 asignado al símbolo de alfabeto respectivo 3. El decodificador PIPE de la Fig. 4 comprende una pluralidad de decodificadores entrópicos 22, cada uno de los cuales está configurado para convertir un flujo de bits 23 respectivo en símbolos de alfabeto 21; un asignador 16 configurado para asignar un número de parámetros 17 a cada símbolo 15 del alfabeto de una secuencia de símbolos de alfabeto a reconstruirse basándose en información contenida dentro de símbolos de alfabeto previamente reconstruidos de la secuencia de símbolos de alfabeto (véase 26 y 27 en la Fig. 4); y un selector 18 configurado para recuperar cada símbolo de alfabeto de la secuencia de símbolos de alfabeto a reconstruirse a partir de uno seleccionado de la pluralidad de decodificadores entrópicos 22, dependiendo la selección del número de parámetros definidos para el símbolo de alfabeto respectivo. El asignador 16 puede configurarse de modo que el número de parámetros asignados a cada símbolo de alfabeto comprende, o es, una medida de una estimación de una probabilidad de distribución entre los posibles valores de símbolos de alfabeto que puede asumir un símbolo de alfabeto respectivo. La secuencia de símbolos de alfabeto a reconstruirse puede ser de un alfabeto binario y el asignador 16 puede configurarse de modo que la estimación de la distribución de probabilidad consiste en una medida de una estimación de una probabilidad de un valor de binario menos probable o más probable de los dos posibles valores de binario del alfabeto binario y un identificador que específica la estimación de cuál de los dos posibles valores de binario representa el valor de binario menos probable o más probable. El asignador 16 puede configurarse adicionalmente para asignar internamente un contexto a cada símbolo de alfabeto de la secuencia de símbolos de alfabeto 15 a reconstruirse basándose en la información contenida dentro de los símbolos de alfabeto previamente reconstruidos de la secuencia de símbolos de alfabeto a reconstruirse teniendo cada contexto una estimación de distribución de probabilidad respectiva asociada con el mismo, y adaptar la estimación de distribución de probabilidad para cada contexto a una estadística de símbolos actuales basándose en valores de símbolos de símbolos de alfabeto previamente reconstruidos a los que se asigna el contexto respectivo. El contexto puede tener en cuenta una relación espacial o vecindad de posiciones a las que los elementos de sintaxis pertenecen tal como en codificación de vídeo o imagen, o incluso en tablas en caso de aplicaciones financieras. A continuación, la medida de la estimación de la distribución de probabilidad para cada símbolo de alfabeto puede determinarse basándose en la estimación de distribución de probabilidad asociada con el contexto asignado al símbolo de alfabeto respectivo tal como mediante cuantificación de la estimación de distribución de probabilidad asociada con el contexto asignado con el símbolo de alfabeto respectivo a uno de una pluralidad de estimaciones de distribución de probabilidad representativas para obtener la medida para la estimación de la distribución de probabilidad. El selector puede configurarse de modo que se define una asociación sobreyectiva entre la pluralidad de codificadores entrópicos y la pluralidad de estimaciones de distribución de probabilidades representativas, es decir cada codificador entrópico tiene al menos una estimación de distribución de probabilidad representativa asociada con el mismo, pero puede asociarse más de una estimación de distribución de probabilidad representativa con un codificador entrópico. De acuerdo con una realización, la asociación puede ser incluso biyectiva. El selector 18 puede configurarse para cambiar un mapeado de cuantificación desde un rango de las estimaciones de distribución de probabilidad a la pluralidad de estimaciones de distribución de probabilidad representativas en una forma determinista predeterminada dependiendo de símbolos de alfabeto previamente reconstruidos de la secuencia de símbolos de alfabeto, a lo largo del tiempo. Esto es, el selector 18 puede cambiar los tamaños de la etapa de cuantificación, es decir los intervalos de distribuciones de probabilidad mapeados en índices de probabilidad individuales que, a su vez, pueden asociarse sobreyectivamente con los decodificadores entrópicos individuales. La pluralidad de decodificadores entrópicos 22, a su vez, puede configurarse para adaptar su forma de conversión de símbolos de alfabeto en flujos de bits en respuesta a un cambio en el mapeado de cuantificación. Por ejemplo, cada decodificador entrópico 22 puede optimizarse para, es decir puede tener una tasa de compresión óptima para, una cierta estimación de distribución de probabilidad dentro del intervalo de cuantificación de la estimación de distribución de probabilidad respectivo, y puede cambiar su mapeado de palabras de código/ secuencias de símbolos de modo que adapte la posición de esta cierta estimación de distribución de probabilidad dentro del intervalo de cuantificación de estimación de distribución de la probabilidad respectivo tras un cambio de este último, de modo que se optimice. El selector puede configurarse para cambiar el mapeado de cuantificación de modo que las tasas a las que se recuperan los símbolos de alfabeto desde la pluralidad de decodificadores entrópicos, se hace menos dispersa. Como con el conversor a binario 14 se observa que el mismo puede suprimirse si los elementos de sintaxis ya son binarios. Adicionalmente, dependiendo del tipo del decodificador 22, la existencia de las memorias intermedias 20 no es necesaria. Adicionalmente, las memorias intermedias pueden integrarse dentro de los decodificadores.The PIPE encoder of Fig. 3 comprises an allocator 4 configured to assign a number of parameters 5 to each alphabet symbol in the alphabet symbol sequence 3. The assignment is based on information contained within the previous alphabet symbols in the sequence of alphabet symbols so that the category of syntax element 1 to whose representation - such as conversion to binary - the current alphabet symbol belongs and which, according to the syntax structure of syntax elements 1, is expected currently, an expectation which, in turn, is deducible from the history of previous syntax elements 1 and alphabet symbols 3. Additionally, the encoder comprises a plurality of entropic encoders 10 each of which is configured to convert alphabet symbols 3 sent to the respective entropic encoder in a respective bitstream 12, and a selector 6 configured to send each alphabet symbol 3 to one selected from the plurality of entropic encoders 10, the selection of the number of parameters 5 assigned to the respective alphabet symbol 3 depending. The PIPE decoder of Fig. 4 comprises a plurality of entropic decoders 22, each of which is configured to convert a respective bit stream 23 in alphabet symbols 21; an allocator 16 configured to assign a number of parameters 17 to each alphabet symbol 15 of a sequence of alphabet symbols to be reconstructed based on information contained within previously reconstructed alphabet symbols of the sequence of alphabet symbols (see 26 and 27 in Fig. 4); and a selector 18 configured to retrieve each alphabet symbol from the sequence of alphabet symbols to be reconstructed from one selected from the plurality of entropic decoders 22, the selection depending on the number of parameters defined for the respective alphabet symbol. The allocator 16 can be configured such that the number of parameters assigned to each alphabet symbol comprises, or is, a measure of an estimate of a probability of distribution among the possible alphabet symbol values that a respective alphabet symbol can assume. The sequence of alphabet symbols to be reconstructed can be from a binary alphabet and allocator 16 can be configured such that the estimate of the probability distribution consists of a measure of an estimate of a probability of a less likely or more likely binary value of the two possible binary values of the binary alphabet and an identifier that specifies the estimation of which of the two possible binary values represents the least probable or most probable binary value. Mapper 16 may be further configured to internally assign a context to each alphabet symbol in the alphabet symbol sequence 15 to be reconstructed based on the information contained within the previously reconstructed alphabet symbols in the alphabet symbol sequence to be reconstructed having each context a respective probability distribution estimate associated therewith, and adapting the probability distribution estimate for each context to a current symbol statistic based on previously reconstructed alphabet symbol symbol values to which the respective context is assigned. The context can take into account a spatial relationship or neighborhood of positions to which the syntax elements belong such as in video or image encoding, or even in tables in the case of financial applications. Next, the measure of the probability distribution estimate for each alphabet symbol can be determined based on the probability distribution estimate associated with the context assigned to the respective alphabet symbol such as by quantifying the associated probability distribution estimate with the context assigned with the respective alphabet symbol to one of a plurality of representative probability distribution estimates to obtain the measure for the probability distribution estimate. The selector may be configured such that a surjective association is defined between the plurality of entropy encoders and the plurality of representative probability distribution estimates, i.e. each entropic encoder has at least one representative probability distribution estimate associated therewith, but More than one representative probability distribution estimate can be associated with an entropic encoder. According to one embodiment, the association can even be bijective. Selector 18 can be configured to change a quantization mapping from a range of probability distribution estimates to the plurality of probability distribution estimates representative in a predetermined deterministic way depending on previously reconstructed alphabet symbols from the sequence of alphabet symbols, over time. That is, selector 18 can change the sizes of the quantization step, that is, the ranges of probability distributions mapped to individual probability indices which, in turn, can be projectively associated with the individual entropic decoders. The plurality of entropic decoders 22, in turn, can be configured to accommodate their way of converting alphabet symbols into bit streams in response to a change in quantization mapping. For example, each entropy decoder 22 may be optimized for, i.e. may have an optimal compression rate for, a certain probability distribution estimate within the respective probability distribution estimate quantization range, and may change its word mapping of code / symbol sequences so as to adapt the position of this certain probability distribution estimate within the respective probability distribution estimate quantization range after a change of the latter, so as to optimize it. The selector can be configured to change the quantization mapping so that the rates at which the alphabet symbols are retrieved from the plurality of entropic decoders become less scattered. As with the binary converter 14, it is observed that it can be suppressed if the syntax elements are already binary. Additionally, depending on the type of decoder 22, the existence of buffers 20 is not necessary. Additionally, buffers can be integrated into decoders.

Hasta el momento, se han descrito más detalles para el codificador PIPE 104 y el decodificador PIPE 202 en las Figs. 1a y 2 anteriores, con respecto a las Figs. 3 y 4, que, si se implementan claramente en los aparatos de las Figs. 1a y 2, conduce a una producción de un flujo de bits paralelo en el que los flujos de bits parciales VLC y PIPE se transportan en paralelo. A continuación, se describen posibilidades sobre cómo combinar los flujos de bits parciales PIPE para que se transmitan, a continuación, junto con flujos de bits VLC en paralelo, o intercalando en segundo lugar ambos flujos de bits, es decir el flujo de bits VLC y el flujo de bits PIPE intercalado.So far, more details have been described for the PIPE 104 encoder and the PIPE 202 decoder in Figs. 1a and 2 above, with respect to Figs. 3 and 4, which, if clearly implemented in the apparatus of Figs. 1a and 2, leads to a production of a parallel bitstream in which the VLC and PIPE partial bitstreams are transported in parallel. Possibilities on how to combine the PIPE partial bitstreams to be transmitted are then described below, together with VLC bitstreams in parallel, or secondly interleaving both bitstreams, i.e. the VLC bitstream and the interleaved PIPE bitstream.

Finalización de secuencias de símbolos fuente finitosFinishing sequences of finite source symbols

En una realización para los codificadores y decodificadores PIPE, la codificación y decodificación se realiza para un conjunto finito de símbolos fuente. Frecuentemente se codifica una cierta cantidad de datos tal como una imagen fija, un fotograma o campo de una secuencia de vídeo, un fragmento de imagen, un fragmento de un fotograma o un campo de una secuencia de vídeo, un conjunto de muestras de audio sucesivas, etc. Para conjuntos finitos de símbolos fuente, en general, los flujos de bits parciales que se crean en el lado del codificador han de finalizarse, es decir, ha de asegurarse que todos los símbolos fuente pueden decodificarse a partir de los flujos de bits parciales transmitidos o almacenados. Después de que se inserte el último binario dentro de la memoria intermedia de binario 8 correspondiente, el codificador de binario 10 tiene que asegurar que se escribe una palabra de código completa en el flujo de bits 12 parcial. Si el codificador de binario 10 representa un motor de codificación aritmética binaria, la palabra de código aritmética ha de finalizarse. El codificador de binario 10 representa un codificador entrópico que implementa un mapeado directo de secuencias de binario sobre palabras de código, la secuencia de binarios que se almacena en la memoria intermedia de binario después de escribir el último binario en la memoria intermedia de binario podría no representar una secuencia de binarios que se asocia con una palabra de código (es decir, podría representar un prefijo de dos o más secuencias de binario que se asocian con palabras de código). En dicho caso, cualquiera de las palabras de código asociadas con una secuencia de binarios que contenga la secuencia de binarios en la memoria intermedia de binario como prefijo ha de escribirse en el flujo de bits parcial (la memoria intermedia de binario ha de purgarse). Esto podría realizarse mediante la inserción de binarios con un valor particular o uno arbitrario en la memoria intermedia de binario hasta que se escriba una palabra de código. En una realización preferente, el codificador de binario selecciona una de las palabras de código con longitud mínima (además de la propiedad de que la secuencia de binario asociada debe contener la secuencia de binarios en la memoria intermedia de binario como prefijo). En el lado del decodificador, el decodificador de binario 22 puede decodificar más binarios que los requeridos para la última palabra de código en un flujo de bits parcial; estos binarios no se solicitan por el selector de memoria intermedia de binario 18 y se descartan e ignoran. La decodificación del conjunto finito de símbolos se controla mediante solicitudes de símbolos fuente decodificados; si no se solicitan símbolos fuente adicionales para una cantidad de datos, la decodificación se finaliza.In one embodiment for PIPE encoders and decoders, encoding and decoding is performed for a finite set of source symbols. Often a certain amount of data is encoded such as a still image, a frame or field of a video sequence, a fragment of an image, a fragment of a frame or a field of a video sequence, a set of successive audio samples , etc. For finite sets of source symbols, in general, the partial bit streams that are created on the encoder side have to be terminated, i.e. it has to be ensured that all source symbols can be decoded from the transmitted or partial bit streams. stored. After the last binary is inserted into the corresponding binary buffer 8, the binary encoder 10 has to ensure that a complete codeword is written to the partial bitstream 12. If the binary encoder 10 represents a binary arithmetic encoding engine, the arithmetic codeword is to be finalized. Binary encoder 10 represents an entropic encoder that implements direct mapping of binary sequences over codewords, the binary sequence that is stored in the binary buffer after writing the last binary to the binary buffer might not represent a binary sequence that is associated with a codeword (that is, it could represent a prefix of two or more binary sequences that are associated with codewords). In that case, any of the code words associated with a binary sequence containing the binary sequence in the binary buffer as a prefix has to be written to the partial bitstream (the binary buffer has to be purged). This could be done by inserting binaries with a particular or arbitrary value into the binary buffer until a code word is written. In a preferred embodiment, the binary encoder selects one of the codewords with minimum length (in addition to the property that the associated binary sequence must contain the binary sequence in the binary buffer as a prefix). On the decoder side, binary decoder 22 can decode more binaries than required for the last codeword in a partial bitstream; these binaries are not requested by the binary buffer selector 18 and are discarded and ignored. Decoding of the finite set of symbols is controlled by requests for decoded source symbols; if no additional source symbols are requested for a quantity of data, the decoding is finished.

Transmisión y multiplexación de flujos de bits parcialesTransmission and multiplexing of partial bit streams

Los flujos de bits parciales 12 que se crean por el codificador PIPE pueden transmitirse por separado, o pueden multiplexarse en un único flujo de bits, o las palabras de código de los flujos de bits parciales pueden intercalarse en un único flujo de bits.The partial bit streams 12 that are created by the PIPE encoder can be transmitted separately, or can be multiplexed into a single bit stream, or the code words of the partial bit streams can be interleaved into a single bit stream.

En una realización, cada flujo de bits parcial para una cantidad de datos se escribe en un paquete de datos. La cantidad de datos puede ser un conjunto arbitrario de símbolos fuente tal como una imagen fija, un campo o fotograma de una secuencia de vídeo, un fragmento de una imagen fija, un fragmento de un campo o fotograma de una secuencia de vídeo, o una trama de muestras de audio, etc. In one embodiment, each partial bitstream for a quantity of data is written to a data packet. The amount of data may be an arbitrary set of source symbols such as a still image, a field or frame of a video sequence, a fragment of a still image, a fragment of a field or frame of a video sequence, or a plot of audio samples, etc.

En otra realización preferente, dos o más de los flujos de bits parciales para la cantidad de datos o todos los flujos de bits parciales para una cantidad de datos se multiplexan en un paquete de datos. La estructura de un paquete de datos que contiene flujos de bits parciales multiplexados se ilustra en la Figura 5. Esto es, el paquete de datos mostrado en la Fig. 5 podía ser parte del flujo intercalado intermedio 132 y 234, respectivamente.In another preferred embodiment, two or more of the partial bit streams for the data amount or all of the partial bit streams for a data amount are multiplexed into a data packet. The structure of a data packet containing multiplexed partial bit streams is illustrated in Figure 5. That is, the data packet shown in Fig. 5 could be part of intermediate interleaved stream 132 and 234, respectively.

El paquete de datos 300 consiste en una cabecera y una partición de los datos para cada flujo de bits parcial (para la cantidad de datos considerada). La cabecera 300 del paquete de datos contiene indicaciones para la partición del (resto del) paquete de datos en segmentos de datos de flujo de bits 302. Junto a las indicaciones para la partición, la cabecera puede contener información adicional. En una realización, los indicadores para la partición del paquete de datos son localizaciones del inicio de los segmentos de datos en unidades de bits o bytes o múltiplos de bits o múltiplos de bytes. En una realización, las localizaciones del inicio de los segmentos de datos se codifican como valores absolutos en la cabecera del paquete de datos, o bien con relación al inicio del paquete de datos o en relación al final de la cabecera o en relación al inicio del paquete de datos previo. En una realización adicional, las localizaciones del inicio de los segmentos de datos se codifican diferencialmente, es decir, solo se codifica la diferencia entre el inicio real del paquete de un segmento de datos y una predicción para el inicio del segmento de datos. La predicción puede deducirse basándose en información ya conocida o transmitida tal como el tamaño global del paquete de datos, el tamaño de la cabecera, el número de segmentos de datos en el paquete de datos, la localización del inicio de los segmentos de datos precedentes. En una realización, la localización del inicio del primer paquete de datos no se codifica, sino que se deduce basándose en el tamaño de la cabecera del paquete de datos. En el lado del decodificador, las indicaciones de partición trasmitidas se usan para deducir el inicio de los segmentos de datos. Los segmentos de datos se usan entonces como flujos de bits parciales y los datos contenidos en los segmentos de datos se proporcionan a los decodificadores de binario correspondientes en orden secuencial.Data packet 300 consists of a header and a partition of the data for each partial bitstream (for the amount of data considered). The data packet header 300 contains indications for partitioning the (remainder of) the data packet into bitstream data segments 302. Along with the partition indications, the header may contain additional information. In one embodiment, the flags for partitioning the data packet are locations of the beginning of the data segments in units of bits or bytes or multiples of bits or multiples of bytes. In one embodiment, the locations of the start of the data segments are encoded as absolute values in the header of the data packet, either relative to the start of the data packet or relative to the end of the header or relative to the start of the data packet. previous data package. In a further embodiment, the locations of the start of the data segments are differentially encoded, that is, only the difference between the actual start of the packet of a data segment and a prediction for the start of the data segment is encoded. The prediction can be deduced based on already known or transmitted information such as the overall size of the data packet, the size of the header, the number of data segments in the data packet, the location of the start of the preceding data segments. In one embodiment, the location of the start of the first data packet is not encoded, but is derived based on the size of the header of the data packet. On the decoder side, the transmitted partition indications are used to deduce the start of the data segments. The data segments are then used as partial bit streams and the data contained in the data segments is provided to the corresponding binary decoders in sequential order.

Hay varias alternativas para multiplexación de los flujos de bits parciales 12 en un paquete de datos. Una alternativa, que puede reducir el requisito de información secundaria, en particular para casos en los que los tamaños de los flujos de bits parciales son muy similares, se ilustra en la Fig. 6. La carga útil del paquete de datos, es decir, el paquete de datos 310 sin su cabecera 311, se particiona en segmentos 312 en una forma predefinida. Como un ejemplo, la carga útil del paquete de datos puede particionarse en segmentos del mismo tamaño. Entonces se asocia cada segmento con un flujo de bits parcial o con la primera parte de un flujo de bits parcial 313. Si un flujo de bits parcial es mayor que el segmento de datos asociado, su resto 314 se coloca dentro del espacio no usado en el extremo de los otros elementos de datos. Esto puede realizarse en una forma en la que la parte restante de un flujo de bits se inserta en orden inverso (comenzando desde el final del segmento de datos), lo que reduce la información secundaria. La asociación de los restos de los flujos de bits parciales a segmentos de datos y, cuando se añade más de un resto al segmento de datos, el punto de inicio para uno más de los restos han de señalizarse dentro del flujo de bits, por ejemplo en la cabecera del paquete de datos.There are several alternatives for multiplexing the partial bit streams 12 into a data packet. An alternative, which can reduce the requirement for secondary information, particularly for cases where the sizes of the partial bit streams are very similar, is illustrated in Fig. 6. The payload of the data packet, ie data packet 310 without its header 311 is partitioned into segments 312 in a predefined way. As an example, the payload of the data packet can be partitioned into segments of the same size. Each segment is then associated with a partial bitstream or the first part of a partial bitstream 313. If a partial bitstream is greater than the associated data segment, its remainder 314 is placed within the unused space in the end of the other data elements. This can be done in a way that the remaining part of a bit stream is inserted in reverse order (starting from the end of the data segment), which reduces secondary information. The association of the remnants of the partial bitstreams to data segments and, when more than one remainder is added to the data segment, the starting point for one more of the residues has to be signaled within the bitstream, for example in the header of the data packet.

Intercalado de palabras de código de longitud variableVariable-length codeword interleaving

Para algunas aplicaciones, la multiplexación anteriormente descrita de flujos de bits parciales 12 (para una cantidad de símbolos fuente) en un paquete de datos puede tener las siguientes desventajas: por un lado, para pequeños paquetes de datos, el número de bits de la información secundaria que se requiere para señalización de la partición puede convertirse en significativo en relación a los datos reales en el flujo de bits parcial, lo que finalmente reduce la eficiencia de codificación. Por otro lado, la multiplexación puede no ser adecuada para aplicaciones que requieran un bajo retardo (por ejemplo, para aplicaciones de vídeoconferencia). Con la multiplexación descrita, el codificador PIPE no puede iniciar la transmisión de un paquete de datos antes de que los flujos de bits parciales se hayan creado completamente, dado que las localizaciones de inicio de las particiones no son conocidas antes. Adicionalmente, en general, el decodificador PIPE ha de esperar hasta que reciba el inicio del último segmento de datos antes de que pueda iniciar la decodificación de un paquete de datos. Para aplicaciones tales como sistemas de vídeoconferencia, estos retardos pueden añadirse a un retardo global adicional del sistema de varias imágenes de vídeo (en particular para tasas de bits que estén próximas a la tasa de bits de transmisión y para codificadores/decodificadores que requieran prácticamente el intervalo de tiempo entre dos imágenes para codificación/decodificación de una imagen), lo que es crítico para dichas aplicaciones. Para superar las desventajas para ciertas aplicaciones, el codificador PIPE puede configurarse en una forma en la que las palabras de código que se generan por los dos o más codificadores de binario se intercalan en un único flujo de bits. El flujo de bits con las palabras de código intercaladas puede enviarse directamente al decodificador (cuando se desprecia un pequeño retardo de la memoria intermedia, véase a continuación). En el lado del decodificador PIPE, los dos o más decodificadores de binario leen las palabras de código directamente desde el flujo de bits en orden de decodificación; la decodificación puede iniciarse con el primer bit recibido. Además, no se requiere ninguna información secundaria para señalizar la multiplexación (o intercalado) de los flujos de bits parciales.For some applications, the above-described multiplexing of partial bitstreams 12 (for a number of source symbols) in a data packet may have the following disadvantages: on the one hand, for small data packets, the number of bits of the information Secondary that is required for partitioning signaling can become significant relative to the actual data in the partial bitstream, ultimately reducing coding efficiency. On the other hand, multiplexing may not be suitable for applications that require low delay (for example, for video conferencing applications). With the described multiplexing, the PIPE encoder cannot initiate transmission of a data packet before the partial bit streams have been fully created, since the partition start locations are not known before. Additionally, in general, the PIPE decoder has to wait until it receives the start of the last data segment before it can start decoding a data packet. For applications such as video conferencing systems, these delays can be added to an additional overall system delay of multiple video images (particularly for bit rates that are close to the transmission bit rate and for encoders / decoders that require virtually time interval between two images for encoding / decoding an image), which is critical for such applications. To overcome the disadvantages for certain applications, the PIPE encoder can be configured in a way that the code words that are generated by the two or more binary encoders are interleaved in a single bit stream. The bitstream with the interleaved codewords can be sent directly to the decoder (when a small buffer delay is neglected, see below). On the PIPE decoder side, the two or more binary decoders read the codewords directly from the bitstream in decoding order; decoding can be started with the first bit received. Furthermore, no secondary information is required to signal the multiplexing (or interleaving) of the partial bit streams.

La estructura básica de un codificador PIPE con intercalado de palabras de código se muestra en la Fig. 7. Los codificadores de binario 10 no escriben las palabras de código directamente en los flujos de bits parciales, sino que se conectan con una única memoria intermedia de palabras de código 29, desde la que se escriben las palabras de código en el flujo de bits 34 en orden de codificación. Los codificadores de binario 10 envían solicitudes de una o más entradas de la 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 entradas de la memoria intermedia reservadas. Se accede a las palabras de código 31 (en general de longitud variable) de la memoria intermedia de palabras de código 29 por un escritor de palabras de código 32, que escribe los bits correspondientes 33 en el flujo de bits 34 producido. La memoria intermedia de palabras de código 29 opera como una memoria intermedia primero en entrar primero en salir; las entradas de palabras de código que se reservan antes se escriben antes en el flujo de bits.The basic structure of a codeword interleaved PIPE encoder is shown in Fig. 7. Binary encoders 10 do not write the codewords directly into the partial bitstreams, but instead connect to a single memory buffer of codewords 29, from which codewords are written to bitstream 34 in coding order. Binary 10 encoders send requests for one or more codeword buffer 28 entries to codeword buffer 29 and then send codewords 30 to codeword buffer 29, which are stored in reserved buffer entries. Codewords 31 (generally of variable length) from codeword buffer 29 are accessed by a codeword writer 32, which writes the corresponding bits 33 into the produced bitstream 34. Codeword buffer 29 operates as a first-in-first-out buffer; codeword entries that are reserved before are written to the bitstream earlier.

En una generalización adicional, son posibles múltiples memorias intermedias de palabras de código y flujos de bits parciales 12, donde el número de memorias intermedias de palabras de código es menor que el número de codificadores de binario. Un codificador de binario 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 una o más palabras de código en la memoria intermedia de palabras de código se activa por ciertos eventos en la memoria intermedia de binario 8 conectada. En una realización, la memoria intermedia de palabras de código 29 funciona en una manera en la que el decodificador PIPE puede decodificar instantáneamente el flujo de bits 34 que corresponde a 132 en la Fig. 1a y 134 en la Fig. 2, respectivamente. El orden de codificación en el que se escriben las palabras de código en el flujo de bits es el mismo que el orden en el que se reservan las palabras de código correspondientes en la memoria intermedia de palabras de código. En una realización cada codificador de binario 10 reserva una palabra de código, siendo activada la reserva por un cierto evento en la memoria intermedia de binario conectada. En otra realización, cada codificador de binario 10 reserva más de una palabra de código, siendo activada la reserva por un cierto evento en la memoria intermedia de binario conectada. En una realización más, los codificadores de binario 10 reservan una cantidad diferente de palabras de código, donde la cantidad de palabras de código que se reserva por un codificador de binario particular puede depender del codificador de binario particular y/u otras propiedades del codificador de binario/memoria intermedia de binario particular (tal como la medida de probabilidad asociada, el número de bits ya escritos, etc.).In a further generalization, multiple codeword buffers and partial bit streams 12 are possible, where the number of codeword buffers is less than the number of binary encoders. A binary encoder 10 reserves one or more codewords in the codeword buffer 29, whereby the reservation of one or more codewords in the codeword buffer is triggered by certain events in the memory binary 8 intermediate connected. In one embodiment, the codeword buffer 29 operates in a way that the PIPE decoder can instantly decode the bitstream 34 corresponding to 132 in Fig. 1a and 134 in Fig. 2, respectively. The encoding order in which the codewords are written to the bitstream is the same as the order in which the corresponding codewords are reserved in the codeword buffer. In one embodiment, each binary encoder 10 reserves a codeword, the reservation being triggered by a certain event in the connected binary buffer. In another embodiment, each binary encoder 10 reserves more than one codeword, the reservation being triggered by a certain event in the connected binary buffer. In a further embodiment, the binary encoders 10 reserve a different number of code words, where the amount of code words that is reserved by a particular binary encoder may depend on the particular binary encoder and / or other properties of the encoder. binary / particular binary buffer (such as the associated probability measure, the number of bits already written, etc.).

En una realización, la memoria intermedia de palabras de código funciona como sigue. Si se envía un nuevo binario 7 a una memoria intermedia de binario 8 particular y el número de binarios ya almacenado en la memoria intermedia de binario es cero y no hay actualmente reservada ninguna palabra de código en la memoria intermedia de palabras de código para el codificador de binario que está conectado con la memoria intermedia de binario particular, el codificador de binario 10 conectado envía una solicitud a la memoria intermedia de palabras de código, mediante la cual se reservan una o más entradas de palabras de código en la memoria intermedia de palabras de código 29 para el codificador de binario particular. Las entradas de palabras 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 normalmente por el tamaño máximo de la palabra de código para el codificador de binario correspondiente. La siguiente palabra de código o las siguientes palabras de código que se producen por el codificador de binario (para el que se ha reservado la entrada de palabras de código o las entradas de palabras de código) 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 binario particular se llenan con palabras de código y se envía el siguiente binario a la memoria intermedia de binario que está conectada con el codificador de binario particular, se reservan una o más palabras de código nuevas en la memoria intermedia de palabras de código para el codificador de binario particular, etc. La memoria intermedia de palabras de código 29 representa una memoria intermedia primero en entrar primero en salir en una cierta forma. Las entradas a la memoria intermedia se reservan en orden secuencial. Las palabras de código para las que se han reservado antes las entradas de memoria intermedia correspondientes se escriben antes en el flujo de bits. El escritor de palabras de código 32 comprueba el estado de la memoria intermedia de palabras de código 29, tanto continuamente como después de que se escriba una palabra de código 30 en la memoria intermedia de palabras de código 29. Si la primera entrada a la memoria intermedia contiene una palabra de código completa (es decir, la entrada de la memoria intermedia no está reservada, pero incluye una palabra de código), la correspondiente palabra de código 31 y la correspondiente entrada de la memoria intermedia se eliminan de la memoria intermedia de palabras de código 20 y los bits de la palabra de código 33 se escriben en el flujo de bits. Este proceso se repite hasta que la primera entrada de la memoria intermedia no contiene una palabra de código (es decir, está reservada o libre). Al final del proceso de decodificación, es decir, si se han procesado todos los símbolos fuente de la cantidad de datos considerada, la memoria intermedia de palabras de código debe purgarse. Para ese proceso de purga, se aplica lo siguiente para cada memoria intermedia de binario/codificador de binario como una primera etapa: si la memoria intermedia de binario no contienen binarios, se añade un binario con un valor particular o un valor arbitrario hasta que la secuencia de binarios resultante representa una secuencia de binarios que está asociada con una palabra de código (como se ha indicado anteriormente, una forma preferida de añadir binarios es añadir dichos valores de binario que producen la palabra de código más corta posible - o una de ellas - que se asocia con una secuencia de binarios que contiene el contenido original de la memoria intermedia de binario como prefijo), entonces se escribe la palabra de código en la siguiente entrada de la memoria intermedia reservada para el codificador de binario correspondiente y se vacía la (correspondiente) memoria intermedia de binario. Si se ha reservado más de una entrada de memoria intermedia para uno o más codificadores de binario, la memoria intermedia de palabras de código puede contener aún entradas de palabras de código reservadas. En ese caso, estas entradas de palabras de código se rellenan con palabras de código arbitrarias, pero válidas, para los codificadores de binario correspondientes. En una realización preferente, 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 (si hay múltiples). Finalmente, todas las palabras de código restantes en la memoria intermedia de palabras de código se escriben en el flujo de bits.In one embodiment, the codeword buffer functions as follows. If a new binary 7 is sent to a particular binary 8 buffer and the number of binaries already stored in the binary buffer is zero and no codeword is currently reserved in the codeword buffer for the encoder of binary that is connected to the particular binary buffer, the connected binary encoder 10 sends a request to the codeword buffer, whereby one or more codeword entries are reserved in the word buffer code 29 for the particular binary encoder. Codeword entries can have a variable number of bits; an upper threshold for the number of bits in a buffer entry is usually given by the maximum size of the codeword for the corresponding binary encoder. The next codeword or the following codewords that are produced by the binary encoder (for which codeword input or codeword entries have been reserved) are stored in the reserved input or entries of the codeword buffer. If all reserved buffer entries in the codeword buffer for a particular binary encoder are filled with codewords and the next binary is sent to the binary buffer that is connected to the particular binary encoder, one or more new codewords are reserved in the codeword buffer for the particular binary encoder, etc. Codeword buffer 29 represents a first-in-first-out buffer in a certain way. Entries to the buffer are reserved in sequential order. Codewords for which the corresponding buffer entries have been reserved before are written to the bitstream earlier. Codeword writer 32 checks the status of codeword buffer 29 both continuously and after codeword 30 is written to codeword buffer 29. If the first entry to memory buffer contains a complete codeword (i.e. the buffer entry is not reserved, but includes a codeword), the corresponding codeword 31 and the corresponding buffer entry are removed from the buffer of codewords 20 and codeword 33 bits are written to the bitstream. This process is repeated until the first buffer entry does not contain a codeword (that is, it is reserved or free). At the end of the decoding process, that is, if all source symbols of the considered amount of data have been processed, the codeword buffer should be purged. For that purge process, the following apply to each binary / binary encoder buffer as a first step: if the binary buffer does not contain binaries, a binary with a particular value or arbitrary value is added until the resulting binary sequence represents a binary sequence that is associated with a codeword (as noted above, a preferred way to add binaries is to add those binary values that produce the shortest possible codeword - or one of them - which is associated with a binary sequence containing the original content of the binary buffer as a prefix), then the codeword is written to the next reserved buffer entry for the corresponding binary encoder and the (corresponding) binary buffer. If more than one buffer entry has been reserved for one or more binary encoders, the codeword buffer may still contain reserved codeword entries. In that case, these word inputs from code are populated with arbitrary, but valid, codewords for the corresponding binary encoders. In a preferred embodiment, the shorter valid code word or one of the shorter valid code words (if there are multiple) is inserted. Finally, all the remaining codewords in the codeword buffer are written to the bitstream.

Se ilustran en la Fig. 8 dos ejemplos para el estado 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 la memoria intermedia libre. La primera entrada se llena con una palabra de código (es decir, el codificador de binario 2 solo escribe una palabra de código en una entrada previamente reservada). En la siguiente etapa, esta palabra de código se eliminará de la memoria intermedia de palabras de código y se escribe en el flujo de bits. A continuación, la primera palabra de código reservada para el codificador de binario 3 es la primera entrada de memoria intermedia, pero esta entrada no puede eliminarse de la memoria intermedia de palabras de código, dado que solo está reservada, pero no se ha escrito ninguna palabra de código en esta entrada. En el ejemplo (b), la memoria intermedia de 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 ello el escritor de palabras de código no puede escribir una palabra de código al flujo de bits. Aunque están contenidas 3 palabras de código en la memoria intermedia de palabras de código, el escritor de palabras de código ha de esperar hasta que se escribe la palabra de código en la primera entrada de memoria intermedia reservada para el codificador de binario 3. Obsérvese que las palabras de código deben escribirse en el orden en que se reservaron. Para ser capaz de invertir el proceso en el lado del decodificador (véase a continuación).Two examples for the codeword buffer status are illustrated in Fig. 8. In example (a), the codeword buffer contains 2 entries that are populated with a codeword and 5 reserved entries. In addition, the next entry in the free buffer is marked. The first entry is populated with a code word (that is, binary encoder 2 only writes one code word to a previously reserved entry). In the next stage, this codeword will be removed from the codeword buffer and written to the bitstream. Then the first codeword reserved for binary encoder 3 is the first buffer entry, but this entry cannot be removed from the codeword buffer, since it is only reserved, but no input has been written code word in this entry. In example (b), the codeword buffer contains 3 entries that are populated with a codeword and 4 reserved entries. The first entry is marked as reserved and therefore the codeword writer cannot write a codeword to the bit stream. Although 3 codewords are contained in the codeword buffer, the codeword writer has to wait until the codeword is written to the first buffer entry reserved for binary encoder 3. Note that codewords must be written in the order in which they were reserved. To be able to invert the process on the decoder side (see below).

La estructura básica de un decodificador PIPE con intercalado de palabras de código se muestra en la Fig. 9. Los decodificadores binario 10 no leen las palabras de código directamente de flujos de bits parciales separados, sino que se conectan a una memoria intermedia de bits 38, desde la que se leen las palabras de código 37 en el orden de codificación. Debería observarse que no se requiere necesariamente la memoria intermedia de bits 38, dado que las palabras de código podrían leerse directamente desde el flujo de bits. La memoria intermedia de bits 38 se incluye principalmente en la ilustración para separar claramente aspectos diferentes de la cadena de procesamiento. Los bits 39 del flujo de bits 40 con palabras de código intercaladas, que por ello corresponden al flujo de bits 234 en la Fig. 2, se insertan secuencialmente en la memoria intermedia de bits 38, que representa una memoria intermedia primero en entrar primero en salir. Si un decodificador de binario 22 particular recibe una solicitud de una o más secuencias de binario 35, el decodificador de binario 22 lee una o más palabras de código 37 de la memoria intermedia de bits 38 a través de las solicitudes de bits 36. El decodificador PIPE puede decodificar instantáneamente los símbolos fuente. Obsérvese que el codificador PIPE (tal como se ha descrito anteriormente) debe asegurar mediante la operación en forma adecuada de la memoria intermedia de palabras de código que las palabras de código se escriben en el mismo orden al flujo de bits en el que se solicitan por los decodificadores de binario. En el decodificador PIPE, todo el proceso de decodificación se activa mediante solicitudes de símbolos fuente. Los parámetros tales como el número de palabras de código que se reservan en el lado del codificador por un codificador de binario particular y el número de palabras de código que se leen por el decodificador de binario correspondiente deben ser los mismos.The basic structure of a codeword interleaving PIPE decoder is shown in Fig. 9. The binary decoders 10 do not read the codewords directly from separate partial bit streams, but instead connect to a bit buffer 38 , from which the code words 37 are read in the coding order. It should be noted that bit buffer 38 is not necessarily required, since codewords could be read directly from the bit stream. Bit buffer 38 is mainly included in the illustration to clearly separate different aspects of the processing chain. Bits 39 of bitstream 40 with interleaved codewords, which therefore correspond to bitstream 234 in FIG. 2, are inserted sequentially into bit buffer 38, which represents a first-to-first-enter buffer. go out. If a particular binary decoder 22 receives a request for one or more binary streams 35, binary decoder 22 reads one or more code words 37 from bit buffer 38 through bit requests 36. The decoder PIPE can instantly decode source symbols. Note that the PIPE encoder (as described above) must ensure by proper operation of the codeword buffer that codewords are written in the same order to the bitstream in which they are requested by binary decoders. In the PIPE decoder, the entire decoding process is triggered by requests for source symbols. Parameters such as the number of codewords that are reserved on the encoder side by a particular binary encoder and the number of codewords that are read by the corresponding binary decoder must be the same.

En una generalización adicional, son posibles múltiples memorias intermedias de palabras de código y flujos de bits parciales, donde el número de memorias intermedias de bit es menor que el número de decodificadores de binario. Un decodificador de binario 22 lee una o más palabras de código desde la memoria intermedia de bits 38 en un instante de tiempo, mediante lo cual la lectura de las una o más palabras de código de la memoria intermedia de bits se activa por ciertos eventos en la memoria intermedia de binario conectada 20. En una realización, el decodificador se hace funcionar en una forma en la que una o más palabras de código se leen cuando se envía una solicitud de un binario 19 a una memoria intermedia de binario 20 particular y la memoria intermedia de binario no contiene ningún binario. Pero es posible también activar la lectura de las palabras de código por otros eventos, por ejemplo si el número de binarios en la memoria intermedia de binario está por debajo de un umbral predefinido. En una realización, cada decodificador de binario 22 lee una palabra de código, siendo activada la lectura por un cierto evento en la memoria intermedia de binario conectada. En otra realización, cada decodificador de binario 22 lee más de una palabra de código, siendo activada la lectura por un cierto evento en la memoria intermedia de binario conectada. En una realización más, los decodificadores de binario 22 leen una cantidad diferente de palabras de código, donde la cantidad de palabras de código que se lee por un decodificador de binario particular puede depender del decodificador de binario particular y/u otras propiedades del decodificador de binario/memoria intermedia de binario particular (tal como la medida de probabilidad asociada, el número de bits ya leídos, etc.). In a further generalization, multiple codeword buffers and partial bitstreams are possible, where the number of bit buffers is less than the number of binary decoders. A binary decoder 22 reads one or more codewords from bit buffer 38 in an instant of time, whereby the reading of the one or more codewords from bit buffer is triggered by certain events in the connected binary buffer 20. In one embodiment, the decoder is operated in a way that one or more codewords are read when a request for a binary 19 is sent to a particular binary buffer 20 and the binary buffer does not contain any binary. But it is also possible to trigger the reading of the codewords by other events, for example if the number of binaries in the binary buffer is below a predefined threshold. In one embodiment, each binary decoder 22 reads a code word, reading being triggered by a certain event in the connected binary buffer. In another embodiment, each binary decoder 22 reads more than one codeword, reading being triggered by a certain event in the connected binary buffer. In a further embodiment, the binary decoders 22 read a different number of code words, where the number of code words that are read by a particular binary decoder may depend on the particular binary decoder and / or other properties of the decoder. binary / particular binary buffer (such as the associated probability measure, the number of bits already read, etc.).

En una realización, la lectura de palabras de código desde la memoria intermedia de bits funciona como sigue. Si se envía una nueva solicitud de binario 19 desde el selector de memoria intermedia de binario 18 a una memoria intermedia de binario 20 particular y el número de binarios en la memoria intermedia de binario es cero, el decodificador de binario 22 conectado lee una o más palabras de código 37 de la memoria intermedia de bits 38, a través de la solicitud de bits 36 a la memoria intermedia de bits 38. El decodificador de binario 22 convierte las palabras de código leídas 37 en secuencias de binarios 21 y almacena estas secuencias de binario en la memoria intermedia de binario conectada 20. Como respuesta final a la solicitud de un binario 19, el primer binario insertado se elimina de la memoria intermedia de binario 20 y se envía al selector de memoria intermedia de binario 18. Como respuesta a solicitudes de binario adicionales, los binarios restantes en la memoria intermedia de binario se eliminan hasta que se vacía la memoria intermedia de binario. Una solicitud de binario adicional activa el decodificador de binario para leer una o más nuevas palabras de código desde la memoria intermedia de bits, etc. La memoria intermedia de bits 38 representa una memoria intermedia primero en entrar primero en salir de un tamaño predefinido y se llena continuamente con bits 39 del flujo de bits 40. Para asegurar que las palabras de código se escriben en el flujo de bits en la misma forma en la que se solicitan por el proceso de decodificación, la memoria intermedia de palabras de código en el lado del codificador puede funcionar en la forma descrita anteriormente. In one embodiment, reading the codewords from the bit buffer works as follows. If a new binary request 19 is sent from the binary buffer selector 18 to a particular binary buffer 20 and the number of binaries in the binary buffer is zero, the connected binary decoder 22 reads one or more code words 37 from bit buffer 38, via request bit 36 to bit buffer 38. Binary decoder 22 converts read code words 37 into binary sequences 21 and stores these sequences of binary in memory connected binary buffer 20. As a final response to the request for a binary 19, the first inserted binary is removed from the binary buffer 20 and sent to the binary buffer selector 18. In response to additional binary requests, the remaining binaries in the binary buffer are removed until the binary buffer is flushed. An additional binary request activates the binary decoder to read one or more new codewords from the bit buffer, etc. Bit buffer 38 represents a first-in-first-out buffer of a predefined size and is continually filled with bits 39 from bitstream 40. To ensure that codewords are written to the bitstream in it As requested by the decoding process, the codeword buffer on the encoder side can function as described above.

De ese modo, cada uno de la pluralidad de decodificadores entrópicos puede ser un decodificador de longitud variable configurado para mapear palabras de código de longitudes fijas en secuencias de símbolos de longitudes variables, y puede proporcionarse una entrada de palabra de código tal como la salida de la memoria intermedia de palabras de código 43 para la recepción de un único flujo de palabras de código intercaladas. La pluralidad de decodificadores entrópicos 22 puede configurarse para recuperar las palabras de código de la entrada de palabras de código en un orden secuencial que depende de un orden en el que se recuperan los símbolos de la secuencia de símbolos a reconstruirse por el selector 18 de la pluralidad de decodificadores entrópicos dando como resultado una nueva secuencia de símbolos a mapearse a partir de una palabra de código nueva en los decodificadores entrópicos respectivos.Thus, each of the plurality of entropic decoders may be a variable-length decoder configured to map fixed-length codewords into variable-length symbol sequences, and a codeword input such as the output of codeword buffer 43 for receiving a single stream of interleaved codewords. The plurality of entropic decoders 22 can be configured to retrieve the codewords from the codeword input in a sequential order depending on an order in which the symbols are retrieved from the symbol sequence to be reconstructed by selector 18 of the plurality of entropic decoders resulting in a new sequence of symbols to be mapped from a new code word to the respective entropic decoders.

Intercalado de palabras de código de longitud variable con restricción de bajo retardoVariable length code word interleaving with low delay restriction

El intercalado de palabras de código descrito para la codificación PIPE no requiere que se envíe ninguna información de partición como información secundaria. Y dado que las palabras de código se intercalan en el flujo de bits, el retardo es en general pequeño. Sin embargo, no se garantiza que se obedezca a 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). Adicionalmente, el tamaño de la memoria intermedia requerido para memoria intermedia de palabras de código puede hacerse teóricamente muy grande. Cuando se considera el ejemplo de la Fig. 8(b), sería posible que no se envíen binarios adicionales a la memoria intermedia de binario 3 y por ello el codificador de binario 3 no enviará ninguna nueva palabra de código a la memoria intermedia de palabras de código hasta que se aplique el proceso de purgado al final del paquete de datos. Entonces todas las palabras de código para los codificadores de binario 1 y 2 tendrían que esperar hasta el final del paquete de datos, antes de que puedan escribirse en el flujo de bits. Este inconveniente puede sortearse añadiendo un mecanismo adicional al proceso de codificación PIPE (y también al proceso de decodificación PIPE tal como se describe más adelante). El concepto básico de ese mecanismo adicional es que si una medida en relación al retardo o a una delimitación superior del retardo (véase a continuación) supera un umbral especificado, la primera entrada en la memoria intermedia reservada se llena mediante el purgado de la memoria intermedia de binario correspondiente (usando un mecanismo similar al del final del paquete de datos). Mediante dicho mecanismo, el número de entradas de memoria intermedia en espera se reduce hasta que la medida del retardo asociada sea menor que el umbral especificado. En el lado del decodificador, los binarios que se han insertado en el lado del codificador para obedecer a la recepción de retardo deben descartarse. Para este descarte de los binarios puede usarse básicamente el mismo mecanismo que en el lado del codificador. A continuación se describen dos realizaciones para dicho control del retardo.The codeword interleaving described for PIPE encoding does not require that any partition information be sent as secondary information. And since the codewords are embedded in the bitstream, the delay is generally small. However, there is no guarantee that a particular delay constraint will be obeyed (for example specified by a maximum number of bits that are stored in the codeword buffer). Additionally, the buffer size required for codeword buffering can theoretically be made very large. When considering the example in Fig. 8 (b), it would be possible that no additional binaries are sent to the binary buffer 3 and therefore the binary encoder 3 will not send any new codeword to the word buffer code until the purge process is applied to the end of the data packet. So all the codewords for binary encoders 1 and 2 would have to wait until the end of the data packet, before they can be written to the bitstream. This drawback can be overcome by adding an additional mechanism to the PIPE encoding process (and also to the PIPE decoding process as described below). The basic concept of this additional mechanism is that if a measure in relation to the delay or an upper limit of the delay (see below) exceeds a specified threshold, the first entry in the reserved buffer is filled by purging the buffer from corresponding binary (using a mechanism similar to the one at the end of the data packet). Using such a mechanism, the number of standby buffer entries is reduced until the associated delay measure is less than the specified threshold. On the decoder side, binaries that have been inserted on the encoder side to obey the delay reception should be discarded. Basically the same mechanism can be used for this discard of the binaries as on the encoder side. Two embodiments for such delay control are described below.

En una realización, la medida para el retardo (o una delimitación superior del retardo) es el número de entradas de memoria intermedia activas en la memoria intermedia de palabras de código, 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 siempre una entrada de memoria intermedia reservada o una entrada de memoria intermedia libre, dado que si la primera entrada de memoria intermedia contiene una palabra de código, esta palabra de código se escribe en el flujo de bits. Si, por ejemplo, el retardo máximo de memoria intermedia permitido (tal como se determina por la aplicación) es D bits y el tamaño de palabra de código máximo para todos los codificadores de binario es L, una delimitación inferior para el número máximo de palabras de código que puede contenerse en la memoria intermedia de palabras de código sin violar la restricción de retardo puede calcularse por N = D/L. La media del retardo D en bits no es requerida por el sistema, pero el número máximo de palabras de código N debe conocerse tanto para el codificador como para el decodificador. En una realización, el número máximo de entradas de memoria intermedia de palabras de código N se fija por la aplicación. En otra realización, el número máximo de entradas de memoria intermedia de palabras de código N se señaliza en el interior del flujo de bits, por ejemplo, en la cabecera del paquete de datos (o cabecera del fragmento) o en un conjunto de parámetros, que se incluye en un flujo de bits. Si un codificador de binario 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, se ejecuta el proceso siguiente antes de que se reserve una nueva entrada de memoria intermedia de palabras de código (es decir, se ejecutan múltiples veces si se reservan múltiples entradas de memoria intermedia de palabras de código mediante una solicitud): si el número de entradas de memoria intermedia actualmente activas 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 (que se reserva) se purga mediante el proceso descrito a continuación hasta que el número de entradas de memoria intermedia actualmente activas más 1 sea menor que o igual al número máximo de entradas de memoria intermedia de palabras de código N. El purgado de una entrada de memoria intermedia reservada es similar al purgado al final de un paquete de datos. El codificador de binario 10 que ha reservado la primera entrada de memoria intermedia correspondiente se purga mediante la adición de binarios con valores particulares o arbitrarios a la memoria intermedia de binario 8 conectada hasta que la secuencia de binarios resultante represente una secuencia de binario que está asociada con una palabra de código, la palabra de código se escribe a continuación a la entrada de memoria intermedia reservada y se añade finalmente al flujo de bits (mientras se vacía la memoria intermedia de binarios y se elimina la entrada de memoria intermedia previamente reservada). Como se ha mencionado anteriormente, una forma preferida para añadir binarios a la memoria intermedia de binario es añadir aquellos binarios que producen la palabra de código más corta posible. En el lado del decodificador, se ejecuta un proceso similar para descartar los binarios que se han añadido para obedecer a la restricción de retardo. Por lo tanto, el decodificador mantiene un contador C que cuenta las palabras de código que se han leído desde la memoria intermedia de bits (este contador puede mantenerse en la memoria intermedia de bits). El contador C se inicializa (por ejemplo, a cero) al inicio de la decodificación de un paquete de datos se incrementa en uno después de que se lea una palabra de código. Además, cada decodificador de binario 22 contiene un contador Cx, que almacena el valor del contador de palabras de código C antes de que se lea la última palabra de código por el decodificador de binario 22 correspondiente, es decir, cuando un decodificador de binario 22 particular lee una nueva palabra de código, su contador Cx se fija igual a C como una primera etapa y a continuación la palabra de código se lee desde la memoria intermedia de bits. Cuando se envía una solicitud de un binario 19 a una memoria intermedia de binario 20 particular y la diferencia (C - Cx) entre el contador de palabras de código global C y el contador Cx del decodificador de binario 22 conectado es mayor que el número máximo de entradas de memoria intermedia de palabras de código N, todos los binarios que se almacenan actualmente en la memoria intermedia de binario 20 particular se descartan e ignoran. Junto a esa etapa adicional, la decodificación se hace funcionar como se ha descrito anteriormente. Si la memoria intermedia de binario 20 a la que se envía una solicitud de un binario 19 está vacía (bien porque todos los binarios ya se han eliminado o porque un mecanismo de bajo retardo descartó todos los binarios en la primera etapa después de que se haya recibido la solicitud del binario), el decodificador de binario 22 conectado lee una o más palabras de código nuevas desde la memoria intermedia de bits 38, etc.In one embodiment, the measure for delay (or an upper bound on the delay) is the number of active buffer entries in the codeword buffer, where the number of active buffer entries is the number of input entries. reserved buffer plus the number of buffer entries that contain codewords. Note that the first buffer entry is always a reserved buffer entry or a free buffer entry, since if the first buffer entry contains a codeword, this codeword is written to the bitstream . If, for example, the maximum allowed buffer delay (as determined by the application) is D bits and the maximum codeword size for all binary encoders is L, a lower bound for the maximum number of words Code that can be contained in the codeword buffer without violating the delay constraint can be calculated by N = D / L. The mean bit delay D is not required by the system, but the maximum number of codewords N must be known for both the encoder and the decoder. In one embodiment, the maximum number of codeword buffer entries N is set by the application. In another embodiment, the maximum number of N- word buffer entries is signaled inside the bitstream, for example, in the data packet header (or fragment header) or in a set of parameters, which is included in a bit stream. If a binary encoder 10 sends a request to reserve one or more new buffer entries to codeword buffer 29, the following process is executed before a new buffer word entry is reserved. code (i.e. run multiple times if multiple codeword buffer entries are reserved by request): if the number of currently active buffer entries plus 1 (taking into account the buffer entry to be reserved below) is greater than the maximum number of buffer entries in Codewords N, the first buffer entry (which is reserved) is purged by the process described below until the number of currently active buffer entries plus 1 is less than or equal to the maximum number of buffer entries N codeword. Purging a reserved buffer entry is similar to purging at the end of a data packet. The binary encoder 10 that has reserved the first corresponding buffer entry is purged by adding binaries with particular or arbitrary values to the connected binary buffer 8 until the resulting binary sequence represents a binary sequence that is associated With a codeword, the codeword is then written to the reserved buffer entry and is finally added to the bit stream (while clearing the binary buffer and removing the previously reserved buffer entry). As mentioned above, a preferred way to add binaries to the binary buffer is to add those binaries that produce the shortest possible codeword. On the decoder side, a similar process is run to discard binaries that have been added to obey the delay constraint. Therefore, the decoder maintains a counter C that counts the codewords that have been read from the bit buffer (this counter can be kept in the bit buffer). Counter C is initialized (eg zero) at the start of decoding a data packet incremented by one after a codeword is read. Furthermore, each binary decoder 22 contains a Cx counter, which stores the value of the C codeword counter before the last codeword is read by the corresponding binary decoder 22, i.e. when a binary decoder 22 home reads a new codeword, its counter Cx is set equal to C as a first stage, and then the codeword is read from the bit buffer. When a request for a binary 19 is sent to a particular binary buffer 20 and the difference (C-Cx) between the global code word counter C and the counter Cx of the connected binary decoder 22 is greater than the maximum number of codeword buffer entries N, all binaries currently stored in the particular binary buffer 20 are discarded and ignored. Along with that additional stage, decoding is operated as described above. If the binary buffer 20 to which a request for a binary 19 is sent is empty (either because all binaries have already been removed or because a low delay mechanism discarded all binaries in the first stage after it has been received the binary request), the connected binary decoder 22 reads one or more new codewords from the bit buffer 38, etc.

En otra realización, la medida del retardo (o una delimitación superior del retardo) es la suma de las longitudes máximas de palabras de código para las entradas de memoria intermedia activas en la memoria intermedia de palabras de código, donde la longitud máxima de palabras de código para una entrada de memoria intermedia particular depende del binario decodificado que se asocia con esa entrada de memoria intermedia. Como ilustración, las longitudes máximas de palabra de código para las entradas de memoria intermedia se indican en los ejemplos en 6. 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, dado que si la primera entrada de memoria intermedia contiene una palabra de código, esta palabra de código se escribe al flujo de bits. Sea el retardo máximo de memoria intermedia permitido (tal como se determina por la aplicación) de D bits. Este retardo máximo de memoria intermedia D debe conocerse tanto para el codificador como para el decodificador. En una realización preferente, el retardo máximo de memoria intermedia D se fija por la aplicación. En otra realización preferente, el retardo máximo de memoria intermedia D se señaliza en el interior del flujo de bits, por ejemplo, en la cabecera del paquete de datos (o cabecera del fragmento) o en un conjunto de parámetros, que se incluye en el flujo de bits. Puede señalizarse en unidades de bits, o bytes, o un múltiplo de bits, o un múltiplo de bytes. Si un codificador de binario 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, se ejecuta el proceso siguiente antes de que se reserve una nueva entrada de memoria intermedia de palabras de código (es decir, se ejecuta múltiples veces si se reservan múltiples entradas de memoria intermedia de palabras de código mediante una solicitud).In another embodiment, the measure of delay (or an upper bound on delay) is the sum of the maximum codeword lengths for the active buffer entries in the codeword buffer, where the maximum codeword length of Code for a particular buffer entry depends on the decoded binary that is associated with that buffer entry. As an illustration, the maximum codeword lengths for the buffer entries are indicated in the examples in 6. Note again that the first buffer entry is always a reserved buffer entry or a free buffer entry, since if the first buffer entry contains a codeword, this codeword is written to the bitstream. Let the maximum buffer delay allowed (as determined by the application) be D bits. This maximum buffer delay D must be known for both the encoder and the decoder. In a preferred embodiment, the maximum buffer delay D is set by the application. In another preferred embodiment, the maximum buffer delay D is signaled within the bitstream, for example, in the data packet header (or fragment header) or in a parameter set, which is included in the bit stream. It can be signaled in units of bits, or bytes, or a multiple of bits, or a multiple of bytes. If a binary encoder 10 sends a request to reserve one or more new buffer entries to codeword buffer 29, the following process is executed before a new buffer word entry is reserved. code (that is, it runs multiple times if multiple codeword buffers are reserved by request).

Si la suma de las longitudes máximas de palabras de código para todas las entradas de memoria intermedia actualmente activas más la longitud máxima de palabra de código para la entrada de memoria intermedia que se reservará es mayor que el retardo máximo de memoria intermedia D, la primera entrada de memoria intermedia (que se reserva) se purga por el proceso descrito anteriormente hasta que la suma de las longitudes máximas de palabras de código para todas las entradas de memoria intermedia activas más la longitud máxima de palabra de código para la entrada de memoria intermedia que se reservará sea menor que o igual al retardo máximo de memoria intermedia D. Como un ejemplo, considérese el ejemplo en la Fig. 8(b). La suma de las longitudes máximas de palabras de código para todas las entradas de memoria intermedia actualmente activas es 29. Supóngase que el retardo máximo de memoria intermedia D se fija igual a 32. Si la siguiente entrada de memoria intermedia se reserva por el codificador de binario 2 para el que la longitud máxima de palabra de código es igual a 3, la primera entrada de la memoria intermedia no se purga, dado que 29 3 no es mayor que 32. Pero si la siguiente entrada de memoria intermedia se reserva por el codificador de binario 1 para el que la longitud máxima de palabra de código es igual a 7, la primera entrada de memoria intermedia se purga, dado que 29 7 es mayor que 32. El purgado de la entrada de memoria intermedia reservada se realiza tal como se ha descrito anteriormente (mediante la adición de binario con valores particulares o arbitrarios desde la memoria intermedia de binario correspondiente). If the sum of the maximum codeword lengths for all currently active buffer entries plus the maximum codeword length for the reserved buffer entry is greater than the maximum buffer delay D, the first buffer entry (which is reserved) is purged by the process described above until the sum of the maximum codeword lengths for all active buffer entries plus the maximum codeword length for the buffer entry to be reserved is less than or equal to the maximum buffer delay D. As an example, consider the example in Fig. 8 (b). The sum of the maximum codeword lengths for all currently active buffer entries is 29. Suppose the maximum buffer delay D is set equal to 32. If the next buffer entry is reserved by the encoder binary 2 for which the maximum codeword length equals 3, the first buffer entry is not purged, since 29 3 is not greater than 32. But if the next buffer entry is reserved by the binary encoder 1 for which the maximum codeword length equals 7, the first buffer entry is purged, since 29 7 is greater than 32. Purging of the reserved buffer entry is performed as it has been described previously (by adding binary with particular or arbitrary values from the corresponding binary buffer).

En el lado del decodificador, se ejecuta un proceso similar para descartar los binarios que ya se han añadido para obedecer a la restricción de retardo. Por lo tanto, el decodificador mantiene un contador C que cuenta la longitud máxima de palabras de código para las palabras de código que se han leído desde la memoria intermedia de bits (este contador puede mantenerse en la memoria intermedia de bits). Obsérvese que las longitudes máximas de palabra de código que se asocian con decodificadores de binario diferentes pueden ser diferentes. El contador C se inicializa (por ejemplo con cero) al inicio de la decodificación de un paquete de datos y 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 por su longitud máxima, es decir, si una palabra de código se lee por un decodificador de binario particular y la longitud máxima de palabra de código que se asocia con la tabla de palabras de código usada por el decodificador de binario particular es Lx (un decodificador de binario diferente puede asociarse con una longitud máxima de palabra de código diferente), el contador C se incrementa por Lx. Además del contador global C, cada decodificador de binario 22 contiene un contador Cx, que almacena al valor del contador de palabras de código C antes de que se lea la última palabra de código por el decodificador de binario 22 correspondiente, es decir, cuando un decodificador de binario 22 particular lee una nueva palabra de código, su contador Cx se fija igual a C como una primera etapa y a continuación la palabra de código se lee desde la memoria intermedia de bits. Cuando se envía una solicitud para un binario 19 a una memoria intermedia de binario 20 particular y la diferencia (C - Cx) entre el contador global C y el contador Cx del decodificador de binario 22 conectados es mayor que el retardo de memoria intermedia máximo D, todos los binarios que están almacenados actualmente en la memoria intermedia de binario 20 particular se descartan e ignoran. Junto a esa etapa adicional, la decodificación funciona como se ha descrito anteriormente. Si la memoria intermedia de binario 20 a la que se envía la solicitud de un binario 19 está vacía (porque todos los binarios ya se han eliminado o porque el mecanismo de bajo retardo descartó todos los binarios en la primera etapa después de que se haya recibido la solicitud de binario), el decodificador de binario 22 conectado lee una o más nuevas palabras de código desde la memoria intermedia de bits 38, etc.On the decoder side, a similar process is run to discard binaries that have already been added to obey the delay constraint. Therefore, the decoder maintains a counter C that counts the maximum codeword length for codewords that have been read from the bit buffer (this counter can be kept in the bit buffer). Note that the maximum codeword lengths that are associated with different binary decoders may be different. Counter C is initialized (for example zero) at the start of decoding a data packet and incremented after a codeword is read. This counter is not incremented by the actual length of the codewords read, but by its maximum length, i.e. if a codeword is read by a particular binary decoder and the maximum codeword length that is associated with the codeword table used by the particular binary decoder is Lx (a different binary decoder can be associated with a different maximum codeword length), the counter C is incremented by Lx. In addition to the global counter C, each binary decoder 22 contains a counter Cx, which stores the value of the codeword counter C before the last codeword is read by the corresponding binary decoder 22, i.e. when a Particular binary decoder 22 reads a new codeword, its counter Cx is set equal to C as a first stage, and then the codeword is read from the bit buffer. When a request for a binary 19 is sent to a particular binary buffer 20 and the difference (C-Cx) between the global counter C and the counter Cx of the connected binary decoder 22 is greater than the maximum buffer delay D , all binaries that are currently stored in the particular binary 20 buffer are discarded and ignored. Along with that additional stage, decoding works as described above. If the binary buffer 20 to which the request for a binary 19 is sent is empty (because all binaries have already been removed or because the low delay mechanism discarded all binaries in the first stage after it has been received the binary request), the connected binary decoder 22 reads one or more new codewords from bit buffer 38, etc.

Además, la pluralidad de decodificadores entrópicos 22 y el selector 18 pueden configurarse para descartar intermitentemente sufijos de secuencias de símbolos de modo que no participen en la formación de la secuencia de símbolos a reconstruirse 29. El descarte de modo intermitente puede realizarse en eventos donde un número de palabras de código que se hayan recuperado desde la entrada de palabras de código por la pluralidad de decodificadores entrópicos entre dos recuperaciones de palabras de código consecutivas de un decodificador entrópico respectivo desde la entrada de palabras de código, cumple con un criterio predeterminado. La pluralidad de codificadores entrópicos y la memoria intermedia de palabras de código pueden, a su vez, configurarse para extender de modo intermitente símbolos actualmente enviados pero aún no mapeados a secuencias de símbolos válidas no teniendo en cuenta los símbolos actualmente enviados pero aún no mapeados como prefijo, mapear las secuencias de símbolos así extendidas en palabras de código, introducir las palabras de código así obtenidas en las entradas de palabras de código reservadas y purgar las entradas de palabras de código. La extensión, introducción y purgado en forma intermitente puede tener lugar con eventos donde un número de entradas de palabras de código reservadas más un número de entradas de palabras de código que tengan palabras de código introducidas en las mismas cumpla con un criterio predeterminado. El criterio predeterminado puede tener en cuenta las longitudes máximas de palabras de código de la pluralidad de pares codificador/decodificador.Furthermore, the plurality of entropic decoders 22 and selector 18 can be configured to intermittently discard symbol sequence suffixes so that they do not participate in the formation of the symbol sequence to be reconstructed 29. Intermittent discard can be performed in events where a The number of codewords that have been retrieved from the codeword entry by the plurality of entropic decoders between two consecutive codeword recoveries of a respective entropic decoder from the codeword entry meets a predetermined criterion. The plurality of entropy encoders and the codeword buffer may, in turn, be configured to intermittently extend currently submitted but not yet mapped symbols to valid symbol sequences without regard to currently submitted but not yet mapped symbols as prefix, map the symbol sequences thus extended into codewords, enter the codewords thus obtained in the reserved codeword entries and purge the codeword entries. Intermittent extension, input and purging can take place with events where a number of reserved codeword entries plus a number of codeword entries having codewords entered therein meets a predetermined criterion. The predetermined criterion may take into account the maximum codeword lengths of the plurality of encoder / decoder pairs.

Para algunas arquitecturas, la realización preferente anteriormente descrita para el intercalado de palabras de código podría dar como resultado un inconveniente en términos de complejidad de decodificación. Como se ilustra en la Fig. 9, todos los decodificadores de binario 22 leen palabras de código (en el caso general, palabras de código de longitud variable) desde una única memoria intermedia de bits 38. La lectura de las palabras de código no puede realizarse en paralelo, dado que las palabras de código deben leerse en el orden correcto. Esto significa que, un decodificador de binario particular debe esperar hasta que otros decodificadores de binario acaben 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 al resto de los procesos de decodificación (parcialmente en paralelo), este acceso de las palabras de código de longitud variable puede ser un cuello de botella para todo el proceso de decodificación. Hay algunas variaciones de las realizaciones escritas que pueden emplearse para la reducción de la complejidad del acceso desde la única memoria intermedia de bits, unas pocas de las cuales se describirán a continuación. En una realización preferente, existe un único conjunto de palabras de código (que representa por ejemplo un código de prefijo no redundante) y el conjunto de palabras de código que se usa para cada decodificador de binario 22 es un subconjunto de un único conjunto de palabras de código. Obsérvese que diferentes decodificadores de binario 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 decodificadores de binario 22 son el mismo, su asociación con las secuencias de binario es diferente para diferentes decodificadores de binario 22. En una realización particular, el mismo conjunto de palabras de código se usa para todos los decodificadores de binario 22. Si se tiene un único conjunto de palabras de código que incluye los conjuntos de palabras de código para todos los decodificadores de binario como subconjuntos, el análisis de las palabras de código puede realizarse fuera de los decodificadores de binario, lo que puede reducir la complejidad del acceso a la palabra de código. El proceso de codificación PIPE no se cambia en relación con el proceso anteriormente descrito. El proceso de decodificación PIPE modificado se ilustra en la Fig. 10. Un único lector de palabras de código se alimenta con los bits 46 desde el flujo de bits 40 y analiza las palabras de código - en general de longitud variable -. Las palabras de código 44 leídas se insertan dentro de una memoria intermedia de palabras de código 43, que representa una memoria intermedia primero en entrar primero en salir. Un decodificador de binario 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 eliminan de la memoria intermedia de palabras de código (en orden secuencial) y se envían al decodificador de binario 22 correspondiente. Obsérvese que con esta realización, el análisis de palabras de código potencialmente complejo puede realizarse en un proceso en segundo plano y no necesita esperar a los decodificadores de binario. Los decodificadores de binario acceden a palabras de código ya analizadas, el análisis de palabras de código potencialmente complejo no es parte de una solicitud a la memoria intermedia global. En su lugar las palabras de código ya analizadas se envían a los decodificadores de binario, que pueden implementarse también en una forma en que solo se envían los índices de las palabras de código a los decodificadores de binario.For some architectures, the above described preferred embodiment for interleaving codewords could result in a drawback in terms of decoding complexity. As illustrated in Fig. 9, all binary decoders 22 read codewords (in the general case, variable length codewords) from a single bit buffer 38. Reading the codewords cannot be carried out in parallel, since the code words must be read in the correct order. This means that a particular binary decoder must wait until other binary decoders finish reading the codewords. And when the complexity of reading the variable length codewords is significant relative to the rest of the decoding processes (partially parallel), this variable length codeword access can be a bottleneck for everything the decoding process. There are some variations of the written embodiments that can be employed to reduce the complexity of access from the single bit buffer, a few of which will be described below. In a preferred embodiment, there is a single set of code words (representing for example a non-redundant prefix code) and the set of code words that is used for each binary decoder 22 is a subset of a single set of words code. Note that different binary decoders 22 can use different subsets of the single set of code words. Even if the codeword sets that are used by some of the binary decoders 22 are the same, their association with the binary sequences is different for different binary decoders 22. In a particular embodiment, the same set of code words code is used for all binary decoders 22. If you have a single codeword set that includes codeword sets for all binary decoders as subsets, parsing of codewords can be done outside of binary decoders, which can reduce the complexity of accessing the codeword. The PIPE encoding process is not changed relative to the previously described process. The modified PIPE decoding process is illustrated in Fig. 10. A single codeword reader is fed with bits 46 from bit stream 40 and parses codewords - generally of variable length -. The code words 44 read are inserted into a code word buffer 43, which represents a first-in-first-out buffer. A binary decoder 22 sends a request for one or more codewords 41 to the codeword buffer 43 and in response to this request, the one or more codewords are removed from the codeword buffer ( in sequential order) and sent to the corresponding binary decoder 22. Note that with this embodiment, the analysis of potentially complex code words can be performed in a background process and does not need to wait for binary decoders. Binary decoders access code words already parsed, parsing of potentially complex code words is not part of a request to the global buffer. Instead the already parsed codewords are sent to the binary decoders, which can also be implemented in a way that only the codeword indexes are sent to the binary decoders.

Intercalado de secuencias de bits de longitud fijaFixed length bitstream interleaving

Una forma adicional de reducir la complejidad del decodificador PIPE puede conseguirse cuando los decodificadores de binario 22 no leen palabras de código de longitud variable desde la memoria intermedia de bits global 38, sino en su lugar siempre leen secuencias de bits de longitud fija desde la memoria intermedia de bits global 38 y añaden estas secuencias de bits de longitud fija a una memoria intermedia de bits local, donde cada decodificador de binario 22 se conecta con una memoria intermedia de bits local separada. Las palabras de código de longitud variable se leen a continuación desde la memoria intermedia de bits local. Por ello, el análisis de las palabras de código de longitud variable puede realizarse en paralelo, solo el acceso de secuencias de bits de longitud fija ha de realizarse en una forma sincronizada, pero dicho acceso de secuencias de bits de longitud fija es normalmente muy rápido, de modo que la complejidad de decodificación global puede reducirse para algunas arquitecturas. El número fijo de binarios 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 a lo largo del tiempo, dependiendo de ciertos parámetros como eventos en el decodificador de binario, memoria intermedia de binario, o memoria intermedia de bits. Sin embargo, el número de bits que se leen en un acceso particular no depende de los bits reales que se hayan leído durante el acceso particular, que es la diferencia importante respecto a la lectura de palabras de código de longitud variable. La lectura de secuencias de bits de longitud fija se activa por ciertos eventos en las memorias intermedias de binario, decodificadores de binario, o memorias intermedias de bits locales. Como un ejemplo, es posible solicitar la lectura de una nueva secuencia de bits de longitud fija cuando el número de bits que están presentes en una memoria intermedia de bits conectada cae por debajo de un umbral predefinido, donde pueden usarse diferentes valores de umbral para diferentes memorias intermedias de bits. En el codificador, ha de asegurarse que las secuencias de longitud fija de binario se insertan en el mismo orden en del flujo de bits, en el que se leen desde el flujo de bits en el lado del decodificador. Es posible también combinar este intercalado de secuencias de longitud fija con un control de bajo retardo similar al explicado anteriormente. A continuación, se describe una realización preferente para intercalado de secuencias de bits de longitud fija.A further way to reduce the complexity of the PIPE decoder can be achieved when the binary decoders 22 do not read variable length codewords from the global bit buffer 38, but instead always read fixed length bit streams from the memory. global bit buffer 38 and add these fixed-length bit streams to a local bit buffer, where each binary decoder 22 connects to a separate local bit buffer. Variable length codewords are then read from the local bit buffer. Therefore, the analysis of the variable length codewords can be done in parallel, only the access of fixed length bitstreams has to be done in a synchronized way, but such access of fixed length bitstreams is usually very fast , so that the overall decoding complexity can be reduced for some architectures. The fixed number of binaries that are sent to a particular local bit buffer may be different for different local bit buffers and may also vary over time, depending on certain parameters such as events in the binary decoder, buffer binary, or bit buffer. However, the number of bits read on a particular access does not depend on the actual bits that were read during the particular access, which is the important difference from reading variable length codewords. The reading of fixed length bitstreams is triggered by certain events in the binary buffers, binary decoders, or local bit buffers. As an example, it is possible to request the reading of a new fixed-length bit stream when the number of bits that are present in a connected bit buffer falls below a predefined threshold, where different threshold values can be used for different bit buffers. In the encoder, it must be ensured that the binary fixed-length sequences are inserted in the same order in the bitstream, in which they are read from the bitstream on the decoder side. It is also possible to combine this interleaving of fixed length sequences with a low delay control similar to that explained above. Next, a preferred embodiment for interleaving of fixed-length bit sequences is described.

La Fig. 11 muestra una realización de una estructura del codificador PIPE para la realización que intercala secuencias de bits de longitud fija para dos o más codificadores de binario. A diferencia de la realización representada en la Fig. 7, los codificadores de binario 10 no se conectan con una única memoria intermedia de palabras de código. En su lugar, cada codificador de binario 10 se conecta con una memoria intermedia de bits separada 48, que almacena bits para el flujo de bits parcial correspondiente. Todas las memorias intermedias de bits 48 se conectan a una memoria intermedia de bits global 51. La memoria intermedia de bits global 51 se conecta a un escritor de bits 53, que elimina los bits 52 en el orden de codificación/decodificación desde la memoria intermedia de bits global y escribe los bits eliminados 54 en el flujo de bits 55. En un cierto evento en una memoria intermedia de bits 48 particular o el codificador de binario 10 conectado o la memoria intermedia de binario 8, la memoria intermedia de bits 48 envía una solicitud 49 a la memoria intermedia de bits global 51 mediante la que se reservan un cierto número de bits en la memoria intermedia de bits global 51. Las solicitudes para la reserva de secuencias de bits 49 de longitud fija se procesan en orden secuencial. La memoria intermedia de bits global 51 representa una memoria intermedia primero en entrar primero en salir en una cierta forma; los bits que se reservan antes se escriben antes en el flujo de bits. Debería observarse que diferentes memorias intermedias de bits 48 pueden reservar una cantidad diferente de bits, lo que también puede variar a lo largo del tiempo basándose en símbolos ya codificados; pero el número de bits que se reservan para una solicitud particular es conocido en el momento en el que se envía la solicitud a la memoria intermedia de bits global.Fig. 11 shows an embodiment of a PIPE encoder structure for the embodiment that interleaves fixed-length bit sequences for two or more binary encoders. Unlike the embodiment depicted in Fig. 7, binary encoders 10 do not connect to a single codeword buffer. Instead, each binary encoder 10 is connected to a separate bit buffer 48, which stores bits for the corresponding partial bitstream. All bit buffers 48 are connected to a global bit buffer 51. Global bit buffer 51 is connected to a bit writer 53, which deletes bits 52 in the encoding / decoding order from the buffer global bitstream and writes the deleted bits 54 into bitstream 55. In a certain event in a particular bit buffer 48 or the connected binary encoder 10 or binary buffer 8, the bit buffer 48 sends a request 49 to the global bit buffer 51 by which a certain number of bits are reserved in the global bit buffer 51. The requests for the reservation of fixed length bitstream 49 are processed in sequential order. The global bit buffer 51 represents a first-in-first-out buffer in a certain way; bits that are reserved before are written before in the bitstream. It should be noted that different bit buffers 48 may reserve a different number of bits, which may also vary over time based on already encoded symbols; but the number of bits that are reserved for a particular request is known at the time the request is sent to the global bit buffer.

En una particular, las memorias intermedias de bits 48 y la memoria intermedia de bits global 51 se hacen funcionar como se describe a continuación. La cantidad de bits que se reserva por una memoria intermedia de bits 48 particular se indica por Nx. Este número de bits Nx puede ser diferente para diferentes memorias intermedias de bits 48 y puede también variar a lo largo del tiempo. En una realización, el número de bits Nx que se reserva para una memoria intermedia de bits particular 48 es fijo a lo largo del tiempo. Las reservas para un número fijo Nx de bits 49 se activan basándose en el número de bits Mx en la memoria intermedia de bits 48, el número de bits Nx para las solicitudes de reserva, y la longitud máxima de palabras de código Lx asociada. Obsérvese que cada codificador de binario 10 puede asociarse con una longitud máxima de palabra de código Lx diferente. Si un binario 7 se envía a una memoria intermedia de binario 8 particular, y la memoria intermedia de binario 8 particular está vacía, y no se reserva más de una secuencia de Nx bits en la memoria intermedia de bits global para la memoria intermedia de bits 48 que se conecta con la memoria intermedia de binario particular (a través de un codificador de binario), y la diferencia Nx - Mx entre el número Nx de bits que se reservan mediante una solicitud de reserva de la memoria intermedia de bits 48 que está conectada (a través de un codificador de binario) con la memoria intermedia de binario 8 particular y el número de bits Mx que está actualmente presente en esta memoria intermedia de bits 48 es menor que la longitud máxima de palabra de código Lx que está asociada con el codificador de binario 10 correspondiente, la memoria intermedia de bits 49 conectada envía una solicitud 49 para la reserva de Nx bits a la memoria intermedia de bits global 51. La memoria intermedia de bits global 51 reserva Nx bits para la memoria intermedia de bits 48 particular e incrementa su puntero para la siguiente reserva. Después de que se hayan reservado los Nx bits en la memoria intermedia de bits global, el binario 7 se almacena en la memoria intermedia de binario 8. Si este único binario representa ya una secuencia de binarios que está asociada con una palabra de código, el codificador de binario 10 elimina este binario de la memoria intermedia de binario 8 y escribe la palabra de código 47 correspondiente en la memoria intermedia de bits 48 conectada. En caso contrario (este único binario ya representa en una secuencia de binarios que está asociada con una palabra de código), se aceptan binarios 7 adicionales por la memoria intermedia de binario 8 particular hasta que la memoria intermedia de binario 8 contenga una secuencia de binario que está asociada con una palabra de código. En este caso, el codificador de binario 10 conectado elimina la secuencia de binarios 9 de la memoria intermedia de binario 8 y escribe la palabra de código 47 correspondiente en la memoria intermedia de bits 48 conectada. Si el número resultante de bits Mx en la memoria intermedia de bits 48 es mayor que o igual a el número de bits Nx reservado, los Nx bits que se escribieron primero en la memoria intermedia de bits 48 se insertan en el espacio previamente reservado en la memoria intermedia de bits global 51. Para el siguiente binario 7 que se envía a la memoria intermedia de binario 8 particular, se ejecuta el mismo proceso especificado anteriormente; es decir, se comprueba primero si debe reservarse un nuevo número de Nx bits en la memoria intermedia de bits global (si Nx - Mx es menor que Lx) y a continuación se inserta el binario en la memoria intermedia de binario 8, etc. El escritor de bits escribe las secuencias de bits de longitud fija de la memoria intermedia de bits global en el orden en que se han reservado. Si la primera entrada de longitud fija en la memoria intermedia de bits global 51 contiene una secuencia de bits de longitud fija que ya se ha insertado realmente en la memoria intermedia de bits global (es decir, no está solo reservada), el escritor de bits 53 elimina los bits de esta secuencia de bits 52 de la memoria intermedia de bits global 51 y escribe los bits 54 en el flujo de bits. Este proceso se repite hasta que la primera entrada de longitud fija en la memoria intermedia de bits global representa una entrada reservada o una libre. Si la primera entrada de longitud fija en la memoria intermedia de bits global representa una entrada reservada, el escritor de bits 53 espera hasta que esta entrada está llena con los bits reales antes de escribir bits adicionales 54 en el flujo de bits 55.In one particular, the bit buffer 48 and the global bit buffer 51 are operated as described below. The number of bits that is reserved by a particular bit buffer 48 is indicated by Nx. This number of bits Nx may be different for different bit buffers 48 and may also vary over time. In one embodiment, the number of bits Nx that is reserved for a particular bit buffer 48 is fixed over time. Reservations for a fixed number Nx of bits 49 are triggered based on the number of bits Mx in bit buffer 48, the number of bits Nx for reservation requests, and the associated maximum code word length Lx . Note that each binary encoder 10 can be associated with a different maximum codeword length Lx . If a binary 7 is sent to a particular binary 8 buffer, and the particular binary 8 buffer is empty, and no more than one Nx bit sequence is reserved in the global bit buffer for bit buffer 48 that connects to the memory particular binary buffer (through a binary encoder), and the difference Nx - Mx between the number Nx of bits that are reserved by a reservation request from the connected bit buffer 48 (through an encoder binary) with the particular binary buffer 8 and the number of bits Mx that is currently present in this bit buffer 48 is less than the maximum codeword length Lx that is associated with the corresponding binary encoder 10, the connected bit buffer 49 sends a request 49 for the Nx bit reservation to the global bit buffer 51. The global bit buffer 51 reserves Nx bits for the m bit buffer 48 particular and increments its pointer for the next reservation. After the Nx bits have been reserved in the global bit buffer, binary 7 is stored in binary buffer 8. If this single binary already represents a sequence of binaries that is associated with a codeword, the binary encoder 10 removes this binary from binary buffer 8 and writes the corresponding code word 47 to the connected bit buffer 48. Otherwise (this single binary already represents in a sequence of binaries that is associated with a codeword), additional binaries 7 are accepted by the particular binary 8 buffer until the binary 8 buffer contains a binary sequence which is associated with a code word. In this case, the connected binary encoder 10 removes the binary sequence 9 from the binary buffer 8 and writes the corresponding code word 47 to the connected bit buffer 48. If the resulting number of bits Mx in the bit buffer 48 is greater than or equal to the number of bits Nx reserved, the Nx bits that were written first in the bit buffer 48 are inserted into the space previously reserved in the global bit buffer 51. For the next binary 7 that is sent to the particular binary 8 buffer, the same process specified above is executed; that is, it checks first if a new number of Nx bits should be reserved in the global bit buffer (if Nx - Mx is less than Lx) and then the binary is inserted into binary buffer 8, etc. The bit writer writes the fixed-length bit streams of the global bit buffer in the order in which they were reserved. If the first fixed-length entry in the global bit buffer 51 contains a fixed-length bit stream that has actually been inserted into the global bit buffer (that is, it is not just reserved), the bit writer 53 deletes the bits in this bit stream 52 from the global bit buffer 51 and writes the bits 54 to the bit stream. This process is repeated until the first fixed-length entry in the global bit buffer represents either a reserved or a free entry. If the first fixed-length entry in the global bit buffer represents a reserved entry, bit writer 53 waits until this entry is filled with the actual bits before writing additional bits 54 in bit stream 55.

Al final de un paquete de datos, las memorias intermedias de binario se purgan tal como se ha descrito anteriormente. Además, las memorias intermedias de bits deben purgarse mediante la adición de bits con un valor particular o uno arbitrario hasta que todas las entradas de memoria intermedia reservadas en la memoria intermedia de bits global se llenan y escriben hacia el flujo de bits.At the end of a data packet, the binary buffers are purged as previously described. Also, bit buffers must be purged by adding bits with a particular or arbitrary value until all reserved buffer entries in the global bit buffer are filled and written to the bitstream.

Se ilustran en la Fig. 12 dos ejemplos de estados posibles de la memoria intermedia de bits global 51. En el ejemplo (a), se ilustra un caso en el que diferentes memorias intermedias de bits/codificadores de binario reservan un número diferente de bits. Las memorias intermedias de bit globales contienen 3 entradas con secuencias de bits de longitud fija realmente escritas y 4 entradas con secuencias de bits de longitud fija reservadas. La primera entrada de longitud fija ya contiene bits reales (que se deben haber insertado recientemente por la memoria intermedia de bit/codificador de binario 2); esta entrada (es decir los 8 bits correspondientes) pueden eliminarse y escribirse en el flujo de bits. La siguiente entrada reserva 10 bits para el codificador de binario 3, pero los bits reales no se han insertado aún. Esta entrada no puede escribirse en el flujo de bits; debe esperarse hasta que se inserten los bits reales; en el segundo ejemplo (b), todas las memorias intermedias de bits/codificadores de binario reservaron el mismo número de bits (8 bits). La memoria intermedia de bits global contiene 4 reservas para secuencias de bits 8 y 3 secuencias de bits 8 realmente escritas. La primera entrada contiene una reserva para 8 bits para el codificador de binario 3. Antes de que puedan escribirse nuevos bits al flujo de bits, el escritor de bits ha de esperar hasta que la memoria intermedia de bits/codificador de binario 3 escriba los valores reales de los 8 bits en la entrada reservada. Two examples of possible states of global bit buffer 51 are illustrated in Fig. 12. In example (a), a case is illustrated where different bit buffers / binary encoders reserve a different number of bits . Global bit buffers contain 3 inputs with actually written fixed-length bitstreams and 4 inputs with reserved fixed-length bitstreams. The first fixed-length entry already contains actual bits (which must have been recently inserted by bit buffer / binary encoder 2); This input (i.e. the corresponding 8 bits) can be removed and written to the bit stream. The following entry reserves 10 bits for binary encoder 3, but the actual bits have not been inserted yet. This input cannot be written to the bit stream; it must wait until the actual bits are inserted; in the second example (b), all bit buffers / binary encoders reserved the same number of bits (8 bits). The global bit buffer contains 4 reserves for 8 bit streams and 3 actually written 8 bit streams. The first entry contains an 8-bit reservation for binary encoder 3. Before new bits can be written to the bitstream, the bit writer has to wait until the bit buffer / binary encoder 3 writes the values of the 8 bits in the reserved input.

La Fig. 13 muestra una ilustración de una estructura del decodificador PIPE para la realización de la invención que intercala secuencias de bits de longitud fija. A diferencia de la realización representada en la Fig. 9, los decodificadores de binario 22 no están conectados con una única memoria intermedia de bits. En su lugar, cada decodificador de binario 22 se conecta con una memoria intermedia de bits 58 separada, que almacena los bits desde el flujo de bits parcial correspondiente. Todas las memorias intermedias de bits 58 se conectan a una memoria intermedia de bits global 61. Los bits 62 desde el flujo de bits 63 se insertan en la memoria intermedia de bits global 61. En ciertos eventos, en una memoria intermedia de bits 58 particular o codificador de binario 22 conectado o memoria intermedia de binario 20, la memoria intermedia de bits 58 envía una solicitud 59 a la memoria intermedia de bits global 61 mediante la que se elimina una secuencia de bits 60 de longitud fija de la memoria intermedia de bits global 61 y se inserta en la memoria intermedia de bits 58 particular. Las solicitudes para las secuencias de bits 59 de longitud fija se procesan en orden secuencial. La memoria intermedia de bits global 61 representa una memoria intermedia primero en entrar primero en salir; los bits que se insertan antes dentro de la memoria intermedia de bits global se eliminan antes. Debería observarse que diferentes memorias intermedias de bits 58 pueden solicitar una cantidad diferente de bits, lo que también puede variar a lo largo del tiempo basándose en símbolos ya decodificados; pero el número de bits que se solicita mediante una solicitud particular es conocido en el momento en el que la solicitud se envía a la memoria intermedia de bits global. Debería observarse que la memoria intermedia de bits global 61 no se requiere realmente, dado que las palabras de código podrían leerse también directamente desde el flujo de bits. La memoria intermedia de bits global 61 se incluye principalmente en la ilustración para separar claramente diferentes aspectos de la cadena de procesamiento.Fig. 13 shows an illustration of a PIPE decoder structure for the embodiment of the invention that interleaves fixed-length bit sequences. Unlike the embodiment shown in Fig. 9, the binary decoders 22 are not connected with a single bit buffer. Instead, each binary decoder 22 is connected to a separate bit buffer 58, which stores the bits from the corresponding partial bitstream. All bit buffers 58 are connected to a global bit buffer 61. Bits 62 from bit stream 63 are inserted into global bit buffer 61. In certain events, in a particular bit buffer 58 or connected binary encoder 22 or binary buffer 20, bit buffer 58 sends a request 59 to global bit buffer 61 by which a fixed length bit stream 60 is removed from the bit buffer global 61 and inserted into the particular bit buffer 58. Requests for fixed length bit streams 59 are processed in sequential order. The global bit buffer 61 represents a first-in-first-out buffer; bits that are inserted earlier into the global bit buffer are removed earlier. It should be noted that different bit buffers 58 may request a different number of bits, which may also vary over time based on already decoded symbols; but the number of bits that is requested by a particular request is known at the time the request is sent to the global bit buffer. It should be noted that the global bit buffer 61 is not actually required, since the codewords could also be read directly from the bit stream. Global bit buffer 61 is mainly included in the illustration to clearly separate different aspects of the processing chain.

En una realización, las memorias intermedias de bits 58 y la memoria intermedia de bits global 61 se hacen funcionar como se describe a continuación. La cantidad de bits que se solicitan y leen mediante una memoria intermedia de bits 58 particular se indica como Nx, es igual a la cantidad de bits que se escriben en la memoria intermedia de bits global por la memoria intermedia de bits correspondiente en el lado del codificador. Este número de bits Nx puede ser diferente para diferentes memorias intermedias 58 de bits y puede variar también a lo largo del tiempo. En una realización preferente de la invención, el número de bits Nx que se solicitan y leen por una memoria intermedia de bits 58 particular es fijo a lo largo del tiempo. La lectura de un número fijo Nx de bits 60 se activa basándose en el número de bits Mx en la memoria intermedia de bits 58 y la longitud máxima de la palabra de código Lx asociada. Obsérvese que cada decodificador de binario 22 puede asociarse con una longitud máxima de palabra de código Lx diferente. Si se envía una solicitud para un binario 19 a una memoria intermedia de binario 20 particular, y la memoria intermedia de binario 20 particular está vacía, y el número Mx de bits de la memoria intermedia de bits 58 que se conecta (a través de un decodificador de binario) con la memoria intermedia de binario 20 particular es menor que la longitud máxima de palabra de código Lx que se asocia con el decodificador de binario 22 correspondiente, la memoria intermedia de bits 58 conectada envía una solicitud 59 para unas nuevas secuencias de Nx bits a la memoria intermedia de bits global 61. Como respuesta a esta solicitud, se eliminan los primeros Nx bits de la memoria intermedia de bits global 61 y esta secuencia de Nx bits 60 se envía a la memoria intermedia de bits 58 desde la que se envió la solicitud. Finalmente, esta secuencia de Nx bits se añade a la memoria intermedia de bits 58 correspondiente. A continuación se lee la siguiente palabra de código 57 desde esta memoria intermedia de bits, y el decodificador de binario 22 conectado inserta la secuencia de binarios 21 asociada en la memoria intermedia de binario conectada 20. Como respuesta final a la solicitud original de un binario 19, el primer binario se elimina de la memoria intermedia de binario 20 y este binario 25 decodificado se envía al selector de memoria intermedia de binario 18. Cuando se envía la siguiente solicitud de binario 19 a la memoria intermedia de binario 20 particular y la memoria intermedia de binario no está vacía, se elimina el siguiente bit de la memoria intermedia de binario 20. Si la memoria intermedia de binario está vacía pero el número Mx de bits de la memoria intermedia de bits 58 conectada es mayor que o igual a la longitud máxima de palabra de código Lx asociada, la siguiente palabra de código se lee desde la memoria intermedia de bits y se inserta una nueva secuencia de binarios en la memoria intermedia de binario, a partir de la que se elimina el primer bit y se envía al selector de memoria intermedia de binario. Si la memoria intermedia de binario está vacía y el número Mx de bits en la memoria intermedia de bits 58 conectada es menor que la longitud máxima de la palabra de código Lx conectada, la siguiente secuencia de Nx bits se lee desde la memoria intermedia de bits global 61 y se inserta en la memoria intermedia de bits 58 local conectada, se lee la siguiente palabra de código de la memoria intermedia de bits, se inserta una nueva secuencia de binario en la memoria intermedia de binario, y el primer binario de la secuencia se elimina y se envía al selector de memoria intermedia de binario. Este proceso se repite hasta que todos los símbolos fuente se decodifican.In one embodiment, bit buffers 58 and global bit buffer 61 are operated as described below. The number of bits that are requested and read by a particular bit buffer 58 is indicated as Nx, it is equal to the number of bits that are written to the global bit buffer by the corresponding bit buffer on the encoder. This number of bits Nx may be different for different bit buffers 58 and may also vary over time. In a preferred embodiment of the invention, the number of Nx bits that are requested and read by a particular bit buffer 58 is fixed over time. The reading of a fixed number Nx of bits 60 is triggered based on the number of bits Mx in bit buffer 58 and the maximum length of the associated code word Lx . Note that each binary decoder 22 can be associated with a different maximum codeword length Lx . If a request for a binary 19 is sent to a particular binary 20 buffer, and the particular binary 20 buffer is empty, and the number Mx of bits in the connecting bit buffer 58 (via a binary decoder) with the particular binary buffer 20 being less than the maximum codeword length Lx that is associated with the corresponding binary decoder 22, the connected bit buffer 58 sends a request 59 for new streams Nx bits to global bit buffer 61. In response to this request, the first Nx bits are removed from global bit buffer 61 and this sequence of Nx bits 60 is sent to bit buffer 58 from which the request was sent. Finally, this Nx bit sequence is added to the corresponding bit buffer 58. The next codeword 57 is then read from this bit buffer, and the connected binary decoder 22 inserts the associated binary sequence 21 into the connected binary buffer 20. As a final response to the original request for a binary 19, the first binary is removed from the binary buffer 20 and this decoded binary 25 is sent to the binary buffer selector 18. When the next binary request 19 is sent to the particular binary 20 buffer and memory binary buffer is not empty, the next bit is removed from the binary buffer 20. If the binary buffer is empty but the Mx number of bits in the connected bit buffer 58 is greater than or equal to the length maximum associated Lx codeword, the next codeword is read from the bit buffer and a new sequence of binaries is inserted into the memory binary buffer, from which the first bit is cleared and sent to the binary buffer selector. If the binary buffer is empty and the Mx number of bits in the connected bit buffer 58 is less than the maximum length of the connected Lx codeword, the following sequence of Nx bits is read from the bit buffer global 61 and inserted into the connected local bit buffer 58, the next codeword is read from the bit buffer, a new binary stream is inserted into the binary buffer, and the first binary in the stream it is removed and sent to the binary buffer selector. This process is repeated until all the source symbols are decoded.

Al final de un paquete de datos, podría insertarse más binario y/o bits que los requeridos para la decodificación de los símbolos fuente requeridos dentro de la memoria intermedia de binario y/o memoria intermedia de bits. Los binarios restantes en la memoria intermedia de binario y los bits restantes en la memoria intermedia de bits se descartan e ignoran.At the end of a data packet, more binary and / or bits than required for decoding the required source symbols could be inserted into the binary buffer and / or bit buffer. The remaining binaries in the binary buffer and the remaining bits in the bit buffer are discarded and ignored.

Intercalado de secuencias de bits de longitud fija con restricción de bajo retardoFixed-length bitstream interleaving with low delay constraint

La realización descrita para un codificador y decodificador PIPE con intercalado de secuencias de bits de longitud fija puede combinarse también con el esquema para el control del retardo de memoria intermedia del codificador, que se ha descrito anteriormente, el concepto de codificación PIPE es el mismo que en la realización con el control del retardo descrito anteriormente. Si una medida en relación con el retardo o una delimitación superior del retardo (véase a continuación) excede un umbral especificado, la primera entrada de memoria intermedia reservada se llena mediante la purga de la memoria intermedia de binario correspondiente (usando un mecanismo similar como al final de un paquete de datos) y escribiendo potencialmente bits adicionales para el llenado de todos los bits de la entrada de memoria intermedia de longitud fija reservada. Mediante dicho mecanismo, el número de entradas de memoria intermedia en espera se reduce hasta que la medida del retardo asociado es menor que el umbral especificado. En el lado del decodificador, los binarios y bits que se han insertado en el lado del codificador en orden para obedecer a la restricción de retardo deben descartarse. Para este descarte de binarios y bits puede usarse básicamente el mismo mecanismo que en el lado del codificador. The embodiment described for a PIPE encoder and decoder with fixed-length bitstream interleaving can also be combined with the scheme for encoder buffer delay control, which has been described above, the concept of PIPE encoding is the same as in the embodiment with the delay control described above. If a delay-related measure or upper delay delimitation (see below) exceeds a specified threshold, the first reserved buffer entry is populated by purging the corresponding binary buffer (using a similar mechanism as in end of a data packet) and potentially writing additional bits to fill all bits of the reserved fixed-length buffer entry. Using such a mechanism, the number of standby buffer entries is reduced until the associated delay measure is less than the specified threshold. On the decoder side, binaries and bits that have been inserted on the encoder side in order to obey the delay constraint must be discarded. Basically the same mechanism can be used for this discard of binaries and bits as on the encoder side.

En una realización, la medida para el retardo (o una delimitación superior del retardo) es el número de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global, donde el número de entradas de memoria intermedia activa es el número de entradas de memoria intermedia de longitud fija reservada más el número de entradas de memoria intermedia de longitud fija que contienen bits ya escritos. Obsérvese que la primera entrada de memoria intermedia es siempre una entrada de memoria intermedia de longitud fija reservada o una entrada de memoria intermedia libre, dado que si la primera entrada de memoria intermedia contiene bits escritos, estos bits se escriben al flujo de bits. Sea el retardo máximo de memoria intermedia permitida (tal como se determina por la aplicación) de D bits. Este retardo máximo de memoria intermedia D debe conocerse tanto para el codificador como para el decodificador. En una realización preferente de la invención, el retardo máximo de memoria intermedia D se fija por la aplicación. En otra realización preferente de la invención, el retardo máximo de memoria intermedia D se señaliza en el interior del flujo de bits, por ejemplo en la cabecera del paquete de datos (o cabecera del fragmento) o en un conjunto de parámetros, que se incluye en el flujo de bits. Puede señalizarse en unidades de bits, o bytes, o un múltiplo de bits, o un múltiplo de bytes. Si un codificador de binario 10 envía una solicitud para la reserva de una nueva secuencia de bits de longitud fija a la memoria intermedia de bits global 51, se ejecuta el siguiente proceso antes de que se reserve una nueva entrada en la memoria intermedia de longitud fija.In one embodiment, the measure for delay (or an upper bound on delay) is the number of bits in the active buffer entries in the global bit buffer, where the number of active buffer entries is the number of reserved fixed-length buffer entries plus the number of fixed-length buffer entries that contain bits already written. Note that the first buffer entry is always a reserved fixed-length buffer entry or a free buffer entry, since if the first buffer entry contains written bits, these bits are written to the bitstream. Let the maximum allowable buffer delay (as determined by the application) be D bits. This maximum buffer delay D must be known for both the encoder and the decoder. In a preferred embodiment of the invention, the maximum buffer delay D is set by the application. In another preferred embodiment of the invention, the maximum buffer delay D is signaled within the bitstream, for example in the packet data header (or fragment header) or in a parameter set, which is included in the bit stream. It can be signaled in units of bits, or bytes, or a multiple of bits, or a multiple of bytes. If a binary encoder 10 sends a request for the reservation of a new fixed length bit stream to the global bit buffer 51, the following process is executed before a new entry is reserved in the fixed length buffer .

Si el número de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global más el número de bits que se reservarán por la solicitud de reserva actual es mayor que el retardo máximo de memoria intermedia D, la primera entrada de memoria intermedia (que se reserva) se purga por el proceso descrito a continuación hasta que el número de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global más el número de bits que se reservarán por la solicitud de reserva actual sea menor que o igual al retardo máximo de memoria intermedia D. El purgado de una entrada de memoria intermedia de longitud fija reservada es similar al purgado al final de un paquete de datos. El codificador de binario 10 que se conecta con la memoria intermedia de bits 48 que ha reservado la primera entrada de memoria intermedia correspondiente se purga mediante la adición de binarios con valores particulares o arbitrarios a la memoria intermedia de binario 8 conectada hasta que la secuencias de binario resultantes representen una secuencia de binario que se asocia con una palabra de código, la palabra de código se inserta entonces en la memoria intermedia de bits 48 correspondiente. Como se ha mencionado anteriormente, una forma preferida para añadir binarios a la memoria intermedia de binarios es añadir aquellos binarios que producen la palabra de código más corta posible. Si, después de la escritura de la palabra de código a la memoria intermedia de bits conectada y la inserción potencial de una secuencia de bits de longitud fija dentro de la memoria intermedia de bits global, hay aún bits en la memoria intermedia de bits (es decir, la escritura de palabras de código no llena completamente la secuencia de bits de longitud fija reservada), se añaden bits adicionales con valores particulares o arbitrarios a la memoria intermedia de bits hasta que se eliminen todos los bits de la memoria intermedia de bits y se escriban en la entrada de memoria intermedia reservada. Finalmente, al final de este proceso, la entrada de memoria intermedia completada (la primera entrada de longitud fija en la memoria intermedia de bits global) se elimina de la memoria intermedia de bits global y se escribe en el flujo de bits.If the number of bits in the active buffer entries in the global bit buffer plus the number of bits to be reserved by the current reservation request is greater than the maximum buffer delay D, the first buffer entry (which is reserved) is purged by the process described below until the number of bits in the active buffer entries in the global bit buffer plus the number of bits to be reserved by the current reservation request is less than or equal to the maximum buffer delay D. Purging a reserved fixed-length buffer entry is similar to purging at the end of a data packet. The binary encoder 10 that connects to the bit buffer 48 that has reserved the first corresponding buffer entry is purged by adding binaries with particular or arbitrary values to the connected binary buffer 8 until the sequences of Resulting binary represents a binary sequence that is associated with a codeword, the codeword is then inserted into the corresponding bit buffer 48. As mentioned above, a preferred way to add binaries to the binary buffer is to add those binaries that produce the shortest possible codeword. If, after writing the codeword to the connected bit buffer and the potential insertion of a fixed-length bit stream into the global bit buffer, there are still bits in the bit buffer (it is (codeword writing does not completely fill the reserved fixed-length bitstream), additional bits with particular or arbitrary values are added to the bit buffer until all bits are removed from the bit buffer and are written to the reserved buffer entry. Finally, at the end of this process, the completed buffer entry (the first fixed-length entry in the global bit buffer) is removed from the global bit buffer and written to the bit stream.

En el lado del decodificador, se ejecuta un proceso similar para descartar los binarios y bits que se han añadido para obedecer a la restricción de retardo. Por lo tanto, el decodificador mantiene un contador C que cuenta los bits que se han leído desde la memoria intermedia de bits global (este contador puede mantenerse en la memoria intermedia de bits global). El contador C se inicializa (por ejemplo con cero) al comienzo de la decodificación de un paquete de datos y se incrementa después de que se lea una secuencia de longitud fija. Si se lee una secuencia de Nx bits de longitud fija desde la memoria intermedia de bits global 61, el contador C se incrementa en Nx. Además del contador global C, cada memoria intermedia de bits 58 contiene un contador Cx, que almacena al valor del contador de bits C antes de que se lea la última secuencia de bits de longitud fija dentro de la memoria intermedia de bits 58 correspondiente. Cuando una memoria intermedia de bits 58 particular lee una nueva secuencia de bits de longitud fija, su contador Cx se fija igual a C como una primera etapa y a continuación la secuencia de bits de longitud fija se lee desde la memoria intermedia de bits global 61. Cuando se envía una solicitud de un binario 19 a una memoria intermedia de binario 20 particular y la diferencia (C - Cx) entre el contador global C y el contador Cx de la memoria intermedia de bits 58 conectada es mayor que el retardo máximo de memoria intermedia D, todos los binarios que están actualmente almacenados en la memoria intermedia de binario 20 particular y todos los bits que están almacenados en la memoria intermedia de bits 58 conectada se descartan e ignoran. Junto a esa etapa adicional, la decodificación se hace funcionar como se ha descrito anteriormente. Si la memoria intermedia de binario 20 a la que se envía una solicitud de un binario 19 está vacía (o bien porque todos los binarios ya se han eliminado o porque un mecanismo de bajo retardo descartó todos los binarios en la primera etapa después de que se haya recibido la solicitud de binario), el decodificador de binario 22 conectado intenta leer una nueva palabra de código desde la memoria intermedia de bits 58 conectada. Si el número de bits en la memoria intermedia de bits 58 es menor que la longitud de palabra de código máxima, se lee una nueva secuencia de bits de longitud fija desde la memoria intermedia de bits global 61, antes de que se lea la palabra de código, etc.On the decoder side, a similar process is run to discard the binaries and bits that have been added to obey the delay constraint. Therefore, the decoder maintains a counter C that counts the bits that have been read from the global bit buffer (this counter can be kept in the global bit buffer). Counter C is initialized (eg zero) at the start of decoding a data packet and incremented after a fixed length sequence is read. If a fixed length Nx bit sequence is read from the global bit buffer 61, the counter C is incremented by Nx. In addition to the global counter C, each bit buffer 58 contains a counter Cx, which stores the value of the bit counter C before the last fixed-length bit stream is read within the corresponding bit buffer 58. When a particular bit buffer 58 reads a new fixed-length bit stream, its counter Cx is set equal to C as a first step, and then the fixed-length bit stream is read from the global bit buffer 61. When a request for a binary 19 is sent to a particular binary buffer 20 and the difference (C-Cx) between the global counter C and the counter Cx of the connected bit buffer 58 is greater than the maximum memory delay Buffer D, all binaries that are currently stored in the particular binary buffer 20 and all bits that are stored in the connected bit buffer 58 are discarded and ignored. Along with that additional stage, decoding is operated as described above. If the binary buffer 20 to which a request for a binary 19 is sent is empty (either because all binaries have already been removed or because a low delay mechanism discarded all binaries in the first stage after has received the binary request), the connected binary decoder 22 tries to read a new codeword from the connected bit buffer 58. If the number of bits in bit buffer 58 is less than the maximum codeword length, a new fixed-length bitstream is read from global bit buffer 61, before the buffer word is read. code etc.

Las realizaciones que se han descrito con respecto a las Figs. 7 a 13 se refieren a posibilidades para conseguir una trayectoria de flujo de bits intercalada entre el codificador PIPE 104 por un lado y el decodificador PIPE 202 por otro lado. Como se ha descrito anteriormente con respecto a las Figs. 1 y 2, los aparatos de codificación y decodificación entrópica pueden conectarse entre sí mediante dos canales separados, uno de los cuales transporta el flujo de bits VLC 112 y el otro de los cuales transporta el flujo de bits codificado según PIPE intercalado. Sin embargo, hay también posibilidades de intercalar incluso ambos flujos de bits VLC 112 así como los flujos de bits codificados PIPE 118, y dichas posibilidades se describirán a continuación con respeto a las Figs. 20 a 24. Sin embargo, antes de eso, se proporciona una base matemática con relación al esquema de codificación PIPE así como detalles con relación a cómo subdividir de modo óptimo el intervalo de probabilidades con la asignación de los resultados parciales individuales resultantes a los codificadores entrópicos 116 y decodificadores entrópicos 210 individuales, respectivamente.The embodiments which have been described with respect to Figs. 7-13 refer to possibilities for achieving a bitstream path sandwiched between PIPE encoder 104 on the one hand and PIPE decoder 202 on the other hand. As described above with respect to Figs. 1 and 2, the encoding and decoding apparatus Entropic can be connected to each other by two separate channels, one of which carries the VLC 112 bitstream and the other of which carries the interleaved PIPE encoded bitstream. However, there are also possibilities for interleaving even both VLC bit streams 112 as well as PIPE 118 encoded bit streams, and those possibilities will be described below with respect to Figs. 20-24. However, prior to that, a mathematical basis regarding the PIPE coding scheme is provided as well as details regarding how to optimally subdivide the range of probabilities by assigning the resulting individual partial results to the encoders. 116 entropics and 210 individual entropic decoders, respectively.

Como ya se ha indicado, en la codificación PIPE el espacio uniforme de la secuencia de entrada de símbolos discretos se mapea sobre un pequeño conjunto de intervalos de probabilidad binaria. Los modelos de probabilidad para los símbolos fuente pueden ser fijos o adaptativos mientras que la codificación entrópica que usa los intervalos de probabilidad permanece fija y se desacoplan de la etapa de modelación. Cada uno de los intervalos de probabilidad puede codificarse usando un código de entropía muy simple que tiene el nivel de complejidad de los códigos Huffman. La tasa en exceso del código de entropía de probabilidad del intervalo de partición (PIPE) es similar a la de la codificación aritmética pura.As already indicated, in PIPE encoding the uniform space of the discrete symbol input sequence is mapped over a small set of binary probability intervals. The probability models for the source symbols can be fixed or adaptive while the entropic coding using the probability intervals remains fixed and is decoupled from the modeling stage. Each of the probability ranges can be coded using a very simple entropy code that has the level of complexity of Huffman codes. The excess rate of the partition interval probability entropy code (PIPE) is similar to that of pure arithmetic coding.

La codificación entrópica, en general, puede considerarse como la forma más genérica de compresión de datos sin pérdida. La compresión de datos sin pérdida se dirige a representar datos discretos con menos bits que los necesarios para la representación de datos original pero sin ninguna pérdida de información. Los datos discretos pueden darse en la forma de texto, gráficos, imágenes, vídeo, audio, voz, facsímil, datos médicos, datos meteorológicos, datos financieros o cualquier otra forma de datos digitales. En muchas aplicaciones de codificación, los datos fuente originales se mapean primero en los denominados símbolos de codificación y estos símbolos de codificación se codifican a continuación de modo entrópico. El mapeado en símbolos de codificación puede incluir la cuantificación, en cuyo caso el esquema de codificación global es con pérdidas. Un símbolo de codificación s puede tomar cualquier valor desde un alfabeto M-ario (M > 2 ) A = {ao,...,aM-1}. Para la finalidad de codificación del símbolo s, el alfabeto se asocia con una función de masa de probabilidad (pmf) estimada {ps(ao),K,ps(aM-1 )} y todas las dependencias entre símbolos de codificación que no se consideran en esta pmf se desprecian. Para estos ajustes abstractos, la entropíaEntropic encoding, in general, can be considered as the most generic form of lossless data compression. Lossless data compression is intended to represent discrete data with fewer bits than required for the original data representation but without any loss of information. Discrete data can be in the form of text, graphics, images, video, audio, voice, facsimile, medical data, weather data, financial data, or any other form of digital data. In many encoding applications, the original source data is first mapped into so-called encoding symbols, and these encoding symbols are then encoded entropically. The mapping into encoding symbols may include quantization, in which case the overall encoding scheme is lossy. An encoding symbol s can take any value from an M-Aryan alphabet (M> 2) A = {ao, ..., aM-1}. For the purpose of encoding the symbol s, the alphabet is associated with an estimated probability mass function (pmf) {ps (ao), K, ps (aM-1)} and all dependencies between encoding symbols that are not consider in this pmf they despise themselves. For these abstract settings, entropy

M-1M-1

Ps ( a¡ )log2 Ps ( a¡ ) P s ( a ¡ ) log 2 P s ( a ¡ )

Hs = '= ° (B1) H s = '= ° (B1)

es la delimitación inferior más grande para la longitud de palabra esperada en bits por símbolo, para la codificación de los símbolos s, que puede conseguirse con técnicas de codificación entrópica. Durante décadas, la codificación Huffman, y la codificación aritmética han dominado la codificación entrópica práctica. Hay ejemplos bien conocidos de códigos prácticos capaces de aproximarse al límite entrópico (en un cierto sentido).it is the largest lower bound for the expected word length in bits per symbol, for encoding the s symbols, which can be achieved with entropic encoding techniques. For decades, Huffman coding and arithmetic coding have dominated practical entropic coding. There are well-known examples of practical codes capable of approaching the entropic limit (in a certain sense).

Para una distribución de probabilidad fija, los códigos de Huffman son relativamente fáciles de construir. La propiedad más atractiva de los códigos de Huffman es que su implementación puede realizarse de modo eficiente mediante el uso de tablas de códigos de longitud variable (VLC). Sin embargo, cuando se trata con estadísticas fuente variables en el tiempo, es decir, probabilidades de símbolos cambiantes, la adaptación del código Huffman y sus tablas VLC correspondientes es bastante exigente, tanto en términos de complejidad algorítmica así como en términos de costes de implementación. También, en el caso de tener un valor de alfabeto dominante con Ps (a) > 0,5, la redundancia del código de Huffman correspondiente (sin el uso de ninguna extensión de alfabeto tal como la ejecución de codificación por longitud de serie) puede ser bastante sustancial. Otros inconvenientes de los códigos Huffman vienen dados por el hecho de que en caso de tratar con modelación de probabilidad de orden superior, pueden requerirse múltiples conjuntos de tablas VLC.For a fixed probability distribution, Huffman codes are relatively easy to construct. The most attractive property of Huffman codes is that they can be implemented efficiently by using variable length code tables (VLC). However, when dealing with time-varying source statistics, i.e. probabilities of changing symbols, the adaptation of the Huffman code and its corresponding VLC tables is quite demanding, both in terms of algorithmic complexity as well as in terms of implementation costs. . Also, in the case of having a dominant alphabet value with P s ( a) > 0.5, the redundancy of the corresponding Huffman code (without the use of any alphabet extension such as string length encoding execution) it can be quite substantial. Other drawbacks to Huffman codes come from the fact that in dealing with higher order probability modeling, multiple sets of VLC tables may be required.

La codificación aritmética, por otro lado, aunque es sustancialmente más compleja que la VLC, ofrece la ventaja de un manejo más consistente y adecuado cuando se maneja una modelación de probabilidad adaptativo y de orden superior así como con el caso de distribuciones de probabilidad altamente sesgadas. Realmente, esta característica es el resultado básicamente del hecho de que la codificación aritmética proporciona un mecanismo, al menos conceptualmente, para mapear cualquier valor dado de estimación de probabilidad en una forma más o menos directa a una parte de la palabra de código resultante. Estando provista con dicha interfaz, la codificación aritmética permite una clara separación entre las tareas de modelación de probabilidad y estimación de probabilidad, por un lado, y la codificación entrópica real, es decir el mapeado de símbolos a palabras de código, por otro lado.Arithmetic coding, on the other hand, although substantially more complex than VLC, offers the advantage of more consistent and appropriate handling when handling adaptive and higher-order probability modeling as well as in the case of highly skewed probability distributions. . Actually, this feature is basically the result of the fact that arithmetic coding provides a mechanism, at least conceptually, to map any given probability estimate value in a more or less direct way to a part of the resulting codeword. Being provided with such an interface, arithmetic coding allows a clear separation between probability modeling and probability estimation tasks, on the one hand, and actual entropic coding, i.e. mapping symbols to codewords, on the other hand.

A diferencia de los esquemas de codificación entrópica convencional recién explicados, la codificación PIPE usa particionamiento de los intervalos de probabilidad, cuya base matemática se describe con más detalle a continuación.Unlike the recently explained conventional entropic coding schemes, PIPE coding uses partitioning of probability intervals, the mathematical basis of which is described in more detail below.

Considérese la secuencia de símbolos de codificación {so, K s«-1}. Cada símbolo se extrae de un alfabeto s¡ e A. Los a Q* Consider the sequence of encoding symbols {so, K s «-1}. Each symbol is drawn from an alphabet s, e A. Los a Q *

alfabetos Ai = { 0, 1,...} contienen dos o más letras estando cada una asociada con una estimación de probabilidad Ps(am ) . Las estimaciones de probabilidad Ps(am ) son conocidas para codificador y decodificador y pueden ser fijas o variables. Se supone que las probabilidades variables se estiman simultáneamente en el codificador y decodificador. Los alfabetos Ai pueden ser tanto idénticos para la secuencia de símbolos como asociarse tipos de símbolos diferentes con diferentes alfabetos. En este último caso, se supone que el decodificador conoce el alfabeto de cada símbolo en la secuencia. Esta suposición se justifica dado que las descripciones de códec fuente prácticas contienen una sintaxis que estipula el orden de los símbolos y sus alfabetos.alphabets A i = {0, 1, ...} contain two or more letters each being associated with a probability estimate Ps ( am ). The probability estimates Ps ( am ) are known for encoder and decoder and can be fixed or variable. Variable probabilities are assumed to be estimated simultaneously at the encoder and decoder. Ai alphabets can both be identical for the sequence of symbols and associate different types of symbols with different alphabets. In the latter case, it is assumed that the decoder knows the alphabet of each symbol in the sequence. This assumption is justified since the practical source codec descriptions contain a syntax that stipulates the order of the symbols and their alphabets.

La secuencia de símbolos {s0,K s«-1} se convierte en una secuencia de símbolos binarios, que también se denominan como binarios. Para cada símbolo la conversión a binarioThe symbol sequence {s0, K s «-1} is converted to a sequence of binary symbols, which are also called binary. For each symbol to binary conversion sj

b = { b°. } - Yb(s, ) (B2) b = {b °. } - Yb (s,) (B2)

a' bia 'bi

representa un mapeado biyectivo de letras del alfabeto m en conjuntos de binarios ordenados m . El mapeado de conversión a binario Yb puede ser diferente para diferentes símbolos s, o categorías de símbolos. Cada secuencia de binarios i para un símbolo particular s, consiste en uno o más binarios bk. En el lado del decodificador, puede reconstruirse unos símbolos s, mediante el mapeado inverso s, = ' ' b' ' ' dada la secuencia de binarios b'. Como resultado de la conversión a binario, se obtiene una secuencia de binarios {bo, K, be-i} que representa la secuencia de símbolos fuente {so, K,s«-i}.represents a bijective mapping of letters of the alphabet m into sets of ordered binaries m . Yb binary conversion mapping may be different for different symbols s, or symbol categories. Each sequence of binaries i for a particular symbol s consists of one or more binaries bk. On the decoder side, symbols s can be reconstructed, by inverse mapping s, = '' b ''' given the sequence of binaries b'. As a result of the binary conversion, a binary sequence {bo, K, be-i} is obtained that represents the sequence of source symbols {so, K, s «-i}.

Todos los binarios se asocian con el mismo alfabeto binario B = {0,1}, pero las pmfs binarias correspondientes { Po , Pl } siendo Pl = Po , son normalmente diferentes. Una pmf binaria { Po , Pl } puede describirse por el valor del b j pjbinario menos probable (LPB) LPB y su probabilidad rLPB (siendo rLPB < o,5). Esta descripción de probabilidad b jAll binary are associated with the same binary alphabet B = {0,1}, but the corresponding binary pmfs {Po, Pl} being Pl = Po are normally different. A binary pmf {Po, Pl} can be described by the value of the least likely binary b j p j (LPB) LPB and its probability rLPB (with rLPB <o, 5). This description of probability b j

binaria { LPB, PLPB} puede deducirse directamente de estimaciones de probabilidad Ps(am) para los alfabetos de símbolos dados los mapeados de conversión a binario Yb. Es posible también (y frecuentemente preferible) estimar b j pj The binary {LPB, PLPB } can be derived directly from probability estimates Ps (am) for symbol alphabets given the binary conversion maps Yb. It is also possible (and often preferable) to estimate b j pj

directamente { LPB , LPB } simultáneamente en el lado del codificador y del decodificador. Por lo tanto, los binarios pueden asociarse con un modelo de probabilidad (al que también se hace referencia como un contexto) basándose en la sintaxis y símbolos o binarios realmente codificados. Y para cada modelo de probabilidad, la descripción de b j pj directly { LPB , LPB } simultaneously on the encoder and decoder side. Therefore, binaries can be associated with a probability model (also referred to as a context) based on the syntax and symbols or binaries actually encoded. And for each probability model, the description of b j pj

probabilidad { LPB , LPB} puede estimarse basándose en los valores de los binarios que se codifican con el modelo de probabilidad. Un ejemplo de dicha modelación de probabilidad binario se describe con respecto a CABAC de H.264.probability { LPB , LPB} can be estimated based on the values of the binaries that are encoded with the probability model. An example of such binary probability modeling is described with respect to H.264 CABAC.

Dado que la función entrópica binariaSince the binary entropic function

H(p) = -p log2(p) -(1 - p) log2(1 - p) (B3) es simétrica alrededor de p=o,5, el mismo codificador binario puede usarse para la codificación de todos los binarios que se asocian con la misma probabilidad LPB pLPB independientemente del valor de bj . Por lo tanto la bc bc secuencia de binarios {bo...,bB-1} se convierte en una secuencia de binarios de codificación { B-1}. Para cada bi Yi nario b, se especifica el mapeado biyectivo correspondiente ,c mediante H ( p) = -p log2 (p) - (1 - p) log2 (1 - p) (B3) is symmetric around p = 0, 5, the same binary encoder can be used for encoding all binaries that they are associated with the same probability LPB pLPB regardless of the value of bj . Therefore the bc bc binary sequence {bo ..., bB-1} becomes a binary encoding sequence { B -1}. For each bi Yi nario b, the corresponding bijective mapping is specified , c by

bc¡ = YC(bj) = b © b[PB (B4) en la que © indica el operador O exclusiva. En el lado del decodificador, los binarios bj pueden reconstruirse dados c bc¡ = YC ( bj ) = b © b [PB (B4) where © indicates the exclusive OR operator. On the decoder side, bj binaries can be reconstructed given c

b bjb bj

los binarios de codificación 1 y el valor LPB correspondiente “ LPB mediante el mapeado inverso b¡ = ( yc ) > ; ) . U ,n binario codificado bC = o especifica que el valor de binario correspondiente bj es igual al valor LPB bLjPB y un binario codificado bc 1 = 1 especifica que el valor del binario correspondiente bj es igual al valor del binario bj encoding binaries 1 and the corresponding LPB value “LPB by inverse mapping b¡ = ( yc )>; ). U , n encoded binary bC ' = o specifies that the corresponding binary value bj is equal to the value LPB b L j PB and an encoded binary bc 1 = 1 specifies that the value of the corresponding binary bj is equal to the value of the binary bj

más probable (MPB) 1 LPB most likely (MPB) 1 LPB

La secuencia de binarios codificados { b o c , K, b B c 1} únicamente representa la secuencia de símbolos fuente {so, K, sw-i} y las estimaciones de probabilidad correspondientes, que pueden emplearse para codificación entrópica, se The encoded binary sequence { b or c , K, b B c 1} only represents the source symbol sequence {so, K, sw-i} and the corresponding probability estimates, which can be used for entropic coding, are

describen completamente por las probabilidades LPB Plpb (siendo Plpb < 0,05). Por ello, solo necesitan considerarse las probabilidades en el intervalo semiabierto (0, 0,5] para el diseño del codificador entrópico binario c Fully described by the LPB Plpb probabilities ( Plpb being <0.05). Therefore, only the probabilities in the semi-open interval (0, 0.5) need to be considered for the design of the binary entropic encoder c

para la codificación de binarios b for encoding binaries b

cc

Para la codificación entrópica binaria real, la secuencia de binarios de codificación { b 0 c ,K, b B-1} se proyecta sobre un número pequeño de intervalos de probabilidad i*. El intervalo de probabilidad LPB (0. 0,5] se particiona en K intervalos Ik = (pk, pk+1]For actual binary entropic encoding, the encoding binary sequence { b 0 c , K, b B-1} is projected over a small number of probability intervals i *. The LPB probability interval (0. 0.5] is partitioned into K intervals Ik = ( pk, pk + 1]

U OR ik ik n ij n ij

= ( 0 0,5 y = 0 para k t j (B5) = (0 0.5 y = 0 for k t j (B5)

k=0 k = 0

El conjunto de K se caracteriza por K-1 bordes de intervalo pk siendo k = 1,K ,K-1. Sin pérdida de generalidad suponemos que pk < Pk+1 para k = 0,K , K. Los bordes de intervalo exteriores se fijan y dan por p0 = 0 y pk = 0,5. Un codificador entrópico binario no adaptativo simple se designa para cada intervalo Ik. Todos los binarios de bc The set of K is characterized by K-1 edges of interval pk with k = 1, K, K-1. Without loss of generality we assume that pk <Pk + 1 for k = 0, K, K. The outer interval edges are fixed and given by p0 = 0 and pk = 0.5. A simple non-adaptive binary entropic encoder is designated for each Ik interval . All bc binaries

codificación 1 con probabilidades LPB asociadas pLPB e Ik se asignan al intervalo Ik y se codifican con el codificador entrópico fijo correspondiente.Encoding 1 with associated LPB probabilities pLPB and Ik are assigned to the interval Ik and encoded with the corresponding fixed entropic encoder.

En la descripción que sigue, todos los binarios bCrepresentan binarios de codificación y todas las probabilidades p In the description that follows, all bC binaries represent encoding binaries and all probabilities p

son probabilidades LPB pLPB are LPB pLPB probabilities

Para investigar el impacto de la discretización en el intervalo de probabilidad sobre la eficiencia de codificación, suponemos que podemos diseñar un codificador entrópico óptimo para una probabilidad fija que alcanza la delimitación entrópica. Cada intervalo de probabilidad Ik = (pk, pk+1] se asocia con una probabilidad representativa pIk e Ik y el codificador entrópico óptimo correspondiente debería conseguir el límite de entropía para su probabilidad representativa. Bajo esta suposición, la tasa de codificación de un binario con probabilidad p que use el codificador entrópico óptimo para el intervalo representativo pIk viene dado porTo investigate the impact of discretization on the probability interval on coding efficiency, we assume that we can design an optimal entropic encoder for a fixed probability that reaches entropic delimitation. Each probability interval Ik = (pk, pk + 1] is associated with a representative probability pIk and Ik and the corresponding optimal entropic encoder should achieve the entropy limit for its representative probability. Under this assumption, the encoding rate of a binary with probability p using the optimal entropy encoder for the representative interval pIk is given by

R(p, pk) = -p log2(pIk) -(1 - p) log2(1 - pk) R ( p, pk) = -p log2 (pIk) - (1 - p) log2 (1 - pk)

= H(pIk) + (p - pk) H'(pk) (B6 )= H ( pIk) + (p - pk) H ' ( pk) (B6)

en la que H(p) representa la función de entropía binaria 3 ywhere H (p) represents the binary entropy function 3 and

Figure imgf000035_0001
Figure imgf000035_0001

es su primera derivada. Suponemos adicionalmente que la distribución de probabilidades en el intervalo (0, 0,5]it is its first derivative. We further assume that the probability distribution on the interval (0, 0.5)

0,50.5

í f (p)dp í f ( p) dp

viene dada por /(p), siendo 0 = 1. A continuación, la tasa esperada, en bits por binario, para un conjunto dado de K intervalos {Ik} con probabilidades representativas correspondientes {pIk} puede describirse comois given by / (p), where 0 = 1. Then the expected rate, in bits per binary, for a given set of K intervals {Ik} with corresponding representative probabilities {pIk} can be described as

K-1Í pk *1 K-1Í pk * 1

É jR (p, p¡k )f(p)dp É jR (p, p¡k) f ( p) dp

R = R({Ik}, {pIk}) = k=°^ pk (B8 ) R = R ({Ik}, {pIk}) = k = ° ^ pk (B8)

La primera derivada parcial con respecto a cualquier probabilidad representativa pIk, con k = 0,K , K-1, viene dada porThe first partial derivative with respect to any representative probability pIk, with k = 0, K, K-1, is given by

Figure imgf000035_0002
Figure imgf000035_0002

dd

RR

La ecuación

Figure imgf000035_0003
= 0 tiene una solución única The equation
Figure imgf000035_0003
= 0 has a unique solution

f Pk +1 p f (p)dp f Pk +1 pf ( p) dp

p.* _p+1 f (p)dp p. * _p + 1 f ( p) dp

k pk (B10) k pk (B10)

para la probabilidad representativa pik dentro del dominio de definición lk. La segunda derivada parcial para esta soluciónfor the representative probability pik within the definition domain lk. The second partial derivative for this solution

Figure imgf000036_0001
Figure imgf000036_0001

es siempre mayor que cero siis always greater than zero if

f 1 p f (p)dp f 1 pf ( p) dp

p k > 0 (B12) pk > 0 (B12)

Por ello, si se cumple la condición B12, el valor lk dado por la ecuación B10 es la probabilidad representativa para un intervalo lk que minimiza la tasa global R esperada dadas las fronteras del intervalo pk y pk+1. En caso contrario, no se proyecta ningún binario en el intervalo lk y la probabilidad representativa pik e lk puede elegirse arbitrariamente sin ningún impacto en la tasa global R; pero dicha configuración debería evitarse, dado que el intervalo lk no debería emplearse para codificación entrópica.Therefore, if condition B12 is satisfied, the value lk given by equation B10 is the representative probability for an interval lk that minimizes the expected global rate R given the boundaries of the interval pk and pk + 1. Otherwise, no binary is projected in the interval lk and the representative probability pik and lk can be chosen arbitrarily without any impact on the overall rate R; but such configuration should be avoided, since the interval lk should not be used for entropic encoding.

Para hallar una condición para los bordes de intervalo óptimos, investigamos las primeras derivadas de la tasa global R esperada con respecto a los bordes de intervalo pk con k = 1,K , K-1. Si /(p) > 0 para todo p e plk-1,plk), laTo find a condition for the optimal interval edges, we investigated the first derivatives of the expected global rate R with respect to the interval edges pk with k = 1, K, K-1. If / (p)> 0 for all pe plk-1, plk), the

d R d R

ecuación spk = 0 tiene una única solución.equation spk = 0 has a single solution.

H( pk ) - p,H ' p ) - Hp J pk -H H J H ( pk ) - p, H 'p ) - Hp J pk -HHJ

pk H ' p -,) - H '(pk ) (B13) pk H 'p -,) - H ' ( pk ) (B13)

para el borde de intervalo pk dentro del dominio de definición [p«-1, plk) y la segunda derivada parcial para esta soluciónfor the interval edge pk within the definition domain [p «-1, plk) and the second partial derivative for this solution

d2d2

R(pk) R ( pk )

dp2dp2

f ( p l ) { H '( P ik J - H '( P ik) ) (B14)f ( pl) {H '( P ik J - H ' ( P ik )) (B14)

es siempre mayor que cero, de modo que plk es el borde del intervalo pk e p k - 1, plk) que minimiza la tasa global R esperada dados los intervalos representativos p^-1 y plk. Si existen probabilidades p e plk-1, plk) con fp)=0, lais always greater than zero, so plk is the edge of the interval pk and pk - 1, plk) that minimizes the expected overall rate R given the representative intervals p ^ -1 and plk . If there are probabilities eg plk-1, plk) with fp) = 0, the

d d RR

ecuación dpk = 0 tiene múltiples soluciones, pero pl tal como se da por la ecuación B13 es aún óptima incluso aunque puedan existir soluciones óptimas adicionales.equation dpk = 0 has multiple solutions, but pl as given by equation B13 is still optimal even though additional optimal solutions may exist.

Dado el número de intervalos K y la probabilidad de distribución /(p), los bordes de intervalo pk, con k=1,K ,K-1, y las representaciones del intervalo plk, con k = 0,K , K-1, que minimizan la tasa global R esperada pueden obtenerse mediante la resolución del sistema de ecuaciones dado por las ecuaciones B10 y B13 sometido a las condicionesGiven the number of intervals K and the probability of distribution / (p), the edges of interval pk, with k = 1, K, K-1, and the representations of the interval plk, with k = 0, K, K-1 , that minimize the expected global rate R can be obtained by solving the system of equations given by equations B10 and B13 subject to the conditions

B12 para k = 0,K ,K-1. Esto puede conseguirse con el siguiente algoritmo iterativo.B12 for k = 0, K, K-1. This can be accomplished with the following iterative algorithm.

Algoritmo 1:Algorithm 1:

1) Particionar el intervalo (0, 0,5] en K intervalos arbitrarios lk = (pk, pk+1] con po = 0, pk = 0,5, y p k = 0,K ,K-1 de tal forma que las condiciones B12 se obedezcan para todo k = 0,K ,K-1.1) Partition the interval (0, 0.5] into K arbitrary intervals lk = (pk, pk + 1] with po = 0, pk = 0.5, and p k = 0, K, K-1 such that conditions B12 are obeyed for all k = 0, K, K-1.

2) Actualizar las representaciones plk con k = 0,K ,K-1 de acuerdo con la ecuación B102) Update plk representations with k = 0, K, K-1 according to equation B10

3) Actualizar los bordes de intervalo pk con k = 1,K , K-1 de acuerdo con la ecuación B133) Update the interval edges pk with k = 1, K, K-1 according to equation B13

4) Repetir las dos etapas previas hasta convergencia4) Repeat the two previous stages until convergence

La Figura 14 muestra un ejemplo para la discretización del intervalo óptimo usando el algoritmo descrito. Para este ejemplo, suponemos una distribución de probabilidad uniforme f(p) = 2 para 0 < p <0,5 y se particiona el intervalo de probabilidad (0, 0,5] en K = 4 intervalos. Puede verse que la discretización del intervalo de probabilidad conduce a una aproximación lineal en forma de piezas A(p) de la función de entropía binaria H(p) siendo A(p) > H(p) para toda P e (0, 0,5].Figure 14 shows an example for discretizing the optimal range using the algorithm described. For this one For example, we assume a uniform probability distribution f ( p) = 2 for 0 <p <0.5 and the probability interval (0, 0.5] is partitioned into K = 4 intervals. It can be seen that the discretization of the interval of Probability leads to a linear approximation in the form of pieces A (p) of the binary entropy function H (p) where A (p)> H (p) for all P e (0, 0.5].

Como medida para el impacto de la discretización del intervalo sobre la eficiencia de codificación puede usarse la tasa global esperada de incremento con relación al límite de entropíaAs a measure for the impact of interval discretization on coding efficiency, the expected overall rate of increase relative to the entropy limit can be used.

RR

0,5 - 10.5 - 1

_[ H(p) f (p) dp _ [ H (p) f (p) dp

P = (B15) P = (B15)

Para el ejemplo de la Figura 14, el valor esperado de la entropía

Figure imgf000037_0001
es igual a 1/(2ln2) bit por binario y la sobrecarga de la tasa p es igual al 1,01 %. La Tabla 4 lista las sobrecargas de tasa Puni y Plin para la distribución de probabilidad uniforme y una distribución de probabilidad de incremento lineal fp)=8p con p e (0, 0,5], respectivamente, para números seleccionados de K intervalos.For the example in Figure 14, the expected value of entropy
Figure imgf000037_0001
equals 1 / (2ln2) bit per binary and the rate overhead p equals 1.01%. Table 4 lists the Puni and Plin rate overloads for the uniform probability distribution and a linear increase probability distribution fp) = 8p with p e (0, 0.5], respectively, for selected numbers of K intervals.

Tabla 4: sobrecarga de tasa respecto al número de intervalos de probabilidad para la distribución de probabilidad uniforme de incremento linealTable 4: rate overload with respect to the number of probability intervals for the uniform probability distribution of linear increment

Figure imgf000037_0002
Figure imgf000037_0002

Las investigaciones en esta sección mostraron que la discretización del intervalo de probabilidad LPB (0, 0,5] en un número pequeño de intervalos con una probabilidad fija (por ejemplo, 8 a 10 intervalos) tiene muy poco impacto sobre la eficiencia de codificación.Investigations in this section showed that discretizing the LPB probability interval (0, 0.5] over a small number of intervals with a fixed probability (eg, 8 to 10 intervals) has little impact on coding efficiency.

La codificación de entropía anteriormente explicada para intervalos de probabilidad, permite así codificadores individuales que usen probabilidades fijas.The entropy coding explained above for probability ranges thus allows individual coders to use fixed probabilities.

A continuación, primero se muestra cómo puede diseñarse un código simple para probabilidades fijas. Dados estos resultados, se desarrollan unos algoritmos que optimizan conjuntamente el diseño del código y la partición del intervalo de probabilidad LPB (0, 0,5].Next, we first show how a simple code for fixed probabilities can be designed. Given these results, algorithms are developed that jointly optimize the code design and the partition of the LPB probability interval (0, 0.5].

La codificación entrópica para probabilidades fijas p = pik puede realizarse usando codificación aritmética o codificación de longitud variable. Para este último caso, el siguiente enfoque parece ser simple y muy eficiente. Se considera un esquema de codificación entrópica binaria para el que se mapea un número variable de binarios sobre unas palabras de código de longitud variable. Para una capacidad de decodificación única, el mapeado inverso de una palabra de código a una secuencia de binarios debe ser único. Y dado que se desea diseñar un código que enfoque el límite de entropía tan próximo como sea posible, restringimos las consideraciones a mapeados biyectivos. Dicho mapeado biyectivo puede representarse por un árbol binario donde todos los nodos de hoja se asocian con palabras de código, tal como se representa en la Figura 15. Los tres bordes representan eventos binarios. En el ejemplo de la Figura 15, los límites inferiores representan el valor de binario LPB y los límites superiores representan el valor de binario MPB. El árbol binario representa un código de prefijo para los binarios si es un árbol binario completo, es decir, si cada nodo es o bien una hoja o tiene dos descendientes. Cada nodo de hoja se asocia con una probabilidad basándose en una probabilidad LPB p dada. El nodo raíz tienen la probabilidad praíz = 1. La probabilidad para todos los otros nodos se obtiene multiplicando la probabilidad del ascendiente correspondiente por p para los descendientes LPB y q = 1 - p para los descendientes MPB. Cada nodo de hoja Li se caracteriza por el número de bordes LPB ai y el número de límites MPB bi desde el nodo raíz al nodo hoja. Para una probabilidad LPB p particular, la probabilidad pi para el nodo hoja Li = {ai, bi} es igual a Entropic coding for fixed probabilities p = pik can be performed using arithmetic coding or variable length coding. For the latter case, the following approach appears to be simple and very efficient. It is considered a binary entropic coding scheme for which a variable number of binaries is mapped on a code word of variable length. For a unique decoding capability, the reverse mapping of a codeword to a sequence of binaries must be unique. And since you want to design a code that focuses the entropy limit as close as possible, we restrict the considerations to bijective mapping. Said bijective mapping can be represented by a binary tree where all the leaf nodes are associated with code words, as represented in Figure 15. The three edges represent binary events. In the example in Figure 15, the lower limits represent the LPB binary value and the upper limits represent the MPB binary value. The binary tree represents a prefix code for binaries if it is a complete binary tree, that is, if each node is either a leaf or has two descendants. Each leaf node is associated with a probability based on a given LPB p probability. The root node has the probability root = 1. The probability for all other nodes is obtained by multiplying the probability of the corresponding ancestor by p for the LPB descendants and q = 1 - p for the MPB descendants. Each leaf node Li is characterized by the number of edges LPB ai and the number of limits MPB bi from the root node to the leaf node. For a particular LPB probability p , the probability pi for the leaf node Li = {ai, bi} is equal to

pi = paI (1 - p)bI (B16) El árbol binario T se caracteriza totalmente por el número de nodos hoja L y los pares {ai, bi} asociados siendo I = 0, ..., L-1. pi = paI (1 - p) bI (B16) The binary tree T is totally characterized by the number of leaf nodes L and the associated pairs {ai, bi} where I = 0, ..., L-1.

Dado el árbol binario T completo y una probabilidad LPB p, la asignación óptima de palabras de código a nodos hoja puede obtenerse mediante el algoritmo de Huffman. El número variable resultante de mapeado C de bits a palabras de código de longitud variable (V2V) se caracteriza por el número de palabras de código L, que es idéntico al número de nodos hoja, y de tuplas {a/, b/, li} para I = 0, ..., L-1, donde l/ representa la longitud de la palabra de código que se asocia con el nodo hoja L/ = {a/, b/} correspondiente. Debería observarse que hay múltiples posibilidades para la asignación de palabras de código dadas por las longitudes de palabra de código {l/} y la asignación de palabras de código real no es importante siempre que las palabras de código representen un código de prefijo decodificable únicamente. La tasa esperada R(p, C) en bits por binario para un código C dado y una probabilidad LPB p es la relación de longitud de palabra de código esperada y el número esperado de binarios por palabra de códigoGiven the complete binary tree T and an LPB probability p, the optimal assignment of codewords to leaf nodes It can be obtained using the Huffman algorithm. The variable number resulting from mapping C bits to variable length codewords (V2V) is characterized by the number of codewords L, which is identical to the number of leaf nodes, and tuples {a /, b /, li } for I = 0, ..., L-1, where l / represents the length of the codeword that is associated with the corresponding leaf node L / = {a /, b /} . It should be noted that there are multiple possibilities for the codeword assignment given by the codeword lengths {l /} and the actual codeword assignment is not important as long as the codewords represent a uniquely decodable prefix code. The expected rate R (p, C) in bits per binary for a given C code and an LPB probability p is the ratio of the expected codeword length to the expected number of binaries per codeword

Figure imgf000038_0001
Figure imgf000038_0001

El diseño del código está frecuentemente limitado por factores como el número máximo de palabras de código L, el número máximo de binarios por palabra de código, o la longitud máxima de la palabra de código, o está restringido a códigos de estructuras particulares (por ejemplo, para permitir un análisis optimizado). Si suponemos que se da el conjunto Sc de códigos utilizable para una aplicación particular, el código óptimo C* e Sc para una probabilidad LPB p particular puede hallarse minimizando la tasa esperada R(p, C)Code design is often limited by factors such as the maximum number of L codewords, the maximum number of binaries per codeword, or the maximum length of the codeword, or is restricted to particular structure codes (for example , to allow optimized analysis). If we assume that the set of codes usable for a particular application is given, the optimal code C * e Sc for a particular LPB probability p can be found by minimizing the expected rate R (p, C)

arg min R(p,C)arg min R ( p, C )

C*(p) = vCeSc (B18)C * (p) = vCeSc (B18)

Como alternativa más rápida, la minimización también puede proceder sobre un conjunto dado de árboles binarios Sr y para cada árbol solo se considera un código V2V C que se obtiene mediante el algoritmo Huffman. Como un ejemplo, se diseñan códigos V2V para varias probabilidades LPB p mediante la consideración de todos los árboles binarios T para los que el número de nodos hoja L es menor que o igual a un máximo dado Lm. En la Figura 16, el incremento de tasa relativo p(p, C (p)) = R(p, C (p))/N(p) se representa sobre la probabilidad LPB p para tamaños de tabla máximo Lm seleccionados. El incremento de tasa p(p) puede reducirse normalmente permitiendo tamaños de tabla mayores. Para probabilidades LPB mayores, es normalmente suficiente un tamaño de tabla L pequeño de 8 a 16 palabras de código para mantener el incremento de tasa p(p) razonablemente pequeño, pero para probabilidades LPB más pequeñas (por ejemplo, p < 0,1), se requieren tamaños de tabla L mayores.As a faster alternative, minimization can also proceed on a given set of Sr binary trees and for each tree only one V2V C code is considered which is obtained by the Huffman algorithm. As an example, V2V codes are designed for various LPB p probabilities by considering all binary trees T for which the number of leaf nodes L is less than or equal to a given maximum Lm. In Figure 16, the relative rate increase p (p, C (p)) = R (p, C (p)) / N (p) is plotted on the LPB probability p for selected maximum table sizes Lm . The rate increase p (p) can normally be reduced by allowing larger table sizes. For higher LPB probabilities, a small table size L of 8 to 16 codewords is usually sufficient to keep the rate increment p (p) reasonably small, but for smaller LPB probabilities (for example, p <0.1) , larger table sizes L are required.

En las secciones previas, se consideró la discretización de probabilidad óptimo suponiendo códigos óptimos y el diseño de código para probabilidades LPB fijas. Pero dado que, en general, no se puede conseguir el límite de entropía con códigos V2V reales de tamaños de tabla limitados, debe considerarse el diseño de código y la partición del intervalo de probabilidad LPB (0, 0,5] conjuntamente para la obtención de un diseño de código entrópico optimizado.In the previous sections, optimal probability discretization assuming optimal codes and code design for fixed LPB probabilities was considered. But since, in general, the entropy limit cannot be achieved with actual V2V codes of limited table sizes, the code design and partitioning of the LPB probability interval (0, 0.5) must be considered together to obtain of an optimized entropic code design.

Para un intervalo dado /k = (p*, pk+1], un código Ck de un conjunto Sc dado es un código c : óptimo si minimiza la P 1 R(p,C*) f (p) dp For a given interval / k = (p *, pk + 1], a code Ck of a given set Sc is a code c: optimal if you minimize the P 1 R ( p, C * ) f (p) dp

tasa esperada R = p* para el intervalo dado.expected rate R = p * for the given interval.

c : arg m e in S c P p * +1 R(p,Ck) f ( V C p) dp c : arg m e in S c P p * +1 R ( p, C k) f ( VC p) dp

(B19)(B19)

Para diseños prácticos, la minimización de la integral en la ecuación B19 puede simplificarse, con un impacto For practical designs, minimizing the integral in equation B19 can be simplified, with an impact

mínimo en la eficiencia de codificación, determinando primero una probabilidad representativa óptima p'k para el minimum in coding efficiency, first determining an optimal representative probability p'k for the

intervalo /* de acuerdo con la ecuación B10 y eligiendo a continuación el código Ck óptimo del conjunto dado Sc interval / * according to equation B10 and then choosing the optimal Ck code from the given set Sc

para la probabilidad representativa p'k de acuerdo con la ecuación B18.for the representative probability p'k according to equation B18.

Pueden deducirse bordes de intervalo óptimos p*, con k = 1,K , K-1, dado el conjunto de códigos C*, con k = 0,K , K-1 , minimizando la tasa global esperada Optimal interval edges p * can be deduced , with k = 1, K, K-1, given the set of codes C *, with k = 0, K, K-1, minimizing the expected global rate

K-1 í pk *1 K -1 í pk * 1

X JR(P,Ck) f (p) dp XJ R ( P, Ck ) f (p) dp

R = R({pk}, {Ck}) = k ^p (B20) R = R ( {pk}, {Ck}) = k ^ p (B20)

8 R 8 R

Establecer las primeras derivadas con respecto a los bordes de intervalos iguales a cero; SPk = 0, para k = 1,K , K-1, produceSet the first derivatives with respect to the edges of intervals equal to zero; SP k = 0, for k = 1, K, K-1, produces

Pk = pk con R(Pk, Ck-1 ) = R(Pk, Ck) (B21) Pk = pk with R ( Pk, Ck-1) = R ( Pk, Ck) (B21)

De modo similar que para la ecuación B13, se puede mostrar que Pk es siempre una solución óptima, pero dependiendo de la distribución de probabilidad /(p) pueden existir soluciones óptimas adicionales. Por ello, un borde *Similarly for equation B13, it can be shown that Pk is always an optimal solution, but depending on the probability distribution / (p) there may be additional optimal solutions. Therefore, an edge *

de intervalo óptimo pk entre dos intervalos Ik-1 e Ik con códigos asociados Ck-1 y Ck dados, respectivamente, es el punto de intersección de las funciones R(p, Ck-1) y R(p, Ck).The optimal interval pk between two intervals Ik-1 and Ik with associated codes Ck-1 and Ck given, respectively, is the point of intersection of the functions R (p, Ck-1) and R (p, Ck).

En consecuencia, puede usarse el siguiente algoritmo interactivo para deducir conjuntamente la partición del intervalo de probabilidad y los códigos asociados dado el número K de intervalos de probabilidad, el conjunto de códigos Sc posibles y la distribución de probabilidad /(p), con p e (0, 0,5].Consequently, the following interactive algorithm can be used to jointly deduce the probability interval partition and associated codes given the number K of probability intervals, the set of possible Sc codes, and the probability distribution / (p), with pe ( 0, 0.5].

Algoritmo 2:Algorithm 2:

1) Deducir las fronteras iniciales de intervalo de probabilidad pk, con k = 0,K, K, usando el algoritmo 1 especificado en la sección 31) Deduce the initial bounds of the probability interval pk, with k = 0, K, K, using algorithm 1 specified in section 3

2) Deducir las representaciones pik para los intervalos de probabilidad Ik, con k = 0,K, K-1, de acuerdo con la ecuación B102) Derive the representations pik for the probability intervals Ik, with k = 0, K, K-1, according to equation B10

3) Deducir los códigos Ck e Sc para las representaciones de intervalo pik, con k = 0,K, K-1, de acuerdo con la ecuación B183) Derive the codes Ck and Sc for the representations of interval pik, with k = 0, K, K-1, according to equation B18

4) Actualizar los bordes de intervalo pk, con k = 1,K,K-1, de acuerdo con la ecuación B214) Update the interval edges pk, with k = 1, K, K-1, according to equation B21

5) Repetir las tres etapas previas hasta convergencia5) Repeat the three previous stages until convergence

Las etapas 2 y 3 en el algoritmo 2 podrían sustituirse también por una deducción directa de los códigos Ck e Sc, con k = 0,K, K-1, basándose en los bordes del intervalo pk, con k = 0, K, K, de acuerdo con la ecuación B19. Y, como se menciona en la sección 4.1, la minimización en la etapa 3 puede proseguir también sobre un conjunto dado de árboles binarios St donde para cada árbol binario T solo se considera un código V2V Ck obtenido mediante el algoritmo de Huffman.Steps 2 and 3 in algorithm 2 could also be replaced by a direct deduction of the codes Ck and Sc, with k = 0, K, K-1, based on the edges of the interval pk, with k = 0, K, K , according to equation B19. And, as mentioned in section 4.1, minimization in step 3 can also proceed on a given set of binary trees S t where for each binary tree T only one V2V Ck code obtained by the Huffman algorithm is considered.

Como un ejemplo, se deduce conjuntamente la partición en K = 12 intervalos de probabilidad y códigos V2V correspondientes usando el algoritmo 2. Para ello, la minimización en la etapa 3 del algoritmo se sustituyó por una minimización equivalente sobre un conjunto dado de árboles binarios Sr donde el código evaluado C para cada árbol T se obtuvo mediante el algoritmo de Huffman. Consideramos T árboles con un número máximo de Lm = 65 nodos de hoja y por ello C códigos con hasta 65 entradas de tabla. Todos los árboles binarios T con hasta 16 nodos de hoja se han evaluado en la minimización; para árboles con más de 16 nodos de hoja, se empleó una búsqueda subóptima dados los mejores resultados para los árboles con un número más pequeño de nodos de hoja.As an example, the partition at K = 12 probability intervals and corresponding V2V codes are derived together using algorithm 2. To do this, minimization in step 3 of the algorithm was replaced by equivalent minimization on a given set of binary trees Sr where the evaluated code C for each T tree was obtained using the Huffman algorithm. We consider T trees with a maximum number of Lm = 65 leaf nodes and therefore C codes with up to 65 table entries. All T binary trees with up to 16 leaf nodes have been evaluated in minimization; For trees with more than 16 leaf nodes, a suboptimal search was used given the best results for trees with a smaller number of leaf nodes.

En la Figura 17, el incremento esperado de tasa con relación al límite de entropía AR(p) = R(p) - H(p) para el diseño de código de ejemplo se representa sobre la probabilidad LPB p. Como comparación, también se representa dentro del diagrama el incremento de tasa AR esperado para la discretización del intervalo de probabilidad teóricamente óptimo (tal como se desarrolla en la sección 3) y la discretización de probabilidad teóricamente óptima con la restricción adicional pik-1 = 0,5. Puede verse que la discretización del intervalo de probabilidad conjunta y el diseño del código V2V conduce a un desplazamiento de los bordes del intervalo (los bordes del intervalo pk, con k = 1, K, K-1, vienen dados por el máximo local de las curvas AR(p)). El incremento de tasa global esperado relativo con In Figure 17, the expected rate increase relative to the entropy limit AR (p) = R (p) - H ( p) for the sample code design is plotted on the LPB p probability. For comparison, the expected AR rate increase for the theoretically optimal probability interval discretization (as discussed in section 3) and the theoretically optimal probability discretization with the additional constraint pik-1 = 0 are also plotted within the diagram. ,5. It can be seen that the discretization of the joint probability interval and the design of the V2V code leads to a displacement of the edges of the interval (the edges of the interval pk, with k = 1, K, K-1, are given by the local maximum of the curves AR (p)). The relative expected global rate increase with

relación al límite de entropía para el ejemplo del diseño con códigos V2V reales es p = 0,24 %, cuando se asume una distribución de probabilidad uniforme /(p). Los incrementos de tasa relativos correspondientes para la discretización de intervalo de probabilidad teóricamente óptimo y la discretización de probabilidad teóricamente ratio to the entropy limit for the design example with real V2V codes is p = 0.24%, when assuming a uniform probability distribution / (p). The corresponding relative rate increments for theoretically optimal probability interval discretization and theoretically probability discretization

óptima con la restricción adicional pik-1 = 0,5 son p = 0,12 % y p = 0,13 %, respectivamente.optimal with the additional constraint pik-1 = 0.5 are p = 0.12% and p = 0.13%, respectively.

La finalización de la palabra de código puede realizarse como sigue. Cuando se codifica una secuencia finita de símbolos {sq,K, sw-1}, cada uno de los K. codificadores binarios procesa una secuencia finita de binarios de c c The finalization of the code word can be done as follows. When encoding a finite sequence of symbols {sq, K, sw-1}, each of the K. binary encoders processes a finite sequence of binaries of DC

codificación bk = { 0 , K, b^_x }k, con k = 0,K, K-1. Y se ha asegurado que; para cada uno de los K codificadores bc bc encoding bk = { 0, K, b ^ _x } k, with k = 0, K, K-1. And it has been ensured that; for each of the K encoders bc bc

binarios, todos los binarios de codificación de la secuencia k = { 0 , K, b^_i }k puedan reconstruirse dada la palabra de código o secuencia de palabras de código Ck( b kc ).binaries, all encoding binaries of sequence k = {0, K, b ^ _i} k can be reconstructed given the code word or code word sequence Ck ( b k c ).

Cuando se emplea codificación aritmética, la palabra de código aritmética para la secuencia de binarios de codificación ha de finalizarse en una forma, en la que todos los binarios de codificación puedan decodificarse dada la palabra de código. Para los códigos V2V descritos anteriormente, los binarios al final de la secuencia b kc pueden no representar una secuencia de binarios que esté asociada con una palabra de código. En un caso de este tipo, puede escribirse cualquier palabra de código que contenga el resto de la secuencia de binarios como prefijo. La sobrecarga puede minimizarse, si se elige la palabra de código correspondiente (o una de esas palabras de código) que tenga la longitud mínima. En el lado del decodificador, se descartan los binarios leídos adicionalmente al final de la secuencia de binarios, que pueden identificarse dada la sintaxis del flujo de bits y esquemas de conversión a binario.When arithmetic encoding is used, the arithmetic codeword for the encoding binary sequence has to be finalized in a way, in which all the encoding binaries can be decoded given the codeword. For the V2V codes described above, the binaries at the end of the sequence b k c may not represent a sequence of binaries that is associated with a code word. In such a case, any code word that contains the rest of the binary sequence can be written as a prefix. The overhead can be minimized by choosing the corresponding code word (or one of those code words) that has the minimum length. On the decoder side, binaries read in addition to the end of the binary sequence are discarded, which can be identified given the bitstream syntax and binary conversion schemes.

Se presenta a continuación un diseño de código simple de ejemplo. Con finalidades de ilustración, se considera el ejemplo simple de una fuente {s} con tres letras y probabilidades asociadas fijas de ps(aa) = 0,7, ps(a-i) = 0,18, y Ps(a2) = 0,12. El árbol de elección ternaria correspondiente puede convertirse en un árbol binario completo como se muestra en la Fig. 18.Below is a simple example code layout. For illustration purposes, consider the simple example of a {s} font with three letters and fixed associated probabilities of ps ( aa) = 0.7, ps (ai) = 0.18, and Ps (a2) = 0, 12. The corresponding ternary choice tree can be converted to a complete binary tree as shown in Fig. 18.

Una conversión a binario para el árbol binario completo en la Fig. 18 se da en la Tabla 5. El símbolo ternario pmf ps se convierte en dos pmfs binarios pb0 = (0,7, 0,3) y pb1 = (0,6, 0,4). Para cada símbolo s en el flujo de bits, está presente el binario bü. Cuando bü es igual a 0, también está presente b1. Obsérvese que la conversión a binario dada en la Tabla 2 es idéntica a un código de Huffman de letra simple óptimo para la fuente s.A conversion to binary for the full binary tree in Fig. 18 is given in Table 5. The ternary symbol pmf ps becomes two binary pmfs pb 0 = (0.7, 0.3) and pb 1 = (0 , 6, 0.4). For each symbol s in the bitstream, the bü binary is present. When bü equals 0, b1 is also present. Note that the conversion to binary given in Table 2 is identical to an optimal single-letter Huffman code for font s.

Tabla 5: Conversión a binario de una fuente de tres letras. Las probabilidades LPB plpb son 0,3 para el primer in ri 4 r l n in riTable 5: Conversion to binary of a three letter font. The LPB plpb probabilities are 0.3 for the first in ri 4 rln in ri

Figure imgf000040_0001
Figure imgf000040_0001

La entropía para la fuente s esThe entropy for source s is

H(0,7, 0,18, 0,12) = H(0,7, 0,3) 0,3 H(0,6, 0,4) = 1,1726 bit/símbolo (B22)H (0.7, 0.18, 0.12) = H (0.7, 0.3) 0.3 H (0.6, 0.4) = 1.1726 bit / symbol (B22)

La longitud media de la palabra de código del código Huffman de letra única viene dado comoThe average length of the single letter Huffman code word is given as

M -1M -1

1l p ^Hc1l p ^ Hc

lHC = ,=° = 1, 3 bits/símbolo (B23) correspondiente a una redundancia de phc = 0,1274 bit/símbolo o 10,87 % de sobrecarga de tasa esperada. lHC =, = ° = 1, 3 bits / symbol (B23) corresponding to a redundancy of phc = 0.1274 bit / symbol or 10.87% expected rate overhead.

Para el ejemplo de conversión a binario particular con pmfs fijas, los binarios b0 y b1 ya representan codificación de binarios, dado que para ambos binarios el valor LPB bf PB es igual a 0. La distribución f(s) de las probabilidades LPB es discreta, con /(p) = 0 excepto para p = 0,3 y p = 0,4. En consecuencia, la discretización de probabilidad óptima conduce a K = 2 intervalos con las representaciones p« = 0,3 y pn = 0,4. El borde del intervalo p1 ente estos intervalos puede elegirse arbitrariamente en [0,3, 0,4).For the example of conversion to particular binary with fixed pmfs, binaries b0 and b1 already represent binary encoding, since for both binaries the LPB bf PB value is equal to 0. The distribution f (s) of the LPB probabilities is discrete , with / (p) = 0 except for p = 0.3 and p = 0.4. Consequently, the optimal probability discretization leads to K = 2 intervals with the representations p «= 0.3 and pn = 0.4. The edge of the interval p1 between these intervals can be arbitrarily chosen in [0.3, 0.4).

Para la codificación de la fuente, la secuencia de símbolos fuente se convierte a binario en una secuencia de binarios. El binario b0 se transmite para cada símbolo fuente. El binario b1 solo se transmite cuando b0 = 0. Los binarios b0 y b1 se codifican por separado con probabilidades LPB constantes de p« = 0,3 y bn = 0,4, respectivamente.For source encoding, the source symbol sequence is converted to binary into a binary sequence. The b0 binary is transmitted for each source symbol. The binary b1 is only transmitted when b0 = 0. The binary b0 and b1 are encoded separately with constant LPB probabilities of p «= 0.3 and bn = 0.4, respectively.

Una codificación eficiente de un alfabeto binario con probabilidad fija puede conseguirse simplemente mapeando un V2V. Ejemplos de mapeados para V2V con pequeñas tablas de codificación para las probabilidades LPB plpb = 0,3 y plpb = 0,4 se dan en la Tabla 6 y la Tabla 7, respectivamente. El mapeado V2V para plpb = 0,3 produce una redundancia de 0,0069 bit/binario o 0,788 %. Para la probabilidad LPB de plpb = 0,4, la redundancia es 0,0053 bit/binario o 0,548 %. Efficient coding of a fixed probability binary alphabet can be achieved simply by mapping a V2V. Examples of mapping for V2V with small coding tables for the LPB probabilities plpb = 0.3 and plpb = 0.4 are given in Table 6 and Table 7, respectively. V2V mapping for plpb = 0.3 produces a redundancy of 0.0069 bit / binary or 0.788%. For the LPB probability of plpb = 0.4, the redundancy is 0.0053 bit / binary or 0.548%.

Tabla 6 : Árbol y códigos de binario para una probabilidad LPB de plpb = 0,3. La redundancia de este código es 0,788Table 6: Tree and binary codes for an LPB probability of plpb = 0.3. The redundancy of this code is 0,788

%%

Figure imgf000041_0001
Figure imgf000041_0001

Tabla 7: Árbol y códigos de binario para una probabilidad LPB de Plpb = 0,4. La redundancia de este código es 0,548Table 7: Tree and binary codes for an LPB probability of Plpb = 0.4. The redundancy of this code is 0.548

%%

Figure imgf000041_0002
Figure imgf000041_0002

La tasa esperada global incurrida por el nuevo método de codificación esThe overall expected rate incurred by the new coding method is

£ nc = £ bi + 03 ■ £ b£ nc = £ bi + 03 ■ £ b

= 1,181 bit/símbolo (B24)= 1,181 bit / symbol (B24)

La redundancia global es del 0,73 % con relación al límite de entropía, lo que representa una mejora significativa en comparación con el código de Huffman de letra única.The global redundancy is 0.73% relative to the entropy limit, which represents a significant improvement compared to the Huffman single letter code.

Se podría argumentar que podría obtenerse una mejora de eficiencia de codificación similar mediante la creación de un código de longitud de serie. Para el ejemplo anterior, podemos construir un código de longitud de serie para el símbolo más probable considerando las series de hasta dos símbolos. Cada uno de los eventos {a0a0, aüai, aüa2, ai, a2} se asociaría con una la palabra de código separada. Dicho código produce la redundancia de 1,34% con relación al límite de entropía. Realmente, los códigos V2V pueden considerarse como una generalización de los códigos de longitud de serie para símbolos binarios (el código V2V en la Tabla 3 representa efectivamente un código de longitud de serie). Para un alfabeto de símbolos único con probabilidades fijas, puede conseguirse una eficiencia de codificación similar que para el enfoque presentado creando un código que mapee un número variable de símbolos fuente a palabras de código de longitud variable. La ventaja principal del enfoque presentado es su flexibilidad en el mapeado de secuencias de símbolos fuente arbitrarias con estimaciones de probabilidad fija o adaptativa a un número pequeño de codificadores binarios simples que funcionan con probabilidades LPB fijas. Se considera a continuación cómo conseguir una capacidad de decodificación única.It could be argued that a similar encoding efficiency improvement could be obtained by creating a serial length code. For the example above, we can construct a series length code for the most likely symbol by considering the series of up to two symbols. Each of the events {a0a0, aüai, aüa2, ai, a2} would be associated with a separate codeword. This code produces the redundancy of 1.34% in relation to the entropy limit. Actually, V2V codes can be considered as a generalization of the serial length codes for binary symbols (the V2V code in Table 3 effectively represents a serial length code). For a single symbol alphabet with fixed probabilities, coding efficiency similar to that of the presented approach can be achieved by creating a code that maps a variable number of source symbols to code words of variable length. The main advantage of the presented approach is its flexibility in mapping arbitrary source symbol sequences with fixed or adaptive probability estimates to a small number of simple binary coders that operate with fixed LPB probabilities. How to achieve unique decoding capability is considered below.

Con el esquema de codificación entrópico presentado, la codificación de una secuencia de símbolos fuente s = {s0,K,sw-1} consiste en las siguientes tres etapas básicas.With the entropy encoding scheme presented, the encoding of a source symbol sequence s = {s0, K, sw-1} consists of the following three basic steps.

conversión a binario del símbolo b = {bü,K,bs-1} = Yb(s) que conducen la secuencia de binarios b = {b0,K,bB-1} conversión de la secuencia de binarios en una secuencia de binarios de codificación bc = { b 0 c , K, b 8 c -1} = Yc(b) bc codificación entrópica binaria de la secuencia de binarios de codificación b c = { b 0 c K, B-1} usando discretización del intervalo de probabilidad y K codificadores binarios fijosconversion to binary of the symbol b = {bü, K, bs-1} = Yb ( s) that drive the binary sequence b = {b0, K, bB-1} conversion of the binary sequence into a binary sequence of encoding bc = { b 0 c , K, b 8 c -1} = Yc (b) bc binary entropic encoding of the sequence of encoding binaries b c = { b 0 c K, B-1} using discretization of the range of probability and K fixed binary encoders

La secuencia de símbolos s = {Sü,K,sw-1} puede decodificarse únicamente, si la secuencia de binarios de codificación bc = { b 0 c , K, bc 8-1} puede decodificarse únicamente y los mapeados Yb y Yc pueden invertirse.The symbol sequence s = {Sü, K, sw-1} can be decoded only, if the sequence of encoding binaries bc = { b 0 c , K, bc 8-1} can be decoded only and the Yb and Yc maps can reverse.

Notificando Ye el mapeado del codificador de una secuencia de uno o más binarios de codificación b c = { bc 0 , K} sobre una secuencia de una o más palabras de código c(bc) = {c0,...} Ye reporting the encoder mapping of a sequence of one or more encoding binaries b c = { bc 0, K} over a sequence of one or more codewords c ( b c) = {c0, ...}

c(bc) = Ye(bc) (B25) Para una capacidad de decodificación única de una secuencia de binarios de codificación bc dada la secuencia de palabras de código c(bc), el mapeado del codificador Ye debe tener la propiedad de que se asigna una única palabra de código c(bc) a cada posible secuencia de binarios de codificación bc: c (bc) = Ye ( b c) (B25) For a unique decoding capability of a bc- encoding binary sequence given the sequence of c ( bc) codewords , the Ye encoder mapping should have the property that a single c ( b c) codeword is assigned to every possible sequence of bc encoding binaries :

Figure imgf000042_0001
Figure imgf000042_0001

Esta propiedad se satisface siempre que se usan códigos aritméticos o códigos de prefijo. Se satisface particularmente para los códigos V2V descritos en la sección 4.1 (incluyendo la finalización de la palabra de código descrita en la sección 4.3), dado que los códigos V2V representan códigos de prefijo para números variables de binarios.This property is satisfied whenever arithmetic codes or prefix codes are used. It is particularly suited for V2V codes described in section 4.1 (including the completion of the codeword described in section 4.3), since V2V codes represent prefix codes for variable numbers of binaries.

Sin embargo, en el enfoque de codificación entrópica presentado, la secuencia de binarios de codificación bc se particiona en K subsecuencias b kc , con k = 0,...,K-1,However, in the entropic coding approach presented, the bc coding binary sequence is partitioned into K subsequences b k c , with k = 0, ..., K-1,

bb 0 c bc c 0 c bc c

{ K, bK-1}= Yp(bc) (B27){K, bK-1} = Yp (bc) (B27)

y se asigna a cada una de las subsecuencias b kc , una secuencia de palabras de código ck( b kc ) que usa un mapeado de codificador y k particular. En consecuencia, la condición de capacidad de decodificación única ha de extenderse. Una secuencia de binarios de codificación bc es decodificable únicamente dadas K secuencias de palabras de código ck( b kc ), con k = 0,K,K-1, si cada subsecuencia de binarios de codificación bc k es únicamente decodificable dada la palabra de código ck( b kc ) correspondiente y la regla de partición Ye es conocida para el decodificador. La regla de partición Ye viene dada por la discretización del intervalo de probabilidad LPB {Ik} y las bc and each of the subsequences b k c is assigned a sequence of code words ck ( b k c ) using a particular yk encoder mapping. Accordingly, the single decoding capability condition has to be extended. A sequence of bc encoding binaries is decodable only given K codeword sequences ck ( b k c ), with k = 0, K, K-1, if each subsequence of bc k encoding binaries is uniquely decodable given the word of corresponding ck ( b k c ) code and partition rule Ye is known to the decoder. The partition rule Ye is given by the discretization of the probability interval LPB {Ik} and the bc

probabilidades LPB HLPB que se asocian con los binarios de codificación 1 , con j = 0,K, B-1. Por ello, la discretización del intervalo de probabilidad LPB {Ik} ha de conocerse en el lado del decodificador y la probabilidad bc LPB HLPB probabilities that are associated with encoding binaries 1 , with j = 0, K, B-1. Therefore, the discretization of the probability interval LPB {Ik} has to be known on the decoder side and the probability bc

LPB Plpb para cada binario de codificación bj , con j = 0,K, p -1, ha de deducirse de la misma manera en el lado del codificador y del decodificador.LPB Plpb for each bj encoding binary, with j = 0, K, p -1, has to be deduced in the same way on the encoder and decoder side.

Para el mapeado Yc de una secuencia de binarios en una secuencia de binarios de codificación c, cada único bj, con j = 0,K, B-1, se convierte mediante el mapeado binario j = c j j LPB . En el lado del decodificador, la secuencia de binarios puede deducirse mediante los mapeados binariosFor Yc mapping of a binary sequence into a c-encoding binary sequence, each unique bj, with j = 0, K, B-1, is converted by binary mapping j = c jj LPB . On the decoder side, the sequence of binaries can be deduced by binary mapping

bj = (yc ) > ; ) = bc © bjp (B28) bj = ( yc )>; ) = bc © bjp (B28)

con j = 0,K, B-1. Si el valor LPB bl para cada binario bj se deduce de la misma manera en el lado del codificador que el del decodificador, estos mapeados (yc r 1 representan los inversos de los mapeados del codificador yc correspondientes y por ellowith j = 0, K, B-1. If the LPB value bl for each binary bj is deduced in the same way on the encoder side as that of the decoder, these mappings ( yc r 1 represent the inverses of the corresponding yc encoder mappings and therefore

b°¡ © bLPB — bj © bLPB © bLPB _ bj © 0 =b (B29) b ° ¡ © bLPB - bj © bLPB © bLPB _ bj © 0 = b (B29)

y por ello, la conversión Yb de una secuencia de binarios b en una secuencia de binarios de codificación bc es invertible.and therefore, the conversion Yb of a sequence of binaries b into a sequence of encoding binaries bc is invertible.

Finalmente, se investiga la capacidad de inversión de la conversión a binario b= Yb(s) mediante la que cada símbolo s, con i = 0,K, N-1, se mapea sobre una secuencia de binario = Yb(s' ) . Un símbolo puede decodificarse únicamente dada la correspondiente secuencia de binario t í si el mapeado de conversión a binario Yb asigna una b j q* Finally, the inversion capacity of the conversion to binary b = Yb (s) is investigated by means of which each symbol s, with i = 0, K, N-1, is mapped on a binary sequence = Yb ( s' ). A symbol can be decoded only given the corresponding binary sequence t í if the binary conversion mapping Yb assigns a b j q *

secuencia de binario m diferente a cada letra m del alfabeto Ai para el símbolo s. Sin embargo, esta condición no es suficiente, dado que la partición de la secuencia de binarios b = {bo, K, bB-1} en secuencias de binario t í que corresponden a los símbolos Si, con i = 0, K, N-1, no es conocida para el decodificador. Una condición suficiente se b j q* binary sequence m different from each letter m of alphabet Ai for symbol s. However, this condition is not sufficient, since the partition of the binary sequence b = {bo, K, bB-1} into binary sequences t í that correspond to the symbols Si, with i = 0, K, N -1, is not known to the decoder. A sufficient condition is b j q *

da cuando para cada símbolo s, las secuencias de binario m que se asocian con las letras m del alfabeto Ai correspondiente forman un código de prefijo y los mapeados de conversión a binario y'h para cada símbolo s, con i = 0, K, N-1, son conocidos en el lado del decodificador.gives when for each symbol s, the binary sequences m that are associated with the letters m of the corresponding alphabet Ai form a prefix code and the binary conversion maps y'h for each symbol s, with i = 0, K, N-1, are known on the decoder side.

Las condiciones de capacidad de decodificación única para el enfoque de codificación entrópico presentado pueden resumirse como sigue:The unique decoding capability conditions for the presented entropic encoding approach can be summarized as follows:

• los mapeados de conversión a binario Yb representan códigos de prefijo y son conocidos para el decodificador (en el orden de codificación de símbolos)Yb binary conversion mappings represent prefix codes and are known to the decoder (in symbol encoding order)

b j pj b j pj

• los modelos de probabilidad ( LPB , rLPB ) para todos los binarios bj se deducen en la misma forma en el lado del codificador como el del decodificador• the probability models ( LPB , rLPB ) for all bj binaries are deduced in the same way on the encoder side as that of the decoder

• la partición del intervalo de probabilidad LPB (0, 0,5] en K intervalos Ik, con k = 0, K, K-1, es conocida para el decodificador• the partition of the probability interval LPB (0, 0.5] in K intervals Ik, with k = 0, K, K-1, is known to the decoder

• el mapeado Y ' ck para cada intervalo de probabilidad Ik, con k = 0, K, K-1, representa un código únicamente decodificable• the mapping Y 'c k for each probability interval Ik, with k = 0, K, K-1, represents a uniquely decodable code

A continuación, se describen ejemplos del diseño global del codificador y decodificador con más detalle. Nos concentraremos en esquemas de codificación, en los que los modelos de probabilidad {bLPB, Plpb} para los binarios se estiman directamente en el lado del codificador y del decodificador y los K codificadores binarios usan mapeados V2V descritos anteriormente. Cada símbolo fuente s se deberá asociar con una categoría de símbolos cs, que determina el tipo de símbolo incluyendo su rango de valores. El orden de los símbolos y las categorías de símbolos asociadas deberán darse por la sintaxis, que se supone que es conocida en el lado del codificador y del decodificador.Examples of the overall design of the encoder and decoder are described in more detail below. We will focus on encoding schemes, in which the {bLPB, P lpb } probability models for binaries are estimated directly on the encoder and decoder side and the K binary encoders use V2V mappings described above. Each source symbol s shall be associated with a symbol category cs, which determines the type of symbol including its range of values. The order of symbols and associated symbol categories should be given by the syntax, which is assumed to be known on the encoder and decoder side.

El diagrama de bloques para un ejemplo de diseño de codificador PIPE y de decodificador PIPE se ilustra en la Figura 19. En el lado del codificador, los símbolos s con categorías de símbolos Cs asociadas se alimentan en el The block diagram for an example PIPE encoder and PIPE decoder design is illustrated in Figure 19. On the encoder side, symbols s with associated symbol categories Cs are fed into the

conversor a binario, que convierte cada símbolo s en una secuencia de binarios bs = Y ' b°s (s). converter to binary, which converts each symbol s into a sequence of binaries bs = Y 'b ° s (s).

El esquema de conversión a binario Y ' b Cs usado se determina basándose en la categoría de símbolos Cs. Además, el conversor a binario asocia cada binario b a una secuencia de binarios, con una indicación Cb del modelo de probabilidad, que específica el modelo de probabilidad que se usa para la codificación del binario b. La indicación Cb del modelo de probabilidad puede deducirse basándose en la categoría del símbolo Cs, el número de binario del binario actual en el interior de la secuencia s de binarios, y/o los valores de binarios y símbolos ya codificados.The binary conversion scheme Y 'b Cs is determined based on the symbol category Cs. In addition, the binary converter associates each binary b with a sequence of binaries, with an indication Cb of the probability model, which specifies the probability model used for encoding binary b. The indication Cb of the probability model can be derived based on the symbol category Cs, the binary number of the current binary within the sequence binary s, and / or the values of binaries and symbols already encoded.

El estimador de probabilidad y asignador mantiene múltiples modelos de probabilidad, que se caracterizan por pares de valores {bLPB, plpb}. Recibe binarios b e indicaciones Cb del modelo de probabilidad del conversor a binario, y envía el valor LPB bLPB y la probabilidad LPB plpb del modelo de probabilidad indicado a la parte que deduce el binario de codificación y al cuantificador de probabilidad, respectivamente. Posteriormente, se actualiza el modelo de probabilidad {bLPB, plpb} correspondiente usando el valor del binario b recibido.The probability estimator and allocator maintains multiple probability models, which are characterized by pairs of values {bLPB, p lpb }. It receives binaries b and indications Cb from the probability model of the converter to binary, and sends the value LPB bLPB and the probability LPB p lpb of the indicated probability model to the part that deduces the encoding binary and the probability quantizer, respectively. Subsequently, the corresponding probability model {bLPB, p lpb } is updated using the received binary b value.

La parte que deduce el binario recibe binarios b y valores de LPB bLPB asociados del conversor a binario y el estimador de probabilidad y asignador, respectivamente, y envía binarios de codificación bc, que se deducen mediante bc = b® bLPB, al cuantificador de probabilidad. El cuantificador de probabilidad envía cada binario de codificación bc a uno de los K codificadores binarios. Contiene información acerca de la cuantificación {Ik} del intervalo de probabilidad LPB. La probabilidad LPB plpb, que se asocia con un binario de codificación bc y se recibe desde el estimador de probabilidad y asignador, se compara con los bordes del intervalo {pk} y el índice del intervalo de probabilidad k, para el que se deduce plpb e Ik. A continuación, se envía el binario de codificación bc al codificador binario asociado.The part that deduces the binary receives binaries b and associated LPB bLPB values from the binary converter and the probability estimator and allocator, respectively, and sends bc encoding binaries , which are deduced by bc = b® bLPB, to the probability quantizer . The probability quantizer sends each bc encoding binary to one of the K binary encoders. Contains information about the quantization {Ik} of the LPB probability interval. The LPB probability p lpb , which is associated with a bc encoding binary and received from the probability estimator and allocator, is compared to the edges of the interval {pk} and the index of the probability interval k, for which it is deduced plpb and Ik. The bc encoding binary is then sent to the associated binary encoder.

Cada uno de los K codificadores binarios consiste en una memoria intermedia de binario y un codificador de binario. Cada memoria intermedia de binario recibe binarios de codificación bc desde el cuantificador de probabilidad y los almacena en el orden de codificación. El codificador de binario implementa un mapeado V2V particular y compara la secuencia de binarios en la memoria intermedia de binario con las secuencias de binario que se asocian con palabras de código. Si la secuencia de binario en la memoria intermedia de binario es igual a una de aquellas secuencias de binario, el codificador de binario elimina la secuencia de binario {bc} de la memoria intermedia de binario y escribe la palabra de código asociada ({bc}) en el flujo de palabras de código correspondiente. Al final del proceso de codificación para una secuencia de símbolos, para todos los codificadores binarios para los que las memorias intermedias de binario están vacías, se escribe una palabra de código de finalización tal como se describe en la sección 4.3.Each of the K binary encoders consists of a binary buffer and a binary encoder. Each binary buffer receives bc encoding binaries from the probability quantizer and stores them in the encoding order. The binary encoder implements a particular V2V mapping and compares the sequence of binaries in the binary buffer with the binary sequences that are associated with codewords. If the binary sequence in the binary buffer equals one of those binary sequences, the binary encoder removes the binary sequence {bc} from the binary buffer and writes the associated codeword ({bc} ) in the corresponding codeword stream. At the end of the encoding process for a symbol sequence, for all binary encoders for which the binary buffers are empty, a completion codeword is written as described in section 4.3.

Los K flujos de palabras de código resultantes pueden transmitirse por separado, empaquetarse o almacenarse, o pueden intercalarse (compárese con la sección 6.2 ) con la finalidad de transmisión o almacenamiento. The resulting K codeword streams can be transmitted separately, packaged or stored, or can be interleaved (compare section 6.2) for the purpose of transmission or storage.

En el lado del decodificador, cada uno de los K decodificadores binarios que consiste en un decodificador de binario y una memoria intermedia de binario recibe un flujo de palabras de código. El decodificador de binario lee las palabras de código ({bc}) desde el flujo de palabras de código e inserta la secuencia de binario asociada {bc} en el orden de codificación, en la memoria intermedia de binario.On the decoder side, each of the K binary decoders consisting of a binary decoder and a binary buffer receives a stream of code words. The binary decoder reads the codewords ({bc}) from the codeword stream and inserts the associated binary sequence {bc} in the encoding order, into the binary buffer.

La decodificación de la secuencia de símbolos se acciona por la sintaxis subyacente. Se envían solicitudes para un símbolo s junto con la categoría del símbolo cs al conversor a binario. El conversor a binario convierte estas solicitudes de símbolo en solicitudes de binarios. Una solicitud de un binario se asocia con una indicación Cb del modelo de probabilidad, que se deduce de la misma manera que en el codificador, y se envía al estimador de probabilidad y asignador. El estimador de probabilidad y asignador funciona de manera similar a su contraparte en el lado del codificador. Basándose en la indicación Cb del modelo de probabilidad, identifica un modelo de probabilidad y envía su valor LPB bLPB y probabilidad LPB plpb a la parte que deduce el binario y al cuantificador de probabilidad, respectivamente.Decoding the symbol sequence is triggered by the underlying syntax. Requests for an s symbol along with the category of the cs symbol are sent to the binary converter. The converter to binary converts these token requests into binary requests. A request for a binary is associated with an indication Cb of the probability model, which is derived in the same way as in the encoder, and is sent to the probability estimator and allocator. The probability estimator and allocator works similarly to its counterpart on the encoder side. Based on the Cb indication of the probability model, it identifies a probability model and sends its LPB bLPB value and LPB probability p lpb to the part that deduces the binary and to the probability quantizer, respectively.

El cuantificador de probabilidad determina uno de los K decodificadores binarios basándose en la probabilidad LPB Plpb, de la misma manera que el codificador binario lo determina en el lado del codificador, elimina el primer binario de codificación bc en el orden de codificación, de la memoria intermedia de binario correspondiente, y lo envía a la parte que deduce el binario. La parte que deduce el binario recibe los binarios bc de codificación y valores LPB bLPB asociados del cuantificador de probabilidad y estimador de probabilidad y asignador, respectivamente, y determina los valores de binario b = bc® bLPB. Como respuesta final a la solicitud de binario enviada por el conversor a binario, la parte que deduce el binario envía el valor de binario decodificado b al conversor a binario y al estimador de probabilidad y asignador.The probability quantizer determines one of the K binary decoders based on the probability LPB P lpb , in the same way that the binary encoder determines it on the encoder side, it removes the first encoding binary bc in the encoding order, from the corresponding binary buffer, and sends it to the part that deduces the binary. The part that deduces the binary receives the bc encoding binaries and associated LPB bLPB values from the probability quantizer and probability estimator and allocator, respectively, and determines the binary values b = bc® bLPB . As a final response to the binary request sent by the binary converter, the binary-deducing party sends the decoded binary value b to the binary converter and the probability estimator and allocator.

En el estimador de probabilidad y asignador, el valor del binario decodificado b se usa para actualizar el modelo de probabilidad {bLPB, Plpb}, que se eligió mediante el valor cb asociado, de la misma manera que en el lado del codificador. Finalmente, el conversor a binario añade el binario b recibido a la secuencia de binarios s que ya se ha recibido para una solicitud de símbolo y compara esta secuencia de binarios s con las secuencias de binarios que se In the probability estimator and allocator, the value of the decoded binary b is used to update the probability model {bLPB, P lpb }, which was chosen using the associated cb value, in the same way as on the encoder side. Finally, the binary converter adds the received binary b to the sequence of binaries s that has already been received for a symbol request and compares this sequence of binaries s with the binary sequences that are

asocian con valores del símbol yCs o por el esquema de conversión a binario 1 b . Si la secuencia de binario s coincide con una de esas secuencias de binario, el símbolo decodificado s correspondiente se produce como salida como respuesta final a la solicitud de símbolo. En caso contrario, el conversor a binario envía solicitudes de binario adicionales hasta que se decodifica el símbolo s.associated with symbol values yCs or by the binary conversion scheme 1 b . If the binary sequence s matches one of those binary sequences, the corresponding decoded symbol s is output as a final response to the symbol request. Otherwise, the binary converter sends additional binary requests until the symbol s is decoded.

La decodificación de una secuencia de símbolos se finaliza si no se reciben más solicitudes de símbolos adicionales, que se accionan por la sintaxis. Los binarios de codificación bc que puedan estar contenidos en las memorias intermedias de binario al final del proceso de decodificación entrópica (como resultado de las palabras de código de finalización) se descartan.Decoding of a symbol sequence is terminated if no further requests for additional symbols are received, which are triggered by the syntax. Any bc- encoding binaries that may be contained in the binary buffers at the end of the entropic decoding process (as a result of the completion codewords) are discarded.

Después de haber descrito ciertas realizaciones para los codificadores PIPE y decodificadores PIPE en las Figs. 1 y 2 con respecto a las Figs. 3 a 13 y habiendo proporcionado una base matemática con relación a la codificación PIPE en general con relación a las Figs. 14 a 19, se describen realizaciones en más detalle para los aparatos de codificación y decodificación entrópica, con relación a las Figs. 20 a 24. Las siguientes realizaciones de las Figs. 22 a 24 intercalan entre sí no solo flujos de bits codificados PIPE, sino que intercalan el flujo de bits VLC y los flujos de bits codificados PIPE conjuntamente. En comparación con los mismos, las realizaciones para codificadores PIPE y decodificadores PIPE con intercalado de flujos de bits codificados PIPE, en concreto las realizaciones de las Figs. 7 a 13, simplemente proporcionan un intercalado separado de los flujos de bits codificados PIPE. Como ya se ha mencionado anteriormente, incluso estas realizaciones pueden servir como base para conseguir un flujo de bits completamente intercalado mediante el uso de otro par de intercalador/desintercalador 134 y 228, respectivamente (véanse las Figs. 1 y 2), tal como, por ejemplo, mediante el uso del intercalador de flujos de bits tal como se muestra en las Figs. 5 y 6. Sin embargo, las realizaciones descritas a continuación realizan el intercalado de una vez tanto en el flujo de bits VLC como en los flujos de bits codificados PIPE con el uso, en otras palabras, de un intercalador/desintercalador en una etapa 128 y 230, respectivamente.After having described certain embodiments for the PIPE encoders and PIPE decoders in Figs. 1 and 2 with respect to Figs. 3 to 13 and having provided a mathematical basis in relation to PIPE coding in general in relation to Figs. 14 to 19, embodiments are described in more detail for entropic encoding and decoding apparatus, relative to Figs. 20-24. The following embodiments of Figs. 22 to 24 interleave with each other not only PIPE encoded bitstreams, but they interleave the VLC bitstream and the PIPE encoded bitstreams together. Compared thereto, the embodiments for PIPE encoders and PIPE decoders with PIPE encoded bitstream interleaving, in particular the embodiments of Figs. 7 to 13 simply provide separate interleaving of the PIPE encoded bitstreams. As already mentioned above, even these embodiments can serve as the basis for achieving a fully interleaved bitstream by using another interleaver / deinterleaver pair 134 and 228, respectively (see Figs. 1 and 2), such as, for example, by using the bitstream interleaver as shown in Figs. 5 and 6. However, the embodiments described below perform interleaving at once in both the VLC bitstream and the PIPE encoded bitstreams with the use, in other words, of an interleaver / deinterleaver in one step 128 and 230, respectively.

Antes de describir en detalle las realizaciones donde se intercalan símbolos codificados VLC y PIPE dentro de un flujo de bits, para conseguir un compromiso más adecuado entre la complejidad y la eficiencia de codificación, se describe una estructura básica de los mismos sin intercalado con respecto a las Figs. 20 y 21.Before describing in detail the embodiments where VLC and PIPE encoded symbols are interleaved within a bitstream, in order to achieve a more adequate compromise between complexity and encoding efficiency, a basic structure thereof is described without interleaving with respect to Figs. 20 and 21.

La estructura del aparato de codificación entrópica de la Fig. 1a se muestra en la Fig. 20. El aparato de codificación entrópica convierte un flujo de símbolos fuente 1 a, que corresponden a la combinación de símbolos fuente codificados VLC y codificados PIPE de las Figs. 1 y 2, concretamente 106 y 218, respectivamente, en un conjunto de dos o más flujos de bits parciales 12 , 12 a, correspondiendo el flujo de bits 12 a a los flujos de bits 112 y 206 de las Figs. 1 y 2.The structure of the entropy coding apparatus of Fig. 1a is shown in Fig. 20. The entropic coding apparatus converts a stream of source symbols 1 to, corresponding to the combination of VLC encoded and PIPE encoded source symbols of Figs. . 1 and 2, specifically 106 and 218, respectively, in a set of two or more partial bit streams 12, 12 a, bit stream 12 corresponding to bit streams 112 and 206 of Figs. 1 and 2.

Como ya se ha indicado anteriormente, cada símbolo fuente 1a puede tener asociado con él una indicación que específica si el símbolo fuente está codificando usando códigos VLC estándar dentro del codificador VLC 22a, que se corresponde con el codificador VLC 102 en la Fig. 1, o si el símbolo fuente se ha de codificar con un concepto de codificación PIPE. Como ya se ha descrito anteriormente con respecto a las Figs. 1 y 2, esta indicación no puede transmitirse explícitamente al lado de decodificación. Por el contrario, la indicación asociada puede proceder del tipo o categoría del mismo símbolo fuente.As already indicated, each source symbol 1a may have associated with it an indication that specifies whether the source symbol is encoding using standard VLC codes within VLC encoder 22a, which corresponds to VLC encoder 102 in Fig. 1, or whether the source symbol is to be encoded with a PIPE encoding concept. As already described above with respect to Figs. 1 and 2, this indication cannot be explicitly transmitted to the decoding side. Rather, the associated indication may come from the type or category of the same source symbol.

Los símbolos 1b codificados VLC se codifican con códigos VLC estándar, que a su vez, pueden depender de la categoría de símbolos recientemente mencionada o tipo de símbolo usando un codificador VLC 22a. Las palabras de código 11a correspondientes se escriben en un flujo de bits parcial 12a diferente. Los símbolos 1 de código no VLC se codifican usando codificación PIPE como se ha descrito anteriormente con respecto a las Figs. 1 y 3, por ejemplo, con lo que se obtienen múltiples flujos de bits parciales 12. Algunos de los símbolos fuente 1a pueden haberse convertido a binario ya en una forma en la que consiste la conversión a binario en dos partes ya anteriormente mencionada con respecto a la Fig. 1a. Una de estas partes puede codificarse con el enfoque PIPE y escribirse en los flujos de bits parciales 12 correspondientes. La otra parte de la secuencia de binario puede codificarse con los códigos VLC estándar y escribirse en el flujo de bits parcial 12a correspondiente.VLC encoded symbols 1b are encoded with standard VLC codes, which in turn may depend on the recently mentioned symbol category or symbol type using a VLC encoder 22a. The corresponding code words 11a are written in a different partial bitstream 12a. Non-VLC code symbols 1 are encoded using PIPE encoding as described above with respect to Figs. 1 and 3, for example, whereby multiple partial bit streams 12 are obtained. Some of the source symbols 1a may have already been converted to binary in a manner consisting of the two-part binary conversion already mentioned above with respect to to Fig. 1a. One of these parts can be encoded with the PIPE approach and written to the corresponding partial bitstreams 12. The other part of the binary sequence can be encoded with the standard VLC codes and written to the corresponding partial bitstream 12a.

El aparato de decodificación entrópica básico que se ajusta a la realización de la Fig. 20 se muestra en la Fig. 21. El decodificador realiza básicamente las operaciones inversas del codificador de la Fig. 20, de modo que la secuencia previamente codificada de símbolos fuente 27, 27a se decodifica a partir de un conjunto de dos o más flujos de bits parciales (24, 24a). El decodificador incluye dos flujos de proceso diferentes: un flujo para las solicitudes de datos, que replica el flujo de datos del codificador, y un flujo de datos, que representa la inversa del flujo de datos del codificador. En la ilustración de la Fig. 21, las flechas discontinuas representan el flujo de solicitudes de datos, mientras que las flechas continuas representan el flujo de datos. Los bloques de construcción del decodificador replican básicamente los bloques de construcción del codificador, pero implementan las operaciones inversas.The basic entropic decoding apparatus conforming to the embodiment of Fig. 20 is shown in Fig. 21. The decoder basically performs the reverse operations of the encoder of Fig. 20, so that the previously encoded sequence of source symbols 27, 27a is decoded from a set of two or more partial bit streams (24, 24a). The decoder includes two different process streams: a stream for data requests, which replicates the encoder's data stream, and a data stream, which represents the inverse of the encoder's data stream. In the illustration in Fig. 21, the dashed arrows represent the flow of data requests, while the solid arrows represent the flow of data. The decoder building blocks basically replicate the encoder building blocks, but implement the inverse operations.

En una realización preferente de la invención, cada solicitud de símbolo 13a se asocia con una indicación que específica si el símbolo fuente se codifica usando códigos VLC estándar o con el concepto de codificación PIPE. Como ya se ha mencionado anteriormente con respecto a la Fig. 20, esta indicación puede proceder de las reglas de análisis o la sintaxis de los elementos de sintaxis representados por el mismo símbolo fuente. Por ejemplo, con respecto a las Figs. 1 y 2, se ha descrito que diferentes tipos de elementos de sintaxis pueden asociarse con diferentes esquemas de codificación, concretamente codificación VLC o codificación PIPE. Lo mismo se puede aplicar para diferentes partes de conversiones a binario, o más generalmente, otras simbolizaciones de los elementos de sintaxis. Si un símbolo se codifica por VLC, la solicitud se pasa al decodificador VLC 22a y se lee una palabra de código VLC 23a desde un flujo de bits parcial 24a distinto. Se produce la salida del símbolo de decodificación 27a correspondiente. Si un símbolo se codifica con PIPE, el símbolo 27 se decodifica a partir de un conjunto de flujos de bits 24 parciales tal como se ha descrito anteriormente con respecto a la Fig. 4, por ejemplo. En otra realización preferente de la invención, algunos de los símbolos fuente se convierten a binario en una forma tal que la conversión a binario consiste en dos partes. Una de estas partes se codifica con el enfoque PIPE y se decodifica correspondientemente a partir de los flujos de bits parciales 24 asociados. Y la otra parte de la secuencia de binarios se codifica con códigos VLC estándar y se decodifica con un decodificador VLC 22a que lee las palabras de código 23a correspondientes a partir de un flujo de bits parcial 24a distinto.In a preferred embodiment of the invention, each symbol request 13a is associated with an indication that specifies whether the source symbol is encoded using standard VLC codes or with the concept of PIPE encoding. As already mentioned above with respect to Fig. 20, this indication may come from parsing rules or syntax of syntax elements represented by the same source symbol. For example, with respect to Figs. 1 and 2, it has been described that different types of syntax elements can be associated with different encoding schemes, namely VLC encoding or PIPE encoding. The same can be applied for different parts of binary conversions, or more generally, other symbolizations of syntax elements. If a symbol is VLC encoded, the request is passed to VLC decoder 22a and a VLC code word 23a is read from a different partial bitstream 24a. The output of the corresponding decoding symbol 27a occurs. If a symbol is encoded with PIPE, the symbol 27 is decoded from a set of partial bitstreams 24 as described above with respect to Fig. 4, for example. In another preferred embodiment of the invention, some of the source symbols are converted to binary in such a way that the conversion to binary consists of two parts. One of these parts is encoded with the PIPE approach and correspondingly decoded from the associated partial bitstreams 24. And the other part of the binary sequence is encoded with standard VLC codes and decoded with a VLC decoder 22a that reads the corresponding code words 23a from a different partial bitstream 24a.

Transmisión y multiplexación de flujos de bits parciales (codificados VLC y codificados PIPE)Transmission and multiplexing of partial bit streams (VLC encoded and PIPE encoded)

Los flujos de bits parciales 12, 12a que se crean por el codificador pueden transmitirse por separado, o pueden multiplexarse en un único flujo de bits, o las palabras de código de los flujos de bits parciales pueden intercalarse en un único flujo de bits.The partial bit streams 12, 12a that are created by the encoder can be transmitted separately, or they can be multiplexed into a single bit stream, or the code words of the partial bit streams can be interleaved into a single bit stream.

En una realización preferente de la invención, cada flujo de bits parcial para una cantidad de datos se escribe en un paquete de datos. La cantidad de datos puede ser un conjunto arbitrario de símbolos fuente tal como una imagen fija, un campo o un fotograma de una secuencia de vídeo, un fragmento de una imagen fija, un fragmento de un campo o fotograma de una secuencia de vídeo, o una trama de muestras de audio, etc.In a preferred embodiment of the invention, each partial bitstream for a quantity of data is written to a data packet. The amount of data may be an arbitrary set of source symbols such as a still image, a field or a frame from a video sequence, a fragment from a still image, a fragment from a field or a frame from a video sequence, or a frame of audio samples, etc.

En otra realización preferente de la invención, dos o más de los flujos de bits 12, 12a parciales para una cantidad de datos o todos los flujos de bits parciales para una cantidad de datos se multiplexan en un paquete de datos. La estructura de un paquete de datos que contiene flujos de bits parciales multiplexados puede ser tal como se ilustra en la Fig. 5.In another preferred embodiment of the invention, two or more of the partial bit streams 12, 12a for a data amount or all the partial bit streams for a data amount are multiplexed into a data packet. The structure of a data packet containing multiplexed partial bit streams can be as illustrated in Fig. 5.

El paquete de datos 300 consiste en una cabecera y una partición para los datos de cada flujo de bits parcial (para la cantidad de datos considerada). La cabecera 301 del paquete de datos contiene indicaciones para la partición del (resto del) paquete de datos en segmentos de datos 302 del flujo de bits. Junto a las indicaciones para la partición, la cabecera puede contener información adicional. En una realización preferente de la invención, las indicaciones para la partición del paquete de datos son las localizaciones del comienzo de los segmentos de datos en unidades de bits o bytes o múltiplos de bits o múltiplos de bytes. En una realización preferente de la invención, las localizaciones del comienzo de los segmentos de datos se codifican como valores absolutos en la cabecera del paquete de datos, tanto con relación al comienzo del paquete de datos como con relación al final de la cabecera o con relación al comienzo del paquete de datos previo. En una realización preferente de la invención, las localizaciones del comienzo de los segmentos de datos se codifican diferencialmente, es decir, solamente se codifica la diferencia entre el comienzo real de un segmento de datos y una predicción para el comienzo del segmento de datos. La predicción puede deducirse basándose en información ya conocida o transmitida tal como el tamaño global del paquete de datos, el tamaño de la cabecera, el número de segmentos de datos en el paquete de datos, la localización del comienzo de los segmentos de datos precedentes. En una realización preferente de la invención, la localización del comienzo del primer paquete de datos no se codifica, sino deducirse basándose en el tamaño de la cabecera del paquete de datos. En el lado del decodificador, las indicaciones de partición transmitidas se usan para deducir el comienzo de los segmentos de datos. Los segmentos de datos se usan entonces como flujos de bits parciales 12 , 12 a y los datos contenidos en los segmentos de datos se alimentan al interior de los decodificadores de binario correspondientes y decodificadores VLC en orden secuencial.Data packet 300 consists of a header and a partition for the data of each partial bitstream (for the amount of data considered). The data packet header 301 contains indications for partitioning the (remainder) of the data packet into data segments 302 of the bit stream. Along with the directions for partitioning, the header may contain additional information. In a preferred embodiment of the invention, the indications for partitioning the data packet are the locations of the beginning of the data segments in units of bits or bytes or multiples of bits or multiples of bytes. In a preferred embodiment of the invention, the locations of the beginning of the data segments are encoded as absolute values in the header of the data packet, either relative to the start of the data packet or relative to the end of the header or relative to at the beginning of the previous data package. In a preferred embodiment of the invention, the locations of the beginning of the data segments are differentially encoded, that is, only the difference between the actual beginning of a data segment and a prediction for the beginning of the data segment is encoded. The prediction can be deduced based on already known or transmitted information such as the overall size of the data packet, the size of the header, the number of data segments in the data packet, the location of the beginning of the preceding data segments. In a preferred embodiment of the invention, the location of the beginning of the first data packet is not encoded, but is deduced based on the size of the header of the data packet. On the decoder side, the transmitted partition indications are used to deduce the beginning of the data segments. The data segments are then used as partial bitstreams 12, 12a, and the data contained in the data segments is fed into the corresponding binary decoders and VLC decoders in sequential order.

Intercalado de palabras de código (palabras de código VLC y PIPE)Codeword interleaving (VLC and PIPE codewords)

Para algunas aplicaciones, la multiplexación anteriormente descrita de los flujos de bits parciales (para una cantidad de símbolos fuente) en un paquete de datos puede tener las siguientes desventajas: por un lado, para pequeños paquetes de datos, el número de bits para la información secundaria que se requiere para señalización de la partición puede convertirse en significativo con relación a los datos reales en los flujos de bits parciales, lo que finalmente reduce la eficiencia de codificación. Por otro lado, el multiplexado puede no ser adecuado para aplicaciones que requieren un bajo retardo (por ejemplo, para aplicaciones de vídeoconferencia). Con la multiplexación descrita, el codificador no puede iniciar la transmisión de un paquete de datos antes de que se hayan creado completamente los flujos de bits parciales, dado que las localizaciones del inicio de las particiones no son conocidas antes. Adicionalmente, en general, el decodificador ha de esperar hasta que recibe el comienzo del último segmento de datos antes de que pueda comenzar la decodificación de un paquete de datos. Para aplicaciones tales como sistemas de vídeoconferencia, estos retardos pueden añadirse a un retardo global adicional del sistema de varias imágenes de vídeo (en particular, para tasas de bits que se aproximan a la tasa de bits de transmisión y para codificadores/decodificadores que requieran prácticamente el intervalo de tiempo entre dos imágenes para codificación/decodificación de una imagen), lo que es crítico para dichas aplicaciones. Para superar las desventajas para ciertas aplicaciones, el codificador de una realización preferente de la invención puede configurarse en una forma tal que las palabras de código que se generan por los dos o más codificadores de binario y el codificador VLC se intercalan en un único flujo de bits. El flujo de bits con las palabras de código intercaladas, puede enviarse directamente al decodificador (cuando se desprecia un pequeño retardo de la memoria intermedia, véase a continuación). En el lado del decodificador, los dos o más decodificadores de binario y el decodificador VLC leen las palabras de código directamente del flujo de bits en el orden de decodificación; la decodificación puede iniciarse con el primer bit recibido. Además, no se requiere ninguna información secundaria para señalización del multiplexado (o intercalado) de los flujos de bits parciales.For some applications, the above-described multiplexing of partial bit streams (for a number of source symbols) in a data packet may have the following disadvantages: on the one hand, for small data packets, the number of bits for the information Secondary that is required for partitioning signaling can become significant relative to the actual data in the partial bitstreams, ultimately reducing the encoding efficiency. On the other hand, multiplexing may not be suitable for applications that require low delay (for example, for video conferencing applications). With the described multiplexing, the encoder cannot initiate the transmission of a data packet before the partial bit streams have been fully created, since the locations of the partition start are not known before. Additionally, in general, the decoder has to wait until it receives the start of the last data segment before it can start decoding a data packet. For applications such as video conferencing systems, these delays can be added to an additional overall system delay of multiple video images (in particular, for bit rates approaching the transmission bit rate and for encoders / decoders that require virtually the time interval between two images for encoding / decoding an image), which is critical for such applications. To overcome the disadvantages for certain applications, the encoder of a preferred embodiment of the invention can be configured in such a way that the code words that are generated by the two or more binary encoders and the VLC encoder are interleaved in a single stream of bits. The bitstream with the interleaved codewords can be sent directly to the decoder (when a small buffer delay is neglected, see below). On the decoder side, the two or more binary decoders and the VLC decoder read the codewords directly from the bitstream in the decoding order; decoding can be started with the first bit received. Furthermore, no secondary information is required for signaling the multiplexing (or interleaving) of the partial bit streams.

La estructura básica de un codificador con intercalado de palabras de código se muestra en la Fig. 22. Los codificadores de binario 10 y el codificador VLC 10a no escriben las palabras de código directamente en los flujos de bits parciales, sino que se conectan con una única memoria intermedia de palabras de código 29, a partir de la que se escriben las palabras de código al flujo de bits 34 en orden de codificación. Los codificadores de binario 10 envían solicitudes de una o más entradas de palabras de código 28 a la memoria intermedia de palabras de código 29 y posteriormente envía las palabras de código 30 a la memoria intermedia 29, que se almacenan en las entradas de memoria intermedia reservadas. El codificador VLC 10a escribe directamente las palabras de código VLC 30a en la memoria intermedia de palabras de código 29. Se accede a palabras de código 31 (en general de longitud variable) de la memoria intermedia de palabras de código 29 mediante un escritor de palabras de código 32, que escribe los bits 33 correspondientes en el flujo de bits 34 producido. La memoria intermedia de palabras de código 29 funciona como una memoria primero en entrar primero en salir; las entradas de palabras de código que se reservan antes se escriben antes en el flujo de bits.The basic structure of an encoder with codeword interleaving is shown in Fig. 22. The binary encoders 10 and the VLC encoder 10a do not write the codewords directly into the partial bitstreams, but connect to a single codeword buffer 29, from which codewords are written to bitstream 34 in encoding order. Binary encoders 10 send requests for one or more codeword 28 entries to codeword buffer 29 and then send codewords 30 to buffer 29, which are stored in reserved buffer entries . The VLC encoder 10a directly writes the VLC codewords 30a into the codeword buffer 29. Codewords 31 (generally of variable length) from the codeword buffer 29 are accessed by a word writer. code 32, which writes the corresponding bits 33 into the produced bit stream 34. Codeword buffer 29 functions as a first-in-first-out memory; codeword entries that are reserved before are written to the bitstream earlier.

En una realización preferente de la invención, la memoria intermedia de palabras de código funciona como sigue. Si se envía un nuevo binario 7 a una memoria intermedia de binario 8 particular y el número de binarios ya almacenados en la memoria intermedia de binario es cero y no hay actualmente reservada ninguna palabra de código en la memoria intermedia de palabras de código para el codificador de binario que está conectado con la memoria intermedia de binario particular, el codificador de binario 10 conectado envía una solicitud a la memoria intermedia de palabras de código, mediante la que se reservan una o más entradas de palabras de código en la memoria intermedia de palabras de código 29 para el codificador de binario 10 particular. Las entradas de palabras 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 normalmente por el tamaño máximo de la palabra de código para el codificador de binario correspondiente. La siguiente palabra de código o las siguientes palabras de código que se producen por el codificador de binario (para el que se ha reservado la entrada de palabras de código o las entradas de palabras de código) 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 binario particular se llenan con palabras de código y se envía el siguiente binario a la memoria intermedia de binario que está conectada con el codificador de binario particular, se reservan una o más palabras de código nuevas en la memoria intermedia de palabras de código para el codificador de binario particular, etc. El codificador VLC 10a escribe directamente las palabras de código VLC 30a en la siguiente entrada libre de la memoria intermedia de palabras de código 29, es decir para el codificador VLC la reserva de palabras de código y la escritura de las palabras de código se realiza de una vez. La memoria intermedia de palabras de código 29 representa una memoria intermedia primero en entrar primero en salir en una cierta forma. Las entradas a la memoria intermedia se reservan en orden secuencial. Las palabras de código para las que se han reservado antes las entradas de memoria intermedia correspondientes se escriben antes en el flujo de bits. El escritor de palabras de código 32 comprueba el estado de la memoria intermedia de palabras de código 29, tanto continuamente como después de que se escriba una palabra de código 30 en la memoria intermedia de palabras de código 29. Si la primera entrada a la memoria intermedia contiene una palabra de código completa (es decir, la entrada de la memoria intermedia no está reservada, pero incluye una palabra de código), la correspondiente palabra de código 31 y la correspondiente entrada de la memoria intermedia se eliminan de la memoria intermedia de palabras de código 20 y los bits de la palabra de código 33 se escriben en el flujo de bits. Este proceso se repite hasta que la primera entrada de la memoria intermedia no contiene una palabra de código (es decir, está reservada o libre). Al final del proceso de decodificación, es decir, si se han procesado todos los símbolos fuente de la cantidad de datos considerada, la memoria intermedia de palabras de código debe purgarse. Para ese proceso de purga, se aplica lo siguiente para cada memoria intermedia de binario/codificador de binario como una primera etapa: si la memoria intermedia de binario no contienen binarios, se añade un binario con un valor particular o un valor arbitrario hasta que la secuencia de binario resultante representa una secuencia de binarios que está asociada con una palabra de código (como se ha indicado anteriormente, una forma preferida de añadir binarios es añadir dichos valores de binario que producen la palabra de código más corta posible - o una de ellas - que se asocia con una secuencia de binarios que contiene el contenido original de la memoria intermedia de binario como prefijo), entonces se escribe la palabra de código en la siguiente entrada de la memoria intermedia reservada para el codificador de binario correspondiente y se vacía (y la correspondiente) memoria intermedia de binario. Si se ha reservado más de una entrada de memoria intermedia para uno o más codificadores de binario, la memoria intermedia de palabras de código puede contener aún entradas de palabras de código reservadas. En ese caso, estas entradas de palabras de código se rellenan con palabras de código arbitrarias, pero válidas, para los codificadores de binario correspondientes. En una realización preferente de la invención, 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 (si hay múltiples). El codificador VLC no requiere ninguna finalización. Finalmente, todas las palabras de código restantes en la memoria intermedia de palabras de código se escriben en el flujo de bits.In a preferred embodiment of the invention, the codeword buffer functions as follows. If a new binary 7 is sent to a particular binary 8 buffer and the number of binaries already stored in the binary buffer is zero and no codeword is currently reserved in the codeword buffer for the encoder of binary that is connected to the particular binary buffer, the connected binary encoder 10 sends a request to the codeword buffer, whereby one or more codeword entries are reserved in the word buffer code 29 for the particular 10 binary encoder. Codeword entries can have a variable number of bits; an upper threshold for the number of bits in a buffer entry is normally given by the maximum codeword size for the encoder. corresponding binary. The next codeword or the following codewords that are produced by the binary encoder (for which codeword input or codeword entries have been reserved) are stored in the reserved input or entries of the codeword buffer. If all reserved buffer entries in the codeword buffer for a particular binary encoder are filled with codewords and the next binary is sent to the binary buffer that is connected to the particular binary encoder, one or more new codewords are reserved in the codeword buffer for the particular binary encoder, etc. The VLC encoder 10a writes the VLC codewords 30a directly to the next free input of the codeword buffer 29, i.e. for the VLC encoder the codeword reservation and the writing of the codewords is done once. Codeword buffer 29 represents a first-in-first-out buffer in a certain way. Entries to the buffer are reserved in sequential order. Codewords for which the corresponding buffer entries have been reserved before are written to the bitstream earlier. Codeword writer 32 checks the status of codeword buffer 29 both continuously and after codeword 30 is written to codeword buffer 29. If the first entry to memory buffer contains a complete codeword (i.e. the buffer entry is not reserved, but includes a codeword), the corresponding codeword 31 and the corresponding buffer entry are removed from the buffer of codewords 20 and codeword 33 bits are written to the bitstream. This process is repeated until the first buffer entry does not contain a codeword (that is, it is reserved or free). At the end of the decoding process, that is, if all source symbols of the considered amount of data have been processed, the codeword buffer should be purged. For that purge process, the following apply to each binary / binary encoder buffer as a first step: if the binary buffer does not contain binaries, a binary with a particular value or arbitrary value is added until the resulting binary sequence represents a sequence of binaries that is associated with a codeword (as noted above, a preferred way to add binaries is to add those binary values that produce the shortest possible codeword - or one of them - which is associated with a sequence of binaries containing the original content of the binary buffer as a prefix), then the codeword is written to the next reserved buffer entry for the corresponding binary encoder and flushed ( and the corresponding) binary buffer. If more than one buffer entry has been reserved for one or more binary encoders, the codeword buffer may still contain reserved codeword entries. In that case, these codeword entries are populated with arbitrary, but valid, codewords for the corresponding binary encoders. In a preferred embodiment of the invention, the shorter valid codeword or one of the shorter valid codewords (if there are multiple) is inserted. The VLC encoder does not require any completion. Finally, all the remaining codewords in the codeword buffer are written to the bitstream.

Se ilustran en la Fig. 23 dos ejemplos para el estado de la memoria intermedia de palabras de código. En el ejemplo (a), la memoria intermedia de palabras de código contiene 4 entradas que se llenan con una palabra de código (dos de ellas son entradas VLC) y 3 entradas reservadas. Además, se marca la siguiente entrada de la memoria intermedia libre. La primera entrada se llena con una palabra de código (es decir, el codificador de binario 2 justamente escribe una palabra de código en una entrada previamente reservada). En la siguiente etapa, esta palabra de código se eliminará de la memoria intermedia de palabras de código y se escribe en el flujo de bits. A continuación, la primera palabra de código reservada para el codificador de binario 3 es la primera entrada de memoria intermedia, pero esta entrada no puede eliminarse de la memoria intermedia de palabras de código, dado que solo está reservada, pero no se ha escrito ninguna palabra de código en esta entrada. En el ejemplo (b), la memoria intermedia de palabras de código contiene 4 entradas que se llenan con una palabra de código (una de ellas es una entrada de memoria intermedia VLC) y 4 entradas reservadas. La primera entrada se marca como reservada y por ello el escritor de palabras de código no puede escribir una palabra de código al flujo de bits. Aunque están contenidas 4 palabras de código en la memoria intermedia de palabras de código, el escritor de palabras de código ha de esperar hasta que se escribe la palabra de código en la primera entrada de memoria intermedia reservada para el codificador de binario 3. Obsérvese que las palabras de código deben escribirse en el orden en que se reservaron, para ser capaz de invertir el proceso en el lado del decodificador (véase a continuación). Y adicionalmente obsérvese que una entrada de memoria intermedia VLC está siempre completa, dado que la reserva y escritura de la palabra de código se realiza de una vez.Two examples for the status of the codeword buffer are illustrated in Fig. 23. In example (a), the codeword buffer contains 4 entries that are populated with a codeword (two of which are VLC entries) and 3 reserved entries. In addition, the next entry in the free buffer is marked. The first entry is populated with a code word (that is, binary encoder 2 just writes a code word to a previously reserved entry). In the next stage, this codeword will be removed from the codeword buffer and written to the bitstream. Then the first codeword reserved for binary encoder 3 is the first buffer entry, but this entry cannot be removed from the codeword buffer, as it is only reserved, but has not been written. code word in this entry. In example (b), the codeword buffer contains 4 entries that are populated with a codeword (one of which is a VLC buffer entry) and 4 reserved entries. The first entry is marked as reserved and therefore the codeword writer cannot write a codeword to the bit stream. Although 4 codewords are contained in the codeword buffer, the codeword writer has to wait until the codeword is written to the first buffer entry reserved for binary encoder 3. Note that codewords must be written in the order in which they were reserved, to be able to reverse the process on the decoder side (see below). And additionally note that a VLC buffer entry is always full, since the reservation and writing of the codeword is done at once.

La estructura básica de un decodificador con intercalado de palabras de código se muestra en la Fig. 24. Los decodificadores binario 22 y el decodificador VLC 2a no leen las palabras de código directamente de flujos de bits parciales separados, sino que se conectan a una memoria intermedia de bits 38, desde la que se leen las palabras de código 37, 37a en el orden de codificación. Debería observarse que no se requiere necesariamente la memoria intermedia de bits 38, dado que las palabras de código podrían leerse también directamente desde el flujo de bits. La memoria intermedia de bits 38 se incluye principalmente en la ilustración para separar claramente aspectos diferentes de la cadena de procesamiento. Los bits 39 del flujo de bits 40 con palabras de código intercaladas se insertan secuencialmente en la memoria intermedia de bits 38, que representa una memoria intermedia primero en entrar primero en salir. Si un decodificador de binario 22 particular recibe una solicitud de una o más secuencias de binario 35, el decodificador de binario 22 lee una o más palabras de código 37 de la memoria intermedia de bits 38 a través de la solicitud de bits 36. El decodificador puede decodificar instantáneamente los símbolos fuente. De modo similar, si el decodificador VLC 22a recibe una solicitud de un nuevo símbolo 19a lee la palabra de código VLC 37a correspondiente desde la memoria intermedia de bits 38 y devuelve el símbolo decodificado 27a. Obsérvese que el codificador (como se ha descrito anteriormente) debe asegurar mediante la operación en forma adecuada de la memoria intermedia de palabras de código que las palabras de código se escriben en el mismo orden al flujo de bits en el que se solicitan por los decodificadores de binario. En el decodificador, todo el proceso de decodificación se activa mediante solicitudes de símbolos fuente. Parámetros tales como el número de palabras de código que se reservan en el lado del codificador por un codificador de binario particular y el número de palabras de código que se leen por el decodificador de binario correspondiente deben ser los mismos.The basic structure of a codeword interleaving decoder is shown in Fig. 24. The binary decoders 22 and the VLC decoder 2a do not read the codewords directly from separate partial bit streams, but instead connect to a memory bit buffer 38, from which code words 37, 37a are read in the coding order. It should be noted that bit buffer 38 is not necessarily required, since codewords could also be read directly from the bit stream. Bit buffer 38 is mainly included in the illustration to clearly separate different aspects of the processing chain. Bits 39 of bit stream 40 with embedded codewords are They sequentially insert into bit buffer 38, which represents a first-in-first-out buffer. If a particular binary decoder 22 receives a request for one or more binary streams 35, binary decoder 22 reads one or more codewords 37 from bit buffer 38 through bit request 36. The decoder You can instantly decode the source symbols. Similarly, if VLC decoder 22a receives a request for a new symbol 19a it reads the corresponding VLC code word 37a from bit buffer 38 and returns the decoded symbol 27a. Note that the encoder (as described above) must ensure by properly operating the codeword buffer that the codewords are written in the same order to the bitstream in which they are requested by the decoders. binary. In the decoder, the entire decoding process is triggered by requests for source symbols. Parameters such as the number of codewords that are reserved on the encoder side by a particular binary encoder and the number of codewords that are read by the corresponding binary decoder must be the same.

Intercalado de palabras de código de longitud variable con restricciones de bajo retardoVariable length codeword interleaving with low delay constraints

El intercalado de palabras de código descrito no requiere que se envíe ninguna información de partición como información secundaria. Y dado que las palabras de código se intercalan en el flujo de bits, el retardo es en general pequeño. Sin embargo, no se garantiza que se obedezca a 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). Adicionalmente, el tamaño de la memoria intermedia requerido para memoria intermedia de palabras de código puede hacerse teóricamente muy grande. Cuando se considera el ejemplo de la Fig. 23(b), sería posible que no se envíen binarios adicionales a la memoria intermedia de binario 3 y por ello el codificador de binario 3 no enviará ninguna nueva palabra de código a la memoria intermedia de palabras de código hasta que se aplique el proceso de purgado al final del paquete de datos. Entonces todas las palabras de código para los codificadores de binario 1 y 2 tendrían que esperar hasta el final del paquete de datos, antes de puedan escribirse en el flujo de bits. Este inconveniente puede sortearse añadiendo un mecanismo adicional al proceso de codificación (y también al proceso de decodificación tal como se describe más adelante). El concepto básico de ese mecanismo adicional es que si una medida en relación al retardo o a una delimitación superior del retardo (véase a continuación) supera un umbral especificado, la primera entrada en la memoria intermedia reservada se llena mediante el purgado de la memoria intermedia de binario correspondiente (usando un mecanismo similar al del final del paquete de datos). Mediante dicho mecanismo, el número de entradas de memoria intermedia en espera se reduce hasta que la medida del retardo asociada sea menor que el umbral especificado. En el lado del decodificador, los binarios que se han insertado en el lado del codificador para obedecer a la restricción de retardo deben descartarse. Para este descarte de los binarios puede usarse básicamente el mismo mecanismo que en el lado del codificador.The described codeword collation does not require that any partition information be submitted as secondary information. And since the codewords are embedded in the bitstream, the delay is generally small. However, there is no guarantee that a particular delay constraint will be obeyed (for example specified by a maximum number of bits that are stored in the codeword buffer). Additionally, the buffer size required for codeword buffering can theoretically be made very large. When considering the example in Fig. 23 (b), it would be possible that no additional binaries are sent to the binary 3 buffer and therefore the binary 3 encoder will not send any new codeword to the word buffer code until the purge process is applied to the end of the data packet. So all the code words for binary encoders 1 and 2 would have to wait until the end of the data packet, before they can be written to the bitstream. This drawback can be overcome by adding an additional mechanism to the encoding process (and also to the decoding process as described below). The basic concept of this additional mechanism is that if a measure in relation to the delay or an upper limit of the delay (see below) exceeds a specified threshold, the first entry in the reserved buffer is filled by purging the buffer from corresponding binary (using a mechanism similar to the one at the end of the data packet). Using such a mechanism, the number of standby buffer entries is reduced until the associated delay measure is less than the specified threshold. On the decoder side, binaries that have been inserted on the encoder side to obey the delay constraint must be discarded. Basically the same mechanism can be used for this discard of the binaries as on the encoder side.

Después de haber descrito en detalle posibilidades para intercalado de los flujos de bits de codificación VLC y PIPE, a continuación, la descripción se enfoca de nuevo en los elementos de sintaxis ya mencionados anteriormente descompuestos en símbolos fuente tal como se ha mencionado con respecto a las Figs. 1b, 1c y 2b. Con finalidades de ilustración, la siguiente descripción asume que los elementos de sintaxis así descompuestos son niveles de coeficiente de transformada absoluta. Sin embargo, esto es solamente un ejemplo, y pueden manejarse de la misma manera otros tipos de elementos de sintaxis. En particular, a continuación se describe la codificación de niveles absolutos mediante la partición y el uso de diferentes códigos de entropía en codificadores de imagen y vídeo basados en bloques. After having described in detail possibilities for interleaving of the VLC and PIPE encoding bitstreams, the description now again focuses on the previously mentioned syntax elements decomposed into source symbols as mentioned with respect to the Figs. 1b, 1c and 2b. For purposes of illustration, the following description assumes that the syntax elements thus decomposed are absolute transform coefficient levels. However, this is only an example, and other types of syntax elements can be handled in the same way. In particular, the encoding of absolute levels by partitioning and using different entropy codes in block-based image and video encoders is described below.

Por ejemplo, las imágenes de la secuencia de vídeo se descomponen normalmente en bloques. Los bloques o los componentes de color de los bloques se predicen mediante o bien predicción de movimiento compensado o intra predicción. Los bloques pueden tener diferentes tamaños y pueden ser o bien cuadráticos o bien rectangulares. Todas las muestras de un bloque o un componente de color de bloque se predicen usando el mismo conjunto de parámetros de predicción, tales como índices de referencia (que identifican una imagen de referencia en el conjunto de imágenes ya codificadas), parámetros de movimiento (que especifican una medida para el movimiento de los bloques entre una imagen de referencia y la imagen actual), parámetros para la especificación del filtro de interpolación, modos de intra predicción, etc. Los parámetros de movimiento pueden representarse por vectores de desplazamiento con un componente horizontal y vertical o mediante parámetros de movimiento de orden superior tales como parámetros de movimiento afines que consisten en 6 componentes. Es posible también que se asocie más de un conjunto de parámetros de predicción (tales como índices de referencia y parámetros de movimiento) con un único bloque. En ese caso, para cada conjunto de parámetros de predicción, se genera una única señal de predicción intermedia para el bloque o el componente de color de un bloque, y la señal de predicción final se construye mediante una suma ponderada de las señales de predicción intermedias. Los parámetros de ponderación y potencialmente también un desplazamiento constante (que se añade a la suma ponderada) pueden ser o bien fijos para una imagen, o una imagen de referencia, o un conjunto de imágenes de referencia, o pueden incluirse en el conjunto de parámetros de predicción para el bloque correspondiente. De modo similar, las imágenes fijas también se descomponen frecuentemente en bloques, y los bloques se predicen por un método de intra predicción (que puede ser un método de intra predicción espacial o un método de intra predicción simple que predice el componente continuo de bloque). En el caso de una esquina, la señal de predicción puede ser también cero. For example, images in the video stream are typically broken down into blocks. Blocks or block color components are predicted by either compensated motion prediction or intra prediction. The blocks can have different sizes and can be either quadratic or rectangular. All samples of a block or a block color component are predicted using the same set of prediction parameters, such as reference indices (which identify a reference image in the set of already encoded images), motion parameters (which specify a measure for the movement of the blocks between a reference image and the current image), parameters for the specification of the interpolation filter, intra prediction modes, etc. Motion parameters can be represented by displacement vectors with a horizontal and vertical component or by higher order motion parameters such as cognate motion parameters consisting of 6 components. It is also possible that more than one set of prediction parameters (such as benchmarks and motion parameters) are associated with a single block. In that case, for each set of prediction parameters, a single intermediate prediction signal is generated for the block or the color component of a block, and the final prediction signal is constructed using a weighted sum of the intermediate prediction signals . The weighting parameters and potentially also a constant offset (which is added to the weighted sum) can be either fixed for an image, or a reference image, or a set of reference images, or can be included in the parameter set prediction for the corresponding block. Similarly, still images are also frequently broken down into blocks, and blocks are predicted by an intra-prediction method (which can be either a spatial intra-prediction method or a simple intra-prediction method that predicts the continuous block component) . In the case of a corner, the prediction signal can also be zero.

La diferencia entre los bloques originales o los componentes de color de los bloques originales y las señales de predicción correspondientes, que también se denominan como señales residuales, se transforman y cuantifican normalmente. Se aplica una transformada bidimensional a la señal residual y se cuantifican los coeficientes de transformada resultantes. Para esta codificación de transformada, los bloques o los componentes de color de los bloques, para los que se ha usado un conjunto particular de parámetros de predicción, pueden repartirse adicionalmente antes de la aplicación de la transformada. Los bloques de transformada pueden ser iguales o más pequeños que los bloques que se usan para predicción. Es posible también que un bloque de transformada incluya más de uno de los bloques que se usan para predicción. Diferentes bloques de transformada en una imagen fija o un fotograma de una secuencia de vídeo pueden tener diferentes tamaños y los bloques de transformada pueden representar bloques cuadráticos o rectangulares.The difference between the original blocks or the color components of the original blocks and the corresponding prediction signals, which are also called residual signals, are normally transformed and quantized. A two-dimensional transform is applied to the residual signal and the resulting transform coefficients are quantized. For this transform encoding, the blocks or the color components of the blocks, for which a particular set of prediction parameters has been used, may be further partitioned prior to the application of the transform. The transform blocks can be equal to or smaller than the blocks that are used for prediction. It is also possible that a transform block includes more than one of the blocks that are used for prediction. Different transform blocks in a still image or a frame in a video sequence can have different sizes, and the transform blocks can represent quadratic or rectangular blocks.

Todos estos parámetros de predicción y residuales pueden formar el flujo de elementos de sintaxis 138 y 226, respectivamente.All of these prediction and residual parameters can form the flow of syntax elements 138 and 226, respectively.

Los coeficientes de transformada cuantificados resultantes, también denominados como niveles de coeficiente de transformada, pueden transmitirse a continuación usando codificación entrópica mediante uno de los esquemas de codificación anteriores. Con este fin, puede mapearse un bloque de niveles de coeficiente de transformada sobre un vector (es decir, un conjunto ordenado) de valores de coeficiente de transformada usando un escaneado, donde pueden usarse diferentes escaneados para diferentes bloques. Frecuentemente se usa un escaneado en zigzag. Para bloques que contienen solo muestras de un campo de un fotograma entrelazado (estos bloques pueden ser bloques en campos codificados o bloques de campos en cuadros codificados), es común también usar un escaneado diferente diseñado específicamente para bloques de campos. Un posible esquema de codificación para la codificación de la secuencia ordenada resultante de coeficientes de transformada es codificación a nivel de serie. Normalmente, un gran número de niveles de coeficiente de transformada son cero, y un conjunto de niveles de coeficiente de transformada sucesivos que sean iguales a cero puede representarse eficientemente mediante la codificación del número de niveles de coeficiente de transformada sucesivos que son iguales a cero (la serie) por un elemento de sintaxis respectivo. Para los coeficientes de transformada restantes (no cero), el nivel real se codifica en la forma de elementos de sintaxis respectivos. Hay varias alternativas de códigos a nivel de serie. La serie antes de un coeficiente no cero y el nivel del coeficiente de transformada no cero pueden codificarse juntos usando un elemento de sintaxis único. Frecuentemente, se incluyen elementos de sintaxis especiales para el final del bloque, que se envía después del último coeficiente de transformada no cero. O es posible codificar primero el número de niveles de coeficiente de transformada no cero, y dependiendo de este número, se codifican los niveles y series. The resulting quantized transform coefficients, also referred to as transform coefficient levels, can then be transmitted using entropic encoding by one of the above encoding schemes. To this end, a block of transform coefficient levels can be mapped onto a vector (i.e., an ordered set) of transform coefficient values using one scan, where different scans can be used for different blocks. A zigzag scan is often used. For blocks containing only samples of a field from an interlaced frame (these blocks can be blocks in coded fields or blocks of fields in coded frames), it is also common to use a different scan designed specifically for field blocks. A possible encoding scheme for encoding the ordered sequence resulting from transform coefficients is encoding at the serial level. Typically, a large number of transform coefficient levels are zero, and a set of successive transform coefficient levels that are equal to zero can be efficiently represented by encoding the number of successive transform coefficient levels that are equal to zero ( the string) by a respective syntax element. For the remaining transform coefficients (non-zero), the actual level is encoded in the form of respective syntax elements. There are several code alternatives at the serial level. The string before a non-zero coefficient and the level of the non-zero transform coefficient can be coded together using a single syntax element. Frequently, special syntax elements are included for the end of the block, which is sent after the last non-zero transform coefficient. Or it is possible to code the number of non-zero transform coefficient levels first, and depending on this number, the levels and series are coded.

Se usa un enfoque en alguna forma diferente para la codificación entrópica CABAC altamente eficiente en H.264/AVC. En este caso, la codificación de los niveles de coeficiente de transformada se reparte en tres etapas. En la primera etapa, se transmite para cada bloque de transformada un elemento de sintaxis binario indicador_bloque_codificado, lo que señaliza si el bloque de transformada contiene niveles de coeficiente de transformada significativos (es decir, coeficientes de transformada que sean no cero). Si este elemento de sintaxis indica que están presentes elementos de coeficiente de transformada significativos, se codifica un mapa de significación con valor binario, que específica cuál de los niveles de coeficiente de transformada tiene valores no cero. Y a continuación, en un orden de escaneado inverso, se codifican los valores de los niveles de coeficiente de transformada no cero. El mapeado de significación se codifica en un flujo de elemento de sintaxis 138 como sigue. Para cada coeficiente en el orden de escaneado, se codifica un elemento de sintaxis binario indicador_coeficiente_significativo, que específica si el nivel de coeficiente de transformada correspondiente no es igual a cero. Si el binario del indicador_coeficiente_significativo es igual a uno, es decir, si existe un nivel de coeficiente de transformada no cero en esta posición de escaneado, se codifica un elemento de sintaxis binario adicional último_indicador_coeficiente_significativo. Este binario indica si el nivel de coeficiente de transformada significativo es el último nivel de coeficiente de transformada significativo dentro del bloque o si niveles de coeficiente de transformada significativos adicionales siguen en el orden de escaneado. Si último_indicador_coeficiente_significativo indica que no hay ningún coeficiente de transformada significativo adicional que siga, no se codifican elementos de sintaxis adicionales para la especificación del mapa de significación para el bloque. En la siguiente etapa, se codifican los valores de los niveles de coeficiente de transformada significativos, cuyas localizaciones dentro del bloque ya se han determinado por el mapa de significación. Los valores de los niveles de coeficiente de transformada significativo se codifican en orden de escaneado inverso mediante el uso de los siguientes tres elementos de sintaxis. El elemento de sintaxis binario coeficiente_absoluto_mayor_uno indica si el valor absoluto del nivel de coeficiente de transformada significativo es mayor que uno. Si el elemento de sintaxis binario coeficiente_absoluto_mayor_uno indica que el valor absoluto es mayor que uno, se envía un elemento de sintaxis adicional coeficiente_absoluto_nivel_menos_dos que específica el valor absoluto del nivel de coeficiente de transformada a menos dos. Esta es la clase de elementos de sintaxis cuyo procesamiento se realiza de acuerdo con la Fig. 1b, 1c y 2b en la siguiente realización. Finalmente, se codifica el elemento de sintaxis binario indicador_signo_coeficiente, que específica el signo del valor del coeficiente de transformada, para cada nivel de coeficiente de transformada significativo. Debería observarse de nuevo que los elementos de sintaxis que se refieren al mapa de significación se codifican en orden de escaneado, mientas que los elementos de sintaxis que se refieren a los valores actuales de los niveles de coeficientes de transformada se codifican en orden de escaneado inverso permitiendo el uso de modelos de contexto más adecuados. Es posible también que se use un patrón de escaneado adaptativo para el mapa de significación como en el primer modelo de prueba de H.265/HEVC. Otro concepto se usa para la codificación de los niveles de coeficiente de transformada absoluta para la transformada de bloques mayores de 4x4 en el primer modelo de prueba de H.265/HEVC. En caso de bloques de transformada mayores de 4x4, el bloque de transformada mayor se particiona en bloques de 4x4 y los bloques de 4x4 se codifican en el orden de escaneado mientras que se usa el orden de escaneado inverso para cada uno de los bloques 4x4.A somewhat different approach is used for highly efficient CABAC entropic encoding in H.264 / AVC. In this case, the coding of the transform coefficient levels is divided into three stages. In the first stage, a binary coded_key_indicator binary syntax element is transmitted for each transform block, signaling whether the transform block contains significant transform coefficient levels (i.e. transform coefficients that are non-zero). If this syntax element indicates that significant transform coefficient elements are present, a significance map is encoded with a binary value, which specifies which of the transform coefficient levels has non-zero values. And then, in an inverse scanning order, the values of the non-zero transform coefficient levels are encoded. The significance mapping is encoded in a syntax element stream 138 as follows. For each coefficient in the scanning order, a significant binary_coefficient_coding syntax element is encoded, which specifies if the corresponding transform coefficient level is not equal to zero. If the binary of the significant_coefficient_indicator is equal to one, that is, if a non-zero transform coefficient level exists at this scan position, an additional binary syntax element last_significant_coefficient_indicator is encoded. This binary indicates whether the significant transform coefficient level is the last significant transform coefficient level within the block or whether additional significant transform coefficient levels are still in the scanning order. If last_significant_coefficient_indicator indicates that there is no additional significant transform coefficient to follow, no additional syntax elements are encoded for the significance map specification for the block. In the next stage, the values of the significant transform coefficient levels, whose locations within the block have already been determined by the significance map, are coded. Values of the significant transform coefficient levels are encoded in reverse scan order using the following three syntax elements. The binary syntax element coefficient_absolute_major_one indicates whether the absolute value of the level of significant transform coefficient is greater than one. If the binary syntax element coefficient_absolute_higher_one indicates that the absolute value is greater than one, an additional syntax element coefficient_absolute_level_minus_two is sent specifying the absolute value of the transform coefficient level to minus two. This is the class of syntax elements whose processing is performed according to Fig. 1b, 1c and 2b in the following embodiment. Finally, the binary syntax element indicator_sign_coefficient, which specifies the sign of the transform coefficient value, is encoded for each significant transform coefficient level. It should be noted again that the syntax elements referring to the significance map are encoded in scan order, whereas the Syntax elements that refer to the current values of the transform coefficient levels are encoded in reverse scan order allowing the use of more appropriate context models. An adaptive scan pattern may also be used for the significance map as in the first H.265 / HEVC test model. Another concept is used for coding the absolute transform coefficient levels for the larger 4x4 block transform in the first H.265 / HEVC test model. In case of transform blocks larger than 4x4, the larger transform block is partitioned into 4x4 blocks and the 4x4 blocks are encoded in the scan order while the reverse scan order is used for each of the 4x4 blocks.

En la codificación entrópica CABAC en H.264/AVC, todos los elementos de sintaxis para los niveles de coeficiente de transformada se codifican usando una modelación de probabilidad binaria. El elemento de sintaxis no binario coeficiente_absoluto_nivel_menos_dos, por ejemplo, se convierte a binario primero, es decir, se mapea sobre una secuencia de decisiones binarias (binarios), y estos binarios se codifican secuencialmente. El elemento de sintaxis binaria indicador_coeficiente_significativo, último_indicador_coeficiente_significativo, coeficiente_absoluto_mayor_uno, e indicador_signo_coeficiente se codifican directamente. Cada binario codificado (que incluye los elementos de sintaxis binaria) se asocia con un contexto. Un contexto representa un modelo de probabilidad para una clase de binarios codificados. Una medida con relación a la probabilidad para uno de los dos posibles valores de binario se estima para cada contexto basándose en los valores de los binarios que ya se han codificado con el contexto correspondiente. Para varios binarios relativos a la codificación de transformada, el contexto que se usa para la codificación se selecciona basándose en elementos de sintaxis ya transmitidos o basándose en la posición dentro de un bloque.In CABAC entropic encoding in H.264 / AVC, all syntax elements for transform coefficient levels are encoded using binary probability modeling. The non-binary syntax element coefficient_absolute_level_less_two, for example, is converted to binary first, that is, mapped onto a sequence of binary (binary) decisions, and these binaries are encoded sequentially. The binary syntax element signifier_significant_coefficient, last_significant_coefficient_coefficient, major_one_absolute_coefficient, and coefficient_signal_ indicator is directly encoded. Each encoded binary (which includes the binary syntax elements) is associated with a context. A context represents a probability model for a class of encoded binaries. A measure of the probability for one of the two possible binary values is estimated for each context based on the values of the binaries that have already been encoded with the corresponding context. For various binaries related to transform encoding, the context used for encoding is selected based on already transmitted syntax elements or based on position within a block.

Después de la codificación del mapa de significación, los bloques se procesan en orden de escaneado inverso. Como se ha mencionado anteriormente, otro concepto se usa en el primer modelo de prueba de H.265/HEVC. Los bloques de transformada mayores de 4x4 se particionan en bloques de 4x4 y los bloques de 4x4 resultantes se procesan en orden de escaneado, mientras que los coeficientes de los bloques de 4x4 se codifican en orden de escaneado inverso. La siguiente descripción es válida para todos los bloques de 4x4 en el primer modelo de prueba de H.265/HEVC y en H.264/AVC y también para bloques 8x8 en H.264/AVC y esta descripción puede aplicarse también a la construcción del flujo de elementos de sintaxis 138 y 226, respectivamente.After encoding the significance map, the blocks are processed in reverse scanning order. As mentioned above, another concept is used in the first H.265 / HEVC test model. Transform blocks larger than 4x4 are partitioned into 4x4 blocks and the resulting 4x4 blocks are processed in scanning order, while the coefficients of 4x4 blocks are encoded in reverse scanning order. The following description is valid for all 4x4 blocks in the first test model of H.265 / HEVC and in H.264 / AVC and also for 8x8 blocks in H.264 / AVC and this description can also be applied to construction syntax element stream 138 and 226, respectively.

Si una posición de escaneado significativa, es decir, el coeficiente es diferente de cero, se transmite el elemento de sintaxis binaria coeficiente_absoluto_mayor_uno dentro del flujo 138. Inicialmente (dentro de un bloque), se selecciona el segundo modelo de contexto del conjunto de modelos de contexto correspondientes para el elemento de sintaxis coeficiente_absoluto_mayor_uno. Si el valor codificado de cualquier elemento de sintaxis coeficiente_absoluto_mayor_uno dentro del bloque es igual a uno (es decir, el coeficiente absoluto es mayor de 2 ), la modelación de contexto conmuta de vuelta al primer modelo de contexto del conjunto y usa este modelo de contexto hasta el final del bloque. En caso contrario (todos los valores codificados de coeficiente_absoluto_mayor_uno dentro del bloque son cero y los niveles de coeficiente absoluto correspondientes son iguales a uno), el modelo de contexto se elige dependiendo del número de elementos de sintaxis coeficiente_absoluto_mayor_uno iguales a cero que ya se han procesado en el escaneado inverso del bloque considerado. La selección del modelo de contexto para el elemento de sintaxis coeficiente_absoluto_mayor_uno puede resumirse por la ecuación siguiente, donde el índice modelo de contexto actual C,+1, se selecciona basándose en el índice del modelo de contexto previo C, y el valor del elemento de sintaxis previamente codificado coeficiente_absoluto_mayor_uno, que se representa por bint en la ecuación. Para el primer elemento de sintaxis coeficiente_absoluto_mayor_uno dentro del bloque, el índice del modelo de contexto se fija igual a C1 = 1.If a significant scan position, that is, the coefficient is non-zero, the binary syntax element greater_one_coefficient is transmitted within stream 138. Initially (within a block), the second context model is selected from the corresponding context for the syntax element coefficient_absolute_major_one. If the encoded value of any major_absolute_coefficient syntax element within the block equals one (that is, the absolute coefficient is greater than 2), context modeling switches back to the first context model in the set and uses this context model until the end of the block. Otherwise (all encoded values of absolute_coefficient_major_one within the block are zero and the corresponding absolute coefficient levels are equal to one), the context model is chosen depending on the number of syntax elements coefficient_absolute_major_one that have already been processed in the reverse scan of the considered block. The selection of the context model for the syntax element coefficient_major_one_one can be summarized by the following equation, where the current context model index C, + 1, is selected based on the index of the previous context model C, and the value of the element of previously coded syntax coefficient_absolute_major_one, which is represented by bint in the equation. For the first syntax element coefficient_major_one_one within the block, the index of the context model is set equal to C1 = 1.

Figure imgf000050_0001
Figure imgf000050_0001

El segundo elemento de sintaxis para codificación de los niveles de coeficiente de transformada absoluta, coeficiente_absoluto_nivel_menos_dos solo se codifica, cuando el elemento de sintaxis coeficiente_absoluto_mayor_uno para la misma posición de escaneado es igual a uno. El elemento de sintaxis no binaria coeficiente_absoluto_nivel_menos_dos se convierte a binario en una secuencia de binarios y para el primer binario de esta conversión a binario; se selecciona un índice de modelo de contexto tal como se describe a continuación. Los binarios restantes de la conversión a binario se codifican con contextos fijos. El contexto para el primer binario de la conversión a binario se selecciona como sigue. Para el primer elemento de sintaxis coeficiente_absoluto_nivel_menos_dos, se selecciona el primer modelo de contexto del conjunto de modelos de contexto para el primer binario del elemento de sintaxis coeficiente_absoluto_nivel_menos_dos, el índice del modelo de contexto correspondiente se fija igual a C1 = 0. Para cada primer binario adicional del elemento de sintaxis coeficiente_absoluto_nivel_menos_dos, la modelación de contexto conmuta al siguiente modelo de contexto en el conjunto, donde el número de modelos de contexto en el conjunto se limita 5. La selección del modelo de contexto puede expresarse por la fórmula siguiente, donde el índice de modelo de contexto actual Cr+1 se selecciona basándose en el índice de modelo de contexto previo C. The second syntax element for encoding the absolute transform coefficient levels, absolute_coefficient_level_less_two is only encoded, when the syntax element greater_one_absolute_coefficient is equal to one. The non-binary syntax element coefficient_absolute_level_less_two is converted to binary in a sequence of binaries and for the first binary of this conversion to binary; a context model index is selected as described below. The remaining binaries of the binary conversion are encoded with fixed contexts. The context for the first binary of the binary conversion is selected as follows. For the first syntax element coefficient_absolute_level_less_two, the first context model is selected from the set of context models for the first binary of the syntax element coefficient_absolute_level_legs_2, the index of the corresponding context model is set equal to C1 = 0. In addition to the syntax element coefficient_absolute_level_less_two, context modeling switches to the next context model in the set, where the number of context models in the set is limited 5. The selection of the context model can be expressed by the following formula, where the Current context model index Cr + 1 is selected based on the previous context model index C.

Cr+l(Cr) = min(Cr 1,4) Cr + l ( Cr) = min (Cr 1.4)

Como se ha mencionado anteriormente, para el primer elemento de sintaxis coeficiente_absoluto_permanece_menos_dos dentro de un bloque, el índice de modelo de contexto se fija igual a Cr = 0. Obsérvese que pueden definirse diferentes conjuntos de modelos de contexto para los elementos de sintaxis coeficiente_absoluto_mayor_uno y coeficiente_absoluto_permanece_menos_dos. Obsérvese también que para el primer modelo de prueba de H.265 /HEVC, los bloques de transformada mayores de 4x4 pueden particionarse en bloques de 4x4. Los bloques de 4x4 particionados pueden procesarse en orden de escaneado y para cada bloque de 4x4 particionado, puede deducirse un conjunto de contexto basándose en el número de coeficientes mayores que uno en el bloque de 4x4 previo. Para el primer bloque de 4x4 de un bloque de transformada mayor de 4x4 y para bloques de transformada de 4x4 de origen puede usarse un conjunto de contexto separado.As mentioned above, for the first syntax element coefficient_absolute_remains_less_two within a block, the context model index is set equal to Cr = 0. Note that different sets of context models can be defined for the syntax elements coefficient_absolute_majority_one and coefficient_absolute_maintain_two_ . Note also that for the first H.265 / HEVC test model, transform blocks larger than 4x4 can be partitioned into 4x4 blocks. Partitioned 4x4 blocks can be processed in scanning order and for each partitioned 4x4 block, a context set can be deduced based on the number of coefficients greater than one in the previous 4x4 block. For the first 4x4 block of a larger 4x4 transform block and for source 4x4 transform blocks, a separate context set can be used.

Esto es, en cualquier caso que se use en la siguiente descripción codificación basada en contexto para cualquiera de los símbolos fuente en los que coeficiente_absoluto_mayor_uno y coeficiente_absoluto_permanece_menos_dos se descomponen de acuerdo con las siguientes realizaciones, entonces esta deducción de contexto puede usarse por el asignador 114 y 212 y el codificador/decodificador VLC 102 y 202, por ejemplo.That is, in whatever case context-based encoding is used in the following description for any of the source symbols in which coefficient_absolute_major_one and coefficient_absolute_remains_minus_two are decomposed according to the following embodiments, then this context deduction may be used by allocator 114 and 212 and the VLC encoder / decoder 102 and 202, for example.

Para reducir la complejidad en términos de número de binarios procesados por CABAC o PIPE en comparación con las técnicas del estado de la técnica y también en términos de complejidad de cálculo o también para incrementar la eficiencia de codificación, la realización señalada a continuación describe un enfoque para la codificación de niveles absolutos mediante el uso de códigos de longitud variable diferentes para diferentes particiones 1401 a 1403 en codificadores y decodificadores de imagen y vídeo. Las realizaciones descritas a continuación pueden aplicarse, sin embargo, a cualquier clase de niveles absolutos para codificadores de imagen y vídeo, como diferencias del vector de movimiento o coeficientes del filtro de bucle adaptativo. Aunque la codificación de niveles de coeficiente de transformada se realiza como se describe a continuación, la codificación del mapa de significación puede permanecer como en el primer modelo de prueba de H.265/HEVC o como se ha descrito anteriormente, o la codificación del mapa de significación puede realizarse como en H.264/AVC o en otra forma.To reduce complexity in terms of number of binaries processed by CABAC or PIPE compared to prior art techniques and also in terms of computation complexity or also to increase coding efficiency, the embodiment outlined below describes an approach for encoding absolute levels by using different variable length codes for different partitions 1401 to 1403 in image and video encoders and decoders. The embodiments described below can, however, be applied to any kind of absolute levels for image and video encoders, such as motion vector differences or adaptive loop filter coefficients. Although the encoding of transform coefficient levels is performed as described below, the encoding of the significance map may remain as in the first H.265 / HEVC test model or as described above, or the encoding of the map of significance can be performed as in H.264 / AVC or otherwise.

Como se ha descrito anteriormente, la codificación de los niveles de transformada absoluta se realizan en múltiples particiones 1401-3. El esquema de codificación se ha ilustrado como ejemplo la Figura 1b con tres particiones 1401-3. Las delimitaciones 142 y 144 del esquema son variables dando como resultado tamaños de partición variables. El esquema de codificación se realiza como sigue.As described above, encoding of the absolute transform levels is performed on multiple 1401-3 partitions. The coding scheme is illustrated in Figure 1b with three 1401-3 partitions as an example. The delimitations 142 and 144 of the schema are variable resulting in variable partition sizes. The coding scheme is done as follows.

Se usa un primer código de entropía para codificar el primer componente o símbolo fuente, es decir el nivel de coeficiente de transformada absoluta (z) en caso igual es más pequeño que límite1, o límite1 si no es igual. Si el nivel de coeficiente de transformada absoluta es mayor que o igual a la delimitación límite1 de la primera partición 1401, que la delimitación límite1 (142) de la primera partición (1401) se resta del nivel de coeficiente de transformada absoluta y el valor resultante z' se codifica con un segundo código de entropía. Si el nivel del coeficiente de transformada absoluta restante z' es mayor que o igual a una delimitación límite2 -límite1 para la segunda partición 1402, entonces la delimitación límite2 -límite1 de la segunda partición se resta de nuevo del nivel de coeficiente de transformada absoluta z' y el valor resultante se codifica con un tercer código de entropía. Hablando en general, cuando se alcanza la delimitación de una partición, se usa el código de entropía para la siguiente partición en la delimitación para codificar el valor resultante de los niveles de coeficiente de transformada absoluta menos la delimitación de la partición correspondiente.A first entropy code is used to encode the first component or source symbol, that is, the level of absolute transform coefficient (z) if equal is less than limit1, or limit1 if it is not equal. If the absolute transform coefficient level is greater than or equal to the limit1 delimitation of the first partition 1401, then the limit1 delimitation (142) of the first partition (1401) is subtracted from the absolute transform coefficient level and the resulting value z 'is encoded with a second entropy code. If the level of the remaining absolute transform coefficient z 'is greater than or equal to a limit2-limit1 bounding for the second partition 1402, then the limit2-bounding1 bounding of the second partition is again subtracted from the level of absolute transform coefficient z 'and the resulting value is encoded with a third entropy code. Generally speaking, when the bounding of a partition is reached, the entropy code for the next partition in the bounding is used to encode the resulting value of the absolute transform coefficient levels minus the bounding of the corresponding partition.

Los códigos de entropía pueden ser códigos de longitud variable simples tales como códigos de longitud de serie o tablas de búsqueda (por ejemplo código Huffman) o códigos de entropía más complejos que empleen modelos de probabilidad como CABAC o PIPE. El número de particiones y la delimitación de las particiones pueden ser variables o dependientes del elemento de sintaxis real. El concepto de partición mostrado en la Fig. 1b tiene los siguientes beneficios. A continuación, se usan los coeficientes de transformada absoluta como un ejemplo, pero se debería entender que pueden sustituirse por cualquier otro elemento de sintaxis. Como un ejemplo, la distribución de probabilidad de los niveles de coeficiente de transformada absoluta puede tener aproximadamente una distribución geométrica. Por lo tanto, los códigos de entropía optimizados para distribuciones geométricas pueden emplearse para codificación de los niveles de coeficiente de transformada absoluta. Pero dicho modelo no es siempre óptimo localmente, incluso si se emplean la modelación del contexto y la selección del modelo de probabilidad. Por ejemplo, para un bloque de transformada, los niveles de coeficiente de transformada absoluta locales siguen una distribución que no es geométrica en absoluto si contiene la misma cantidad de niveles de coeficiente de transformada de rango bajo y medio, en tanto que el modelo puede mantenerse cierto (con una cierta precisión) para una cantidad específica de bloques en imagen o vídeo debido a la ley de los números grandes. Para dicho caso, la distribución geométrica no es un modelo adecuado. También, cuando se consideran los niveles de coeficiente de transformada absoluta con grandes valores, la distribución de estos grandes valores es frecuentemente uniforme. El concepto de partición permite diferentes modelos de probabilidad para diferentes niveles del coeficiente de transformada absoluta. Para valores absolutos más bajos, pueden aplicarse códigos de entropía más complejos para una eficiencia mayor, mientras para niveles absolutos mayores pueden emplearse códigos de entropía menos complejos para reducir la complejidad.Entropy codes can be simple variable length codes such as string length codes or lookup tables (eg Huffman code) or more complex entropy codes that employ probability models such as CABAC or PIPE. The number of partitions and the delimitation of partitions can be variable or dependent on the actual syntax element. The partitioning concept shown in Fig. 1b has the following benefits. The absolute transform coefficients are used below as an example, but it should be understood that they can be replaced by any other syntax element. As an example, the probability distribution of the absolute transform coefficient levels can have approximately a geometric distribution. Therefore, entropy codes optimized for geometric distributions can be used to encode absolute transform coefficient levels. But such a model is not always locally optimal, even if context modeling and probability model selection are employed. For example, for a transform block, the local absolute transform coefficient levels follow a distribution that is not geometric at all if it contains the same number of low and medium range transform coefficient levels, as long as the model can hold true (with a certain precision) for a specific number of blocks in image or video due to the law of large numbers. In this case, the geometric distribution is not a suitable model. Also, when considering absolute transform coefficient levels with large values, the distribution of these large values is often uniform. The partition concept allows different probability models for different levels of the absolute transform coefficient. For lower absolute values, more complex entropy codes may be applied for higher efficiency, while for higher absolute levels, less complex entropy codes may be used. to reduce complexity.

Como se ha mencionado anteriormente, se usan códigos de entropía adecuados para diferentes particiones. En una realización preferente de la invención, se emplean tres tipos de códigos de entropía. El primer código de entropía usa PIPE. Sin embargo, debería observarse que, de acuerdo con una alternativa, puede usarse como alternativa un método de codificación entrópica como CABAC o cualquier otro codificador aritmético. Esto es, los primeros símbolos s1 (véase la Fig. 2b) pueden codificarse a través de la trayectoria de codificación PIPE. El subdivisor 100 y el recombinador 220 actúan en consecuencia.As mentioned above, suitable entropy codes are used for different partitions. In a preferred embodiment of the invention, three types of entropy codes are employed. The first entropy code uses PIPE. However, it should be noted that, according to an alternative, an entropic encoding method such as CABAC or any other arithmetic encoder can be used as an alternative. That is, the first s1 symbols (see Fig. 2b) can be encoded through the PIPE encoding path. Subdivider 100 and recombiner 220 act accordingly.

Para el segundo tipo, pueden usarse los códigos Golomb y algunas variantes truncadas que incluyen subconjuntos (por ejemplo, códigos Golomb-Rice). Esto es, los segundos símbolos s2 (véase la Fig. 2b) pueden codificarse a través de dichos códigos VLC en el codificador/decodificador VLC 102/202. El subdivisor 100 y el recombinador 220 actúan en consecuencia.For the second type, Golomb codes and some truncated variants that include subsets (eg, Golomb-Rice codes) can be used. That is, the second s2 symbols (see Fig. 2b) can be encoded through said VLC codes in the VLC 102/202 encoder / decoder. Subdivider 100 and recombiner 220 act accordingly.

Los códigos exponencial-Golomb se usan como el tercer tipo. Esto es, los terceros símbolos s3 (véase la Fig. 2b) pueden codificarse a través de dichos códigos VLC en el codificador/decodificador VLC 102/202. El subdivisor 100 y el recombinador 220 actúan en consecuencia. Son posibles diferentes códigos VLC y diferentes combinaciones de códigos VLC y PIPE o VLC y aritméticos.Exponential-Golomb codes are used as the third type. That is, the third symbols s3 (see Fig. 2b) can be encoded through said VLC codes in the VLC 102/202 encoder / decoder. Subdivider 100 and recombiner 220 act accordingly. Different VLC codes and different combinations of VLC and PIPE or VLC and arithmetic are possible.

Mientras que el primer código es más complejo pero produce un mejor rendimiento de compresión, el segundo código entrópico representa un compromiso razonable entre complejidad y rendimiento. Los últimos códigos de entropía, por ejemplo códigos Exponencial-Golomb, tienen una complejidad muy baja. A continuación, se describe la codificación de diferentes particiones.While the first code is more complex but produces better compression performance, the second entropic code represents a reasonable compromise between complexity and performance. The latest entropy codes, for example Exponential-Golomb codes, have very low complexity. The encoding of different partitions is described below.

En una partición tal como la partición 1401, tal como el símbolo s1, ha de codificarse por entropía usando un codificador entrópico que emplee modelos de probabilidad como el codificador PIPE 104 (de nuevo, puede usarse CABAC o cualquier codificador aritmético en una alternativa no descrita adicionalmente en el presente documento), el subdivisor 120 dirige la misma hacia el codificador PIPE 104. En primer lugar, los niveles de coeficiente de transformada absoluta evaluados no binarios pueden convertirse a binario en el simbolizador 122 usando un método de conversión a binario. La conversión a binario mapea los niveles de coeficiente de transformada absoluta evaluados no binarios en una secuencia de binarios binaria. Cada binario de la cadena de binarios se codifica con un contexto elegido por un asignador 114. La modelación de contexto puede realizarse por el primer binario y fijarse para los binarios siguientes de la secuencia de binario dado que puede usarse coeficiente_absoluto_nivel_menos_dos en H.264/AVC o una modelación de contexto diferente para cada binario de la cadena de binarios. Obsérvese que la conversión a binario puede ser un código de longitud variable como los códigos Golomb o códigos exponencial-Golomb u otros códigos de longitud variable.In a partition such as partition 1401, such as the symbol s1, it is to be encoded entropy using an entropic encoder employing probability models such as the PIPE 104 encoder (again, CABAC or any arithmetic encoder can be used in an alternative not described further herein), subdivider 120 directs it towards PIPE encoder 104. First, non-binary evaluated absolute transform coefficient levels can be converted to binary in symbolizer 122 using a binary conversion method. Conversion to binary maps the evaluated non-binary absolute transform coefficient levels into a binary binary sequence. Each binary in the binary chain is encoded with a context chosen by an allocator 114. Context modeling can be done by the first binary and set for subsequent binaries in the binary sequence since absolute_level_level_2 coefficient can be used in H.264 / AVC or a different context modeling for each binary in the binary chain. Note that the conversion to binary can be a variable length code such as Golomb codes or Exponential-Golomb codes or other variable length codes.

A continuación, una partición tal como la partición 1402 o símbolos s2 puede codificarse con un código Golomb, en este caso en el codificador VLC 102 y decodificarse respectivamente en el decodificador VLC. Los códigos Golomb son un conjunto de códigos de entropía diseñados para una fuente distribuida geométricamente. Si el orden del código Golomb es cero, el código Golomb es conocido también como código unario. El código unario se refiere a la conversión a binario de coeficiente_absoluto_nivel_menos_dos en H.264/AVC. Los códigos Golomb se construyen como sigue. Para un parámetro Golomb específico k, el valor n se divide por el parámetro Golomb k usando división entera y se calcula el resto r. Next, a partition such as partition 1402 or s2 symbols can be encoded with a Golomb code, in this case in VLC encoder 102 and respectively decoded in VLC decoder. Golomb codes are a set of entropy codes designed for a geometrically distributed source. If the order of the Golomb code is zero, the Golomb code is also known as a unary code. The unary code refers to the conversion to binary of coefficient_absolute_level_less_dos in H.264 / AVC. Golomb codes are constructed as follows. For a specific Golomb parameter k, the value n is divided by the Golomb parameter k using integer division and the remainder r is calculated .

nn

kk

P = L P = L

r = n - pk r = n - pk

Después de deducir los parámetros especificados por las fórmulas anteriores, puede codificarse el valor n con dos partes. La primera parte, también denominada como parte prefijo, es un código unario. El valor resultante p+1 especifica el número de unos y un cero de finalización o viceversa. El valor de resto, también denominado como parte resto e indicada por r, se representa con un código binario truncado. De acuerdo con una realización específica, los códigos Golomb-Rice se emplean para codificación de símbolos fuente tales como los símbolos fuente s2 siendo los códigos Golomb-Rice un subconjunto de los códigos Golomb. También, cuando se usan dichos códigos de entropía para particiones 1401-3 que contienen una delimitación, tal como la partición 1402, el alfabeto de los símbolos fuente respectivos (tal como los símbolos fuente s2) está limitado y el código Golomb-Rice puede modificarse de modo que pueda mejorarse la eficiencia de codificación. El parámetro del código Golomb-Rice puede ser fijo o variable. Si el parámetro es variable, el parámetro puede estimarse como una parte de la etapa de modelación de contexto. Por ejemplo, si un símbolo fuente s2 entra en el decodificador VLC 102, este último puede determinar el parámetro del código Golomb-Rice a partir de un contexto de s2. Los códigos Golomb-Rice son códigos Golomb con parámetros a la potencia de dos. De modo que se basan en división y multiplicación por dos y por lo tanto pueden implementarse eficientemente en una arquitectura binaria con operaciones de desplazamiento y adición. La relación entre el parámetro Golomb-Rice y el parámetro Golomb es por lo tanto kGOLOMB = 2kRICE. En caso del código Golomb-Rice, la parte de resto es exactamente la representación binaria del valor del resto. Para el parámetro Golomb-Rice de cero, el código resultante es idéntico al código unario y no tiene una parte de resto. Para el parámetro igual a uno, la parte de resto consiste en un binario con dos símbolos de entrada que comparten el mismo prefijo unario. A continuación, se ilustran algunas tablas de ejemplo para parámetros Golomb-Rice seleccionados.After deducing the parameters specified by the formulas above, the value n can be coded with two parts. The first part, also called the prefix part, is a unary code. The resulting value p + 1 specifies the number of ones and an ending zero or vice versa. The value of remainder, also named as part remainder and indicated by r, is represented by a truncated binary code. According to a specific embodiment, the Golomb-Rice codes are used for encoding source symbols such as the s2 source symbols, the Golomb-Rice codes being a subset of the Golomb codes. Also, when such entropy codes are used for partitions 1401-3 that contain a delimitation, such as partition 1402, the alphabet of the respective source symbols (such as the s2 source symbols) is limited and the Golomb-Rice code may be modified so that the coding efficiency can be improved. The Golomb-Rice code parameter can be fixed or variable. If the parameter is variable, the parameter can be estimated as part of the context modeling stage. For example, if a source symbol s2 enters decoder VLC 102, the latter can determine the Golomb-Rice code parameter from a context of s2. Golomb-Rice codes are Golomb codes with parameters to the power of two. So they are based on division and multiplication by two and therefore they can be efficiently implemented in a binary architecture with shift and add operations. The relationship between the Golomb-Rice parameter and the Golomb parameter is therefore kGOLOMB = 2kRICE. In the case of the Golomb-Rice code, the remainder part is exactly the binary representation of the remainder value. For the Golomb-Rice parameter of zero, the resulting code is identical to the unary code and does not have a remainder part. For the parameter equal to one, the remainder part consists of a binary with two input symbols that share the same unary prefix. Some example tables for selected Golomb-Rice parameters are illustrated below.

Figure imgf000053_0001
Figure imgf000053_0001

Dado el rango de la partición tal como por ejemplo límite2-límite1 en caso de la partición 1402 y el parámetro del código Golomb-Rice, el truncado puede realizarse como sigue. El parámetro Golomb-Rice describe el número de binarios requeridos para representar la parte de resto y el dos a la potencia del valor de parámetro describe el número de valores, que puede representarse con el mismo prefijo. Estos valores forman un grupo de prefijo. Por ejemplo, para el parámetro cero, un prefijo solo puede representar un valor específico, mientras que para el parámetro tres, ocho valores de entrada comparten el mismo prefijo y por lo tanto un grupo de prefijo contiene ocho valores para el parámetro tres. Para un alfabeto fuente limitado y un código Golomb-Rice dado, el último binario del prefijo puede dejarse fuera de los valores en el último grupo de prefijo dando como resultado un código de prefijo con longitud fija.Given the partition range such as for example limit2-limit1 in case of partition 1402 and the Golomb-Rice code parameter, truncation can be performed as follows. The Golomb-Rice parameter describes the number of binaries required to represent the remainder part, and the two to the power of the parameter value describes the number of values, which can be represented with the same prefix. These values form a prefix group. For example, for parameter zero, a prefix can only represent a specific value, while for parameter three, eight input values share the same prefix, and therefore a prefix group contains eight values for parameter three. For a limited font alphabet and a given Golomb-Rice code, the last prefix binary can be left out of the values in the last prefix group resulting in a fixed length prefix code.

Por ejemplo, el rango puede ser nueve y el parámetro Golomb-Rice dos. Para este caso de ejemplo el número de valores que pueden representarse con el mismo prefijo es cuatro. El valor máximo es nueve, lo que también indica que el borde se ha superado y ha de usarse el siguiente código de entropía de la siguiente partición. En este caso de ejemplo, los valores desde 0 - 3 tienen el prefijo 0, los valores desde 4 -7 tienen el prefijo 10 y 8 - 9 el prefijo 110. Debido a que los valores 8 - 9 forman el último grupo de prefijo, su cero de la izquierda puede quitarse y los valores 8 - 9 pueden representarse por 11. En otras palabras, se puede imaginar un símbolo fuente s2 introducido en el codificador VLC 102 siendo el número de valores posibles de s2 de 9 (=límite2-límite1 1) y siendo el parámetro Golomb-Rice para ese símbolo fuente dos. A continuación, se produciría una palabra de código Golomb-Rice respectiva por el codificador VLC 102 para ese símbolo fuente, que tiene un prefijo según se acaba de describir. Para la parte de resto de la palabra de código, el código truncado puede deducirse como sigue por el codificador VLC 102. Normalmente, el parámetro de los códigos Golomb-Rice indica el número de binarios de la parte de resto. En un caso truncado, no todos los binarios del resto necesitan codificarse. Para un caso truncado, se cuentan todos los valores con prefijo fijo (por ejemplo un binario del prefijo se extrae). Obsérvese que el valor contado es siempre más pequeño que o igual al número máximo de valores para un prefijo debido a que el código se trunca. Si es posible un truncado de la parte de resto, la deducción de la parte de resto truncada para el último grupo de prefijo puede proseguir en las siguientes etapas. Primero, se deduce el mayor número l a la potencia de dos más pequeño o igual que el número encontrado. A continuación, en la segunda etapa, se deduce el número más pequeño h a la potencia de dos mayor que el número encontrado. El primer valor l escribe el número de valores en el grupo de prefijo con un resto de h binarios. Todos los restos de estos valores comienzan con un 0 seguido por la representación binaria del resto limitada al número de valores en el grupo del resto. Para los valores restantes del último grupo de prefijo, ahora tratados como un nuevo grupo de prefijo, se realiza el mismo procedimiento excepto para los valores resultantes formados por el primer grupo de resto, el resto comienza con un 1. Este procedimiento se realiza hasta que se deducen todos los restos. Como un ejemplo, el rango es 14 y el parámetro es tres. El primer grupo de prefijo contiene valores desde 0 - 7 y el segundo grupo de prefijo valores desde 8 - 13. El segundo grupo de prefijo contiene seis valores. Los parámetros son l = 2 y h = 3. De ese modo, los primeros cuatro valores de los grupos de prefijo se representan por un resto con tres binarios (un cero a la izquierda y la representación binaria para distinguir los cuatro valores). Para los últimos dos valores, se realiza de nuevo el mismo procedimiento. Los parámetros son l = 1 y h = 2. El resto de los dos últimos valores puede representarse ahora como 10 y 11. Otro ejemplo para demostrar el método es un parámetro de Golomb-Rice de cuatro y un rango de diez. Para este ejemplo, los parámetros son l = 3 y h = 4. Con estos parámetros, la parte de resto truncada para los primeros ocho valores se representa mediante cuatro binarios. Los dos valores restantes tienen la misma parte de resto que en el ejemplo anterior. Si el rango es nueve para el ejemplo previo, el parámetro para la segunda serie es l = 0 y h = 1. La parte de resto del único valor que permanece es 1.For example, the range can be nine and the Golomb-Rice parameter two. For this example case the number of values that can be represented with the same prefix is four. The maximum value is nine, which also indicates that the edge has been exceeded and the following entropy code for the next partition is to be used. In this example case, the values from 0 - 3 have the prefix 0, the values from 4 -7 have the prefix 10 and 8 - 9 the prefix 110. Because the values 8 - 9 form the last group of prefix, its left zero can be removed and the values 8 - 9 can be represented by 11. In other words, you can imagine a source symbol s2 entered in the VLC 102 encoder with the number of possible values of s2 being 9 (= limit2-limit1 1) and the Golomb-Rice parameter for that source symbol is two. Next, a respective Golomb-Rice codeword would be produced by the VLC encoder 102 for that source symbol, which has a prefix as just described. For the remainder part of the codeword, the truncated code can be deduced as follows by the VLC 102 encoder. Normally, the Golomb-Rice codes parameter indicates the number of binaries of the remainder part. In a truncated case, not all of the rest binaries need to be encoded. For a truncated case, all values with fixed prefix are counted (for example a prefix binary is extracted). Note that the counted value is always smaller than or equal to the maximum number of values for a prefix because the code is truncated. If truncation of the remainder part is possible, deduction of the truncated remainder part for the last prefix group can proceed in the following steps. First, the largest number l is deduced from the power of two smaller than or equal to the number found. Then, in the second stage, the smallest number h is deduced from the power of two greater than the number found. The first value l writes the number of values in the prefix group with a remainder of binary h . All remainders of these values start with 0 followed by the binary representation of the remainder limited to the number of values in the remainder group. For the remaining values of the last prefix group, now treated as a new prefix group, the same procedure is performed except for the resulting values formed by the first group of remainder, the remainder starts with a 1. This procedure is carried out until all remains are deducted. As an example, the range is 14 and the parameter is three. The first group of prefix contains values from 0 - 7 and the second group of prefix values from 8 - 13. The second group The prefix contains six values. The parameters are l = 2 and h = 3. Thus, the first four values of the prefix groups are represented by a remainder with three binaries (a zero on the left and the binary representation to distinguish the four values). For the last two values, the same procedure is performed again. The parameters are l = 1 and h = 2. The rest of the last two values can now be represented as 10 and 11. Another example to demonstrate the method is a Golomb-Rice parameter of four and a range of ten. For this example, the parameters are l = 3 and h = 4. With these parameters, the truncated remainder part for the first eight values is represented by four binaries. The remaining two values have the same remainder part as in the previous example. If the range is nine for the previous example, the parameter for the second series is l = 0 and h = 1. The remainder part of the only value that remains is 1.

El tercer tipo de códigos de entropía pueden ser códigos Exponencial-Golomb. Pueden emplearse para distribuciones igualmente probables (por ejemplo con parámetro cero) tales como los símbolos fuente s3. Esto es, el par de codificador/decodificador VLC puede ser responsable de su codificación. Como se ha mencionado anteriormente, los niveles de coeficiente de transformada absoluta mayores frecuentemente se distribuyen uniformemente. Más precisamente, el código Exponencial-Golomb de orden cero puede usarse para codificar la última partición 1403. El comienzo y por lo tanto el borde 144 de la partición previa 1402 puede ser variable. La posición del borde 144 puede controlarse por el codificador/decodificador VLC 102-200 dependiendo de los símbolos fuente codificados/decodificados 106, 108 y/o 110 de manera precisa o los elementos de sintaxis 138 (o 218, 204 y/o 208 o los elementos de sintaxis 226).The third type of entropy codes can be Exponential-Golomb codes. They can be used for equally probable distributions (eg with parameter zero) such as the s3 source symbols. That is, the VLC encoder / decoder pair may be responsible for its encoding. As mentioned above, higher absolute transform coefficient levels are often evenly distributed. More precisely, the zero-order Exponential-Golomb code can be used to encode the last partition 1403. The beginning and therefore the edge 144 of the previous partition 1402 can be variable. The position of edge 144 can be controlled by VLC 102-200 encoder / decoder depending on precisely encoded / decoded source symbols 106, 108 and / or 110 or syntax elements 138 (or 218, 204 and / or 208 or syntax elements 226).

En una realización preferente, el número de particiones es tres como se muestra en la Fig. 1b y las delimitaciones 142 y 144 pueden ser variables. Para la primera partición 1401, puede emplearse codificación PIPE como se ha explicado anteriormente. Sin embargo, puede usarse como alternativa asimismo CABAC. En ese caso, el par codificador/decodificador PIPE se sustituiría por un par codificador/decodificador de codificación aritmética. Los códigos Golomb-Rice truncados pueden usarse para la segunda partición 1402 y el código Exponencial-Golomb de orden cero puede usarse para la última partición 1403.In a preferred embodiment, the number of partitions is three as shown in Fig. 1b and the boundaries 142 and 144 can be variable. For the first partition 1401, PIPE encoding can be used as explained above. However, CABAC can also be used as an alternative. In that case, the PIPE encoder / decoder pair would be replaced by an arithmetic encoder / decoder pair. The truncated Golomb-Rice codes can be used for the second 1402 partition and the zero-order Exponential-Golomb code can be used for the last 1403 partition.

En otra realización preferente, el número de particiones 1401-3 es tres y la primera delimitación 142 es fija, mientras que la segunda delimitación 144 es variable. Para la primera partición 1401, se emplea CABAC o PIPE. Los códigos Golomb-Rice truncados pueden usarse para la segunda partición 1402, y el código Exponencial-Golomb de orden cero puede usarse para la última partición 1403.In another preferred embodiment, the number of partitions 1401-3 is three and the first delimitation 142 is fixed, while the second delimitation 144 is variable. For the first partition 1401, CABAC or PIPE is used. The truncated Golomb-Rice codes can be used for the second 1402 partition, and the zero-order Exponential-Golomb code can be used for the last 1403 partition.

En otra realización preferente, el número de particiones es igual a dos. La primera partición 1401 podría usar CABAC o PIPE. La segunda partición podría usar códigos de Golomb-Rice tale como 1402.In another preferred embodiment, the number of partitions is equal to two. The first partition 1401 could use CABAC or PIPE. The second partition could use Golomb-Rice tale codes like 1402.

En otra realización preferente, el número de particiones es igual a tres mientras que ambos bordes 142 y 144 son variables. Por ejemplo, para la primera partición 1401, se emplea CABAC o PIPE, mientras la segunda partición 1402 puede usar el código Golomb-Rice truncado y la tercera partición 1403 usa el código Exponencial-Golomb de orden cero.In another preferred embodiment, the number of partitions is equal to three while both edges 142 and 144 are variable. For example, for the first partition 1401, CABAC or PIPE is used, while the second partition 1402 can use the truncated Golomb-Rice code and the third partition 1403 uses the zero-order Exponential-Golomb code.

En una realización preferente, la delimitación 142 de la primera partición 1401 que usa CABAC o PIPE, que emplea modelos de probabilidad adaptativa es dos. En esta realización preferente, la modelación de contexto para el primer binario puede realizarse como se ha descrito para coeficiente_absoluto_mayor_uno tal como se ha descrito anteriormente y la modelación de contexto para el segundo binario puede realizarse como se ha descrito para coeficiente_absoluto_nivel_menos_dos en H.264/AVC, como también se ha descrito anteriormente. La última determinación de contexto se determinaría por los asignadores 114 y 212, respectivamente. En otra realización preferente, la delimitación 142 de la primera partición 1401 que usa codificación de entropía que emplea modelación de probabilidad (por ejemplo PIPE o CABAC) es dos. Para esta realización preferente, la modelación de contexto para tanto el primero como el segundo binario puede realizarse como se ha descrito para coeficiente_absoluto_mayor_uno en H.264/AVC como se ha descrito anteriormente. La valoración del conjunto de contexto como se ha descrito para coeficiente_absoluto_mayor_uno puede realizarse por separado para el segundo binario.In a preferred embodiment, the boundary 142 of the first partition 1401 using CABAC or PIPE, which employs adaptive probability models is two. In this preferred embodiment, context modeling for the first binary can be performed as described for absolute_coefficient_major_one as described above and context modeling for the second binary can be performed as described for absolute_coefficient_level_less_two in H.264 / AVC , as also described above. The last context determination would be determined by allocators 114 and 212, respectively. In another preferred embodiment, the delimitation 142 of the first partition 1401 that uses entropy coding that employs probability modeling (eg, PIPE or CABAC) is two. For this preferred embodiment, context modeling for both the first and the second binary can be performed as described for absolute_coefficient_major_one in H.264 / AVC as described above. The evaluation of the context set as described for coefficient_absolute_major_one can be done separately for the second binary.

En una realización preferente, la delimitación 142 para la primera partición 1401 que usa codificación entrópica que emplea modelación de probabilidad (por ejemplo CABAC o PIPE) puede ser igual a uno. Para el único binario (o símbolo de alfabeto) de la cadena de binarios del símbolo fuente respectivo, la modelación de contexto puede realizarse como se ha descrito para coeficiente_absoluto_mayor_uno en H.264/AVC previamente descrito.In a preferred embodiment, the delimitation 142 for the first partition 1401 that uses entropic coding that employs probability modeling (eg CABAC or PIPE) can be equal to one. For the single binary (or alphabet symbol) in the binary chain of the respective source symbol, context modeling can be performed as described for coefficient_absolute_major_one in H.264 / AVC previously described.

En una realización preferente, la delimitación 142 de la primera partición 1401 que usa codificación entrópica que emplea modelación de probabilidad (por ejemplo CABAC o PIPE) puede ser igual a tres. La modelación de contexto del primer y segundo binarios de la cadena de binarios del símbolo fuente respectivo puede realizarse como coeficiente_absoluto_mayor_uno en H.264/AVC. La modelación de contexto para el tercer binario puede realizarse como coeficiente_absoluto_nivel_menos_dos en H.264/AVC. La evaluación del conjunto de contexto como se ha descrito para coeficiente_absoluto_mayor_uno puede realizarse por separado para el segundo binario. In a preferred embodiment, the delimitation 142 of the first partition 1401 that uses entropic coding that employs probability modeling (eg CABAC or PIPE) can be equal to three. Context modeling of the first and second binaries of the respective source symbol binary chain can be performed as absolute_coefficient_major_one in H.264 / AVC. Context modeling for the third binary can be performed as absolute_level_level_less_two in H.264 / AVC. The evaluation of the context set as described for absolute_coefficient_major_one can be done separately for the second binary.

En una realización preferente, un conjunto de códigos Golomb-Rice truncados puede usarse como códigos de entropía de la segunda partición 1402. La delimitación 144 de la segunda partición que específica el comienzo de la tercera partición 1403 que depende del parámetro del código de entropía puede ser variable. También, en esta realización preferente, el parámetro Golomb-Rice puede limitarse por tres y la selección del parámetro puede realizarse como la modelación de contexto para coeficiente_absoluto_nivel_menos_dos en H.264/AVC. El rango límite-límite2 puede ser variable y puede depender del parámetro Golomb-Rice. Si el parámetro es cero, el rango es 8. Para el parámetro uno, el rango es 10. En caso de parámetro dos, el rango es 12 y para el parámetro tres, el rango es igual a 16. En esta realización preferente, el parámetro Golomb-Rice se fija a cero al comienzo de un bloque de coeficientes de transformada. Para cada nivel de coeficiente de transformada de código en el bloque mayor o igual que la primera delimitación, se usa el correspondiente código Golomb-Rice. Después de la codificación (o decodificación) del nivel, se realiza la siguiente evaluación para actualizar el parámetro Golomb-Rice para codificación (o decodificación) del siguiente nivel mayor que o igual a la primera delimitación. Obsérvese que el parámetro Golomb-Rice no puede disminuirse mediante el uso de esta forma de adaptación.In a preferred embodiment, a set of truncated Golomb-Rice codes can be used as entropy codes of the second partition 1402. Delimitation 144 of the second partition that specifies the start of the third partition 1403 depending on the entropy code parameter can be variable. Also, in this preferred embodiment, the Golomb-Rice parameter can be limited by three and the parameter selection can be performed as the context modeling for absolute_level_level_least_two in H.264 / AVC. The limit-limit2 range can be variable and can depend on the Golomb-Rice parameter. If the parameter is zero, the range is 8. For parameter one, the range is 10. In case of parameter two, the range is 12 and for parameter three, the range is equal to 16. In this preferred embodiment, the Golomb-Rice parameter is set to zero at the beginning of a transform coefficient block. For each level of code transform coefficient in the block greater than or equal to the first delimitation, the corresponding Golomb-Rice code is used. After level encoding (or decoding), the following evaluation is performed to update the Golomb-Rice parameter for next level encoding (or decoding) greater than or equal to the first delimitation. Note that the Golomb-Rice parameter cannot be decreased by using this form of adaptation.

La regla de adaptación del parámetro puede resumirse como sigue, donde k 1 indica el parámetro de Golomb-Rice a usarse para codificación del siguiente valor de nivel y valort indica el valor previamente codificado con el parámetro Golomb-Rice kt correspondienteThe parameter adaptation rule can be summarized as follows, where k 1 indicates the Golomb-Rice parameter to be used for encoding the next level value and valort indicates the value previously encoded with the corresponding Golomb-Rice parameter kt

0 va lo rt e i0, 1] a k t < 10 goes lo rt and i0, 1] to kt < 1

1 va lo rt e [2 , 3] a k t < 2 1 goes lo rt e [2, 3] to kt <2

Kt+1 = < 2 va lo rt e [4, 5] a k t < 3 (QQ) Kt +1 = <2 goes what rt e [4, 5] to kt <3 (QQ)

3 va lo rt > 5 a k < 4 3 goes rt> 5 ak <4

k en caso c o n tra r iok in case c o n tra r io

En una realización preferida, puede usarse un conjunto de códigos Golomb-Rice truncados como códigos de entropía de una segunda partición 1402. La delimitación 144 de la segunda partición 1402 que específica el comienzo de la tercera partición 1403 dependiendo del parámetro del código de entropía puede ser variable. También en esta realización preferida, el parámetro Golomb-Rice puede estar limitado a tres y la selección del parámetro puede realizarse como modelación de contexto para coeficiente_absoluto_nivel_menos_dos en H.264/AVC. El rango puede ser variable y depende del parámetro Golomb-Rice. Si el parámetro es cero, el rango es 8. Para el parámetro uno, el rango es 10. En caso de parámetro dos, el rango es 12 y para el parámetro tres, el rango es igual a 16. En esta realización preferida, el parámetro Golomb-Rice se fija en cero al comienzo del bloque. La adaptación del parámetro Golomb-Rice se realiza como se describe por la ecuación (QQ). Obsérvese que el parámetro no puede disminuirse mediante el uso de esta forma de adaptación.In a preferred embodiment, a set of truncated Golomb-Rice codes can be used as entropy codes of a second partition 1402. The delimitation 144 of the second partition 1402 that specifies the start of the third partition 1403 depending on the parameter of the entropy code can be variable. Also in this preferred embodiment, the Golomb-Rice parameter can be limited to three and the parameter selection can be done as context modeling for absolute_level_level_least_two in H.264 / AVC. The range can be variable and depends on the Golomb-Rice parameter. If the parameter is zero, the range is 8. For parameter one, the range is 10. In case of parameter two, the range is 12 and for parameter three, the range is equal to 16. In this preferred embodiment, the Golomb-Rice parameter is set to zero at the beginning of the block. The adaptation of the Golomb-Rice parameter is performed as described by the equation (QQ). Note that the parameter cannot be decreased by using this form of adaptation.

En otra realización preferida, puede usarse un conjunto de códigos Golomb-Rice truncado como códigos de entropía de la segunda partición 1402. La delimitación 144 de la segunda partición 1402 que especifica el comienzo de la tercera partición 1403 dependiendo del parámetro del código de entropía puede ser fija. También en esta realización preferida, el parámetro Golomb-Rice puede estar limitado a tres y la selección del parámetro puede realizarse como modelación de contexto para coeficiente_absoluto_nivel_menos_dos en H.264/AVC. El rango de la segunda partición 1402 puede fijarse en 14. En esta realización preferida, el parámetro Golomb-Rice puede fijarse a cero al comienzo del bloque. La adaptación del parámetro Golomb-Rice se realiza como se describe por la ecuación (QQ). Obsérvese que el parámetro no puede disminuirse mediante el uso de esta forma de adaptación.In another preferred embodiment, a truncated Golomb-Rice code set can be used as entropy codes of second partition 1402. Delimitation 144 of second partition 1402 specifying the start of third partition 1403 depending on the entropy code parameter can be fixed. Also in this preferred embodiment, the Golomb-Rice parameter can be limited to three and the parameter selection can be done as context modeling for absolute_level_level_least_two in H.264 / AVC. The range of the second partition 1402 can be set to 14. In this preferred embodiment, the Golomb-Rice parameter can be set to zero at the beginning of the block. The adaptation of the Golomb-Rice parameter is performed as described by the equation (QQ). Note that the parameter cannot be decreased by using this form of adaptation.

En otra realización preferida, puede usarse un conjunto de códigos Golomb-Rice truncados como códigos de entropía de una segunda partición 1402. La delimitación 144 de la segunda partición 1402 que específica el comienzo de la tercera partición 1403 dependiendo del parámetro del código de entropía puede ser variable. También en esta realización preferida, el parámetro Golomb-Rice puede estar limitado a tres y la selección del parámetro puede realizarse como modelación de contexto para coeficiente_absoluto_nivel_menos_dos en H.264/AVC. El rango puede ser variable y depende del parámetro Golomb-Rice. Si el parámetro puede ser cero, el rango puede ser 8. Para el parámetro uno, el rango puede ser 10. En caso de parámetro dos el rango puede ser 12 y para el parámetro tres, el rango puede ser igual a 16. En esta realización preferida, el parámetro Golomb-Rice puede fijarse a cero al comienzo del bloque. La adaptación del parámetro Golomb-Rice se realiza como se describe por la ecuación (QQ). Obsérvese que el parámetro no puede disminuirse mediante el uso de esta forma de adaptación. Y obsérvese también que es posible una conmutación directa, por ejemplo desde cero a tres. En esta realización preferida, la parte de prefijo de los códigos Golomb-Rice se codifica con códigos de entropía que emplean modelos de probabilidad. La modelación de contexto puede realizarse como para coeficiente_absoluto_nivel_menos_dos en H.264/AVC. In another preferred embodiment, a set of truncated Golomb-Rice codes can be used as entropy codes of a second partition 1402. The delimitation 144 of the second partition 1402 that specifies the start of the third partition 1403 depending on the parameter of the entropy code can be variable. Also in this preferred embodiment, the Golomb-Rice parameter can be limited to three and the parameter selection can be done as context modeling for absolute_level_level_least_two in H.264 / AVC. The range can be variable and depends on the Golomb-Rice parameter. If the parameter can be zero, the range can be 8. For parameter one, the range can be 10. In case of parameter two, the range can be 12 and for parameter three, the range can be equal to 16. In this Preferred embodiment, the Golomb-Rice parameter can be set to zero at the beginning of the block. The adaptation of the Golomb-Rice parameter is performed as described by the equation (QQ). Note that the parameter cannot be decreased by using this form of adaptation. And also note that direct switching is possible, for example from zero to three. In this preferred embodiment, the prefix portion of the Golomb-Rice codes is encoded with entropy codes that employ probability models. Context modeling can be done as for absolute_level_level_least_two in H.264 / AVC.

En otra realización preferida, puede usarse un parámetro Golomb-Rice fijado para codificar todos los niveles de coeficiente de transformada en el bloque de transformada actual. En esta realización, el mejor parámetro del bloque anterior puede calcularse y usarse para el bloque de transformada actual. Para esta realización, el rango puede fijarse por 14.In another preferred embodiment, a fixed Golomb-Rice parameter can be used to encode all levels of transform coefficient in the current transform block. In this embodiment, the best parameter from the previous block can be calculated and used for the current transform block. For this embodiment, the range can be set to 14.

En otra realización preferida, puede usarse un parámetro Golomb-Rice fijado para codificar todos los niveles de coeficiente de transformada en el bloque de transformada actual. En esta realización, el mejor parámetro del bloque anterior puede calcularse y usarse para el bloque de transformada actual. Para esta realización, el rango puede ser variable como se ha descrito anteriormente.In another preferred embodiment, a fixed Golomb-Rice parameter can be used to encode all levels of transform coefficient in the current transform block. In this embodiment, the best parameter from the previous block can be calculated and used for the current transform block. For this embodiment, the range can be variable as previously described.

En otra realización preferida, se evalúa si la vecindad ya codificada (o decodificada) del índice de escaneado actual contiene niveles de coeficiente de transformada absoluta mayores que la delimitación previa. Para esta realización preferida, el mejor parámetro puede deducirse mediante el uso de vecinos en una plantilla causal local.In another preferred embodiment, it is evaluated whether the already encoded (or decoded) neighborhood of the current scan index contains higher absolute transform coefficient levels than the previous bounding. For this preferred embodiment, the best parameter can be deduced by using neighbors in a local causal template.

De ese modo, las realizaciones anteriormente mencionadas describen entre otros, un aparato de codificación entrópica que comprende un descomponedor 136 configurado para convertir una secuencia 138 de elementos de sintaxis en una secuencia 106 de símbolos fuente 106 descomponiendo individualmente al menos un subgrupo de los elementos de sintaxis en un número respectivo n de símbolos fuente si, con i = 1 ,...,n, dependiendo el número respectivo n de símbolos fuente de cuál de entre una secuencia de n particiones 1401-3 dentro de las que se subdivide un rango de valores de los elementos de sintaxis respectivos, cae un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del número respectivo de símbolos fuente si produce z y, si n>1 , para todo i = 1 ,...,n-1 , el valor de si corresponde a un rango de la i-ésima partición; un subdivisor 100 configurado para subdividir la secuencia 106 de símbolos fuente en una primera subsecuencia 108 de símbolos fuente y una segunda subsecuencia 110 de símbolos fuente de modo que todos los símbolos fuente sx siendo x miembro de un primer subconjunto de {1. n } están contenidos dentro de la primera subsecuencia 108 y todos los símbolos fuente sy siendo y un miembro del segundo subconjunto de {1...n} que es disjunto respecto al primer subconjunto, están contenidos dentro de la segunda subsecuencia 110; un codificador VLC 102 configurado para codificar de una manera a nivel de símbolos los símbolos fuente de la primera subsecuencia 108, y un codificador PIPE o aritmético 104 configurado para codificar la segunda subsecuencia 110 de símbolos fuente.Thus, the aforementioned embodiments describe, inter alia, an entropic encoding apparatus comprising a decomposer 136 configured to convert a sequence 138 of syntax elements to a sequence 106 of source symbols 106 by individually decomposing at least a subset of the elements of syntax in a respective number n of source symbols if, with i = 1, ..., n, the respective number n of source symbols depending on which of a sequence of n partitions 1401-3 within which a range is subdivided of values of the respective syntax elements, a value z of the respective syntax elements falls, so that a sum of values of the respective number of source symbols if it produces zy, if n> 1, for all i = 1, .. ., n-1, the value of si corresponds to a range of the i-th partition; a subdivider 100 configured to subdivide the source symbol sequence 106 into a first source symbol subsequence 108 and a second source symbol subsequence 110 such that all source symbols sx with x being a member of a first subset of {1. n} are contained within the first subsequence 108 and all source symbols s and being and a member of the second subset of {1 ... n} that is disjoint from the first subset, are contained within the second subsequence 110; a VLC encoder 102 configured to encode in a symbolic manner the source symbols of the first subsequence 108, and a PIPE or arithmetic encoder 104 configured to encode the second subsequence 110 of source symbols.

Los valores z del subgrupo de los elementos de sintaxis pueden ser valores absolutos. El segundo subconjunto puede ser { 1 } estando dispuesta la secuencia de n particiones de modo que una partición de orden p cubre valores más altos del rango de valores que una partición de orden q para todo p, q e {1...n} siendo p>q. n puede ser 3. El primer subconjunto puede ser {2, 3} configurado el codificador VLC (102) para usar un código Golomb-Rice para codificar de una manera a nivel de símbolos los símbolos fuente s2, y un código Exp-Golomb para codificar de una manera a nivel de símbolos los símbolos fuente s3. Más generalmente, 2 pueden ser elementos del primer subconjunto con un codificador VLC (102) configurado para usar un código Golomb-Rice para codificar de una manera a nivel de símbolos los símbolos fuente s2 y adaptar un parámetro Golomb-Rice, es decir k, del código Golomb-Rice de acuerdo con los símbolos fuente previamente codificados. El descomponedor puede configurarse para adaptar uno o más de los límites entre las particiones de acuerdo con los símbolos fuente previamente codificados. Ambas adaptaciones pueden combinarse. Esto es, las posiciones de los límites que limitan la segunda partición pueden adaptarse de modo que estén separadas entre sí de modo que la longitud del código Golomb-Rice, es decir el número de palabras de código del mismo, corresponda a (o prescriba) la longitud de la anchura de la segunda partición. El límite para la separación de la primera a la segunda partición puede definirse de otra forma como fijado por definición o adaptarse de acuerdo con otra dependencia de contexto, en cuyo caso la adaptación de k puede definir la posición de la separación límite de la segunda y tercera partición a través de la longitud del código de Golomb-Rice y la anchura de la segunda partición, respectivamente. Al acoplar la adaptación de k de modo que la anchura de la segunda partición corresponda a la longitud del código Golomb-Rice, la eficiencia del código se usa de modo óptimo. Adaptar k a las estadísticas del elemento de sintaxis permite adaptar la anchura de la segunda partición de modo que la tercera partición pueda cubrir tanto como sea posible de modo que reduzca la complejidad de codificación global dado que puede haberse usado un código menos complejo para la tercera partición tal como el código Exp-Golomb. Adicionalmente, la longitud de la primera partición puede restringirse a j e {1, 2, 3} posibles valores de elementos de sintaxis, tal como los tres niveles más bajos. Los elementos de sintaxis bajo consideración pueden codificarse diferencialmente o representar una predicción residual tal como es el caso con los niveles de coeficiente de transformada ejemplificados anteriormente que representan una predicción residual. Los primeros símbolos fuente s1 pueden simbolizarse/desimbolizarse mediante el uso de un código unario truncado siendo codificados los j binarios resultantes - parcialmente o todos ellos - adaptativamente al contexto o no, como se ha mencionado anteriormente.The z values of the subgroup of syntax elements can be absolute values. The second subset may be {1} with the sequence of n partitions arranged so that a partition of order p covers higher values in the range of values than a partition of order q for all p, qe {1 ... n} being p> q. n can be 3. The first subset can be {2, 3} configured the VLC encoder (102) to use a Golomb-Rice code to encode in a symbol level manner the source symbols s2, and an Exp-Golomb code to encode in a symbol level manner the s3 source symbols. More generally, 2 may be elements of the first subset with a VLC encoder (102) configured to use a Golomb-Rice code to encode the s2 source symbols in a symbol level manner and adapt a Golomb-Rice parameter, i.e. k, of the Golomb-Rice code according to the previously coded source symbols. The decomposer can be configured to adapt one or more of the boundaries between the partitions according to the previously encoded source symbols. Both adaptations can be combined. That is, the positions of the limits that limit the second partition can be adapted so that they are separated from each other so that the length of the Golomb-Rice code, that is, the number of code words in it, corresponds to (or prescribes) the length of the width of the second partition. The boundary for the separation from the first to the second partition can be defined differently as set by definition or adapted according to another context dependency, in which case the adaptation of k can define the position of the boundary separation of the second and third partition through the length of the Golomb-Rice code and the width of the second partition, respectively. By coupling the adaptation of k so that the width of the second partition corresponds to the length of the Golomb-Rice code, the efficiency of the code is used optimally. Adapting ka to the syntax element statistics allows adapting the width of the second partition so that the third partition can cover as much as possible so as to reduce the overall encoding complexity since less complex code may have been used for the third partition such as the Exp-Golomb code. Additionally, the length of the first partition can be restricted to j e {1, 2, 3} possible syntax element values, such as the three lowest levels. The syntax elements under consideration can be differentially encoded or represent a residual prediction as is the case with the transform coefficient levels exemplified above representing a residual prediction. The first source symbols s1 can be symbolized / de-symbolized by using a truncated unary code with the resulting binary js being encoded - partially or all of them - adaptively to the context or not, as mentioned above.

El subgrupo de los elementos de sintaxis puede englobar niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de bloques de transformada de la imagen con los niveles de coeficiente de transformada absoluta de un bloque de transformada respectivo que se dispone dentro de la secuencia (138) de elementos de sintaxis de acuerdo con una trayectoria de barrido que produce través de los coeficientes de transformada absoluta de los bloques de transformada respectivos, en el que el descomponedor puede configurarse para adaptar uno o más límites entre las particiones durante la descomposición de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un bloque de transformada respectivo dependiendo de los niveles de coeficiente de transformada absoluta ya codificados de los coeficientes de transformada absoluta de los bloques de transformada respectivos que preceden en el orden de escaneado o dependen de una posición del nivel de coeficiente de transformada absoluta actualmente a descomponerse en el orden de escaneado, o basarse en una evaluación de los niveles de coeficiente de transformada absoluta ya reconstruidos de coeficientes de transformada vecinos - tanto espacialmente como en orden de escaneado - la posición del nivel del coeficiente de transformada absoluta a descomponerse actualmente.The subset of the syntax elements can encompass absolute transform coefficient levels of the absolute transform coefficients of image transform blocks with the absolute transform coefficient levels of a respective transform block that is arranged within the sequence ( 138) of syntax elements according to a sweep path that produces through the absolute transform coefficients of the respective transform blocks, in which the decomposer can be configured to adapt one or more boundaries between the partitions during the decomposition of the absolute transform coefficient levels of the absolute transform coefficients of a respective transform block depending on the already encoded absolute transform coefficient levels of the absolute transform coefficients of the respective transform blocks that precede in the scan order or depend on a position of the absolute transform coefficient level currently to decompose in the scan order, or be based on an evaluation of the already reconstructed absolute transform coefficient levels of coefficients transform values - both spatially and in scanning order - the position of the level of the absolute transform coefficient to be decomposed currently.

Adicionalmente, las realizaciones mencionadas anteriormente describen entre otros un aparato de decodificación entrópica que comprende un decodificador VLC 200 configurado para reconstruir de una manera en palabras de código símbolos fuente de una primera subsecuencia 204 de símbolos fuente a partir de palabras de código de un primer flujo de bits 206; un decodificador PIPE o aritmético 202 configurado para reconstruir una segunda subsecuencia 208 de símbolos fuente; un componedor 224 configurado para componer una secuencia 226 de elementos de sintaxis a partir de la primera subsecuencia 204 de símbolos fuente y la segunda subsecuencia 208 de símbolos fuente componiendo individualmente cada elemento de sintaxis a partir de un número respectivo de símbolos fuente, en el que el componedor está configurado para, en al menos un subgrupo de los elementos de sintaxis, determinar el número respectivo n de símbolos fuente si con i = 1...n dependiendo de en cuál de una secuencia de n particiones 140i -3 dentro de la que se subdivide un rango de valores de los elementos de sintaxis respectivo, cae dentro un valor z de los elementos de sintaxis respectivos, mediante la suma de los valores del número respectivo de símbolos fuente si desde 1 a n siempre que el valor de si corresponda a un rango en la i-ésima partición de modo que obtenga el valor del elemento de sintaxis z, en el que el componedor 224 está configurado para recuperar todos los símbolos fuente sx siendo x miembro de un primer subconjunto de { 1...n} de la primera subsecuencia (204) y todos los símbolos fuente sy siendo y miembro de un segundo subconjunto de {1..n} que es disjunto respecto al primer subconjunto, a partir de la segunda subsecuencia 208. Los valores z del subgrupo de los elementos de sintaxis pueden ser valores absolutos. El segundo subconjunto puede ser {1} estando dispuesta la secuencia de n particiones de modo que una partición de orden p cubre valores más altos del rango de valores que una partición de orden q para todo p, q e {1...n} siendo p>q. n puede ser 3. El primer subconjunto puede ser {2, 3} estando configurado el decodificador VLC 200 para usar un código Golomb-Rice para reconstruir de una manera en palabras de código los símbolos fuente s2, y un código Exp-Golomb para reconstruir de una manera en palabras de código los símbolos fuente s3. Más generalmente, 2 pueden ser elemento del primer subconjunto con el decodificador VLC 102 configurado para usar un código Golomb-Rice para reconstruir de una manera en palabras de código los símbolos fuente s2 y adaptar un parámetro Golomb-Rice del código Golomb-Rice de acuerdo con los símbolos fuente previamente reconstruidos. El aparato de decodificación entrópica puede comprender adicionalmente un recombinador 220 configurado para recombinar la primera subsecuencia 204 de símbolos fuente y la segunda subsecuencia de símbolos fuente para obtener la secuencia 218 de símbolos fuente. Los elementos de sintaxis pueden ser de diferente tipo y el componedor puede configurarse para realizar la composición individual dependiendo del tipo de elementos de sintaxis. El subgrupo de los elementos de sintaxis pueden englobar niveles de coeficiente de transformada absoluta de coeficientes de transformada absoluta de los bloques de transformada de una imagen con los niveles de coeficiente de transformada absoluta de un bloque de transformada respectivo que se dispone dentro de la secuencia 138 de elementos de sintaxis de acuerdo con una trayectoria de escaneado que conduce a través de los coeficientes de transformada absoluta de los bloques de transformada respectivos, en el que el componedor puede configurarse para adaptar uno o más de los límites entre las particiones durante la composición de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un bloque de transformada respectivo dependiendo de niveles de coeficiente de transformada absoluta ya reconstruidos de coeficientes de transformada absoluta de los bloques de transformada respectivos que preceden en el orden de escaneado o dependen de una posición del nivel de coeficiente de transformada absoluta actualmente a componerse en el orden de escaneado, o basándose en una evaluación de los niveles de coeficientes de transformada absoluta ya reconstruidos de los coeficientes de transformada vecinos - tanto espacialmente como en orden de escaneado - la posición del nivel de coeficiente de transformada absoluta a componerse actualmente. Additionally, the aforementioned embodiments describe among others an entropic decoding apparatus comprising a VLC decoder 200 configured to reconstruct in a codeword way source symbols of a first subsequence 204 of source symbols from codewords of a first stream bit 206; a PIPE or arithmetic decoder 202 configured to reconstruct a second subsequence 208 of source symbols; a composer 224 configured to compose a sequence 226 of syntax elements from the first source symbol subsequence 204 and the second source symbol subsequence 208 individually composing each syntax element from a respective number of source symbols, wherein the composer is configured to determine, in at least one subset of the syntax elements, the respective number n of source symbols if with i = 1 ... n depending on which of a sequence of n partitions 140 i -3 within which subdivides a range of values of the respective syntax elements, falls within a z-value of the respective syntax elements, by summing the values of the respective number of source symbols if from 1 to n as long as the value of if corresponds to a range in the i-th partition so that it gets the value of the z syntax element, in which the composer 224 is set to retrieve all the sx source symbols where x is a member of a first subset of {1 ... n} of the first subsequence (204) and all source symbols s and being y a member of a second subset of {1..n} that is disjoint with respect to the first subset, starting from the second subsequence 208. The z-values of the subgroup of the syntax elements can be absolute values. The second subset may be {1} with the sequence of n partitions arranged so that a partition of order p covers higher values in the range of values than a partition of order q for all p, qe {1 ... n} being p> q. n can be 3. The first subset can be {2, 3} with the VLC decoder 200 configured to use a Golomb-Rice code to reconstruct the s2 source symbols in code way, and an Exp-Golomb code to reconstruct in a code word way the s3 source symbols. More generally, 2 can be an element of the first subset with the VLC 102 decoder configured to use a Golomb-Rice code to reconstruct the s2 source symbols in code words and adapt a Golomb-Rice parameter of the Golomb-Rice code accordingly with previously reconstructed font symbols. The entropic decoding apparatus may further comprise a recombiner 220 configured to recombine the first source symbol subsequence 204 and the second source symbol subsequence to obtain source symbol sequence 218. Syntax elements can be of different types and the composer can be configured to perform individual composition depending on the type of syntax elements. The subset of the syntax elements can encompass absolute transform coefficient levels of absolute transform coefficients of the transform blocks of an image with the absolute transform coefficient levels of a respective transform block that is arranged within sequence 138 of syntax elements according to a scanning path leading through the absolute transform coefficients of the respective transform blocks, in which the composer can be configured to adapt one or more of the boundaries between the partitions during composition of the absolute transform coefficient levels of the absolute transform coefficients of a respective transform block depending on the already reconstructed absolute transform coefficient levels of absolute transform coefficients of the respective transform blocks that precede or depend on the scanning order a position The absolute transform coefficient level is currently to be composed in the scanning order, or based on an evaluation of the already reconstructed absolute transform coefficient levels of the neighboring transform coefficients - both spatially and in scanning order - the position of the level of absolute transform coefficient to be currently composed.

En relación a las realizaciones que combinan codificación PIPE con codificación VLC usando la descomposición de acuerdo con la Fig. 1b, se observa lo siguiente para repetir algunos aspectos de las mismas en otras palabras. In relation to the embodiments combining PIPE coding with VLC coding using the decomposition according to Fig. 1b, the following is observed to repeat some aspects thereof in other words.

Se ha descrito el mapeado de una secuencia de símbolos en un flujo de bits y el mapeado inverso. Cada símbolo lleva un(os) parámetro(s) asociado(s) con él que son conocidos simultáneamente en codificador y decodificador. El códec de entropía contiene múltiples memorias intermedias primero en entrar primero en salir (FIFO) cada una de ellas asignada a subconjuntos de parámetro(s) que se asocian a los símbolos. Para parámetro(s) dado(s) de un símbolo, el codificador asigna el símbolo a la memoria intermedia FIFO correspondiente. Dado que la regla de asignación del codificador es conocida en el lado del decodificador, el decodificador lee de la memoria intermedia FIFO a la que el codificador ha asignado al símbolo.The mapping of a sequence of symbols into a bit stream and the reverse mapping have been described. Each symbol has a parameter (s) associated with it that are known simultaneously in encoder and decoder. The entropy codec contains multiple first-in-first-out (FIFO) buffers each assigned to subsets of parameter (s) that are associated with the symbols. For given parameter (s) of a symbol, the encoder assigns the symbol to the corresponding FIFO buffer. Since the encoder allocation rule is known on the decoder side, the decoder reads from the FIFO buffer that the encoder has assigned to the symbol.

Algunos elementos de sintaxis se codifican usando códigos de longitud variable estándar y se escriben en una memoria intermedia particular. Otros elementos de sintaxis se codifican usando el concepto de codificación de entropía de probabilidad del intervalo de partición (PIPE). En esto, los símbolos se convierten a binario primero y los binarios resultantes se clasifican basándose en estimaciones de probabilidad asociadas. La estimación de probabilidad puede darse o deducirse a partir de la medición que puede realizarse simultáneamente en codificador y decodificador. Una memoria intermedia FIFO particular contiene símbolos con valores de probabilidad estimados que caen dentro del subconjunto de probabilidades que se eligen, de modo que pueda mejorarse la codificación entrópica. La mejora conseguida mediante la combinación del concepto PIPE con VLC es una reducción de complejidad mientras que aún se proporciona una alta eficiencia de codificación. Los símbolos para los es adecuado un código VLC estándar se codifican con un enfoque VLC simple y baja complejidad, mientras otros símbolos para los que la tasa de bits se incrementaría significativamente mediante su codificación con un código VLC se codifican con el concepto PIPE más sofisticado.Some syntax elements are encoded using standard variable length codes and written to a particular buffer. Other syntax elements are encoded using the concept of probability entropy of the partition interval (PIPE). In this, the symbols are converted to binary first and the resulting binaries are classified based on associated probability estimates. The probability estimate can be given or deduced from the measurement that can be performed simultaneously in encoder and decoder. A particular FIFO buffer contains symbols with estimated probability values that fall within the chosen subset of probabilities, so that entropic encoding can be improved. The improvement achieved by combining the PIPE concept with VLC is a reduction in complexity while still providing high coding efficiency. The symbols for which a standard VLC code is suitable are encoded with a simple VLC approach and low complexity, while other symbols for which the bit rate would be significantly increased by encoding with a VLC code are encoded with the more sophisticated PIPE concept.

Así, para reducir adicionalmente la complejidad de la codificación entrópica, los símbolos se han dividido en dos categorías. Los símbolos de una primera categoría pueden representarse bien con códigos VLC y no requieren la codificación PIPE más compleja, mientras que los símbolos de una segunda categoría no pueden representarse eficientemente con códigos VLC y una codificación PIPE para estos símbolos reduce significativamente la tasa de bits requerida.Thus, to further reduce the complexity of entropic encoding, the symbols have been divided into two categories. Symbols in a first category can be represented well with VLC codes and do not require the most complex PIPE encoding, while symbols in a second category cannot be represented efficiently with VLC codes and a PIPE encoding for these symbols significantly reduces the required bit rate .

Debería apreciarse que las realizaciones anteriores se han descrito con un codificador y decodificador VLC únicamente, pero queda claro que este concepto puede generalizarse al uso de dos y más codificadores y descodificadores VLC a intercalar con los codificadores PIPE.It should be appreciated that the above embodiments have been described with one VLC encoder and decoder only, but it is clear that this concept can be generalized to the use of two and more VLC encoders and decoders to be interleaved with PIPE encoders.

Aunque algunos aspectos se han descrito en el contexto de un aparato, es evidente que estos aspectos también representan una descripción de un método correspondiente, donde un bloque o dispositivo corresponde a una etapa del método o una característica de una etapa del método. Análogamente, aspectos descritos en el contexto de una etapa del método también representan una descripción de un bloque o apartado o característica correspondiente de un aparato correspondiente. Algunas o todas de las etapas del método pueden ejecutarse mediante (o usando) un aparato de hardware, como por ejemplo un microprocesador, un ordenador programable o un circuito electrónico. En algunas realizaciones, algunas o más de las etapas del método más importantes pueden ejecutarse mediante un aparato de ese tipo.Although some aspects have been described in the context of an apparatus, it is evident that these aspects also represent a description of a corresponding method, where a block or device corresponds to a method stage or a characteristic of a method stage. Similarly, aspects described in the context of a method step also represent a description of a corresponding block or section or feature of a corresponding apparatus. Some or all of the steps of the method may be executed by (or using) a hardware apparatus, such as a microprocessor, a programmable computer, or an electronic circuit. In some embodiments, some or more of the most important method steps may be performed by such an apparatus.

Las señales codificadas/comprimidas inventivas pueden almacenarse en un medio de almacenamiento digital o pueden transmitirse sobre un medio de transmisión tal como un medio de transmisión inalámbrico o un medio de transmisión por cable tal como Internet.The inventive encrypted / compressed signals can be stored on a digital storage medium or can be transmitted on a transmission medium such as a wireless transmission medium or a cable transmission medium such as the Internet.

Dependiendo de ciertos requisitos de implementación, las realizaciones de la invención pueden implementarse en hardware o software. La implementación puede realizarse usando un medio de almacenamiento digital, por ejemplo un disco flexible, un DVD, un Blue-Ray, un CD, una ROM, una PROM, una EPROM, una EEPROM o una memoria FLASH, que tenga señales de control legibles electrónicamente almacenadas en el mismo, que coopere (o sea capaz de cooperar) con un sistema informático programable de modo que se realice el método respectivo. Por lo tanto, el medio de almacenamiento digital puede ser legible por ordenador.Depending on certain implementation requirements, the embodiments of the invention can be implemented in hardware or software. Implementation can be done using a digital storage medium, for example a floppy disk, a DVD, a Blue-Ray, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, which has readable control signals electronically stored therein, cooperating (or being able to cooperate) with a programmable computer system so that the respective method is performed. Therefore, the digital storage medium can be computer readable.

Algunas realizaciones de acuerdo con la invención comprenden un portador de datos que tiene señales de control legibles electrónicamente, que es capaz de cooperar con un sistema informático programable, de modo se realice uno de los métodos descritos en el presente documento.Some embodiments in accordance with the invention comprise a data carrier having electronically readable control signals, which is capable of cooperating with a programmable computer system, thereby performing one of the methods described herein.

Generalmente, las realizaciones de la presente invención pueden implementarse como un producto de programa informático con un código de programa, siendo operativo el código de programa para la realización de uno de los métodos cuando el producto de programa informático se ejecuta en un ordenador. El código de programa puede almacenarse por ejemplo sobre un portador legible por máquina.Generally, the embodiments of the present invention can be implemented as a computer program product with a program code, the program code being operative for carrying out one of the methods when the computer program product is run on a computer. The program code can for example be stored on a machine-readable carrier.

Otras realizaciones comprenden el programa informático para la realización de uno de los métodos descritos en el presente documento, almacenado en un portador legible por máquina.Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine-readable carrier.

En otras palabras, una realización del método inventivo es, por lo tanto, un programa informático que tiene un código de programa para la realización de uno de los métodos descritos en el presente documento, cuando el programa informático se ejecuta en un ordenador.In other words, an embodiment of the inventive method is therefore a computer program having a program code for carrying out one of the methods described herein, when the computer program is run on a computer.

Una realización adicional de los métodos inventivos es, por lo tanto, un portador de datos (o un medio de almacenamiento digital, o un medio legible por ordenador) que comprende, registrado en él, el programa informático para la realización de uno de los métodos descritos en el presente documento.A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer readable medium) comprising, recorded therein, the computer program for carrying out one of the methods. described in this document.

Una realización adicional del método inventivo es, por lo tanto, un flujo de datos o una secuencia de señales que representan el programa informático para la realización de uno de los métodos descritos en el presente documento. El flujo de datos o la secuencia de señales pueden configurarse por ejemplo para transferirse a través de una conexión de comunicación de datos, por ejemplo a través de la Internet.A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for carrying out one of the methods described herein. The data stream or signal sequence can for example be configured to be transferred over a data communication connection, for example via the Internet.

Una realización adicional comprende un medio de procesamiento, por ejemplo un ordenador, o un dispositivo lógico programare, configurado para o adaptado para realizar uno de los métodos descritos en el presente documento. Una realización adicional comprende un ordenador que tiene instalado en el mismo el programa informático para la realización de uno de los métodos descritos en el presente documento.A further embodiment comprises a processing means, for example a computer, or a programmable logic device configured for or adapted to perform one of the methods described herein. A further embodiment comprises a computer having the computer program installed therein for carrying out one of the methods described herein.

En algunas realizaciones, puede usarse un dispositivo lógico programable (por ejemplo un campo de matrices de puertas programables) para realizar algunas o todas las funcionalidades de los métodos descritos en el presente documento. En algunas realizaciones, un campo de matrices de puertas programables puede cooperar con un microprocesador para realizar uno de los métodos descritos en el presente documento. Generalmente, los métodos se realizan preferentemente mediante un aparato de hardware.In some embodiments, a programmable logic device (eg, a field of programmable gate arrays) may be used to perform some or all of the functionality of the methods described herein. In some embodiments, a field of programmable gate arrays can cooperate with a microprocessor to perform one of the methods described herein. Generally, the methods are preferably performed using a hardware apparatus.

Las realizaciones descritas anteriormente son simplemente ilustrativas de los principios de la presente invención. Se entiende que serán evidentes para los expertos en la materia modificaciones y variaciones de las disposiciones y los detalles descritos en el presente documento. Es la intención, por lo tanto, limitarse solamente por el alcance de las reivindicaciones de patente inminentes y no por los detalles específicos presentados a modo de descripción y explicación de las realizaciones del presente documento. The embodiments described above are merely illustrative of the principles of the present invention. It is understood that modifications and variations of the provisions and details described herein will be apparent to those skilled in the art. It is the intention, therefore, to be limited only by the scope of the impending patent claims and not by the specific details presented by way of description and explanation of the embodiments herein.

Claims (6)

REIVINDICACIONES 1. Aparato de codificación entrópica que comprende1. Entropic coding apparatus comprising un descomponedor (136) configurado para convertir una secuencia (138) de elementos de sintaxis que tienen un rango de valores que se subdivide en una secuencia de N particiones (1401-3) en una secuencia (106) de símbolos fuente (106) descomponiendo individualmente al menos un subgrupo de los elementos de sintaxis en un número respectivo n de símbolos fuente si con i = 1...n, dependiendo el número respectivo n de símbolos fuente de en cuál de las secuencias de N particiones (14 O1-3) cae un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del número respectivo de símbolos fuente si produce z, y, si n>1, para todo i = 1...n-1, el valor de si corresponde a un rango de la i-ésima partición;a decomposer (136) configured to convert a sequence (138) of syntax elements having a range of values that is subdivided into a sequence of N partitions (1401-3) into a sequence (106) of source symbols (106) by decomposing individually at least a subset of the syntax elements in a respective number n of source symbols if with i = 1 ... n, the respective number n of source symbols depending on which of the sequences of N partitions (14 O1-3 ) drops a value z of the respective syntax elements, so that a sum of values of the respective number of source symbols if it produces z, and, if n> 1, for all i = 1 ... n-1, the value whether it corresponds to a rank of the i-th partition; un subdivisor (100) configurado para subdividir la secuencia (106) de símbolos fuente en una primera subsecuencia (108) de símbolos fuente y una segunda subsecuencia (110) de símbolos fuente de modo que todos los símbolos fuente sx, siendo x un miembro de un primer subconjunto de {1...N}, estén contenidos dentro de la primera subsecuencia (108) y todos los símbolos fuente sy, siendo y un miembro de un segundo subconjunto de {1...N} que es disjunto respecto al primer subconjunto, estén contenidos dentro de la segunda subsecuencia (110);a subdivider (100) configured to subdivide the source symbol sequence (106) into a first source symbol subsequence (108) and a second source symbol subsequence (110) such that all source symbols sx, x being a member of a first subset of {1 ... N}, are contained within the first subsequence (108) and all source symbols sy, where y is a member of a second subset of {1 ... N} that is disjoint with respect to first subset, are contained within the second subsequence (110); un codificador VLC (102) configurado para codificar de una manera a nivel de símbolos los símbolos fuente de la primera subsecuencia (108); ya VLC encoder (102) configured to encode in a symbol level manner the source symbols of the first subsequence (108); and un codificador aritmético (104) configurado para codificar la segunda subsecuencia (110) de símbolos fuente, caracterizado porque el subgrupo de los elementos de sintaxis abarca niveles de coeficiente de transformada absoluta de coeficientes de transformada absoluta de bloques de transformada de una imagen con los niveles de coeficiente de transformada absoluta de un bloque respectivo de transformada que representa un residual de predicción y está dispuesto dentro de la secuencia (138) de elementos de sintaxis de acuerdo con una trayectoria de escaneo que conduce a través de los coeficientes de transformada absoluta de los respectivos bloques de transformada, en donde el descomponedor se configura para adaptar uno o más de límites entre las divisiones durante la descomposición de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un respectivo bloque de transformada dependiendo de niveles de coeficiente de transformada absoluta ya codificados de coeficientes de transformada absoluta de los respectivos bloques de transformada precedentes en el orden de escaneo o dependiendo de una posición del nivel de coeficiente de transformada absoluta a descomponer actualmente en el orden de escaneo, o basado en una evaluación de los niveles de coeficientes de transformada absoluta ya reconstruidos de coeficientes de transformada cercanos, ya sea espacialmente o en orden de escaneo, a la posición del nivel de coeficiente de transformada absoluta a descomponer actualmente.an arithmetic encoder (104) configured to encode the second subsequence (110) of source symbols, characterized in that the subgroup of the syntax elements encompasses levels of absolute transform coefficient of absolute transform coefficients of image transform blocks with levels absolute transform coefficient of a respective transform block representing a prediction residual and arranged within the sequence (138) of syntax elements according to a scanning path leading through the absolute transform coefficients of the respective transform blocks, where the decomposer is configured to adapt one or more of the boundaries between the divisions during the decomposition of the absolute transform coefficient levels of the absolute transform coefficients of a respective transform block depending on coefficient levels of absolute transform already encoded absolute transform coefficients of the respective preceding transform blocks in the scanning order or depending on a position of the absolute transform coefficient level to be currently decomposed in the scanning order, or based on an evaluation of the coefficient levels of Absolute transform already reconstructed from close transform coefficients, either spatially or in scanning order, to the position of the absolute transform coefficient level to decompose currently. 2. Aparato de codificación entrópica de acuerdo con la reivindicación 1, en donde la secuencia (138) de elementos de sintaxis representa un vídeo de una manera escalable.2. Entropic encoding apparatus according to claim 1, wherein the syntax element sequence (138) represents a video in a scalable manner. 3. Aparato de codificación entrópica que comprende3. Entropic coding apparatus comprising un decodificador VLC (200) configurado para reconstruir símbolos fuente a nivel de palabra de código de una primera subsecuencia (204) de símbolos fuente desde palabras de código de un primer flujo de bits (206);a VLC decoder (200) configured to reconstruct codeword level source symbols of a first source symbol subsequence (204) from codewords of a first bitstream (206); un decodificador aritmético (202) configurado para reconstruir una segunda subsecuencia (208) de símbolos fuente; un componedor (224) configurado para componer una secuencia (226) de elementos de sintaxis con un intervalo de valor que se subdivide en una secuencia de N particiones (1401-3) desde la primera subsecuencia (204) de símbolos fuente y la segunda subsecuencia (208) de símbolos fuente componiendo individualmente cada elemento de sintaxis desde un número respectivo n de símbolos fuente al, para al menos un subgrupo de los elementos de sintaxis, determinar el respectivo número n de símbolos fuente si con i=1...n dependiendo de en cuál de la secuencia de N particiones (1401-3) en las que se subdivide un intervalo de valor de los elementos de sintaxis respectivos, cae un valor z de los respectivos elementos de sintaxis, sumando los valores del respectivo número de símbolos fuente si desde 1 a n siempre y cuando el valor de si corresponda a un intervalo de la partición i-ésima para obtener el valor del elemento de sintaxis z, en donde el componedor (224) se configura para recuperar todos los símbolos fuente sx, siendo x miembro de un primer subconjunto de {1...N} desde la primera subsecuencia (204) y todos los símbolos fuente sy, siendo y miembro de un segundo subconjunto de {1...N} que es disjunto respecto al primer subconjunto, desde la segunda subsecuencia (208),an arithmetic decoder (202) configured to reconstruct a second subsequence (208) of source symbols; a composer (224) configured to compose a sequence (226) of syntax elements with a value range that is subdivided into a sequence of N partitions (1401-3) from the first subsequence (204) of source symbols and the second subsequence (208) of source symbols by individually composing each syntax element from a respective number n of source symbols to, for at least a subgroup of the syntax elements, determining the respective number n of source symbols if with i = 1 ... n Depending on which of the sequence of N partitions (1401-3) in which a value range of the respective syntax elements is subdivided, a z value of the respective syntax elements falls, adding the values of the respective number of symbols source if from 1 to n as long as the value of si corresponds to an interval of the i-th partition to obtain the value of the z syntax element, where the composer (224) is configured to retrieve all s source symbols sx, where x is a member of a first subset of {1 ... N} from the first subsequence (204) and all source symbols sy, where y is a member of a second subset of {1 ... N} which is disjoint with respect to the first subset, from the second subsequence (208), caracterizado porque el subgrupo de los elementos de sintaxis abarca niveles de coeficiente de transformada absoluta de coeficientes de transformada absoluta de bloques de transformada de una imagen con los niveles de coeficiente de transformada absoluta de un bloque respectivo de transformada que representa un residual de predicción y está dispuesto dentro de la secuencia (138) de elementos de sintaxis de acuerdo con una trayectoria de escaneo que conduce a través de los coeficientes de transformada absoluta de los respectivos bloques de transformada, en donde el componedor se configura para adaptar uno o más de límites entre las divisiones durante la composición de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un respectivo bloque de transformada dependiendo de niveles de coeficiente de transformada absoluta ya reconstruidos de coeficientes de transformada absoluta de los respectivos bloques de transformada precedentes en el orden de escaneo o dependiendo de una posición del nivel de coeficiente de transformada absoluta a componer actualmente en el orden de escaneo, o basado en una evaluación de los niveles de coeficientes de transformada absoluta ya reconstruidos de coeficientes de transformada cercanos, ya sea espacialmente o en orden de escaneo, a la posición del nivel de coeficiente de transformada absoluta a componer actualmente. characterized in that the subset of the syntax elements encompasses absolute transform coefficient levels of absolute transform coefficients of transform blocks of an image with the absolute transform coefficient levels of a respective transform block representing a prediction residual and is arranged within the sequence (138) of syntax elements according to a scanning path leading through the absolute transform coefficients of the respective transform blocks, where the composer is configured to adapt one or more of the boundaries between the divisions during the composition of the levels of the absolute transform coefficient of the absolute transform coefficients of a respective transform block depending on the already reconstructed absolute transform coefficient levels of the absolute transform coefficients of the respective preceding transform blocks in the order scanning or depending on a position of the absolute transform coefficient level to be currently composed in the scanning order, or based on an evaluation of the already reconstructed absolute transform coefficient levels of close transform coefficients, either spatially or in order scanning, to the position of the level of absolute transform coefficient to be currently composed. 4. Aparato de decodificación entrópica de acuerdo con la reivindicación 3, en donde la secuencia (226) de elementos de sintaxis representa un vídeo de una manera escalable.4. Entropic decoding apparatus according to claim 3, wherein the sequence (226) of syntax elements represents a video in a scalable manner. 5. Método de codificación entrópica que comprende5. Entropic encoding method comprising convertir una secuencia (138) de elementos de sintaxis que tienen un rango de valores que se subdivide en una secuencia de N particiones (1401-3) en una secuencia (106) de símbolos fuente (106) descomponiendo individualmente al menos un subgrupo de los elementos de sintaxis en un número respectivo n de símbolos fuente si con i = 1...n, dependiendo el número respectivo n de símbolos fuente de en cuál de las secuencias de N particiones (1401-3) cae un valor z de los elementos de sintaxis respectivos, de modo que una suma de valores del número respectivo de símbolos fuente si produce z, y, si n>1 , para todo i = 1...n-1 , el valor de si corresponde a un rango de la i-ésima partición;converting a sequence (138) of syntax elements having a range of values that is subdivided into a sequence of N partitions (1401-3) into a sequence (106) of source symbols (106) by individually decomposing at least a subgroup of the syntax elements in a respective number n of source symbols if with i = 1 ... n, the respective number n of source symbols depending on which of the sequences of N partitions (1401-3) a z-value of the elements falls of respective syntaxes, so that a sum of values of the respective number of source symbols if produces z, and, if n> 1, for all i = 1 ... n-1, the value of si corresponds to a range of the i-th partition; subdividir la secuencia (106) de símbolos fuente en una primera subsecuencia (108) de símbolos fuente y una segunda subsecuencia (110 ) de símbolos fuente de modo que todos los símbolos fuente sx, siendo x un miembro de un primer subconjunto de {1...N}, estén contenidos dentro de la primera subsecuencia (108) y todos los símbolos fuente sy, siendo y un miembro de un segundo subconjunto de {1...N} que es disjunto respecto al primer subconjunto, estén contenidos dentro de la segunda subsecuencia (110 );subdivide the source symbol sequence (106) into a first source symbol subsequence (108) and a second source symbol subsequence (110) such that all source symbols sx, x being a member of a first subset of {1. ..N}, are contained within the first subsequence (108) and all source symbols sy, where y is a member of a second subset of {1 ... N} that is disjoint with respect to the first subset, are contained within the second subsequence (110); realizando codificación por VLC, codificando de una manera a nivel de símbolos los símbolos fuente de la primera subsecuencia (108); yperforming VLC encoding, encoding in a symbol level manner the source symbols of the first subsequence (108); and realizando codificación aritmética, codificando la segunda subsecuencia (110 ) de símbolos fuente, caracterizado porque el subgrupo de los elementos de sintaxis abarca niveles de coeficiente de transformada absoluta de coeficientes de transformada absoluta de bloques de transformada de una imagen con los niveles de coeficiente de transformada absoluta de un bloque respectivo de transformada que representa un residual de predicción y está dispuesto dentro de la secuencia (138) de elementos de sintaxis de acuerdo con una trayectoria de escaneo que conduce a través de los coeficientes de transformada absoluta de los respectivos bloques de transformada, en donde la composición comprende adaptar uno o más de límites entre las divisiones durante la composición de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un respectivo bloque de transformada dependiendo de niveles de coeficiente de transformada absoluta ya codificados de coeficientes de transformada absoluta de los respectivos bloques de transformada precedentes en el orden de escaneo o dependiendo de una posición del nivel de coeficiente de transformada absoluta a descomponer actualmente en el orden de escaneo, o basado en una evaluación de los niveles de coeficientes de transformada absoluta ya reconstruidos de coeficientes de transformada cercanos, ya sea espacialmente o en orden de escaneo, a la posición del nivel de coeficiente de transformada absoluta a componer actualmente.performing arithmetic encoding, encoding the second subsequence (110) of source symbols, characterized in that the subgroup of the syntax elements encompasses absolute transform coefficient levels of absolute transform coefficients of transform blocks of an image with the transform coefficient levels absolute of a respective transform block representing a prediction residual and arranged within the sequence (138) of syntax elements according to a scan path leading through the absolute transform coefficients of the respective transform blocks , where the composition comprises adapting one or more of the limits between the divisions during the composition of the levels of absolute transform coefficient of the absolute transform coefficients of a respective transform block depending on the levels of absolute transform coefficient already coded by coefficients d e absolute transform of the respective preceding transform blocks in the scanning order or depending on a position of the absolute transform coefficient level to be currently decomposed in the scanning order, or based on an evaluation of the absolute transform coefficient levels already reconstructed from close transform coefficients, either spatially or in scanning order, to the position of the absolute transform coefficient level to be currently composed. 6. Método de decodificación entrópica que comprende6. Entropic decoding method comprising por decodificación VLC, reconstruir símbolos fuente a nivel de palabra de código de una primera subsecuencia (204) de símbolos fuente desde palabras de código de un primer flujo de bits (206);by VLC decoding, rebuilding source symbols at the codeword level of a first subsequence (204) of source symbols from codewords of a first bitstream (206); por decodificación aritmética, reconstruir una segunda subsecuencia (208) de símbolos fuente;by arithmetic decoding, reconstruct a second subsequence (208) of source symbols; componer una secuencia (226) de elementos de sintaxis con un intervalo de valor que se subdivide en una secuencia de N particiones (1401-3) desde la primera subsecuencia (204) de símbolos fuente y la segunda subsecuencia (208 ) de símbolos fuente componiendo individualmente cada elemento de sintaxis desde un número respectivo n de símbolos fuente al, para al menos un subgrupo de los elementos de sintaxis, determinar el respectivo número n de símbolos fuente si con i=1...n dependiendo de en cuál de la secuencia de N particiones (1401-3) en las que se subdivide un intervalo de valor de los elementos de sintaxis respectivos, cae un valor z de los respectivos elementos de sintaxis, sumando los valores del respectivo número de símbolos fuente si desde 1 a n siempre y cuando el valor de si corresponda a un intervalo de la partición i-ésima para obtener el valor del elemento de sintaxis z, en donde la composición (224) comprende recuperar todos los símbolos fuente sx, siendo x miembro de un primer subconjunto de {Í...N } desde la primera subsecuencia (204) y todos los símbolos fuente sy, siendo y miembro de un segundo subconjunto de { 1...N} que es disjunto respecto al primer subconjunto, desde la segunda subsecuencia (208),compose a sequence (226) of syntax elements with a value range that is subdivided into a sequence of N partitions (1401-3) from the first subsequence (204) of source symbols and the second subsequence (208) of source symbols composing individually each syntax element from a respective number n of source symbols to, for at least a subgroup of the syntax elements, determine the respective number n of source symbols if with i = 1 ... n depending on which of the sequence of N partitions (1401-3) in which a value range of the respective syntax elements is subdivided, a z value of the respective syntax elements falls, adding the values of the respective number of source symbols if from 1 to n always y when the value of si corresponds to an interval of the i-th partition to obtain the value of the z syntax element, where the composition (224) comprises recovering all the source symbols sx, x being a member of p first subset of {Í ... N} from the first subsequence (204) and all source symbols sy, being and member of a second subset of {1 ... N} that is disjoint from the first subset, from the second subsequence (208), caracterizado porque el subgrupo de los elementos de sintaxis abarca niveles de coeficiente de transformada absoluta de coeficientes de transformada absoluta de bloques de transformada de una imagen con los niveles de coeficiente de transformada absoluta de un bloque respectivo de transformada que representa un residual de predicción y está dispuesto dentro de la secuencia (138) de elementos de sintaxis de acuerdo con una trayectoria de escaneo que conduce a través de los coeficientes de transformada absoluta de los respectivos bloques de transformada, en donde la composición comprende adaptar uno o más de límites entre las divisiones durante la composición de los niveles de coeficiente de transformada absoluta de los coeficientes de transformada absoluta de un respectivo bloque de transformada dependiendo de niveles de coeficiente de transformada absoluta ya reconstruidos de coeficientes de transformada absoluta de los respectivos bloques de transformada precedentes en el orden de escaneo o dependiendo de una posición del nivel de coeficiente de transformada absoluta a descomponer actualmente en el orden de escaneo, o basado en una evaluación de los niveles de coeficientes de transformada absoluta ya reconstruidos de coeficientes de transformada cercanos, ya sea espacialmente o en orden de escaneo, a la posición del nivel de coeficiente de transformada absoluta a componer actualmente. characterized in that the subset of the syntax elements encompasses absolute transform coefficient levels of absolute transform coefficients of transform blocks of an image with the absolute transform coefficient levels of a respective transform block representing a prediction residual and is arranged within the sequence (138) of syntax elements according to a scanning path leading through the absolute transform coefficients of the respective transform blocks, where the composition comprises adapting one or more of the boundaries between the divisions during the composition of the levels of absolute transform coefficient of the absolute transform coefficients of a respective transform block depending on the already transformed absolute transform coefficient levels of absolute transform coefficients of the respective preceding transform blocks in the order of esc addendum or depending on a position of the absolute transform coefficient level to be currently decomposed in the scanning order, or based on an evaluation of the already reconstructed absolute transform coefficient levels of nearby transform coefficients, either spatially or in order of scan, at the position of the absolute transform coefficient level to be currently composed.
ES18160276T 2011-01-14 2012-01-12 Entropic Encoding and Decoding Scheme Active ES2759513T3 (en)

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
ES2759513T3 true ES2759513T3 (en) 2020-05-11

Family

ID=45491598

Family Applications (5)

Application Number Title Priority Date Filing Date
ES12700329.1T Active ES2607982T3 (en) 2011-01-14 2012-01-12 Entropic encoding and decoding scheme
ES14160511.3T Active ES2566917T3 (en) 2011-01-14 2012-01-12 Entropy coding and decoding scheme
ES14160512.1T Active ES2671482T3 (en) 2011-01-14 2012-01-12 Entropic coding scheme
ES14160496.7T Active ES2566916T3 (en) 2011-01-14 2012-01-12 Entropy coding and decoding scheme
ES18160276T Active ES2759513T3 (en) 2011-01-14 2012-01-12 Entropic Encoding and Decoding Scheme

Family Applications Before (4)

Application Number Title Priority Date Filing Date
ES12700329.1T Active ES2607982T3 (en) 2011-01-14 2012-01-12 Entropic encoding and decoding scheme
ES14160511.3T Active ES2566917T3 (en) 2011-01-14 2012-01-12 Entropy coding and decoding scheme
ES14160512.1T Active ES2671482T3 (en) 2011-01-14 2012-01-12 Entropic coding scheme
ES14160496.7T Active ES2566916T3 (en) 2011-01-14 2012-01-12 Entropy coding and decoding scheme

Country Status (15)

Country Link
US (16) US9083374B2 (en)
EP (7) EP3349360B1 (en)
JP (8) JP5809292B2 (en)
KR (12) KR20230145538A (en)
CN (7) CN103404035B (en)
DK (5) DK2760138T3 (en)
ES (5) ES2607982T3 (en)
HK (4) HK1201384A1 (en)
HU (5) HUE028417T2 (en)
NO (1) NO2956175T3 (en)
PL (5) PL3349360T3 (en)
PT (3) PT2664070T (en)
TR (1) TR201807771T4 (en)
TW (8) TWI640169B (en)
WO (1) WO2012095488A2 (en)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102918564B (en) * 2010-03-10 2016-10-26 汤姆森特许公司 There is Video coding and the method and apparatus retraining conversion of decoding that conversion selects
CN103404035B (en) * 2011-01-14 2017-05-10 Ge视频压缩有限责任公司 Entropy encoding and decoding scheme
KR102106534B1 (en) * 2011-06-28 2020-05-04 삼성전자주식회사 Method and apparatus for entropy coding and 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
CN103907349B (en) * 2011-11-04 2018-08-28 夏普株式会社 Arithmetic decoding device, picture decoding apparatus, arithmetic coding device and arithmetic decoding method
BR112014011150B1 (en) 2011-11-08 2022-08-09 Google Technology Holdings LLC METHOD OF DETERMINING BINARY CODE WORDS FOR TRANSFORMATION COEFFICIENTS
BR112014011155B1 (en) 2011-11-08 2023-04-04 Google Technology Holdings LLC METHOD OF DETERMINING A BINARY CODE WORD FOR A SYMBOL, VIDEO ENCODER AND COMPUTER READABLE MEDIA
EP2803190B1 (en) * 2012-01-09 2017-10-25 Dolby Laboratories Licensing Corporation Hybrid reference picture reconstruction method for multiple layered video coding systems
ES2638093T3 (en) 2012-01-20 2017-10-18 Ge Video Compression, Llc Coding and decoding of transform coefficient
US20130188729A1 (en) * 2012-01-21 2013-07-25 General Instrument Corporation Method of determining binary codewords for transform coefficients
CN105027560A (en) * 2012-01-21 2015-11-04 摩托罗拉移动有限责任公司 Method of determining binary codewords for transform coefficients
WO2013109993A1 (en) * 2012-01-21 2013-07-25 General Instrument Corporation Method of determining binary codewords for transform coefficients
US9479780B2 (en) 2012-02-01 2016-10-25 Google Technology Holdings LLC Simplification of significance map coding
EP2810440A1 (en) 2012-02-04 2014-12-10 General Instrument Corporation Devices and methods for context reduction in last significant coefficient position coding
WO2013116874A1 (en) 2012-02-05 2013-08-08 General Instrument Corporation Method of determining binary codewords for transform coefficients
US11039138B1 (en) * 2012-03-08 2021-06-15 Google Llc Adaptive coding of prediction modes using probability distributions
US9654777B2 (en) 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
WO2014186542A1 (en) * 2013-05-15 2014-11-20 Vid Scale, Inc. Single loop decoding based inter layer prediction
US10021419B2 (en) * 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
US9558567B2 (en) * 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US9648330B2 (en) * 2013-07-15 2017-05-09 Qualcomm Incorporated Inter-color component residual prediction
US9485222B2 (en) * 2013-08-20 2016-11-01 Hewlett-Packard Development Company, L.P. Data stream traffic control
US10582213B2 (en) 2013-10-14 2020-03-03 Microsoft Technology Licensing, Llc Features of intra block copy prediction mode for video and image coding and decoding
US10506254B2 (en) 2013-10-14 2019-12-10 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
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
EP4096221A1 (en) 2014-01-03 2022-11-30 Microsoft Technology Licensing, LLC Block vector prediction in video and image coding/decoding
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
KR102413529B1 (en) 2014-06-19 2022-06-24 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 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
KR20170078670A (en) * 2014-11-04 2017-07-07 삼성전자주식회사 Probabilistic Update Method for Binary Arithmetic Coding / Decoding and Entropy Coding / Decoding Device Using It
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
SG10202111537RA (en) * 2015-03-10 2021-11-29 Huawei Tech Co Ltd Picture prediction method and related apparatus
CN106664405B (en) 2015-06-09 2020-06-09 微软技术许可有限责任公司 Robust encoding/decoding of escape-coded pixels with palette mode
GB2542707B (en) * 2015-07-03 2020-02-12 Sisp Tech Ltd Data processing method and apparatus
CN108141594B (en) * 2015-10-13 2021-02-26 三星电子株式会社 Method and apparatus 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 (en) * 2016-01-29 2021-08-17 麻省理工学院 Apparatus and method for multi-code distributed storage
US9792044B2 (en) * 2016-02-12 2017-10-17 Oracle International Corporation Decompression history buffer read/write pipelines
EP3220304B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to 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 (en) 2016-07-25 2018-06-06 株式会社高速屋 Data compression encoding method, apparatus thereof, and program thereof
CN106507111B (en) * 2016-11-17 2019-11-15 上海兆芯集成电路有限公司 Method for video coding using residual compensation and the device using this method
GB2559200A (en) 2017-01-31 2018-08-01 Nokia Technologies Oy Stereo audio signal encoder
KR20180089290A (en) * 2017-01-31 2018-08-08 세종대학교산학협력단 Method and apparatus for encoding/decoding an image
RU2746706C1 (en) * 2017-04-13 2021-04-19 ЭлДжи ЭЛЕКТРОНИКС ИНК. Method and device for encoding / decoding of images
CN107483059B (en) * 2017-07-31 2020-06-12 广东工业大学 Multi-channel data coding and decoding method and device based on dynamic Huffman tree
KR102441568B1 (en) * 2017-08-21 2022-09-07 한국전자통신연구원 Method and apparatus for encoding/decoding image, recording medium for stroing bitstream
CN108062779B (en) * 2017-12-26 2021-11-23 杭州健培科技有限公司 Lossless compression method for breast tomography radiographic image
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 (en) * 2018-04-12 2018-09-28 深圳市易迈数据技术有限公司 Safe code generating method based on big data and its method of calibration
US10630990B1 (en) * 2018-05-01 2020-04-21 Amazon Technologies, Inc. Encoder output responsive to quality metric information
WO2019225346A1 (en) * 2018-05-22 2019-11-28 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ Coding device, decoding device, coding method, decoding method, and picture compression program
JP7167144B2 (en) * 2018-06-06 2022-11-08 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
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 (en) * 2018-07-02 2023-08-04 ルネサスエレクトロニクス株式会社 Semiconductor equipment and communication systems
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
WO2020080873A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Method and apparatus for streaming data
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
WO2020080698A1 (en) 2018-10-19 2020-04-23 삼성전자 주식회사 Method and device for evaluating subjective quality of video
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
KR102285738B1 (en) 2018-10-19 2021-08-05 삼성전자주식회사 Method and apparatus for assessing subjective quality of a video
WO2020080665A1 (en) 2018-10-19 2020-04-23 Samsung Electronics Co., Ltd. Methods and apparatuses for performing artificial intelligence encoding and artificial intelligence decoding on image
KR102525578B1 (en) 2018-10-19 2023-04-26 삼성전자주식회사 Method and Apparatus for video encoding and Method and Apparatus for video decoding
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 (en) * 2019-07-22 2021-07-06 浙江大华技术股份有限公司 Arithmetic entropy coding method and system
KR102138892B1 (en) * 2019-09-24 2020-07-28 심인보 Apparatus for compressing data losslessly and method thereof
WO2021071187A1 (en) * 2019-10-07 2021-04-15 엘지전자 주식회사 Method and apparatus for deriving rice parameter in video/image coding system
US20240080480A1 (en) * 2019-10-07 2024-03-07 Lg Electronics Inc. Entropy coding method and device in video/image coding system
KR102436512B1 (en) 2019-10-29 2022-08-25 삼성전자주식회사 Method and Apparatus for video encoding and Method and Apparatus for video decoding
KR20210056179A (en) 2019-11-08 2021-05-18 삼성전자주식회사 AI encoding apparatus and operating method for the same, and AI decoding apparatus and operating method for the same
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 (en) * 2020-01-15 2021-10-01 瑞鼎科技股份有限公司 Stream decompression circuit
KR102287942B1 (en) 2020-02-24 2021-08-09 삼성전자주식회사 Apparatus and method for performing artificial intelligence encoding and artificial intelligence decoding of image using pre-processing
CN111787326B (en) * 2020-07-31 2022-06-28 广州市百果园信息技术有限公司 Entropy coding and decoding method and device
US11496289B2 (en) 2020-08-05 2022-11-08 Microsoft Technology Licensing, Llc Cryptography using varying sized symbol sets
JPWO2022130477A1 (en) * 2020-12-15 2022-06-23
WO2022182208A1 (en) * 2021-02-25 2022-09-01 주식회사 케이티 Video signal encoding/decoding method, and recording medium storing data stream generated by encoding method
WO2022192902A1 (en) * 2021-03-11 2022-09-15 Innopeak Technology, Inc. Remaining level binarization for video coding
WO2023137540A1 (en) * 2022-01-19 2023-07-27 The Governing Council Of The University Of Toronto System and method for off-chip data compression and decompression for machine learning networks
CN117082257A (en) * 2022-05-10 2023-11-17 华为技术有限公司 Sub-stream interleaving method
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 (en) * 2022-07-20 2022-12-16 阿里巴巴(中国)有限公司 Context probability processing circuit and method based on AV1 entropy coding and related device
CN115882867B (en) * 2023-03-01 2023-05-12 山东水发紫光大数据有限责任公司 Data compression storage method based on big data

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0799812B2 (en) * 1990-03-26 1995-10-25 株式会社グラフイックス・コミュニケーション・テクノロジーズ Signal coding apparatus, signal decoding apparatus, and signal coding / decoding apparatus
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
CN1064773C (en) * 1993-06-30 2001-04-18 索尼公司 Method and apparatus for encoding digital signals, method and apparatus for decoding the coded signals, and medium for recording the coded signals
JP3125543B2 (en) * 1993-11-29 2001-01-22 ソニー株式会社 Signal encoding method and apparatus, signal decoding method and apparatus, and recording medium
FR2722041B1 (en) * 1994-06-30 1998-01-02 Samsung Electronics Co Ltd HUFFMAN DECODER
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 (en) * 1995-12-23 1999-06-15 전주범 Apparatus for selectively approximating contour of image
JP3346204B2 (en) * 1996-12-26 2002-11-18 富士ゼロックス株式会社 Variable length code decoding device
CN1103911C (en) 1997-10-27 2003-03-26 刘北英 Method for combined use of all 'position number sum' evenly divided locating device
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
EP1422944B8 (en) * 2001-08-31 2010-02-17 Panasonic Corporation Picture decoding method and apparatus thereof
JP4125565B2 (en) * 2001-08-31 2008-07-30 松下電器産業株式会社 Image encoding method, image decoding method and apparatus
US6882685B2 (en) * 2001-09-18 2005-04-19 Microsoft Corporation Block transform and quantization for image and video coding
US7436329B2 (en) * 2003-04-17 2008-10-14 Droplet Technology, Inc. Multiple technique entropy coding system and method
US6825782B2 (en) * 2002-09-20 2004-11-30 Ntt Docomo, Inc. Method and apparatus for arithmetic coding and termination
JP4240283B2 (en) * 2002-10-10 2009-03-18 ソニー株式会社 Decoding device and decoding method
CN1209925C (en) * 2003-01-10 2005-07-06 李春林 Data compress method based on higher order entropy of message source
JP2005130099A (en) * 2003-10-22 2005-05-19 Matsushita Electric Ind Co Ltd Arithmetic decoding device, arithmetic encoding device, arithmetic encoding/decoding device, portable terminal equipment, moving image photographing device, and moving image recording/reproducing device
CN101241701B (en) * 2004-09-17 2012-06-27 广州广晟数码技术有限公司 Method and equipment used for audio signal decoding
DE102004056446A1 (en) 2004-11-23 2006-06-29 Siemens Ag Method for transcoding and transcoding device
KR100636229B1 (en) * 2005-01-14 2006-10-19 학교법인 성균관대학 Method and apparatus for adaptive entropy encoding and decoding for scalable video coding
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 (en) * 2005-10-21 2007-05-10 Victor Co Of Japan Ltd Arithmetic encoding and decoding device
KR100873636B1 (en) * 2005-11-14 2008-12-12 삼성전자주식회사 Method and apparatus for encoding/decoding image using single coding mode
GB0524983D0 (en) * 2005-12-07 2006-01-18 Imagination Tech Ltd Recompression and decompression of a data stream for rate smoothing
CN101529848A (en) * 2006-06-16 2009-09-09 液滴技术有限公司 System, method and apparatus of video processing and applications
CN100596198C (en) * 2006-12-05 2010-03-24 华为技术有限公司 Encoding method and encoder
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
US8502815B2 (en) 2007-04-18 2013-08-06 Gottfried Wilhelm Leibniz Universitat Hannover Scalable compression of time-consistent 3D mesh sequences
JP2008289125A (en) * 2007-04-20 2008-11-27 Panasonic Corp Arithmetic decoding apparatus and method thereof
US8150172B2 (en) * 2007-05-04 2012-04-03 Qualcomm Incorporated Video coding mode selection using estimated coding costs
WO2008142956A1 (en) * 2007-05-21 2008-11-27 Nec Corporation Video encoding device, video encoding method, and video encoding program
NO20074463A (en) * 2007-09-03 2009-02-02 Tandberg Telecom As Method for entropy coding of transform coefficients in video compression systems
US8483282B2 (en) * 2007-10-12 2013-07-09 Qualcomm, Incorporated Entropy coding of interleaved sub-blocks of a video block
US8634457B2 (en) * 2008-09-26 2014-01-21 Qualcomm Incorporated Determining availability of video data units
EP2182732A1 (en) * 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
US8892983B2 (en) * 2008-11-04 2014-11-18 Alcatel Lucent Method and apparatus for error detection in a communication system
JPWO2010052833A1 (en) * 2008-11-07 2012-03-29 三菱電機株式会社 Image encoding apparatus and image decoding apparatus
JP5180782B2 (en) * 2008-11-11 2013-04-10 日本電信電話株式会社 Parallel distributed information source encoding system and parallel distributed information source encoding / decoding method
WO2011013192A1 (en) * 2009-07-27 2011-02-03 株式会社東芝 Image encoding method and image decoding method
US8410959B2 (en) * 2010-04-09 2013-04-02 Qualcomm, Incorporated Variable length codes for coding of video data
HUE039299T2 (en) * 2010-09-09 2018-12-28 Fraunhofer Ges Forschung Entropy encoding and decoding scheme
CN103404035B (en) 2011-01-14 2017-05-10 Ge视频压缩有限责任公司 Entropy encoding and decoding scheme
US9871537B2 (en) * 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
HUE036645T2 (en) * 2012-01-30 2018-07-30 Fraunhofer Ges Forschung Binary arithmetic coding scheme
JP2014120615A (en) * 2012-12-17 2014-06-30 Fujitsu Semiconductor Ltd Capacity element, capacity array, and a/d converter
US10477204B2 (en) * 2014-06-20 2019-11-12 Sharp Kabushiki Kaisha Harmonized palette coding
US10148961B2 (en) * 2015-05-29 2018-12-04 Qualcomm Incorporated Arithmetic coder with multiple window sizes
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
JP2020099077A (en) 2020-06-25
US10404272B2 (en) 2019-09-03
CN103404035A (en) 2013-11-20
ES2566917T3 (en) 2016-04-18
KR101955142B1 (en) 2019-03-06
EP2760138A2 (en) 2014-07-30
JP6479060B2 (en) 2019-03-06
EP3703263A1 (en) 2020-09-02
US9083374B2 (en) 2015-07-14
EP2664070A2 (en) 2013-11-20
PT2760138T (en) 2018-06-05
CN107317585A (en) 2017-11-03
US10581454B2 (en) 2020-03-03
KR102393305B1 (en) 2022-05-02
US20160149588A1 (en) 2016-05-26
US20130300591A1 (en) 2013-11-14
HK1202000A1 (en) 2015-09-11
US10224953B2 (en) 2019-03-05
JP6676731B2 (en) 2020-04-08
US20220416810A1 (en) 2022-12-29
JP5809292B2 (en) 2015-11-10
KR102438562B1 (en) 2022-08-31
US9252806B2 (en) 2016-02-02
JP2021100266A (en) 2021-07-01
US20160308555A1 (en) 2016-10-20
TWI753434B (en) 2022-01-21
TW202211683A (en) 2022-03-16
JP2017118547A (en) 2017-06-29
PL3349360T3 (en) 2020-03-31
JP2023063501A (en) 2023-05-09
EP2768144A2 (en) 2014-08-20
KR20170060169A (en) 2017-05-31
NO2956175T3 (en) 2018-03-03
US20190013822A1 (en) 2019-01-10
DK2664070T3 (en) 2017-01-09
KR20220123748A (en) 2022-09-08
CN107395212A (en) 2017-11-24
HUE027907T2 (en) 2016-11-28
KR20170117216A (en) 2017-10-20
KR102222957B1 (en) 2021-03-04
US20200228135A1 (en) 2020-07-16
CN107317585B (en) 2020-09-29
JP2014502827A (en) 2014-02-03
EP2768144B1 (en) 2016-03-23
JP7247244B2 (en) 2023-03-28
EP2760138A3 (en) 2014-10-08
EP2760138B1 (en) 2018-03-07
JP6990730B2 (en) 2022-01-12
KR20200127272A (en) 2020-11-10
HUE046377T2 (en) 2020-03-30
TW202029746A (en) 2020-08-01
TWI640169B (en) 2018-11-01
CN107196662B (en) 2021-07-30
US20190097649A1 (en) 2019-03-28
CN107317586B (en) 2020-11-06
US9698818B2 (en) 2017-07-04
KR20150054013A (en) 2015-05-19
US9647683B2 (en) 2017-05-09
PT2664070T (en) 2016-12-22
WO2012095488A2 (en) 2012-07-19
DK3349360T3 (en) 2019-12-09
TWI789089B (en) 2023-01-01
HK1259972A1 (en) 2019-12-13
TW202037154A (en) 2020-10-01
CN107342770A (en) 2017-11-10
US20150270850A1 (en) 2015-09-24
KR102095172B1 (en) 2020-03-31
EP2768145A3 (en) 2014-10-08
KR20210024684A (en) 2021-03-05
US11405050B2 (en) 2022-08-02
HUE037749T2 (en) 2018-09-28
US10644719B2 (en) 2020-05-05
DK2760138T3 (en) 2018-06-06
US20180019762A1 (en) 2018-01-18
DK2768145T3 (en) 2016-04-04
ES2671482T3 (en) 2018-06-06
TWI575886B (en) 2017-03-21
TWI679878B (en) 2019-12-11
CN107196662A (en) 2017-09-22
CN107395212B (en) 2020-09-29
HK1201999A1 (en) 2015-09-11
US20160373131A1 (en) 2016-12-22
HUE030952T2 (en) 2017-06-28
KR101785898B1 (en) 2017-10-16
CN107317586A (en) 2017-11-03
EP2768145A2 (en) 2014-08-20
KR20190021501A (en) 2019-03-05
TR201807771T4 (en) 2018-06-21
US20200186164A1 (en) 2020-06-11
JP2020102873A (en) 2020-07-02
KR101648688B1 (en) 2016-08-16
US10090856B2 (en) 2018-10-02
US9473169B2 (en) 2016-10-18
EP2768145B1 (en) 2016-03-23
US20180034472A1 (en) 2018-02-01
US10419017B2 (en) 2019-09-17
ES2607982T3 (en) 2017-04-05
TW201624928A (en) 2016-07-01
EP3349360B1 (en) 2019-09-04
CN107342770B (en) 2020-11-03
HUE028417T2 (en) 2016-12-28
TW201924337A (en) 2019-06-16
PT3349360T (en) 2019-12-09
KR20200034808A (en) 2020-03-31
TW201236380A (en) 2012-09-01
EP3644516A1 (en) 2020-04-29
US20190305795A1 (en) 2019-10-03
WO2012095488A3 (en) 2012-12-13
JP6077615B2 (en) 2017-02-08
PL2664070T3 (en) 2017-03-31
CN103404035B (en) 2017-05-10
US10826524B2 (en) 2020-11-03
US20210028794A1 (en) 2021-01-28
CN107425855A (en) 2017-12-01
KR101955143B1 (en) 2019-03-06
KR20130140840A (en) 2013-12-24
KR102588145B1 (en) 2023-10-12
TWI505650B (en) 2015-10-21
JP2016007074A (en) 2016-01-14
KR20230145538A (en) 2023-10-17
JP2019041406A (en) 2019-03-14
US9806738B2 (en) 2017-10-31
PL2760138T3 (en) 2018-08-31
TW201731224A (en) 2017-09-01
EP3349360A1 (en) 2018-07-18
US20170207797A1 (en) 2017-07-20
KR101741296B1 (en) 2017-05-29
US20190334546A1 (en) 2019-10-31
HK1201384A1 (en) 2015-08-28
ES2566916T3 (en) 2016-04-18
US10855309B2 (en) 2020-12-01
CN107425855B (en) 2021-02-02
KR102175762B1 (en) 2020-11-09
PL2768144T3 (en) 2016-07-29
DK2768144T3 (en) 2016-04-04
TW202315401A (en) 2023-04-01
PL2768145T3 (en) 2016-07-29
EP2664070B1 (en) 2016-11-02
KR20200045578A (en) 2020-05-04
JP6849835B2 (en) 2021-03-31
EP2768144A3 (en) 2014-10-08
TWI747091B (en) 2021-11-21
KR20170117217A (en) 2017-10-20

Similar Documents

Publication Publication Date Title
ES2759513T3 (en) Entropic Encoding and Decoding Scheme